数据结构课程设计员工管理系统.doc
郑州轻工业学院课 程 设 计 任 务 书题目 员工管理系统 专业、班级 电子商务082学号 200812030201姓名主要内容、基本要求、主要参考资料等:主要内容:在进行了专业基础课和数据结构课程的基础上,设计一个实际的应用软件,初步软件设计的基本方法,提高进行工程设计的基本技能及分析、解决实际问题的能力,为毕业设计和以后的工程实践打下良好的基础。基本要求:巩固和加深对数据结构的理解,提高综合运用本课程所学知识的能力。培养学生选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。通过课程设计,培养学生严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。主要参考资料:1 严蔚敏,吴伟民. 数据结构:C语言版. 清华大学出版社,2007.完 成 期 限: 2011年7月1日 指导教师签名: 课程负责人签名: 2011年 6月 27日郑州轻工业学院本科数据结构课程设计总结报告设计题目:员工管理系统学生姓名:陈超系 别:国际教育学院专 业:电子商务班 级:08-02学 号:200812030201指导教师:王捷 2011年6月30日目 录第一章 设计题目1第二章 运行环境1第一节 硬件1第二节 软件1第三章 算法设计的思想2第四章 算法的流程图2第五章 算法设计分析2第六章 源代码2第一节 头文件2第二节 主程序8第七章 运行结果分析11第八章 收获及体会17第九章 参考文献18第一章 设计题目员工管理系统。每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。(1) 排序:按不同关键字,对所有员工的信息进行排序。(2) 查询:按特定条件查找员工。(3) 更新:按编号对某个员工的某项信息进行修改。(4) 插入:加入新员工的信息。(5) 删除:按编号删除已离职的员工的信息。第二章 运行环境第一节 硬件处理器:Pentium级处理器;推荐使用Pentium90或更高级处理器。内存:Windows 95或更新版本需32兆内存(推荐使用48兆);Windows NT 4.0需要32兆(推荐使用48兆)。硬盘:VB典型安装需116兆,最大安装需135兆;VC需302至403兆;VFP需85兆至90兆;VID需81兆至98兆;VJ 需86兆至104兆;VSS需59兆至141兆;IE需43兆至59兆;MSDN需57兆至 493兆;NT 4.0 Option Pack:Win95需用20兆,WinNT需用200兆;SQL(只用于 NT)需80兆至95兆;SNA(只用于NT)50兆至100余兆;升级可能需要更多空间。第二节 软件操作系统:Win9x/NT/2000/XP编译软件:Mrosoft Visual C+6.0/ Mrosoft Visual Studio 6.0第三章 算法设计的思想构造链表存储用户记录。操作界面添加更改删除查询排序显示所有退出其他编号姓名性别生日学历职务电话地址编号姓名选择编号编号排序操作完成返回操作界面输入错误第四章 算法的流程图图4.1算法的流程图第五章 算法设计分析(1)构造链表存储用户记录。(2)利用冒泡法对用户名和号码分别进行排序(3)利用直接查找法进行查找第六章 源代码第一节 头文件/*Linklist.h*/#include"stdio.h"#include"stdlib.h"#include "string.h"#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2typedef struct LNodechar id20;char name10;char sex10;char birth10;char edu10;char duty10;char phone20;char address30;struct LNode *next;LNode,*Linklist;/定义节点类型int CreatList(Linklist &L)Linklist p;p=(Linklist)malloc(sizeof(LNode);if(!p)return (0);elseprintf("请输入员工编号n");scanf("%s",p->id); printf("请输入员工姓名n");scanf("%s",p->name); printf("请输入员工性别n"); scanf("%s",p->sex); printf("请输入员工生日n");scanf("%s",p->birth); printf("请输入员工学历n"); scanf("%s",p->edu); printf("请输入员工职务n");scanf("%s",p->duty);printf("请输入员工电话n");scanf("%s",p->phone); printf("请输入员工地址n");scanf("%s",p->address);p->next=L->next;L->next=p;/头插法生成单链表int Initlist(Linklist &L)L=(Linklist)malloc(sizeof(LNode);if(!L)return (0);L->next=NULL;return OK;/初始化单链表void Display(Linklist &L)Linklist p;for(p=L->next;p;p=p->next)printf("编号 %sn",p->id);printf("姓名 %sn",p->name);printf("性别 %sn",p->sex);printf("生日 %sn",p->birth);printf("学历 %sn",p->edu);printf("职务 %sn",p->duty);printf("电话 %sn",p->phone);printf("地址 %sn",p->address); printf("=n");/显示所有员工信息int SearchID(Linklist &L,char id20)LNode *p;p=L;while(p)if(strcmp(p->id,id)=0)printf("编号 %sn",p->id);printf("姓名 %sn",p->name);printf("性别 %sn",p->sex);printf("生日 %sn",p->birth);printf("学历 %sn",p->edu);printf("职务 %sn",p->duty);printf("电话 %sn",p->phone);printf("地址 %sn",p->address);p=p->next;return OK;/查询IDint SearchName(Linklist &L,char name10)LNode *p;p=L;while(p)if(strcmp(p->name,name)=0)printf("编号 %sn",p->id);printf("姓名 %sn",p->name);printf("性别 %sn",p->sex);printf("生日 %sn",p->birth);printf("学历 %sn",p->edu);printf("职务 %sn",p->duty);printf("电话 %sn",p->phone);printf("地址 %sn",p->address);p=p->next;return OK;/查询姓名void Sort(Linklist &L) Linklist La;Linklist p,q,m; La=(Linklist)malloc(sizeof(LNode);La->next =NULL;while(L->next) for(q=L->next ,p=L->next ;p->next ;p=p->next )if(strcmp( p->next->id,q->id )>0 )m=p;q=p->next ; if(q=L->next)L->next =L->next->next ;elsem->next =q->next ;q->next =La->next ;La->next =q ;L=La;Display(L);/排序int Alter(Linklist &L,char id20)LNode *p;p=L;while(p)if(strcmp(p->id,id)=0)printf("请输入员工编号n");scanf("%s",p->id); printf("请输入员工姓名n");scanf("%s",p->name);printf("请输入员工性别n");scanf("%s",p->sex);printf("请输入员工生日n");scanf("%s",p->birth);printf("请输入员工学历n");scanf("%s",p->edu);printf("请输入员工职务n");scanf("%s",p->duty);printf("请输入员工电话n");scanf("%s",p->phone);printf("请输入员工地址n");scanf("%s",p->address);p=p->next;return OK;/更改int Del(Linklist &L,char id20)LNode *p;LNode *r;p=L->next;r=L;while(!(strcmp(p->id,id)=0)&&p)r=p;p=p->next;if(!p)printf("n删除位置不合理n");elser->next=p->next; free(p);printf("删除成功n");return OK;/按ID删除第二节 主程序#include"Linklist.h"/主函数void main()Linklist L;int a;char m;char name10; char id20;Initlist(L);int y;int x=1;while(x)printf("*n");printf("欢迎进入陈超的员工管理系统!n");printf("*n");printf("1-添加员工信息n");printf("2-查询员工信息n");printf("3-排序员工信息n");printf("4-显示所有员工信息n");printf("5-更改员工信息n");printf("6-删除员工信息n");printf("7-退出n");printf("*n");printf("请选择操作序号并按回车:");scanf("%d",&y);switch(y)case 1: CreatList(L);doprintf("是否继续输入?(y/n)");getchar();scanf("%c",&m);if(m='y')CreatList(L);while(m!='n');break;case 2: printf("请输入查询方式(1按编号查询,2按姓名查找)");scanf("%d",&a);if(a=1)printf("请输入查询员工编号n");scanf("%s",&id);SearchID(L,id);if(a=2)printf("请输入查询员工姓名n");scanf("%s",&name);SearchName(L,name);break;case 3:Sort(L);break;case 4: printf("所有员工信息如下所示n");Display(L);break;case 5: printf("请输入更改员工编号");getchar();scanf("%s",&id);Alter(L,id);break;case 6: printf("请输入删除员工编号");getchar();scanf("%s",&id);Del(L,id);break;case 7: x=0;break;default:printf("请输入正确序号!n");break;第七章 运行结果分析图7.1 员工管理系统主界面图7.2 添加员工信息图7.3 按编号查询员工信息图7.4 按姓名查询员工信息图7.5 排序员工信息图7.6 显示所有员工信息图7.7 更改员工信息图7.8 删除员工信息图7.9 退出员工管理系统图7.10 操作序号输入错误第八章 收获及体会一周的数据结构课程设计结束了,在考试前组织这次课程设计是非常有必要的也是很有效的,让我把数据结构这门课课堂上学习的知识更实际地运用到生活实践中,加深了对相关知识的理解,现实的来说更有助于考试。在本次课程设计中我的学号01%8+1=2,所以我的题目是第二题员工管理系统。事实上拿到这个题目的第一感觉就是我想用ROSE来做系统,因为在上周刚刚做了系统设计分析的课程设计。在网上搜索了一下这个课题,发现有很多相同题目的报告书和源代码,但是这些系统其中不是有界面不美观的错误就是有漏洞,但是主体思想都是以链表结构来实现管理系统的录入查询等功能,所以只能作为参考自己新设计一套东西,使之人性化一些。相比较SQL或UML来讲,在我现有的C语言知识层面下,我的这个系统与这两种数据库和建模语言有很大差距,而且实现起来不那么方便,没有数据库来得直观。在数据录入时,我不知道哪个函数可以用来检验数据是否溢出,这对于我的系统来讲是个致命的打击,尤其是在溢出后查询时找不到查询项。我不得不把数据项的字符数写大一些,这又造成了内存的冗余,很是纠结。但是总体来讲,对于链表的数据结构思想大致还是熟悉了,这应该算是达到了课程设计的目的吧。以后如果需要用到员工管理系统我还是比较倾向于那两种语言,对于是否能用C语言来细化编写和增加人机交互,这取决于自己的能力能否更加提高。在这里感谢王捷老师和王治国老师的悉心指导,为我的系统解决了很多难题,但是能力所限有些人机交互做的还不是很好,希望在日后的编程工作中能够进步。第九章 参考文献1 严蔚敏,吴伟民. 数据结构:C语言版. 清华大学出版社,2007.2 教育部考试中心. 全国计算机等级考试二级教程. 高等教育出版社,2007.8.