数据结构课程设计-员工信息管理系统.doc

上传人:scccc 文档编号:13426305 上传时间:2021-12-25 格式:DOC 页数:30 大小:495KB
返回 下载 相关 举报
数据结构课程设计-员工信息管理系统.doc_第1页
第1页 / 共30页
数据结构课程设计-员工信息管理系统.doc_第2页
第2页 / 共30页
数据结构课程设计-员工信息管理系统.doc_第3页
第3页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构课程设计-员工信息管理系统.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计-员工信息管理系统.doc(30页珍藏版)》请在三一文库上搜索。

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 ElemSfet,2, n;n>=0,数据关系:R1=<ai-1 ,ai>|ai-1 , ai Dj=1,2, ,基本操作:Init List (&

3、L);操作结果:构造一个空的线性表L 0DestroyList (&L );初始条件:线性表L存在。操作结果:销毁线性表LoLocateElem(L, I,& e);初始条件:线性表 L存在,1<i<Listlength(L)。操作结果:用e返回线性表L中第i个数据元素的值ClearList ( &L);初始条件:线性表L存在。操作结果:将线性表L重置为空表。ADT Graph2.2、程序流程系统的执行从菜单的选择幵始,依据用户的选择进行相应的处理,直到用户 选择退出系统为止。其间应对用户的选择做出判断与异常处理。系统的流程如图1所示:开制1 1 /11ri

4、StL.XXXXftAQE.i拿atV JX rTTL丄5.X页工X9i£XX出1di51L1y y y图i员工信息管理系统流程图三、详细设计3.1函数构成(1 )主函数:void main ();(2 )文件读入函数: void read data ();(3 )文件写入函数: void write data ();(4)菜单函数 函数原型: void Menu () 功能:此函数的功能为依据用户选择的功能来进行相应的处理,直到用户选 择退出系统为止,包括员工信息的查询、更新、列表与退出管理;(5)信息查询函数 函数原型: void chaxun () 功能:该函数的功能是按照用户

5、的选择进行不同方式的查找,本程序实现了 按三种方式进行查找,包括按编号、姓名、生日查找;(6)信息更新函数 函数原型: void gengxin () 功能:此函数的功能为使用户修改记录。首先判断用户要修改的记录是否存 在,因为只有员工编号是唯一的,所以根据员工编号进行查找。若存在则用用户 输入的新的信息替换原信息;若不存在则函数结束。在此函数中要注意的是文件的打幵方式应为”rb+因为在这个函数中不仅要读文件,还要向文件中写入数据,所以要用读写的方式打开二进制文件;(7)信息一览函数 函数原型: void liebiao () 功能:此函数的功能为从文件中依次取出每条记录并将其显示出来。因为只

6、需读文件不需要向文件中写入数据,所以文件的打开方式是只读。3.2 模块程序清单(详细程序见附录)1、员工信息的结构体:Typedef struct emp long 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

7、* timenow;time ( &T );timenow = localtime ( &T ); flog=0;while(1)system("cls"); printf("nnnnn");printf("iprintf("员工信息管理系统 一n)1|n");printf("|n");printf("|n");printf("|1. 员工信息查询n");printf("|n");printf("|n");pr

8、intf("|n");printf(" 丨2.员工信息更新n");printf("|n");printf("|n");printf("|n");printf(" |3. 员工信息列表n");printf("|n");printf("|n");printf("|n");printf(" |0. 退出管理系统n");printf("|n");printf("|n"

9、;);printf("|n");printf("1n);1printf("%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 &

10、#39;0':flog=1;break; 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(&qu

11、ot;|员工信息查询系统1printf("|In");printf("|n");printf("|n");printf("|1. 按照编号查询|n");printf("|n");printf("|n");printf("|n");printf("|2. 按照姓名查询|n");printf("|In");printf("|In");printf("|n");printf(&quo

12、t;|3. 按照生日查询|n");printf("|n");printf("|n");printf("|0. 退出管理系统|n");printf("|n");printf("|n");printf("|n");printf("1ni1printf("%s", asctime (timenow) );printf(" 请输入您的选择(数字 0-3 ):n");scanf("%c",&i);g

13、ets(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;4、信息更新函数:void gengxin()char i,lj100;time_t T;int flog;stru

14、ct tm * timenow;time ( &T );timenow = localtime ( &T ); flog=0;while(1)system("cls");printf("nnnnn");printf("i员工信息更新系统一-n)i1printf("|n");printf("|n");printf("|n");printf("|1.员工信息添加|n");printf("|n");printf("|n&quo

15、t;);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");printf("|n&

16、quot;);n");prin tf("|printf("1昨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':xiugai();break;case

17、 '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"tprintf("编号tt姓名tt年龄tt性别tt出生年月tt电话tt学历tt

18、职务tt住址 :n");if(head!=NULL) while(p!=NULL) display(p);p=p->next; printf("n 按回车键返回主菜单 n");gets(lj);四、调试分析4.1 、时间复杂度分析在源程序的各个模块,时间复杂读为 O(n) ,并且随着输入信息量的增加,从 而时间复杂度也逐渐增加。4.2 、问题解决在程序设计过程中,本程序采用两种方式进行数据输入,一种是由用户手动 输入数据, 另一种是由文本文件数据导入 1的方式。但在文本导入过程中, 导入的 是二进制文件,但由于复杂程度较高,从而根据所查资料进行修改,采用导入

19、文 本文件。在结果输出上,由于输出的是黑屏,所以经过查阅资料,运用system函数对输出结果的页面进行修饰。4.3、设计收获在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则, 在做设计程序实验时,这将使你做的难度加大,浪费宝贵的时间,使你事倍功半。 做实验时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白。实 验后,还要复习,思考,这样,你的印象才深刻,记得才牢固,否则,过后不久 你就会忘得一干二净,这还不如不做。通过这次程序设计的实验,使我们学到了 不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的 实验是通用的,真正使我们们受益匪浅。五、测试结

20、果1、菜单函数的测试结果如图 2I曲zjnlx员工倍息诩里累现皿5工馆*查询也员工信息更新氛员工信启j蟻氛迪出管理系统请舸人您的鱼择数扣-叮lliu bvc 上夕 15: 12; 14 20131图22、信息查询函数的测试结果如图3图33、信息更新函数测试结果如图4图4六、用户使用说明本程序实在环境下通过编译并执行。用户根据提示信息进行选择并操作。七、附录源程序:#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <windows.h>/ 清屏函数头文件#include

21、 <string.h>#include <time.h>#include <io.h>#define LEN 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

22、 emp *head=NULL; int t=0;void menu();void gengxin();void tianjia();void 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

23、);void main()struct emp *head=NULL; head=(struct emp *)malloc(LEN); head->next=NULL;system("color F1");system("mode con: cols=500 lines=1000"); readDate();menu(); system("cls"); printf("nnnnnnnnnnnnnnnnnnn");printf(" 谢谢使用,再见 n"); void menu(void)ch

24、ar i,lj100; int flog;time_t T;struct tm * timenow;time ( &T );timenow = localtime ( &T ); flog=0;while(1) system("cls"); printf("nnnnn");printf("|员工信息管理系统n")1printf("|n");printf("|n");printf("|n");printf(" |1. 员工信息查询n");pr

25、intf("|n");printf("|n");printf("|n");printf(" |2. 员工信息更新n");printf("|n");printf("|n");printf("|n");printf(" |3. 员工信息列表n");printf("|n");printf("|n");printf("|n");printf("|0. 退出管理系统n"

26、;);printf("|n");printf("|n");printf("|n");1|. 1printf("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(

27、);break;case '3':liebiao();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("

28、 分配空间失败 "); exit(0); printf(" 请输入员工的编号 :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"); free(p);gets(lj);getchar(); printf("请输入员工的姓名:n"

29、;);scanf("%s",p->name);printf("请输入员工的年龄:n");scanf("%d",&p->age);printf("请输入员工的性别:n");scanf("%s",p->sex);printf(" 请输入员工的出生年月 :n"); scanf("%s",p->birthday);printf("请输入员工的电话:n");scanf("%s",p->te

30、l);printf("请输入员工的学历:n");scanf("%s",p->edu);printf("请输入员工的职务:n");scanf("%s",p->pos);printf("请输入员工的住址:n");scanf("%s",p->add);insert(p); printf(" 输入的员工信息为 :n");printf(":n");printf("编号tt姓名tt年龄tt性别tt出生年月tt电话tt学历

31、tt 职务tt 住址:n");display(p);printf("按回车 键继续 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;elsewhile(p0->num > p1->num)&&(p1->next!=NULL) p2=p1;p1=p1->next; if(p0->num&

32、lt;=p1->num)if(head=p1)head=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->n um,p->name,p->age,p->sex,p->birthday,p->tel,p->edu,p->pos,p->add); void

33、 liebiao() char lj100; struct 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");g

34、ets(lj);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("|员工信息查询系统An)i1printf("|n");printf("n");printf("n");printf("n")

35、;printf("n");printf("n");printf("n");printf("n");printf("n");printf("n");printf("n");printf("n");printf("n");printf("n");printf("n");printf("1. 按照编号查询2. 按照姓名查询3. 按照生日查询0. 退出管理系统n")

36、;prin tf(" |In");printf("|In");printf("1ni1printf("%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

37、9;: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(" 请输入要查询员工的编号 :n");scanf("%d",&number); while(number!=p1->num)&&(p1->next!

38、=NULL) p1=p1->next;if(number=p1->num)printf("员工信息查询nprintf(" 要查询的员工信息 :n");printf("编号tt姓名tt年龄tt性别tt出生年月tt电话tt学历tt 职务tt住址:n");printf("%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",p1->n um,p1->name,p1->age,p1->sex,p1->birthday,p1->tel,p1->edu,p1-&

39、gt;pos, p1->add);printf(" 按回车键继续 n");gets(lj); getchar(); else if(p1->next=NULL) printf(" 要查询的员工信息不存在,按回车键返回 :n"); gets(lj);getchar();void xingming()char ch10;struct emp *p;char lj100;p=head;printf(" 请输入要查询的员工的名字 :n"); scanf("%s",ch);if(p=NULL)printf(&qu

40、ot; 不存在员工记录,按回车键返回 .n");gets(lj); getchar(); return ; while(strcmp(ch,p->name)&&p->next!=NULL) p=p->next; if(!strcmp(ch,p->name)prin tf("员工信息查询n"printf("编号tt姓名tt年龄tt性别tt出生年月tt电话tt学历tt 职务tt 住址:n"); d isplay(p);printf(”按回车键继续 n");gets(lj);getchar();els

41、e if(p->next=NULL)printf(" 不存在员工记录 .n");gets(lj); getchar(); return; void shengri()char bir20,lj100; struct emp *p;p=head; printf(" 请输入要查询的员工的出生日期 :n"); scanf("%s",bir);if(p=NULL)printf(" 不存在员工记录 .按回车键返回 n");gets(lj);getchar(); return ;while(strcmp(bir,p-&g

42、t;birthday)&&p->next!=NULL)p=p->next;if(!strcmp(bir,p->name)printf("员工信息查询n");printf("编号tt姓名tt年龄tt性别tt出生年月tt电话tt学历tt 职务tt 住址:n"); display(p);printf("按回车键继续 n");gets(lj);getchar(); else if(p->next=NULL)printf(" 不存在员工记录 .按回车键返回 n");gets(lj);g

43、etchar(); return;void readDate()FILE * fp;struct emp *p1,*p2;fp=fopen(DATA, "r");if(!fp)printf(" 打开文件失败 !按回车键继续 n");getchar();else fscanf(fp,"%dn",&t);head=p1=p2=(struct emp *)malloc(LEN);fscanf(fp,"%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",&p1->num,p1-

44、>name,&p1->age,p1->sex,p1->birthday,p1->tel,p1->edu, p1->pos,p1->add);while(!feof(fp)p1=(struct emp *)malloc(LEN); fscanf(fp,"%ldtt%stt%dtt%stt%stt%stt%stt%stt%sn",&p1->num,p1->name,&p1->age,p1->sex,p1->birthday,p1->tel,p1->edu,p1 -&

45、gt;pos,p1->add);p2->next=p1; p2=p1;p2->next=NULL;fclose(fp);void writeDate()FILE* fp; struct emp *p1;fp=fopen(DATA, "w");if(!fp) printf(" 打开文件失败 !n");getchar(); else fprintf(fp,"%dn",t);for(p1=head;p1!=NULL;p1=p1->next) fprintf(fp,"%ldtt%stt%dtt%stt%stt

46、%stt%stt%stt%sn",p1 ->num,p1->name,p1->age,p1->sex,p1->birthday,p1->tel,p1->edu,p1-> pos,p1->add); fclose(fp);void freeAll()struct emp *p1,*p2; p1=p2=head;while(p1) p2=p1->next;free(p1);p1=p2; void shanchu()struct emp *p1,*p2; long int number;char lj100;if(head=NUL

47、L)printf(" 无员工纪录 ! 按回车键返回 n"); gets(lj);getchar();return; printf(" 请输入你要删除的员工的编号 :n"); scanf("%ld",&number); p1=head;while(number!=p1->num&&p1->next!=NULL)p2=p1;p1=p1->next;if(number=p1->num) if(p1=head)head=p1->next; else p2->next=p1->n

48、ext;free(p1);t-;writeDate();printf(" 删除成功,按回车键继续 n"); else printf(" 没 有 该 员 工 的 纪 录 , 请 核 对 . 按 回 车 键 返 回 n");gets(lj);getchar();void xiugai()struct emp *p1,*p2;long int number;char lj100; if(head=NULL) printf(" 无员工纪录 ! 按回车键返回 n");gets(lj);getchar();return;printf("

49、 请输入你要修改的员工的编号 :n"); scanf("%ld",&number);gets(lj); p1=head; while(number!=p1->num&&p1->next!=NULL) p2=p1; p1=p1->next; if(number=p1->num) devise(p1);writeDate();printf(" 修改成功,按回车键继续 n"); elseprintf(" 没有该员工的纪录 ,请核对 .按回车键返回 n"); gets(lj);getc

50、har();void devise(struct emp *p)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("i员工信息修改一n±1printf("|n");printf("|n");printf("|n");printf("|1. 修改员工姓名|n");printf("|n");printf("|n");

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1