#includestdio.h#includestdlib.h#includestring.h#includemalloc.h#includeconio.h#defineLENsizeof(wor)structworker{longkahao;/*员工工资卡号*/charname[10];/*员工姓名*/intmonth;//月份floatyfgz;/*应发工资*/floatsf;/*水费*/floatdf;/*电费*/floatsj;/*税金*/floatsfgz;/*实发工资*/structworker*next;};typedefstructworkerwor;intnum;voiduserId();//用户登录函数charmenu(void);//主菜单wor*read(wor*head);//加载函数intsave(wor*head);//保存函数voidinputMenu(wor*head);//输入菜单voidinput(wor**head);//输入员工信息voidsearchMenu(wor*head);//查询菜单intnumSearch(wor*pNew);//卡号查询方式函数intnameSearch(wor*pNew);//姓名查询方式函数voidsearch(wor*head);//查询功能voiddeleteSal(wor*head);//删除员工信息wor*deleteNode(wor*head,longnodeNum);//找到删除节点voidprintSal(wor*head);//打印员工信息voidtotalSalMenu(wor*head);//统计工资菜单voidtotalSal(wor*head);/*统计员工某时间段的实发工资总和*/voidDeleteMemory(wor*head);//删除内存voidorder(wor*head);//排序浏览函数charmenu1(void);//排序浏览菜单voidmodify(wor*head);//修改函数,修改完后保存信息voidmodifyNode(wor*head);//查找节点并修改信息/*==============================================================================================*/intmain()/*主函数main,功能:通过调用各函数,实现员工工资信息管理系统的功能*/{charch;wor*head=NULL;system(colorf2);printf(\n);printf(\n);printf(\n);printf(\n);printf(\n);printf(#〓§〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓#\n);printf(↓↓↓↓↓↓\n);printf(☆★☆☆★☆☆★☆☆★☆☆★☆☆★☆\n);printf(☆欢☆☆迎☆☆进☆☆入☆☆系☆☆统☆\n);printf(☆★☆☆★☆☆★☆☆★☆☆★☆☆★☆\n);printf(↓↓↓↓↓↓\n);printf(※※※※※※\n);printf(※※※※※※\n);getchar();userId();system(cls);while(1){ch=menu();switch(ch)/*用switch语句实现功能选择*/{case'1':head=read(head);inputMenu(head);break;/*调用创建链表函数,添加员工工资信息,并保存到文件夹中*/case'2':head=read(head);searchMenu(head);break;/*调用信息查询函数,查询员工工资信息*/case'3':head=read(head);deleteSal(head);break;/*调用删除信息函数,删除员工工资信息*/case'4':head=read(head);printSal(head);break;/*调用显示信息资料函数*/case'5':head=read(head);totalSalMenu(head);break;/*统计某时间段员工工资信息*/case'6':head=read(head);order(head);break;/*按照卡号对员工进行排序浏览*/case'7':head=read(head);modify(head);break;//修改员工工资信息case'0':system(cls);printf(\n\n\n\n\n);printf(\t\t#〓§〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓#\n);printf(\t\t↓↓↓↓\n);printf(\t\t☆★☆☆★☆☆★☆☆★☆\n);printf(\t\t☆感☆☆谢☆☆使☆☆用☆\n);printf(\t\t☆★☆☆★☆☆★☆☆★☆\n);printf(\t\t↓↓↓↓\n);printf(\t\t※※※※\n);printf(\t\t※※※※\n);printf(\n\n\n\n\n);printf(\t\t\t\t\t\t\t\t12软件1班\n);printf(\t\t\t\t\t\t\t\t蔡文豪\n);printf(\t\t\t\t\t\t\t\t201241404120\n\n\n);getchar();exit(0);/*退出系统,返回主界面*/DeleteMemory(head);/*释放所有已分配的内存*/printf(Endofprogram!);break;default:printf(输入错误,请重试!\n);}save(head);}return0;}/*==============================================================================================*/charmenu(void)/*函数menu,功能:主菜单选择界面*/{charch;printf(★☆★工资信息管理系统☆★☆\n);printf(\n);printf(★----------------1*输入员工工资信息*-----------------------★\n\n);printf(\t☆----------------2*查询员工工资信息*-----------------------☆\n\n);printf(★----------------3*删除员工工资信息*-----------------------★\n\n);printf(\t☆----------------4*浏览员工工资信息*-----------------------☆\n\n);printf(★----------------5*统计实发工资总额*-----------------------★\n\n);printf(\t☆----------------6*工资信息排序处理*-----------------------☆\n);printf(★----------------7*修改员工工资信息*-----------------------★\n\n);printf(\t☆----------------0*退出工资管理系统*-----------------------☆\n);/*菜单选择界面*/printf(\n);printf(请输入您的选择:);scanf(%c,&ch);/*选择操作*/returnch;}/*==============================================================================================*/voiduserId(){intcount=0;charq[5]=1234;charb[5];charc;inti=0;part1:printf(请输入您的密码:);while((c=getch())!=13){putchar('*');b[i]=c;i++;}printf(\n);b[i]='\0';if(strcmp(q,b)!=0){printf(密码错误,请重新输入!!!!!\n);getchar();count++;if(count=3){printf(您已经三次输入用户名或密码错误,系统自动退出!\n);exit(0);/*退出系统*/}gotopart1;}printf(\n);}/*==============================================================================================*/wor*read(wor*head){FILE*fp;wor*s;wor*p;intn;fp=fopen(D:\\1.txt,rb);//以制度方式打开一个二进制文件if(NULL==fp)//如果打开失败就返回-1;{printf(打开文件失败!\n);head=NULL;returnNULL;}head=(wor*)malloc(sizeof(wor));p=head;while(!feof(fp)){//为下个节点分配内存空间s=(wor*)malloc(sizeof(wor));n=fread(s,sizeof(wor),1,fp);//从文件读取数据到节点if(n1){free(s);p-next=NULL;//最后一个节点为NULLbreak;}num++;p-next=s;//保存下个节点p=p-next;//切换至下个节点p-next=NULL;//最后一个节点为NULL}fclose(fp);returnhead;}/*==============================================================================================*/intsave(wor*head){FILE*fp;wor*p;fp=fopen(D:\\1.txt,wb);if(NULL==fp){printf(打开文件失败!\n);return-1;}p=head-next;do{fwrite(p,LEN,1,fp);//把数据保存到fp指向的文件中p=p-next;}while(p!=NULL);fflush(fp);fclose(fp);return0;}/*==============================================================================================*/voidinputMenu(wor*head){charch;inti=0;do{input(&head);printf(是否继续添加(Y/N)?\n);printf(请输入您的选择:);scanf(%c,&ch);i++;}while(ch=='y'||ch=='Y');printf(您添加了%d个员工信息!\n,i);}/*==============================================================================================*/voidinput(wor**head){wor*s;wor*p;if(*head==NULL)//如果表头为空,先为它分配内存{*head=(wor*)malloc(LEN);p=*head;}else//否则说明有内容,直接切换到尾节点{p=*head;while(p-next)p=p-next;}s=(wor*)malloc(LEN);//为这个节点分配内存printf(请输入员工工资卡号(6位):\n);scanf(%ld,&s-kahao);while(s-kahao10