数据结构课程设计---员工管理系统.docx_第1页
数据结构课程设计---员工管理系统.docx_第2页
数据结构课程设计---员工管理系统.docx_第3页
数据结构课程设计---员工管理系统.docx_第4页
数据结构课程设计---员工管理系统.docx_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计员工管理系统目 录1、 课程设计的目的:12、 需求分析:11. 要求:12. 详细功能:13、课程设计报告内容:11. 员工管理系统调用关系图:12. 设计结构体及函数表:23. 实现主程序和各模块的调用关系:24、 详细设计:31. 各个操作的算法实现:32.程序清单:(见附录)45、参考文献:56、 部分运行结果界面:51.调试分析:72. 调试中遇到的问题:77、总结:88、附录:(程序)81、 课程设计的目的:用数据结构所学的知识作数据结构,并结合C语言基本知识。编写一个简单的职工管理系统。以把所学数据结构知识应用到实际软件开发中去。了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;2、 需求分析:1. 要求:职工对象包括姓名、性别、出生年月、学历、职务、住址、电话等信息。(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。2. 详细功能:A. 信息排序sort():按员工的工号进行排序,并输出排序结果。B.信息修改num_modify(): 按员工工号找出员工信息,然后从新输入,进行覆盖,实现修改。C.信息添加 add():系统将提示输入新纪录所需信息,信息包含:姓名、性别、出生年月、学历、职务、住址、电话。D.信息删除num_del():首先提示用户输入要删除的员工工号,然后调用删除函数,删除该纪录的相关资料,支持重名选择删除和循环删除。E.查找num_query():提示用户输入要查找的员工工号,然后系统调用查找函数查找,接着系统使用相关命令输出查到的全部信息。F.显示全部disp():将内存中的纪录内容全部输出,包括未保存到磁盘的记录项。G.保存save():将操作结果实时保存到磁盘文件employee.txt中,完成后返回到主菜单界面。H.退出系统exit(0):直接退出系统,不保存修改。3、课程设计报告内容:1. 员工管理系统调用关系图:略。2. 设计结构体及函数表:(1)结构体:struct employee char num10;char name15;char sex5;char born20;char xl20;char zz10;char tel20;(2)函数目录表:int read_file(struct employee em);void menu();void write_file(struct employee em);void add(); void select(); /查看职工所有信息void num_query(); /按工号查询void num_del(); /按工号删除void sort(); /排序void num_modify(); /按工号修改职工信息void save(); /保存信息void disp(); /显示职工信息void fh(); /返回主菜单struct employee em300; /这个数组用来保存所有的职工信息 和文件里面的一致3. 实现主程序和各模块的调用关系:void main() int choose=0; FILE *fp=NULL; char yesorno; if(fp=fopen(employee1.txt,rb+)=NULL) printf(n=提示:文件不存在,是否要创建一个?(y/n)n); scanf(%c,&yesorno); if(yesorno=y|yesorno=Y) /这里仅为了建立文件 fp=fopen(employee1.txt,wb+); fclose(fp); /关闭fp所指的文件,释放文件缓冲区 else exit(0); else Number=read_file(em); /要是文件已经有数据 将数据初始化到数组中 system(cls); while(1) menu(); printf(tt=请选择:); scanf(%d,&choose); system(cls); switch(choose) case 0: exit(0); /退出 break; case 1: add();fh();/增加职工信息 break; case 2:select();fh();/查看职工信息 break; case 3: num_query();fh();/ 查找 break;case 4:num_del(); fh();/删除 break; case 5: sort();fh();/排序 break; case 6: num_modify();fh();/修改后返回 break;case 7:save();fh();/保存 break;case 8:disp();fh();break;/显示default:break; fflush(stdin); getchar(); system(cls);void menu()/显示菜单printf(t*n);printf(t* *n);printf(t* 职工信息管理系统_结构体数组实现 *n);printf(t* *n);printf(t* 1 增加职工信息 2 查看职工信息 *n);printf(t* 3 查找职工信息 4 删除职工信息 *n);printf(t* 5 职工工资排列 6 修改职工信息 *n);printf(t* 7 保存职工信息 8 显示职工信息 *n);printf(t* 0 退出系统 *n);printf(t* *n);printf(t*n);1. 各个操作的算法实现:(1)程序菜单的显示void menu()(2)增加员工信息void add()/增加职工 int numberTemp=0;int i=0;struct employee temp; /临时保存信息 printf(添加成功n);(3)按员工学号查找void num_query()/按工号查找 char num20;int i=0;printf(请输入要查找职工工号:);scanf(%s,&num);system(cls);printf(t工号t姓名t性别t出生年月t电话t学历t住址n);for (i=0;i按Enter键返回主菜单n); (4)显示所有记录void disp ()/显示所有纪录 /显示内存中的所有记录; (5) 删除指定记录void num_del() /删除纪录 /输入要删除的姓名;/查找符合条件的记录,对于每条记录询问是否删除;/满足条件的输出结束,询问是否删除其他记录,循环;(6) 保存到磁盘文件(实时写入文件)void save()/ /写入文件操作;2.程序清单:(见附录)5、参考文献:1 严蔚敏,吴伟民 编著. 数据结构(C语言版)北京: 清华大学出版社,2007.2 王秀贵 曹江莲 编著 (C语言程序设计教程) 中国铁道出版社出版 2007年印刷 6、 部分运行结果界面:1.调试分析:经过反复测试,最终提供了一个较为友好的界面和操作模式,而且容错能力较好,稳定性很强。下面做一些简单的说明:(1)2级菜单只是作为一种尝试,并非必须!(2) 在界面排版上,我学习了互联网上部分程序的界面编排,其中以格式控制方式显示提 高了界面显示的稳定性,较为理想。(3) 在文件读取和保存方面,该程序做到了实时保存保存和读取,操作非常简便。(4) 在查找方面,我将其设计为一次多记录的显示方式,也更合乎操作习惯,界面较为友 好,对于无符合条件的结果,只是结果集为空,界面保持不变。(5) 删除功能我做了较多的工作,整体界面和设计都较为合理。对于输入的员工工号,查 找出结果后提示是否删除。2. 调试中遇到的问题:(1) 在对于工号修改的时候,由于某些原因造成老是修改不成功,最后经过多次的和 同学的一起研究和讨论,最后找出结果,由于少了一个对于文件标记的修改,造成的,最后加入了一个标记的修改,最后终于成功了。(2) 在员工信息的排列中,还是存在着一些问题,比如它并不按照我所写的那个排序的程序进行排序,连它是按照那个排序进行的排序我都不清楚,希望老师可以帮我看看。7、总结:通过做这个课程设计让我了解并掌握了数据结构与算法的设计方法,初步掌握了独立分析和设计能力;以及软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;使我提高了编写技术文献的能力(尤其是目录的提取,结构图的绘制等)。8、附录:(程序)/C语言课程设计 职工信息管理系统-结构体数组实现#include #include #include struct employee char num10;char name15;char sex5;char born20;char xl20;char zz10;char tel20;int read_file(struct employee em);void menu();void write_file(struct employee em);void add(); void select(); /查看职工所有信息void num_query(); /按工号查询void num_del(); /按工号删除void sort(); /排序void num_modify(); /按工号修改职工信息void save(); /保存信息void disp(); /显示职工信息void fh(); /返回主菜单struct employee em300; /这个数组用来保存所有的职工信息 和文件里面的一致int Number=0; /记录总的职工人数 也就是数组/文件里面的职工人数void menu()printf(t*n);printf(t* *n);printf(t* 职工信息管理系统_结构体数组实现 *n);printf(t* *n);printf(t* 1 增加职工信息 2 查看职工信息 *n);printf(t* 3 查找职工信息 4 删除职工信息 *n);printf(t* 5 职工工资排列 6 修改职工信息 *n);printf(t* 7 保存职工信息 8 显示职工信息 *n);printf(t* 0 退出系统 *n);printf(t* *n);printf(t*n);void main() int choose=0; FILE *fp=NULL; char yesorno; if(fp=fopen(employee1.txt,rb+)=NULL) printf(n=提示:文件不存在,是否要创建一个?(y/n)n); scanf(%c,&yesorno); if(yesorno=y|yesorno=Y) /这里仅为了建立文件 fp=fopen(employee1.txt,wb+); fclose(fp); /关闭fp所指的文件,释放文件缓冲区 else exit(0); else Number=read_file(em); /要是文件已经有数据 将数据初始化到数组中 system(cls); while(1) menu(); printf(tt=请选择:); scanf(%d,&choose); system(cls); switch(choose) case 0: exit(0); /退出 break; case 1: add();fh();/增加职工信息 break; case 2:select();fh();/查看职工信息 break; case 3: num_query();fh();/ 查找 break;case 4:num_del(); fh();/删除 break; case 5: sort();fh();/排序 break; case 6: num_modify();fh();/修改后返回 break;case 7:save();fh();/保存 break;case 8:disp();fh();break;/显示default:break; fflush(stdin); getchar(); system(cls);void num_query()/按工号查找 char num20;int i=0;printf(请输入要查找职工工号:);scanf(%s,&num);system(cls);printf(t工号t姓名t性别t出生年月t电话t学历t住址n);for (i=0;i按Enter键返回主菜单n);void num_modify() /修改职工信息FILE *fp=NULL;char gh60;int i=0;int changeIndex=0; /changeIndex 改变标记int index=0;printf(请输入要修改的职工工号:);scanf(%s,gh);for (i=0;iNumber;i+)if (strcmp(gh,emi.num)=0) /比较输入工号和数组中已有工号changeIndex=i; /保存要修改的人的下标break;printf(t工号t姓名t性别t出生年月t电话t学历t住址n);printf(t%st%st%st%st%st%st%st%snn,emchangeIndex.num,emchangeI,emchangeIndex.sex,emchangeIndex.born,emchangeIndex.tel,emchangeIndex.xl,emchangeIndex.zz);printf(请重新输入该职工信息);printf(工号:);scanf(%s,emchangeIndex.num);printf(姓名:);scanf(%s,emchangeI);printf(性别:);scanf(%s,emchangeIndex.sex); printf(出生年月:);scanf(%s,&emchangeIndex.born);printf(电话:);scanf(%s,&emchangeIndex.tel);printf(学历:);scanf(%s,&emchangeIndex.xl);printf(住址:);scanf(%s,&emchangeIndex.zz);/信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen(employee1.txt,wb+);for (i=0;i修改成功n);void disp() /输出所有职工信息 int i=0;for (i=0;iNumber;i+)printf(t%st%st%st%st%st%st%snn,emi.num,,emi.sex,emi.born,emi.tel,emi.xl,emi.zz); void sort()/排序 struct employee t;int wantNUmber=0;int i=0;int j=0;int k=0; for(i=0;iNumber-1;i+)k=i;for(j=i+1;jemk.num)k=j;if(k!=i)t=emi;emi=emk;emk=t; printf(你想输出前几名职工的信息:); scanf(%d,&wantNUmber);if (wantNUmberNumber)wantNUmber=Number; printf(t工号t姓名t性别t出生年月t电话t学历t住址n); for(i=0;iwantNUmber;i+) printf(t%st%st%st%st%st%st%snn,emi.num,,emi.sex,emi.born,emi.tel,emi.xl,emi.zz); void num_del()FILE *fp; char gh60;char ch;int i=0,j=0;int changeIndex=0; /changeIndex 改变标记int index=0; printf(请输入要删除的人员工号:);scanf(%s,gh);for(i=0;iNumber;i+)if(strcmp(gh,emi.num)=0)printf(找到要删除的人员信息如下n);printf(-n);printf(t工号t姓名t性别t出生年月t电话t学历t住址n); printf(t%st%st%st%st%st%st%snn,emi.num,,emi.sex,emi.born,emi.tel,emi.xl,emi.zz); printf(-n);printf(你确定要删除该人员信息吗?(y/Y):);scanf(%s,&ch);if(ch=Y|ch=y) for(j=i;jNumber-1;j+) emj=emj+1; Number-;elsebreak;if(strcmp(gh,emi.num)!=0) printf(ttt警告:没有你要删除的相关数据!);fp=fopen(employee.txt,wb);for(i=0;i删除成功!);void select()/查看职工 int i=0;printf(以下是全部职工信息n);printf(t工号t姓名t性别t出生年月t电话t学历t住址n);for(i=0;iNumber;i+)printf(t%st%st

温馨提示

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

评论

0/150

提交评论