数据结构课程设计公司职工管理系统

上传人:沈*** 文档编号:67387331 上传时间:2022-03-31 格式:DOC 页数:22 大小:1.35MB
收藏 版权申诉 举报 下载
数据结构课程设计公司职工管理系统_第1页
第1页 / 共22页
数据结构课程设计公司职工管理系统_第2页
第2页 / 共22页
数据结构课程设计公司职工管理系统_第3页
第3页 / 共22页
资源描述:

《数据结构课程设计公司职工管理系统》由会员分享,可在线阅读,更多相关《数据结构课程设计公司职工管理系统(22页珍藏版)》请在装配图网上搜索。

1、辽宁工业大学课 程 设 计 说 明 书题目: 数据结构课程设计 学院(系): 电子与信息工程学院 专业班级: 计算机科学与技术专业 学 号: 学生姓名: 指导教师: 教师职称: 副教授 起止时间: 2009.12.012009.12.08 课程设计(论文)任务及评语院(系):电子与信息工程 教研室: 软件工程学 号080401019学生姓名朱江雨专业班级计算机081课程设计(论文)题目数据结构课程设计课程设计(论文)任务1可从前四类题目中,每类选择一个题目,共需完成四个题目,或从每五类题目中选择一题,要求每个题目用标准的C语言程序实现,另外,完成思考题一题,思考题须写出相应的类C算法即可。2每

2、个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰。3 除了指定的之外,数据的存储结构根据需要自行定义。4 输入的数据由键盘输入。5 分析算法的时间复杂度,要求算法的效率尽可能高。6 验证排序算法的稳定性。指导教师评语及成绩成绩: 指导教师签字: 年 月 日目 录第1章课程设计目的与要求11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计要求1第2章 课程设计内容22.1 第五类题目22.2 题目的具体实现22.3 题目内容22.4 思考题解析16总 结18参考文献19第1章 课程设计目的与要求1.1 课程设计目的

3、 本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。 本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容,培养学生理论和实践相结合的能力,培养学生分析问题解决问题的能力。同时,在实验步骤规范化、程序设计方法等方面受到比较系统和规范的训练。通过实践设计使学生进一步加深对程序设计的规范化及对复杂程序设计步骤的理解。1.2 课程设计的实验环境 PC机,WindowsXP,Win-tc。1.3 课程设计的预备知识 C语言程序设计、高级程序设计应用、数据结构。1.4 课程设计要求(1)认真查找资料,分析每个题目应选择的数据结构(逻辑

4、结构和物理结构);(2)按时到实验室调试程序,遵守实验室的规章制度,爱护设备;(3)每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰,有必要的注释,可读性强。(4)程序健壮性强,当数据输入错误时,要进行相应的处理; (5)分析算法的时间复杂度,要求算法的效率尽可能高;(6)对于排序算法,要验证排序算法的稳定性。第2章 课程设计内容2.1 第五类题目1、简单的职工管理系统a.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。b.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。(1)新增一名职工:将新增职工对象按姓

5、名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。c.实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。(2)对职工对象中的姓名按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。2.2 题目的具体实现(一)题目应实现的具体功能(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2

6、)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。2.3 题目内容(一)题目:简单的职工管理系统(二)题目:运用结构(1)数据结构:顺序表(2)存储结构:数组(三)完整的源程序#include#define maxsize 100typedef struct worker char name15; char sex6; char birthday15; char workage15; char xueli15; char position15;

7、char adress15; char tel12; worker; typedef struct worker wmaxsize+1; int length; *work,wor;int n=0;char password10=080401019;void creatwork(work p,int t) int i,m; p-length=0; for(i=1;iwi.name); getchar(); do printf(ninput %ss sex,1:man,2:woman ,p-wi.name); scanf(%d,&m); getchar(); switch(m) case 1:s

8、trcpy(p-wi.sex,man);break;case 2:strcpy(p-wi.sex,woman);break; default:printf(input wrong,please input anain);m=0;break; while(m=0); printf(ninput %ss birthday ,p-wi.sex); scanf(%s,p-wi.birthday); printf(ninput the time when the worker begin to work ); scanf(%s,p-wi.workage); printf(ninput which sch

9、ool the worker graduate frow ); scanf(%s,p-wi.xueli); printf(ninput position ); scanf(%s,p-wi.position); printf(ninput adress ); scanf(%s,p-wi.adress); printf(ninput tel ); scanf(%s,p-wi.tel); p-length+; save(p);int save(work p) FILE *fp;char filename20;int i;printf(Please input the filenamen);scanf

10、(%s,filename);if(fp=fopen(filename,wb)=NULL) printf(cant open filen); return; fwrite(&n,sizeof(int),1,fp);for(i=1;iwi),sizeof(worker),1,fp)!=1) printf(file write errorn);fclose(fp);void load(work p)FILE *fp;int i;char filename20;p-length=0;printf(Please input the filenamen);scanf(%s,filename);if(fp=

11、fopen(filename,rb)=NULL) printf(cannot open filen); return; printf(File has been open:n); printf(File is:n);fread(&n,sizeof(int),1,fp);printf(%dn,n);getch();for (i=1;iwi,sizeof(struct worker),1,fp); p-length+; fclose(fp);void shellsort(work q,int data,int t) int k; for(k=0;kt;+k) shellsert(q,datak);

12、 int shellsert(work p,int dk) int i,j; for(i=dk+1;ilength;i+) if(strcmp(p-wi.name,p-wi-dk.name)w0=p-wi; for(j=i-dk;j0&strcmp(p-w0.name,p-wj.name)wj+dk=p-wj; p-wj+dk=p-w0; void insertwork(work p,worker q) int i,j; i=p-length; while(strcmp(q.name,p-wi.name)wi+1=p-wi; i-; p-wi+1=q; p-length+; n+;int de

13、lete(work p,char *name) int i=1,j,k; if(p-length=0) return 0; while(strcmp(name,p-wi.name)!=0)&(ilength) +i; if(strcmp(name,(p-wi.name)=0) k=i; for(j=k;jlength;j+) p-wj=p-wj+1; p-length-; n-; return k; else return 0; int changework(work p,char *name) int i=1,j,m; system(cls); while(strcmp(name,p-wi.

14、name)!=0)&(ilength) +i; if(strcmp(name,(p-wi.name)=0) printf(n do you want to change the works name,1:yes,2:no); scanf(%d,&j); if(j=1) printf(n please input name ); scanf(%s,p-wi.name); printf(n do you want to change the works sex,1:yes,2:no); scanf(%d,&j); if(j=1) getchar(); do printf(ninput %ss se

15、x,1:man,2:woman ,p-wi.name); scanf(%d,&m); getchar(); switch(m) case 1:strcpy(p-wi.sex,man);break;case 2:strcpy(p-wi.sex,woman);break; default:printf(input wrong,please input anain);m=0;break; while(m=0); printf(n do you want to change the works birthday,1:yes,2:no); scanf(%d,&j); if(j=1) printf(n p

16、lease input birthday ); scanf(%s,p-wi.birthday); printf(n do you want to change the works workage,1:yes,2:no); scanf(%d,&j); if(j=1) printf(n please input workage ); scanf(%s,p-wi.workage); printf(n do you want to change the works xueli,1:yes,2:no); scanf(%d,&j); if(j=1) printf(n please input xueli

17、); scanf(%s,p-wi.xueli); printf(n do you want to change the works position,1:yes,2:no); scanf(%d,&j); if(j=1) printf(n please input position ); scanf(%s,p-wi.position); printf(n do you want to change the works adress,1:yes,2:no); scanf(%d,&j); if(j=1) printf(n please input adress ); scanf(%s,p-wi.ad

18、ress); printf(n do you want to change the works tel,1:yes,2:no); scanf(%d,&j); if(j=1) printf(n please input tel ); scanf(%s,p-wi.tel); return i; else return 0; int chayuework(work p,char *name) int i=1; system(cls); while(strcmp(name,(p-wi.name)!=0&ilength) +i; if(strcmp(name,(p-wi.name)=0) printf(

19、nthe %ds worker name is %s,i,p-wi.name); printf(nthe %ds worker sex,is %s,i,p-wi.sex); printf(nthe %ds worker birthday is %s,i,p-wi.birthday); printf(nthe %ds worker workage is %s,i,p-wi.workage); printf(nthe %ds worker graduate from %s,i,p-wi.xueli); printf(nthe %ds worker position is %s,i,p-wi.pos

20、ition); printf(nthe %ds worker adress is %s,i,p-wi.adress); printf(nthe %ds worker tel is %s,i,p-wi.tel); return i; else return 0; void qsort(work l,int low,int high) int p=0; if(loww0=l-wlow;while(lowhigh) while(lowwhigh.name,l-wlow.name)=0) high-; l-wlow=l-whigh; while(lowwhigh.name,l-wlow.name)wh

21、igh=l-wlow; l-wlow=l-w0; p=high; return p;int travser(work p)int i;for(i=1;ilength;i+) system(cls); printf(nthe %ds worker name is %s,i,p-wi.name); printf(nthe %ds worker sex,is %s,i,p-wi.sex); printf(nthe %ds worker birthday is %s,i,p-wi.birthday); printf(nthe %ds worker workage is %s,i,p-wi.workag

22、e); printf(nthe %ds worker graduate from %s,i,p-wi.xueli); printf(nthe %ds worker position is %s,i,p-wi.position); printf(nthe %ds worker adress is %s,i,p-wi.adress); printf(nthe %ds worker tel is %s,i,p-wi.tel); system(pause); printf(nthere are %d workers,p-length);void main() char s10,name15; int

23、flag=0,a,b,c,d,e,f,i,g,j,k,data3,m=3; worker p; wor v,w; work worke,workee; worke=&w; workee=&v; do printf(please input you mima:n); scanf(%s,s); if(!strcmp(s,password) printf(congrulationn); flag=1; break; else printf(input wrong,please input anainn:n); m-; while(m0); if(!flag) printf(you have inpu

24、ttden threes times.n); return; do getchar(); printf(do you need to recreatn1:yesn2:non); scanf(%d,&g); switch(g) case 1:printf(input how many workers do you needn); scanf(%d,&n); creatwork(workee,n); break; case 2:break; default:printf(input wrong,please inout againn); g=0; break; while(g=0);printf(

25、please choose which function do you need:n0:loadf,n1:shellsort,n2:insertwork,n3:delete,n4:chaxun,n5:changework,n6:qsort,n7:travser,n8:save,n9:game over,nyou choose is); scanf(%d,&k);while(k!=9) switch(k) case 0:load(worke);break; case 1:for(i=0;i3;i+) printf(input %dth numbern,i); scanf(%d,&datai);

26、shellsort(worke,data,3); break; case 2:printf(ninput name ); scanf(%s,p.name); getchar(); e=chayuework(worke,p.name); if(e!=0) printf(n there has a elemtype that has the same name,do you need to insert againn1:yesn2:no); scanf(%d,&f); if(f=2) break; do printf(ninput %ss sex,1:man,2:woman ,p.name); s

27、canf(%d,&d); getchar(); switch(d) case 1:strcpy(p.sex,man); break; case 2:strcpy(p.sex,woman); break; default:printf(input wrong,please input anain);d=0;break; while(d=0); printf(ninput %ss birthday ,p.sex); scanf(%s,p.birthday); printf(ninput the time when the worker begin to work ); scanf(%s,p.wor

28、kage); printf(ninput which school the worker graduate from ); scanf(%s,p.xueli); printf(ninput position ); scanf(%s,p.position); printf(ninput adress ); scanf(%s,p.adress); printf(ninput tel ); scanf(%s,p.tel); insertwork(worke,p); break; case 3:printf(input the workers name you want to delete); sca

29、nf(%s,name); a=delete(worke,name); if(a=0) printf(nthere is not the worker you want delete); else printf(nthe worker you want to delete is the %ds worker,a); break; case 4:printf(input the workers name you want to chaxun); scanf(%s,name); b=chayuework(worke,name); if(b=0) printf(nthere is not the wo

30、rker you want delete); else printf(nthe worker you want to chaxune is the %ds worker,b); break; case 5:printf(input the workers name you want to change); scanf(%s,name); c=changework(worke,name); if(c=0) printf(nthere is not the worker you want change); else printf(nthe worker you want to change is

31、the %ds worker,c); break; case 6:qsort(worke,1,n); break; case 7:travser(worke); break; case 8:save(worke); default:printf(Error!Please choose again!);break; system(cls); printf(please choose which function do you need:n0:loadf,n1:shellsort,n2:insertwork,n3:delete,n4:chaxun,n5:changework,n6:qsort,n7

32、:travser,n8:save,n9:game over,nyou choose is);scanf(%d,&k); getch();(4)程序的输入和输出(可附图)图2-1 向w数组中输入数据并输出可以选择图2-2选择向w数组中输入数据并输出,显示菜单界面图2-3选择不向w数组中输入数据图2-4 输入自己的添加选择并显示添加结果图2-5功能菜单图2-6 输入文件名并打开文件将其值赋给v图2-7 将v中职工信息输出图2-8 运用希尔排序使元素信息有序图2-9 顺序插入一个元素 图2-10 删除一个职工信息 图2-11 查阅某个职工信息 图2-12 修改某个职工的某些信息 图2-13 快速排序

33、使职工信息按字典顺序存储 图2-14 使元素顺序输出 按8整个程序运行完毕(5)调试程序中遇到的问题及解决方案问题1:在输出时由于信息太多致使有的信息不能在输出栏中显示。问题2:输出的无用信息不能及时的清除掉。解决方案:经过查资料知道运用system(“pauses”);可以显示最近文件内容,解决了第一个问题。后有知道运用system(“sls”);可以删除最近输出的内容,解决了第二个问题。2.4 思考题解析 所选择的思考题:试设计构造一个哈希表的算法。哈希函数用除留余数法构造,用线性探测再散列或链地址法处理冲突。程序如下:#include typedef struct student int

34、 key; char name15; int chengji; int panduan; student,*stude;void creat(stude st,int n) int i,b,key; stude s; s=st; for(i=0;in;i+) si.panduan=0; for(i=0;in;i+) printf(please input the key of the %dth elemtypen,i); scanf(%d,&key); b=bijiao(s,key,n); sb.key=key; printf(please input the name of the %dth

35、 elemtypen,i); scanf(%s,sb.name); printf(please input the chengji of the %dth elemtypen,i); scanf(%d,&sb.chengji); sb.panduan=1; int bijiao(stude stu,int key,int n) int a,i=0; do a=(key+i)%n; i+; while(stua.panduan=1); return a; void print(stude stu,int n) int i; for(i=0;in;i+) if(stui.panduan=1) pr

36、intf(the key of the %dth elemtype is %dn,i,stui.key); printf(the name of the %dth elemtype is %sn,i,stui.name); printf(the chengji of the %dth elemtype is %dn,i,stui.chengji); void main() int a,b,c,i; student stu11; stude st; st=stu; printf(please input the number of the elemtypes do you need:i=11n)

37、; scanf(%d,&i); creat(st,i); print(st,11); getch(); 程序分析: 哈希表的的构造过程就是一个边查找边插入的过程。先用除留余数法算出该关键字的哈希地址,然后在哈希表中查找该哈希地址下是否存在其他关键字。若有,则再根据线性探测再散列的方法处理冲突,计算出下一个哈希地址,继续查找;若没有,将该关键字插入到这个位置。总 结本次课程设计对我来说应该是最成功也最有效的一次 这次我选的使第五类题中的第一个题,选择这道题的原因使因为我觉得这十分具有现实意义,具有可使用性,对于以后进入工作岗位非常的有帮助。 本程序的主要功能如下(1)新增一名职工:将新增职工对象

38、按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。 在编程中,我运用了七个主要的子函数,一个是从文件中读入职工信息,第二个是希尔排序,第三个是顺序插入一个元素,第四个是查找某个职工的信息,第五个是输入姓名删除这个职工的信息。第六个是按姓名快速排序,第七个是输入所有职工的信息。 这次编程总体说来遇到了非常多的困难,开始时的确觉得应该是非常简单的程序,在做的过程中漏洞百出,一个非常明显的错误,也是一个非常常见的错误

39、就是在按照姓名比较的时候经常会出现只要第一个字母相同就会输出的问题,在费了好大劲之后才把其中的原因弄明白,虽然很简单,但是让我明白,无论多么小的一个知识点,只要不会,就会遇到非常大的麻烦,还有一个问题,也在上面提到过,就是输出的时候,由于内容过多,致使有些内容不可见,或者是前面的输出弄乱了屏幕,使得不容易判断,在查过书之后,发现用一个非常小的语句就能把这些问题给解决掉。当然了,还有一些其他的问题,就没有必要一一说出来。 尽管遇到这么多麻烦,我还是非常满意,因为这是我完全是我自己编写的,虽然不是很完美,但是我已经非常尽力了。在整个编程的过程中,我也体会到了作为一个编程人员的烦恼与快乐,并且坚定了自己从事程序开发这个方向的决心与信心。我相信自己会成为一名非常优秀的程序员。 还有的收获就是要经常的查找资料,善于和同学交流,这样自己才能更快的发展。 给我的启示就是要经常性的编程,经常性的看书。 本人签字: 参考文献1.徐孝凯,魏荣数据结构,机械工业出版社,1996年 2.徐孝凯数据结构简明教程,清华大学出版社,1995年 3.陈文博,朱青数据结构与算法,机械工业出版社,1996年 4.许卓群,张乃孝,杨冬青,唐世渭数据结构,高等教育出版社,1988年 5.李廉治,姜文清,郭福顺数据结构,大连理工大学出版社,1989年 6.晋良颍数据结构,人民邮电出版社,2002年

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!