09黄石理工C课程设计职工工资管理系统_第1页
09黄石理工C课程设计职工工资管理系统_第2页
09黄石理工C课程设计职工工资管理系统_第3页
09黄石理工C课程设计职工工资管理系统_第4页
09黄石理工C课程设计职工工资管理系统_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计设计题目:职工工资管理系统学生姓名:as学生学号:200940410106专业班级:09计科(1)指导教师:祁文青2011-12-20、前言1二、课题要求、课题分析错误!未定义书签。()课题要求2(-)课题分析2三、方案设定错误!未定义书签。程序功能描述与模块结构(-)程序功能描述4()功能樓块4(三)程序流程图5四、用户使用说明8五、测试结果9六、程序经验教训总结14七、附录15、前言c+语言是具冇而向对象特性的c语言的继承者,即是由c语言演变而来,全而 兼容c语言。c语言的优点,如语言简洁灵活,运算符和数据结构丰富,具冇结构化 控制语句,程序执行效率高,同时具冇高级语言与汇编语言的

2、优点,这些在c+语言 屮同样能够体现出来。但是c+语言最冇意义的方而是支持而向对彖的程序设计,在 数据类型、算法的控制结构、函数等方而都冇很好的体现。而向对象编程屮,对彖是 程序设计的基本单位,但对象的静态屈性往往需耍用某种类型的数据来表示,对象的 动态屈性耍由成员函数来实现,而向函数的实现归根到底述是算法的设计。二、课题要求、课题分析(-)课题要求c+课程设计通过综合运用在c+程序设计和数据结构屮所学的程序 结构、流程控制语句、数组、函数、指针、结构体、数据结构等知识,以简易“管理 信息系统”程序设计为载体,以c+语言为工具,使我们更深地涉足计算机专业设计 领威,并使所学知识和技能得到进一步

3、巩同、深化和扩展,以达到能用c+编写初等 程度软件的目的,为继续学习后续课程及今后走上相关工作岗位打下良好的基础。经过调查分析,决定设计职工工资管理系统。创建存储职工工资信息的存储文件。添加某职工的工资信息。删除某职工的工资 信息。修改某职工的部分工资信息(当月开始增加或减少某些项工资或扣款数变化)。 输岀指定编号职工的工资信息(查询用)。输出全体职工的工资信息(发工资用)。(-)课题分析职工工资管理系统可定位于企业会计系统的一个子系统,该系统主要完成的工作 为:录入各职工自身及工资情况、对已经存在的数据的修改、删除、可查询、统计系 统屮的数据等。为此因此职工工资管理系统的功能:读取文件信息、

4、数据输入、显示、 排序、查找、增加、删除、修改、保存等。三、课程设计内容及进度安排(-)课题内容:该系统在磁盘上存储了某单位全体职工的工资信息。对于每位职工存储以下信 息:职工编号、基木工资、津贴、岗贴、补贴、应发数、个人所得税、应扌ii数、实发 数。个人所得税计算方法设为:工资少于1100元的部分为0, 1100-1600元部分为 5%, 16002600 部分为 10%, 26003600 部分为 15%, 5600 元以上部分为 20%。(-)课题要求:1. 分析问题,给出数学模型,选择数据结构.2. 设计算法,给出算法描述3. 给出源程序清单4. 编辑、编译、调试源程序5. 撰写课程设

5、计报告us程序功能描述与模块结构(一) 程序功能描述通过主菜单displayo函数将读取文件信息、输入、显示、统计、增加、删除、 修改、查找、排序等函数结合一起,在用户通过相关操作选择其中一个功能时,调用 该功能函数,完成数据处理。在主函数中调用主菜单diplayo函数,完成操作。用一 个屮间函数将主函数与各功能函数连接在一起,不仅使程序语言简洁、明了、易懂, 而且在功能实现上也更加晚上。(二) 功能模块1. 主函数int main():设置背景颜色和字体颜色、调用设计者的相关信息函数、调 用display函数,实现系统的主要功能处理;2. 主菜单dispiay()函数:确定如何选择所需功能,

6、调用读取文件信息、数据输入、 显示、排序、查找、增加、删除、修改、保存等函数,完成职工工资管理系统的数据 处理;3. 读取文件的信息read()函数:从文件中读取职工工资的信息表并显示出来;4数据输入函数shuru():建立链表,完成职工信息录入;5. 数据显示函数diaplayo:将职工信息数据显示出来;6. 数据统计函数tongji():统计职工人数;7. 数据增加函数tianjia():添加职工信息;8. 数据删除函数shanchu():删除职工信息数据;9. 数据修改函数xiugai():修改职工工资等信息数据;10. 数据查找函数chazhao():查找某一职工工资等信息情况;11数

7、据保存函数save():对系统中的数据进行相关的操作后将其保存起来;12.作者信息函数editor():显示设计者的相关信息;13登陆函数passo:设定使用权限。(三)程序流程图程序流程图主是对齐功能模块的具体描述,以一种图表的方式简洁明了的将各模 块的呈现出来,通过这些流程图可清楚的看出整个程序的运行过程,体会程序的流畅 性。1.主函数流程图图1-1主函数的流程图2.各子功能函数流程图图1-2 menu函数流程图五、用户使用说明这是一个关于职工工资管理系统,具冇输入、输出、统计、删除、查询、修改数 据等功能,建立了一个含有姓名、性别、编号、工资、总工资等成员的结构体数据类 型的变量stru

8、ct xinxi o1. 用户使用时,根据捉示操作,进入登陆页而。输入登陆名ltf,登陆密码ltf, 进入操作系统。如果登陆信息输错三次,自动退出系统。2. 按显示的数字选择操作,先输入职工数据,然后进行其他操作。所以输入“1”, 开始录入相关数据。用户录入完数据后,在姓名处键以“0”,结束操作。3. 提取文件信息,输入数字“9”,回车确定操作,将系统以前操作过的保存的 文件提取出来,并显示。4. 显示职工信息,输入数字“3”,将需显示的职工信息的编号输入,回车确定 操作,系统提取相关数据并显示。5将输入的数据进行统计排序,输入数字“7”,回车确定操作,系统显示工资 统计表、及各项工资的平均值

9、。6. 查找职工工资,输入“4”,回车确定操作,系统显示“请输入耍查找的编号”, 输入想耍查找的职工的编号,系统提取保存的数据,并显示出来。7. 增加职工工资,输入“6”回车确定操作,系统显示输入的页而,将需增加的 职工信息输入,输入完后回车确定,系统显示成功插入,并显示职工工资信息表。8. 删除职工工资,输入“5”,回车确定操作,系统显示“请输入耍删除的编号”, 输入要删除的职工编号,系统将保存的数据删除,并显示剩余的职工工资信息表。9. 修改职工信息,输入“2”,回车确定操作,输入要修改的编号,系统显示该 职工的信息,将改后的信息输入系统。10将所冇操作过的信息保存,输入“8”,回车确定操

10、作,系统显示成功保存信11 退出系统,输入“0”,回车确定操作,系统显示退出的页而,输入任意一个 键,退出系统。(温馨捉示:因时间的限制等原因,本程序内存设置还不够很完善,所以对于整 个系统的使用应按照系统设置的顺序,一项项完成下来,方可不出现漏洞。如果 没按照顺序操作,可能会在使用的过程岀现一些小差错。)六、测试结果1. 开始运行程序,进入系统页而,显示制作者的信息。本程序制作者:i don't: knowqq : 895026504made by uc6.0-2008年9月30日<entei*>键进入登陆界面m如果需要对原来的信息进行操作,则先选择砺卖取文件信息 青按任

11、意键继续.图2-1显示制作者信息的页面2. 任意键继续操作,进入登陆页而。为保护职工成绩信息.只有管理员才可以进行管理, 管理员名和登陆密码都只有3次机会.如果超过将自动退出系统?请输入管理员名:administrator请输入 ?9| =admint istrator图2-2登陆系统的页面 输错管理员名字或者密码进入到的页而如下n*mfm*xmxxx m mx xx )(x*)(*x)(o(*xko(*x*)(xxxm mxk-xm*mxx k xxx kfxxk-*xxk-)(*xk)()()(k-)()()(x-x)gmm为保护职工成绩信息只有管理员才可以逬行管理?管理员名和登陆密码都只

12、有3次机会如果超过将自动退出系统?青输入管理员名:admin ist rat or 倚输入密码:adnintistrator ”码输入错误?请重新输入: kdmin istrator_图2-3登陆系统出错的页面3. 成功进入操作系统,按照使用说明进行操作,进入的是总系统的捉示页而。«欢迎您使用职工工资管理系统”怨 孤 严_ _欢迎进入职工成绩统计管理_ _ 严孤磁 相关操作选项磁u0.读取文件信息u1-职工数据输入2显示职工工资3排序统计工资z旷4查找职工工资5增加职工工资6删除职工工资u?修改职工信息y8成功保存信息9安全退出系统磁请输入您的选择<0-9 > =图2-4

13、系统操作的页面?.by:001 基本工:1500 加班工贫:500 其他奖金:300信息表,在姓名处犍以«结車输入?”图2-5输入数据的页面;编号; :姓名; 唯别;:基本工资;加班工资;:其他奖金; ;总额;2李四女10008004002200图2-6显示数据的页面请输入您的选择09:0 罠文件己保存的信息如下:姓名!;编号::性别:基本工资:加班工资;:其他奖金;总额张三 1男1500s003002300李四 2女12008005002500数据己经成功读取龙毕,图2-7文件提取信息的页面请输入您的选择0-9=3”职工工资统计表”编号11姓名«性别11基本工资;1加班工

14、资11其他奖金;;总额11名次1张三男1500500300230012李四女100080040022002齐各项工资的平均值兴1250650参加工作的职工人数为:2人图2-8排序统计的页面;编号; :姓名;性别;:基本工斷 ;加班工资;:其他奖金;总额;2李四女10008004002200图2-9查找职工信息的页面信息中没有编寻为3韵职工.图2-10查找不到职工信息的页面图2-11增加职工信息的页面呉职工工资信息表;编号;;姓名;;性别:;基本工资;;加班工资:其他奖金;j总额«3001张三男150050030022002李四女100680040025005干百男1606500400

15、2图2-12增加职工信息后并显示职工工资信息表的页面删除编号为5的职工1600500400请输人您旳远拝09 >: 5«请输入新增职工成绩信息>>五资资金汚湊工工奖 号名别本常 编姓性基加其;帚审;茁£亦茹;i玉壬赢;亦di壬焉厂龜萸石 正亦1 张三002 李四女1000800400200图2-13删除职工信息并显示剩余职工信息的页面请输入您的选择< 09: 7请侖入要條改的编号:2 «请输入须修改的职工工资信息”尔需要修改的职工信息如下:编号;姓名;性别;李四;基本工资;:加班工资:其他奖金;2200图2-14修

16、改职工信息的页面«请输入须修改的职工工资信息”尔需要修改的职工信息如下:?sts7"stst 一一;箕福萸&;编号;姓名;李四10008004002200编号=2 姓名二李四基本工资注200加班工寮:8 00苴 tth?:500图2-15成功修改职工信息的页面请揄入您的选择0-9:7请输入要修改芮编号活 请输入须修改的职工工资信息需要修改的信息中没有编号为9的职工.图2-16修改没有编号职工信息的页面图2-17保存所有数据的页面图2-18退出系统的页面七. 程序经验教训总结通过这个程序设计,我不仅提高了动手操作能力,对c+语言冇了更深的认识, 能够更好地运用c+语言

17、进行编程设计,同时在思维、看待问题的全而性等方而也冇 了很大的提高。不过由于时间、经验不够、对语言的掌握程度不深等问题,在这个系 统设计述存在一些问题,比如内存设计述不够完善,整个系统的流畅性等,希望可以 在今后的设计上能够解决这些问题,做的更好。九.附录/职工成绩管理系统#include <iomanip>#include <iostream>#include <fstream>#include <malloc.h>#include <stdlib.h>#include <string.h>#define null 0i

18、nt const n=20;#define len sizeof(struct epployee)using namespace std;int n=0;/定义一个全局变量统计职工人数/定义一个职工信息的结构体struct epployeechar namen;/用来存放姓名char sexn;/用来存放性别long id;float paid3;int total;/用来存放编号/用来存放工资/用来存放总工资struct epployee *next;/职工类class information public:/构造函数./析构函数.information();information();ep

19、ployee *creat();/建m链表void output(epployee *hcad);/显示职工信息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(ep

20、ployee *head,long id); /指针函数*modifc ()用来修改职工/定义paixu ()函数将职工的总额从大/定义职工工资平均值的函数/保存文件信息/读取文件信息的信息.void sort(epployee * head);到小排列并输出void average(epployee *head);void save(epployee *head); epployee *read();private:epployee *p 1 ,*p2,*p3,*head,st; ;information: :information()cout«h* *y cout«&q

21、uot; «欢迎您使用职工工资管理系统»nn;cout«"* *5口讥作者的信息和提示void editor()cout«"nttt 本程序制作者:nntttl don't know nntttqq : 895026504”;cout«nnntttmade by vc6.0+nnttt2008 年 9 月 30 b nnttt 按venter>键 进入登陆界面! !;cout«"nnttt如果需要对原来的信息进行操作,则先选择0读取文件信息nn«endl;information:i

22、n formation()cout«h* * cout«n «谢谢您使用职工工资管理系统»nn;cout«nki ki ki ki* *n“/建立链表信息epployee information: :creat(void)/定义一个指向struct epployee的结构体指针函数*creat()用来录入职工信息. char chn;n=0;/用来存放职工姓名p 1 =p2=(epployee *)malloc(len);/调用malloc()函数用来开辟一个新的存储单元 cout«" «请建立职工信息表,在姓名处

23、键以#结束输a!»-"«endl;cout«n 姓名:;cin»ch;head=null;/给指针head赋初值while (strcmp(ch,"#")!=0)/调用字符比较函数strcmpo用來判断是否继续输入pl=(epployee *)malloc(len);/调用 malloc ()函数用来开辟一个新的存储单元strcpy(p 1 ->name,ch);/将循环结构前而输入的姓名复制到结构体名为pl的数组name中cout«z,性别:;cin»pl->sex;cout«&q

24、uot;编号:"cin»pl->id;while(p 1 ->id)<oii(p 1 ->id)> 100000)判断输入的编号是否有效(100000 个)cout«n对不起,您的输入错误!请重新输入(>0< 1000000): ”;cin»pl->id;cout«"基本工资:";cin»pl->paid0;while(p 1 ->paid0)<0ll(p 1 ->paid0)> 100000)判断输入的分数是否有效(>=() &l

25、t;=100000)cout«n对不起,您的输入错误!请重新输入(>0<100000): ”;cin»pl->paid0;cout«n加班工资:”;cin»pl->paidl;while(p 1 ->paid l)<0ll(p 1 ->paidl)> 100000)判断输入的分数是否有效(>=0 <=100000)cout«n对不起,您的输入错误!请重新输入(>0<100000): ”;cin»pl->paidl;cout«"其他奖金:”

26、;cin»pl->paid2;while(p 1 ->paid2)<0ll(p 1 ->paid2)> 100000)判断输入的分数是否有效(>=0 <=100000)cout«n对不起,您的输入错误!请重新输a(>0< 100000): ”;cin»pl->paid2;p 1 ->total=p 1 ->paido+p 1 ->paid l+pl ->paid2;计算总额if(n=o)head=pl;如果是输入第一组职工信息就将指针pl赋给指针headelse p2->ne

27、xt=p 1; 否则将pl赋给p2所指结构体的next指针 p2=p 1;将指针p 1赋给指针p2时+;将职工人数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«&q

28、uot;这是一个空表,请先输入职工信息!n”; elsecout«"n"cout«" *职工工资信息表*11”;cout«"n"cout«"l编号i i姓名ii性别ii基本工资i i加班工资i i其他奖金ii总额ln“;cout«"n"pl=head;将头指针赋给pdocout«setw(6)«p 1 ->id«setw( 14)«p 1 ->name«setw( 11 )«p 1 >se

29、x«setw(l 1 )«p 1 ->paid0«setw( 15)«p 1 > paidl«setw(l 3)«p 1 ->paid2«setw( 13)«p 1 >total«endl;cout«"-nn;pl=pl->next;将卜一组职工信息的next指针赋给pwhile(pl!=null);若指针p非空则继续,口的是把所有的职工信息都传给指针p然后输出.统计职工人数的函数int information:count(struct epployee

30、*head)定义函数 count()统计职工总数if(head=null)return(o);若指针 head 为空返回值为 0else return( 1 +count(head->next);函数的递归调用添加职工的成绩的函数epployee *information:insert( epployee *head)插入新结点定义一个指向struct epployee的结构体指针函数*inseh()用来添加职 工信息./system("cls");cout«"tvv请输入新增职工成绩信息>>n"«endl;pl=(

31、epployee *)malloc(len); 使 pl 指向插入的新结点 cout«"编号:";cin»pl->id;while(pl ->id)<()ll(p 1 ->id)> 100000)cout«n对不起,您的输入错误!请重新输入(>0<100000): ”;cin»pl->id;将输入的编号存放到pl所指结构体的数组id小cout«n 姓名:”;cin»pl->name;将输入的姓名存放到结构体名为pl的数组name中cout«n 性别:”

32、;cin»pl->sex;cout«"基本工资:";cin»pl->paido;while(pl->paid 0 )<0l l(p 1 ->paid0 )> 100000)cout«n对不起,您的输入错误!请重新输入(>0<100000): ”;cin»pl->paid0;将输入的基木工资存放到pl所指结构体的数组paid中cout«n加班工资:”;cin»pl->paidl;while(pl ->paid l)<0ll(p 1 -&

33、gt;paid 1)>100000)cout«n对不起,您的输入错误!请重新输a(>0< 100000): ”;cin»pl->paidl;将输入的加班工资存放到pl所指结构体的数组paid 'i1cout«"其他奖金:”;cin»p 1 ->paid2;while(pl->paid2)<0ll(pl->paid2)>100000)cout«n对不起,您的输入错误!请重新输入(>0<100000): ”; cin»pl->paid2;将输入的他奖

34、金存放到pl所指结构体的数组paid 'i1p 1 ->total=p 1 ->paid0+p 1 ->paidl+p 1 ->paid2;计算总分p2=head;将头指针赋给p2if(head=null) 若没调用次函数以而的头指针head为空head=p 1 ;p 1 ->next=null;则将pl赋给头指针head并将pl所指结构体成员指针next赋空值elsewhile(p 1 ->id>p2->id)&&(p2->next! =null)p3=p2;/p3指向原p2指向的结点p2=p2->next;

35、/p2后移一个结点if(pl->id<=p2->id)if(head=p2)pl->next=head;head=p 1;插入到第一个结点之前elsep3> next=pl;pl >next=p2; 插入到p3所指结点elsep2->next=pl;pl->next=null; 插入到尾结点n+; 将职工人数加1cout«htvv你输入的职工信息已经成功插入>n«endl;return (head);删除职工信息epployee information:cancel(epployee *head,long id)定义一个

36、扌旨向 structepployee的结构体指针函数*delete()用来删除考生信息.system(” cis");if(head=null) 若调用次函数以而的头指针head为空return(head);elsepl=head;否则将头指针赋给plwhile(id!=pl->id&&pl>next!二null)寻找要删除的结点当pl所指的职工编号不是输入的职工编号并且pl所指的next指针不为空p2=pl;pl=pl->next;/p2指向原pl指向的结点pl后移一个结点if(id=pl->id)如果输入的职工编号是pl所指的职工编号结点找

37、到后删if(pl=head) head=pl->next; 如果head指针和pl指针相等则将卜一个结点赋 给指针headelsep2->next=pl->next;否则将pl所指结点赋给p2所指结点将要删除的职工信息跳过去cout«n删除编号为h«id«m的职工;n-;将职工人数减1return(head);将头指针返回epployee *information:modify(epployee *head,long id)/system("clsn);cout«"tvv请输入须修改的职工工资信息>>n&

38、quot;«endl;pl=(epployee *)malloc(len); 使 pl 指向输入的结点pl=head;否则将头指针赋给plwhile(id! =p 1 >id&&p 1 ->next!=null)寻找结点当pl所指的职工编号不是输入的职工编号并且pl所指的next指针不 为空pl=pl->next;/p2指向原pl指向的结点pl后移一个结点if(id=pl->id)如果要杳找的职工编号是pl所指的职工编号cout«"你需要修改的职工信息如下:n”;cout«nn"coutvvj编号i i姓

39、名ii性别ii基本工资i i加班工资i i其他奖金ii总额ir;cout«nn"cout«setw(6)«p 1 ->id«setw(l 0)«p 1 > name«setw( 10)«p 1 >sex«setw(l()«p 1 ->paid0«setw(15)«p 1 >paidl «setw( 12)«p 1 ->paid2«setw( 12)«p 1 >total«endl;co

40、ut«"n"cout«"编号:";cin»pl->id;while(pl ->id)<()ll(p 1 ->id)> 100000)cout«n对不起,您的输入错误!请重新输入(>0<100000): ”;cin»pl->id;将输入的编号存放到pl所指结构体的数组id小cout«n 姓名:”;cin»pl->name;将输入的姓名存放到结构体名为pl的数组name中cout«n 性别:”;cin»pl->

41、sex;cout«"基本工资:";cin»pl->paid();while(pl->paid0)<0ll(pl->paid0)>100000)cout«n对不起,您的输入错误!请重新输a(>0< 100000): ”;cin»pl->paid0; 将输入的基本工资存放到pl所指结构体的数组paid 'i1cout«n加班工资:”;cin»pl->paidl;while(pl ->paid l)<oii(p 1 ->paid 1)>

42、100000)cout«n对不起,您的输入错误!请重新输a(>0< 100000): ”; cin»pl->paidl; 将输入的加班工资存放到pl所指结构体的数组paid 'i1cout«"其他奖金:”;cin»pl->paid2;while(pl->paid2)<0ll(pl->paid2)>100000)cout«n对不起,您的输入错误!请重新输入(>0<100000): ”; cin»pl->paid2; 将输入的其他奖金存放到pl所指结构体的

43、数组paid 'i1p 1 ->total=p 1 ->paid0+p 1 ->paid l+pl ->paid2; 计算总分elsecout«"需要修改的信息中没有编号为“vvidvv”的职工.nn”; 没有想要修改的 结点宿息getchar();return(head);查找职工信息epployee *information:find(epployee *head,long id)定义一个指向struct epployee的结构体指针函数*find()用來查找职工信息./system("cls");if(head=nu

44、ll)若调用次函数以前的头指针head为空cout«n这是一个空表,请先输入职工信息!n”;return(head);elsepl=head;否则将头指针赋给plwhile(id! =p 1 >id&&p 1 ->next!=null)寻找结点当pl所指的职工编号不是输入的职工编号并且pl所指的next指针不 为空pl=pl->next; /p2指向原pl指向的结点pl后移一个结点if(id=pl->id) 如果要查找的职工编号是pl所指的职工编号cout«nn"cout«"l编号i i姓名i i性别ii

45、基本工资ii加班工资i i其他奖金ii总额l;cout«nn"cout«setw(6)«p 1 ->id«setw(l 0)«p 1 > name«setw( 10)«p 1 >sex«setw(l()«p 1 ->paido«setw(l 4)«p 1 ->paidl «setw( 12)«p 1 ->paid2«setw( 12)«p 1 >total«endl;cout«

46、;"n"elsecoutvv”信息中没有编号为” vvidvv”的职工an”;/结点没找到return(head);定义sort()函数将职工的工资总额从大到小排列并输出void information:sort(epployee *head)/system(hclsh);int i,k,m=0j;epployee *pn;定义一个指向struct epployee的结构体指针数组pif(head! =null)/如果头指针是空则继续 m=count(head);cout«"n"cout«" *职丄工资统计表*n"

47、cout«"n"i总额icout«"l编号ii姓名i i性别i i基本工资i i加班工资i i其他奖金ii名次ln“;cout«"n"pl=head;for(k=0;k<m;k+)pk=pl;pl=pl->next;for(k=0;k<m-1 ;k+) /选择排序法for(j=k+1 ;j vm;j+)if(pk->total<p j ->total)p2 二 pk;pk=puj;plj=p2; 从大到小排列的指针for(i=0;i<m;i+)cout«setw(

48、6)«pi->id«setw(8)«pi->name«setw(9)«pi->sex«setw( 1 ()«pi->paid0j«setw(l()«pi->paid 1«setw( 15)«pi->paid2«setw(l l)«pi->total«setw(l 0)«i+1 «endl;cout«"-n"求齐工资的平均值的函数void information:av

49、erage(epployee *head)int k,m;float arg 1 =0,arg2=0,arg3=0;if(head=null)/如杲头指针是空则继续cout«"这是一个空表,请先输入职工信息!n”;else的平均值:m=count(head);pl=head;for(k=0;k<m;k+)arg 1 +=p 1 ->paid0;arg2+=p 1 ->paid 1;arg3+=p 1 ->paid2;pl=pl->next;argl/=m;arg2/=m;arg3/=m;cout«" *齐项工资的平均值*11

50、”;cout«"nn;cout«"tt 基本工资的平均值:”vvsetw(4)vvarglvv"n”vv”tt 加班工资 "«setw(4)«arg2«"n,«,tt 奖金的平均值:n«setw(4)«arg3«nnh;cout«nnn;保存函数.void information:save(epployee *head)/system("clsn);ofstream out("data",ios:out);out&#

51、171;count(head)«endl;while(head!=null) out«head->name«htnv<head>idvv”t”vv”t”«head->sex«"t"«head->paido«hth«head->paidl«hth«head->paid2«hth«head->total«endl;head=head->next;读取文件的信息epployee *informati

52、on:read()/system("clsn);int i=0;pl=p2=( epployee *)malloc(len);head=null;ifstream in("datah,ios:out);in»i;if(i=0)cout«" data文件中的数据为空,请先输入数据!"«endl; return 0; else cout«"n原文件已保存的信息如b :nm;cout«""«endl;cout«"l姓名i i编号ii性别i i基本工资i

53、 i加班工资ii其他奖金ii总额ir;cout«n n«endl;for(;i>();i-)pl=(epployee *)malloc(len);in»»st.id»st.sex»st.paido»st.paid 1 »st.paid2»st.total;strcpy(pl->name,);pl> id=st.id;strcpy (p 1 ->sex,st.sex);p 1 ->paido=st.paido;p 1 >paidf l=st.p

54、aid 1;p 1 ->paid2=st.paid2;pl->total=st.total;if(n=()head=p 1;如果是输入第一组职工信息就将指针pl赋给指针headelse p2->next=p 1;否则将pl赋给p2所指结构体的next指针p2=p 1;将指针p 1赋给指针p2n+;将n的值加1显示读入数据cout«" ,«pl->name«"tn«pl->id«" tn« pl->sex «" t"« pl->

55、;paido «" th«pl->paidl«" th«pl->paid2 «h th« pl->total«endl;cout«""«endl;cout«"数据已经成功读取完毕!nn"«endl;p2->next=null; return (head);菜单void menu()information person;epployee *head=null;int choice;long i;docou

56、t«ht探探探探n«endl;cout«"t 探探 h«endl;cout«"t探v _ _欢迎进入职工成绩统计管理 _ _ v探 h«endl;cout«"t 探"«endl;cout«"t探” vvendl;cout«"th«endl;cout«ht相关操作选项h«endl;cout«"th«endl;cout«nt探” vvendl;cout«&quo

57、t;t 探v0.读取文件信息探 h«endl;cout«"t 探探 h«endl;cout«"t 探v1.职工数据输入探"«endl;cout«"t 探探 h«endl;cout«"t 探v2.显示职工工资探 h«endl;cout«"t 探探"«endl;cout«"t 探v3.排序统计工资探 h«endl;cout«"t 探探 h«endl;cout&#

58、171;"t 探v4.查找职工工资探"«endl;cout«"t 探探 h«endl;cout«"t 探v5.增加职工工资探 h«endl;cout«"t 探探"«endl;cout«"t 探v6.删除职工工资探 h«endl;cout«"t 探探 h«endl;cout«"t 探v7.修改职工信息探"«endl;cout«"t 探探 h«

59、;endl;cout«nt 探8. 成功保存信息h«endl;cout«"t 探探 h«endl;cout«ntv9. 安全退出系统探 h«endl;cout«"t 探h«endl;cout«nt'川幺endl;cout«h请输入您的选择()-9):”;cin»choice;while(choice<0llchoice>9)cout«"对不起,您的输入错误!请输入您的选揪0-9):”; cin»choice;swit

60、ch(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«n参加工作 的职工人数为:"«person.count(head)«h人nn"break;case 4:cout«"请输入要查找的编号:”;case 5:case 6:case 7:case 8:cin»i;while(i<0lli>100000)cout

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论