版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成绩12信计 2013-2014 (一)数据结构课程设计设计题目员工信息管理系统设计时间2014.1.62014.1.10学生姓名葛考学生学号20120402127所在班级12精算指导教师 刘风华徐州工程学院数学与物理科学学院题目 员工信息管理系统一、需求分析员工信息管理系统设计,具体功能如下:1、系统以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并 且在此过程中能够尽可能的兼容用户使用过程中的输入异常情况。2、员工信息录入系统(员工信息用文件保存),注意员工按员工编号进行区分,即每个员工的 员工编号都是唯一的,不允许出现两个员工或员工编号相同的情况。3、可对员工信
2、息进行查询,具体分为:按姓名查询、按员工号查询、按生日查询;4、可对员工信息进行删除;5、可对员工信息进行修改,但应注意员工号不能修改,修改应逐个进行,一个员工记录的更改 不应影响其他的员工记录;6可对全部的员工信息进行显示 v(员工信息浏览),注意员工信息的显示规范; 员工信息应包括姓名、员工编号、性别、年龄、生日、学历、职务、联系电话、住址。二、概要设计2.1 、抽象数据类型ADT List数据对象:D=ai|ai ElemSet, i=1 , 2,n,n>=0数据关系:R1=<ai-1 , ai>|ai-1 , ai D, i=1 , 2,n基本操作: Init Lis
3、t(&L) ; 操作结果:构造一个空的线性表 L。DestroyList(&L);初始条件:线性表 L 存在。 操作结果:销毁线性表 L 。LocateElem(L,I,&e);初始条件:线性表 L 存在, 1<i<Listlength(L) 。操作结果:用e返回线性表L中第i个数据元素的值。ClearList( &L); 初始条件:线性表 L 存在。操作结果:将线性表 L 重置为空表。ADT Graph2.2 、程序流程系统的执行从菜单的选择开始,依据用户的选择进行相应的处理,直到用户选择退出系统 为止。其间应对用户的选择做出判断及异常处理。系统的
4、流程如图 1 所示:图 1 员工信息管理系统流程图三、详细设计3.1 函数构成(1)主函数: void main(); ( 2)文件读入函数: void read data();( 3)文件写入函数: void write data();( 4 )菜单函数函数原型: void Menu() 功能:此函数的功能为依据用户选择的功能来进行相应的处理,直到用户选择退出系统为 止,包括员工信息的查询、更新、列表及退出管理;(5)信息查询函数 函数原型: void chaxun() 功能:该函数的功能是按照用户的选择进行不同方式的查找,本程序实现了按三种方式进 行查找,包括按编号、姓名、生日查找;(6)
5、信息更新函数 函数原型: void gengxin() 功能:此函数的功能为使用户修改记录。首先判断用户要修改的记录是否存在,因为只有 员工编号是唯一的,所以根据员工编号进行查找。若存在则用用户输入的新的信息替换原信息; 若不存在则函数结束。在此函数中要注意的是文件的打开方式应为” rb+,因为在这个函数中不仅要读文件,还要向文件中写入数据,所以要用读写的方式打开二进制文件;(7)信息一览函数 函数原型: void liebiao() 功能:此函数的功能为从文件中依次取出每条记录并将其显示出来。因为只需读文件不需要向文件中写入数据,所以文件的打开方式是只读。3.2 模块程序清单 (详细程序见附
6、录)1、员工信息的结构体:Typedef struct emplong int num;/ 编号char name20;/姓名int age;/年龄char sex4;/性别char birthday10;/生日char tel15;/电话char edu8;/学历char pos20;/职务char add30;/住址struct emp *next;2、菜单函数:void menu(void) char i,lj100; int flog;time_t T; struct tm * timenow;time ( &T );timenow = localtime ( &T )
7、; flog=0;while(1)system("cls"); printf("nnnnn");printf(" |员工信息管理系统1n");printf(" | n");printf(" | n");printf(" | n");printf(" |1.员工信息查询| n");printf(" | n");printf(" | n");printf(" | n");printf(" |
8、2.员工信息更新| n");printf("|n");printf("|n");printf("|n");printf(" |3.员工信息列表| n");printf("|n");printf("|n");printf("|n");printf(" |0.退出管理系统| n");printf("|n");printf("|n");printf("|n");printf
9、(" 11n");printf(" %s", asctime (timenow) ); printf("请输入您的选择(数字0-3): n"); scanf("%c",&i);gets(lj); if(lj0)i='a'switch(i) case '1':chaxun();break;case '2':gengxin();break;case '3':liebiao();break;case '0':flog=1;break;
10、 default:printf(" 输入有误,请按回车键重新输入 n");gets(lj);break; if(flog)break;3、信息查询函数:void chaxun()char i,lj100; int flog; time_t T; struct tm * timenow; time ( &T );timenow = localtime ( &T ); flog=0;while(1)system("cls"); printf("nnnnn");printf(“ |员工信息查询系统1n");prin
11、tf("| n");printf("| n");printf("| n");printf("|1.按照编号查询| n");printf("| n");printf("| n");printf("| n");printf("|2.按照姓名查询| n");printf("| n");printf("| n");printf("| n");printf("|3.按照生日查询
12、| n");printf("| n");printf("| n");printf("|0.退出管理系统| n");printf("| n");printf("| n");printf("| n");printf(” 11n");printf("%s", asctime (timenow) );printf("请输入您的选择(数字0-3): n");scanf("%c",&i);gets(l
13、j); if(lj0)i='a'switch(i)case '1':bianhao();break; case '2':xingming();break;case '3':shengri();break; case '0':flog=1;break; default:printf(" 输入有误,请重新输入 n");gets(lj);break;if(flog)break;4、信息更新函数:void gengxin()char i,lj100;time_t T;int flog;struct tm
14、 * timenow;time ( &T );timenow = localtime ( &T );flog=0;while(1)system("cls");printf("nnnnn");printf(“ i员工信息更新系统1n");printf(" | n");printf(" | n");printf("| n");printf("|1.员工信息添加| n");printf("| n");printf("| n&q
15、uot;);printf("| n");printf("|2.员工信息删除| n");printf("| n");printf("| n");printf("| n");printf("|3.员工信息修改| n");printf("| n");printf("| n");printf("| n");printf("|0.退出管理系统| n");printf("| n");pri
16、ntf("| n");printf("| n");printf(” 11n");printf(" %s",asctime (timenow) );printf(" 请输入您的选择(数字 0-3): n");scanf("%c",&i);gets(lj);if(lj0)i='a'switch(i) case '1':tianjia();break;case '2':shanchu();break;case '3':x
17、iugai();break;case '0':flog=1;break;default:printf(" 输入有误,请重新输入 n");gets(lj);break; if(flog)break;5、信息一览函数:void liebiao()char lj100; struct emp *p; p=head; system("cls"); if(head=NULL)printf("查找不到信息 n");menu(); printf("员工信息列表 n");printf("编号tt姓名tt年
18、龄tt性别tt出生年月tt电话tt学历tt职务tt住址:n"); if(head!=NULL)while(p!=NULL)display(p);p=p->n ext;printf("n按回车键返回主菜单n");gets(lj);四、调试分析4.1、时间复杂度分析在源程序的各个模块,时间复杂读为|凶并且随着输入信息量的增加,从而时间复杂度 也逐渐增加。4.2、问题解决在程序设计过程中,本程序采用两种方式进行数据输入,一种是由用户手动输入数据,另 一种是由文本文件数据导入 的方式。但在文本导入过程中,导入的是二进制文件,但由于复 杂程度较高,从而根据所查资料进行
19、修改,采用导入文本文件。在结果输出上,由于输出的是黑屏,所以经过查阅资料,运用| DO |函数对输出结果的页面进行修饰。4.3、设计收获在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则,在做设计程序 实验时,这将使你做的难度加大,浪费宝贵的时间,使你事倍功半。做实验时,一定要亲力亲 为,务必要将每个步骤,每个细节弄清楚,弄明白。实验后,还要复习,思考,这样,你的印 象才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这还不如不做。通过这次程序 设计的实验,使我们学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法, 这与做其他的实验是通用的,真正使我们们受益匪浅。
20、五、测试结果1、菜单函数的测试结果如图2图22、信息查询函数的测试结果如图 3图33、信息更新函数测试结果如图 4图4六、用户使用说明本程序实在VB.6.0环境下通过编译并执行。用户根据提示信息进行选择并操作。七、附录源程序:#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <windows.h>/ 清屏函数头文件#include <string.h>#include <time.h>#include <io.h>#define L
21、EN sizeof(struct emp)#define DATA "employee.txt"struct emplong int num;/编号char name20;/姓名int age;/年龄char sex4;/性别char birthday10;/生日 char tel15; / 电话 char edu8; /学历 char pos20; /职务 char add30; / 住址 struct emp *next;struct emp *head=NULL; int t=0;void menu();void gengxin();void tianjia(); v
22、oid insert(struct emp *em); void display(struct emp *p);void liebiao();void chaxun();void bianhao();void shengri();void xingming();void readDate();void writeDate(); void freeAll();void shanchu();void change();void devise(struct emp *p); void main()struct emp *head=NULL;head=(struct emp *)malloc(LEN)
23、; head->next=NULL;system("color F1"); system("mode con: cols=500 lines=1000"); readDate();menu(); system("cls"); printf("nnnnnnnnnnnnnnnnnnn");printf(" 谢谢使用,再见 n"); void menu(void)char i,lj100; int flog;time_t T;struct tm * timenow;time ( &T )
24、;timenow = localtime ( &T );flog=0;while(1)system("cls"); printf("nnnnn");printf("1员工信息管理系统1n");printf("11 n");printf("11 n");printf("11 n");printf("11员工信息查询1 n");printf("11 n");printf("11 n");printf("
25、11 n");printf("丨2员工信息更新1 n");printf("11 n");printf("11 n");printf("11 n");printf("13员工信息列表1 n");printf("11 n");printf("11 n");printf("11 n");printf("10.退出管理系统1 n");printf("11 n");printf("11
26、n");printf("11 n");11n"printf("n );printf("%s", asctime (timenow) );printf(" 请输入您的选择(数字 0-3): n");scanf("%c",&i);gets(lj); if(lj0)i='a'switch(i)case '1':chaxun();break;case '2':gengxin();break;case '3':liebiao
27、();break;case '0':flog=1;break;default:printf(" 输入有误,请按回车键重新输入 n");gets(lj);break;if(flog)break; void tianjia()struct emp *p,*p1; char lj100;p=NULL;p1=head;printf("请输入第%d个员工的信息.n",t+1);p=(struct emp *)malloc(LEN); if(p=NULL)printf(" 分配空间失败 "); exit(0);printf(&qu
28、ot; 请输入员工的编号 :n"); scanf("%ld",&p->num);while(p1!=NULL)&&(p->num!=p1->num)p1=p1->next;if(p1!=NULL)if(p->num=p1->num)printf("编号已经存在,请重新输入,按回车键继续:n");scanf("%s",p->name);scanf("%d",&p->age); scanf("%s",p->
29、;sex);free(p);gets(lj);getchar(); printf("请输入员工的姓名:n"); printf("请输入员工的年龄:n"); printf("请输入员工的性别:n");printf(" 请输入员工的出生年月 :n"); scanf("%s",p->birthday);scanf("%s",p->tel);scanf("%s",p->edu); scanf("%s",p->pos);
30、scanf("%s",p->add);printf(" 请输入员工的电话 :n"); printf("请输入员工的学历:n"); printf("请输入员工的职务:n"); printf("请输入员工的住址:n");insert(p); printf(" 输入的员工信息为 :n");printf(":n");printf("编号tt姓名tt年龄tt性别tt出生年月tt电话tt学历tt职务tt住址:n"); display(p);p
31、rintf(" 按回车键继续 n");writeDate(); gets(lj);getchar();void insert(struct emp *em)struct emp *p0,*p1,*p2; p1=head; p0=em;if(head=NULL)head=p0;p0->next=NULL;else while(p0->num > p1->num)&&(p1->next!=NULL) p2=p1; p1=p1->next; if(p0->num<=p1->num) if(head=p1)hea
32、d=p0; else p2->next=p0;p0->next=p1; else p1->next=p0; p0->next=NULL; t+; void display(struct emp *p) printf("%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",p->num,p->name,p->age,p->sex,p- >birthday,p->tel,p->edu,p->pos,p->add); void liebiao() char lj100; struc
33、t emp *p; p=head; system("cls"); if(head=NULL)printf(" 查找不到信息 n");menu();printf("员工信息列表 n");printf("编号tt姓名tt年龄tt性别tt出生年月tt电话tt学历tt职务tt住址:n"); if(head!=NULL)while(p!=NULL) display(p);p=p->next; printf("n 按回车键返回主菜单 n");gets(lj); void chaxun()char i,
34、lj100;int flog;time_t T;printf(“ |员工信息查询系统1n");printf(" | n");printf(" | n");printf("| n");printf("|1.按照编号查询| n");printf("| n");printf("| n");printf("| n");printf("|2.按照姓名查询| n");printf("| n");printf("
35、;| n");printf("| n");printf("|3.按照生日查询| n");printf("| n");printf("| n");printf("|0.退出管理系统| n");printf("| n");printf("| n");printf("| n");printf(” 11n");system("cls"); printf("nnnnn");struct
36、tm * timenow;time ( &T );timenow = localtime ( &T ); flog=0;while(1)printf("%s", asctime (timenow) );printf(" 请输入您的选择(数字 0-3): n"); scanf("%c",&i);gets(lj); if(lj0)i='a'switch(i)case '1':bianhao();break; case '2':xingming();break;case '3':shengri();break; case '0':flog=1;break; default:printf(" 输入有误,请重新输入 n");gets(lj);break;if(flog)break;void bianhao()int number;char lj100;struct emp *p1;p1=head;printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 林场防火工作奖惩制度
- 校外辅导站管理奖惩制度
- 死亡报告自查与奖惩制度
- 水泥企业环保奖惩制度
- 汽车内饰改装奖惩制度
- 海底捞食堂奖惩制度细则
- 消防责任责任奖惩制度
- 混凝土施工质量奖惩制度
- 火灾管控责任奖惩制度
- 煤炭化验室奖惩制度范本
- 2026年食品安全与环境管理的关系
- 2025-2026学年湘美版美术八年级下册1.3走向现代课件
- 和田~民丰~且末~若羌Ⅱ回750千伏输变电工程(且末~若羌段)环境影响报告书
- 2026平安集团IQ EQ题库
- 2025年陕西能源职业技术学院单招职业技能考试模拟测试卷带答案解析
- 2026湖南省卫生健康委直属事业单位招聘185人考试备考题库及答案解析
- 2025年哈尔滨科学技术职业学院单招职业倾向性考试题库附答案解析
- 2026年吉林省长春市高考语文一模试卷
- 微生物学检验在临床抗微生物药物管理中的应用专家共识解读课件
- 青少年AI项目实施方案
- 水运工程结构防腐蚀施工规范 JTS-T 209-2020
评论
0/150
提交评论