当前位置:文档之家› 数据结构课程设计-员工信息管理系统

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

12信计2013-2014(一)数据结构课程设计设计题目员工信息管理系统设计时间2014.1.6~2014.1.10学生姓名葛考学生学号20120402127所在班级12精算指导教师刘风华徐州工程学院数学与物理科学学院题目员工信息管理系统一、需求分析员工信息管理系统设计,具体功能如下:1、系统以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中的输入异常情况。

2、员工信息录入系统(员工信息用文件保存),注意员工按员工编号进行区分,即每个员工的员工编号都是唯一的,不允许出现两个员工或员工编号相同的情况。

3、可对员工信息进行查询,具体分为:按姓名查询、按员工号查询、按生日查询;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 List(&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、程序流程系统的执行从菜单的选择开始,依据用户的选择进行相应的处理,直到用户选择退出系统为止。

其间应对用户的选择做出判断及异常处理。

系统的流程如图1所示:图1 员工信息管理系统流程图三、详细设计3.1函数构成(1)主函数:void main();(2)文件读入函数:void read data();(3)文件写入函数:void write data();(4)菜单函数函数原型:void Menu()功能:此函数的功能为依据用户选择的功能来进行相应的处理,直到用户选择退出系统为止,包括员工信息的查询、更新、列表及退出管理;(5)信息查询函数函数原型:void chaxun()功能:该函数的功能是按照用户的选择进行不同方式的查找,本程序实现了按三种方式进行查找,包括按编号、姓名、生日查找;(6)信息更新函数函数原型:void gengxin()功能:此函数的功能为使用户修改记录。

首先判断用户要修改的记录是否存在,因为只有员工编号是唯一的,所以根据员工编号进行查找。

若存在则用用户输入的新的信息替换原信息;若不存在则函数结束。

在此函数中要注意的是文件的打开方式应为”rb+”,因为在这个函数中不仅要读文件,还要向文件中写入数据,所以要用读写的方式打开二进制文件;(7)信息一览函数函数原型:void liebiao()功能:此函数的功能为从文件中依次取出每条记录并将其显示出来。

因为只需读文件不需要向文件中写入数据,所以文件的打开方式是只读。

3.2模块程序清单(详细程序见附录)1、员工信息的结构体:Typedef struct emp{long int num; //编号char name[20]; //姓名int age; //年龄char sex[4]; //性别char birthday[10]; //生日char tel[15]; //电话char edu[8]; //学历char pos[20]; //职务char add[30]; //住址struct emp *next;};2、菜单函数:void menu(void){ char i,lj[100]; i nt flog;time_t T;struct tm * timenow;time ( &T );timenow = localtime ( &T );flog=0;while(1){system("cls"); printf("\n\n\n\n\n");printf(" ┏━━━━━━━━━员工信息管理系统━━━━━━━━━┓\n");printf(" ┃┃\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.员工信息列表┃\n");printf(" ┃┃\n");printf(" ┃┃\n");printf(" ┃┃\n");printf(" ┃0.退出管理系统┃\n");printf(" ┃┃\n");printf(" ┃┃\n");printf(" ┃┃\n");printf(" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf(" %s", asctime (timenow) );printf("请输入您的选择(数字0-3):\n");scanf("%c",&i);gets(lj); if(lj[0])i='a';switch(i){ case '1':chaxun();break;case '2':gengxin();break;case '3':liebiao();break;case '0':flog=1;break;default:printf("输入有误,请按回车键重新输入\n");gets(lj);break;}if(flog)break;}}3、信息查询函数:void chaxun(){char i,lj[100]; int flog; time_t T; struct tm * timenow;time ( &T );timenow = localtime ( &T ); flog=0;while(1){system("cls"); printf("\n\n\n\n\n");printf("┏━━━━━━━━━员工信息查询系统━━━━━━━━━┓\n");printf("┃┃\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.按照生日查询┃\n");printf("┃┃\n");printf("┃┃\n");printf("┃0.退出管理系统┃\n");printf("┃┃\n");printf("┃┃\n");printf("┃┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf("%s", asctime (timenow) );printf("请输入您的选择(数字0-3):\n");scanf("%c",&i);gets(lj); if(lj[0])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,lj[100];time_t T;int flog;struct tm * timenow;time ( &T );timenow = localtime ( &T );flog=0;while(1){system("cls");printf("\n\n\n\n\n");printf("┏━━━━━━━━员工信息更新系统━━━━━━━━━┓\n");printf("┃┃\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.员工信息修改┃\n");printf("┃┃\n");printf("┃┃\n");printf("┃┃\n");printf("┃0.退出管理系统┃\n");printf("┃┃\n");printf("┃┃\n");printf("┃┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf(" %s",asctime (timenow) );printf("请输入您的选择(数字0-3):\n");scanf("%c",&i);gets(lj);if(lj[0])i='a';switch(i){ case '1':tianjia();break;case '2':shanchu();break;case '3':xiugai();break;case '0':flog=1;break;default:printf("输入有误,请重新输入\n");gets(lj);break;}if(flog)break;}}5、信息一览函数:void liebiao(){char lj[100]; struct emp *p; p=head; system("cls");if(head==NULL){printf("查找不到信息\n");menu();}printf("━━━━━━━━━━━员工信息列表━━━━━━━━━━━\n");printf("编号\t\t姓名\t\t年龄\t\t性别\t\t出生年月\t\t电话\t\t学历\t\t职务\t\t住址:\n");if(head!=NULL){while(p!=NULL){display(p);p=p->next;} }printf("\n按回车键返回主菜单\n");gets(lj);}四、调试分析4.1、时间复杂度分析在源程序的各个模块,时间复杂读为,并且随着输入信息量的增加,从而时间复杂度也逐渐增加。

相关主题