职工信息管理系统

来源:互联网 发布:unity3d游戏源代码 编辑:程序博客网 时间:2024/04/28 01:19

/************************************************************ 版权所有(C)2017. zangyunpeng
** 文件名称:职工信息管理系统* 文件标识:无* 内容摘要:该代码用于函数声明及结构体构建* 其它说明:无* 当前版本: V1.0* 作 者:臧云鹏* 完成日期: 2017 12 22**修改记录1:
*修改日期: 2017 12 22
*版本号 V1.0
*修改人: zangyunpeng
***********************************************************/

课程设计要求:

6
使
1
2
(
)
3
退
4
6
使
1
2
(
)
3
退
4
6
使
1
2
(
)
3
退
4
职工信息管理系统职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。设计一个职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)--输入(3)职工信息浏览功能--输出,包括在退出系统时,将数据保存到文件(4)查询和排序功能:按工资查询按学历查询等
6
使
1
2
(
)
3
退
4

实现源代码如下:

1.source.cpp

#include<stdio.h>#include<stdlib.h>#include<string.h>#include"head.h"/****************************************************************************************功能描述:菜单函数*输入参数:无*输出参数:无*返回值:1***************************************************************************************/void menu(){                   system("color 6E");        printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");        printf("\t◆        欢迎使用职工信息管理系统      ◆\n");        printf("\t◆                                      ◆\n");        printf("\t◆              【菜单】                ◆\n");        printf("\t◆          1.录入职工信息              ◆\n");        printf("\t◆          2.查询职工信息              ◆\n");        printf("\t◆          3.职工信息排序              ◆\n");        printf("\t◆          4.插入职工信息              ◆\n");        printf("\t◆          5.浏览职工信息              ◆\n");        printf("\t◆          6.修改职工信息              ◆\n");        printf("\t◆          7.删除职工信息              ◆\n");        printf("\t◆          8.保存职工信息              ◆\n");        printf("\t◆          【9】退出系统               ◆\n");        printf("\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆\n");}/****************************************************************************************功能描述:初始化单链表*输入参数:无*输出参数:无*返回值:1***************************************************************************************/int Initlist(Linklist *L) //初始化单链表{    *L=(Linklist )malloc(sizeof(LNode));    if((*L)==NULL)        return (0);    (*L)->next=NULL;    return OK;}/****************************************************************************************功能描述:头插法生成单链表*输入参数:职工各项信息工号、姓名、性别、年龄、学历、工资、住址 *输出参数:无*返回值:1或0***************************************************************************************/int CreatList(Linklist L)//头插法生成单链表{    LNode *p,*r,*s;char id[30];    int k=0;r=L;s=L->next;//链表没有节点时,s=null;/链表有节点时,指向第一个职工节点while(r->next!=NULL)//如果存在后继结点时,r指针后移一个{r=r->next;}while(L){        printf("\t职工号:");        scanf("%s",id);s=L->next;//每次从第一个节点开始找,看id是否重复while(s){if(strcmp(s->data.id,id)==0){printf("\t提示:职工号为'%s'的职工已经存在!\n",id);                k=1;return OK;}s=s->next;}        p=(Linklist)malloc(sizeof(LNode));memset(p,0,sizeof(LNode));//清空内存        strcpy(p->data.id,id);        printf("\t姓名:");        scanf("%s",p->data.name);        printf("\t性别:");        scanf("%s",p->data.sex);        printf("\t年龄:");        scanf("%d",&p->data.age);        printf("\t学历:");        scanf("%s",p->data.edu);        printf("\t工资:");        scanf("%lf",&p->data.salary);        printf("\t电话:");        scanf("%s",p->data.phone);        printf("\t地址:");        scanf("%s",p->data.address);       break;}        p->next=NULL;//表明这是链表的尾部结点r->next=p;//将新建的结点加入链表尾部中        r=p;return OK;}/****************************************************************************************功能描述:显示职工信息*输入参数:p指针*输出参数:职工各项信息*返回值:无***************************************************************************************/void Display(Linklist L)//显示职工信息{    LNode *p;p=L->next;    if(p==NULL)    {        printf("\t现在没有职工信息,请先输入职工信息\n\n");        return;    }    printf("\t职工号\t姓名\t\t性别\t年龄\t学历\t工资\t电话\t地址\n\n");    while(p)    {        printf("\t%s\t",p->data.id);        printf("%s\t\t",p->data.name);        printf("%s\t",p->data.sex);        printf("%d\t",p->data.age);        printf("%s\t",p->data.edu);        printf("%0.2lf\t",p->data.salary);        printf("%s\t",p->data.phone);        printf("%s\t",p->data.address);printf("\n");        p=p->next;    }}/****************************************************************************************功能描述:职工信息查询*输入参数:a k*输出参数:查找到的职工信息*返回值:1***************************************************************************************/void Search(Linklist L)//职工信息查询 {      int a,k=0;      char name[10];      char id[20];  char phone[30];      printf("\t请输入查询方式(1按职工号查询,2按姓名查找):");      scanf("%d",&a);      if(a==1)      {  k=1;          printf("\t请输入查询职工号:");          scanf("%s",&id);          SearchID(L,id);//ID查询  }      if(a==2)      {  k=1;          printf("\t请输入查询职工姓名:");          scanf("%s",&name);          SearchName(L,name);//姓名查询  }  if(k==0)  {  printf("\t请输入正确的序号!\n");  } }/****************************************************************************************功能描述:职工号查询*输入参数:职工工号 p指针 L*输出参数:该职工各项信息*返回值:1***************************************************************************************/int SearchID(Linklist L,char id[20])//职工号查询{    LNode *p;  p=L;int k=0;    while(p)    {        if(strcmp(p->data.id,id)==0)        {            printf("\t职工号        %s\n",p->data.id);            printf("\t姓名        %s\n",p->data.name);            printf("\t性别        %s\n",p->data.sex);            printf("\t年龄        %d\n",p->data.age);            printf("\t学历        %s\n",p->data.edu);            printf("\t工资        %0.2lf\n",p->data.salary);            printf("\t电话        %s\n",p->data.phone);            printf("\t地址        %s\n",p->data.address);k=1;        }        p=p->next;    }if(k==0){printf("\t对不起,没有您想要查找的人!\n");}    return OK;}/****************************************************************************************功能描述:姓名查询*输入参数:职工姓名 p指针*输出参数:该职工各项信息*返回值:1***************************************************************************************/int SearchName(Linklist L,char name[10])//姓名查询{    LNode *p;  p=L;int k=0;    while(p)    {        if(strcmp(p->data.name,name)==0)        {            printf("\t职工号         %s\n",p->data.id);            printf("\t姓名         %s\n",p->data.name);            printf("\t性别         %s\n",p->data.sex);            printf("\t年龄         %d\n",p->data.age);            printf("\t学历         %s\n",p->data.edu);            printf("\t工资         %0.2lf\n",p->data.salary);            printf("\t电话         %s\n",p->data.phone);            printf("\t地址         %s\n",p->data.address);k=1;        }        p=p->next;    }if(k==0){printf("\t对不起,没有您想要查找的人!\n");}    return OK;}/****************************************************************************************功能描述:职工信息排序*输入参数:b k *输出参数:ID排序 ;姓名排序; 工资排序后的职工信息*返回值:无***************************************************************************************/void Sort(Linklist L)//职工信息排序{   int b,k=0;   printf("\t请输入排序方式(1按职工号排序,2按姓名排序,3按工资排序):");   scanf("%d",&b);   if(b==1)   {    k=1;        printf("\t按职工号排序为:\n");        SortID(L);//职工号排序        Display(L);    }    if(b==2)    {     k=1;         printf("\t按姓名排序为:\n");         SortName(L);//姓名排序         Display(L);//显示职工信息    }if(b==3)    {k=1;printf("\t按工资排序为:\n");SortSalary(L);//工资排序Display(L);//显示职工信息    }if(k==0){printf("\t请输入正确的序号!\n");}}/****************************************************************************************功能描述:职工号排序*输入参数:p指针 q指针*输出参数:按照职工号排序后各职工各项信息*返回值:无***************************************************************************************/void SortID(Linklist L)//职工号排序{    Linklist p,q;    struct employee temp;    for(p=L->next;p!=NULL;p=p->next)     {        for(q=p->next;q!=NULL;q=q->next)        {            if((strcmp(p->data.id,q->data.id)>0))            {                temp=q->data;                q->data=p->data;                p->data=temp;            }        }    }}/****************************************************************************************功能描述:姓名排序*输入参数:p,q指针*输出参数:按照姓名排序后各职工各项信息*返回值:无*其他说明:***************************************************************************************/void SortName(Linklist L)//姓名排序{    Linklist p,q;    struct employee temp;    for(p=L->next;p!=NULL;p=p->next)    {        for(q=p->next;q!=NULL;q=q->next)        {            if((strcmp(p->data.name,q->data.name)>0))            {                temp=q->data;                q->data=p->data;                p->data=temp;            }        }    }}/****************************************************************************************功能描述:职工工资排序*输入参数:p,q指针*输出参数:按照职工工资排序后各职工各项信息*返回值:无***************************************************************************************/void SortSalary(Linklist L)//职工工资排序{    Linklist p,q;    struct employee temp;    for(p=L->next;p!=NULL;p=p->next){        for(q=p->next;q!=NULL;q=q->next)        {            if(p->data.salary>q->data.salary)            {                temp=q->data;                q->data=p->data;                p->data=temp;            }        }    }}/****************************************************************************************功能描述:插入信息*输入参数:pre s 指针  *输出参数:职工信息*返回值:1*其他说明:***************************************************************************************/int Ins(Linklist L, char id[20])//插入信息{    LNode *pre,*s;int k=0;    pre=L;    while(pre->next!=NULL)    {        pre=pre->next;        if((strcmp( pre->data.id,id))==0)        {k=1;printf("\t对不起,要查找职工号已存在!\n");        }    }if(k==0){s=(LNode*)malloc(sizeof(LNode));printf("\t请输入要插入员工信息\n");printf("\t职工号:");scanf("%s",&s->data.id);printf("\t姓名:");scanf("%s",&s->data.name);printf("\t性别:");scanf("%s",&s->data.sex);printf("\t年龄:");scanf("%d",&s->data.age);printf("\t学历:");scanf("%s",&s->data.edu);printf("\t工资:");scanf("%0.2lf",&s->data.salary);printf("\t电话:");scanf("%s",&s->data.phone);printf("\t地址:");scanf("%s",&s->data.address);s->next=pre->next;pre->next=s;printf("\t插入员工信息成功!\n");}    return OK;}/****************************************************************************************功能描述:更改信息*输入参数: c k  p指针 *输出参数:修改后的职工信息*返回值:1*其他说明:***************************************************************************************/int Alter(Linklist L,char id[20])//更改信息{    int c;int k=0;    LNode *p;    p=L;    while(p)    {        if(strcmp(p->data.id,id)==0)        {k=1;printf("\t原来的职工信息:\n");printf("\t职工号         %s\n",p->data.id);            printf("\t姓名         %s\n",p->data.name);            printf("\t性别         %s\n",p->data.sex);            printf("\t年龄         %d\n",p->data.age);            printf("\t学历         %s\n",p->data.edu);            printf("\t工资         %0.2lf\n",p->data.salary);            printf("\t电话         %s\n",p->data.phone);            printf("\t地址         %s\n",p->data.address);            printf("\t请输入要修改的选项(1职工号,2姓名,3性别,4年龄\n");            printf(" \t                  5学历,6工资,7电话,8地址):");            scanf("%d",&c);            switch(c)            {            case 1:                {                    printf("\t请输入修改员工编号:",p->data.id);                    scanf("%s",p->data.id);                    printf("\t修改员工信息成功!\n");                    break;                }            case 2:                {                    printf("\t请输入员工修改姓名:",p->data.name);                    scanf("%s",p->data.name);                     printf("\t修改员工信息成功!\n");                    break;                }            case 3:                {                    printf("\t请输入员工修改性别:",p->data.sex);                    scanf("%s",p->data.sex);                    printf("\t修改员工信息成功!\n");                    break;                }            case 4:                {                    printf("\t请输入员工修改年龄:",p->data.age);                    scanf("%d",&p->data.age);                    printf("\t修改员工信息成功!\n");break;                }            case 5:                {                    printf("\t请输入员工修改学历:",p->data.edu);                    scanf("%s",p->data.edu);                    printf("\t修改员工信息成功!\n");                    break;                }            case 6:                {                    printf("\t请输入员工修改工资:",p->data.salary);                    scanf("%lf",&p->data.salary);                    printf("\t修改员工信息成功!\n");                    break;                }            case 7:                {                    printf("\t请输入员工修改电话:",p->data.phone);                    scanf("%s",p->data.phone);                    printf("\t修改员工信息成功!\n");                    break;                }            case 8:                {                    printf("\t请输入员工修改地址:",p->data.address);                    scanf("%s",p->data.address);                    printf("\t修改员工信息成功!\n");                    break;                }default:printf("\t请输入正确序号!\n");                break;            }        }        p=p->next;    }if(k==0){printf("\t该职工号不存在!\n");}    return OK; }/****************************************************************************************功能描述:按职工号删除*输入参数:p r 指针*输出参数:无*返回值:1*其他说明:***************************************************************************************/int Del(Linklist L,char id[20])//按ID删除{    LNode *p;  LNode *r;    p=L->next;  r=L;  while(!(strcmp(p->data.id,id)==0)&&p)    {        r=p;        p=p->next;    }    if(!p)        printf("\n删除位置不合理\n");    else    {        r->next=p->next;        free(p);        printf("删除成功!\n");    }    return 1;}/****************************************************************************************功能描述:将操作完成后的信息存储到文件*输入参数:无*输出参数:无*返回值:无***************************************************************************************/void Save(Linklist L){            FILE *fpb2;              //文件指针            LNode *p2;            fpb2=fopen("worker.txt","wb");  //把职工信息写入到文件中            for(p2=L->next; p2!=NULL; p2=p2->next)            fwrite(p2,sizeof(LNode),1,fpb2);            fclose(fpb2);}/****************************************************************************************功能描述:把文件中的职工信息读出来*输入参数:无*输出参数:无*返回值:无***************************************************************************************/void Read(Linklist L){    FILE *fpb1;              //文件指针    LNode *p1,*s1;    fpb1=fopen("worker.txt","rb");               //读方式打开职工文件    if(fpb1!=NULL)    {        p1=(Linklist)malloc(sizeof(LNode));        if(!p1)exit(1);        p1->next=NULL;        while(fread(p1,sizeof(LNode),1,fpb1)==1)        {            if(L->next==NULL)            {                L->next=p1;                s1=p1;            }            else            {                s1->next=p1;                s1=p1;            }            p1=(Linklist)malloc(sizeof(LNode));            if(!p1)exit(1);            p1->next=NULL;        }    }}


2.main.cpp

#include<stdio.h>#include<stdlib.h>#include<string.H>#include"D://head.h"#define OK 1#define ERROR 0/****************************************************************************************功能描述:测试函数*输入参数:你的选择*输出参数:无*返回值:0*其他说明:完成各个函数测试,消息字段之间用分号(;)隔离***************************************************************************************/int main()//主函数{    Linklist L;    int x=1;    int y;    char m;char id[20];    Initlist(&L);//初始化单链表    Read(L);    while(x)    {        menu();        printf("\t请选择操作序号并按回车:");        scanf("%d",&y);        switch(y)        {        case 1:            {                system ("cls");//清空主界面                printf("\t*********************欢迎进入录入模块********************\n");                CreatList(L);//头插法生成单链表                do                {                    printf("\t是否继续输入?(y/n):");                    getchar();                    scanf("%c",&m);                    if(m=='y')                    {                        CreatList(L);//显示职工信息                    }                }                while(m!='n');                printf("\t*******************欢迎下次进入录入模块******************\n");                break;            }        case 2:{    system ("cls");//清空主界面                printf("\t*********************欢迎进入查询模块********************\n");Search(L);//职工信息查询    do{    printf("\t是否继续查询?(y/n):");    getchar();    scanf("%c",&m);    if(m=='y'){    Search(L);//职工信息查询}}     while(m!='n');     printf("\t*******************欢迎下次进入查找模块******************\n");                 break;}        case 3:{    system ("cls");//清空主界面                printf("\t*******************欢迎进入排序模块**********************\n");                Sort(L);                do{     printf("\t是否继续查询?(y/n):");     getchar(); scanf("%c",&m);if(m=='y') {      Sort(L); }}while(m!='n');    printf("\t*******************欢迎下次进入排序模块******************\n");                break;}        case 4:system ("cls");//清空主界面            printf("\t*********************欢迎进入插入模块********************\n");printf("\t请输入要插入查找的职工号:");            getchar();            scanf("%s",&id);            Ins(L,id);//插入信息do{printf("\t是否继续插入?(y/n):");getchar();scanf("%c",&m);    if(m=='y'){printf("\t请输入要插入查找的职工号:");getchar();                    scanf("%s",&id);Ins(L,id);//插入信息}}while(m!='n');            printf("\t*******************欢迎下次进入插入模块******************\n");            break;        case 5:            system ("cls");//清空主界面            printf("\t*********************欢迎进入显示模块********************\n");            printf("\t所有职工信息如下所示\n");            Display(L);//显示职工信息            printf("\t*******************欢迎下次进入显示模块******************\n");            break;        case 6:            system ("cls");//清空主界面            printf("\t*********************欢迎进入修改模块********************\n");            printf("\t请输入要修改员工职工号:");            getchar();            scanf("%s",&id);            Alter(L,id);//更改信息do{printf("\t是否继续修改?(y/n):");getchar();scanf("%c",&m);    if(m=='y'){printf("\t请输入要修改员工职工号:");getchar();                    scanf("%s",&id);Alter(L,id);//更改信息}}while(m!='n');            printf("\t******************欢迎下次进入修改模块*******************\n");            break;        case 7:system ("cls");//清空主界面            printf("\t*********************欢迎进入删除模块********************\n");            printf("\t请输入删除员工职工号:");            getchar();            scanf("%s",&id);            Del(L,id);//按职工号删除do{printf("\t是否继续删除?(y/n):");getchar();scanf("%c",&m);if(m=='y'){printf("\t请输入要删除员工职工号:");getchar();                    scanf("%s",&id);Del(L,id);//按职工号删除}}while(m!='n');            printf("\t******************欢迎下次进入删除模块*******************\n");            break;case 8:system("cls");printf("\t*********************欢迎进入保存模块********************\n");Save(L);//保存数据printf("\t职工信息保存成功!\n");            printf("\t******************欢迎下次进入保存模块*******************\n");            break;        case 9:            system ("cls");//清空主界面x=0;            printf("\t****************感谢您使用本系统,再见!*****************\n");            exit(0);        default:            printf("\t请输入正确序号!\n");            break;        }    }    return 0;}
3。head


#define OK 1#define ERROR 0struct employee{    char id[20];//职工号    char name[20];//姓名    char sex[20];//性别    int age;//年龄    char edu[20];//学历    double salary;//工资    char phone[30];//电话    char address[30];//地址};//存储结构typedef struct LNode{    struct employee data;    struct LNode* next;}LNode, *Linklist;void menu();//菜单函数int Initlist(Linklist *L);//初始化单链表int CreatList(Linklist L);//头插法生成单链表void Display(Linklist L);//显示职工信息void Search(Linklist L);//职工信息查询int SearchID(Linklist L,char id[20]);//职工号查询int SearchName(Linklist L,char name[10]);//姓名查询void Sort(Linklist L);//职工信息排序void SortID(Linklist L);//职工号排序void SortName(Linklist L);//姓名排序void SortSalary(Linklist L);//工资排序int Ins(Linklist L, char id[20]);//插入信息int Alter(Linklist L,char id[20]);//更改信息int Del(Linklist L,char id[20]);//按职工号删除void Save(Linklist L);//保存到文件void Read(Linklist L);//读取信息



运行结果截图:













原创粉丝点击