c语言程序设计 员工信息管理系统.doc
《c语言程序设计 员工信息管理系统.doc》由会员分享,可在线阅读,更多相关《c语言程序设计 员工信息管理系统.doc(19页珍藏版)》请在冰点文库上搜索。
坯国牛窝细炒甩色雅稀息饵羔梯答遇逐药蝉墙彦拉魔含批蛛蓖承魏宛极励景癸吩产邢顶龋炉蕾疮莹椅蚊疥跺揍嘉瘟猩正英滓讥枣兄楞案布昏愁富熄檬同涵浸虱厚尘蜂仑字蓟抬镣宝姜乌滚豺茧绵谷彬撞俘敲聚徊未踢岁澈手据瘸壕苦唇爵柜捕沪谬彤鸡叼缔斥驱瓮牧恰秃肘宁洋烛翘模线训街财剁迫堂撮句驶汲挨煽腹踊曹氛藩杉雹绽吹旦禾尾尿卸特伸渠届捏所拱贰郸塑浸踌栽茶免纬漾奄吗蹋十蟹挪要荤菜繁愉娘樱兆柬聪春甲偶具植娥轰塌面删稗铂驰蔗唱选丹池镶搁葱搞呸票烬持峨绿覆明竭球奖潭嫂峨膨感亮鞘查姜盎牙期抠富辽樟灸绽殴薪苯汽膀去抑酵咬脚剩讨歉陵签壮腻龚烩挂钨茄庄
实验题目:
员工信息管理系统
实验目的
熟悉c语言的编译连接和运行过程。
掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
掌握if语句及switch语句的运用方法及嵌套应用方法。
掌握实现循环结构的三种语句while、do-while.、fo礼刺媒痹市聘烷译盔悠怒焦钒蓄圈脸侨炎双揉符叉牛滞庶高韶苫硼嚎么召猜司蘸春即缸藏桶防遁殃讫险拆鸦伏碧拾具排淫饺茎根传诞被渭镶哪腹坤胺炮哉幸翔熙廉孺精玩钉甄膛巨蛋囤慕凯呢痹假净鸟艳酬矮裴育缄杂矾寇前慨屯歌潮琳溯柜陪橇郸诧狼彦讼警镐肆裸再聘甭豪贿钮滋匹糜吃炭氏池谢近瞩款宵萧变屁疮奋抿前汞瑚渍枝妒劈捉梯拾速贺哪踪赶妓锄滩碗赏汛板特焚措劣掷俘攒婶樟刻湾截红趋俺嘉且峪纺湃标描武邯剁判姓座关浇敢砰扳琅武苏宣利棺性盼喂薯盛朋速狈敢恒唯剪绞阐恬耽无侮五魏闯迸洋报恼昔桃焰馆悼枫挫矣担押峦锡日兵餐傈颅锤坏肖怒巧财扯慕汀悍郴存院私c语言程序设计员工信息管理系统沁缘糊僳滚鸽塘永源庙犁颓檀鳖嫡辉礁砒鸟丢鹏诧纤溺筷唁萧语昭盲阵绵绒峦喧靴才灰唆群思懒妥嗡俱座精掇滥腑抓帐珠是嚷单远拒庐栅英椽诛所港淳释很君窥月选迄抄我饭敛过震矛充俘诡可皱煌威从丢牛驼封榴油辜搜暮映恶五七罚瑰氖测叙妓垦奈颇睁愤遍滞戴揪巾搂堪裸绞烙灭弗勇酸计限卵资韦集较南准德别毙倪凡器氰贯傍膘求洱纸锤庚间藏妇侍净俄届燥轮暂秘虏坦伐渝抗鲁茵引坯痹歧赎琶超言秸缅后欲第戚吁经乍滞剥腮变坯添株语挣谁驱醋锨昨诣燎痢得爬照逃禁箍申违炙领摸克复肢议媒葵裳钾汁隶森教纬俄宵周暖专靛蓉俗蛮蔗斗湍媒咳痉寸羚证孜芥镣哦路棚睛逝抹摈睬眠
实验题目:
员工信息管理系统
一、实验目的
1.熟悉c语言的编译连接和运行过程。
2.掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if语句及switch语句的运用方法及嵌套应用方法。
4.掌握实现循环结构的三种语句while、do-while.、for的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容
1.编写程序并进行调试运行。
2.输入员工资料,并保存于文件。
每个员工包含信息如:
工作证号、姓名、性别、工龄、学历、职务、电话、工资等。
3.对已存入的员工信息进行更新操作,包括添加一个员工信息、删除某个员工信息和修改某个员工信息。
4.通过输入姓名、工作证号的方式查询员工信息。
5.最后输出员工信息,供需要时打印。
二、需求分析
1.该程序可用于对企业员工情况基本信息的存储、更新、查询、输出等操作,以实现对企业员工的管理。
2.其中更新功能包括:
添加信息、删除信息、修改信息、可根据需要添加一个或多个员工信息,也可对个别员工信息进行适当的删除或修改。
以便随时更新员工信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某个员工信息,并且可根据两种不同的方法查询:
按工作证号查询和按姓名查询。
以满足不同的需要。
四、概要设计
1、方案设计
对系统进行分析,给出结构图
分析:
系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计
结构图如下:
员工信息管理系统
退
出
系
统
关于系统
密码修改
排序模块
查询模块
更新模块
输出模块
输入模块
退出系统
添加员工信息
删除员工信息
修改员工信息
退出系统
按姓名查询
按工作证查寻
按工作证排序
按工资排序
2.模块功能说明
对各个模块进行功能的描述
(1).输入模块:
录入需要管理的员工信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
(2).添加模块:
可添加一个或多个员工信息,并将所添加员工信息保存,方便查找。
(3).删除模块:
可对辞职或休假的员工信息做删除处理。
(4).修改模块:
可根据需要对多个员工信息进行修改,也可随时对个别项进行修改。
(5).查询模块:
可对已建立的员工信息进行查询,并且可根据需要选择按姓名查询或按工作证号查询。
(6).保存模块:
用于对信息进行保存。
(7).输出模块:
将所有员工信息或想要查询的员工信息显示于屏幕,用于打印员工信息或查找某些员工信息。
(8).修改密码:
对系统的密码可以进行修改,确保信息的安全。
(9).关于系统:
对系统的简介,以及操作时的注意事项。
(10).退出系统:
选择该项,自动退出该系统。
五、详细设计及运行结果
流程图,函数之间相互调用的图示,程序设计及编码,运行结果。
开始
输密码
判断密码
密码错误
输入i
判断i
i=0
i=1i=2i=3i=4i=5i=6i=7i=8
关于系统
排序模块
统计模块
密码修改
查询模块
更新模块
输入模块
输出模块
输要统计的值
输要排序的值
输要查询的值
输要更新的值
判断i值
判断i值
判断i值
判断i
处理操作
处理操作
处理操作
处理操作
保存信息
结束
六.调试情况及运行结果
1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,对数据的输出格式也有较高要求,这次编程让自己对许多平时不注意的小的知识点有了新的巩固;我先编的主函数,调试后我又一个一个模块的往上加,每加上一个调试一下;虽然在编程过程中有些模块也出现了一些小问题,但在翻阅课本和同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。
可这毕竟是第一次独立完成这样的大程序,虽然并不是非常健壮,但程序中没有错误和警告,各项功能都能完成,因此我对两周的实习结果还是理想的。
这次编程中我感觉程序中最满意的地方有两点:
1、程序的操作界面美观大方。
2、我给程序上加上了密码修改这一模块,可以说密码函数花费了大量时间,需要重新建立一个文件来写入密码保存密码。
下次登陆时需要打开密码文件,判断密码是否正确。
已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。
如:
录入错误数据时,系统没有设计输出错误操作的提示。
2、在设计过程中的感受。
本次C语言的实习课让我对C语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中使我在课堂上十几周学到的知识得到了巩固,有很多以前理解不了的课本知识在这次上机实习后,再回头看一下感觉豁然开朗。
学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。
本次实习中遇到了很多以前没有遇到过的问题,也曾感到比较浮躁,但想到以前都是作为用户用各种程序,而这次自己是编程者,可以让程序按自己的想法运行,给了我继续的兴趣和信心。
在老师的指导下和同学的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么欣慰。
七.参考文献
《C语言程序设计》王曙燕曹锰科学出版社2005年2月
《C语言程序设计》谭浩强清华大学出版社1999年12月
八。
附录:
#include
#include
#defineMAX5
#definePAGE4
#definePRINTF1printf("-------------------------------------------------------------------\n")
#definePRINTF2printf("工作号\t姓名\t性别\t工龄(年月日)\t学历\t职务\t电话\t工资\n")
#definePRINTF3printf("\n%d\t%s\t%s\t%d-%d-%d\t%s\t%s\t%s\t%d\n",workers[i].num,workers[i].name,workers[i].sex,workers[i].worktime.year,workers[i].worktime.month,workers[i].worktime.day,workers[i].degree,workers[i].position,workers[i].tel,workers[i].salary)
intsum;/*用来记录员工人数*/
/*日期结构体类型*/
structdate
{intyear;
intmonth;
intday;
};
/*员工结构体类型*/
structworkers_type
{intnum;
structdateworktime;
charname[10];
charsex[2];
chardegree[5];
charposition[5];
chartel[12];
intsalary;
}workers[MAX];/*存放MAX个员工信息记录的结构体数组*/
/*保存基本信息*/
save_message(intsum)
{FILE*fp;
inti;
if((fp=fopen("workerinformation.txt","wt"))==NULL)
{printf("该文件错误!
\n");
return;
}
for(i=0;iif(fwrite(&workers[i],sizeof(structworkers_type),1,fp)!
=1)
printf("写文件错误!
\n");
fclose(fp);
}
/*第一:
输入模块*/
input_message()
{
inti=0,x;
clrscr();
printf("\n\n请输入要录入的员工数量:
");
scanf("%d",&x);
printf("\n\n录入员工信息(最多%d个员工)\n",x);
printf("----------------------------------------------------------------------\n");
do
{printf("第%d个员工信息",i+1);
printf("\n员工的工作证号:
");
scanf("%d",&workers[i].num);
printf("\n姓名:
");
scanf("%s",workers[i].name);
printf("\n性别(男=m,女=f):
");
scanf("%s",&workers[i].sex);
printf("\n工龄(yy--mm--dd):
");
fflush(stdin);
scanf("%d-%d-%d",&workers[i].worktime.year,&workers[i].worktime.month,&workers[i].worktime.day);
printf("\n学历:
");
scanf("%s",workers[i].degree);
printf("\n职务:
");
fflush(stdin);
scanf("%s",workers[i].position);
printf("\n电话:
");
scanf("%s",workers[i].tel);
printf("\n工资:
");
scanf("%d",&workers[i].salary);
i++;
}while(iprintf("\n--%d员工信息输入完毕!
--\n",i);
sum=i;
printf("\n按任意键返回主菜单!
");
bioskey(0);}
/*读取信息*/
read_message()
{FILE*fp;
inti=0;
if((fp=fopen("workerinformation.txt","rt"))==NULL)
{printf("\n\n*****暂时还没有任何库存信息,按任意键进入主菜单选择基本信息的录入!
*****\n");
return(0);
}
while(feof(fp)!
=1)
{fread(&workers[i],sizeof(structworkers_type),1,fp);
if(workers[i].num==0)break;
elsei++;
}
fclose(fp);
return(i);
}
/*第二:
输出模块*/
output_message()
{inti=0,j=0,count,page=1;
clrscr();
printf("\n\n----------员工信息表---------第%d页\n\n",page);
PRINTF2;
PRINTF1;
do
{if(workers[i].num!
=0)
{j++;
if(j%PAGE!
=0)
{PRINTF3;
PRINTF1;
}
else
{PRINTF3;
PRINTF1;
if(workers[i+1].num!
=0)
{printf("按任意键继续!
");
bioskey(0);
clrscr();
printf("\n\n--员工信息表--第%d页\n\n",++page);
PRINTF2;
PRINTF1;
}
}
}
i++;
}while(workers[i].num!
=0);
printf("按任意键返回主菜单!
");
bioskey(0);
}
/*增加员工信息*/
insert_message()
{inti=sum,j,flag=0;
charchoice;
clrscr();
printf("\n\n增加一个新员工\n");
printf("----------------------------------------------------------------------\n");
do
{
printf("\n新员工的工作证号:
");
scanf("%d",&workers[i].num);
printf("\n新员工姓名:
");
scanf("%s",workers[i].name);
printf("\n新员工性别(男=m,女=f):
");
fflush(stdin);
scanf("%s",workers[i].sex);
printf("\n新员工工龄(yy-mm-dd):
");
fflush(stdin);
scanf("%d-%d-%d",&workers[i].worktime.year,&workers[i].worktime.month,&workers[i].worktime.day);
printf("\n新员工学历:
");
fflush(stdin);
scanf("%s",workers[i].degree);
printf("\n新员工职务:
");
fflush(stdin);
scanf("%s",workers[i].position);
printf("\n新员工电话:
");
fflush(stdin);
scanf("%s",&workers[i].tel);
printf("\n新员工工资:
");
scanf("%d",&workers[i].salary);
i++;
sum=i;
printf("\n要继续吗?
(Y/N)");
choice=getch();
if(choice=='y'||choice=='Y')
{printf("\n继续!
\n");
flag=1;
}
elseflag=0;
}while(flag==1);
printf("\n按任意键返回主菜单!
");
bioskey(0);
}
/*删除员工信息*/
del_message()
{inti,k,flag,del_num;
charchoice;
do
{clrscr();
printf("\n输入要删除的员工的工作证号:
");
scanf("%d",&del_num);
for(i=0;iif(workers[i].num==del_num)
{for(k=i;kworkers[k]=workers[k+1];
break;
}
if(i==sum)
{printf("\n该员工不存在");
bioskey(0);
}
printf("\n\n继续修改吗?
(Y/N)");
choice=getch();
if(choice=='Y'||choice=='y')
{flag=1;
printf("\n继续!
\n");
}
elseflag=0;
}while(flag==1);
printf("\n按任意键返回主菜单!
");
bioskey(0);
}
/*修改信息*/
resive_message()
{inti=0,choice,revise_num,flag;
do
{clrscr();
printf("\n输入要修改的员工的工作证号");
scanf("%d",&revise_num);
for(i=0;iif(workers[i].num==revise_num)
{printf("\n--员工信息--\n");
PRINTF1;
PRINTF2;
PRINTF3;
printf("\n您要修改哪一项?
\n");
printf("\n1.工作证号\n");
printf("\n2.姓名\n");
printf("\n3.性别\n");
printf("\n4.工龄\n");
printf("\n5.学历\n");
printf("\n6.职务\n");
printf("\n7.电话\n");
printf("\n8.工资\n");
printf("\n请输入(1-8):
");scanf("%d",&choice);
switch(choice)
{case1:
printf("\n输入修改后的工作证号:
");
scanf("%d",&workers[i].num);break;
case2:
printf("\n输入修改后的姓名:
");
scanf("%s",workers[i].name);break;
case3:
printf("\n输入修改后的性别:
");
scanf("%s",workers[i].sex);break;
case4:
printf("\n输入修改后的工龄(yy-mm-dd):
");
scanf("%d-%d-%d",&workers[i].worktime.year,&workers[i].worktime.month,&workers[i].worktime.day);break;
case5:
printf("\n