《数据结构员工管理信息系统》由会员分享,可在线阅读,更多相关《数据结构员工管理信息系统(51页珍藏版)》请在金锄头文库上搜索。
1、淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 员工信息管理系统 姓 名: 学 号: 专业班级: 计算机科学与技术 系 (院): 计算机工程学院 设计时间: 2018.12.252019.1.6 设计地点: 计算机实验室、教室 成绩:指导教师评语: 签名: 年 月 日1课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规
2、范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。2课程设计任务与要求:任务根据教材数据结构-C语言描述(耿国华主编)和参考书数据结构题集(C语言版)(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。设计题目从任务书所列选题表中选取,每班每题不得超过2人。学生自选课题。学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选课题需在18周前报课程设计指导教
3、师批准方可生效。要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3、程序设计语言推荐使用C/C+,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);
4、6、课程设计实践作为培养学生动手能力的一种手段,单独考核。 3课程设计说明书一 需求分析l 功能需求:该程序是模拟员工管理系统,实现输入浏览,查找,删除,修改功能。此程序规定:l 性能需求:(1) 管理员能够向系统中输入每个员工的基本信息,包括职工号、姓名、性别、年龄、学历、住址、电话等。(2) 用户能按职工号、姓名、电话查询这个员工的基本信息;(3) 管理员能够实现 录入职工信息(职工信息录入(职工信息用文件保存),可以一次完成若干条记录的输入)、浏览全部职工信息(完成对全部职工信息的显示)、查找职工信息(完成按职工的职工号查询职工的相关信息,并显示。 完成按职工的学历查询职工的相关信息,并
5、显示。 完成按职工的电话号码查询职工的相关信息,并显示。)删除职工信息(通过输入职工的姓名完成对该名职工的信息进行删除。插入新职工信息(完成添加新职工的信息的任务)修改某个职工信息(通过输入职工的姓名完成对该名职工的信息进行修改)。排序职工信息(可以按照职工号,姓名,电话号码进行排序,默认递增排序);l 数据需求:程序建立一个线性表,以数组的形式完成对员工信息(职工号、姓名、性别、年龄、学历、住址、电话)的保存用户要输入的数据类型有:1. 职工号,年龄,电话号码,为整型;2. 姓名,学历,住址,为字符数组3. 性别为字符X,Y二 概要设计l 系统用到的抽象数据类型定义: 1、ADT Linea
6、rList数据元素:D=ai|aiD0,i=1,2,n,n0,D0为某一数据对象关系:S=|ai,ai+1D0,i=1,2,n-1基本操作:(1) InitList(L)(2) DestroyList(L)(3) ClearList(L)(4) EmptyList(L)(5) ListLength(L)(6) Locate(L,e)(7) GetData(L,i)(8) InsList(L,i,e)(9) DelList(L,i,&e)ADT LinearListl 系统中的子程序和功能说明:void menu();主菜单void choose()选择要主菜单的操作;void input();
7、录入员工信息并且写到文件中void menu2();查找菜单2void search();能够实现按职工号,姓名,电话查找,并显示;void modify();从文件中读取数据,并根据要求输入职工号,查找并修改,最后重新写入文件。void insert();从文件中读取数据,新添员工信息,最后重新写入文件;void del();从文件中读取数据,输入职工号,查找到职工信息,并删除,最后重新写入文件void paixu();根据菜单选择按某一条件进行排序。void saveFile(int enNum);将数据写到文件中void saveFile2(int num, employee *em)删
8、除原文件,将数据写到另一个文件,并且重命名为原文件int ReadFile();将数据从文件中读出到em当中;void choose2(int sum);选择要执行的排序方式。void searchNum(employee em, int sum);按照员工的职工号进行查找int BinSrch1(employee r, int length, int k);采用二分法对职工号查找void BinSort(employee *em, int length);采用二分法对职工一趟查找void paixuTeleph();按照员工的电话号码进行排序void QKSort(employee r, i
9、nt low, int high);采用快速排序根据电话号码对职工排序int QKPass(employee r, int left, int right);快速排序中的一趟排序void paixuName();void paixuNUM();按照员工的职工号进行折半法排序l 功能实现过程录入员工信息void input()int n;printf(t请输入你要加入的员工数量n);scanf(%d, &n);for (int i = 0; i = n; i+)printf(t输入第%d个员工的编号n, i);Scanf(“将em数组填写完成”);将数组内容写入文件中printf(员工信息已经写
10、入文件employee-list.txt中n);采用二分法查找员工信息int BinSrch1(employee r, int length,int k)/*在有序表l中折半查找其关键字等于k的元素,若找到,则函数值为该元素在表中的位置*/int 低端,高端,中间;低端=0; 高端=数组的长度;/*置区间初值*/while( 低端 = 高端)中间点=(低端+高端) / 2;if (要查找的元素=rmid. num) return (mid);/*找到待查元素*/else if (要查找的元素rmid.num) 高端=低端-1;/*未找到,则继续在前半区间进行查找*/else low=低端+1;
11、/*继续在后半区间进行查找*/return (-1);修改员工信息void modify()int n;int mid;int 数组的大小= 从文件中读取数据();printf(数据已经从employee-list.txt中读到em数组中n);printf(一共有%d个员工n, sum);int 员工号;char 姓名;char 性别;int 年龄;char 学历;char 职务;int 电话;char 地址;printf(请输入你要修改的员工的工号:);scanf(%d,&职工号);返回职工的编号=采用二分查找法;printf(已经找到,原始信息为:);printf(职工号:姓名:年龄:性别
12、:学历:职务:电话:住址);printf(可以修改的属性);printf(1:职工号 2:姓名 3:年龄 4:性别 5:学历 6:职务7:电话 8:住址n);printf(输入你要修改的属性:(18)n);scanf(“选择要执行的选择”);switch (n)case 1:printf(输入职工号:n); scanf(职工号); 修改数组 的职工号属性 break;case 2:printf(输入姓名:n); scanf(姓名); 修改此职工的姓名; break;case 3:printf(输入性别:n);scanf(性别);修改员工的性别;break;case 4:printf(输入年龄:
13、n);scanf(年龄);修改此员工的年龄;break;case 5:printf(输入学历:n);scanf(学历);修改此员工学历;break;case 6:printf(输入职务:n);scanf(职务);修改此员工的职务break;case 7:printf(输入电话:n);scanf(电话);修改此员工的电话号码break;case 8:printf(输入住址:n);scanf(住址);修改此员工的住址;break;default:printf(输入错误,程序终止n);退出程序;break;将修改后的数组保存到文件中;插入员工信息void insert()int 数组的大小= 从文件中读取数据();int 员工号;char 姓名;char 性别;int 年龄;char 学历;char 职务;int 电话;char 地址;pri