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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

员工管理系统C数据结构课程设计Word格式.docx

1、从员工管理文件中删除一名员工对象,分为根据编号删除、根据姓名删除。(3)查询:从员工管理文件中查询符合某些条件(编号、姓名)的员工。(4)修改:根据编号检索出对象,既可以对整个对象修改,也可对某个属性修改。(5)排序:按照年龄、工龄对所有的员工排序(降序),也可以回复排序以前的员工现实状态。2概要设计(一)数据类型定义:#include string.hmalloc.hstdlib.h#define ALLMAX 100 /总共统计的职工的人数typedef struct Node long int age,work_time,num; char sex,nameALLMAX,jobALLMA

2、X; struct Node *next;SLNode;typedef struct char nameALLMAX,sex,jobALLMAX;DataType;(二)主程序流程图(三)各程序模块之间的层次(调用)图3详细设计1、主菜单模块:显示员工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void put( )函数来实现。 2、添加员工模块:输入员工的编号、姓名、年龄、职位、工龄以,通过自己定义的void addMessage( )函数来实现。3、查询员工信息模块:浏览所有员工的相关信息,通过自己定义的void Listfind ( )函数来实现。4、删除员工模块:删除需要删除

3、的员工的所有信息,通过自己定义的void ListDelete ( )函数来实现。5、修改模块:可以修改需要修改的员工的相关信息,通过自己定义的void ListModify( )函数来实现。6、员工信息排序模块:可以按照规定要求对员工信息排序,通过自己定义的void sort( )函数来实现。7、退出系统模块。四、测试过程1、进入系统如图所示:2、根据提示信息输入1、增加员工信息:3、根据提示信息输入3查询员工信息,选择第一种对姓名进行查询做演示:4,根据提示信息修改员工信息:5、根据提示信息输入5,选择按编号进行排序:6、根据提示信息,输入2删除员工信息五、用户使用说明 进入员工管理系统,

4、首先看到的就是主菜单界面选择1:进入添加员工信息模块,按照提示语依次录入员工对象信息。选择2:进入删除员工信息模块。选择3:进入员工查询模块,在此模块下,系统提示:按姓名查询、按编号查询,系统根据用户选择进行相应的处理,退出查询模块时,系统进入主菜单模块。选择4:进入修改员工信息模块,在该模块下,系统提示:修改整条信息,修改部分信息,系统根据用户选择,进行相应的功能处理。当用户选择退出修改模块时,系统进入主菜单模块。选择5:进入排序模块,在该模块下,系统提示:按年龄排序、按工龄排序、回复原排序,系统根据用户的选择,进行相应的处理。选择0:退出系统。六、总结 本次课程设计是围绕数据结构进行。根据

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

6、个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。七、附录程序源代码typedef structvoid ListInitiate(SLNode *head)/链表初始化 if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/动态分配存储空间 (*head)-next=NULL;SLNode *ListInsert(SLNode *head,DataType

7、 x)/职工信息的插入姓名并按照升序排列 SLNode *p,*q,*s; p=head-next; if(q=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1); q-age=x.age;work_time=x.work_time;num=x.num; strcpy(q-name,x.name);sex=x.sex;job,x.job); if(head-next=NULL) /如果只有链表的头结点,没有其他的结点,直接插入在头结点后面 head-next=q;next- else/链表非空 for(;p;p=p-next) if(p-next!=NU

8、LL) if(strcmp(p-name,x.name)name,x.name)0) /位于两个结点之间 s=p- p- q-next=s; break; else if(strcmp(p-name,x.name)=0)break; /如果姓名相同则不插入信息 else if(strcmp(p-p- /链表非空,并且在排序中是最后一个 p- q- break; if(strcmp(p- /位于链表头结点之后的位置 s=head- head- return head;void ListDelete(SLNode *head)/职工信息的删除 SLNode *p,*s; char x20; s=h

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

10、SLNode *p; if(p=NULL)/链表本身为空无职工信息,无须修改!请输入要修改的职工姓名:,x.name);依次写入该职工的新信息: for(; if(strcmp(x.name,p-name)=0)/查找到了该职工的信息姓名n scanf( getchar();性别n%c,&x.sex);年龄n%dx.age);工龄nx.work_time);职务n,x.job);编号nx.num);%s %c %d %d %s %dn,x.name,x.sex,x.age,x.work_time,x.job,x.num);修改成功! if(p=NULL)/如果链表为空此职工不存在!void p

11、ut(SLNode *head,FILE *fp)/职工信息的保存 if(fp=fopen(职工名单.txt,w)=NULL)/无法打开职工名单.txt! exit(0); for(p=head- fprintf(fp,p-name,p-sex,p-age,p-work_time,p-job,p-num); if(fclose(fp)无法关闭 exit(0);void Listfind(SLNode head)/职工信息的查找 int i,j; if(head.next=NULL)/链表为空无职工信息,无法查询! /返回主菜单t*nt* 职工信息查询操作 *nt* *nt* 0.退出查询系统,

12、回到主菜单 *nt* 1.对姓名进行查询 *nt* 2.对编号进行查询 *nt* 3.对职务进行查询 *n while(1)请输入您要选择的操作:i); if(i=0)/输入0,退出查询系统,回到主菜单 else if(i=1)/输入1,对姓名进行查询 p=head.next;请输入姓名: scanf( j=0; for(p;next)name,x.name)=0)/如果存在这个人,那么j自加 +j; printf( if(j=0)/表示没有找到输入的信息 printf(职工名单中不存在此人! else printf(查询成功! else if(i=2)/输入2,对编号进行查询请输入编号: i

13、f(p-num=x.num)/输入的编号在链表中存在/如果存在这个人,那么j自加职工名单中没有这个编号的! else if(i=3)/输入3,对职务进行查询请输入职务:job,x.job)=0)职工名单中没有这种职务的! else if(i!=0 & i!=1 &=2 &=3 &=4 &=5 &=6 &=7)/输入任意不是上述数字的,那么久显示输入错误输入出错!请再次输入! /printf(0.退出查询系统,回到主菜单n1.对姓名进行查询n 2.对编号进行查询查询n3.对对职务进行查询nvoid print(SLNode *head)/职工信息的显示 for(SLNode *p=head-ne

14、xt)/输出所有职工的信息void Listpaixu(SLNode *head)/职工信息的排序 int i,n=0,m,flag=1;next=NULL)/职工链表为空名单中无职工信息,无法排序!nntt*ntt* 职工信息排序操作 *ntt* *ntt* 0.退出排序系统,回到主菜单 *ntt* 1.对编号进行排序 *ntt* 2.对年龄进行排序 *ntt* 3.显示全部职工信息 *n if(i=0)/输入0,退出排序系统,回到主菜单 else if(i=1)/输入1,对编号进行排序 n=0,m,flag=1; for(p=head;NULL!=p;next)/统计职工人数 n+; for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q- if(p-numq-num)/p为当前节点,p的编号p的后继节点的编号 if(head=p)/p为头结点 head-next=q- head=q; q-next=p;/交换节点信息 q=head- p=head; else p- s- p=q; q=p- flag=1; 排好序的信息如下: print(head);/输出所有节点的信息 return; else if(i=2)/输入2,对年龄进行排序n+)ageage)/对年龄进行排序 if(head=p)n

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1