员工管理系统课程设计报告.docx
- 文档编号:27455332
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:30
- 大小:262.02KB
员工管理系统课程设计报告.docx
《员工管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《员工管理系统课程设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
员工管理系统课程设计报告
员工管理系统课程设计报告
————————————————————————————————作者:
————————————————————————————————日期:
石家庄铁道大学
题目员工管理系统
学院信息科学与技术学院
专业计算机科学与技术
学号20112840
学生姓名刘铸辉
指导教师姓名陈娜
日期:
2013—9—1
一.题目与要求
实习二
员工管理系统
[问题描述]
每个员工的信息包括:
编号、姓名、性别、出生年月、学历、职务、电话、住址等。
[基本要求]
根据实验内容编程,上机调试、得出正确的运行程序。
系统能够完成员工信息的查询、
更新、插入、删除、排序功能.写出实验报告(包括源程序和运行结果)。
[实现提示]
(1)建立一个带头结点的单向链表(无序).
(2)对单链表进行插入,删除,更新操作.
(3)在主函数中设计一个简单的菜单,分别调试上述算法。
二.需求分析
本员工管理系统由C语言编写,主要掌握单链表插入,更新,删除,查找等功能。
1.输入的形式和输出的范围:
插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。
在所有输入中,元素的值都是整数。
2.输出的形式:
在所有三种操作中都显示操作是否正确以及操作后单链表的内容。
其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
3.程序所能到达的功能:
完成员工的查询,插入,删除,以及系统的退出
三.概要设计
(1)为了实现上述程序功能,需要定义图的抽象数据类型:
(2)本程序包含了10个函数
1 创建员工编号信息表函数readfile()
2 查找员工编号数据函数seek()
3 修改员工编号信息函数modify()
4 删除员工编号信息函数del()
5 排序员工编号函数SortStudent()
6 打印员工编号信息函数PrintStudent()
7 清除已经删除的数据函数ClearStudent()
8 备份员工编号文件BackStudent()
9 恢复员工编号文件UpStudent()
10 主函数(菜单)main()
(3)模块函数构造
根据上述描述,可以构造出该系统的抽象数据类型和相对应的函数,其方法名和功能如表1所示。
表1函数功能表
模块
函数或数据结构
功能
链表数据类型
structrecord
定义链表结点
structStuLink
定义员工信息
系统处理模块
charu(structemplink*p)
插入员工信息
voidreadfile()
创建员工信息
voiddel()
删除员工信息
voidmodify()
修改员工信息
voidBackStudent()
备份员工信息
voidClearStudent()
清除员工信息
voidseek()
查询员工信息
voidUpStudent()
恢复员工信息
voidSortStudent()
员工信息排序
输出模块
voidPrintStudent()
打印员工信息
四.详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出伪代码,对主程序和其他模块也都需要写出伪代码算法.
1、抽象数据类型定义
1)定义员工信息结构体(typedefstructrecord)
typedefstructrecord
{
intcode;/*员工编号*/
charname[15];/*姓名*/
charsex[3];/*性别*/
charbirthday[15];/*生日*/
charadd[30];/*地址*/
chartel[13];/*电话号码*/
charmail[20];/*邮箱*/
charqq[20];
};
(2)员工编号信息链节点(typedefstructStuLink)
typedefstructStuLink/*员工编号信息链节点*/
{
intcode;/*员工编号*/
charname[15];/*姓名*/
charsex[3];/*性别*/
charbirthday[15];/*生日*/
charadd[30];/*地址*/
chartel[13];/*电话号码*/
charmail[20];/*邮箱*/
charqq[20];
structStuLink*next;
}
2、主函数设计
(1)根据详细设计要求,可以得到主函数代码,在主函数中,实现了友好的界面设计。
系统需要输入员工的基本信息:
员工编号,姓名,性别,生日,地址,电话号码,邮箱,QQ等。
这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有十四种操作的调用:
创建员工信息
voidreadfile()
删除员工信息
voiddel()
修改员工信息
voidmodify()
查询员工信息
voidseek()
员工信息排序
voidSortStudent()
打印员工信息
voidPrintStudent()
录入文字
voidInputWord(char*lx,char*p)
检测员工编号
intexist(intn,FILE*fp)
检测员工姓名
charexist_name(chara[],FILE*fp)
计算文件长度
intFileLenth(FILE*fp)
(2)详细设计
/**************录入文字*********************/
voidInputWord(char*lx,char*p)
{
charword[20];
printf("请输入%s:
”,lx);
scanf(”%s",word);
strcpy(p,word);
}
/************检测员工编号是否存在,若存在返回1*********/
intexist(intn,FILE*fp)
{structrecord*p;
intflag=0;
p=(structrecord*)malloc(sizerecord);/*申请一个新节点,用于读文件内容*/
rewind(fp);
while(!
feof(fp))
{
fread(p,sizerecord,1,fp);/*读出文件内容*/
if(p->code==n)
{flag=1;break;}
}
returnflag;
}
/************检测姓名是否存在,若存在返回1*********/
charexist_name(chara[],FILE*fp)
{structrecord*p;
intflag=0;
p=(structrecord*)malloc(sizerecord);/*申请一个新节点,用于读文件内容*/
rewind(fp);
while(!
feof(fp))
{
fread(p,sizerecord,1,fp);/*读出文件内容*/
if(strcmp(p-〉name,a)==0)
{flag=1;break;}
}
returnflag;
}
/**************计算文件长度*********************/
intFileLenth(FILE*fp)
{
longflen;
fseek(fp,0L,2);/*到文件末尾*/
flen=ftell(fp);/*取位置*/
rewind(fp);/*回到文件头*/
returnflen;
}
/**************创建员工编号信息表*********************/
voidreadfile()
{
longstart,filelen;
FILE*fp;
structrecord*s;
intamount=0;//记录员工编号个数
if((fp=fopen("stuinf”,"a+"))==NULL)fp=fopen("stuinf","w+");
start=FileLenth(fp);
s=(structrecord*)malloc(sizerecord);/*申请一个结构体空间*/
while
(1)
{printf("请输入员工编号(输入0退回上一步):
”);
scanf("%d",&s-〉code);
if(s->code==0)/*退出*/
{if(amount==0)break;/*无录入数据直接退出*/
filelen=FileLenth(fp);
fseek(fp,start,0);
printf(”\t|员工编号\t\t|姓名\t\t|性别\t|生日\t\t|地址\t\t\t|电话号码\t\t|邮箱\t\t|qq\t\t|\n");
while(ftell(fp)〈filelen)/*将新录入的内容打印出来*/
{
fread(s,sizerecord,1,fp);/*读出文件内容*/
printf("|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n”,s-〉code,s->name,s-〉sex,s-〉birthday,s-〉add,s->tel,s—>mail,s—>qq);
}
break;
}
if(s—>code<0)
{
printf(”\n员工编号不能为小于零!
\n”);
continue;
}
if(exist(s—>code,fp)==1)/*检测员工编号是否存在*/
{
printf("输入员工编号已存在!
\n");
continue;
}
InputWord(”姓名”,s—>name);/*录入数据*/
InputWord(”性别”,s-〉sex);/*录入数据*/
InputWord("生日”,s-〉birthday);/*录入数据*/
InputWord(”地址”,s-〉add);/*录入数据*/
InputWord("电话号码",s—>tel);/*录入数据*/
InputWord("邮箱”,s—〉mail);/*录入数据*/
InputWord(”qq",s—〉qq);/*录入数据*/
printf(”|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n",s-〉code,s->name,s—〉sex,s—〉birthday,s-〉add,s->tel,s—〉mail,s-〉qq);
fwrite(s,sizerecord,1,fp);/*把数据写进文件*/
amount++;
}
fclose(fp);
}
/**************查找员工编号数据*********************/
voidseek()
{
chara[15];
intnum;
intitem;
FILE*fp;
structrecord*s;
if((fp=fopen(”stuinf",”r+"))==NULL){printf("无数据可查\n");return;}
s=(structrecord*)malloc(sizerecord);/*申请一个结构体空间*/
printf(”———————-———--—--——\n”);
printf("1.按员工编号查询\n”);
printf(”2.按姓名查询\n");
printf("3。
退出本菜单\n”);
printf("--———---—--——-——--\n”);
while
(1)
{
printf("请选择子菜单编号:
");
scanf("%d",&item);
switch(item)
{
case1:
printf("请输入员工编号(输入0返回):
”);
scanf("%d",&num);
if(num==0)break;/*退出*/
if(exist(num,fp)==1)/*检测员工编号是否存在*/
{fseek(fp,—1L*sizerecord,1);/*回滚一个记录*/
fread(s,sizerecord,1,fp);/*读出文件内容*/
printf("|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n”,s—〉code,s—>name,s—>sex,s->birthday,s—〉add,s—>tel,s-〉mail,s—>qq);
}
else
printf("无此员工编号信息\n”);
break;
case2:
printf(”请输入姓名:
");
scanf("%s",a);
if(exist_name(a,fp)==1)/*检测姓名是否存在*/
{fseek(fp,-1L*sizerecord,1);/*回滚一个记录*/
fread(s,sizerecord,1,fp);/*读出文件内容*/
printf(”|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n",s—>code,s->name,s—>sex,s-〉birthday,s->add,s->tel,s->mail,s-〉qq);
}
else
printf(”无此员工编号信息\n");
break;
case3:
return;
}
}
fclose(fp);
}
/**************修改员工编号信息*********************/
voidmodify()
{
intnum,item;
chara[15];
FILE*fp;
structrecord*s;
if((fp=fopen(”stuinf”,”r+"))==NULL){printf(”无信息可修改\n");return;}
s=(structrecord*)malloc(sizerecord);/*申请一个结构体空间*/
printf(”-——-—--———-—-—--—-\n”);
printf("1。
按员工编号修改\n”);
printf("2.按姓名修改\n");
printf(”3。
退出本菜单\n");
printf(”———-———-—————-—-—-\n");
while
(1)
{
printf("请选择子菜单编号:
”);
scanf(”%d”,&item);
switch(item)
{
case1:
printf("请输入员工编号(输入0返回):
”);
scanf(”%d”,&num);
if(num==0)break;/*退出*/
if(exist(num,fp)==1)/*检测员工编号是否存在*/
{fseek(fp,-1L*sizerecord,1);/*回滚一个记录*/
fread(s,sizerecord,1,fp);/*读出文件内容*/
printf(”修改前信息\n");
printf("|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n”,s->code,s-〉name,s—>sex,s—>birthday,s-〉add,s->tel,s—〉mail,s—>qq);
InputWord("姓名",s->name);/*录入数据*/
InputWord("性别",s-〉sex);/*录入数据*/
InputWord(”生日”,s->birthday);/*录入数据*/
InputWord(”地址”,s—>add);/*录入数据*/
InputWord("电话号码",s->tel);/*录入数据*/
InputWord(”邮箱”,s->mail);/*录入数据*/
InputWord("qq",s—〉qq);/*录入数据*/
printf(”|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n”,s-〉code,s-〉name,s—〉sex,s—〉birthday,s-〉add,s->tel,s-〉mail,s—〉qq);
fseek(fp,-1L*sizerecord,1);/*回滚一个记录*/
fwrite(s,sizerecord,1,fp);/*写新文件内容*/
fseek(fp,-1L*sizerecord,1);/*回滚一个记录*/
fread(s,sizerecord,1,fp);/*读出文件内容*/
printf(”修改后信息\n");
printf(”|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n",s—>code,s-〉name,s—>sex,s—〉birthday,s->add,s->tel,s—〉mail,s->qq);
}
else
printf(”无此员工编号信息\n");
break;
case2:
printf("请输入姓名:
");
scanf(”%s",a);
if(exist_name(a,fp)==1)/*检测姓名是否存在*/
{fseek(fp,—1L*sizerecord,1);/*回滚一个记录*/
fread(s,sizerecord,1,fp);/*读出文件内容*/
printf("修改前信息\n");
printf(”|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n",s-〉code,s—>name,s—>sex,s—〉birthday,s—〉add,s->tel,s—>mail,s->qq);
InputWord(”姓名",s—>name);/*录入数据*/
InputWord(”性别",s—〉sex);/*录入数据*/
InputWord(”生日",s->birthday);/*录入数据*/
InputWord("地址",s—〉add);/*录入数据*/
InputWord("电话号码",s—〉tel);/*录入数据*/
InputWord("邮箱",s—〉mail);/*录入数据*/
InputWord("qq",s—〉qq);/*录入数据*/
printf("|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n",s-〉code,s—〉name,s—〉sex,s-〉birthday,s—>add,s—〉tel,s->mail,s—〉qq);
fseek(fp,—1L*sizerecord,1);/*回滚一个记录*/
fwrite(s,sizerecord,1,fp);/*写新文件内容*/
fseek(fp,-1L*sizerecord,1);/*回滚一个记录*/
fread(s,sizerecord,1,fp);/*读出文件内容*/
printf("修改后信息\n");
printf(”|%d\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t|%s\t\n",s—>code,s->name,s—〉sex,s->birthday,s—>add,s—>tel,s-〉mail,s-〉qq);
}
else
printf("无此员工编号信息\n");
case3:
return;
}
}
fclose(fp);
}
/**************删除员工编号信息*********************/
voiddel()
{
intnum,yn,item;
chara[15];
FILE*fp;
structrecord*s;
if((fp=fopen("stuinf",”r+"))==NULL){printf(”无数据可删除\n”);return;}
s=(structrecord*)malloc(sizerecord);/*申请一个结构体空间*/
printf("--—-——--—---—--——-\n”);
printf(”1。
按员工编号删除\n”);
printf("2.按姓名删除\n”);
printf(”3。
退出本菜单\n”);
printf(”—---——-—--——--—---\n”);
while
(1)
{
printf(”请选择子菜单编号:
");
scanf(”%d”,&item);
switch(item)
{
case1:
printf(”请输入要删除的员工编号(输入0返回):
”);
scanf("%d",&num);
if(num==0)break;/*退出*/
if(exist(num,fp)==1)/*检测员工编号是否存在*/
{printf("员工编号信息非常重要,您确认要删除吗?
(1确认其他退回)");
scanf(”%d",&yn);
if(yn!
=1)break;
printf("再确认一次(1确认其他退回)");
scanf(”%d”,&yn);
if(yn!
=1)break;
s—>code=0;
fseek(fp,—1L*sizerecord,1);/*回滚到原记录*/
fwrite(s,sizerecord,1,fp);/*清掉员工编号,写回*/
}
else
printf("无此员工编号信息\n”);
break;
case2:
printf(”请输入姓名:
");
scanf("%s",a);
if(exist_name(a,fp)==1)/*检测姓名是否存在*/
{printf("员工编号信息非常重要,您确认要删除吗?
(1确认其他退回)”);
scanf("%d”,&yn);
if(yn!
=1)break;
printf(”再确认一次(1确认其他退回)");
scanf("%d”,&yn);
if(yn!
=1)break;
s-〉code=0;
fseek(fp,—1L*sizerecord,1);/*回滚到原记录*/
fwrite(s,sizerecord,1,fp);/*清掉员工编号,写回*/
}
else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 管理 系统 课程设计 报告