欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

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

  • 资源ID:67387331       资源大小:1.35MB        全文页数:22页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

辽宁工业大学课 程 设 计 说 明 书题目: 数据结构课程设计 学院(系): 电子与信息工程学院 专业班级: 计算机科学与技术专业 学 号: 学生姓名: 指导教师: 教师职称: 副教授 起止时间: 2009.12.012009.12.08 课程设计(论文)任务及评语院(系):电子与信息工程 教研室: 软件工程学 号080401019学生姓名朱江雨专业班级计算机081课程设计(论文)题目数据结构课程设计课程设计(论文)任务1可从前四类题目中,每类选择一个题目,共需完成四个题目,或从每五类题目中选择一题,要求每个题目用标准的C语言程序实现,另外,完成思考题一题,思考题须写出相应的类C算法即可。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 课程设计目的 本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。 本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容,培养学生理论和实践相结合的能力,培养学生分析问题解决问题的能力。同时,在实验步骤规范化、程序设计方法等方面受到比较系统和规范的训练。通过实践设计使学生进一步加深对程序设计的规范化及对复杂程序设计步骤的理解。1.2 课程设计的实验环境 PC机,WindowsXP,Win-tc。1.3 课程设计的预备知识 C语言程序设计、高级程序设计应用、数据结构。1.4 课程设计要求(1)认真查找资料,分析每个题目应选择的数据结构(逻辑结构和物理结构);(2)按时到实验室调试程序,遵守实验室的规章制度,爱护设备;(3)每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰,有必要的注释,可读性强。(4)程序健壮性强,当数据输入错误时,要进行相应的处理; (5)分析算法的时间复杂度,要求算法的效率尽可能高;(6)对于排序算法,要验证排序算法的稳定性。第2章 课程设计内容2.1 第五类题目1、简单的职工管理系统a.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。b.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。c.实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。(2)对职工对象中的"姓名"按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。2.2 题目的具体实现(一)题目应实现的具体功能(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。2.3 题目内容(一)题目:简单的职工管理系统(二)题目:运用结构(1)数据结构:顺序表(2)存储结构:数组(三)完整的源程序#include<stdio.h>#define maxsize 100typedef struct worker char name15; char sex6; char birthday15; char workage15; char xueli15; char position15; 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;i<=t;i+) printf("ninput name "); scanf("%s",p->wi.name); getchar(); do printf("ninput %s's sex,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("ninput %s's 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 school 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("%s",filename);if(fp=fopen(filename,"wb")=NULL) printf("can't open filen"); return; fwrite(&n,sizeof(int),1,fp);for(i=1;i<=n;i+) if(fwrite(&(p->wi),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=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;i<=n;i+) fread(&p->wi,sizeof(struct worker),1,fp); p->length+; fclose(fp);void shellsort(work q,int data,int t) int k; for(k=0;k<t;+k) shellsert(q,datak); int shellsert(work p,int dk) int i,j; for(i=dk+1;i<=p->length;i+) if(strcmp(p->wi.name,p->wi-dk.name)<=0) p->w0=p->wi; for(j=i-dk;j>0&&strcmp(p->w0.name,p->wj.name)<=0;j-=dk) p->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)<=0) p->wi+1=p->wi; i-; p->wi+1=q; p->length+; n+;int delete(work p,char *name) int i=1,j,k; if(p->length=0) return 0; while(strcmp(name,p->wi.name)!=0)&&(i<=p->length) +i; if(strcmp(name,(p->wi.name)=0) k=i; for(j=k;j<p->length;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.name)!=0)&&(i<=p->length) +i; if(strcmp(name,(p->wi.name)=0) printf("n do you want to change the work's 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 work's sex,1:yes,2:no"); scanf("%d",&j); if(j=1) getchar(); do printf("ninput %s's sex,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 work's birthday,1:yes,2:no"); scanf("%d",&j); if(j=1) printf("n please input birthday "); scanf("%s",p->wi.birthday); printf("n do you want to change the work's 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 work's xueli,1:yes,2:no"); scanf("%d",&j); if(j=1) printf("n please input xueli "); scanf("%s",p->wi.xueli); printf("n do you want to change the work's 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 work's adress,1:yes,2:no"); scanf("%d",&j); if(j=1) printf("n please input adress "); scanf("%s",p->wi.adress); printf("n do you want to change the work's 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&&i<=p->length) +i; if(strcmp(name,(p->wi.name)=0) printf("nthe %d's worker name is %s",i,p->wi.name); printf("nthe %d's worker sex,is %s",i,p->wi.sex); printf("nthe %d's worker birthday is %s",i,p->wi.birthday); printf("nthe %d's worker workage is %s",i,p->wi.workage); printf("nthe %d's worker graduate from %s",i,p->wi.xueli); printf("nthe %d's worker position is %s",i,p->wi.position); printf("nthe %d's worker adress is %s",i,p->wi.adress); printf("nthe %d's 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(low<high) p=quicksort(l,low,high); qsort(l,low,p-1); qsort(l,p+1,high); int quicksort(work l,int low,int high)int p;l->w0=l->wlow;while(low<high) while(low<high)&&(strcmp(l->whigh.name,l->wlow.name)>=0) high-; l->wlow=l->whigh; while(low<high)&&(strcmp(l->whigh.name,l->wlow.name)<=0) low+; l->whigh=l->wlow; l->wlow=l->w0; p=high; return p;int travser(work p)int i;for(i=1;i<=p->length;i+) system("cls"); printf("nthe %d's worker name is %s",i,p->wi.name); printf("nthe %d's worker sex,is %s",i,p->wi.sex); printf("nthe %d's worker birthday is %s",i,p->wi.birthday); printf("nthe %d's worker workage is %s",i,p->wi.workage); printf("nthe %d's worker graduate from %s",i,p->wi.xueli); printf("nthe %d's worker position is %s",i,p->wi.position); printf("nthe %d's worker adress is %s",i,p->wi.adress); printf("nthe %d's worker tel is %s",i,p->wi.tel); system("pause"); printf("nthere are %d workers",p->length);void main() char s10,name15; int 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(m>0); if(!flag) printf("you have inputtden 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("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;i<3;i+) printf("input %dth numbern",i); scanf("%d",&datai); 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 %s's sex,1:man,2:woman ",p.name); scanf("%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 %s's birthday ",p.sex); scanf("%s",p.birthday); printf("ninput the time when the worker begin to work "); scanf("%s",p.workage); 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 worker's name you want to delete"); scanf("%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 %d's worker",a); break; case 4:printf("input the worker's name you want to chaxun"); scanf("%s",name); b=chayuework(worke,name); if(b=0) printf("nthere is not the worker you want delete"); else printf("nthe worker you want to chaxune is the %d's worker",b); break; case 5:printf("input the worker's 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 the %d's 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: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 快速排序使职工信息按字典顺序存储 图2-14 使元素顺序输出 按8整个程序运行完毕(5)调试程序中遇到的问题及解决方案问题1:在输出时由于信息太多致使有的信息不能在输出栏中显示。问题2:输出的无用信息不能及时的清除掉。解决方案:经过查资料知道运用system(“pauses”);可以显示最近文件内容,解决了第一个问题。后有知道运用system(“sls”);可以删除最近输出的内容,解决了第二个问题。2.4 思考题解析 所选择的思考题:试设计构造一个哈希表的算法。哈希函数用除留余数法构造,用线性探测再散列或链地址法处理冲突。程序如下:#include<stdio.h> typedef struct student int 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;i<n;i+) si.panduan=0; for(i=0;i<n;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 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;i<n;i+) if(stui.panduan=1) printf("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"); scanf("%d",&i); creat(st,i); print(st,11); getch(); 程序分析: 哈希表的的构造过程就是一个边查找边插入的过程。先用除留余数法算出该关键字的哈希地址,然后在哈希表中查找该哈希地址下是否存在其他关键字。若有,则再根据线性探测再散列的方法处理冲突,计算出下一个哈希地址,继续查找;若没有,将该关键字插入到这个位置。总 结本次课程设计对我来说应该是最成功也最有效的一次 这次我选的使第五类题中的第一个题,选择这道题的原因使因为我觉得这十分具有现实意义,具有可使用性,对于以后进入工作岗位非常的有帮助。 本程序的主要功能如下(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。 在编程中,我运用了七个主要的子函数,一个是从文件中读入职工信息,第二个是希尔排序,第三个是顺序插入一个元素,第四个是查找某个职工的信息,第五个是输入姓名删除这个职工的信息。第六个是按姓名快速排序,第七个是输入所有职工的信息。 这次编程总体说来遇到了非常多的困难,开始时的确觉得应该是非常简单的程序,在做的过程中漏洞百出,一个非常明显的错误,也是一个非常常见的错误就是在按照姓名比较的时候经常会出现只要第一个字母相同就会输出的问题,在费了好大劲之后才把其中的原因弄明白,虽然很简单,但是让我明白,无论多么小的一个知识点,只要不会,就会遇到非常大的麻烦,还有一个问题,也在上面提到过,就是输出的时候,由于内容过多,致使有些内容不可见,或者是前面的输出弄乱了屏幕,使得不容易判断,在查过书之后,发现用一个非常小的语句就能把这些问题给解决掉。当然了,还有一些其他的问题,就没有必要一一说出来。 尽管遇到这么多麻烦,我还是非常满意,因为这是我完全是我自己编写的,虽然不是很完美,但是我已经非常尽力了。在整个编程的过程中,我也体会到了作为一个编程人员的烦恼与快乐,并且坚定了自己从事程序开发这个方向的决心与信心。我相信自己会成为一名非常优秀的程序员。 还有的收获就是要经常的查找资料,善于和同学交流,这样自己才能更快的发展。 给我的启示就是要经常性的编程,经常性的看书。 本人签字: 参考文献1.徐孝凯,魏荣数据结构,机械工业出版社,1996年 2.徐孝凯数据结构简明教程,清华大学出版社,1995年 3.陈文博,朱青数据结构与算法,机械工业出版社,1996年 4.许卓群,张乃孝,杨冬青,唐世渭数据结构,高等教育出版社,1988年 5.李廉治,姜文清,郭福顺数据结构,大连理工大学出版社,1989年 6.晋良颍数据结构,人民邮电出版社,2002年

注意事项

本文(数据结构课程设计公司职工管理系统)为本站会员(沈***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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