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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

职工信息管理系统课设报告材料.docx

1、职工信息管理系统课设报告材料*实践教学* 计算机与通信学院20 年春季学期 C程序设计 课程设计题 目:职工信息管理系统专业班级: 姓 名: 学 号: 指导教师: 成 绩:_ _摘 要 职工信息管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。 使用计算机对职工信息进行管理,具有手工管理所无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、性好、寿命长、成本低等。这些优点能够极大地提高职工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件。本系统利用C语言开发,实现了

2、简单的职工基本信息的录入、追加、修改、查询、删除等操作,并且能利用文件系统长久地保留原始数据。通过本系统的开发,我们熟悉了面向过程的程序设计的基本方法和步骤,对于C语言有了更深入的理解,并且较好地掌握了C语言的编程方法和技术。关键字:C语言;职工;信息管理系统;函数 一、需求分析1.1问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。1.2要求职工对象包括(字符串)、性别(字符)、出生年月(数字)、工作年月(数字)、学历(字符串)、职务(字符串)、住址(字符串)、(字符串)等信息。(1)新增一名职工:将新增职工对象按以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删

3、除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。1.3实现功能(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入存。(2)对职工对象中的“”按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。二、总体设计根据需求分析,为了实现系统功能,我确定职工信息管理系统总体模块如图1所示。图1 工资管理系统功能模块图三、详细设计3.1数据定义3.1.1定义表结点(typedef struct Node)ypedef struct Node long

4、 int born_time,work_time,tele_num; char sex,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX; struct Node *next;SLNode;3.1.2定义职工信息(typedef struct Datatype)typedef struct long int born_time,work_time,tele_num; char nameALLMAX,sex,degreeALLMAX,jobALLMAX,addressALLMAX;DataType;3.1.3初始化链表(ListInitiate(SL

5、Node *head))void ListInitiate(SLNode *head)/-链表初始化 if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/动态分配存储空间 (*head)-next=NULL;3.2主函数设计根据详细设计要求,可以得到主函数代码及其对应的程序流程图。在主函数中,实现了友好的界面设计。系统需要输入职工的基本信息:、性别、出生年月、工作年月、学历、职务、住址、等。这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有七种操作的调用:新增职工信息:SLNode *ListInsert(SLNode *head

6、,DataType x)查询职工信息:Listfind(SLNode head)删除职工信息:ListDelete(SLNode *head)修改职工信息:ListModify(SLNode *head)职工信息排序:Listpaixu(SLNode *head)保存职工信息:put(SLNode *head,FILE *fp)显示职工信息:print(SLNode *head) 3.3算法流程图3.3.1 保存函数Save()的算法流程图如图2所示。FILE *fp;(fp=fopen(outfile,wb)=NULLprintf(nSaving file.n);printf(can not

7、 open filen);p!=NULLfclose(fp);fwrite(p,sizeof(SALARY),1,fp);图2 保存函数Save()的算法流程图3.3.2 主函数程序流程图如图3所示。图3 主函数程序流程图3.3.3 按查找的算法流程图如图4所示。 图4 按查找的算法流程图3.3.4 排序算法流程图如图5所示。图5 排序算法流程图四、编码4.1总体框架0,退出职工管理系统;1,提示依次输入职工信息,录入完毕自动返回主界面;2,提示输入删除的,成功正确返回,错误有提示无此员工信息;3,会提示查询方式:0.退出查询系统,回到主菜单1.对进行查询2.对出生年月进行查询3.对学历进行查

8、询4.对工作年月进行查询,输入相应编号进行查询;4,提示输入修改职工,然后进行依次修改职工所有信息;5,提示:0.退出排序系统,回到主菜单1.对性别进行排序2.对出生年月进行排序3.对工作年月进行排序4.对进行排序,输入进行查询。(详细见附录)4.2模块设计模块函数或数据结构功能链表数据类型typedef struct Node定义链表结点typedef struct Datatype定义职工信息ListInitiate(SLNode *head)初始化链表系统处理模块SLNode *ListInsert(SLNode *head,DataType x)插入职工信息ListDelete(SLN

9、ode *head)删除职工信息ListModify(SLNode *head)修改职工信息put(SLNode *head,FILE *fp)保存职工信息Listfind(SLNode head)查询职工信息Listpaixu(SLNode *head)职工信息排序输出模块print(SLNode *head)显示职工信息五、测试5.1职工管理系统主界面在Visual C+ 6.0中运行本系统,可以得到图5所示的录入职工人数界面。图7主菜单界面在图5中输入0,进入图6所示的系统主菜单界面。图6 系统主菜单界面5.2进入新增职工信息界面在图6中输入1,进入图7所示的新增职工界面。图7 新增职工

10、信息界面 5.3进入删除职工信息界面在图7中输入2,进入图8所示的删除职工信息界面。图8 删除职工信息界面5.4进入查询职工信息界面在图8中输入3,进入图9所示的查询职工信息界面。图9 查询职工信息界面在图9中输入1,进入图10所示的对查询界面。 图10 对进行查询5.5进入修改职工信息界面在图10中先输入0返回图5所示的主菜单,再输入4,进入11图所示的修改职工信息界面。图11 修改职工信息系统界面5.6进入职工信息排序界面在图11中输入5,进入图12所示的职工信息排序界面。图12 职工信息排序界面5.7退出系统在图12中先输入0返回图5所示的主菜单,再输入0退出职工管理系统 图13 退出职

11、工管理系统六、设计总结本次课程设计是围绕数据结构进行。根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个职工管理系统功能,那就是在这个系统中实现对职工信息的插入、删除、查询、排序、修改以及保存。但是,为了实现该功能,却需要优秀的算法和数据结构以保证实现的时间和空间效率。把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。虽然设计的程序完成了题目描述所需要实现的功能,但是仍然存在不如人意的地方。那就是可以排序上面多设计几个算法。实现多角度排序。在这个系统中没有职工序号的信息,所以允许职工相同,在很大程度上面,可能是的职工信息重复。经过这次数据结构课程设计,我们不仅及时

12、巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。致谢通过一周的努

13、力,我们顺利完成这一次的课程设计。在这里,首先感谢指导老师x老师在知识和技术上的指导和帮助。在x老师的帮助下,我们克服了许多技术上的难题,顺利地完成这次课程设计。同时,也要感谢与我同做一个课题的xxx同学。在我们两人的共同努力下,终于顺利地完成了这次课程设计。 参考文献1姜灵芝,余健. C语言课程设计案例精编.:清华大学,20082王新,雷. C语言课程设计.:清华大学,20093游洪跃、彭骏、谭斌.C语言程序设计实验与课程设计教程.:清华大学,20114王连相.C/C+程序设计上机指导与测试. :中国铁道,20065C语言函数手册,机械工业,1999附录#include #include #

14、include #include #define ALLMAX 100 /总共统计的职工的人数typedef struct Node long int born_date,work_date,tele_num; char sex,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX; struct Node *next;SLNode;typedef struct long int born_date,work_date,tele_num; char nameALLMAX,sex,degreeALLMAX,jobALLMAX,addressALLMAX;

15、DataType;void ListInitiate(SLNode *head)/链表初始化 if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/动态分配存储空间 (*head)-next=NULL;SLNode *ListInsert(SLNode *head,DataType x)/职工信息的插入并按照升序排列 SLNode *p,*q,*s; p=head-next; if(q=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/动态分配存储空间 q-born_date=x.born_d

16、ate; q-work_date=x.work_date; q-tele_num=x.tele_num; strcpy(q-name,x.name); q-sex=x.sex; strcpy(q-degree,x.degree); strcpy(q-job,x.job); strcpy(q-address,x.address); if(head-next=NULL)/如果只有链表的头结点,没有其他的结点,直接插入在头结点后面 head-next=q; head-next-next=NULL; else/链表非空 for(;p;p=p-next) if(p-next!=NULL) if(strc

17、mp(p-name,x.name)next-name,x.name)0)/位于两个结点之间 s=p-next; p-next=q; q-next=s; break; /else if(strcmp(p-name,x.name)=0)break; /如果相同则不插入信息 else if(strcmp(p-name,x.name)next=NULL)/链表非空,并且在排序中是最后一个 p-next=q; q-next=NULL; break; if(strcmp(p-name,x.name)0)/位于链表头结点之后的位置 s=head-next; head-next=q; q-next=s; br

18、eak; return head;void ListDelete(SLNode *head)/职工信息的删除 SLNode *p,*s; char x20; s=head; p=head-next; if(head-next=NULL)/链表为空,输出:中无职工信息,无须删除! printf(中无此职工信息,无须删除!n); return; printf(请输入要删除职工的:n); /输入要删除的人的 scanf(%s,x); for(p;p;p=p-next)/在链表中从头到尾查找输入的人的 if(strcmp(p-name,x)=0) /如果存在,则删除,否则输出:中无职工信息,无须删除!

19、 s-next=p-next; free(p); printf(删除成功!请继续操作!n); break; s=p; if(p=NULL)/链表本身为空 printf(中无此职工信息,无须删除!n); void ListModify(SLNode *head)/职工信息的修改 DataType x; SLNode *p; p=head-next; if(p=NULL)/链表本身为空 printf(职工无职工信息,无须修改!n); return; printf(请输入要修改的职工:n); scanf(%s,x.name); for(;p;p=p-next) if(strcmp(x.name,p-

20、name)=0)/查找到了该职工的信息 printf(依次写入该职工的新信息:n); printf(请输入职工信息:n、性别、出生年月、工作年月、学历、职务、住址、n); scanf(%s %c %d %d %s %s %s %d,p-name,&p-sex,&p-born_date,&p-work_date,p-degree,p-job,p-address,&p-tele_num); printf(修改成功!请继续操作!n); break; if(p=NULL)/如果链表为空 printf(此职工不存在,无法修改其信息!n); void put(SLNode *head,FILE *fp)/

21、职工信息的保存 SLNode *p; if(fp=fopen(Employee.txt,w)=NULL)/ printf(无法打开Employee.txt!n); exit(0); for(p=head-next;p;p=p-next) fprintf(fp,%s %c %d %d %s %s %s %dn,p-name,p-sex,p-born_date,p-work_date,p-degree,p-job,p-address,p-tele_num); if(fclose(fp) printf(无法关闭Employee.txt!n); exit(0); void Listfind(SLNod

22、e head)/职工信息的查找 int i,j; SLNode *p; DataType x; if(head.next=NULL)/链表为空 printf(中无职工信息,查询失败!n); return; /返回主菜单 printf(n); printf(tn); printf(t 职工信息查询操作 n); printf(t n); printf(t 0.退出查询系统,回到主菜单tt 1.对进行查询tnt 2.对出生年月进行查询 tt 3.对学历进行查询tnt 4.对工作年月进行查询 tt 5.对职务进行查询tnt 6.对住址进行查询 tt 7.对进行查询tn); printf(tn); wh

23、ile(1) printf(请输入您要选择的操作:); scanf(%d,&i); if(i=0)/输入0,退出查询系统,回到主菜单 break; else if(i=1)/输入1,对进行查询 p=head.next; printf(请输入:); scanf(%s,x.name); j=0; for(p;p;p=p-next) if(strcmp(p-name,x.name)=0)/如果存在这个人,那么j自加 +j; printf(n、性别、出生年月、工作年月、学历、职务、住址、n); printf(%s %c %d %d %s %s %s %dn,p-name,p-sex,p-born_da

24、te,p-work_date,p-degree,p-job,p-address,p-tele_num); if(j=0)/表示没有找到输入的信息 printf(职工中不存在此人!n); else printf(查询成功!继续操作!n); else if(i=2)/输入2,对出生年月进行查询 p=head.next; printf(请输入出生年月:); scanf(%d,&x.born_date); j=0; for(p;p;p=p-next) if(p-born_date=x.born_date)/输入的出生年月在链表中存在 +j;/如果存在这个人,那么j自加 printf(n、性别、出生年月

25、、工作年月、学历、职务、住址、n); printf(%s %c %d %d %s %s %s %dn,p-name,p-sex,p-born_date,p-work_date,p-degree,p-job,p-address,p-tele_num); if(j=0)/表示没有找到输入的信息 printf(职工中没有这个时间出生的!n); else printf(查询成功!请继续操作!n); else if(i=4)/输入4,对工作年月进行查询 p=head.next; printf(请输入工作年月:); scanf(%d,&x.work_date); j=0; for(p;p;p=p-next

26、) if(p-work_date=x.work_date) +j;/如果存在这个人,那么j自加 printf(n、性别、出生年月、工作年月、学历、职务、住址、n); printf(%s %c %d %d %s %s %s %dn,p-name,p-sex,p-born_date,p-work_date,p-degree,p-job,p-address,p-tele_num); if(j=0)/表示没有找到输入的信息 printf(职工中没有这个时间工作的!n); else printf(查询成功!请继续操作!n); else if(i=3)/输入3,对学历进行查询 p=head.next; p

27、rintf(请输入学历:); scanf(%s,x.degree); j=0; for(p;p;p=p-next) if(strcmp(p-degree,x.degree)=0) +j;/如果存在这个人,那么j自加 printf(n、性别、出生年月、工作年月、学历、职务、住址、n); printf(%s %c %d %d %s %s %s %dn,p-name,p-sex,p-born_date,p-work_date,p-degree,p-job,p-address,p-tele_num); if(j=0)/表示没有找到输入的信息 printf(职工中没有这种学历的!n); else printf(查询成功!请继续操作!n); else if(i=5)/输入5,对职务进行查询 p=head.next; printf(请输入职务:); scanf(%s,x.job); j=0; for(p;p;p=p-next) if(strcmp(p-job,x.job)=0) +j;/如果存在这个人,那么j自加 printf(n、性别、出生年月、工作年月、学历、职务、住址、n); printf(%s %c %d %d %s %s %s %dn,p-name,p-sex,p-born_date,p-work_date,p-

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

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