下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.数据结构课程设计报告设计题目职工信息管理系统专业班级姓名学号完成日期Word 资料 .目录1. 32. 33. 54. 155. 206. 20 20Word 资料 .职工信息管理系统1. 问题描述试设计一个职工信息管理系统。要求可对职工信息进行插入、删除、查找、排序、输出等功能,职工对象包括编号、姓名、性别、出生年月、学历、工作年月、基本工资、家庭住址等等。2. 系统设计2.1 设计目标随着计算机产业的不断发展和信息时代的到来,各个企业和部门对员工的信息管理也已经走上了数字化的阶段,尤其是利用微机对工资的管理已经在各个企业单位起着越来越多的作用。 以前的财会人员完全是靠手写来完成员工的各种
2、记录,每天都忙碌于各种繁多的票据之间,这种工作繁重复杂,容易出错,不易修改,所以使用一个好的管理系统对减轻管理人员的工作量是很有帮助的,也是一个企业发展不可缺少的基础,它的开发应用简单而不失一般性,操作便,功能强大,系统化,规化,自动化,而且经济使用的职工管理系统已经成为了各个企业和部门离不开的电脑软件。本系统实现的操作和功能如下:1)职工信息表的建立:根据职工提供的信息,按单链表的法建立职工信息表;2)职工信息的添加:根据公司的需要,增加新的职工,必须把职工的基本信息写入职工信息表,便公司管理;3)职工信息的查询:根据公司需要,查找某一个职工的信息,可以按姓名或编号查找,将都显示职工的全部信
3、息。Word 资料 .4)职工信息的修改:根据公司或职工需要,如果信息需要修改,可对职工的人一个信息进行更改。5)职工信息的排序:根据公司需要,可对职工进行排序;6)职工信息的删除:根据公司需要,若职工不在公司工作,可对其信息删除,以及时更新职工信息表;7)职工信息的输出:根据公司需要,若要浏览职工信息,可对职工的全部信息输出,便观看。2.2 设计思想职工信息表用单链表作为存储结构,且为了查找便, 职工信息应有序。 为了查找便,职工的线性表按职工编号有序,并且,为了插入和删除便,应以链表作为存储结构。通过c+ ,使系统实现建表、增加信息、删除信息、查找信息、排序、输出等功能, 而且提供一个界面
4、来调用各个功能,并使界面尽可能清晰美观。2.3 系统模块划分菜单界面建职职职职职职统 退立工工工工工工出职信信信信信信职工息息息息息息工信的的的的的的管息添查修排删输理表加询改序除出系Word 资料 .尾插按按按无冒删输结插入姓编菜记泡除出束法新名号单录排结记程建的查查选序点录序立结询询项法运职点实行工现信息表3. 数据结构与算法描述3.2 职工信息表的建立,将一个职工结点按其编号的次序插入有序职工链表的相应位置, 以保持链表的有序性。 基本思想是使用尾插法建立新的结点。建表算法如下描述:/ 用尾插法建立职工链表函数void CreateList(NodePtr& head)/ 尾插法建立带头
5、结点的职工链表算法NodePtr rear;rear=new ListNode;int flag=0;/结束标志置 0Word 资料 .rear=head;/尾指针初始指向头结点while(flag=0)NodePtr p;p=new ListNode;p-link=NULL;cout 请输入: ;cout 编号姓名性别出生日期学历工作年月职务 基本工资地址 n;coutp-nump-namep-sexp-birthdayp-educationp-working_day;cinp-postp-base_payp-phonep-addr;rear-link=p;/新结点连接到尾结点之后rear=
6、p;/尾结点指向新结点coutflag;filesave(head);3.2 职工信息的输出Word 资料 .void PrintList(NodePtr head)NodePtr p;p=new ListNode;p=head-link;/因为链表带头结点,使p 指向链表开始接点cout 编号姓名性别出生年月学历工作年月职务基本工资地址 n;cout-n;while(p!=NULL)coutnumnamesexbirthday;couteducationworking_daypost;coutbase_payphoneaddrlink;/后移一个结点3.2 职工信息的查询,如果结点为空,输出
7、:没有查到要查询的职工;若结点不为空,可按姓名和编号进行查询。void ListFind(NodePtr& head)Word 资料 ./ 有序职工链表上的查找NodePtr p;p=new ListNode;p=head-link;/假定职工表带头结点char num10,name20;int xz;cout=n;cout1. 按编号查询n;cout2. 按姓名查询n;cout=n;coutxz;if(xz=1)coutnum;doif(strcmp(p-num,num)=0)cout 编号姓名性别出生年月学历工作年月职务 基本工资地址 n;cout-n;coutnumnamesexbirt
8、hday;couteducationworking_dayWord 资料 .post;coutbase_payphoneaddrendl;coutlink;if(p=NULL)cout 没有查到要查询的职工!n;while(p!=NULL);if(xz=2)coutname;doif(strcmp(p-name,name)=0)cout 编号姓名性别 出生年月学历工作年月职务基本工资地址 n;cout-n;coutnumnamesexbirthday;couteducationworking_daypost;Word 资料 .coutbase_payphoneaddrendl;coutlink
9、;if(p=NULL)coutlink=head-link;head-link=p;cinp-nump-namep-sexp-birthdayp-educationp-working_day;cinp-postp-base_payp-phonep-addr;Word 资料 .3.2 职工信息的修改,先输入职工的姓名,若没有该职工,输出:该系统没有该姓名的职工信息 ,无法修改 .,若有该职工,则可以修改该职工的任一个信息;具体算法如下:void Modify(NodePtr& head)/ 修改职工信息NodePtr p;p=head-link;char name15;/姓名coutname;w
10、hile(p)if(strcmp(p-name,name)=0)break;p=p-link;if(p=NULL)cout 该系统没有该姓名的职工信息,无法修改 .endl;cout 请按任意键继续 .endl;Word 资料 .getch();ListFind(head);elsecout- 你现在可以修改此职工的信息了-endl;/ 数据域。coutp-num;coutendlp-name;coutendlp-sex;coutendlp-birthday;while(cin.fail()cout 请输入正确的年份格式。p-birthday;Word 资料 .coutendlp-educat
11、ion;coutendlp-working_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);Word 资料 .q=q-link;p=p-link;cout 排序成功 .num);strcpy(p-num,q-num
12、);strcpy(q-num,num);strcpy(name,p-name);strcpy(p-name,q-name);strcpy(q-name,naWord 资料 .me);strcpy(sex,p-sex);strcpy(p-sex,q-sex);strcpy(q-sex,sex);strcpy(birthday,p-birthday);strcpy(p-birthday,q-birthday);strcpy(q-birthday,birthday);strcpy(education,p-education);strcpy(p-education,q-education);strcp
13、y(q-education,education);strcpy(working_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);s
14、trcpy(q-phone,phone);strcpy(addr,p-addr);strcpy(p-addr,q-addr);strcpy(q-addr,addr);3.2 职工信息的删除,先输入职工的工号,若结点为空,则输出:没有找到要删除的职工,若结点不为空,输出职工信息,提示真的要删除该职工吗,选择yWord 资料 .或 n 可进行操作。具体算法如下:void DelNode(NodePtr& head)NodePtr p,q;p=new ListNode;q=new ListNode;p=head-link;/假定职工信息表带头结点q=head;char num10;int flag=
15、0;coutnum;doif(strcmp(p-num,num)=0)cout 编号姓名性别出生年月学历工作年月职务 基本工资地址 n;cout-n;coutnumnamesexbirthday;couteducationworking_daypost;coutbase_payphoneWord 资料 .addrendl;coutlink;if(p=NULL)coutlink;while(p!=NULL);if(flag=1)coutjx;if(jx=y|jx=Y)q-link=p-link;/删除结点free(p);/释放被删除的结点空间cout 职工已被删除! n;Word 资料 ./re
16、turn 0;通过以上算法实现以下菜单模块: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);printf( 0. 退出管理系统 n);printf(=n);printf(请选择 0-7 :);4.测试结果与分析(将测试结果抓图说明)Word 资料 .Word 资料 .Wo
17、rd 资料 .Word 资料 .Word 资料 .5. 总结通过本次课程设计, 我学会了如工程化的编写以下系统软件。首先,要对软件的需求有一个比较明确的认识,然后系统分析与系统设计, 最后是代码设计与调试。软件实现上,设计了清楚的界面,并采用功能模块的设计思想。在这个过程中,确实付出了很对努力,流了很多汗水,比如,要思考整个设计过程,要一点一点的改正代码中出现的错误等等,但现在想想,都不值得一提,因为从中的收获比什么都重要。同时,我也知道,我的设计还存在不足之处,我会坚持不懈!继续努力!6. 参考文献 (包括书籍、论文、网络资料等 )C+buider实例入门雪飞中国青年出版社C+buider彻
18、底研究灿煌中国铁路出版社C+ 面向对象程序设计(第6 版) 清华出版社网络上一些代码资料附录程序源代码/ 主控菜单处理测试程序#include#include#include#include#include#includeusing namespace std;Word 资料 .struct ListNode/职工结点类型char num10;/编号char name15;/姓名char sex5;/性别char birthday50;/出生年月char education50;/学历char working_day50;/工作年月char post50;/职务int base_pay;/基本
19、工资char phone50;/char addr50;/地址ListNode *link;/结点指针域;typedef ListNode *NodePtr;NodePtr load();/导入信息到系统void filesave(NodePtr head);/将链表中的信息保存到文件里int menu_select();void CreateList(NodePtr& head);void PrintList(NodePtr head);void ListFind(NodePtr& head);void InsertNode(NodePtr& head);Word 资料 .void DelN
20、ode(NodePtr& head);/void DomoDify(NodePtr& head);void Modify(NodePtr &head);void Sort(NodePtr head);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_se
21、lect()case 1:cout*n;cout*职工信息表的建立*n;cout*n;CreateList(head);break;Word 资料 .case 2:cout*n;cout*职工信息的添加*n;cout 编号姓名性别出生日期学历工作年月职务 基本工资地址 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);/修改结点Modi
22、fy(head);break;case 5:cout*n;/cout*按工资排序*n;cout*n;Word 资料 .Sort(head);/按工资排序/PrintList(head);/Disp(tp,n);break;case 6: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.tx
23、t,w)=NULL)cout 新建文件失败 .endl;cout 请按任意键退出系统 .link;p=head-link;char c255;sprintf(c, 文件中 %d 个信息如下 :n, num);fputs(c,fp);while(p!=NULL)fprintf(fp,%s,p-num);fprintf(fp,t);Word 资料 .fprintf(fp,%s,p-name);fprintf(fp,t);fprintf(fp,%s,p-sex);fprintf(fp,t);fprintf(fp,%s,p-birthday);fprintf(fp,t);fprintf(fp,%s,p
24、-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);fprintf(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;head=new ListNode
25、;head-link=NULL;q=head;char base_pay10;/p=new ListNode;Word 资料 .int num,i=0;FILE *fp;if(fp=fopen(file.txt,r)=NULL)cout 文件尚未存储数据 .!n;/exit(1);return head;char c255;fgets(c,256,fp);sscanf(c, 文件中 %d 个信息如下 :n, &num);while(inum);fscanf(fp,%s,p-name);fscanf(fp,%s,p-sex);fscanf(fp,%s,p-birthday);fscanf(fp,
26、%s,p-education);fscanf(fp,%s,p-working_day);fscanf(fp,%s,p-post);Word 资料 ./ fscanf(fp,%d,p-base_pay); fscanf(fp,%s,base_pay); p-base_pay=atoi(base_pay); 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;printf(欢迎进入职工信息管理系统n);printf(=n);printf( 1. 职工信息表的建立 n);printf( 2. 职工结点的添加 n);printf( 3. 职工结点的查询 n);Word 资料 .printf( 4. 职工信息的修改 n);printf( 5. 职工信息的排序 n);print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生处工作计划
- 幼儿园保教工作计划大全
- 买卖合同范文七篇
- 幼儿教育工作计划集合七篇
- 中国卡座连接器项目投资可行性研究报告
- 棉花姑娘教案四篇
- 网络对战小游戏课程设计
- 产科护士一天的工作计划
- 全新大一军训心得笔记10篇
- 毕业生自我介绍(15篇)
- 配合、协调、服务方案
- 市政工程监理大纲
- 2023-2024学年广东省广州市黄埔区六年级(上)期末数学试卷(A卷)
- 初中数学新课程标准(2024年版)
- 期末测试卷(一)2024-2025学年 人教版PEP英语五年级上册(含答案含听力原文无听力音频)
- 2023-2024学年广东省深圳市南山区八年级(上)期末英语试卷
- 汉服娃衣创意设计与制作智慧树知到期末考试答案章节答案2024年四川文化产业职业学院
- 广东省中山市2023-2024学年四年级上学期期末数学试卷
- 8款-组织架构图(可编辑)
- 气动潜孔锤施工方案
- 云南省教育科学规划课题开题报告 - 云南省教育科学研究院
评论
0/150
提交评论