




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上算法与数据结构课程设计题目:企业员工信息管理系统设计与实现院、 系: 计算机信息与技术系学科专业: 计算机科学与技术 学 号: B 学生姓名: 指导教师: 王 楠 2012年9月16日目录第一章 设计要求1.1 问题描述近年来,随着企业彼此间的竞争日趋激烈,信息管理技术在企业的发展中占据着越来越重要的地位。在企业的经营生产中,员工信息已成为企业经营管理中不可缺少的一部分,为管理者进行管理决和进行各种人事调配活动提供了重要的依据,在生产分配安排中发挥了越来越重要的作用。此次课程设计应该具有的功能是能够查看员工的个人信息,每个员工的信息包括:编号、姓名、性别、部门、工资;
2、系统能够完成员工信息的查询、更新、插入、删除、排序等功能。1.2 需求分析(1)在相应的每条记录中,应该包括该员工的所有信息,譬如:编号、姓名、性别、出生年月、学历、职务、电话、住址等;(2)根据不同关键字(如编号,姓名等),对所有员工的信息进行排序;(3)按照指定条件查找某个员工的所有信息;(4)按编号对某个员工的信息进行更改;(5)添加新员工的信息,并实现排序;(6)按编号删除已离职的员工的信息;(7)与此同时,除了以上基本的需求以外,该企业员工信息管理系统的程序源代码还应具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。第二章 概要设计2.1 主界面设计当输入相应的操
3、作字符(比如:0-6或者#),通过在主函数中选择并调用对应的子函数程序以及其他函数(比如:菜单函数)中的辅助调用,实现并完成各自的功能操作(比如:添加、查找、更改、排序、删除、显示等)。系统主界面如下:2.2 存储结构设计依据给定的数据格式,个人信息由九个字段来组成,即编号、姓名、性别、生日、学历、职务、电话和住址,外加一个判断关键字。如: 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 01 fdf n 1991-10 b q 189 p本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插入、删除操作,所以使用链表比较方便。2.3 系统功
4、能设计依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的插入、添加、删除、查找、更改和数据的排序以及数据的显示等功能模块。(1)输入函数功能:通过输入各项数据给数据元素,来建立一个数据表。(2)排序函数功能:按照指定关键字对员工信息进行排序。(3)显示函数功能:输出表中所有节点的信息。(4)查找函数功能:按照指定关键字,对相应员工信息进行查找。(5)更改函数功能:输入员工编号,查找到员工信息,对其信息进行更新。(6)删除函数功能:查找到要删除员工的相应信息,并将其从表中永久的删除。(7)主函数功能:调用以上子函数,并用开关语句进行选择性的调用。(8)其它函
5、数功能:主要起辅助作用,比如:菜单函数,主要起到引导作用;释放空间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。第三章 模块设计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
6、*head) /查找该员工的信息情况6更改函数Stuff *Change(Stuff *head,char n10)/更改员工的信息情况7. 删除函数Stuff *Del(Stuff *head,char n10) /删除员工的信息情况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(" 编号 |
8、姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 :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' /防止后面判断出现随机值
9、if(head=NULL)head=p; elsewhile(q->next !=NULL) q=q->next ; q->next =p; 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
10、",&ch); if(ch='0') break; if(ch<'1'|ch>'2')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,
11、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!=NUL
12、L)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 ;elseprintf(&qu
13、ot;信息为空!n");4.查找函数:Stuff *Search(Stuff *head)Stuff *p=NULL,*q,a="0","0","0","0","0","0","0","0" int flag; /查找判断 char ch,sh; /两个控制变量 q=&a; while(1)printf("请输入要查找的条件:1.编号2.姓名0.退出n"); scanf(" %c"
14、;,&ch); if(ch='0') break; if(ch<'1'|ch>'2')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")
15、;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",&sh);if(sh='1')Change
16、(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;5.更改函数:Stuff *Change(Stuff *head,char n10)Stuff *p=head;int flag=0;if(head=NULL)printf("信息表为空,请先建立信息表!n");elsewhile(p!=NUL
17、L)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;i
18、f(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");elsewhile(strcmp(p->number ,n)&&p->next !=NULL)pr=p;p=p->next ;if(!strcmp(p->number ,n)if(p=
19、head)head=p->next ;elsepr->next=p->next ;free(p);printf("删除成功!n");n-;elseprintf("未找到员工信息!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; Stuff *head=NULL; /链表头指针定义 print
20、f("-欢迎使用员工信息管理系统-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("请输入员工编号:");
21、 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键继续"); getcha
22、r();getchar(); system("cls"); /清屏效果 Fre(head); 8.其他函数:char Menu(); /菜单函数void Show(Stuff *head); /输出函数第五章 测试分析各功能的运行结果:(1)添加界面(2)排序界面(3)查找界面(4)输出员工界面(5)更改员工信息界面(6)删除员工信息界面数据域 指针域第六章 源程序清单#include "stdio.h"#include "stdlib.h"#include "windows.h " #include "
23、string.h"typedef struct Stuff char number10; 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 *he
24、ad); 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("*
25、 1.添加员工信息 2.员工信息排序 *n"); printf("* 3.查找员工信息 4.输出员工信息 *n"); printf("* 5.更改员工信息 6.删除员工信息 *n"); printf("* 0.退出 *n"); printf("-n");printf("请选择你的操作:"); scanf(" %d",&ch); return ch;/创建成员表函数/Stuff *Cre(Stuff *head)/ / Stuff *p=NULL,*q=hea
26、d; / 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(" 编号 | 姓名 | 性别 | 出生年月 |
27、 学历 | 职务 | 电话 | 住址 :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; elsewhil
28、e(q->next !=NULL) q=q->next ; q->next =p; q=p; if(!strcmp(p->number ,"#")free(p); break; return head;/排序函数void Sort(Stuff *head)char ch; Stuff *p,*q,*r; while(1)printf("请选择排序条件:1.编号|2.姓名|0.退出n");getchar(); scanf("%c",&ch); if(ch='0') break; if(ch
29、<'1'|ch>'2')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->
30、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); /交换函数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) ca
31、se '1':return strcmp(q->number ,p->number )<0|strcmp(q->con ,p->number )=0 ; case '2': return strcmp(q->name ,p->name )<0|strcmp(q->con ,p->name )=0 ; default : exit(0); /查找函数Stuff *Search(Stuff *head)Stuff *p=NULL,*q,a="0","0","
32、0","0","0","0","0","0" int flag; char ch,sh; q=&a; while(1)printf("请输入要查找的条件:1.编号2.姓名0.退出n"); scanf(" %c",&ch); if(ch='0') break; if(ch<'1'|ch>'2')printf("输入错误,请重新输入!n");continu
33、e;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-
34、>sex ,p->birthday ,p->degree ,p->business ,p->phone ,p->place );printf("是否需要:1.更改 2.删除 3.继续n");scanf(" %c",&sh);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("
35、;没有找到该员工信息!n");return head;/更改函数Stuff *Change(Stuff *head,char n10)Stuff *p=head;int flag=0;if(head=NULL)printf("信息表为空,请先建立信息表!n");elsewhile(p!=NULL)if(!strcmp(p->number,n)printf("找到员工,请输入新的信息:n 编号 | 姓名 | 性别 | 出生年月 | 学历 | 职务 | 电话 | 住址 n");scanf("%s%s%s%s%s%s%s%s"
36、;,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,p
37、r=head;if(head=NULL)printf("未找到员工信息!n");elsewhile(strcmp(p->number ,n)&&p->next !=NULL)pr=p;p=p->next ;if(!strcmp(p->number ,n)if(p=head)head=p->next ;elsepr->next=p->next ;free(p);printf("删除成功!n");n-;elseprintf("未找到员工信息!n");Show(head); 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 总经理续签合同协议
- 正规广告制作合同协议
- 正规工程三方合同协议
- 2025年求职签订劳动合同时应注意的关键事项
- 2025设备租赁合同书范文
- 2025合同撤销有哪些法律后果
- 2025届江西省八所重点中学高三下学期4月联考语文试题及答案
- 2025年的室内设计合同范本
- 2025年石家庄年货运从业资格证考试题答案
- 2025机密技术合作合同范本
- 第二部分-CPO-10中央机房优化控制系统
- (完整版)交管12123学法减分题库及答案
- 2020新版个人征信报告模板
- 货车转向桥设计终
- 油橄榄种植基地项目商业计划书范文参考
- 品质管控整改方案
- DB4406∕T 10-2021 住宅物业服务品质分级规范
- 道教教职人员认定申请表常用
- “挑战杯”作品申报书
- 5#钢材质量证明书
- SYN Flood攻击的基本原理及防御
评论
0/150
提交评论