1、/*职工工资管理小软件 */#include#include#include#include/*职工变量定义*/typedef struct employee/*数据域*/char sex10; /性别char age10; /年龄char post10; /岗位char EmployeeID15; /工号char name10; /姓名int basesalary; /基本工资int postwage; /岗位工资float totalwage; /总工资/*指针域*/struct employee *next;LNode,*LinkList;/*全局变量定义*/int iCount=0;i
2、nt saveflag=0; /*是否需要存盘的标志变量*/*函数声明*/void MainMenu(); /登陆函数int menu(); /主菜单函数LinkList CreatLinkList(); /职工信息创建函数void stringinput(char *t,int lens,char *notice); /字符长度判断函数函数void ShowLinkList(pHead); /职工信息输出函数void OutOneNode(LinkList PNode); /输出一个节点的数据LinkList FindWorker(LinkList pHead); /职工信息查询函数void
3、 update(LinkList pHead); /职工信息修改函数void sortList(LinkList pHead); /职工工资排序函数LinkList FindWorker(LinkList pHead); /按职工姓名查找LinkList Find_ByEmployeeID(LinkList pHead); /按职工工号查找LinkList LoadData(LinkList pHead);void UpdateInfo(); /职工信息更新函数void SaveData(LinkList pHead); /职工信息保存函数/职工信息导入函数void author(); /查询
4、作者信息函数void back(); /返回上一界面函数/*系统主函数*/void main()int iChoice;for(;)system(“cls“);printf(“ nnnn“);printf(“ 欢迎进入职工工资管理系统 nnn“);printf(“ 1 进入管理系统 nn“);printf(“ 2 查看作者信息 nn“);printf(“ 0 退出 nn“);printf(“ nnnn“);printf(“ 请输入您的选择(0-2): n“);scanf(“%d“,while(iChoice2)system(“cls“);printf(“ nnnn“);printf(“ 欢迎进
5、入职工工资管理系统 nnn“);printf(“ 1 进入管理系统 nn“);printf(“ 2 查看作者信息 nn“);printf(“ 0 退出 nn“);printf(“ nnnn“);printf(“ 您的输入有误!n“);printf(“ 请重新输入您的选择(0-2):n“);scanf(“%d“,switch(iChoice)case 1: MainMenu();break;case 2:author();back();break;case 0:system(“cls“);printf(“ nnnnnn“);printf(“ 谢谢使用! nn“);printf(“ t 再见!nn
6、nn“);exit(0);fflush(stdin);getchar();system(“cls“);/*功能:登陆函数,进行密码验证*/void MainMenu() char key10,password10=“123“;int iNum=1;LinkList pHead; /定义单链表结点指针printf(“ 请输入密码: t“);scanf(“%s“,key);while(iNum2) if(strcmp(password,key)=0)continue;elseprintf(“n 输入密码错误 3 次,系统将自动退出!nn“);printf(“ 欢迎下次使用!nn“);exit(0)
7、;/*功能: 主菜单函数,用于主显示菜单参数:iChoice 类型:int说明: 变量返回值: iChoice*/int menu()int iChoice ;system(“cls“);printf(“n 您是合法用户!“);printf(“nnn“);printf(“ |*欢迎进入职工工资管理系统*|n“);printf(“ | |n“);printf(“ | |n“);printf(“ | 1 职工信息创建 |n“);printf(“ | |n“);printf(“ | 2 职工信息浏览 |n“);printf(“ | |n“);printf(“ | 3 职工信息查询 |n“);prin
8、tf(“ | |n“);printf(“ | 4 职工信息添加 |n“);printf(“ | |n“);printf(“ | 5 职工信息修改 |n“);printf(“ | |n“);printf(“ | 6 职工信息保存 |n“);printf(“ | |n“);printf(“ | 7 职工信息删除 |n“);printf(“ | |n“);printf(“ | 8 职工信息读取 |n“);printf(“ | |n“);printf(“ | 9 职工工资排序 |n“);printf(“ | |n“);printf(“ | 10 职工工资统计 |n“);printf(“ | |n“);
9、printf(“ | 0 退出系统 |n“);printf(“ | |n“);printf(“ | |n“);printf(“ |*|n“);printf(“nn“);printf(“ 请输入你所选择的选项(0-9):“);scanf(“%d“,while(iChoice12|iChoice(size_t)lens)printf(“n 输入字符过长!“); /超过 lens 只重新输入while(strlen(n)(size_t)lens);strcpy(t,n); /将输入的字符串拷贝到字符串 t 中/*功能:职工信息创建*/LinkList CreatLinkList() /创建一个链表,
10、包含 n 个节点LinkList pHead;LinkList pNew,pTail;int i,iNum=0;pHead=(LinkList)malloc(sizeof(LNode); /为头节点分配内存空间if(pHead=NULL)printf(“分配空间失败!“);exit(1);elsepHead-next=NULL; /链表初始化system(“cls“);printf(“ nnnn“);printf(“ 欢迎进入职工信息创建模块 nnnnn“);printf(“ 请输入要添加职工的个数: n “);scanf(“%d“,if(iNum0)/*利用 for 循环一次实现各节点的创建
11、和数据的输入*/for(i=0;iname,10,“n 请输入职工姓名 :tt“);if(strcmp(pNew-name,“0“)=0)break;stringinput(pNew-post,10,“n 请输入职工岗位:tt“);stringinput(pNew-EmployeeID,15,“n 请输入职工工号:tt“);stringinput(pNew-sex,10,“n 请输入职工性别 :tt“);stringinput(pNew-age,10,“n 请输入职工年龄:tt“);printf(“n 请输入职工基本工资:t“);scanf(“%d“,printf(“n 请输入职工岗位工资:t
12、“);scanf(“%d“,if(pHead-next=NULL)pHead-next=pNew;pTail=pNew;iCount+;elsepTail-next=pNew;/将 pNew 链到链表中pTail=pNew;iCount+;pTail-next=NULL; /将链表的最后一个节点的指针域置空printf(“ nn“);printf(“ 当前共输入%d 个职工信息nn“,iCount);printf(“ nn“);printf(“ 职工信息创建完成! nn“);return pHead;/*功能:输出一个节点的数据*/void OutOneNode(LinkList pNew)p
13、rintf(“ -n“);printf(“ | 姓名| 职工号| 性别| 年龄| 任职岗位| 基本工资| 岗位工资|n“);printf(“ -n“);printf(“ |%9s|%10s|%7s| %5s| %10s| %10d| %10d|n“,pNew-name,pNew-EmployeeID,pNew-sex,pNew-age,pNew-post,pNew-basesalary,pNew-postwage);printf(“ -n“);printf(“nn“); /*功能:职工信息输出*/void ShowLinkList(LinkList pHead) int iNum=0;Link
14、List pNew;pNew=pHead;system(“cls“);printf(“ nnnnn“);printf(“ 欢迎进入职工信息浏览模块 nnnn“);if(pNew = NULL)printf(“n 提示:没有记录可以显示!nn“);return;printf(“ -n“);printf(“ | 姓名| 职工号| 性别| 年龄| 任职岗位| 基本工资| 岗位工资|n“);printf(“ -n“);for(pNew=pHead-next;pNew!=NULL;pNew=pNew-next)printf(“ |%9s|%10s|%7s| %5s| %10s| %10d| %10d|n
15、“,pNew-name,pNew-EmployeeID,pNew-sex,pNew-age,pNew-post,pNew-basesalary,pNew-postwage);printf(“ -n“);iNum+;printf(“nn 职工信息输出完成! n“);printf(“n 当前共有%d 个职工! nnn“,iNum); /*功能:查找职工信息*/LinkList FindWorker(LinkList pHead)LinkList perNode;char WorkNumber15;if(pHead-next = NULL)printf(“当前没有职工信息.“);return NULL;printf(“ 请输入工作者的工号或姓名: n “);scanf(“%s“,WorkNumber);for(perNode = pHead-next ; perNode != NULL; perNode = perNode-next)