ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:218.65KB ,
资源ID:7745094      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7745094.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计职工管理系统Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

课程设计职工管理系统Word文档下载推荐.docx

1、(2)对职工对象中的“姓名”按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。2. 概要设计 2.1数据结构1、输入功能的实现:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。由键盘输入职工对象,以文件方式保存。2、系统处理功能的实现:系统管理员根据公司的人员流动情况,在提示信息的提示下,选择相应的服务进行操作。如对职工对象中的姓名按字典顺序进行排序;对排序后的职工对象进行增、删、查询、修改、排序等操作。3、输出的实现:根据选择的操作,输出与之对应的信息。综上可以绘制出职工管理功能的系统流程图,如图1所示图1

2、 系统流程图2.2程序模块根据职工管理系统问题的分析和设计要求,可以得到该职工管理系统可以分为五个模块:职工信息添加模块、职工信息修改模块、职工信息删除模块、职工信息查询模块、职工信息排序模块。其系统功能结构如图2所示。图2 系统功能结构2.3模块函数构造根据系统功能结构图的描述,可以构造出该系统的抽象数据类型和相对应的函数,其方法名和功能如表1所示。表1 函数功能表模块函数或数据结构功能链表数据类型typedef struct Node定义链表结点typedef struct Datatype定义职工信息ListInitiate(SLNode *head)初始化链表系统处理模块SLNode

3、*ListInsert(SLNode *head,DataType x)插入职工信息ListDelete(SLNode *head)删除职工信息ListModify(SLNode *head)修改职工信息put(SLNode *head,FILE *fp)保存职工信息Listfind(SLNode head)查询职工信息Listpaixu(SLNode *head)职工信息排序输出模块print(SLNode *head)显示职工信息3. 详细设计3.1抽象数据类型定义1)定义表结点(typedef struct Node)typedef struct Node long int born_t

4、ime,work_time,tele_num; char sex,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX; struct Node *next;SLNode;2)定义职工信息(typedef struct Datatype)typedef struct char nameALLMAX,sex,degreeALLMAX,jobALLMAX,addressALLMAX;DataType;3)初始化链表(ListInitiate(SLNode *head)void ListInitiate(SLNode *head)/-链表初始化 if(*he

5、ad=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/动态分配存储空间 (*head)-next=NULL;3.2主函数设计(1)根据详细设计要求,可以得到主函数代码及其对应的程序流程图:在主函数中,实现了友好的界面设计。系统需要输入职工的基本信息:姓名、性别、出生年月、工作年月、学历、职务、住址、电话等。这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有七种操作的调用:新增职工信息:查询职工信息:删除职工信息:修改职工信息:职工信息排序:保存职工信息:显示职工信息:(2)主函数程序流程图如图3所示:图 3 主函数程序流程图3.3查找算法设计在

6、查询算法中,职工管理系统提供了七种查询操作,实现了系统的人性化查询操作。这些查询操作分别为:对姓名进行查询,对性别进行查询,对出生年月进行查询,对工作年月进行查询,对学历进行查询,对职位进行查询,对住址进行查询,对电话进行查询等一些列操作。查找算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。查询算法程序流程图如图4所示:图 4 查询算法程序流程图3.4排序算法设计在排序算法中,职工管理系统提供了四种查询操作,实现了系统的基本排序操作。这些排序操作分别为:对姓名进行排序,对性别进行排序,对出生年月进行排序,对工作年月进行排序,等一些列操作。排序算法中,

7、利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。排序的核心代码: for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q-next) if(p-name0q-name0) if(head=p) head-next=q-next; head=q; q-next=p; q=head- p=head; else p- s-next=q; p=q; q=p- flag=1; 排序算法流程图如图5所示:显示排序菜单无职工信息 是 0 否 1图5 排序算法流程图4. 编码调试测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于

8、检验是否满足规定的需求或弄清预期结果与实际结果之间的差别。在调试查询修改功能过程中,查询的总是不正确,查询的结果显示,没有找到职工信息,最后发现查找的结点不正确,查询应该与输入的值和头结点next比较,而不是头结点。还有就是查询结点不知道如何循环,最后又看看了记得笔记和书,才知道如何继续查找而不出错误。修改时总是不能正确的修改,最初时修改总是修改最后输入的数据。最后终于找到了,又是结点写错了。排序时注意交换的先后顺序就可以了,删除时注意交换结点的顺序。本次课程设计是围绕数据结构进行。根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个职工管理系统功能,那就是在这个系统中实现对职工信息

9、的插入、删除、查询、排序、修改以及保存。但是,为了实现该功能,却需要优秀的算法和数据结构以保证实现的时间和空间效率。把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。虽然设计的程序完成了题目描述所需要实现的功能,但是仍然存在不如人意的地方。那就是可以排序上面多设计几个算法。实现多角度排序。在这个系统中没有职工序号的信息,所以允许职工姓名相同,在很大程度上面,可能是的职工信息重复。经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。当我们

10、面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。如4,提示输入修改职工姓名,然后进行依次修改职工所有信息;如5,提示:0.退出排序系统,回到主菜单1.对性别进行排序2.对出生年月进行排序3.对工作年月进行排序4.对姓名进行排序

11、,输入号码进行查询。测试结果:1)进入职工管理系统,如图6所示:图 6主菜单选择界面2)新增一职工信息并查询全部职工信息,如图7、8所示:图 7 新增并查询职工信息界3)修改职工信息并与前面信息对照,如图8所示:图8 修改职工信息界面4)按姓名排序职工信息并显示,如图9所示图9 按姓名排序职工信息并显示5)退出系统,如图10所示:选择 0,退出职工管理系统。图10 退出职工管理系统5. 课程设计总结总 结这次课程设计,我们从分组,组内分工,查阅资料,实验总结,这整个实验下来,学习到很多东西。同时也增加了我对软件设计的兴趣,程序设计对我们的好处挺多。在学习数据结构的同时也学习并巩固了许多计算机应

12、用软件方面的知识。以前学习C语言时对文件指针这一块的知识学习的不透,导致这次做职工管理系统时涉及这方面时无从下手,无奈又拿着书重新学习一遍。的确以前学的太差劲了,基本的单链表都把我给难住了,以前总觉得编代码很枯燥,学起来没兴趣,通过这次实验我开始发现,其实用一些简单的抽象的代码,设计出实际问题,真的蛮有意思的。做这个实验过程中遇到很多问题,如:要对人名进行按字典查询时不知道用什么样的方法,排序字段排序算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。之前学习的都是理论知识,当我们拿着实际问题时,不免有点慌,我们想办法把这些实际的问题抽象化,运用所学的知

13、识抽象化为多种数据结构和算法,然后综合考虑从中选取时间和空间性能都较好的一个。最后就是写程序一定要细心,细心,再细心!两周的实验接近尾声了,刚刚接触这个实验题目时,迷茫、不知所措,我一千次一万次的问自己,怎样才能找到课堂所学与实际应用的最佳结合?怎样才能编写出程序,经过同伴们的讨论与研究,查阅书籍,去向其他人寻求帮助,在其他人的提示下,参考并修改,才有了如今的简单达到要求的程序。这次实验最难的就是修错,编译老是通不过,很是头疼,还好在同组人的讨论下改好了程序。查询的总是不正确,查询的结果显示,没有找到职工信息,最后发现查找的结点不正确,查询应该与输入的值和头结点next比较,而不是头结点。还有

14、,修改时总是不能正确的修改,最初时修改总是修改最后输入的数据。这次试验对于我这个新手来说,这是一次很棒的锻炼,不仅让我知道自己的不足,还让我更深一次的了解数据结构所要掌握的思想,原来理论回归实践也不是件简单的事情。两周的课程设计很快就结束了,而自己真正的学习之路似乎才刚刚开始。本次课程设计过程首先进行分组分工,选题,对所选题目进行需求分析、概要设计,然后到详细的进行编码、调试,到最终能够成功运行出所需要的结果,这一切都离不开小组成员之间的团结合作。我们三人抽选到的题目是职工管理系统,对单位职工进行管理,包括插入、删除、查找、排序等功能。当拿到题目那一刻,我想当然的以为这不是很简单么?不就是编写

15、几个简单的模块来对应实现其各个功能。可是当自己真正开始着手编写程序时,才发现自己总是这样眼高手低,一头雾水,还好有同学的帮助,再通过查找教材、上网查找资料,两周的时间才算是勉强完成此次的数据结构课程设计。通过此次课程设计,我深刻体会到了自己上课所学的那些理论知识必须要通过实践才能完全消化与掌握,这就是理论一定要与实践相结合,二者是相辅相成的。这两周的时间,既要做课程设计,还要准备期末考试,使自己忙的有点找不着北,不想顾此失彼,想要兼顾,可是自己终究能力有限,此刻才开始深刻反省自己:若是平常上课认真听讲的话,那么此时也不用为了期末考试而忙得焦头烂额了吧。看到别人淡定从容,心里是欣羡的。若不是同学

16、的帮助,只怕自己还真就完成不了这次课程设计,团结的力量是不可估量的,再次感谢我的小组成员。课程设计虽然结束,可自己要学习的东西还有太多太多,自己的学习之路将永无止境,只能暗暗告诫自己,要一步一个脚印,踏踏实实,勤勤恳恳的去走未来之路。参考文献:1李云清,杨庆红,揭安全.数据结构(C语言版)M.北京:人民邮电大学出版社,2004.62潘彦.算法设计与分析基础M.北京:清华大学出版社,2007.13肖梦强,曲秀清.软件工程原理、方法与应用 M.北京:中国水利水电出版社,2005.104 吕凤翥.C+语言程序设计(第2版)M.北京:电子工业出版社,2007.25 严蔚敏,吴伟民.数据结构(C语言版)

17、M.北京:清华大学出版社,2002.9 附录实验程序:#include string.hstdlib.h#define ALLMAX 100 /总共统计的职工的人数 long int born_date,work_date,tele_num; char sexALLMAX,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX; char nameALLMAX,sexALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX;void ListInitiate(SLNode *head)/链表初始化SLNode *ListIn

18、sert(SLNode *head,DataType x)/职工信息的插入 SLNode *p,*q; p=head- if(q=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1); q-born_date = x.born_date;work_date = x.work_date;tele_num = x.tele_num; strcpy(q-name,x.name);sex,x.sex);degree,x.degree);job,x.job);address,x.address);if(head-next=NULL) /如果只有链表的头结点,没有其他

19、的结点,直接插 入在头结点后面 head-next- else /链表非空,并且在排序中是最后一个 q-next = p; head-next = q; return head;void ListDelete(SLNode *head)/职工信息的删除 SLNode *p,*s; char x20; s=head; if(head-next=NULL)/链表为空,输出:名单中无职工信息,无须删除! printf(名单中无此职工信息,无须删除!n); return; printf(请输入要删除职工的姓名: /输入要删除的人的姓名 scanf(%s,x); for(p;p;p=p-next)/在链

20、表中从头到尾查找输入的人的姓名 if(strcmp(p-name,x)=0) /如果存在,则删除,否则输出: s-next=p- free(p); printf(删除成功!请继续操作! break; s=p; if(p=NULL)/链表本身为空void ListModify(SLNode *head)/职工信息的修改 DataType x; SLNode *p;职工名单无职工信息,无须修改!请输入要修改的职工姓名:,x.name); for(;next) if(strcmp(x.name,p-name)=0)/查找到了该职工的信息依次写入该职工的新信息:请输入职工信息:n姓名、性别、出生年月、

21、工作年月、学历、职务、住址、电话n scanf(%s%s%d%d%s%s%s%d,p-name,&p-sex,&born_date,&work_date,p-degree,p-job,p-address,&tele_num);修改成功! if(p=NULL)/如果链表为空此职工不存在,无法修改其信息!void put(SLNode *head,FILE *fp)/职工信息的保存 if(fp=fopen(Employee.txt,a)=NULL)/无法打开Employee.txt! exit(0); for(p=head- fprintf(fp,%s%s%d%d%s%s%s%dnname,p-sex,p-born_date,p-address,p- if(fclose(fp)无法关闭 exit(0);void Listfind(SLNode head)/职工信息的查找 int i,j; if(head.next=NULL)/链表为空名单中无职工信息,查询失败! /返回主菜单 pri

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2