ৡ晴้้ꦿ᭄࿐ 2021-07-06 10:38 采纳率: 50%
浏览 227
已采纳

制作:教师工资管理系统

每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。

A、教师信息处理

(1) 输入教师信息

(2) 插入(修改)教师信息:

(3) 删除教师信息:

(4) 浏览教师信息:

提示:具体功能及操作参考题1。

(5)排序、查询功能

(6)退出系统功能

B、教师数据处理:

(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。

(2) 教师实发工资、应发工资、合计扣款计算。

提示:计算规则如题目。

(3) 教师数据管理

  提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件

(4) 教师数据查询:

  提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。

(5) 教师综合信息输出

  提示:输出教师信息到屏幕。

  • 写回答

3条回答 默认 最新

  • 关注
    #include<stdio.h>
    #include <string.h>
    #include <stdlib.h>
    struct teach{
        int    xh;
        char   gh[20];
        char   xm[20];
        int    gl;
        char   zc[20];
        double gz;
        char   dh[13];
        struct teach *next;
    };
     
    void menu1();
    void menu2();
    void menuM();
    int  load();
    void creatList(struct teach *head);
    void brow(struct teach *head);
    void find(struct teach *head);
    void findNo(struct teach *head,char no[]);
    void del(struct teach *head,char gh[]);
     
    int main(){
        int  choice;
        char gh[20];
        struct teach *head;
        int  dl=load();
        if(dl==1){
            creatList(head);
            while(1){
                menuM();
                printf("请选择操作(0-5):\n");
                scanf("%d",&choice);
                switch(choice){
                    case 1:
                        brow(head);
                        break;
                    case 2:
                        find(head);
                        break;
                    case 3:
                        printf("请输入工号:\n");
                        scanf("%s",gh);
                        del(head,gh);
                        break;
                    case 4:
                        break;
                    case 5:
                        break;
                    default:
                        return 0;        
                }
                system("pause");
                system("cls");
            }
        }
        return 0;
    }
     
    void del(struct teach *head,char gh[]){
        struct teach *pre,*p;
        if(head==NULL){
            printf("表为空!\n");
            return;
        }
        pre=head;
        p=head->next;
        while(p!=NULL){
            if(strcmp(p->gh,gh)==0){
                pre->next=p->next;
                printf("删除成功!\n");
                printf("序号 工号\t姓名\t工龄\t职称\t工资\t联系方式\n");
                printf("%d   %s\t%s\t%d\t%s\t\t%-6.2f\t\t%-s\n",
                                       p->xh,p->gh,p->xm,p->gl,p->zc,p->gz,p->dh);
                free(p);
                break;
            }
            pre=p;
            p=p->next;
        }
        if(p == NULL) printf("查无此人!\n");
    }
     
    void findNo(struct teach *head,char no[]){
        if(head==NULL){
            printf("表为空!\n");
            return;
        }
        head=head->next;
        printf("序号 工号\t姓名\t工龄\t职称\t工资\t联系方式\n");
        while(head){
            if(strcmp(head->gh,no)==0){
                printf("%d   %s\t%s\t%d\t%s\t\t%-6.2f\t\t%-s\n",
                  head->xh,head->gh,head->xm,head->gl,head->zc,head->gz,head->dh);
                break;
            }
            head=head->next;
        }
        if(head == NULL) printf("查无此人!\n");
    }
     
    void find(struct teach *head){
        int c,tage;
        char no[20];
        while(1){
            printf("**********************************************\n");
            printf("*        1-----------按教工工号信息查询      *\n");
            printf("*        2-----------按教工工龄信息查询      *\n");
            printf("*        0-----------退出                    *\n");
            printf("**********************************************\n");
            printf("请选择(0-2):\n");
            scanf("%d",&c);
            if(c==1){
                printf("gh:");
                scanf("%s",no);
                findNo(head,no);
            }
            else if(c==2){
                printf("gl:");
                scanf("%d",&tage);
                //findTage(head,tage);
            }
            else
                return ;
        }
    }
     
    void menuM(){
        printf("**********************************************\n");
        printf("*        1-----------教工信息浏览            *\n");
        printf("*        2-----------教工信息查询            *\n");
        printf("*        3-----------教工信息删除            *\n");
        printf("*        4-----------教工信息插入            *\n");
        printf("*        5-----------教工信息修改            *\n");
        printf("*        0-----------退出                    *\n");
        printf("**********************************************\n");
    }
    void brow(struct teach *head){
        if(head==NULL){
            printf("表为空!\n");
            return;
        }
        printf("序号 工号\t姓名\t工龄\t职称\t工资\t联系方式\n");
        head=head->next;
        while(head){
            printf("%d   %s\t%s\t%d\t%s\t\t%-6.2f\t\t%-s\n",
                   head->xh,head->gh,head->xm,head->gl,head->zc,head->gz,head->dh);
            head=head->next;
        }
    }
     
    void  creatList(struct teach *head){
        FILE *fp;
        struct teach *tmp,*tail;
        fp=fopen("tea.txt","at+");
        if(fp==NULL){
           printf("Open file fail!\n");
           head=NULL;
           return;
        }
    
        head =(struct teach*)malloc(sizeof(struct teach));
        head->next=NULL;
        tail= head;
        while(1){
            tmp=(struct teach*)malloc(sizeof(struct teach));
            tmp->next=NULL;
            if(fscanf(fp,"%d %s %s %d %s %lf %s",&tmp->xh,tmp->gh,tmp->xm,&tmp->gl,tmp->zc,&tmp->gz,tmp->dh)!=7) break;
            if(head->next==NULL){
                head->next = tmp;
                tail       = tmp;
            }else{
                tail->next=tmp;
                tail = tmp;
            }
        }
        fclose(fp);
        free(tmp);
    }
    void menu1(){
            printf("*************************************\n");
            printf("*********1------------登陆***********\n");
            printf("*********0------------退出***********\n");
            printf("*************************************\n");
    }
    int load(){
        int c=3,dl;
        char name[20],pass[10];
        while(c){
            system("cls");
            menu1();
            printf("请选择(0/1):\n");
            scanf("%d",&dl);
            getchar();
            if(dl==1){
                printf("请输入用户名:\n");
                scanf("%s",name);
                printf("请输入密码:\n");
                scanf("%s",pass);
                c--;
                if(strcmp("aaa",name)==0&&strcmp("123456",pass)==0){//登陆成功创建链表
                        return 1;
                }else if(c!=0){
                        printf("用户名或密码错误,还有%d次机会\n",c);
                        system("pause");
                }
                else
                    return 0;    
            }
            else
             return 0;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟