数据结构课程设计之企业员工信息管理系统设计与实现_第1页
数据结构课程设计之企业员工信息管理系统设计与实现_第2页
数据结构课程设计之企业员工信息管理系统设计与实现_第3页
免费预览已结束,剩余23页可下载查看

下载本文档

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

文档简介

1、莎孑乂卡乂第以/怡玄7危扌区 Xi'an Technological University North Institute of Information Engineering算法与数据结构课程设计题目:企业员工信息管理系统设计与实现院、系:学科专业:计算机信息与技术系软件工程学号:B10060XXX学生姓名:XX指导教师:X X2012年9月16日目录第一章 设计要求 21.1 问题描述 1.2 需求分析 第二章 概要设计 32.1 主界面设计 32.2 存储结构设计 32.3 系统功能设计 4第三章 模块设计 43.1 系统子程序及功能设计 43.2 系统功能图 5第四章 详细设计

2、 54.1 数据类型定义 54.2 系统主要子程序详细设计 61. 显示函数: 62. 删除函数: 63. 查询函数: 74. 修改函数: 95. 主函数: 108.其他函数: 11第五章 测试分析 125.程序各功能的运行结果: 125.1 系统主界面 125.2 建立信息 125.3 修改信息 135.4 查询信息 135.5 显示信息 145.6 删除信息 145.7 退出系统 15第六章 源程序清单 16第七章 工作总结 23第一章 设计要求1.1 问题描述企业员工信息管理系统,包括企业中所有员工的基本信息,如:工号、姓 名、性别、学历等。且该系统能够完成新员工的增添、所有员工信息的相

3、应查 询、修改、删除等各项功能。1.2 需求分析(1)在相应的每条记录中,应该包括该员工的所有信息,如:工号、姓名、 性别、学历等;(2)根据不同关键字(如工号,姓名等) ,对所有员工的信息进行排序;(3)按照指定条件查找某个员工的所有信息;(4)按工号对某个员工的信息进行修改;(5)添加新员工的信息;(6)按工删除已离职、退休员工的信息;(7)与此同时,除了以上基本的需求以外, 该企业员工信息管理系统的程序 源代码还应具有良好的编程结构和适当的注释, 运行界面清晰, 提示内容明确, 易于操作。第二章概要设计2.1主界面设计当输入相应的操作字符(如:数字 0-6),实现并完成各项功能操作(如:

4、 建立、修改、删除、显示、退出等)。系统主界面如下:欢迎使用企业同工信息系统< :貝:录录 表息记记 息信息息白心统 工员工工工理 立入询除一企 建®查删显退 12 3 4-50欢迎使用企业员工佶息系统«ya,雀201212 02.2存储结构设计依据给定的数据格式,个人信息由四个字段来组成,即工号、姓名、性别、学历,外 加一个判断关键字。如:工号|姓名|性别|学历123 feng n daxue本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插 入、删除操作,所以使用链表比较方便。2.3 系统功能设计依据程序的数据结构和功能,遵照“自顶向下,逐

5、步细化”原则,描述该 程序的层次结构,在总体上包括数据的增添、修改、删除、查询以及数据的显 示等功能模块。(1) 新增函数功能:通过输入各项数据给数据元素,来建立一个数据表。(2) 显示函数功能:输出表中所有节点的信息。(3) 查询函数功能:按照指定关键字,对相应员工信息进行查询。(4) 修改函数功能:输入员工工号,查询员工信息,对其信息进行修改。(5) 删除函数功能: 查找到要删除员工的相应信息, 并将其从表中永久的删 除。(6) 主函数功能:调用以上子函数,并用开关语句进行选择性的调用。第三章 模块设计3.1 系统子程序及功能设计( 1) 新增员工信息,利用函数: creatlist(li

6、nklist &L)( 2) 显示所有员工信息,利用函数: display(linklist &L)( 3) 删除员工信息,是按员工工号删除, 利用函数: delet(linklist &L,char num6)( 4) 查询员工信息,按工号和姓名进行查询; 按工号查询利用函数: searchnum(linklist &L,char num10) ; 按姓名查询利用函数: searchname(linklist &L,char name10)( 5) 修改员工信息,利用函数: alter(linklist &L,char num6)3.2系统功能

7、图第四章详细设计4.1数据类型定义结构体定义:typedef struct nodechar num6;/ 工号char name10;/ 姓名char sex6;/ 性别char degree20;/ 学历 node,*linklist;4.2 系统主要子程序详细设计1. 显示函数函数原型: voiddisplay(linklist &L)函数功能:输出表中所有节点的信息。 算法要点:使用循环输出所有信息。 主要算法:void display(linklist &L)linklist p;for(p=L->next;p;p=p->next)printf("

8、; 工号 %s",p->num); printf(" 姓名 %s",p->name); printf(" 性别 %s",p->sex); printf(" 学历 %s",p->edu);2. 删除函数函数原型: voiddelet(linklist &L,char num6)函数功能:查找到要删除员工的相应信息,并将其从表中永久的删除 算法要点:(1) 按关键字查找信息;(2) 链表中删除节点信息,并释放节点空间。 主要算法:int delet(linklist &L, char nu

9、m6 )node *p;/* 实现删除操作的临时的结构体指针变量*/node *r;p=L->next;r=L;if(!L->next)/ 当 list 无后继结点时,提示和结束返回 del()printf("n=> 提示 : 没有记录可以删除 !n"); printf("n");return 1; while(!(strcmp(p->num,num)=0)&&p)r=p; p=p->next;if(!p) printf("nnttt 找不到该职工信息 !n");else r->ne

10、xt=p->next;free(p);printf(" 删除成功 n");printf("n"); return 1;3. 查询函数(1) 按工号查询int searchnum(linklist &L,char num10) node *p;p=L; while(p) if(strcmp(p->num,num)=0)printf("t"); printf(" 工号 %s",p->num); printf("t"); printf(" 姓名 %s",p

11、->name); printf("n"); printf("t"); printf(" 性别 %s",p->sex); printf("t"); printf("t"); printf(" 学历 %s",p->edu); printf("n"); p=p->next; return 1;(2) 按姓名查询int searchname(linklist &L,char name10) node *p; p=L; while(p

12、) if(strcmp(p->name,name)=0) printf("t");printf(" 工号 %s",p->num); printf("t");printf(" 姓名 %s",p->name); printf("n"); printf("t");printf(" 性别 %s",p->sex); printf("t"); printf("t");printf(" 学历 %s

13、",p->edu); printf("n");p=p->next; return 1;4. 修改函数 (按工号修改)int alter(linklist &L,char num6)node *p;p=L;while(p)if(strcmp(p->num,num)=0)printf(" 请输入员工的工号 printf(" 您输入的是: "); printf("t"); scanf("%s",p->num);printf(" 请输入员工的姓名 printf(

14、" 您输入的是: "); printf("t");scanf("%s",p->name);printf(" 请输入员工的性别 printf(" 您输入的是: "); printf("t"); scanf("%s",p->sex);printf(" 请输入员工的学历 printf(" 您输入的是: "); printf("t"); scanf("%s",p->edu);p=p-&g

15、t;next;printf("n");:n");:n");:n");:n");return 1;5. 主函数主函数主要是调用以上的子函数,用开关语句进行选择性的调用 大致程序如下:void main()linklist L;int a;char m;char name10;char num6;initlist(L);int g;int f=1;while(f)menu();scanf("%d",&g);printf("n");switch(g)case 1: creatlist(L);d

16、oprintf(" 是否继续输入 ?(y/n)");printf("t"); getchar(); scanf("%c",&m); if(m='y')creatlist(L);while(m!='n');printf("n");break;case 2: printf(" 请输入修改员工的工号 :");printf(" 您输入的是: "); printf("t"); getchar();scanf("%s&

17、quot;,&num);alter(L,num);printf("n");break;case 0: f=0;printf("nn"); break;6. 其他函数这些函数主要起到辅助功能,比如:菜单函数,主要起到引导作用; 菜单函数原型: void menu()第五章测试分析5.程序各功能的运行结果:5.1系统主界面欢迎使用企业员工信息系统录录 自g 自心自心白忡茄-. 他工倩伍传系 工员工工工理 立改询除耳 建修查删显退 12 3 4 5 0欢迎使用企业员工信息系统A_A5.2建立信息(1)首先输入操作字符“ 1” (2)接着输入员工信息;(

18、3) 最后输入操作字符“ n”结束输入请输入员工的工号=123甫输入员工的姓名;Feng请输入员H的性刖匸请输入员工的学厉二 dcixiLie 是否继無输入壬<.yn> 晴输入员工的工号二请输入员丰的姓名: 请输入员呈的性别二 请输入员士煦学历二 是否继言卖聶T',?<yZn> 鼻-亠-1*7 一 -一.亠5.3修改信息(1) 首先输入操作字符“ 2”;(2) 再输入新的员工信息,豔編賈选择;请输入修改员工的工号临输入的是,123&ne 21B- fK -a-n B VW 号名别历 工姓性学t 工是工是工是工是456矣学f engi5.4查询信息(1)

19、首先输入操作字符“ 3”;(2) 接着输入操作字符“1”或者“ 2”(即实现按“工号”查询,或者按“姓名”查询);(3) 再输入编号的字符“1”;请您夙阳-弓中选择:您送择的是; 3请选择査询方式"按工号査询趴技姓名査找 猜输入查询员工的工号:悔输入的是: 124工号 124姓名 fenff性别n学历"请选摔査询方式按工号查询,2 技姓塔查找) 憾选棒的是2请撅入査询员工的姓各 您输入的是:码5.5显示信息输入操作字符“ 5”;5.6删除信息456nif所有员工的信息如下所示456124n姓名学历姓玄 学历输入操作字符“ 4”;请您从0 5中选择二您选择的是;4员工的工号率

20、输入的是!124删除威功5.7退出系统输入操作字符“ 0”感谢您的使愿耳见!耳鼻耳耳耳耳"NX用耳耳耳J耳XJtXXXKKXXXJKWWXX耳JHXXJC耳耳耳J耳耳氧耳耳耳鼻耳耳耳耳JKWWXX耳JKXP艸辭 emy 血9 to continue第六章 源程序清单/定义节点类型#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct nodechar num6;char name10; char sex3;char edu6; struct node *next;

21、 node,*linklist;int creatlist(linklist &L)/头插法生成单链表linklist p; p=(linklist)malloc(sizeof(node);if(!p)return (0); elseprintf(" 请输入员工的工号 :n"); printf("t");scanf("%s",p->num);printf(" 请输入员工的姓名 :n"); printf("t");scanf("%s",p->name);pr

22、intf(" 请输入员工的性别 :n"); printf("t");scanf("%s",p->sex);printf(" 请输入员工的学历 :n"); printf("t");scanf("%s",p->edu);p->next=L->next;L->next=p;int initlist(linklist &L)/ 初始化单链表L=(linklist)malloc(sizeof(node); if(!L) return (0);L-&

23、gt;next=NULL;return 1;void meau()/显示所有员工信息printf("t* 八 a欢迎使用企业员工信息系统a_a *n")printf("n");printf("t*1 建立员工信息表*n");printf("t*2 插入新员工信息*n");printf("t*3 查询员工信息记录*n");printf("t*4 删除员工信息记录*n");printf("t*5 显示员工信息*n");printf("t*0 退出管理

24、系统*n");printf("n");printf("t* a_a欢迎使用企业员工信息系统a_a *n")printf("n");printf("tXXXn");printf("t2012 年 9 月 12 日 n");printf("n");printf(" 请您从 0-5 中选择:n");printf(" 您选择的是: ");printf("t");void display(linklist &

25、L)linklist p; for(p=L->next;p;p=p->next) printf("t");printf(" 工号%s",p->num);printf("t");printf(" 姓名%s",p->name);printf("n");printf("t");printf(" 性别%s",p->sex);printf("t");printf("t");printf("

26、; 学历 %s",p->edu);printf("n");printf("n"); printf("n");int delet(linklist &L,char num6)/ 按工号删除node *p; /* 实现删除操作的临时的结构体指针变量 */ node *r;p=L->next;r=L;if(!L->next)/ 当 list 无后继结点时,提示和结束返回 del()printf("n=> 提示 : 没有记录可以删除 !n"); printf("n&quo

27、t;);return 1;while(!(strcmp(p->num,num)=0)&&p)r=p;p=p->next;if(!p)printf("nnttt 找不到该职工信息 !n");else r->next=p->next;free(p);printf(" 删除成功 n");printf("n");return 1;/查询工号int searchnum(linklist &L,char num10)/查询姓名node *p; p=L; while(p) if(strcmp(p-&g

28、t;num,num)=0)printf("t");printf(" 工号%s",p->num);printf("t");printf(" 姓名%s",p->name);printf("n");printf("t");printf(" 性别%s",p->sex);printf("t");printf("t");printf(" 学历%s",p->edu);printf(&qu

29、ot;n");p=p->next;return 1;int searchname(linklist &L,char name10) node *p; p=L; while(p) if(strcmp(p->name,name)=0)printf("t");printf(" 工号%s",p->num);printf("t");printf(" 姓名%s",p->name);printf("n");printf("t");printf(&q

30、uot; 性别%s",p->sex);printf("t");printf("t");printf(" 学历%s",p->edu);printf("n");p=p->next;return 1;int alter(linklist &L,char num6) / 修改信息node *p;p=L;while(p)if(strcmp(p->num,num)=0)printf(" 请输入员工的工号 :n"); printf(" 您输入的是: &quo

31、t;);printf("t"); scanf("%s",p->num);printf(" 请输入员工的姓名 :n"); printf(" 您输入的是: ");printf("t"); scanf("%s",p->name);printf(" 请输入员工的性别 :n"); printf(" 您输入的是: "); printf("t");scanf("%s",p->sex);prin

32、tf(" 请输入员工的学历 :n"); printf(" 您输入的是: ");printf("t"); scanf("%s",p->edu);p=p->next;printf("n");return 1;void main() / 主函数linklist L;int a;char m;char name10;char num6;initlist(L);int g;int f=1;while(f)meau();scanf("%d",&g);printf(&q

33、uot;n");switch(g)case 1: creatlist(L);do printf(" 是否继续输入 ?(y/n)"); printf("t"); getchar(); scanf("%c",&m); if(m='y') creatlist(L);while(m!='n'); printf("n"); break;case 2: printf(" 请输入修改员工的工号 :");printf(" 您输入的是: ");

34、 printf("t");getchar(); scanf("%s",&num); alter(L,num); printf("n"); break;case 3: printf("请选择查询方式(1.按工号查询,2按姓名查找)"); printf("n");printf(" 您选择的是: ");printf("t"); scanf("%d",&a); if(a=1)printf(" 请输入查询员工的工号 :n"); printf(" 您输入的是: "); printf("t");scanf("%s",&num);printf("n");searchnum(L,num);if(a=2)printf(" 请输入查询员工的姓名 :n");printf(" 您输

温馨提示

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

评论

0/150

提交评论