




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安工业大学北方信息工程学院数据结构课程设计 1 算法与数据结构算法与数据结构 课程设计课程设计 题目题目:企业员工信息管理系统企业员工信息管理系统 设计与实现设计与实现 院、院、 系:系: 计算机信息与技术系计算机信息与技术系 学科专业:学科专业: 计算机科学与技术计算机科学与技术 学学 号:号: B10060125B10060125 学生姓名:学生姓名: 指导教师:指导教师: 王王 楠楠 2012 年 9 月 16 日 西安工业大学北方信息工程学院数据结构课程设计 2 目录目录 第一章第一章 设计要求设计要求.2 1.1 问题描述.2 1.2 需求分析.3 第二章第二章 概要设计概要设计.3 2.1 主界面设计.3 2.2 存储结构设计.4 2.3 系统功能设计.4 第三章第三章 模块设计模块设计.4 3.1 系统子程序及功能设计.4 3.2 系统功能图.5 第四章第四章 详细设计详细设计.6 4.1 数据类型定义.6 4.2 系统主要子程序详细设计.6 第五章第五章 测试分析测试分析.13 第六章第六章 源程序清单源程序清单.16 第七章第七章 工作总结工作总结.24 第八章第八章 参考文献参考文献.25 西安工业大学北方信息工程学院数据结构课程设计 3 第一章第一章 设计要求设计要求 1.1 问题描述问题描述 近年来,随着企业彼此间的竞争日趋激烈,信息管理技术在企业的发展中 占据着越来越重要的地位。在企业的经营生产中,员工信息已成为企业经营管 理中不可缺少的一部分,为管理者进行管理决和进行各种人事调配活动提供了 重要的依据,在生产分配安排中发挥了越来越重要的作用。此次课程设计应该 具有的功能是能够查看员工的个人信息,每个员工的信息包括:编号、姓名、 性别、部门、工资;系统能够完成员工信息的查询、更新、插入、删除、排序 等功能。 1.2 需求分析需求分析 (1)在相应的每条记录中,应该包括该员工的所有信息,譬如:编号、姓名、性别、出 生年月、学历、职务、电话、住址等; (2)根据不同关键字(如编号,姓名等) ,对所有员工的信息进行排序; (3)按照指定条件查找某个员工的所有信息; (4)按编号对某个员工的信息进行更改; (5)添加新员工的信息,并实现排序; (6)按编号删除已离职的员工的信息; (7)与此同时,除了以上基本的需求以外,该企业员工信息管理系统的程序源代码还应 具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。 西安工业大学北方信息工程学院数据结构课程设计 4 第二章第二章 概要设计概要设计 2.1 主界面设计主界面设计 当输入相应的操作字符(比如:0-6 或者#) ,通过在主函数中选择并调用对应的子函 数程序以及其他函数(比如:菜单函数)中的辅助调用,实现并完成各自的功能操作(比 如:添加、查找、更改、排序、删除、显示等) 。 系统主界面如下: 2.2 存储结构设计存储结构设计 依据给定的数据格式,个人信息由九个字段来组成,即编号、姓名、性别、生日、学 历、职务、电话和住址,外加一个判断关键字。 如: 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 01 fdf n 1991-10 b q 189 p 本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插 入、删除操作,所以使用链表比较方便。 2.3 系统功能设计系统功能设计 依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总 体上包括数据的插入、添加、删除、查找、更改和数据的排序以及数据的显示等功能模块。 西安工业大学北方信息工程学院数据结构课程设计 5 (1)输入函数功能:通过输入各项数据给数据元素,来建立一个数据表。 (2)排序函数功能:按照指定关键字对员工信息进行排序。 (3)显示函数功能:输出表中所有节点的信息。 (4)查找函数功能:按照指定关键字,对相应员工信息进行查找。 (5)更改函数功能:输入员工编号,查找到员工信息,对其信息进行更新。 (6)删除函数功能:查找到要删除员工的相应信息,并将其从表中永久的删除。 (7)主函数功能:调用以上子函数,并用开关语句进行选择性的调用。 (8)其它函数功能:主要起辅助作用,比如:菜单函数,主要起到引导作用;释放空 间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。 第三章第三章 模块设计模块设计 3.1 系统子程序及功能设计系统子程序及功能设计 1.创建成员表函数 Stuff *Cre(Stuff *head) /创建一个员工的信息列表 2.添加成员函数 Stuff *App(Stuff *head) /添加其他员工的信息列 3. 排序函数 void Sort(Stuff *head) /按照编号等对员工进行排序 4. 判断函数 int Sel(char ch,Stuff *p,Stuff *q) /判断该员工是否存在 5. 查找函数 Stuff *Search(Stuff *head) /查找该员工的信息情况 6更改函数 Stuff *Change(Stuff *head,char n10)/更改员工的信息情况 7. 删除函数 Stuff *Del(Stuff *head,char n10) /删除员工的信息情况 西安工业大学北方信息工程学院数据结构课程设计 6 3.2 系统功能图系统功能图 主函数 main() 输入显示查找更改排序删除 退出 按编号按姓名按编号按姓名 第四章第四章 详细设计详细设计 4.1 数据类型定义数据类型定义 1.员工结构体定义 struct Stuff char number10; char name10; char sex8; char borth10; char degree20; char business20; char phone15; 西安工业大学北方信息工程学院数据结构课程设计 7 char place50; char con50; struct Stuff *next; ; 4.2 系统主要子程序详细设计系统主要子程序详细设计 1.输入函数:输入函数: Stuff *App(Stuff *head) Stuff *p=NULL,*q=head; while(n) p=(Stuff *)malloc(sizeof(Stuff); /申请结构体空间 if(p=NULL) printf(空间不足,自动退出系统!n); exit(0); p-next =NULL; /指针域为空 printf(请输入第%d 名员工:n,n); printf( 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 :n); getchar(); scanf(%s,p-number ); if(strcmp(p-number,#) +n; scanf(%s%s%s%s%s%s%s,p-name ,p-sex ,p-birthday ,p-degree ,p- business ,p-phone ,p-place ); p-con0=0; /防止后面判断出现随机值 if(head=NULL) head=p; else while(q-next !=NULL) q=q-next ; q-next =p; 西安工业大学北方信息工程学院数据结构课程设计 8 q=p; /尾插法 if(!strcmp(p-number ,#) free(p); /完成添加,释放多余空间 break; return head; 2.排序函数:排序函数: void Sort(Stuff *head) char ch; Stuff *p,*q,*r; while(1) printf(请选择排序条件:1.编号|2.姓名|0.退出n); getchar(); scanf(%c, if(ch=0) break; if(ch2) printf(输入错误,请重新输入!n); continue; p=head; while(p-next!=NULL) /选择排序 q=p-next; r=p; while(q!=NULL) if(Sel(ch,r,q) /调用判断函数 r=q; q=q-next; if(r!=p) /交换信息 Scpy(r-number,p-number); 西安工业大学北方信息工程学院数据结构课程设计 9 Scpy(r-name,p-name); Scpy(r-sex,p-sex); Scpy(r-birthday,p-birthday); Scpy(r-degree,p-degree); Scpy(r-business,p-business); Scpy(r-phone,p-phone); Scpy(r-place,p-place); p=p-next; Show(head); /输出 3.显示函数:显示函数: void Show(Stuff *head) Stuff *p=head; int n=1; if(head!=NULL) printf(员工信息如下:n); printf( 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 :n); while(p!=NULL) printf(%d. %s %s %s %s %s %s %s %s n ,n+,p-number ,p-name ,p-sex ,p-birthday ,p-degree ,p-business ,p-phone ,p- place); p=p-next ; else printf(信息为空!n); 西安工业大学北方信息工程学院数据结构课程设计 10 4.查找函数:查找函数: Stuff *Search(Stuff *head) Stuff *p=NULL,*q,a=0,0,0,0,0,0,0,0; int flag; /查找判断 char ch,sh; /两个控制变量 q= while(1) printf(请输入要查找的条件:1.编号 2.姓名 0.退出n); scanf( %c, if(ch=0) break; if(ch2) printf(输入错误,请重新输入!n); continue; getchar(); printf(请输入:); gets(q-con); p=head; /指向表头 flag=0; while(p!=NULL) if(strcmp(q-con,p-number)=0|strcmp(q-con,p-name)=0) printf(员工信息如下:n); printf( 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 n%s t%s t%s t%s t%s t%s t%s t%sn,p-number ,p-name ,p-sex ,p- birthday ,p-degree ,p-business ,p-phone ,p-place ); printf(是否需要:1.更改 2.删除 3.继续n); scanf( %c, if(sh=1) Change(head,p-number); /调用更改函数 else if(sh=2) head=Del(head,p-number); /调用删除函数 flag=1; break; p=p-next ; 西安工业大学北方信息工程学院数据结构课程设计 11 if(flag=0) printf(没有找到该员工信息!n); return head; 5.更改函数:更改函数: Stuff *Change(Stuff *head,char n10) Stuff *p=head; int flag=0; if(head=NULL) printf(信息表为空,请先建立信息表!n); else while(p!=NULL) if(!strcmp(p-number,n) printf(找到员工,请输入新的信息:n 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 n); scanf(%s%s%s%s%s%s%s%s,p-number ,p-name ,p-sex ,p-birthday ,p-degree ,p-business ,p-phone ,p-place ); printf(员工信息如下:n); flag=1; p=p-next; if(flag=0) printf(未找到该员工信息!n); Show(head); return head; /删除函数 Stuff *Del(Stuff *head,char n10) Stuff *p,*pr; int flag; flag=0; p=head,pr=head; if(head=NULL) 西安工业大学北方信息工程学院数据结构课程设计 12 printf(未找到员工信息!n); else while(strcmp(p-number ,n) p=p-next ; if(!strcmp(p-number ,n) if(p=head) head=p-next ; else pr-next=p-next ; free(p); printf(删除成功!n); n-; else printf(未找到员工信息!n); Show(head); return head; 6.删除函数:删除函数: void Fre(Stuff *head) Stuff *p; while(head!=NULL) p=head; head=head-next ; free(p); 7.主函数:主函数: void main() char Index10; 西安工业大学北方信息工程学院数据结构课程设计 13 Stuff *head=NULL; /链表头指针定义 printf(-欢迎使用员工信息管理系统-n); Sleep(1000); while(1) switch(Menu() /case 1: /head=Cre(head); /break; case 1: printf(请输入员工信息,直接输入#结束n); head=App(head); break; case 2: Sort(head); break; case 3: head=Search(head); break; case 4: Show(head); break; case 5: printf(请输入员工编号:); scanf(%s,Index); Change(head,Index); break; case 6: printf(请输入员工编号:); scanf(%s,Index); head=Del(head,Index); break; case 0: printf(-欢迎下次光临!-n); Sleep(2000); exit(0); break; default: printf(输入错误,请重新输入!n); printf(按 Enter 键继续); getchar(); 西安工业大学北方信息工程学院数据结构课程设计 14 getchar(); system(cls); /清屏效果 Fre(head); 8.其他函数:其他函数: char Menu(); /菜单函数 void Show(Stuff *head); /输出函数 第五章第五章 测试分析测试分析 各功能的运行结果: (1)添加界面 (2)排序界面 西安工业大学北方信息工程学院数据结构课程设计 15 (3)查找界面 (4)输出员工界面 (5)更改员工信息界面 西安工业大学北方信息工程学院数据结构课程设计 16 (6)删除员工信息界面 第六章第六章 源程序清单源程序清单 #include stdio.h #include stdlib.h #include windows.h #include string.h typedef struct Stuff char number10; 数据域 指针域 西安工业大学北方信息工程学院数据结构课程设计 17 char name10; char sex8; char birthday10; char degree20; char business20; char phone15; char place50; char con50; struct Stuff *next; Stuff; char Menu(); /Stuff *Cre(Stuff *head); Stuff *App(Stuff *head); void Sort(Stuff *head); Stuff *Search(Stuff *head); Stuff *Change(Stuff *head,char n10); void Scpy(char *p,char *q); Stuff *Del(Stuff *head,char n10); int Sel(char ch,Stuff *p,Stuff *q); void Show(Stuff *head); void Fre(Stuff *head); int n=1; /菜单函数 char Menu(void) int ch; printf(-欢迎光临-n); / printf( 1.建立员工信息n); printf(* 1.添加员工信息 2.员工信息排序 *n); printf(* 3.查找员工信息 4.输出员工信息 *n); printf(* 5.更改员工信息 6.删除员工信息 *n); printf(* 0.退出 *n); printf(-n); printf(请选择你的操作:); scanf( %d, return ch; /创建成员表函数 /Stuff *Cre(Stuff *head) / 西安工业大学北方信息工程学院数据结构课程设计 18 / Stuff *p=NULL,*q=head; / p=(Stuff *)malloc(sizeof(Stuff); /App(head); / return head; / /添加成员函数 Stuff *App(Stuff *head) Stuff *p=NULL,*q=head; while(n) p=(Stuff *)malloc(sizeof(Stuff); if(p=NULL) printf(空间不足,自动退出系统!n); exit(0); p-next =NULL; printf(请输入第%d 名员工:n,n); printf( 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 :n); getchar(); scanf(%s,p-number ); if(strcmp(p-number,#) +n; scanf(%s%s%s%s%s%s%s,p-name ,p-sex ,p-birthday ,p-degree ,p- business ,p-phone ,p-place ); p-con0=0; if(head=NULL) head=p; else while(q-next !=NULL) q=q-next ; q-next =p; q=p; if(!strcmp(p-number ,#) free(p); break; 西安工业大学北方信息工程学院数据结构课程设计 19 return head; /排序函数 void Sort(Stuff *head) char ch; Stuff *p,*q,*r; while(1) printf(请选择排序条件:1.编号|2.姓名|0.退出n); getchar(); scanf(%c, if(ch=0) break; if(ch2) printf(输入错误,请重新输入!n); continue; p=head; while(p-next!=NULL) q=p-next; r=p; while(q!=NULL) if(Sel(ch,r,q) r=q; q=q-next; if(r!=p) Scpy(r-number,p-number); Scpy(r-name,p-name); Scpy(r-sex,p-sex); Scpy(r-birthday,p-birthday); Scpy(r-degree,p-degree); Scpy(r-business,p-business); Scpy(r-phone,p-phone); Scpy(r-place,p-place); p=p-next; 西安工业大学北方信息工程学院数据结构课程设计 20 Show(head); /交换函数 void Scpy(char *p,char *q) char c50; strcpy(c,p); strcpy(p,q); strcpy(q,c); /判断函数 int Sel(char ch,Stuff *p,Stuff *q) switch(ch) case 1: return strcmp(q-number ,p-number )con ,p-number )=0 ; case 2: return strcmp(q-name ,p-name )con ,p-name )=0 ; default : exit(0); /查找函数 Stuff *Search(Stuff *head) Stuff *p=NULL,*q,a=0,0,0,0,0,0,0,0; int flag; char ch,sh; q= while(1) printf(请输入要查找的条件:1.编号 2.姓名 0.退出n); scanf( %c, if(ch=0) break; if(ch2) printf(输入错误,请重新输入!n); continue; getchar(); 西安工业大学北方信息工程学院数据结构课程设计 21 printf(请输入:); gets(q-con); p=head; flag=0; while(p!=NULL) if(strcmp(q-con,p-number)=0|strcmp(q-con,p-name)=0) printf(员工信息如下:n); printf( 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 n%s t%s t%s t%s t%s t%s t%s t%sn,p-number ,p-name ,p-sex ,p- birthday ,p-degree ,p-business ,p-phone ,p-place ); printf(是否需要:1.更改 2.删除 3.继续n); scanf( %c, if(sh=1) Change(head,p-number); else if(sh=2) head=Del(head,p-number); flag=1; break; p=p-next ; if(flag=0) printf(没有找到该员工信息!n); return head; /更改函数 Stuff *Change(Stuff *head,char n10) Stuff *p=head; int flag=0; if(head=NULL) printf(信息表为空,请先建立信息表!n); else while(p!=NULL) if(!strcmp(p-number,n) printf(找到员工,请输入新的信息:n 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 n); 西安工业大学北方信息工程学院数据结构课程设计 22 scanf(%s%s%s%s%s%s%s%s,p-number ,p-name ,p-sex ,p-birthday ,p-degree ,p-business ,p-phone ,p-place ); printf(员工信息如下:n); flag=1; p=p-next; if(flag=0) printf(未找到该员工信息!n); Show(head); return head; /删除函数 Stuff *Del(Stuff *head,char n10) Stuff *p,*pr; int flag; flag=0; p=head,pr=head; if(head=NULL) printf(未找到员工信息!n); else while(strcmp(p-number ,n) p=p-next ; if(!strcmp(p-number ,n) if(p=head) head=p-next ; else pr-next=p-next ; free(p); printf(删除成功!n); n-; else printf(未找到员工信息!n); Show(head); 西安工业大学北方信息工程学院数据结构课程设计 23 return head; /输出函数 void Show(Stuff *head) Stuff *p=head; int n=1; if(head!=NULL) printf(员工信息如下:n); printf( 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 :n); while(p!=NULL) printf(%d. %s %s %s %s %s %s %s %s n ,n+,p-number ,p-name ,p-sex ,p-birthday ,p-degree ,p-business ,p-phone ,p- place); p=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖尿病足考试试题及答案
- 官方兽医试题及答案
- 阿里巴巴考试题及答案
- 北京购房专业知识培训课件
- 人行清算面试题及答案
- pte考试题型及答案
- java面试题及答案之服务器
- 教资综合试题及答案
- 2025年广西民族大学体育与健康科学学院招聘考试试题(含答案)
- 2025年甘肃有色工程勘察设计研究有限公司招聘考试笔试试题(含答案)
- 2025年消防员招录面试题库及答案
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理体系 审核与认证机构要求》中文版(机翻)
- 药品生产质量管理规范(2010版)(含13个附录)
- 《食用菌工厂化栽培》课程教学大纲
- 民法典合同编之合同的变更和转让重点条文案例详细解读PPT
- 中国大地财产保险股份有限公司车险核保人员技术认证定级考试大纲
- 高频振荡(HFOV)通气讲解课件
- 《石油化工建设工程项目交工技术文件规定》sh t35032007交工资料表格(设备安装工程)
- 2010年沙多玛技术研讨会
- 语文考试作文格子纸多种模板合集
- 煤矿供电设计与继电保护整定计算示例
评论
0/150
提交评论