标题:求助各位大神这个代码哪里错了,题目如图
只看楼主
雨季123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-15
结帖率:0
已结贴  问题点数:20 回复次数:4 
求助各位大神这个代码哪里错了,题目如图

程序代码:
#include<stdio.h>
#include <string.h>
#define N 6

 
struct employee
{
    char name[20],sex[10],xueli[20],address[30];
    int number,age,wage;
    long int telephone;
}
em[N];
int a=N;                       
int *p=&a;                     

 
main()
{
    void search();
    void search_name();
    void search_number();
    void search_xueli();
    void load();
    void display();
    void add();
    void input();
    void del();
    void save();              
    int n;
    printf("\n");
    printf("       ***************职工信息管理系统*************\n");
    printf("\n");
    printf("                     1.录入职工信息\n");
    printf("                     2.浏览职工信息\n");
    printf("                     3.查询职工信息\n");
    printf("                     4.添加职工信息\n");
    printf("                     5.删除职工信息\n");
    printf("                     6.退出\n");
    printf("\n");
    scanf("%d",&n);
    switch(n)
    {
    case 1:printf("              ****输入职工信息****\n");printf("\n");input();main();break;
    case 2:printf("              ****浏览职工信息****\n");printf("\n");display();main();break;
    case 3:printf("              ****查询职工信息****\n");printf("\n");search();break; 
    case 4:printf("              ****添加职工信息****\n");printf("\n");add();break;
    case 5:printf("              ****删除职工信息****\n");printf("\n");del();break;
    case 6:exit(0);break;
    default :break;
    }
}

 
void input()       
{
    int i;
    for(i=0;i<N;i++)
    {
        printf("请输入职工号:");
        scanf("%d",&em[i].number);
        printf("请输入该职工姓名:");
        scanf("%s",em[i].name);
        printf("请输入该职工性别:");
        scanf("%s",&em[i].sex);
        printf("请输入该职工年龄:");
        scanf("%d",&em[i].age);
        printf("请输入该职工学历:");
        scanf("%s",em[i].xueli);
        printf("请输入该职工工资:");
        scanf("%d",&em[i].wage);
        printf("请输入该职工住址:");
        scanf("%s",em[i].address);
        printf("请输入该职工电话:");
        scanf("%d",&em[i].telephone);
        printf("\n");
    }
    printf("\n创建成功!\n");
    save(N);
}

 
void save(int m)  /*保存文件函数*/ 
{   
    int i;  
    FILE*fp;   
    if ((fp=fopen("employee_list","wb"))==NULL)  
    {    
        printf ("cannot open file\n");      
        exit(0);  
    }   
    for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/    
        if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)    
            printf("file write error\n");    
        fclose(fp);
}

 

 
int load()  /*导入函数*/ 
{       
    FILE*fp;  
    int i=0;     
    if((fp=fopen("employee_list","rb"))==NULL)  
    {    
        printf ("cannot open file\n");     
        exit(0); 
    }  
    else  
    {   
        do    
        {        
            fread(&em[i],sizeof(struct employee),1,fp);     
            i++; 
        }    
        while(feof(fp)==0);  
    }   
    fclose(fp); 
    return(i-1); 
}

 
void search()             
{
    int t;
    printf("\n按职工号查询按1\n按姓名查询请按2");
    printf("\n按学历查询请按3\n返回主菜单请按4\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:printf("\n按职工号查询\n");
        search_number();        
        break;
    case 2:printf("\n按姓名查询\n");
        search_name();              
        break;
    case 3:
        printf("\n按学历查询\n");
        search_xueli();              
        break;
    case 4:main();
        break;                  
    default :printf("输入错误,请重新输入!\n");
        search();                         
        break;
    }
}

 
void search_number()            
{
    int i,number;
    load(*p);                 
    printf("\n请输入要查询的职工号:");
    scanf("%d",&number);
    for(i=0;i<*p;i++)
        if(number==em[i].number)
        {
            printf("\n该职工信息如下:\n");
            printf("\n职工号\t    姓名\t性别\t年龄\t 学历\t     工资\t  住址\t  电话\n");
            printf("\n%d\t%8s\t%s\t%d\t%8s    %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);
            printf("\n");
            break;
        }
        if(i==*p)
            printf("\n记录中无此职工!\n");
        search();
}

 
void search_name()           
{
    int i;
    char name[20];
    load(*p);                  
    printf("\n请输入要查询的姓名:");
    scanf("%s",name);
    for(i=0;i<*p;i++)
        if(!strcmp(em[i].name,name))
        {
            printf("\n该职工信息如下:\n");
            printf("\n职工号\t    姓名\t性别\t年龄\t 学历\t     工资\t  住址\t  电话\n");
            printf("\n%d\t%8s\t%s\t%d\t%8s    %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);
            printf("\n");
            break;
        }
        if(i==*p)
            printf("\n记录中无此职工!\n");
        search();
}

 
void search_xueli()              
{
    int i,k=0;
    char xueli[20];
    load(*p);                
    printf("\n请输入要查询的学历:");
    scanf("%s",xueli);
    for(i=0;i<*p;i++)
        if(!strcmp(em[i].xueli,xueli))
        {
            printf("职工号\t    姓名\t性别\t年龄\t 学历\t     工资\t  住址\t  电话\n");
            printf("%d\t%8s\t%s\t%d\t%8s    %d\t%s\t%d\n",em[i].number,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].address,em[i].telephone);
        }
        for(i=0;i<*p;i++)                 
        {
            if(!strcmp(em[i].xueli,xueli))
                break;
            else k++;
        }
        if(k==*p)
            printf("\n记录中无此职工!\n");
        search();
}
    

 
void del()   /*删除函数*/
{   
    int m=load();  
    int i,j,n,t,flag;  
    char name[20];   
    printf("\n 原来的职工信息:\n");    
    display();       
    printf("\n");   
    printf("请输入要删除的职工的姓名:\n");  
    scanf("%s",name);   
    for(flag=1,i=0;flag&&i<m;i++)  
    {    
        if(strcmp(em[i].name,name)==0)   
        {     
            printf("\n已找到此职工,原始记录为:\n");    
            printf("  职工号\t姓名\t\t性别\t\t年龄   \n");     
            printf("\n  %d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);      
            printf("\n  学历\t\t工资\t\t住址\t\t电话    \n");    
            printf("\n  %s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);     
            printf("\n确实要删除此职工信息请按1,不删除请按0\n");   
            scanf("%d",&n);            
            if(n==1)    
            {       
                for(j=i;j<m-1;j++)      
                { 
                    strcpy(em[j].name,em[j+1].name);                 
                    em[j].num=em[j+1].num;                 
                    em[j].sex=em[j+1].sex;                
                    em[j].age=em[j+1].age;                  
                    strcpy(em[j].xueli,em[j+1].xueli);    
                    em[j].wage=em[j+1].wage;                   
                    strcpy(em[j].addr,em[j+1].addr);                
                    strcpy(em[j].tel,em[j+1].tel);      
                }      
                flag=0;    
            }   
        }  
    }   
    if(!flag)     
        m=m-1; 
    else      
        printf("\n抱歉,记录中无此职工!\n");     
    printf("\n 浏览删除后的所有职工信息:\n");     
    save(m);     /*调用保存函数*/     
    display();  /*调用浏览函数*/  
    printf("\n继续删除请按1,不再删除请按0\n");  
    scanf("%d",&t);  
    switch(t)  
    {      
    case 1:del();
        break;     
    case 0:break;     
    default :break;  
    }
}

 
void display()  /*浏览函数*/ 
{   
    int i;   
    int m=load();   
    printf("  职工号\t姓名\t\t性别\t\t年龄   \n");  
    for(i=0;i<m;i++) /*m为输入部分的职工人数*/   
        printf("\n  %d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);    
    printf("\n  学历\t\t工资\t\t住址\t\t电话    \n");  
    for(i=0;i<m;i++) /*m为输入部分的职工人数*/   
        printf("\n  %s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); 
}

 
void add(int *p)               
{
    int i,n,m;
    FILE*fp;
    if(!(fp=fopen("d://bbb.txt","p")))
    {
        printf("打开失败");
        exit(0);
    }
    printf("\n请输入想添加的人数:\n");
    scanf("%d",&n);
    for(i=*p;i<n+(*p);i++)                   
    {
        printf("请输入职工号: ");
        scanf("%d",&em[i].number);
        printf("请输入姓名:  ");
        scanf("%s",em[i].name);
        printf("请输入性别:  ");
        scanf("%s",&em[i].sex);
        printf("请输入年龄:  ");
        scanf("%d",&em[i].age);
        printf("请输入学历:  ");
        scanf("%s",em[i].xueli);
        printf("请输入工资:  ");
        scanf("%d",&em[i].wage);
        printf("请输入住址:  ");
        scanf("%s",em[i].address);
        printf("请输入电话:  ");
        scanf("%d",&em[i].telephone);
        printf("\n");
    }
    printf("\n添加完成!\n");
    for(i=*p;i<n+(*p);i++)
        fprintf(fp,"M %8s %5s ] %8s ] %8s ?\n",em[i].number,
        em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,
        em[i].address,em[i].telephone);
    fclose(fp);
    *p=*p+n;               
    printf("\n浏览新信息请按1\n返回主菜单请按2\n");
    scanf("%d",&m);
    switch(m)
    {
    case 1:display();main();break;
    case 2:main();break;
    default:break;
    }
}
搜索更多相关主题的帖子: employee number color 
2016-01-15 22:31
雨季123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-15
得分:0 
回复 楼主 雨季123
很急,麻烦知道的大神求教一下谢谢了
2016-01-15 22:34
Manshow
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2016-1-15
得分:7 
感觉问题好多啊 我也是新手 大概看了下 掉了stdlib.h文件 ,自定义函数声明放主函数外面,还有那个save(N)常量也用往里面代吗···
今天太晚了 有时间再看看。
2016-01-15 23:56
雨季123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-1-15
得分:0 
回复 3楼 Manshow
谢谢啦,一定帮我再看看感谢
2016-01-16 16:04
Yuzai酱
Rank: 2
等 级:论坛游民
帖 子:18
专家分:67
注 册:2016-1-4
得分:7 
你这代码逻辑有问题!
2016-01-17 12:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-461129-1-1.html




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

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