员 工 信 息 管 理 系 统含附源代码 08.docx
- 文档编号:18227595
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:30
- 大小:22.33KB
员 工 信 息 管 理 系 统含附源代码 08.docx
《员 工 信 息 管 理 系 统含附源代码 08.docx》由会员分享,可在线阅读,更多相关《员 工 信 息 管 理 系 统含附源代码 08.docx(30页珍藏版)》请在冰豆网上搜索。
员工信息管理系统含附源代码08
西安郵電學院
高级语言课程设计报告
题目:
员工信息管理系统
系部名称
:
电信系
专业名称
:
电子科学与技术
班级
:
科技0701
班内序号
:
08
学生姓名
:
韩承玺
指导教师
:
黄茹
时间
:
2008年6月10日至2008年6月20日
实验题目:
员工信息管理系统
一、实验目的
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;i if(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(i printf("\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;i if(workers[i].num==del_num) {for(k=i;k workers[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;i if(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输入修改后的学历: "); scanf("%s",workers[i].degree);break; case6: printf("\n输入修改后的职务: "); scanf("%s",workers[i].position);break; case7: printf("\n输入修改后的电话: "); scanf("%s",&workers[i].tel );break; case8: printf("\n输入修改后的工资: "); scanf("%d",&workers[i].salary);break; } PRINTF1; PRINTF2; PRINTF3; 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); } /*第三: 更新模块*/ renew_message() {intchoice; do {clrscr(); printf("\n\n\n**********更新员工信息*********\n\n"); printf("1.添加员工信息\n\n"); printf("2.删除员工信息\n\n"); printf("3.修改员工信息\n\n"); printf("0.返回主菜单\n\n"); printf("请选择(0-3): "); scanf("%d",&choice); switch(choice) {case1: insert_message();break; case2: del_message();break; case3: resive_message();break; case0: break; } }while(choice! =0); } /*按姓名查询*/ inquire_name() {inti,choice,j=0; charinquire_name[10]; clrscr(); printf("\n输入要查询的员工姓名: "); scanf("%s",inquire_name); for(i=0;i if(strcmp(workers[i].name,inquire_name)==0&&workers[i].num! =0) {printf("\n--员工信息--\n"); PRINTF1; PRINTF2; PRINTF3; } elsej++; if(j==sum)printf("\n该员工不存在! "); bioskey(0); } /*按工作证号查询*/ inquire_num() {inti,choice,j=0,inquire_num; clrscr(); printf("\n输入要查询的员工的工作证号: "); scanf("%d",&inquire_num); for(i=0;i if(workers[i].num==inquire_num&&workers[i].num! =0) {printf("\n--员工信息--\n"); PRINTF1; PRINTF2; PRINTF3; } elsej++; if(j==sum)printf("\n该员工不存在! "); bioskey(0); } /*按学历查询*/ inquire_degree() {inti,choice,j=0; charinquire_degree[5]; clrscr(); printf("\n输入要查询的员工学历: "); scanf("%s",inquire_degree); for(i=0;i if(strcmp(workers[i].degree,inquire_degree)==0&&workers[i].num! =0) {printf("\n--员工信息--\n"); PRINTF1; PRINTF2; PRINTF3; } elsej++; if(j==sum)printf("\n该员工不存在! "); bioskey(0); } /*第四: 查询模块*/ inquire_m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统含附源代码 08 统含附 源代码