数据结构实习报告———信息管理学校石家庄铁道大学指导老师张翠肖班级信0901-1班学号20082406姓名张洁院系信息分院2011.07.05学生信息管理系统一、需求分析本程序主要是执行链表的删除,插入等功能。根据程序提示,我们可以添加、修改、删除员工信息,并能进行多种方式的查询,还有员工信息一览。二、概要设计1)为了实现上述功能,需要定义一下抽象的数据类型:ADTList{数据对象:D={ai|ai∈ElemSet,i=1,2··············,n,n=0}数据关系:R1={ai-1,ai|ai-1,ai∈D,i=1,2```````,n}基本操作:InitList(&L);操作结果:构造一个空的线性表L。DestroyList(&L);初始条件:线性表L存在。操作结果:销毁线性表L。LocateElem(L,I,&e);初始条件:线性表L存在,1iListlength(L)。操作结果:用e返回线性表L中第i个数据元素的值。ClearList(&L);初始条件:线性表L存在。操作结果:将线性表L重置为空表。}ADTGraph2)本程序是由几个函数构成的:1主函数:main()2菜单函数menu();3文件读入函数:readdata();4文件写入函数:writedata();5信息查询函数:chaxun();6信息更新函数:gengxin();7信息一览函数:liebiao();8数据删除函数:shanchu();9数据添加函数:tianjia();10数据修改函数:xiugai();它们的调用关系如mainMenuGengxinliebiaochaxunxuehaoxingminshengrixiugaishanchutianjiaReaddataWritedat三、详细设计#includestdio.h#includemalloc.h#includestdlib.h#includewindows.h//清屏函数头文件#includestring.h#includetime.h#includeio.h#defineLENsizeof(structemp)#defineDATAemployee.txtstructemp{longintnum;//编号charname[20];//姓名intage;//年龄charsex[4];//性别charbirthday[10];//生日chartel[15];//电话charedu[8];//学历charpos[20];//职务charadd[30];//住址structemp*next;};structemp*head=NULL;intt=0;voidmenu();voidgengxin();voidtianjia();voidinsert(structemp*em);voiddisplay(structemp*p);voidliebiao();voidchaxun();voidbianhao();voidshengri();voidxingming();voidreadDate();voidwriteDate();voidfreeAll();voidshanchu();voidchange();voiddevise(structemp*p);voidmain(){structemp*head=NULL;head=(structemp*)malloc(LEN);head-next=NULL;system(color1f);system(modecon:cols=150lines=500);readDate();menu();system(cls);printf(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n);printf(谢谢使用,再见\n);}voidmenu(void){chari,lj[100];intflog;time_tT;structtm*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;}}voidtianjia(){structemp*p,*p1;charlj[100];p=NULL;p1=head;printf(请输入第%d个员工的信息.\n,t+1);p=(structemp*)malloc(LEN);if(p==NULL){printf(分配空间失败);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);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-tel);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(编号\t\t姓名\t\t年龄\t\t性别\t\t出生年月\t\t电话\t\t学历\t\t职务\t\t住址:\n);display(p);printf(按回车键继续\n);writeDate();gets(lj);getchar();}voidinsert(structemp*em){structemp*p0,*p1,*p2;p1=head;p0=em;if(head==NULL){head=p0;p0-next=NULL;}else{while((p0-nump1-num)&&(p1-next!=NULL)){p2=p1;p1=p1-next;}if(p0-num=p1-num){if(head==p1)head=p0;elsep2-next=p0;p0-next=p1;}else{p1-next=p0;p0-next=NULL;}}t++;}voiddisplay(structemp*p){printf(%ld\t\t%s\t\t%d\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\n,p-num,p-name,p-age,p-sex,p-birthday,p-tel,p-edu,p-pos,p-add);}voidliebiao(){charlj[100];structemp*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);}voidchaxun(){chari,lj[100];intflog;time_tT;structtm*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':bianhao();break;case'2':xingming();break;case'3':shengri();break;case'0':flog=1;break;default:printf(输入有误,请重新输入\n);gets(lj);break;}if(flog)break;}}voidbianhao(){intnumber;charlj[100];structemp*p1;p1=head;printf(请输入要查询员工的编号:\n);scan