职工信息管理系统.pdf

上传人:赵** 文档编号:43623881 上传时间:2022-09-17 格式:PDF 页数:39 大小:956.30KB
返回 下载 相关 举报
职工信息管理系统.pdf_第1页
第1页 / 共39页
职工信息管理系统.pdf_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《职工信息管理系统.pdf》由会员分享,可在线阅读,更多相关《职工信息管理系统.pdf(39页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-数据构造数据构造 课程设计报告课程设计报告设计题目职工信息管理系统设计题目职工信息管理系统专业专业班级班级姓名姓名*完成日期完成日期目录目录1.1.问题描述问题描述3 32.2.系统设计系统设计3 33.3.数据构造与算法描述数据构造与算法描述5 54.4.测试结果与分析测试结果与分析15155.5.总总结结20206.6.参考文献参考文献2020附录附录 程序源代码程序源代码2020职工信息管理系统职工信息管理系统1.1.问题描述问题描述试设计一个职工信息管理系统。要求可对职工信息进展插入、删除、查找、.z.-排序、输出等功能,职工对象包括编号、性别、出生年月、学历、工作年月、根本工资、家

2、庭住址等等。2.2.系统设计系统设计2.12.1 设计目标设计目标随着计算机产业的不断开展和信息时代的到来,各个企业和部门对员工的信息管理也已经走上了数字化的阶段,尤其是利用微机对工资的管理已经在各个企业单位起着越来越多的作用。以前的财会人员完全是靠手写来完成员工的各种记录,每天都忙碌于各种繁多的票据之间,这种工作繁重复杂,容易出错,不易修改,所以使用一个好的管理系统对减轻管理人员的工作量是很有帮助的,也是一个企业开展不可缺少的根底,它的开发应用简单而不失一般性,操作方便,功能强大,系统化,标准化,自动化,而且经济使用的职工管理系统已经成为了各个企业和部门离不开的电脑软件。本系统实现的操作和功

3、能如下:1职工信息表的建立:根据职工提供的信息,按单链表的方法建立职工信息表;2职工信息的添加:根据公司的需要,增加新的职工,必须把职工的根本信息写入职工信息表,方便公司管理;3职工信息的查询:根据公司需要,查找*一个职工的信息,可以按姓名或编号查找,将都显示职工的全部信息。4职工信息的修改:根据公司或职工需要,如果信息需要修改,可对职工的人一个信息进展更改。5职工信息的排序:根据公司需要,可对职工进展排序;.z.-6职工信息的删除:根据公司需要,假设职工不在公司工作,可对其信息删除,以及时更新职工信息表;7职工信息的输出:根据公司需要,假设要浏览职工信息,可对职工的全部信息输出,方便观看。2

4、.22.2 设计思想设计思想职工信息表用单链表作为存储构造,且为了查找方便,职工信息应有序。为了查找方便,职工的线性表按职工编号有序,并且,为了插入和删除方便,应以链表作为存储构造。通过c+,使系统实现建表、增加信息、删除信息、查找信息、排序、输出等功能,而且提供一个界面来调用各个功能,并使界面尽可能清晰美观。2.32.3 系统模块划分系统模块划分菜单界面建立职工信息表职工信息的添加职工信息的查询职工信息的修改职工信息的排序职工信息的删除职工信息的输出统 退出职工管理系尾插按按按无冒删输完插入姓编菜记泡除出毕法新名号单录排结记程建的查查项序点录序3.3.数据构造与算法描述数据构造与算法描述立结

5、询询选法运职点择实行工项现职工信息表的建立,将一个职工结点按其编号的次序插入有序职工链表的相应信息表以保持链表的有序性。根本思想是使用尾插法建立新的结点。建表算法如位置,下描述:/用尾插法建立职工链表函数.z.-void CreateList(NodePtr&head)/尾插法建立带头结点的职工链表算法NodePtr rear;rear=new ListNode;int flag=0;/完毕标志置 0rear=head;/尾指针初始指向头结点while(flag=0)NodePtr p;p=new ListNode;p-link=NULL;cout请输入:;cout编号性别出生日期 学历工作年

6、月 职务 根本工资地址n;coutp-nump-namep-se*p-birthdayp-educationp-working_day;cinp-postp-base_payp-phonep-addr;rear-link=p;/新结点连接到尾结点之后rear=p;/尾结点指向新结点coutflag;.z.-filesave(head);职工信息的输出void PrintList(NodePtr head)NodePtr p;p=new ListNode;p=head-link;/因为链表带头结点,使 p 指向链表开场接点cout编号性别 出生年月 学历工作年月 职务 根本工资地址n;cout-

7、n;while(p!=NULL)coutnumbirthday;couteducationworking_daypost;coutbase_payphoneaddrlink;/后移一个结点职工信息的查询,如果结点为空,输出:没有查到要查询的职工;假设结点不为namese*link;/假定职工表带头结点char num10,name20;int*z;cout=n;cout1.按编号查询n;cout2.按姓名查询n;cout=n;cout*z;if(*z=1)coutnum;doif(strcmp(p-num,num)=0)cout编号性别出生年月 学历本工资地址n;cout-n;coutnumn

8、ame.工作年月 职务 根se*z.-birthday;couteducationpost;coutbase_payphoneaddrendl;coutlink;if(p=NULL)cout没有查到要查询的职工!n;while(p!=NULL);if(*z=2)coutname;doif(strcmp(p-name,name)=0)cout编号性别 出生年月 学历工作年月 职务 根本工资地址n;cout-n;coutnumbirthday;couteducationworking_daynamese*working_day.z.-post;coutbase_payphoneaddrendl;c

9、outlink;if(p=NULL)coutlink=head-link;head-link=p;cinp-nump-namep-se*p-birthdayp-educationp-working_day;cinp-postp-base_payp-phonep-addr;.z.-职工信息的修改,先输入职工的姓名,假设没有该职工,输出:该系统没有该姓名的职工信息,无法修改.,假设有该职工,则可以修改该职工的任何一个信息;具体算法如下:void Modify(NodePtr&head)/修改职工信息NodePtr p;p=head-link;char name15;/coutname;while(

10、p)if(strcmp(p-name,name)=0)break;p=p-link;if(p=NULL)cout该系统没有该姓名的职工信息,无法修改.endl;cout请按任意键继续.endl;getch();ListFind(head);.z.-elsecout-你现在可以修改此职工的信息了-endl;/数据域。coutp-num;coutendlp-name;coutendlp-se*;coutendlp-birthday;while(cin.fail()cout请输入正确的年份格式。p-birthday;coutendlp-education;.z.-coutendlp-working_

11、day;coutendlp-post;coutendlp-base_pay;while(cin.fail()cout请输入正确的工资数据。p-base_pay;coutendlp-phone;coutendlp-addr;coutlink;if(p=NULL)cout该系统还没有储存一个职工,没法进展排序.endl;coutlink;while(q!=NULL)if(p-base_paybase_pay)swap(p,q);q=q-link;.z.-p=p-link;cout排序成功.num);strcpy(p-num,q-num);strcpy(q-num,num);strcpy(name,

12、p-name);strcpy(p-name,q-name);strcpy(q-name,name);strcpy(se*,p-se*);strcpy(p-se*,q-se*);strcpy(q-se*,se*);strcpy(birthday,p-birthday);strcpy(p-birthday,q-birthday);strcpy(q-birthday,birthda.z.-y);strcpy(education,p-education);strcpy(p-education,q-education);strcpy(q-education,education);strcpy(worki

13、ng_day,p-working_day);strcpy(p-working_day,q-working_day);strcpy(q-working_day,working_day);strcpy(post,p-post);strcpy(p-post,q-post);strcpy(q-post,post);base_pay=p-base_pay;p-base_pay=q-base_pay;q-base_pay=base_pay;strcpy(phone,p-phone);strcpy(p-phone,q-phone);strcpy(q-phone,phone);strcpy(addr,p-ad

14、dr);strcpy(p-addr,q-addr);strcpy(q-addr,addr);职工信息的删除,先输入职工的工号,假设结点为空,则输出:没有找到要删除的职工,假设结点不为空,输出职工信息,提示真的要删除该职工吗,选择y 或n 可进展操作。具体算法如下:void DelNode(NodePtr&head)NodePtr p,q;p=new ListNode;q=new ListNode;p=head-link;/假定职工信息表带头结点q=head;char num10;.z.-int flag=0;coutnum;doif(strcmp(p-num,num)=0)cout编号性别 出

15、生年月学历工作年月 职务 根本工资地址n;cout-n;coutnumbirthday;couteducationpost;coutbase_payphoneaddrendl;coutlink;if(p=NULL)coutlink;working_daynamese*.z.-while(p!=NULL);if(flag=1)coutj*;if(j*=y|j*=Y)q-link=p-link;/删除结点free(p);/释放被删除的结点空间cout职工已被删除!n;/return 0;通过以上算法实现以下菜单模块:通过以上算法实现以下菜单模块:printf(欢迎进入职工信息管理系统n);prin

16、tf(=n);printf(1.职工信息表的建立n);printf(2.职工结点的添加n);printf(3.职工结点的查询n);printf(4.职工信息的修改n);.z.-printf(5.职工信息的排序n);printf(6.职工结点的删除n);printf(7.职工链表的输出n);printf(0.退出管理系统n);printf(=n);printf(请选择 0-7:);4.4.测试结果与分析将测试结果抓图说明测试结果与分析将测试结果抓图说明通过本次课程设计,我学会了如何工程化的编写以下系统软件。首先,要对软件的需求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。软

17、件实现上,设计了清楚的界面,并采用功能模块的设计思想。在这个过程中,确实付出了很对努力,流了很多汗水,比方,要思考整个设计过程,要一点一点的改正代码中出现的错误等等,但现在想想,都不值得一提,因为从中的收获比什么都重要。同时,我也知道,我的设计还存在缺乏之处,我会坚持不懈!继续努力!6.6.参考文献参考文献(包括书籍、论文、网络资料等包括书籍、论文、网络资料等)C+buider 实例入门陈雪飞中国青年出版社C+buider 彻底研究陈灿煌中国铁路出版社C+面向对象程序设计第 6 版 清华出版社网络上一些代码资料附录附录程序源代码程序源代码/主控菜单处理测试程序#include.z.-#incl

18、ude#include#include#include#includeusing namespace std;struct ListNode/职工结点类型char num10;/编号char name15;/char se*5;/性别char birthday50;/出生年月char education50;/学历char working_day50;/工作年月char post50;/职务int base_pay;/根本工资char phone50;/char addr50;/地址ListNode*link;/结点指针域;typedef ListNode*NodePtr;NodePtr lo

19、ad();/导入信息到系统void filesave(NodePtr head);/将链表中的信息保存到文件里.z.-int menu_select();void CreateList(NodePtr&head);void PrintList(NodePtr head);void ListFind(NodePtr&head);void InsertNode(NodePtr&head);void DelNode(NodePtr&head);/void DomoDify(NodePtr&head);void Modify(NodePtr&head);void Sort(NodePtr head);

20、void swap(NodePtr&p,NodePtr&q);/交换两个节点里所含的信息/void Disp(NodePtr&base_pay);/主函数int main()NodePtr head,p,ptr;/int base_pay;head=new ListNode;/申请头结点head=load();/int n;/char tp100;for(;)switch(menu_select().z.-case 1:cout*n;cout*职工信息表的建立*n;cout*n;CreateList(head);break;根本工资.case 2:cout*n;cout*职工信息的添加*n;c

21、out编号性别出生日期 学历工作年月 职务地址n;cout*n;InsertNode(head);filesave(head);break;case 3:cout*n;cout*职工信息的查询*n;cout*n;ListFind(head);break;case 4:cout*n;cout*职工信息的修改*n;cout*n;/DomoDify(head);/修改结点z.-Modify(head);break;case 5:cout*n;/cout*按工资排序*n;cout*n;Sort(head);/按工资排序/PrintList(head);/Disp(tp,n);break;case 6:

22、cout*n;cout*职工信息的删除*n;cout*n;DelNode(head);/删除结点filesave(head);break;case 7:cout*n;cout*职工信息表的输出*n;cout*n;PrintList(head);break;case 0:coutlink;FILE*fp;int num=0;if(fp=fopen(file.t*t,w)=NULL)cout新建文件失败.endl;cout请按任意键退出系统.link;p=head-link;char c255;.z.-sprintf(c,文件中%d 个信息如下:n,num);fputs(c,fp);while(p

23、!=NULL)fprintf(fp,%s,p-num);fprintf(fp,t);fprintf(fp,%s,p-name);fprintf(fp,t);fprintf(fp,%s,p-se*);fprintf(fp,t);fprintf(fp,%s,p-birthday);fprintf(fp,t);fprintf(fp,%s,p-education);fprintf(fp,t);fprintf(fp,%s,p-working_day);fprintf(fp,t);fprintf(fp,%s,p-post);fprintf(fp,t);fprintf(fp,%d,p-base_pay);f

24、printf(fp,t);fprintf(fp,%s,p-phone);fprintf(fp,t);fprintf(fp,%s,p-addr);fprintf(fp,t);fprintf(fp,n);p=p-link;fclose(fp);NodePtr load()NodePtr p,q,head;.z.-head=new ListNode;head-link=NULL;q=head;char base_pay10;/p=new ListNode;int num,i=0;FILE*fp;if(fp=fopen(file.t*t,r)=NULL)cout文件尚未存储数据.!n;/e*it(1)

25、;return head;char c255;fgets(c,256,fp);sscanf(c,文件中%d 个信息如下:n,&num);while(inum);fscanf(fp,%s,p-name);.z.-fscanf(fp,%s,p-se*);fscanf(fp,%s,p-birthday);fscanf(fp,%s,p-education);fscanf(fp,%s,p-working_day);fscanf(fp,%s,p-post);/fscanf(fp,%d,p-base_pay);fscanf(fp,%s,base_pay);p-base_pay=atoi(base_pay);

26、fscanf(fp,%s,p-phone);fscanf(fp,%s,p-addr);p-link=NULL;q-link=p;q=p;i+;fclose(fp);return head;/菜单项选择择函数程序int menu_select()int sn;.z.-printf(欢迎进入职工信息管理系统n);printf(=n);printf(1.职工信息表的建立n);printf(2.职工结点的添加n);printf(3.职工结点的查询n);printf(4.职工信息的修改n);printf(5.职工信息的排序n);printf(6.职工结点的删除n);printf(7.职工链表的输出n);

27、printf(0.退出管理系统n);printf(=n);printf(请选择 0-7:);for(;)cinsn;if(sn7)coutlink=NULL;cout请输入:;cout编号性别出生日期 学历工作年月 职务 根本工资地址n;coutp-nump-namep-se*p-birthdayp-educationp-working_day;cinp-postp-base_payp-phonep-addr;rear-link=p;/新结点连接到尾结点之后rear=p;/尾结点指向新结点coutflag;.z.-filesave(head);/职工链表的输出函数void PrintList(

28、NodePtr head)NodePtr p;p=new ListNode;p=head-link;/因为链表带头结点,使 p 指向链表开场接点cout编号性别 出生年月 学历工作年月 职务 根本工资地址n;cout-n;while(p!=NULL)coutnumbirthday;couteducationpost;coutbase_payphoneaddrlink;/后移一个结点working_daynamese*link;/假定职工表带头结点char num10,name20;int*z;cout=n;cout1.按编号查询n;cout2.按姓名查询n;cout=n;cout*z;if(*

29、z=1)coutnum;doif(strcmp(p-num,num)=0)cout编号性别出生年月 学历根本工资地址n;cout-n;coutnumname.工作年月 职务se*z.-birthday;couteducationpost;coutbase_payphoneworking_dayaddrendl;coutlink;if(p=NULL)cout没有查到要查询的职工!n;while(p!=NULL);if(*z=2)coutname;doif(strcmp(p-name,name)=0)cout编号性别 出生年月 学历根本工资地址n;cout-n;coutnumnamebirthda

30、y;.工作年月 职务se*z.-couteducationpost;coutbase_payaddrendl;working_dayphonecoutlink;if(p=NULL)coutlink=head-link;head-link=p;cinp-nump-namep-se*p-birthdayp-educationp-working_day;.z.-cinp-postp-base_payp-phonep-addr;/职工信息的修改void Modify(NodePtr&head)/修改职工信息NodePtr p;p=head-link;char name15;/coutname;whil

31、e(p)if(strcmp(p-name,name)=0)break;p=p-link;if(p=NULL)cout该系统没有该姓名的职工信息,无法修改.endl;cout请按任意键继续.endl;getch();ListFind(head);.z.-elsecout-你现在可以修改此职工的信息了-endl;/数据域。coutp-num;coutendlp-name;coutendlp-se*;coutendlp-birthday;while(cin.fail()cout请输入正确的年份格式。p-birthday;coutendlp-education;.z.-coutendlp-workin

32、g_day;coutendlp-post;coutendlp-base_pay;while(cin.fail()cout请输入正确的工资数据。p-base_pay;coutendlp-phone;coutendlp-addr;coutlink;if(p=NULL)cout该系统还没有储存一个职工,没法进展排序.endl;coutlink;while(q!=NULL)if(p-base_paybase_pay)swap(p,q);q=q-link;p=p-link;.z.-cout排序成功.num);strcpy(p-num,q-num);strcpy(q-num,num);strcpy(nam

33、e,p-name);strcpy(p-name,q-name);strcpy(q-name,name);strcpy(se*,p-se*);strcpy(p-se*,q-se*);strcpy(q-se*,se*);strcpy(birthday,p-birthday);strcpy(p-birthday,q-birthday);strcpy(q-birthday,birthday);.z.-strcpy(education,p-education);strcpy(p-education,q-education);strcpy(q-education,education);strcpy(wor

34、king_day,p-working_day);strcpy(p-working_day,q-working_day);strcpy(q-working_day,working_day);strcpy(post,p-post);strcpy(p-post,q-post);strcpy(q-post,post);base_pay=p-base_pay;p-base_pay=q-base_pay;q-base_pay=base_pay;strcpy(phone,p-phone);strcpy(p-phone,q-phone);strcpy(q-phone,phone);strcpy(addr,p-

35、addr);strcpy(p-addr,q-addr);strcpy(q-addr,addr);/职工结点的删除void DelNode(NodePtr&head)NodePtr p,q;p=new ListNode;q=new ListNode;p=head-link;/假定职工信息表带头结点q=head;char num10;int flag=0;coutnum;.z.-doif(strcmp(p-num,num)=0)cout编号性别 出生年月学历工作年月 职务根本工资地址n;cout-n;coutnumnamese*birthday;couteducationpost;coutbase_payaddrendl;coutlink;if(p=NULL)coutlink;while(p!=NULL);phoneworking_day.z.-if(flag=1)coutj*;if(j*=y|j*=Y)q-link=p-link;/删除结点free(p);/释放被删除的结点空间cout职工已被删除!n;/return 0;.z.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com