c语言程序设计 员工信息管理系统.docx
《c语言程序设计 员工信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计 员工信息管理系统.docx(30页珍藏版)》请在冰豆网上搜索。
c语言程序设计员工信息管理系统
c语言程序设计员工信息管理系统
实验目的
熟悉c语言的编译连接和运行过程。
把握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
把握if语句及switch语句的运用方法及嵌套应用方法。
把握实现循环结构的三种语句while、do-while.、for的使用。
把握函数的定义方法和调用方法。
能够采纳模块化思想调试程序。
二.实验内容
编写程序并进行调试运行。
输入职员资料,并储存于文件。
每个职员包含信息如:
工作证号、姓名、性不、工龄、学历、职务、电话、工资等。
对已存入的职员信息进行更新操作,包括添加一个职员信息、删除某个职员信息和修改某个职员信息。
通过输入姓名、工作证号的方式查询职员信息。
最后输出职员信息,供需要时打印。
需求分析
该程序可用于对企业职员情形差不多信息的储备、更新、查询、输出等操作,以实现对企业职员的治理。
其中更新功能包括:
添加信息、删除信息、修改信息、可按照需要添加一个或多个职员信息,也可对个不职员信息进行适当的删除或修改。
以便随时更新职员信息。
程序中设计的查询功能可按照需要从若干数据中查询某个职员信息,同时可按照两种不同的方法查询:
按工作证号查询和按姓名查询。
以满足不同的需要。
四、概要设计
1、方案设计
对系统进行分析,给出结构图
分析:
系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计
结构图如下:
密码修改
查询模块
更新模块
输出模块
输入模块
2.模块功能讲明
对各个模块进行功能的描述
(1).输入模块:
录入需要治理的职员信息并将信息储存于文件中,以方便日后进行打印、读取、更新等操作。
(2).添加模块:
可添加一个或多个职员信息,并将所添加职员信息储存,方便查找。
(3).删除模块:
可对辞职或休假的职员信息做删除处理。
(4).修改模块:
可按照需要对多个职员信息进行修改,也可随时对个不项进行修改。
(5).查询模块:
可对已建立的职员信息进行查询,同时可按照需要选择按姓名查询或按工作证号查询。
(6).储存模块:
用于对信息进行储存。
(7).输出模块:
将所有职员信息或想要查询的职员信息显示于屏幕,用于打印职员信息或查找某些职员信息。
(8).修改密码:
对系统的密码能够进行修改,确保信息的安全。
(9).关于系统:
对系统的简介,以及操作时的注意事项。
(10).退出系统:
选择该项,自动退出该系统。
五、详细设计及运行结果
流程图,函数之间相互调用的图示,程序设计及编码,运行结果。
密码错误
i=0
i=1i=2i=3i=4i=5i=6i=7i=8
六.调试情形及运行结果
对自己设计进行评判,指出合理和不足之处,提出改进的方案。
此次实践课编写的是一个应用程序,有关于往常我们见到的程序,它要大得多,对数据的输出格式也有较高要求,这次编程让自己对许多平常不注意的小的知识点有了新的巩固;我先编的主函数,调试后我又一个一个模块的往上加,每加上一个调试一下;尽管在编程过程中有些模块也显现了一些小咨询题,但在翻阅课本和同学们的关心下,我专门有耐心的一次又一次的进行修改,最后运行的结果差不多上达到了预期的目的。
可这如何讲是第一次独立完成如此的大程序,尽管并不是专门健壮,但程序中没有错误和警告,各项功能都能完成,因此我对两周的实习结果依旧理想的。
这次编程中我感受程序中最中意的地点有两点:
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")
intsum;/*用来记录职员人数*/
/*日期结构体类型*/
structdate
{intyear;
intmonth;
intday;
};
/*职员结构体类型*/
structworkers_type
{intnum;
structdateworktime;
charname[10];
charsex[2];
chardegree[5];
charposition[5];
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电话:
");
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);
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输入修改后的学历:
");
scanf("%s",workers[i].degree);break;
case6:
printf("\n输入修改后的职务:
");
scanf("%s",workers[i].position);break;
case7:
printf("\n输入修改后的电话:
");
);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;iif(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;iif(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;iif(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_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:
inquire_name();break;
case2:
inquire_num();break;
case3:
inquire_degree();break;
case0:
break;
}
}while(choice!
=0);
}
/*工作证号排行*/
sort_num()
{structworkers_type*p,*q[MAX];
inti,j,k;
clrscr();
printf("\n工作证号排行\n");
printf("---------------------------------------------------------------------\n");
printf("排行\t工作号\t姓名\t性不\t学历\t职务\t电话\t工资\n");
p=workers;
for(i=0;iq[i]=p++;
for(i=0;i{k=i;
for(j=i+1;jif