我要设计这样的一个教师管理系统,要怎么做

教师信息主要包括:工号、姓名、性别、年龄、职称信息、在职状态、月应发工资、月工资扣款和月实发工资等,请实现教师人事系统,实现以下功能:教师信息录入功能(教师信息用文件保存)----输入教师信息浏览功能 ----输出根据输入的月应发工资和扣款,计算实发工资;删除教师信息;修改教师信息;按工号查询;按姓名查询;统计在职教师人数、退休教师人书、不同职称级别的教师人数;按照实发工资进行排序。

参考:

#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;
    }
}