您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页数据结构c语言员工信息管理系统

数据结构c语言员工信息管理系统

来源:百家汽车网
让结局不留遗憾,让过程更加完美。 数据结构实习报告

---信息管理

学校 石家庄铁道大学 指导老师 张翠肖 班级 信0901-1班 学号

姓名 张洁 院系 信息分院

2011.07.05

学生信息管理系统 一、 需求分析

本程序主要是执行链表的删除 插入等功能

根据程序提示

我们可以添加、修改、删除员工信息 并能进行多种方式的查询 还有员工信息一览

二、 概要设计

1) 为了实现上述功能 需要定义一下抽象的数据类型: ADT List{

数据对象:D={ai|ai∈ElemSet i=1 2·············· n n>=0}

数据关系:R1={|ai-1 ai∈D i=1

2``````` n}

基本操作:

Init List(&L);

操作结果:构造一个空的线性表L

DestroyList(&L); 初始条件:线性表L存在

操作结果:销毁线性表L

LocateElem(L I &e);

初始条件:线性表L存在 1操作结果:用e返回线性表L中第i个数据元素的值

ClearList(&L);

初始条件:线性表L存在

操作结果:将线性表L重置为空表

}ADT Graph

2) 本程序是由几个函数构成的: ① 主函数:main() ② 菜单函数menu();

③ 文件读入函数:read data(); ④ 文件写入函数:write data(); ⑤ 信息查询函数:chaxun(); ⑥ 信息更新函数:gengxin(); ⑦ 信息一览函数:liebiao(); ⑧ 数据删除函数:shanchu(); ⑨ 数据添加函数:tianjia(); ⑩ 数据修改函数:xiugai(); 它们的调用关系如

三、 详细设计

#include #include #include

#include //清屏函数头文件 #include #include #include

#define LEN sizeof(struct emp) #define DATA \"employee.txt\"

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; };

struct 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); void main() {

struct emp *head=NULL;

head=(struct emp *)malloc(LEN); head->next=NULL;system(\"color 1f\"); system(\"mode con: cols=150 lines=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\"); }

void menu(void) {

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(\" ┃ ┃\\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; }} void tianjia() {

struct emp *p *p1; char lj[100]; p=NULL;p1=head;

printf(\"请输入第%d个员工的信息.\\n\" t+1);

p=(struct emp *)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(\"编号\\姓名\\年龄\\性别\\出生年月\\电话\\学历\\职务\\住址:\\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;} 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++;}

void display(struct emp *p)

{printf(\"%ld\\%s\\%d\\%s\\%s\\%s\\%s\\%s\\%s\\n\" p->num p->name p->age p->sex

p->birthday p->tel p->edu p->pos p->add);}

void liebiao() {

char lj[100]; struct emp *p; p=head; system(\"cls\"); if(head==NULL){printf(\"查找不到信息\\n\");menu();}

printf(\"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━员工信息列表━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n\");

printf(\"编号\\姓名\\年龄\\性别\\出生年月\\电话\\学历\\职务\\住址 :\\n\"); if(head!=NULL)

{while(p!=NULL) {display(p);p=p->next;} } printf(\"\\n按回车键返回主菜单\\n\");gets(lj);} 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(\" ┃ ┃\\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;}} void bianhao() {

int number;char lj[100]; struct emp *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(\"编号\\姓名\\年龄\\性别\\出生年月\\电话\\学历\\职务\\住址:\\n\");

printf(\"%ld\\%s\\%d\\%s\\%s\\%s\\%s\\%s\\%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(); } else if(p1->next==NULL)

{ printf(\"要查询的员工信息不存在 按回车键返回:\\n\");

gets(lj);getchar();}} void xingming() {

char ch[10];struct emp *p;char lj[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(\"编号\\姓名\\年龄\\性别\\出生年月\\电话\\学历\\职务\\住址:\\n\"); display(p);printf(\"按回车键继续\\n\"); gets(lj);getchar();} else if(p->next==NULL) {

printf(\"不存在员工记录.\\n\");gets(lj); getchar(); return;}} void shengri() {

char bir[20]

lj[100]; struct emp *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(\"编号\\姓名\\年龄\\性别\\出生年月\\电话\\学历\\职务\\住址:\\n\"); display(p);printf(\"按回车键继续\\n\");gets(lj); getchar(); }

else if(p->next==NULL)

{printf(\"不存在员工记录.按回车键返回\\n\");gets(lj); getchar(); return;}} void readDate()

{

FILE * fp;struct emp *p1 *p2;fp=fopen(DATA \"r\");

if(!fp)

{printf(\"打开文件失败!按回车键继续\\n\");getchar();} else

{ fscanf(fp \"%d\\n\"

&t);head=p1=p2=(struct emp *)malloc(LEN); fscanf(fp \"%ld\\%s\\%d\\%s\\%s\\%s\\%s\\%s\\%s\\n\" &p1->num p1->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 \"%ld\\%s\\%d\\%s\\%s\\%s\\%s\\%s\\%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);}} void writeDate() {

FILE* fp; struct emp *p1;fp=fopen(DATA \"w\");

if(!fp)

{ printf(\"打开文件失败!\\n\");remove(fp); getchar(); {fprintf(fp \"%d\\n\"

t);for(p1=head;p1!=NULL;p1=p1->next) {fprintf(fp \"%ld\\%s\\%d\\%s\\%s\\%s\\%s\\%s\\%s\\n\" p1->num p1->name

}else 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 lj[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;

else p2->next=p1->next; free(p1);t--; writeDate();printf(\"删除成功 按回车键继续\\n\");} else

printf(\"没有该员工的纪录

请核对.按回车键返回\\n\");gets(lj); getchar();} void xiugai() {

struct emp *p1 *p2;

long int number; char lj[100]; if(head==NULL) {

printf(\"无员工纪录!按回车键返回\\n\"); gets(lj);

getchar(); return; }

printf(\"请输入你要修改的员工的编号:\\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\"); } else

printf(\"没有该员工的纪录 请核对.按回车键返回\\n\"); gets(lj); getchar(); }

void devise(struct emp *p) {

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(\" ┃\\n\");

printf(\" 3.修改员工生日 \\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':printf(\"请输入员工的姓名:\\n\");scanf(\"%s\" p->name);break;

case '2':printf(\"请输入员工的年龄:\\n\");scanf(\"%d\" &p->age);break;

case '3':printf(\"请输入员工的性别:\\n\");scanf(\"%s\" p->sex);break;

case '4':printf(\"请输入员工的出生年月:\\n\");scanf(\"%s\" p->birthday); break;

case '5':xiugai();printf(\"请输入员工的电话:\\n\");scanf(\"%s\" p->tel);break;

case '0':flog=1;break; default:printf(\"输入有误 请重新输入\\n\");gets(lj);break; }

if(flog)break; }

}

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; } }

四、 调试分析 在这个程序中 由于思维不周密

大量的空指针给我造成了巨大困扰 致使内存无法读写

此外

对c语言读写文件的不熟悉 也使我浪费了很多时间

五、 用户使用说明 本程序使用c语言编写 在vc6.0环境下编译通过

根据提示

用户通过输入个位数0-3选择不同的功能 进行查询、修改、浏览员工信息

六、 测试结果 ?? ?? ?? ??

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务