员工工资管理系统(c语言编程)
- 格式:pdf
- 大小:8.38 KB
- 文档页数:6
#include<stdio.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];char aband[10];char tax[10];char sfsalary[10];struct Info1 *next;}Info2;typedef struct Info1 *Info;Info head;void display();void find();void modify();void add();void del();void list();void listOne(Info s);Info isExists(char *num);void init();void init(){head=(Info)malloc(sizeof(Info2));head->next=null;}void main(){init();while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统 **\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");printf("\t\t1.查询员工信息\n");printf("\t\t2.录入员工信息\n");printf("\t\t3.修改员工信息\n");printf("\t\t4.删除员工信息\n");printf("\t\t6.显示所有员工信息\n");printf("\t\t7.退出系统\n");printf("\t============================================\n");printf("\t您的选择是: ");}void listOne(Info p){printf("\n该员工信息记录如下: ");printf("\n==========================================================\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付工资");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yf salary,p->aband,p->tax,p->sfsalary);}Info isExists(char *num){Info p,q;p=head;q=p->next;while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s", q->yfsalary);printf("\t\t请输入该员工的保险金额: ");scanf("%s", q->aband);printf("\t\t请输入该员工的税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的实付工资: ");scanf("%s",q->sfsalary);q->next=null;p->next=q;}elseprintf("\n\t\t您所输入的员工编号以存在! ");printf("\n\t\t按任意键返回住菜单......");getchar();}void del(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if(q!=null)listOne(q);printf("\t\t请输入该员工的新姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s",q->yfsalary);printf("\t\t请输入该员工的保险: ");scanf("%s",q->aband);printf("\t\t请输入该员工的新税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n================================================================= =======\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;while(p!=null){printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yf salary,p->aband,p->tax,p->sfsalary);p=p->next;printf("\n\t\t按任意键返回主菜单......");getchar();}void find(){Info p;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t输入员工编号: ");scanf("%s",num);p=isExists(num);p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。
员工工资管理系统(c语言编程)6页一、设计目标1、完成一个员工工资管理系统,包括对员工信息的添加、删除、修改和查询、员工工资管理和统计等功能。
2、程序必须具备易用性、可靠性、安全性和稳定性等特点。
二、程序结构设计员工工资管理系统是由若干模块构成的一个整体,它们之间相互联系,共同完成对员工信息的处理和管理。
程序分为主界面模块、添加模块、删除模块、修改模块、查询模块、统计模块、退出模块。
三、模块功能设计1、主界面模块主界面包括菜单栏和功能栏,菜单栏包括添加、删除、修改、查询、统计和退出功能,功能栏是对主界面菜单的补充,包括一些快捷操作按钮。
2、添加模块添加模块是用来录入员工信息的,可以录入的信息有员工编号、员工姓名、员工部门、员工工作年限、员工基本工资、员工奖金等。
添加模块会对信息进行一系列的校验,要求信息必须完整正确才能录入。
3、删除模块删除模块是用来删除员工信息的,输入员工编号就可以删除该员工的信息。
5、查询模块查询模块提供了多种查询方式,包括按部门查询、按姓名查询、按工作年限查询、按基本工资查询、按奖金查询等。
查询结果会按照员工编号的顺序进行排序。
6、统计模块统计模块会根据查询结果进行工资统计,包括总工资、平均工资、最高工资和最低工资等。
7、退出模块退出模块是用来关闭程序的,保证程序的安全性和稳定性。
四、程序流程设计1、主界面程序启动后,会显示主界面界面,包括菜单栏和功能栏。
2、录入信息点击添加功能或者添加按钮,会进入添加模块,要求用户输入员工信息,录入完成后数据将保存到文件中。
4、修改信息点击修改功能或者修改按钮,会进入修改模块,输入员工编号,然后修改员工信息。
5、查询信息点击查询功能或者查询按钮,会进入查询模块,选择查询方式,输入查询条件,系统将显示符合条件的员工信息。
6、工资统计当查询完成后,点击统计功能或者统计按钮,会进入统计模块,系统将根据查询结果进行统计。
7、程序退出当操作完成后,点击退出功能或者退出按钮,会关闭程序。
C语言职工工资管理系统代码简介职工工资管理是一项重要的任务,它涉及到工资计算、薪资发放、绩效评估等方面。
为了提高管理的有效性和准确性,许多公司和组织都开发了各种各样的工资管理系统。
本文将介绍一种基于C语言开发的职工工资管理系统代码。
代码功能及特点1. 基本功能•添加新员工信息•更新员工信息•计算员工工资•发放工资•查询员工信息•统计工资情况2. 特点•简单易懂:代码使用C语言编写,阅读和理解都相对简单。
•高效可靠:代码采用模块化设计,结构清晰,运行效率高,容错性强。
•跨平台支持:C语言是一种具有广泛应用的语言,可以在多个操作系统上运行。
代码实现1. 员工信息结构体定义struct Employee {int id; // 员工编号char name[20]; // 员工姓名float basicSalary; // 员工基本工资float performanceBonus; // 绩效奖金float salary; // 员工工资};2. 添加新员工信息函数void addEmployee(struct Employee *employee, int num) {printf("请输入员工编号:");scanf("%d", &(employee[num].id));// 输入其他员工信息...}3. 更新员工信息函数void updateEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 更新员工信息...}}}4. 计算员工工资函数void calculateSalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {employee[i].salary = employee[i].basicSalary + employee[i].performance Bonus;}}5. 发放工资函数void paySalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {printf("员工编号:%d,工资:%.2f\n", employee[i].id, employee[i].salar y);}}6. 查询员工信息函数void searchEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 输出员工信息...}}}7. 统计工资情况函数void statisticsSalary(struct Employee *employee, int num) { float totalSalary = 0;int i;for (i = 0; i < num; i++) {totalSalary += employee[i].salary;}printf("总工资:%f\n", totalSalary);}使用示例1. 添加员工信息struct Employee employees[100];int num = 0;addEmployee(employees, num);num++;2. 更新员工信息int id = 12345;updateEmployee(employees, id);3. 计算员工工资calculateSalary(employees, num);4. 发放工资paySalary(employees, num);5. 查询员工信息int id = 12345;searchEmployee(employees, id);6. 统计工资情况statisticsSalary(employees, num);总结本文介绍了一个基于C语言的职工工资管理系统代码。
#i n c l u d e<s t d i o.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];}Info2;{}{while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统**\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");}{","税金","实付工资}{while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");}else}{{printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];{}{printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n========================================================================\n\n" );printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;{}}{{}p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}。
#include<stdio.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];char aband[10];char tax[10];char sfsalary[10];struct Info1 *next;}Info2;typedef struct Info1 *Info;Info head;void display();void find();void modify();void add();void del();void list();void listOne(Info s);Info isExists(char *num);void init();void init(){head=(Info)malloc(sizeof(Info2));head->next=null;}void main(){init();while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统**\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");printf("\t\t1.查询员工信息\n");printf("\t\t2.录入员工信息\n");printf("\t\t3.修改员工信息\n");printf("\t\t4.删除员工信息\n");printf("\t\t6.显示所有员工信息\n");printf("\t\t7.退出系统\n");printf("\t============================================\n");printf("\t您的选择是: ");}void listOne(Info p){printf("\n该员工信息记录如下: ");printf("\n==========================================================\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付工资");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);}Info isExists(char *num){Info p,q;p=head;q=p->next;while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s", q->yfsalary);printf("\t\t请输入该员工的保险金额: ");scanf("%s", q->aband);printf("\t\t请输入该员工的税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的实付工资: ");scanf("%s",q->sfsalary);q->next=null;p->next=q;}elseprintf("\n\t\t您所输入的员工编号以存在! ");printf("\n\t\t按任意键返回住菜单......");getchar();void del(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if(q!=null){listOne(q);printf("\t\t请输入该员工的新姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s",q->yfsalary);printf("\t\t请输入该员工的保险: ");scanf("%s",q->aband);printf("\t\t请输入该员工的新税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n=================================================================== =====\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;while(p!=null){printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);p=p->next;}printf("\n\t\t按任意键返回主菜单......");getchar();}void find(){Info p;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t输入员工编号: ");scanf("%s",num);p=isExists(num);p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}。
#include<stdio.h>#include<string.h>#include<ctype.h>#include<malloc.h>#define null 0typedef struct Info1{char num[10];char name[10];char depar[10];char yfsalary[10];char aband[10];char tax[10];char sfsalary[10];struct Info1 *next;}Info2;typedef struct Info1 *Info;Info head;void display();void find();void modify();void add();void del();void list();void listOne(Info s);Info isExists(char *num);void init();void init(){head=(Info)malloc(sizeof(Info2));head->next=null;}void main(){init();while(1){char c;display();scanf("%c",&c);switch(c){case '1':find();break;case '2':add();break;case '3':modify();break;case '4':del();break;case '5':list();break;case '6':printf("\t\t...退出系统!\n");return;default: printf("\t\t输入错误!请按任意键返回重新选择(1-7)\n");getchar();}}}void display(){printf("\n\t** 欢迎使用员工信息管理系统**\n\n");printf("\t请选(1-7):\n");printf("\t============================================\n");printf("\t\t1.查询员工信息\n");printf("\t\t2.录入员工信息\n");printf("\t\t3.修改员工信息\n");printf("\t\t4.删除员工信息\n");printf("\t\t6.显示所有员工信息\n");printf("\t\t7.退出系统\n");printf("\t============================================\n");printf("\t您的选择是: ");}void listOne(Info p){printf("\n该员工信息记录如下: ");printf("\n==========================================================\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付工资");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);}Info isExists(char *num){Info p,q;p=head;q=p->next;while(q!=null){if(strcmp(q->num,num)==0)return p;p=q;q=p->next;}return p;}void add(){Info p,q;char num[10];q=(Info)malloc(sizeof(Info2));printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);if (p->next==null){strcpy(q->num,num);printf("\t\t请输入员工姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s", q->yfsalary);printf("\t\t请输入该员工的保险金额: ");scanf("%s", q->aband);printf("\t\t请输入该员工的税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的实付工资: ");scanf("%s",q->sfsalary);q->next=null;p->next=q;}elseprintf("\n\t\t您所输入的员工编号以存在! ");printf("\n\t\t按任意键返回住菜单......");getchar();void del(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if (q!=null){q=q->next;p->next=q;printf("\n\t\t删除成功! ");}elseprintf("\n\t\t您所输入的员工编号有误或不存在! ");printf("\n\t\t按任意键返回主菜单......");getchar();}void modify(){Info p,q;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t请输入员工编号: ");scanf("%s",num);p=isExists(num);q=p->next;if(q!=null){listOne(q);printf("\t\t请输入该员工的新姓名: ");scanf("%s",q->name);printf("\t\t请输入该员工的部门: ");scanf("%s",q->depar);printf("\t\t请输入该员工的应付工资金额: ");scanf("%s",q->yfsalary);printf("\t\t请输入该员工的保险: ");scanf("%s",q->aband);printf("\t\t请输入该员工的新税金金额: ");scanf("%s",q->tax);printf("\t\t请输入该员工的新实付工资: ");scanf("%s",q->sfsalary);}elseprintf("\n\t\t您所输入的员工编号有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}void list(){Info p;if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\n所有员工信息记录如下: ");printf("\n=================================================================== =====\n\n");printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n","员工编号","姓名","部门","应付工资","保险","税金","实付金额");p=head->next;while(p!=null){printf("%-12s%-10s%-10s%-7s%-7s%-10s%-10s%\n",p->num,p->name,p->depar,p->yfsalary, p->aband,p->tax,p->sfsalary);p=p->next;}printf("\n\t\t按任意键返回主菜单......");getchar();}void find(){Info p;char num[10];if (head->next==null){printf("\n\t\t当前还没有员工信息记录,按任意键返回主菜单......");getchar();return;}printf("\t\t输入员工编号: ");scanf("%s",num);p=isExists(num);p=p->next;if(p!=null)listOne(p);elseprintf("\n\t\t您所输入的员工信息有误或不存在!");printf("\n\t\t按任意键返回主菜单......");getchar();}。
职工工资管理系统 C 语言程序设计简介职工工资管理系统是一个用于帮助企业管理职工工资的程序,它可以实现对职工的基本信息、工作时长、工资等进行管理。
本文将介绍如何使用 C 语言实现一个简单的职工工资管理系统。
功能设计1. 添加职工信息系统可以添加新的职工信息,包括职工编号、姓名、性别、职位等。
2. 修改职工信息已有职工信息可以进行修改,如姓名、性别、职位等。
3. 计算工资系统可以根据职工的工作时长和基础工资计算出实际工资。
4. 查询职工信息可以通过职工编号或姓名查询职工的详细信息。
5. 显示所有职工信息将所有职工的信息显示在界面上。
开发流程1. 定义数据结构首先,我们需要定义一个数据结构Employee来保存职工的信息,包括职工编号、姓名、性别、职位、基础工资等字段。
struct Employee {int id;char name[50];char gender[10];char position[50];float baseSalary;float hoursWorked;float totalSalary;};2. 编写主要函数添加职工信息void addEmployee(struct Employee emp) {// 将 emp 添加到员工列表中}修改职工信息void updateEmployee(struct Employee emp) {// 根据职工编号修改对应的员工信息}计算工资float calculateSalary(struct Employee emp) {// 计算职工的实际工资return emp.baseSalary + emp.hoursWorked * hourlyRate;}查询职工信息void searchEmployee(int id) {// 根据职工编号查询职工信息}显示所有职工信息void displayAllEmployees() {// 显示所有职工的信息}3. 用户界面交互为了方便用户操作,可以设计一个简单的用户界面,使用控制台打印实现信息展示和输入。
/* Note:Your choice is C IDE */#include "stdio.h"#include "string.h"#include "conio.h"#include "stdlib.h"struct Message /*此结构体用于存放职工信息以及创建链表*/{char name[30];int ID;int JBGZ;int ZWGZ;int JT;int YLBX;int GJJ;long int Total;float Sum_3;struct Message *nextPrt;} static *head,*Rec_1=NULL,*Rec_2=NULL, *Rec_3=NULL; /*此处创建一个表头,以及三个用于恢复函数的静态变量*/static float Sum_JBGZ=0,Sum_ZWGZ=0,Sum_JT=0,Sum_YLBX=0,Sum_GJJ=0; static float Average_JBGZ,Average_ZWGZ,Average_JT,Average_YLBX,Average_GJJ; void Input(); /*此处声明各一级函数*/ void Output();void Delete();void Add();void Recover();void Modify();void Search();void Statistic();struct Message *creat(struct Message *h); /*此处声明各二级函数*/ void print_Message(struct Message *h);struct Message *del_Message(struct Message *h,char *str);struct Message *add_Message(struct Message *h,struct Message *a,char *strafter); struct Message *Recover_Message(struct Message *h);struct Message *Modify_Message(struct Message *h,char *str);void Search_Message(struct Message *h);void Statistic_Message(struct Message *h);main() /*主函数为菜单页*/ {char i; /*功能:调用各一级函数一级退出程序*/clrscr();gotoxy(27,9);printf("\16[ 中南大学 ]");gotoxy(27,11);printf("\16[ 职工工资管理系统 ]");gotoxy(27,13);printf("\16[ 设计者:刘路 ]");gotoxy(27,15);printf("\16[ 输入任意键继续 ]\n");getch();for(;;){clrscr();gotoxy(25,9);printf("* * * * * * *菜单* * * * * *");gotoxy(25,10);printf("* a. 输入记录 *");gotoxy(25,11);printf("* b. 显示记录 *");gotoxy(25,12);printf("* c. 修改记录 *");gotoxy(25,13);printf("* d. 查找记录 *");gotoxy(25,14);printf("* e. 添加记录 *");gotoxy(25,15);printf("* f. 删除记录 *");gotoxy(25,16);printf("* g. 恢复记录 *");gotoxy(25,17);printf("* h. 统计数据 *");gotoxy(25,18);printf("* i. 退出程序 *");gotoxy(25,19);printf("* 请选择 a—i *");gotoxy(25,20);printf("* * * * * * * * * * * * * **");i=getch();if(i=='i')break;else switch(i){case'a':Input();break; /*调用记录输入函数*/ case'b':Output();break; /*调用记录显示函数*/ case'c':Modify();break; /*调用记录修改函数*/ case'd':Search();break; /*调用记录查找函数*/ case'e':Add();break; /*调用记录添加函数*/case'f':Delete();break; /*调用记录删除函数*/case'g':Recover();break; /*调用记录恢复函数*/case'h':Statistic();break; /*调用记录统计函数*/}}}void Input() /*定义输入函数(一级)*/{ /*主要功能:调用二级子函数创建链表*/head=NULL;head=creat(head);}void Output() /*定义显示函数(一级)*/{ /*主要功能:调用二级子函数实现按一定格式输出所有职工工资信息*/clrscr();print_Message(head);}void Delete() /*定义删除函数(一级)*/{ /*主要功能:调用二级子函数实现删除任意职工工资信息并输出删除后的工资信息*/char name[50],*del_Mes=name;clrscr();gotoxy(1,1);printf("请输入姓名:\n");scanf("%s",name);head=del_Message(head,del_Mes);clrscr();printf("删除数据后:\n");printf("----------------------------------------------------------\n");print_Message(head);}void Add() /*定义添加函数(一级)*/{ /*主要功能:调用二级函数以实现在任意位置添加一条或多条职工工资信息*/char after_name[30],i;struct Message* p;clrscr();gotoxy(1,1);printf("\n请输入需要添加的信息\n");printf("----------------------------------------------------------\n");p=(struct Message*)malloc(sizeof (struct Message));if(p!=NULL){printf("请输入姓名:\n");scanf("%s",&p->name);printf("请输入ID:\n");scanf("%d",&p->ID);printf("请输入基本工资:\n");scanf("%d",&p->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p->JT);printf("请输入医疗保险:\n");scanf("%d",&p->YLBX);printf("请输入公积金:\n");scanf("%d",&p->GJJ);p->Total=p->JBGZ+p->ZWGZ+p->JT-p->YLBX-p->GJJ;printf("总工资为:%d\n",p->Total);}printf("\n输入在哪个职工信息下方添加新信息:\n");scanf("%s",after_name);head=add_Message(head,p,after_name);printf("\n是否继续添加?Y/N");i=getch();while (i!='N'){printf("\n请输入你想要添加的信息\n");printf("----------------------------------------------------------\n");p=(struct Message*)malloc(sizeof (struct Message));if(p!=NULL){printf("请输入姓名:\n");scanf("%s",&p->name);printf("请输入ID:\n");scanf("%d",&p->ID);printf("请输入基本工资:\n");scanf("%d",&p->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p->JT);printf("请输入医疗保险:\n");scanf("%d",&p->YLBX);printf("请输入公积金:\n");scanf("%d",&p->GJJ);p->Total=p->JBGZ+p->ZWGZ+p->JT-p->YLBX-p->GJJ;printf("总工资为:%ld\n",p->Total);}printf("\n输入在哪个职工信息下方添加新信息:\n");scanf("%s",after_name);head=add_Message(head,p,after_name);printf("\n是否继续添加?Y/N");i=getch();}clrscr();gotoxy(1,1);printf("\n添加后的信息为:\n");printf("----------------------------------------------------------\n");print_Message(head);}void Recover() /*定义记录恢复函数(一级)*/{ /*主要功能:调用二级函数以实现恢复已删除的信息*/clrscr();head=Recover_Message(head);gotoxy(1,4);printf("恢复成功!^_^\n");printf("\n输入任意键退出...");getch();}void Modify() /*定义记录修改函数(一级)*/{ /*主要功能:调用二级函数以实现修改任意职工的任意信息*/char name[50],*Mod_Message=name;clrscr();printf("请输入需要修改信息的员工:\n");scanf("%s",name);head=Modify_Message(head,Mod_Message);clrscr();printf("修改后的信息为:\n");printf("----------------------------------------------------------\n");print_Message(head);}void Search() /*定义记录查找函数(一级)*/{ /*主要功能:调用二级函数实现按照姓名或ID通过关键字查找或精确查找的方式搜索职工信息*/ clrscr();Search_Message(head);}void Statistic() /*定义记录统计函数(一级)*/{ /*调用二级函数以实现以表格的形式输出职工工资信息并统计前三项工资总额在一定范围内的人数及比例*/clrscr();Statistic_Message(head);printf("\n输入任意键退出...");getch();}struct Message *creat(struct Message *h) /*定义创建链表函数(二级)*/{char i;struct Message *p1,*p2;clrscr();p1=p2=(struct Message*)malloc(sizeof (struct Message));if(p2!=NULL){gotoxy(1,1);printf("请输入姓名:\n");scanf("%s",&p2->name);printf("请输入ID:\n");scanf("%d",&p2->ID);printf("请输入基本工资:\n");scanf("%d",&p2->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p2->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p2->JT);printf("请输入医疗保险:\n");scanf("%d",&p2->YLBX);printf("请输入公积金:\n");scanf("%d",&p2->GJJ);p2->Total=p2->JBGZ+p2->ZWGZ+p2->JT-p2->YLBX-p2->GJJ;printf("总工资为:%ld\n",p2->Total);h=p2;p2->nextPrt=NULL;printf("输入s退出,输入其他键继续...\n");i=getch();}while(i!='s'){p2=(struct Message*)malloc(sizeof (struct Message));if(p2!=NULL){printf("请输入姓名:\n");scanf("%s",&p2->name);printf("请输入ID:\n");scanf("%d",&p2->ID);printf("请输入基本工资:\n");scanf("%d",&p2->JBGZ);printf("请输入职位工资:\n");scanf("%d",&p2->ZWGZ);printf("请输入津贴:\n");scanf("%d",&p2->JT);printf("请输入医疗保险:\n");scanf("%d",&p2->YLBX);printf("请输入公积金:\n");scanf("%d",&p2->GJJ);p2->Total=p2->JBGZ+p2->ZWGZ+p2->JT-p2->YLBX-p2->GJJ;printf("总工资为:%ld\n",p2->Total);p2->nextPrt=NULL;p1->nextPrt=p2;p1=p2;printf("输入s退出,输入其他键继续...\n");i=getch();}}return h;}void print_Message(struct Message *h) /*定义记录输出函数(二级)*/{struct Message *temp;int i=0;temp=h;gotoxy(1,4);printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b医疗保险\t 公积金\t\b总工资\n");if (temp==NULL) printf("没有找到信息!\n");while(temp!=NULL){i++;printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",temp->ID,temp->name,temp->JBGZ,temp->ZWGZ,temp->JT,temp->YLBX,temp->GJJ,temp->Total);(Sum_JBGZ+=temp->JBGZ,Sum_ZWGZ+=temp->ZWGZ,Sum_JT+=temp->JT,Sum_YLBX+=temp->YLBX,Sum_GJJ+=temp->GJJ);temp=temp->nextPrt;}(Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_J T/i,Average_YLBX=Sum_YLBX/i,Average_GJJ=Sum_GJJ/i);printf("各项平均工资:\t\b\b%.1f\t%.1f\t %.1f\t%.1f\t%.1f\n",Average_JBGZ,Average_ZWGZ,Average_JT ,Average_YLBX,Average_GJJ);printf("输入任意键退出...");getch();}struct Message *del_Message(struct Message *h,char *str) /*定义记录删除函数(二级)*/{struct Message *p1,*p2;p1=h;if(p1==NULL){printf("没有找到信息!\n");return h;}p2=p1->nextPrt;if(!strcmp(p1->name,str)){Rec_2=p1;Rec_3=p2;h=p2;return h;}while(p2!=NULL){if(!strcmp(p2->name,str)){Rec_1=p1;Rec_2=p2;Rec_3=p2->nextPrt;p1->nextPrt=p2->nextPrt;return h;}else{p1=p2;p2=p2->nextPrt;}}printf("删除成功!^_^");getch();return h;}struct Message *add_Message(struct Message *h,struct Message *a,char *strafter) /*定义记录添加函数(二级)*/{struct Message *p1,*p2;p1=h;while(p1!=NULL){if(!strcmp(p1->name,strafter)){a->nextPrt=p1->nextPrt;p1->nextPrt=a;return h;}elsep1=p1->nextPrt;}return h;}struct Message* Recover_Message(struct Message *h)/*定义记录恢复函数(二级)*/{if(Rec_1==NULL){h=Rec_2;Rec_2->nextPrt=Rec_3;}else{Rec_1->nextPrt=Rec_2;Rec_2->nextPrt=Rec_3;}return h;}struct Message* Modify_Message(struct Message *h,char *str)/*定义记录修改函数(二级)*/{struct Message *p1;int i;p1=h;if(p1==NULL){printf("没有找到信息!");return h;}while(strcmp(p1->name,str))p1=p1->nextPrt;printf("请输入需要修改的信息(序号):\n");printf("1.姓名 2.ID 3.基本工资 4.职务工资 5.津贴 6.医疗保险 7.公积金 8.总工资\n");scanf("%d",&i);switch(i){case 1:{printf("请输入修改后的姓名:\n");scanf("%s",&p1->name);};break;case 2:{printf("请输入修改后的ID:\n");scanf("%d",&p1->ID);};break;case 3:{printf("请输入修改后的基本工资:\n");scanf("%d",&p1->JBGZ);};break;case 4:{printf("请输入修改后的职务工资:\n");scanf("%d",&p1->ZWGZ);};break;case 5:{printf("请输入修改后的津贴:\n");scanf("%d",&p1->JT);};break;case 6:{printf("请输入修改后的医疗保险:\n");scanf("%d",&p1->YLBX);};break;case 7:{printf("请输入修改后的公积金:\n");scanf("%d",&p1->GJJ);};break;case 8:{printf("请输入总工资:\n");scanf("%d",&p1->Total);};break;}printf("\n修改成功!^_^\n输入任意键查看结果...");getch();return h;}void Search_Message(struct Message *h) /*定义记录搜索函数(二级)*/{struct Message* p1;int a,b,i,u,n=0,x1=0,x2,x3=0,x4=0,x5,x6,w1=1,w2=1,w3=0;char name[50];p1=h;if (p1==NULL) printf("没有找到信息!");printf("请选择查找方式:1.按姓名查找 2.按ID查找\n");scanf("%d",&a);printf("请选择搜索方式:1.按关键字搜索 2.精确搜索\n");scanf("%d",&b);if(a==1&&b==1){printf("请输入姓名:\n");scanf("%s",name);while(p1!=NULL){for(i=0;name[i]!='\0';i++)for(u=0;p1->name[u]!='\0';u++)if (name[i]==p1->name[u]) n++;if (2*n>=strlen(name)){printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt;}p1=h;printf("\n输入任意键退出...");getch();}if(a==1&&b==2){printf("请输入姓名:\n");scanf("%s",name);while(p1!=NULL){if(!strcmp(p1->name,name)){printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt;}p1=h;printf("\n输入任意键退出...");getch();}if(a==2&&b==1){printf("请输入ID:\n");scanf("%d",&x1);x2=x1;while(x2!=0){x2=x2/10;if(x2!=0)w1++; /*记录输入数据的位数w1*/}while(p1!=NULL){x6=x1; /*用x6暂时存储输入的数据*/for(i=1;i<=w1;i++) /*执行w1次循环*/{x3=x6%10; /*x3为x6的末位数*/x5=p1->ID;while(x5!=0){x5=x5/10;if(x5!=0)w2++; /*记录链表中某一节点位数*/}x5=1;x4=p1->ID; /*x4暂时存储链表中某一节点的ID*/for(u=1;u<=w2;u++) /*执行w2次循环*/{if((x4%10)==x3) /*判断x4的末位是否等于x3,若相等,则跳出循环,继续循环以判断该节点中是否还有输入数据中的其他数字*/{w3++; /*某节点的ID中,只要存在输入数据中的某一位数字,则w3增加1*/break;}x4=x4/10; /*判断x4的末位是否等于x3,若不相等,则去掉x4的末位数*/}x6=x6/10; /*去掉x6的末位数,继续循环判断该节点中是否还有输入数据中的其他数据*/w2=1; /*恢复w2的初值,否则位数将继续累加*/}if(w3==w1) /*如果w3与w1相等则表示该节点的ID中包含有输入数据中的所有数字,则输出该节点的数据*/{printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt; /*节点位置向后移动一位,继续循环以判断是否符合输出要求*/};p1=h;printf("\n输入任意键退出...");getch();}if(a==2&&b==2){printf("请输入ID:\n");scanf("%d",&x1);while(p1!=NULL){if(p1->ID==x1){printf("ID\t\b\b姓名\t\b\b基本工资\t职位工资\t\b\b\b\b\b\b津贴\t\b 医疗保险\t公积金\t\b总工资\n");printf("%d\t\b\b%s\t\b\b%d\t%d\t %d\t%d\t%d\t%d\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);}p1=p1->nextPrt;}p1=h;printf("\n输入任意键退出...");getch();}}void Statistic_Message(struct Message *h) /*定义记录统计函数*/ {struct Message *p1;int i=0,a1=0,b1=0,c1=0;float a2,b2,c2;p1=h;printf("┏━━━┳━━━━━┳━━━━┳━━━━┳━━━┳━━━━┳━━━┳━━━┓\n");printf("┃ ID号┃姓名┃基本工资┃职务工资┃津贴┃医疗保险┃公积金┃总工资┃\n");printf("┣━━━╋━━━━━╋━━━━╋━━━━╋━━━╋━━━━╋━━━╋━━━┫\n");while(p1!=NULL){i++;printf("┃%d\t┃ %s\t \b\b\b\b\b\b\b\b┃%d\t\b\b\b\b ┃ %d\t┃%d\t┃%d\t ┃ %d\t\b\b\b\b\b\b┃%ld ┃\n",p1->ID,p1->name,p1->JBGZ,p1->ZWGZ,p1->JT,p1->YLBX,p1->GJJ,p1->Total);printf("┣━━━╋━━━━━╋━━━━╋━━━━╋━━━╋━━━━╋━━━╋━━━┫\n");(Sum_JBGZ+=p1->JBGZ,Sum_ZWGZ+=p1->ZWGZ,Sum_JT+=p1->JT,Sum_YLBX+=p1->YLBX,Sum_GJJ+=p1->GJJ);p1=p1->nextPrt;}(Average_JBGZ=Sum_JBGZ/i,Average_ZWGZ=Sum_ZWGZ/i,Average_JT=Sum_J T/i,Average_YLBX=Sum_YLBX/i,Average_GJJ=Sum_GJJ/i);printf("┃┃┃┃┃┃┃┃┃\n");printf("┣━━━┻━━━━━╋━━━━╋━━━━╋━━━╋━━━━╋━━━╋━━━┫\n");printf("┃各项平均工资┃%.1f\t\b\b\b\b ┃ %.1f\t┃%.1f\t\b ┃%.1f\t\b\b\b\b ┃%.1f\t\b\b\b\b\b\b┃\t\b\b ┃\n",Average_JBGZ,Average_ZWGZ,Average_JT,Average_YLBX,Average_GJJ);printf("\b┗━━━━━━━━━┻━━━━┻━━━━┻━━━┻━━━━┻━━━┻━━━┛");p1=h;while(p1!=NULL){p1->Sum_3=(p1->JBGZ+p1->ZWGZ+p1->JT);if(p1->Sum_3>=1000 && p1->Sum_3<1500) a1++;if(p1->Sum_3>=1500 && p1->Sum_3<=2000) b1++;if(p1->Sum_3>2000) c1++;p1=p1->nextPrt;}a2=((float)a1/i)*100;b2=((float)b1/i)*100;c2=((float)c1/i)*100;printf("\n\n前三项工资和在1000-1500元之间的职工人数为:%d,占总职工人数的百分比为:%.2f%",a1,a2);printf("\n前三项工资和在1500-2000元之间的职工人数为:%d,占总职工人数的百分比为:%.2f%",b1,b2);printf("\n前三项工资和在2000元以上的职工人数为:%d,占总职工人数的百分比为:%.2f%",c1,c2);p1=h;Sum_JBGZ=0;Sum_ZWGZ=0;Sum_JT=0;Sum_YLBX=0;Sum_GJJ=0;}【欢迎使用职工工资管理系统】本系统可实现对职工工资信息的录入,显示,修改,查找,删除,恢复,添加,统计等功能,具体操作说明如下:进入程序后输入任意键进入主菜单,依菜单所示选择功能,输入序号即可调用该功能:1.输入a:调用记录输入功能,可依照屏幕提示依次输入职工的姓名,ID号,基本工资,职务工资,津贴,医疗保险,公积金(以Enter作为输入结尾)。
C语言职工工资管理系统代码1. 项目简介本项目是一个用C语言编写的职工工资管理系统。
该系统旨在帮助企业或组织更好地管理职工的工资信息,包括薪资计算、数据存储和查询等功能。
通过该系统,可以提高工资管理的效率和准确性,减少人力资源部门的负担。
2. 功能需求本系统需要实现以下功能:•添加新员工:输入员工姓名、基本工资、津贴等信息,并生成唯一的员工ID。
•删除员工:根据员工ID删除指定员工信息。
•修改员工信息:根据员工ID修改指定员工的基本信息。
•计算薪资:根据员工ID计算指定员工的实际薪资,并将结果保存到数据库中。
•查询薪资:根据员工ID查询指定员工的薪资信息。
3. 数据结构设计为了存储职工的基本信息和薪资数据,我们可以使用以下数据结构:3.1 员工结构体定义struct Employee {int id; // 员工IDchar name[50]; // 员工姓名float basicSalary; // 基本工资float allowance; // 津贴float actualSalary; // 实际薪资};3.2 员工数组定义struct Employee employees[100]; // 最多存储100个员工的信息int employeeCount = 0; // 当前员工数量4. 系统实现4.1 添加新员工void addEmployee() {struct Employee employee;printf("请输入员工姓名:");scanf("%s", );printf("请输入基本工资:");scanf("%f", &employee.basicSalary);printf("请输入津贴:");scanf("%f", &employee.allowance);employee.id = employeeCount + 1;employee.actualSalary = employee.basicSalary + employee.allowance;employees[employeeCount] = employee;employeeCount++;printf("添加成功!员工ID为:%d\n", employee.id);}4.2 删除员工void deleteEmployee() {int id;printf("请输入要删除的员工ID:");scanf("%d", &id);int index = findEmployeeIndex(id);if (index == -1) {printf("未找到对应的员工信息。