基于c++语言的职工工资管理系统
c语言工资管理系统课程设计

c语言工资管理系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中数组、结构体、文件操作等基本知识,并能将其应用于工资管理系统。
2. 使学生了解工资管理系统的基本功能需求,如员工信息录入、查询、修改和删除等。
3. 帮助学生理解工资计算方法,包括基本工资、加班工资、税金和实发工资等。
技能目标:1. 培养学生运用C语言设计、编写和调试工资管理系统的能力。
2. 提高学生分析问题、解决问题的能力,使其能够根据实际需求,优化系统功能。
3. 培养学生团队协作和沟通能力,通过分组完成任务,共同完成课程设计。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神。
2. 培养学生认真负责的态度,对待课程设计任务,养成良好的编程习惯。
3. 引导学生关注实际应用,理解计算机技术在企业管理中的重要性,提高职业素养。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言课程设计,旨在帮助学生将所学知识应用于实际项目中,提高编程能力和解决实际问题的能力。
2. 学生特点:学生已经掌握了C语言的基本知识,具有一定的编程基础,但对实际项目开发尚缺乏经验。
3. 教学要求:结合教材内容,以实用性为导向,注重培养学生的实际操作能力和团队协作能力。
二、教学内容1. 教学大纲:a. C语言数组、结构体和文件操作复习b. 工资管理系统功能需求分析c. 工资计算方法及实现d. 系统设计、编码与调试e. 团队协作与项目展示2. 教学内容安排与进度:a. 第一周:复习C语言数组、结构体和文件操作相关知识,讲解工资管理系统项目背景和功能需求。
b. 第二周:分析工资计算方法,引导学生设计系统功能模块,编写系统设计文档。
c. 第三周:根据设计文档,分组进行编码,实现工资管理系统的基础功能。
d. 第四周:优化系统功能,进行系统调试,确保系统稳定运行。
e. 第五周:团队协作,整理项目文档,准备项目展示。
3. 教材章节与内容:a. 数组、结构体和文件操作:教材第3章、第4章、第6章b. 工资管理系统功能需求分析:教材第10章 实践项目案例c. 工资计算方法及实现:教材第7章 循环与分支结构d. 系统设计、编码与调试:教材第8章 函数与模块化编程e. 团队协作与项目展示:教材第12章 软件工程实践4. 教学内容列举:a. 数组、结构体和文件操作:数组的使用、结构体定义和操作、文件读写。
员工工资管理系统(c语言编程)6页

员工工资管理系统(c语言编程)6页一、设计目标1、完成一个员工工资管理系统,包括对员工信息的添加、删除、修改和查询、员工工资管理和统计等功能。
2、程序必须具备易用性、可靠性、安全性和稳定性等特点。
二、程序结构设计员工工资管理系统是由若干模块构成的一个整体,它们之间相互联系,共同完成对员工信息的处理和管理。
程序分为主界面模块、添加模块、删除模块、修改模块、查询模块、统计模块、退出模块。
三、模块功能设计1、主界面模块主界面包括菜单栏和功能栏,菜单栏包括添加、删除、修改、查询、统计和退出功能,功能栏是对主界面菜单的补充,包括一些快捷操作按钮。
2、添加模块添加模块是用来录入员工信息的,可以录入的信息有员工编号、员工姓名、员工部门、员工工作年限、员工基本工资、员工奖金等。
添加模块会对信息进行一系列的校验,要求信息必须完整正确才能录入。
3、删除模块删除模块是用来删除员工信息的,输入员工编号就可以删除该员工的信息。
5、查询模块查询模块提供了多种查询方式,包括按部门查询、按姓名查询、按工作年限查询、按基本工资查询、按奖金查询等。
查询结果会按照员工编号的顺序进行排序。
6、统计模块统计模块会根据查询结果进行工资统计,包括总工资、平均工资、最高工资和最低工资等。
7、退出模块退出模块是用来关闭程序的,保证程序的安全性和稳定性。
四、程序流程设计1、主界面程序启动后,会显示主界面界面,包括菜单栏和功能栏。
2、录入信息点击添加功能或者添加按钮,会进入添加模块,要求用户输入员工信息,录入完成后数据将保存到文件中。
4、修改信息点击修改功能或者修改按钮,会进入修改模块,输入员工编号,然后修改员工信息。
5、查询信息点击查询功能或者查询按钮,会进入查询模块,选择查询方式,输入查询条件,系统将显示符合条件的员工信息。
6、工资统计当查询完成后,点击统计功能或者统计按钮,会进入统计模块,系统将根据查询结果进行统计。
7、程序退出当操作完成后,点击退出功能或者退出按钮,会关闭程序。
C语言课程设计报告:职工信息管理系统程序设计

1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
c语言课程设计报告职工工资管理系统1.doc

c语言课程设计报告职工工资管理系统1 课程设计报告课程设计报告题目:职工工资管理系统设计者:专业班级:学号:指导教师:所属院系:2011年6月29日一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8个)。
二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
C语言 职工工资管理系统设计报告

《C语言程序设计》课程设计报告设计题目:职工工资管理系统专业:班级:学号:姓名:信息工程学院1 前言工资管理系统是企业不可缺少的一部分,它利用计算机对员工工资进行统一管理,实现工资管理系统的系统化、规范化和自动化,为企业提高工作效率。
本程序旨在训练读者的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。
本程序中涉及结构体、数组、文件等方面的知识。
2 需求分析2.1 课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2.2 课程设计任务职工工资管理系统功能设计要求(1)输入记录:将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
(2)显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
(3)修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
(4)查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
(5)删除记录:可删除数据文件中的任一记录。
(6)统计: (A)计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在3000元以上、3000~2000元、2000~1000元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
(7)保存数据文件功能。
例如:职工工资信息表ID号姓名基本工资职务工资津贴医疗保险- 公积金- 总工资01 张望 1286 794 198 109 135 203402 李明1185 628 135 94 114 174003 王小民895 438 98 64 73 129404 张效章1350 868 210 116 150 216205 彭山745 398 84 61 68 1098各项平均工资 1092.2 625.2 145 88.8 108(要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)2.3 设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++2.4 开发语言C语言3 分析和设计从主菜单中选择相对应的数字,使程序进入不同的程序模块,用switch实现其功能,程序共分为六个模块,分别为:主函数、Input( )函数(输入函数)、Display(T)显示函数(计算职工工资信息并输入文件)、Delete (T)删除函数(从文件中读入信息并将其删除),Chick(T)查询模块,Change(T);修改模块,sum(T);统计模块3.1 系统模块图图3.1 系统模块图主菜单查 找 功 能 显 示 功 能 删 除 功 能输 入 功 能 退 出 程 序添 加 功 能修 改 功 能 按姓名删除按工号查找 修改工号 修改姓名 修改职务工资修改基本工资修改医疗保修改津贴修改公积金按姓名查找 按工号删除4 具体代码实现#include"stdio.h"#include<stdlib.h>#include<conio.h>#include<string.h> // 头文件static int n=0; // 定义静态全局变量,存储已经读入记录的条数。
c语言课程设计职工工资管理系统

一、概述随着社会的发展和进步,工资管理系统在企业管理中扮演着重要的角色。
为了提高工资管理的效率和准确性,许多企业都倾向于引入计算机系统来进行工资管理。
C语言是一种广泛应用于系统程序设计和应用程序开发的高级语言,具有跨评台性和高效性的特点。
设计一个基于C语言的职工工资管理系统将会成为一个有价值的课程设计。
二、系统功能需求1. 职工信息管理:系统需要能够记录、查看和修改职工的基本信息,包括尊称、工号、部门、入职日期等。
2. 薪资核算:系统应能根据职工的实际出勤、加班情况、请假情况等自动生成薪资,并能够灵活处理各类津贴和抠款。
3. 考勤管理:系统需要提供考勤记录的输入和查询功能,以便及时了解职工的工作情况。
4. 报表输出:系统需要能够生成各类工资报表,方便管理人员进行核对和统计。
5. 数据备份和恢复:系统应具备数据备份和恢复功能,以保证数据的安全性和完整性。
三、系统设计与技术选择在设计该系统时,应采用模块化、分层的设计思路,以便系统具有良好的可维护性和扩展性。
1. 界面设计:可以采用文本界面或图形界面进行设计,具体选择取决于系统的实际应用环境和用户需求。
2. 数据存储:可以选择采用文件系统或数据库来存储系统数据,常见的选择包括文本文件、CSV文件、SQLite数据库等。
3. 算法选择:需要根据系统的具体需求选择合适的算法来实现薪资核算和报表生成等功能。
4. 开发工具:可以选择C语言的集成开发环境(IDE)来进行开发,例如Visual Studio、Dev-C++等。
四、系统实现在进行系统开发时,需要按照设计要求逐步实现各个功能模块,同时进行严格的测试和调试工作,以确保系统的稳定性和准确性。
1. 职工信息管理模块:包括新增、修改、删除职工信息等功能。
2. 薪资核算模块:根据考勤情况自动生成薪资并进行津贴和抠款处理。
3. 考勤管理模块:提供考勤记录的输入和查询功能,确保数据的及时更新和准确性。
4. 报表输出模块:能够生成各类工资报表,包括月度工资表、年度工资统计表等。
c语言_职工工资管理系统设计

c语言_职工工资管理系统设计
职工工资管理系统是一种满足组织内部行政职能要求的系统。
它主要用于负责处理职工工资和社会保险的行政处理,致力于实现工资的合理控制,提供可靠的社会保障,维护公司和职员的权益。
职工工资管理系统的总体设计涉及到多个方面,包括职工信息管理、职工入职信息处理、职工调动及离职处理、职工考核信息处理、工资用工成本分析等。
职工信息管理:
主要包括对职工个人信息(包括基本情况、职称、工资等)、职工培训考核信息、职工出勤情况等进行管理及整理。
系统利用数据库,将这些信息统一储存,实现集中管理的目的,从而帮助用人单位对职工的资源进行全面了解,并能有效地实施人力资源政策。
职工入职信息处理:
系统提供职工入职信息处理和调整模块,用于处理职工入职注册信息,装订职工入职相关证明及存档备案,以保障组织职位管理及职员资料处理工作的准确性。
职工调动及离职处理:
职工调动及离职处理模块,是处理职工调动或离职变动的必要模块。
企业可利用系统的这一模块进行职工离职报告与合同变更、职工调动安排登记等工作,以保障职工权益的有效管理。
职工考核信息处理:
职工考核信息处理主要提供职工工作评价功能,实施对职工的定期考核,以便企业对职工培训和考核要求进行动态管理,实现培训及考核结果的连续有效跟踪。
工资用工成本分析:
工资用工成本分析模块,可以帮助企业实时监测用工和工资成本,实现工资控制,提高用工管理效率,增加经济效益,减少企业成本。
总之,职工工资管理系统的设计和实现能够有效的解决企业的业务管理需求,实现职工与组织之间健康、高效的沟通,为企业组织发展提供支持。
职工工资管理系统C语言精编版

职工工资管理系统C语言精编版MQS system office room 【MQS16H-TTMS2A-MQSS8Q8-MQSH16898】1、设计内容设计一个工资管理程序存储的数据包括:姓名,职工号,所属部门,基本工资,奖励工资,补贴项目及金额和扣款项目及金额。
功能:1)加入一个人的记录2)删除一个人的记录3)显示所有人的记录4)查询(包括按人名查询工资和按工号查询)5)统计功能(包括统计某一工资范围的人数和统计各部门的工资总数)6)修改功能2、设计目的1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4.掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
3、设计思路(包括所用的函数)deldelame,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salar y3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);i++;}}ame)==0){printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i]. ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4 ,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);}}}void ghcz()D)==0){printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i]. ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4 ,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);}}}void bmcz()epa)==0){printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i]. ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4 ,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);}}}delame)==0){for (j=i;j<Number-1;j++){wo[j]=wo[j+1];}Number--;}}D)==0){for (j=i;j<Number-1;j++){wo[j]=wo[j+1];}Number--;}}alary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;printf("%s的总工资为:%f\n",wo[i].name,sum[i]);}}void statistic()alary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;}for(i=0;i<Number;i++){n=sum[i]/1000;if (n>9) n=10;switch(n){case 0:sl[0]++;break;case 1:sl[1]++;break;case 2:sl[2]++;break;case 3:sl[3]++;break;case 4:sl[4]++;break;case 5:sl[5]++;break;case 6:sl[6]++;break;case 7:sl[7]++;break;case 8:sl[8]++;break;case 9:sl[9]++;break;case 10:sl[10]++;break;}}m=sa1/1000;switch(m){case 0:printf("工资在1000以下的人数为%d\n",sl[0]);break;case 1:printf("工资在1000到2000之间的人数为%d\n",sl[1]);break;case 2:printf("工资在2000到3000之间的人数为%d\n",sl[2]);break;case 3:printf("工资在3000到4000之间的人数为%d\n",sl[3]);break;case 4:printf("工资在4000到5000之间的人数为%d\n",sl[4]);break;case 5:printf("工资在5000到6000之间的人数为%d\n",sl[5]);break; case 6:printf("工资在6000到7000之间的人数为%d\n",sl[6]);break;case 7:printf("工资在7000到8000之间的人数为%d\n",sl[7]);break;case 8:printf("工资在8000到9000之间的人数为%d\n",sl[8]);break;case 9:printf("工资在9000到10000之间的人数为%d\n",sl[9]);break;case 10:printf("工资在10000以上的人数为%d\n",sl[10]);break;}}void bmtj()epa)==0){printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i]. ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4 ,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);sum=sum+wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4; }}printf("该部门的总工资为:%f\n",sum);}ame));elsebreak;}printf("\t姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\n");printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i]. ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4 ,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);printf("请重新输入该职工信息");printf("姓名:");scanf("%s", wo[i].name);printf("工号:");scanf("%s",wo[i].ID);printf("所属部门:");scanf("%s",wo[i].depa);printf("基本工资:");scanf("%d",wo[i].salary1);printf("奖励工资:");scanf("%d",wo[i].salary2);printf("补贴项目即金额:");scanf("%d", wo[i].salary3);printf("扣款项目及金额:");scanf("%d", wo[i].salary4);D));elsebreak;}printf("\t姓名\t工号\t所属部门\t基本工资\t奖励工资\t补贴项目及金额\t扣款项目及金额\t总工资\n");printf("\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i]. ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4 ,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);printf("请重新输入该职工信息");printf("姓名:");scanf("%s", wo[i].name);printf("工号:");scanf("%s",wo[i].ID);printf("所属部门:");scanf("%s",wo[i].depa);printf("基本工资:");scanf("%d",wo[i].salary1);printf("奖励工资:");scanf("%d",wo[i].salary2);printf("补贴项目即金额:");scanf("%d", wo[i].salary3);printf("扣款项目及金额:");scanf("%d", wo[i].salary4);...\n");}void back(){printf("\t===>按Enter键返回主菜单\n");}5.、运行结果****************职工工资管理系统**************** *☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆* ^^^^^^^^^^^^^^^[1]添加职工信息^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[2]查看职工信息^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[3]查找职工信息^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[4]删除职工信息^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[5]个人工资统计^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[6]统计职工工资^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[7]修改职工信息^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[8] 保存数据^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^[0] 退出系统^^^^^^^^^^^^^^^^^ *★★★★★★★★★★★★★★★★★★★★★★★* ====>请选择:输入一条记录信息:选择1,回车。
C语言课程设计工资管理系统

界面布局:检查界面布局是否合理,是否符合用户习惯 功能测试:测试各个功能模块是否正常工作,是否有错误提示 性能测试:测试系统的响应速度和稳定性,是否有卡顿现象
兼容性测试:测试系统在不同操作系统和浏览器上的兼容性,是否有显示异常
员工信息录入:包括姓名、性别、年龄、 职位、薪资等信息
员工信息删除:删除不再需要的员工信 息
测试目的:验 证系统功能是 否符合设计要
求
测试内容:功 能测试、性能 测试、安全性
测试等
测试方法:黑 盒测试、白盒 测试、灰盒测
试等
测试结果:列 出测试过程中 发现的问题及
解决方案
测试结论:对 系统的整体性 能和稳定性进
行评估
测试建议:针 对测试中发现 的问题提出改
进建议
硬件要求:服务器、网络设备、存 储设备等
部署步骤:安装操作系统、安装数 据库管理系统、安装Web服务器、 部署工资管理系统等
添加标题
添加标题
添加标题
添加标题
软件要求:操作系统、数据库管理 系统、Web服务器等
维护方案:定期备份数据、定期检 查系统运行情况、定期更新系统软 件等
系统运行环境:Windows、Linux等操作系统 硬件要求:CPU、内存、硬盘等 软件安装:安装C语言编译器、数据库管理系统等 系统维护:定期备份数据、更新软件、修复漏洞等
升级方式:自动升级或手动升级 升级内容:功能升级、性能升级、安全升级等 扩展方式:插件扩展、模块扩展、功能扩展等 扩展内容:增加新功能、优化性能、提高安全性等
汇报人:
排序算法:快速排序、归并排序、 堆排序等
图算法:最短路径、最小生成树等
添加标题
添加标题
添加标题
添加标题
c语言职工工资管理系统代码

c语言职工工资管理系统代码
(实用版)
目录
1.引言
2.系统功能介绍
3.系统设计与实现
4.系统测试与验证
5.总结
正文
一、引言
随着社会的快速发展,职工工资管理系统已经成为企事业单位不可或缺的一部分。
本文将介绍一个基于 C 语言编写的职工工资管理系统代码,以满足企事业单位对职工工资管理的需求。
二、系统功能介绍
该职工工资管理系统主要包括以下功能:
1.员工信息管理:用于添加、修改和删除员工的基本信息,如姓名、工号、性别、出生日期、职位、电话等。
2.工资信息管理:用于录入、修改和删除员工的工资信息,包括基本工资、绩效工资、奖金、扣款等。
3.查询功能:提供按工号、姓名、职位等多种条件查询员工信息及工资信息。
4.打印功能:支持打印员工工资单。
三、系统设计与实现
本系统采用 C 语言编写,利用结构体和文件操作实现员工信息和工资信息的存储和管理。
系统主要包括以下几个模块:
1.数据结构设计:定义员工结构体和工资结构体,用于存储员工信息和工资信息。
2.文件操作:实现员工信息和工资信息的存储和读取,采用文件存储数据,确保数据安全性。
3.功能模块:实现员工信息管理、工资信息管理、查询和打印功能。
四、系统测试与验证
为确保系统的正确性和可靠性,对系统进行了详细测试。
测试结果表明,本系统能够正确处理各种操作,满足用户需求。
五、总结
本文介绍了一个基于 C 语言编写的职工工资管理系统代码。
该系统具有简单易用、功能齐全、安全性高等特点,可满足企事业单位对职工工资管理的需求。
c语言课程设计报告 职工工资管理系统

一.设计需求说明一、职工工资管理系统功能设计要求1. 输入记录:将每一个职工的姓名、ID 号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
•该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资。
3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示。
4.查找记录:可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5. 删除记录:可删除数据文件中的任一记录。
6.恢复记录:能恢复被删除的任一记录。
7. 统计: (A) 计算各项工资平均工资及总工资, (B)•统计符合指定条件(如职工工资前三项之和在2000 元以上、2000~1500 元、1500~1000 元) 以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表及平均工资(•包括各项总的平均工资)。
8.保存数据文件功能。
9.打开数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
程序运行结果如下表所示(记录个数至少8 个)。
二.模块设计分析系统功能模块图:工作程序分析①输入:输入职工工资资料通过结构体的数组来进行操作,先头定义数组em[],先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部员工的资料输入,退出循环。
同时将数据储存在ckerk_list文件中并自动保存至磁盘。
注:如首次使用,尚未输入数据,请先输入数据。
输入的数据将自动保存。
再次选择输入功能时原数据将被覆盖。
②保存:将输入的资料存入磁盘读取文件clerk_list,若文件不存在,打印“打开失败并退出。
若存在,则通过循环语句将输入到结构体数组的数据逐个输入磁盘。
程序设计基础课程设计报告(c语言实现附源码)(员工工资管理系统)

《程序设计基础》课程设计报告题目: 员工工资管理系统院(系): 信息科学与工程学院专业班级:学生姓名:学号:指导教师:20 16 年 12 月 12 日至20 16 年 12 月 23 日武昌首义学院制程序设计基础课程设计任务书目录1需求与总体设计 (1)2详细设计 (1)3编码实现 (4)4运行结果 (21)总结 (24)1需求与总体设计1.1需求描述设计一个利用文件处理方式实现对员工工资(包括员工编号、员工姓名、年月、岗位工资、奖金、扣款和实发)进行管理,具有增加数据、更新数据、查询数据、删除数据、列表显示数据以及重组文件的功能。
1。
2总体设计先以登陆函数登陆,再进入主菜单,菜单中显示各个要实现的操作,以菜单将各个函数联系起来,对菜单操作以实现系统的目的.1。
3数据结构struct user //登陆者信息{char un[10];char up[10];}us[3] = { "aaa","111",”bbb”,”222",”ccc",”333" };struct yg //员工结构体{short zt; //数据状态long bh; //编号char name[20]; //名字char time[11]; //时间long money; //基本工资long jj; //奖金long kk; //扣款long sf; //实发工资};整个程序只运用了结构体的数据结构,结构体运用于登陆者信息和员工信息,将员工信息封装在一个结构体里,再创建结构体数组,将多个员工信息储存在结构体数组中。
2详细设计2.1 系统功能设计主函数和子函数:系统包含一个主函数,和子函数,分别有登陆子函数,菜单子函数,增加数据子函数,更新数据子函数,查询数据子函数,删除数据子函数,统计数据子函数,重组文件子函数,排序数据子函数,最后两个分别是读取文件和写入文件子函数。
C语言职工管理系统源代码及运行截图(简单版)

#include<stdio.h>#include<string.h>#define N 100typedef struct worker{char name[20];long number;int y,m,d;char zhicheng[20];char bumen[20];float salary;}Worker;void Display(){printf("\n\n\n\t\t***************职工管理系统*************\n\n");printf("\t\t\t0.退\t\t 出\n");printf("\t\t\t1.新\t\t 建\n");printf("\t\t\t2.显\t\t 示\n");printf("\t\t\t3.查\t\t 询\n");printf("\t\t\t4.删\t\t 除\n\n");}/*******1.新建**********/void Add( Worker w[],int n){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d: ",i+1);scanf("%s %ld %d %d %d %s %s %f",w[i].name,&w[i].number, &w[i].y,&w[i].m,&w[i].d,w[i].zhicheng,w[i].bumen,&w[i].salary);}}/*******2.显示**********/void Browse( Worker w[],int n ){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d:",i+1);printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);}}/*******3.1查询姓名**********/void SearchName( Worker w[],int n ){char name[20];int i;printf("\t\t\t输入要查询的名字:");scanf("%s",name);for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\t\t\t查无此人!");}/*******3.2查询工号**********/void SearchNumber( Worker w[],int n ){long number;int i,k=0;printf("\t\t\t输入要查询的工号:");scanf("%ld",&number);for( i = 0; i < n; i ++ ){if( w[i].number == number ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\n\t\t\t查无此人!");}/*******3.查询**********/void Search( Worker w[],int n ){int x;printf("\t\t\t选择查询方式(1.姓名/2.工号):");scanf("%d",&x);printf("\n");switch(x){case 1:SearchName(w,n);break;case 2:SearchNumber(w,n);break;}}/*******4.删除**********/void Delete( Worker w[],int n ){char name[20];int i,j;printf("\t\t\t输入要删除的名字:");scanf("%s",name);printf("\n");for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\t\t\t将删除以下信息:\n\n");printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("\t%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i]. m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);for( j = i;j<n-1;j++ ){w[j] = w[j+1];}printf("\t\t\t成功删除!\n\n");return;}}printf("\t\t\t查无此人!");}void Run( Worker w[],int n ){int choice;do{Display();printf("\t\t\t输入你的选择:");scanf("%d",&choice);printf("\n");switch( choice ){case 0:break;case 1:Add(w,n);break;case 2:Browse(w,n);break;case 3:Search(w,n);break;case 4:Delete(w,n);n--;break;}}while(choice);}void main(){int n;Worker w[N];printf("\t输入职员个数:");scanf("%d",&n);Run(w,n);}友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。
职工工资管理系统c语言程序设计

职工工资管理系统 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. 用户界面交互为了方便用户操作,可以设计一个简单的用户界面,使用控制台打印实现信息展示和输入。
c语言职工工资管理系统代码

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("未找到对应的员工信息。
c语言课程设计工资管理系统

c语言课程设计工资管理系统一、教学目标本章节的教学目标是使学生掌握C语言的基本语法,能够运用C语言编写简单的工资管理系统程序。
具体分为以下三个部分:1.知识目标:使学生掌握C语言的数据类型、变量、运算符、控制结构、函数等基本语法知识。
2.技能目标:培养学生运用C语言进行程序设计的能力,使学生能够独立编写并调试简单的工资管理系统程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和好奇心,提高学生解决问题的能力,培养学生的团队协作意识。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、变量、运算符、控制结构、函数等。
具体安排如下:1.C语言的基本语法和编程环境:介绍C语言的编程规范,熟悉集成开发环境(如Visual Studio、Code::Blocks等)。
2.数据类型、变量和运算符:整型、浮点型、字符型数据,变量的声明和初始化,算术运算符、关系运算符、逻辑运算符等。
3.控制结构:顺序结构、选择结构(if-else)、循环结构(for、while、do-while)等。
4.函数:函数的定义和声明,调用函数,函数的返回值,函数的参数传递等。
5.工资管理系统实例:设计并实现一个简单的工资管理系统程序,包括员工信息的录入、工资的计算和输出等功能。
三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式进行。
具体安排如下:1.讲授法:讲解C语言的基本语法、数据类型、变量、运算符、控制结构、函数等知识点,让学生系统地掌握C语言的基础知识。
2.案例分析法:通过分析实际的工资管理系统案例,让学生了解并掌握如何运用C语言解决实际问题。
3.实验法:让学生动手编写并调试工资管理系统程序,培养学生的实际编程能力和解决问题的能力。
四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备等。
具体安排如下:1.教材:选用权威、实用的C语言教材,如《C程序设计语言》(K&R)、《C Primer Plus》等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广东金融学院课程设计说明书设计题目职工工资管理系统学生姓名刘汉学号05141344 专业班级信息管理与信息系统三班指导教师侯昉职称教师2008 年10 月3目录一、前言 (1)二、课题要求、课题分析 (1)(一)课题要求 (1)(二)课题分析 (1)三、方案设定 (2)四、程序功能描述与模块结构 (2)(一)程序功能描述 (2)(二)功能模块 (2)(三)程序流程图 (3)四、用户使用说明 (6)五、测试结果 (7)六﹑程序经验教训总结 (12)七﹑附录 (13)一、前言C++语言是具有面向对象特性的C语言的继承者,即是由C语言演变而来,全面兼容C语言。
C语言的优点,如语言简洁灵活,运算符和数据结构丰富,具有结构化控制语句,程序执行效率高,同时具有高级语言与汇编语言的优点,这些在C++语言中同样能够体现出来。
但是C++语言最有意义的方面是支持面向对象的程序设计,在数据类型、算法的控制结构、函数等方面都有很好的体现。
面向对象编程中,对象是程序设计的基本单位,但对象的静态属性往往需要用某种类型的数据来表示,对象的动态属性要由成员函数来实现,面向函数的实现归根到底还是算法的设计。
二、课题要求、课题分析(一)课题要求《C++课程设计》通过综合运用在《C++程序设计》和《数据结构》中所学的程序结构、流程控制语句、数组、函数、指针、结构体、数据结构等知识,以简易“管理信息系统”程序设计为载体,以C++语言为工具,使我们更深地涉足计算机专业设计领域,并使所学知识和技能得到进一步巩固、深化和扩展,以达到能用C++编写初等程度软件的目的,为继续学习后续课程及今后走上相关工作岗位打下良好的基础。
经过调查分析,决定设计职工工资管理系统。
(二)课题分析职工工资管理系统可定位于企业会计系统的一个子系统,该系统主要完成的工作为:录入各职工自身及工资情况、对已经存在的数据的修改、删除、可查询、统计系统中的数据等。
为此因此职工工资管理系统的功能:读取文件信息、数据输入、显示、排序、查找、增加、删除、修改、保存等。
三、方案设定根据系统功能要求,采用结构体、数组、指针等数据类型并结合链表数据结构来完成设计。
在程序中定义了struct epployee的职工信息结构体、class Information的职工类、epployee *Information::creat(void)的职工链表信息及void Information::output()输出等函数,编写各相关的子函数的调用等。
四、程序功能描述与模块结构(一)程序功能描述通过主菜单Menu()函数将读取文件信息、输入、显示、统计、增加、删除、修改、查找、排序等函数结合一起,在用户通过相关操作选择其中一个功能时,调用该功能函数,完成数据处理。
在主函数中调用主菜单Menu()函数,完成操作。
用一个中间函数将主函数与各功能函数连接在一起,不仅使程序语言简洁、明了、易懂,而且在功能实现上也更加晚上。
(二)功能模块1.主函数int main(void):设置背景颜色和字体颜色、调用设计者的相关信息函数、调用Menu函数,实现系统的主要功能处理;2.主菜单Menu()函数:确定如何选择所需功能,调用读取文件信息、数据输入、显示、排序、查找、增加、删除、修改、保存等函数,完成职工工资管理系统的数据处理;3.读取文件的信息Read()函数:从文件中读取职工工资的信息表并显示出来;4.数据输入函数creat():建立链表,完成职工信息录入;5.数据显示函数output():将职工信息数据显示出来;6.数据统计函数count():统计职工人数;7.数据增加函数insert():添加职工信息;8.数据删除函数cancel():删除职工信息数据;9.数据修改函数modify():修改职工工资等信息数据;10.数据查找函数find():查找某一职工工资等信息情况;11.数据排序函数sort():将存储在文件中的职工信息按一定要求排序;12.数据保存函数save():对系统中的数据进行相关的操作后将其保存起来;13.作者信息函数editor():显示设计者的相关信息;14.登陆函数Pass():设定使用权限。
(三)程序流程图程序流程图主是对各功能模块的具体描述,以一种图表的方式简洁明了的将各模块的呈现出来,通过这些流程图可清楚的看出整个程序的运行过程,体会程序的流畅性。
1.主函数流程图图1-1主函数的流程图2.各子功能函数流程图图1-2 Menu函数流程图图1-3 删除函数的N-S流程图四、用户使用说明这是一个关于职工工资管理系统,具有输入、输出、统计、删除、查询、修改数据等功能,建立了一个含有姓名、性别、编号、工资、总工资等成员的结构体数据类型的变量struct epployee。
1.用户使用时,根据提示操作,进入登陆页面。
输入登陆名administrator,登陆密码administrator,进入操作系统。
如果登陆信息输错三次,自动退出系统。
2.按显示的数字选择操作,先输入职工数据,然后进行其他操作。
所以输入“1”,开始录入相关数据。
用户录入完数据后,在姓名处键以“#”,结束操作。
3.提取文件信息,输入数字“0”,回车确定操作,将系统以前操作过的保存的文件提取出来,并显示。
4.显示职工信息,输入数字“2”,将需显示的职工信息的编号输入,回车确定操作,系统提取相关数据并显示。
5.将输入的数据进行统计排序,输入数字“3”,回车确定操作,系统显示工资统计表、及各项工资的平均值。
6.查找职工工资,输入“4”,回车确定操作,系统显示“请输入要查找的编号”,输入想要查找的职工的编号,系统提取保存的数据,并显示出来。
7.增加职工工资,输入“5”回车确定操作,系统显示输入的页面,将需增加的职工信息输入,输入完后回车确定,系统显示成功插入,并显示职工工资信息表。
8.删除职工工资,输入“6”,回车确定操作,系统显示“请输入要删除的编号”,输入要删除的职工编号,系统将保存的数据删除,并显示剩余的职工工资信息表。
9.修改职工信息,输入“7”,回车确定操作,输入要修改的编号,系统显示该职工的信息,将改后的信息输入系统。
10.将所有操作过的信息保存,输入“8”,回车确定操作,系统显示成功保存信息。
11.退出系统,输入“9”,回车确定操作,系统显示退出的页面,输入任意一个键,退出系统。
(温馨提示:因时间的限制等原因,本程序内存设置还不够很完善,所以对于整个系统的使用应按照系统设置的顺序,一项项完成下来,方可不出现漏洞。
如果没按照顺序操作,可能会在使用的过程出现一些小差错。
)五、测试结果1.开始运行程序,进入系统页面,显示制作者的信息。
图2-1 显示制作者信息的页面2.任意键继续操作,进入登陆页面。
图2-2 登陆系统的页面输错管理员名字或者密码进入到的页面如下图2-3 登陆系统出错的页面3.成功进入操作系统,按照使用说明进行操作,进入的是总系统的提示页面。
图2-4 系统操作的页面图2-5 输入数据的页面图2-6 显示数据的页面图2-7 文件提取信息的页面图2-8 排序统计的页面图2-9 查找职工信息的页面图2-10 查找不到职工信息的页面图2-11 增加职工信息的页面图2-12 增加职工信息后并显示职工工资信息表的页面图2-13 删除职工信息并显示剩余职工信息的页面图2-14 修改职工信息的页面图2-15 成功修改职工信息的页面图2-16 修改没有编号职工信息的页面图2-17 保存所有数据的页面图2-18 退出系统的页面六﹑程序经验教训总结通过这个程序设计,我不仅提高了动手操作能力,对C++语言有了更深的认识,能够更好地运用C++语言进行编程设计,同时在思维、看待问题的全面性等方面也有了很大的提高。
不过由于时间、经验不够、对语言的掌握程度不深等问题,在这个系统设计还存在一些问题,比如内存设计还不够完善,整个系统的流畅性等,希望可以在今后的设计上能够解决这些问题,做的更好。
七﹑附录//职工成绩管理系统#include <iomanip>#include <iostream>#include <fstream>#include <malloc.h>#include <stdlib.h>#include <string.h>#define NULL 0int const N=20;#define LEN sizeof(struct epployee)using namespace std;int n=0; //定义一个全局变量统计职工人数//定义一个职工信息的结构体struct epployee{char name[N]; //用来存放姓名char sex[N]; //用来存放性别long id; //用来存放编号float paid[3]; //用来存放工资int total; //用来存放总工资struct epployee *next;};//职工类class Information{public:Information() ; //构造函数.~Information() ; //析构函数.epployee *creat(); //建立链表void output(epployee *head); //显示职工信息int count(epployee *head); //定义函数count()统计职工总数epployee *insert(epployee*head); //指针函数*insert()用来添加职工信息.epployee *cancel(epployee *head,long id); //指针函数*cancel()用来删除职工信息.epployee *find(epployee *head,long id); //指针函数*find()用来查找职工信息.epployee *modify(epployee *head,long id); //指针函数*modife()用来修改职工的信息.void sort(epployee *head); //定义paixu()函数将职工的总额从大到小排列并输出void average(epployee *head); //定义职工工资平均值的函数void save(epployee *head); //保存文件信息epployee *Read(); //读取文件信息private:epployee *p1,*p2,*p3,*head,st;};Information::Information(){cout<<"************************************************************************* *****\n";cout<<" ------------------------<<欢迎您使用职工工资管理系统>>------------------------\n";cout<<"************************************************************************* *****\n\n";}//作者的信息和提示void editor(){cout<<"\n\t\t\t本程序制作者:\n\n\t\t\tI don't know \n\n\t\t\tQQ : 895026504";cout<<"\n\n\t\t\tMade By VC6.0++\n\n\t\t\t2008年9月30日\n\n\t\t\t按<Enter>键进入登陆界面!!";cout<<"\n\n\t\t\t如果需要对原来的信息进行操作,则先选择0读取文件信息\n"<<endl;}Information::~Information(){ cout<<" ************************************************************************* *****\n";cout<<" ------------------------<<谢谢您使用职工工资管理系统>>------------------------\n";cout<<"************************************************************************* *****\n";}//建立链表信息epployee *Information::creat(void){//定义一个指向struct epployee的结构体指针函数*creat()用来录入职工信息.char ch[N];n=0; //用来存放职工姓名p1=p2=(epployee *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元cout<<" -------------<<请建立职工信息表,在姓名处键以# 结束输入!>>--------------"<<endl;cout<<"姓名:";cin>>ch;head=NULL; //给指针head赋初值while (strcmp(ch,"#")!=0) //调用字符比较函数strcmp()用来判断是否继续输入{p1=(epployee *)malloc(LEN); //调用malloc()函数用来开辟一个新的存储单元strcpy(p1->name,ch); //将循环结构前面输入的姓名复制到结构体名为p1的数组name中cout<<" 性别:";cin>>p1->sex;cout<<" 编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000) //判断输入的编号是否有效(100000个) {cout<<" 对不起,您的输入错误!请重新输入(>0<1000000): ";cin>>p1->id;}cout<<" 基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000) //判断输入的分数是否有效(>=0 <=100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[0];}cout<<" 加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000) //判断输入的分数是否有效(>=0 <=100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[1];}cout<<" 其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000) //判断输入的分数是否有效(>=0 <=100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[2];}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //计算总额if(n==0)head=p1; //如果是输入第一组职工信息就将指针p1赋给指针head else p2->next=p1; //否则将p1赋给p2所指结构体的next指针p2=p1; //将指针p1赋给指针p2n++; //将职工人数n的值加1cout<<"\n 姓名:";cin>>ch; //将输入的姓名存放到字符数组ch中}p2->next=NULL; //将p2所指结构体的next指针重新赋空值return (head);//将输入的第一组职工信息返回}//定义output()函数将职工的信息从头指针所指内容开始输出void Information::output(epployee *head){//system("cls");if(head==NULL) cout<<" 这是一个空表,请先输入职工信息!\n";else{cout<<"-------------------------------------------------------------------------------\n";cout<<" *职工工资信息表*\n";cout<<"-------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n";cout<<"-------------------------------------------------------------------------------\n";p1=head; //将头指针赋给pdo{cout<<setw(6)<<p1->id<<setw(14)<<p1->name<<setw(11)<<p1->sex<<setw(11)<<p1->paid[0]<<setw(15)<<p1->paid[1]<<setw(13)<<p1->paid[2]<<setw(13)<<p1->total<<endl;cout<<"-------------------------------------------------------------------------------\n";p1=p1->next; //将下一组职工信息的next指针赋给p}while(p1!=NULL); //若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.}}//统计职工人数的函数int Information::count(struct epployee *head) //定义函数count()统计职工总数{if(head==NULL)return(0); //若指针head为空返回值为0 else return(1+count(head->next)); //函数的递归调用}//添加职工的成绩的函数epployee *Information::insert( epployee *head)//插入新结点定义一个指向struct epployee的结构体指针函数*insert()用来添加职工信息.{//system("cls");cout<<"\t----------------<<请输入新增职工成绩信息>>----------------\n"<<endl;p1=(epployee *)malloc(LEN); //使p1指向插入的新结点cout<<" 编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->id; //将输入的编号存放到p1所指结构体的数组id中}cout<<" 姓名:";cin>>p1->name; //将输入的姓名存放到结构体名为p1的数组name中cout<<" 性别:";cin>>p1->sex;cout<<" 基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[0]; //将输入的基本工资存放到p1所指结构体的数组paid中}cout<<" 加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[1]; //将输入的加班工资存放到p1所指结构体的数组paid中}cout<<" 其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[2]; //将输入的其他奖金存放到p1所指结构体的数组paid中}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总分p2=head; //将头指针赋给p2if(head==NULL) //若没调用次函数以前的头指针head为空{head=p1;p1->next=NULL;} //则将p1赋给头指针head并将p1所指结构体成员指针next赋空值else{while((p1->id>p2->id)&&(p2->next!=NULL)){p3=p2; //p3指向原p2指向的结点p2=p2->next;} //p2后移一个结点if(p1->id<=p2->id){if(head==p2){p1->next=head;head=p1;} //插入到第一个结点之前else{p3->next=p1;p1->next=p2;} //插入到p3所指结点之后}else{p2->next=p1;p1->next=NULL;} //插入到尾结点之后}n++; //将职工人数加1cout<<"\t----------------<<你输入的职工信息已经成功插入>>----------------"<<endl;return (head);}//删除职工信息epployee *Information::cancel(epployee *head,long id) //定义一个指向struct epployee的结构体指针函数*delete()用来删除考生信息.{system("cls");if(head==NULL) //若调用次函数以前的头指针head为空{return(head);}else{p1=head; //否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL) //寻找要删除的结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p2=p1;p1=p1->next;} //p2指向原p1指向的结点p1后移一个结点if(id==p1->id) //如果输入的职工编号是p1所指的职工编号//结点找到后删除{if(p1==head) head=p1->next; //如果head指针和p1指针相等则将下一个结点赋给指针headelsep2->next=p1->next; //否则将p1所指结点赋给p2所指结点将要删除的职工信息跳过去cout<<" 删除编号为"<<id<<"的职工\n";n--; //将职工人数减1}return(head); //将头指针返回}}/**************************修改职工数据**************************/epployee *Information::modify(epployee *head,long id){//system("cls");cout<<"\t----------------<<请输入须修改的职工工资信息>>----------------\n"<<endl;p1=(epployee *)malloc(LEN); //使p1指向输入的结点p1=head; //否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL)//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p1=p1->next; //p2指向原p1指向的结点p1后移一个结点}if(id==p1->id) //如果要查找的职工编号是p1所指的职工编号{cout<<"你需要修改的职工信息如下:\n";cout<<"------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n";cout<<"------------------------------------------------------------------------------\n";cout<<setw(6)<<p1->id<<setw(10)<<p1->name<<setw(10)<<p1->sex<<setw(10)<<p1->paid[0]<<setw(15)<<p1->paid[1]<<setw(12)<<p1->paid[2]<<setw(12)<<p1->total<<endl;cout<<"------------------------------------------------------------------------------\n";cout<<" 编号:";cin>>p1->id;while((p1->id)<0||(p1->id)>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->id; //将输入的编号存放到p1所指结构体的数组id中}cout<<" 姓名:";cin>>p1->name; //将输入的姓名存放到结构体名为p1的数组name中cout<<" 性别:";cin>>p1->sex;cout<<" 基本工资:";cin>>p1->paid[0];while((p1->paid[0])<0||(p1->paid[0])>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[0]; //将输入的基本工资存放到p1所指结构体的数组paid中}cout<<" 加班工资:";cin>>p1->paid[1];while((p1->paid[1])<0||(p1->paid[1])>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[1]; //将输入的加班工资存放到p1所指结构体的数组paid中}cout<<" 其他奖金:";cin>>p1->paid[2];while((p1->paid[2])<0||(p1->paid[2])>100000){cout<<" 对不起,您的输入错误!请重新输入(>0<100000): ";cin>>p1->paid[2]; //将输入的其他奖金存放到p1所指结构体的数组paid中}p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2]; //计算总分}elsecout<<" 需要修改的信息中没有编号为"<<id<<"的职工.\n\n"; //没有想要修改的结点信息getchar();return(head);}//查找职工信息epployee *Information::find(epployee *head,long id)//定义一个指向struct epployee的结构体指针函数*find()用来查找职工信息.{//system("cls");if(head==NULL) //若调用次函数以前的头指针head为空{cout<<" 这是一个空表,请先输入职工信息!\n";return(head);}else{p1=head; //否则将头指针赋给p1while(id!=p1->id&&p1->next!=NULL)//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空{p1=p1->next; //p2指向原p1指向的结点p1后移一个结点}if(id==p1->id) //如果要查找的职工编号是p1所指的职工编号{cout<<"------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n";cout<<"------------------------------------------------------------------------------\n";cout<<setw(6)<<p1->id<<setw(10)<<p1->name<<setw(10)<<p1->sex<<setw(10)<<p1->paid[0]<<setw(14)<<p1->paid[1]<<setw(12)<<p1->paid[2]<<setw(12)<<p1->total<<endl;cout<<"------------------------------------------------------------------------------\n";}elsecout<<"信息中没有编号为"<<id<<"的职工.\n"; //结点没找到return(head);}}//定义sort()函数将职工的工资总额从大到小排列并输出void Information::sort(epployee *head){//system("cls");int i,k,m=0,j;epployee *p[N];//定义一个指向struct epployee的结构体指针数组pif(head!=NULL)//如果头指针是空则继续{ m=count(head);cout<<"------------------------------------------------------------------------------\n";cout<<" *职工工资统计表*\n";cout<<"------------------------------------------------------------------------------\n";cout<<"|编号| |姓名| |性别| |基本工资| |加班工资| |其他奖金| |总额| |名次|\n";cout<<"------------------------------------------------------------------------------\n";p1=head;for(k=0;k<m;k++){p[k]=p1;p1=p1->next;}for(k=0;k<m-1;k++) //选择排序法for(j=k+1;j<m;j++)if(p[k]->total<p[j]->total){p2=p[k];p[k]=p[j];p[j]=p2;} //从大到小排列的指针for(i=0;i<m;i++){cout<<setw(6)<<p[i]->id<<setw(8)<<p[i]->name<<setw(9)<<p[i]->sex<<setw(10)<<p[i]->paid[0]<<setw(10)<<p[i]->paid[1]<<setw(15)<<p[i]->paid[2]<<setw(11)<<p[i]->total<<setw(10)<<i+1<<endl;cout<<"------------------------------------------------------------------------------\n";}}}//求各工资的平均值的函数void Information::average(epployee *head){int k,m;float arg1=0,arg2=0,arg3=0;if(head==NULL)//如果头指针是空则继续{cout<<" 这是一个空表,请先输入职工信息!\n";}else{m=count(head);p1=head;for(k=0;k<m;k++){arg1+=p1->paid[0];arg2+=p1->paid[1];arg3+=p1->paid[2];p1=p1->next;}arg1/=m;arg2/=m;arg3/=m;cout<<" *各项工资的平均值*\n";cout<<"------------------------------------------------------------------------------\n";cout<<"\t\t基本工资的平均值: "<<setw(4)<<arg1<<"\n"<<"\t\t加班工资的平均值: "<<setw(4)<<arg2<<"\n"<<"\t\t奖金的平均值: "<<setw(4)<<arg3<<"\n";cout<<"------------------------------------------------------------------------------\n";}}//保存函数.void Information::save(epployee *head){//system("cls");ofstream out("data",ios::out);out<<count(head)<<endl;while(head!=NULL){ out<<head->name<<"\t"<<head->id<<"\t"<<"\t"<<head->sex<<"\t"<<head->paid[0]<<"\t"<<head->paid[1]<<"\t"<<head->paid[2]<<"\t"<<head->total<<endl;head=head->next;}}//读取文件的信息epployee *Information::Read(){//system("cls");int i=0;p1=p2=( epployee *)malloc(LEN);head=NULL;ifstream in("data",ios::out);in>>i;if(i==0){cout<<" data 文件中的数据为空,请先输入数据!"<<endl; return 0;} else {cout<<"\n原文件已保存的信息如下:\n";cout<<" ………………………………………………………………………………………………"<<endl;cout<<"|姓名| |编号| |性别| |基本工资| |加班工资| |其他奖金| |总额|\n";cout<<" ………………………………………………………………………………………………"<<endl;for(;i>0;i--){p1=(epployee *)malloc(LEN);in>>>>st.id>>st.sex>>st.paid[0]>>st.paid[1]>>st.paid[2]>>st.total;strcpy(p1->name,);p1->id=st.id;strcpy(p1->sex,st.sex);p1->paid[0]=st.paid[0];p1->paid[1]=st.paid[1];p1->paid[2]=st.paid[2];p1->total=st.total;if(n==0)head=p1; //如果是输入第一组职工信息就将指针p1赋给指针headelse p2->next=p1; //否则将p1赋给p2所指结构体的next指针p2=p1; //将指针p1赋给指针p2n++; //将n的值加1//显示读入数据cout<<" "<<p1->name<<"\t"<<p1->id<<" \t"<< p1->sex <<" \t"<< p1->paid[0] <<" \t"<< p1->paid[1] <<" \t"<< p1->paid[2] <<" \t"<< p1->total<<endl;cout<<" ………………………………………………………………………………………………"<<endl;}cout<<" 数据已经成功读取完毕!\n\n"<<endl;p2->next=NULL;return (head);}}//菜单void Menu(){Information person;epployee *head=NULL;int choice;long i;do{cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ _ _ 欢迎进入职工成绩统计管理_ _ ~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<e ndl;cout<<"\t"<<endl;cout<<"\t 相关操作选项"<<endl;cout<<"\t"<<endl;cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※"<<e ndl;cout<<"\t※~v~ 0. 读取文件信息~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 1. 职工数据输入~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 2. 显示职工工资~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 3. 排序统计工资~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 4. 查找职工工资~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 5. 增加职工工资~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 6. 删除职工工资~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 7. 修改职工信息~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 8. 成功保存信息~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※~v~ 9. 安全退出系统~v~ ※"<<endl;cout<<"\t※※"<<endl;cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"<< endl;cout<<" 请输入您的选择(0--9):";cin>>choice;while(choice<0||choice>9){cout<<" 对不起,您的输入错误!请输入您的选择(0--9): ";cin>>choice;}switch(choice){case 0:head=person.Read();break;case 1:head=person.creat();break;case 2:person.output(head);break;case 3:person.sort(head); person.average(head);cout<<" 参加工作的职工人数为:"<<person.count(head)<<"人\n\n";break;case 4:cout<<" 请输入要查找的编号:";cin>>i;while(i<0||i>100000){cout<<" 对不起,您的输入错误!请重新输入: ";cin>>i;}person.find(head,i);break;case 5:head=person.insert(head);person.output(head);break;case 6:cout<<" 请输入要删除的编号:";cin>>i;while(i<0||i>100000){cout<<" 对不起,您的输入错误!请重新输入: ";cin>>i;}head=person.cancel(head,i);person.output(head);break;case 7:cout<<" 请输入要修改的编号:";cin>>i;while(i<0||i>100000){cout<<" 对不起,您的输入错误!请重新输入: ";cin>>i;}person.modify(head,i);break;case 8:cout<<"信息已经成功保存!"<<endl;person.save(head);break;case 9:system("cls");break;default :cout<<" 对不起,您的输入错误!请重新输入:\n";break;}}while(choice!=9);}//管理员登陆void Pass(){char UserName[15];char Passward[15];int i=1;cout<<"****************************************************************** **********\n";cout<<"\n\t为保护职工成绩信息,只有管理员才可以进行管理!\n";cout<<"\n\t管理员名和登陆密码都只有3次机会,如果超过将自动退出系统!\n\n";cout<<"****************************************************************** **********\n";cout<<"\n请输入管理员名:";cin>>UserName;while (strcmp(UserName,"administrator")!=0) {if(i>=3)exit(0); //超过3次则登陆失败,退出系统i++;cout<<"\n管理员名无效!请重新输入:";cin>>UserName;}cout<<"\n请输入密码:";cin>>Passward;while(strcmp(Passward,"administrator")!=0){if(i>=3)exit(0); //超过3次则登陆失败,退出系统i++;cout<<"\n密码输入错误!请重新输入:"<<endl; cin>>Passward;}cout<<"\n\t\t欢迎管理员的到来!!!!!\n"<<endl; }//主函数.int main(void){system("color d "); //设置背景色和字体颜色editor();system("PAUSE"); //系统暂停system("cls"); //系统清屏Pass();system("PAUSE");system("cls");Menu();return 0;}。