用C语言,职工信息管理系统具体要求

用C语言,职工信息管理系统具体要求
1、基本信息:如工号、姓名、性别、年龄、学历、住址、电话号码、工资等。
2、各职工信息用结构体来实现,建议使用链表来实现建立、删除、插入等操作。
3、需建立输出文件,将输入的职工信息存储在该文件中。
4、主功能界面要求包含有自己的学号信息
PS:请写的简单,并在旁边注释!就当是给傻,子写的!谢谢orz.


#include<stdio.h> 
#include<stdlib.h>  
#include<string.h>
struct workers
{
    char jobNo[15];       //职工号
    char name[15];        //姓名
    char sex[15];         //性别
    char birthday[15];    //出生年月
    char degree[15];      //学历
    char position[15];    //职务 
    char salary[15];      //工资 
    char addr[15];        //住址 
    char tel[15];         //电话 

};


//类型定义语句  
typedef struct node
{
    struct workers data;
    struct node *next;

}Node;

 
//添加信息函数     "尾插法建表"
void Add(Node *worker)
{
    Node *p, *q;
    char n[10]; 
    q = worker; 
    while (q->next != NULL)
    {
        q = q->next;     
    }
    while (1)
    {
        printf("提示:输入0返回主菜单!\n");
        printf("请输入职工号:");
        scanf("%s", n);
        if (strcmp(n, "0") == 0)
        {
            break;
        }
        p = (Node *)malloc(sizeof(Node));
        strcpy(p->data.jobNo, n);
        
        printf("请输入姓名:");
        scanf("%s", p->data.name);
        printf("请输入性别:");
        scanf("%s", p->data.sex);
        printf("请输入出生年月:");
        scanf("%s", p->data.birthday);
        printf("请输入学历:");
        scanf("%s", p->data.degree);
        printf("请输入职务:");
        scanf("%s", p->data.position);
        printf("请输入工资:");
        scanf("%s", p->data.salary);
        printf("请输入住址:");
        scanf("%s", p->data.addr);
        printf("请输入电话:");
        scanf("%s", p->data.tel);
        printf("提示:已经完成一条记录的添加!");
        p->next = NULL;
        q->next = p;      
        q = p;        

    }

}


//修改职工信息函数
int  change(Node *worker)
{
    Node *p;
    char find[20];   
    p = worker->next;   
    if (p == NULL)
    {
        printf("\n提示:没有资料可以修改!\n");
        return 0;
    }
    
    printf("请输入要修改的职工号");
    scanf("%s", find);

    while (p != NULL) 
    {
        if (strcmp(p->data.jobNo, find) == 0)
        {
            break;
        }
        p = p->next;
    }
    
    if (p!=NULL)
    {
        int x;
        while (1)
        {
            printf("完成修改请输入0,否则输入非0数字进行修改!");
            scanf("%d", &x);
            if (x == 0)
            {
                break;
            }
            printf(" 请输入新职工号: ");
            scanf("%s", p->data.jobNo);
            printf(" 请输入新职工姓名: ");
            scanf("%s", p->data.name);
            printf(" 请输入新职工性别: ");
            scanf("%s", p->data.sex);
            printf(" 请输入新职工出生年月: ");
            scanf("%s", p->data.birthday);
            printf(" 请输入新职工学历: ");
            scanf("%s", p->data.degree);
            printf(" 请输入新职工职务: ");
            scanf("%s", p->data.position);
            printf(" 请输入新职工工资: ");
            scanf("%s", p->data.salary);
            printf(" 请输入新职工住址: ");
            scanf("%s", p->data.addr);
            printf(" 请输入新职工电话: ");
            scanf("%s", p->data.tel);
            printf(" \n提示:该职工资料已经修改!\n ");
        }
    }
    else 
        printf("\n提示:没有你要修改的资料!\n ");
}


//输出职工信息函数
int  Disp(Node *worker)
{
    Node *p;
    p = worker->next;
    if (p == NULL)
    {
        printf(" \n提示:没有信息可以显示!\n ");
        return 0;

    }
    printf("\t\t\t\t显示结果\n");
    printf(" \n职工号   姓名    性别    出生年月    学历    职务    工资    住址    电话    \n ");
    while (p!=NULL)  
    {
        printf("\n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,
            p->data.sex, p->data.birthday, p->data.degree, p->data.position,
            p->data.salary, p->data.addr, p->data.tel);
        p = p->next;

    }

}


//查询职工信息函数: 按职工号查询    按职工姓名查询
int  Cha_xun(Node *worker)
{
    Node *p;
    int sel;
    char find[20];    
    p = worker->next;   

    if (p==NULL) 
    {
        printf(" \n提示:没有资料可以查询!\n ");
        return 0;

    }

    printf("\n提示:\n 输入 0---- 退出\t 输入 1----按职工号查询\t 输入 2-----按职工姓名查询\n");
    printf("请选择:");
    scanf("%d", &sel);

    if (sel == 1)
    {
        printf("\n请输入你要查询分类的职工号:");
        scanf("%s", find);
        while (p!=NULL)  
        {
            if (strcmp(p->data.jobNo, find) == 0)
            {
                printf(" 职工号      姓名      性别    出生年月    学历    职务    工资    住址    电话 \n ");
                printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,
                    p->data.sex, p->data.birthday, p->data.degree, p->data.position,
                    p->data.salary, p->data.addr, p->data.tel);

            }
            p = p->next;   

        }

    }

    else if (sel == 2)
    {
        printf(" \n输入你要查询分类的职工姓名:");
        scanf("%s", find);
        while (p!=NULL)
        {
            if (strcmp(p->data.name, find) == 0) 
            {
                printf(" 职工号        姓名    性别    出生年月    学历    职务    工资    住址    电话 \n ");
                printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.jobNo, p->data.name,
                    p->data.sex, p->data.birthday, p->data.degree, p->data.position,
                    p->data.salary, p->data.addr, p->data.tel);

            }
            p = p->next;

        }
    }
    
    else if (sel == 0)
        return 0;
        
}


//删除职工信息函数
int  Delete(Node *worker)
{
    Node *p, *r;
    char find[10];
    p = worker->next;
    if (p == NULL)
    {
        printf("提示:没有职工信息可以删除!\n ");
        return 0;

    }
    printf(" \n提示:请输入你要删除的职工号!\n ");
    scanf("%s", find);
    while (p != NULL)
    {
        if (strcmp(p->data.jobNo, find) == 0)
        {
            break;
        }
        p = p->next;

    }

    if (p!=NULL)
    {
        r = worker;
        while (r->next != p)
        {
            r = r->next;
        }
        r->next = r->next->next;    
    }
}


//将职工信息保存到文件中
void save(Node *worker)
{
    int n;
    Node *p = NULL;
    FILE *fp;    
    printf("是否保存到文件?( 1-----保存!,0-----不保存! )");
    scanf("%d", &n);

    if (n == 1)
    {
        if (worker->next == NULL)
        {
            printf(" 没有记录!");
        }

        else
        {
            p = worker->next;
        }

        if ((fp = fopen(" 职工信息管理系统.txt ", " wb ")) == NULL)  
        {
            printf(" 文件不能打开!\n");     
        }

        while (p != NULL)   
        {
            fprintf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,
                p->data.birthday, p->data.degree, p->data.position, p->data.salary,
                p->data.addr, p->data.tel);        
            p = p->next; 

        }
        fclose(fp);  

    }

}


//读取职工信息 
void Du_qu(Node *worker)
{
    Node *p;
    FILE *fp; 

    if ((fp = fopen("职工信息管理系统.txt", "rb")) == NULL)     
    {
        printf("文件不能打开!\n ");
    }
    
    p = worker->next;
    while (p!=NULL)
    {
        fscanf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,
            p->data.birthday, p->data.degree, p->data.position, p->data.salary,
            p->data.addr, p->data.tel);     
        p=p->next;

    }
    fclose(fp);

}


//主函数实现 
int main()
{
    Node *worker;
    int flag;
    
    worker = (Node*)malloc(sizeof(Node));
    worker->next = NULL; 
    
     while(1)
     {
             printf("\t职 工 信 息 管 理 系 统\n");
            printf("==================菜 单==================\n ");
            printf("1.输入职工信息\n ");
            printf("2.修改职工信息\n ");
            printf("3.浏览职工信息\n ");
            printf("4.查询职工信息\n ");
            printf("5.删除职工信息\n ");
            printf("6.读取职工信息\n ");
            printf("0.退出\n ");

            printf("输入你选择的序号:");
            scanf("%d", &flag);
            switch (flag)
            {
                case 0:  printf(" \n提示:退出系统!\n ");  break;
                case 1:     Add(worker); save(worker);  break;    //添加职工信息,保存到文件中 
                case 2:  change(worker);  break;           //修改职工信息 
                case 3:  Disp(worker);  break;             //显示职工信息 
                case 4:  Cha_xun(worker);  break;           //查询职工信息 
                case 5:  Delete(worker);  break;          //删除职工信息 
                case 6:  Du_qu(worker);  break;             //读取职工信息 
                default: printf("提示:输入错误!\n ");
            }
    }
    
}