数据结构c语言员工信息管理系统.docx
- 文档编号:2044218
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:25
- 大小:19.96KB
数据结构c语言员工信息管理系统.docx
《数据结构c语言员工信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构c语言员工信息管理系统.docx(25页珍藏版)》请在冰点文库上搜索。
数据结构c语言员工信息管理系统
有志者自有千方百计,无志者只感千难万难。
数据结构实习报告
---信息管理
学校石家庄铁道大学
指导老师张翠肖
班级信0901-1班
学号20082406
姓名张洁
院系信息分院
2011.07.05
学生信息管理系统
一、需求分析
本程序主要是执行链表的删除
插入等功能
根据程序提示
我们可以添加、修改、删除员工信息
并能进行多种方式的查询
还有员工信息一览
二、概要设计
1)为了实现上述功能
需要定义一下抽象的数据类型:
ADTList{
数据对象:
D={ai|ai∈ElemSet
i=1
2··············
n
n>=0}
数据关系:
R1={ ai>|ai-1 ai∈D i=1 2``````` n} 基本操作: InitList(&L); 操作结果: 构造一个空的线性表L DestroyList(&L); 初始条件: 线性表L存在 操作结果: 销毁线性表L LocateElem(L I &e); 初始条件: 线性表L存在 1 操作结果: 用e返回线性表L中第i个数据元素的值 ClearList(&L); 初始条件: 线性表L存在 操作结果: 将线性表L重置为空表 }ADTGraph 2)本程序是由几个函数构成的: ① 主函数: main() ② 菜单函数menu(); ③ 文件读入函数: readdata(); ④ 文件写入函数: writedata(); ⑤ 信息查询函数: chaxun(); ⑥ 信息更新函数: gengxin(); ⑦ 信息一览函数: liebiao(); ⑧ 数据删除函数: shanchu(); ⑨ 数据添加函数: tianjia(); ⑩ 数据修改函数: xiugai(); 它们的调用关系如 三、详细设计 #include #include #include #include #include #include #include #defineLENsizeof(structemp) #defineDATA"employee.txt" structemp { 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->num>p1->num)&&(p1->next! =NULL)) {p2=p1;p1=p1->next;}if(p0->num<=p1->num) { if(head==p1)head=p0; else p2->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"); scanf("%d" &number); while((number! =p1->num)&&(p1->next! =NULL)) {p1=p1->next;} if(number==p1->num) { printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━员工信息查询━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); printf("要查询的员工信息: \n"); printf("编号\t\t姓名\t\t年龄\t\t性别\t\t出生年月\t\t电话\t\t学历\t\t职务\t\t住址: \n");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" p1->num p1->name p1->age p1->sex p1->birthday p1->tel p1->edu p1->pos p1->add); printf("按回车键继续\n");gets(lj);getchar();} elseif(p1->next==NULL) {printf("要查询的员工信息不存在 按回车键返回: \n"); gets(lj);getchar();}} voidxingming() { charch[10];structemp*p;charlj[100];p=head; printf("请输入要查询的员工的名字: \n"); scanf("%s" ch);if(p==NULL) { printf("不存在员工记录 按回车键返回.\n"); gets(lj);getchar();return;} while(strcmp(ch p->name)&&p->next! =NULL) {p=p->next;} if(! strcmp(ch p->name)) {printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━员工信息查询━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); printf("编号\t\t姓名\t\t年龄\t\t性别\t\t出生年月\t\t电话\t\t学历\t\t职务\t\t住址: \n");display(p);printf("按回车键继续\n"); gets(lj);getchar();} elseif(p->next==NULL) { printf("不存在员工记录.\n");gets(lj); getchar();return;}} voidshengri() { charbir[20] lj[100];structemp*p; p=head;printf("请输入要查询的员工的出生日期: \n"); scanf("%s" bir);if(p==NULL) { printf("不存在员工记录.按回车键返回\n");gets(lj); getchar();return;} while(strcmp(bir p->birthday)&&p->next! =NULL) {p=p->next;} if(! strcmp(bir p->name)) { printf("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━员工信息查询━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"); printf("编号\t\t姓名\t\t年龄\t\t性别\t\t出生年月\t\t电话\t\t学历\t\t职务\t\t住址: \n");display(p);printf("按回车键继续\n");gets(lj); getchar();} elseif(p->next==NULL) {printf("不存在员工记录.按回车键返回\n");gets(lj); getchar();return;}} voidreadDate() { FILE*fp;structemp*p1 *p2;fp=fopen(DATA "r"); if(! fp) {printf("打开文件失败! 按回车键继续\n");getchar();} else {fscanf(fp "%d\n" &t);head=p1=p2=(structemp*)malloc(LEN);fscanf(fp "%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" &p1->num p1->name &p1->age p1->sex p1->birthday p1->tel p1->edu p1->pos p1->add);while(! feof(fp)) {p1=(structemp*)malloc(LEN);fscanf(fp "%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" &p1->num p1->name &p1->age p1->sex p1->birthday p1->tel p1->edu p1->pos p1->add);p2->next=p1;p2=p1;} p2->next=NULL;fclose(fp);}} voidwriteDate() { FILE*fp;structemp*p1;fp=fopen(DATA "w"); if(! fp) {printf("打开文件失败! \n");remove(fp);getchar();}else {fprintf(fp "%d\n" t);for(p1=head;p1! =NULL;p1=p1->next){fprintf(fp "%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" p1->num p1->name p1->age p1->sex p1->birthday p1->tel p1->edu p1->pos p1->add);}fclose(fp);}} voidfreeAll() { structemp*p1 *p2;p1=p2=head; while(p1) {p2=p1->next;free(p1);p1=p2;}} voidshanchu() { structemp*p1 *p2;longintnumber;charlj[100]; if(head==NULL) { 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言 员工 信息管理 系统