| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2984 人关注过本帖
标题:一个课程设计的程序希望有好心人解答!
只看楼主 加入收藏
jifanjiayou
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-6-21
结帖率:100%
收藏
已结贴  问题点数:18 回复次数:23 
一个课程设计的程序希望有好心人解答!
#include <stdio.h>
#include <stdlib.h>
#include <wtypes.h>
#include <winbase.h>
#include <time.h>
#include <conio.h>
struct employeeinfo
{
    char jobno[10];
    char name[20];
    char sex;
    int age;  
    char edulevel[10];
    float salary;
    char addr;
    char tel[11];
}empinfo;
FILE*fp;
void output();
void search();
void append();
void modify();
void abc();
void exit();
void nameway();
void numway();
void menu();
void main() {
    FILE *fp;
    fp=fopen("worker.xls","w");
    menu();
}
void menu()
{
    int m,w;
    do
    {
        system("color 0a");
        printf("\n\n\n                   ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\n\n");
        printf("                             欢迎使用职工信息管理系统\n\n");
        printf("                   ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\n\n");
        printf("                  |     *     |  1.添加职工信息  |     *     |     \n");
        printf("                  |     *     |  2.查找职工信息  |     *     |     \n");
        printf("                  |     *     |  3.修改职工信息  |     *     |     \n");
        printf("                  |     *     |  4.删除职工信息  |     *     |     \n");
        printf("                  |     *     |  5.输出职工信息  |     *     |     \n");
        printf("                  |     *     |  6.退出信息系统  |     *     |   \n\n");
        printf("                   ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\n\n");
        printf("                               请输入对应的字符[ ]\b\b");
        scanf("%d",&m);
        if(m<1||m>6){
            w=1;
        }
        else{
            w=0;
        }
    }while(w=0);
            switch(m)
            {
                case 1: append();
                break;
                case 2: search();
                break;
                case 3: modify();
                break;
                case 4: abc();
                break;
                case 5: output();
                break;
                case 6: exit(0);
                return;
            }
        }
void append()
{
    int choice;
    system("cls");
    if((fp=fopen("worker.xls","a"))==NULL)
    {
        printf("\n对不起,无法查询信息文件。\n\n");
        exit(0);
    }
    printf("                    *********************************\n");
    printf("                         请输入需要添加的职工信息      \n");
    printf("                    *********************************\n");
    printf("         姓名,职工号,性别,职位,工资,出生年月,学历,住址,电话\n");
    scanf("%s%s%c%d%s%f%c%s%s",empinfo.jobno,empinfo.name,&empinfo.sex,&empinfo.age,empinfo.edulevel,&empinfo.salary,&empinfo.addr,empinfo.tel);
    fprintf(fp,"%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
    fclose(fp);
    printf("\n\n操作完成,请按下回车继续");
    choice=getch();
    system("cls");
    menu();
}
void output()
{   
    int choice,i=1;
    system("cls");
    if((fp=fopen("worker.xls","r"))==NULL)
    {
        system("cls");
        printf("\n对不起,无法查询信息文件。\n\n");
        exit(0);
    }
    printf("                          =========================\n");
    printf("                                  职工信息\n");
    printf("                          =========================\n");
    printf("          姓名,职工号,性别,职位,工资,出生年月,学历,住址,电话\n\n");
    while(!feof(fp))
    {
        fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,&empinfo.sex,&empinfo.age,empinfo.edulevel,&empinfo.salary,&empinfo.addr,empinfo.tel);
        printf("%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
        i++;
        if((i%10)==0) {
        printf("按任意键继续...");
        getchar();
        puts("\n\n");
        }
    }
    fclose(fp);
    printf("\n\n显示完毕,请按下回车继续");
    choice=getch();
    system("cls");
    menu();
}

void search()
{   
    int l;
    system("cls");
    printf(" 按姓名查找请按: 1\n");
    printf(" 按工号查找请按: 2\n");
    scanf("%d",&l);
    if(l>0&&l<3)
    {
        switch(l)
        {
            case 1:nameway();
            break;
            case 2:numway();
            break;
        }
    }
    else
    {
        printf("\n\n无效指令,请重试");
    }
}

void nameway()
{
    int choice;
    int k=0;
    char nam[50];
    printf("\n请输入您要查询的职工姓名:");
    scanf("%s",nam);
    if((fp=fopen("worker.xls","rb"))==NULL)
    {
        printf("\n对不起,无法查询信息文件。");
        exit(0);
    }
    while(!feof(fp))
    {
        fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,&empinfo.sex,empinfo.age,&empinfo.edulevel,&empinfo.salary,empinfo.addr,empinfo.tel);
        if(strcmp(nam,empinfo.name)==0)
        {
            printf("\n\n已查到,记录为:");
            printf("%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
            k=1;
        }
    }
    if(k==0)
    {
        printf("\n\n对不起,查无此人。\n");
        fclose(fp);
    }
    printf("\n\n操作完成,请按下回车继续");
    choice=getch();
    system("cls");
    menu();
}

void numway()
{
    int i=0;
    int choice;
    char numb[50];
    printf("   输入你要查询的工号\n");
    scanf("%s",numb);
    if((fp=fopen("worker.xls","rb"))==NULL)
    {
        printf("\n对不起,无法查询信息文件。");
        exit(0);
    }
    while(!feof(fp))
    {
        fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
        if(!strcmp(numb,empinfo.jobno))
        {
            printf("\n\n已查到,记录为:");
            printf("%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
            i=1;
        }
    }
    if(!i)
    {
        printf("\n\n对不起,查无此人。");
        fclose(fp);
    }
    printf("\n\n操作完成,请按下回车继续");
    choice=getch();
    system("cls");
    menu();
}

void modify()
{
    int choice;
    int k=0;   
    long a;
    char namekey[50];
    system("cls");
    printf("\n请输入您要修改的职工姓名:");
    scanf("%s",namekey);
    if((fp=fopen("worker.xls","r+"))==NULL)
    {
        printf("\n对不起,无法查询信息文件。");
        exit(0);
    }
    while(!feof(fp))
    {
        a=ftell(fp);
        fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
        if(!strcmp(namekey,empinfo.name))
        {
            k=1;
            break;
        }
    }
    if(k)
    {
        printf("\n已查到,记录为:");
        printf("\n%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
        printf("\n请输入需要修改的信息。\n");
        printf("(请按照:姓名,职工号,性别,职位,工资,出生年月,学历,住址,电话顺序输入)\n");
        scanf("%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
        fseek(fp,a,0);
        fprintf(fp,"%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
    }
    else
    {
        printf("\n对不起,查无此人,无法修改。");
        fclose(fp);
    }
    printf("\n\n操作完成,请按下回车继续");
    choice=getch();
    system("cls");
    menu();
}

void abc()
{
    int m;
    int choice;
    int k=0;   
    long a;
    char namekey[50];
    char valid[50];
    system("cls");
    printf("\n请输入您要修改的职工姓名:");
    scanf("%s",namekey);
    if((fp=fopen("worker.xls","r+"))==NULL)
    {
        printf("\n对不起,无法查询信息文件。");
        exit(0);
    }
    while(!feof(fp))
    {
        a=ftell(fp);
        fscanf(fp,"%s%s%c%d%s%f%c%s%s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
        if(strcmp(namekey,empinfo.name)==0)
        {
            k=1;
            break;
        }
    }
    if(k==1)
    {
        printf("\n已查到,记录为:");
        printf("\n%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);
        printf("\n确定删除按1,不删除按0:");
        scanf("%d",&m);
        if(m==1)
        {
            fseek(fp,a,0);
            fprintf(fp,"%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n","","","","","");
        }
    }
    else
    {
        printf("\n对不起,查无此人。");
    }
    fclose(fp);
    printf("\n\n操作完成,请按下回车继续");
    choice=getch();
    system("cls");
    menu();
}
搜索更多相关主题的帖子: include search modify 
2016-06-22 23:26
jifanjiayou
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-6-21
收藏
得分:0 
程序运行出来后,添加职工信息的时候出错,希望好心人帮解决!
2016-06-22 23:27
jifanjiayou
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-6-21
收藏
得分:0 
希望大神们帮解决!
2016-06-22 23:59
jifanjiayou
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-6-21
收藏
得分:0 
有没有大神呀
2016-06-23 08:47
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:6 
printf的格式有问题,%与参数要一一对应,好好检查一下。编译时也有相关告警的。,scanf也是

[此贴子已经被作者于2016-6-23 09:18编辑过]

2016-06-23 09:06
jifanjiayou
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-6-21
收藏
得分:0 
回复 5楼 grmmylbs
在C++运行的时候没有报错,,运行出来进入添加模块的时候报错!应该不是这的问题吧
2016-06-23 09:18
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:6 
void append()里的
fprintf(fp,"%-20s%-20s%-20c%-20d%-20s%-20f%-20c%-20s%-20s\n",empinfo.jobno,empinfo.name,empinfo.sex,empinfo.age,empinfo.edulevel,empinfo.salary,empinfo.addr,empinfo.tel);这句有问题。估计这就是造成添加职工信息出错的主要原因。

[此贴子已经被作者于2016-6-23 10:16编辑过]

2016-06-23 10:11
jifanjiayou
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2016-6-21
收藏
得分:0 
回复 7楼 linlulu001
还能具体点吗?我才开始接触C语言,许多地方不懂。
2016-06-23 10:15
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 8楼 jifanjiayou
你的结构体才8组数据,你输出写到9组数据,由于你多写的一组输出格式,导致输出的格式对不上了。输出是自右向左处理数的。
这个错误编译系统是不会发现的,要你自己发现。


[此贴子已经被作者于2016-6-23 10:20编辑过]

2016-06-23 10:18
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:6 
回复 8楼 jifanjiayou
char jobno[10];
    char name[20];
    char sex;
    int age;  
    char edulevel[10];
    float salary;
    char addr;    //这里定义的addr是字符型,你后面输出的却是%s
    char tel[11];

另外你打开的文件只有文件名,不需要增加路径吗?

[此贴子已经被作者于2016-6-23 10:30编辑过]

2016-06-23 10:21
快速回复:一个课程设计的程序希望有好心人解答!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035361 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved