c语言程序设计企业员工管理系统.docx
《c语言程序设计企业员工管理系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计企业员工管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
![c语言程序设计企业员工管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/14/fd1f1145-6970-4a3a-b392-1b23a16118dd/fd1f1145-6970-4a3a-b392-1b23a16118dd1.gif)
c语言程序设计企业员工管理系统
一、课程设计目的
通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法。
学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。
为后续各门计算机课程的学习打下坚实基础。
为毕业设计和以后工作打下必要基础。
二、课程设计内容
针对某企业的员工,对其信息进行系统的管理。
三、需求分析
对所开发系统功能、性能的描述,想要实现的目标。
此系统可对该厂员工进行信息的录入,修改,删除,添加,查询,排序,统计,打印等功能。
用户可通过提示选择进入某一功能界面,然后进行对员工的信息管理。
每一功能模块都充分为用户考虑,编排详细。
使用户可以方便快捷的了解员工信息,及时有效的对员工进行信息的管理。
四、概要设计
1.系统结构图(功能模块图)
对系统进行分析,给出系统结构图;
分析:
此系统,为方便客户输入,以及使程序清晰化,因而本人采用模块法,将每一功能模块化,使程序中各函数间调用更加明了。
以下为系统模块图。
2.功能模块说明
对各个模块进行功能的描述。
录入模块:
输入该厂现有员工信息并保存与文件中,方便日后进行排序,更新,统计,打印等操作。
输出模块:
将所有员工信息,或所需员工信息输出于屏幕上,用于打印或查询员工信息。
更新模块:
此模块又分为删除,添加,修改三个模块。
删除模块:
对已退休或离开该厂的员工进行删除操作。
添加模块:
添加新入厂的员工信息并保存起来。
修改模块:
找到该员工并,选择所要修改的选项。
排序模块:
本程序只对员工年龄进行从小到大排序。
查询模块:
此模块分为按姓名,年龄,工作查询。
姓名查询模块:
输入要查找的姓名,找到就输出其信息。
找不到则输出无此人。
年龄查询模块:
输入要查找的年龄,找到就输出其信息。
找不到则输出无此人。
工作查询模块:
输入要查找的工作,找到就输出其信息。
找不到则输出无此人。
统计模块:
此模块分为,统计年龄,性别和工作。
统计年龄:
输入要统计的年龄,查找并输出,若无此年龄则输出暂无此年龄员工。
统计性别:
输入要统计的性别,查找并输出,若无此性别则输出暂无此性别员工。
统计工作:
输入要统计的工作,查找并输出,若无此工作则输出暂无此工作员工。
保存模块:
将现有信息保存于文件中,以防丢失。
系统模块图
五、详细设计及运行结果
流程图,函数之间相互调用的图示,程序设计及编码,运行结果。
主函数:
i=1i=6i=2i=3i=4i=5i=0
输出模块:
否
录入模块:
是
否
是
否
是
排序模块:
更新模块:
否i=3
i=1i=2i=0
是
否
否
是
是
否
是
查询模块:
统计模块:
i=1i=3i=2i=0i=1i=2i=3i=0
否否
是是
六、调试情况,设计技巧及体会
1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
自我评价:
本人自我觉得此系统还不错,程序简洁明了,功能齐全,而且充分从用户的角度进行编排,易于执行。
经本人多次调试终于出现0个错误与警告,而且从未有过死循环,用户一旦输错,立即会有提示,此程序相当的健壮。
因本人定义了全局变量,使操作更加简单易行,使用了结构体数组,避开链表那样的复杂操作。
但不足之处便是没有链表那样节省内存。
如有机会下次可能会用链表。
2、在设计过程中的感受。
在把字符一个个敲上屏幕时,坐在那一动不动相当的枯燥,一想到过会儿就能看到自己亲自编的程序,就只能忍吧。
当看到模块一个个运行后与预料中的完全一样时,郁闷的心情立马被一种成就感替代。
就想赶紧编完看看自己的杰作。
然而也会遇到自己解决不了的问题,就只能去求老师了。
这次最大的感受就是当你竭尽全力的干一件事时,就没有能挡住你的困难。
七、参考文献
C语言课本。
八、附录:
源代码
#include
#include
#defineMAX100
charfilename[20];/*文件名*/
FILE*fp;
intn;/*当前该厂人数*/
structdate/*时间结构体*/
{intyear;
intmouth;
intday;
};
structperson/*员工信息结构体*/
{charname[10];/*姓名*/
intage;/*年龄*/
charjob[10];/*工作*/
charsex[10];/*性别*/
charaddress[20];/*地址*/
charphone[10];/*电话*/
structdatein_time;/*入厂时间*/
}t,worker[MAX];
/*录入模块*/
voidinput()
{inti;
clrscr();
printf("\n\n请输入文件名\n");
scanf("%s",filename);
printf("开始输入员工的信息\n");
printf("\n请输入现有员工人数\n");
scanf("%d",&n);
if((fp=fopen(filename,"w"))==NULL)
{printf("不能建立!
\n");
exit();
}
for(i=0;i{printf("第%d个人的信息:
\n",i+1);
printf("姓名\n");
scanf("%s",worker[i].name);
printf("年龄\n");
scanf("%d",&worker[i].age);
printf("工作\n");
scanf("%s",worker[i].job);
printf("性别\n");
scanf("%s",worker[i].sex);
printf("地址\n");
scanf("%s",worker[i].address);
printf("电话\n");
scanf("%s",worker[i].phone);
printf("入厂年\n");
scanf("%d",&worker[i].in_time.year);
printf("入厂月\n");
scanf("%d",&worker[i].in_time.mouth);
printf("入厂日\n");
scanf("%d",&worker[i].in_time.day);
}
printf("录入完毕,按任意键返回主菜单\n");
getch();
for(i=0;ifprintf(fp,"%s%d%s%s%s%s%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);
fclose(fp);
}
/*输出模块*/
voidoutput()
{inti;
if((fp=fopen(filename,"r"))==NULL)
{printf("暂时未有任何信息,请按任意键返回主菜单进行信息录入\n");
getch();
exit();
}
clrscr();
printf("该厂的员工信息:
\n");
printf("姓名\t年龄\t工作\t性别\t地址\t电话\t入厂时间\n");
for(i=0;i{fscanf(fp,"%s%d%s%s%s%s%d-%d-%d",worker[i].name,&worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.year,&worker[i].in_time.mouth,&worker[i].in_time.day);
printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);
}
fclose(fp);
printf("输出完毕,按任意键返回主菜单\n");
getch();
}
/*保存模块*/
voidsave()
{inti;
if((fp=fopen(filename,"w"))==NULL)/*打开文件*/
{printf("\n不能打开该文件!
");
exit();
}
for(i=0;ifprintf(fp,"%s%d%s%s%s%s%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);
fclose(fp);
}
/*读取信息*/
voidread_message()
{inti;
printf("输入文件名\n");
scanf("%s",filename);
printf("\n请输入现有员工人数\n");
scanf("%d",&n);
if((fp=fopen(filename,"r"))==NULL)
{printf("暂时未有任何信息,请按任意键返回主菜单进行信息录入\n");
getch();
}
for(i=0;ifscanf(fp,"%s%d%s%s%s%s%d-%d-%d",worker[i].name,&worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.year,&worker[i].in_time.mouth,&worker[i].in_time.day);
fclose(fp);
}
/*修改模块*/
voidmodify()
{inti,flag,choice;charch,namekey[10];
flag=0;
clrscr();
printf("开始修改\n");
do
{
printf("请输入要修改的员工姓名\n");
scanf("%s",namekey);
for(i=0;i{if(strcmp(worker[i].name,namekey)==0)
{printf("是否修改此人(y/n)\n");
printf("姓名\t年龄\t工作\t性别\t地址\t电话\t入厂时间\n");
printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);
getchar();/*接收回车*/
ch=getchar();
if(ch=='y')
{printf("****您要修改那一项?
***\n\n");
printf("***1,姓名***\n\n");
printf("***2,年龄***\n\n");
printf("***3,工作***\n\n");
printf("***4,性别***\n\n");
printf("***5,地址***\n\n");
printf("***6,电话***\n\n");
printf("***7,入厂年***\n\n");
printf("***8,入厂月***\n\n");
printf("***9,入厂日***\n\n");
printf("请选择(1-9)\n");
scanf("%d",&choice);
switch(choice)
{case1:
printf("输入修改后的姓名\n");
scanf("%s",worker[i].name);break;
case2:
printf("输入修改后的年龄\n");
scanf("%d",&worker[i].age);break;
case3:
printf("输入修改后的工作\n");
scanf("%s",worker[i].job);break;
case4:
printf("输入修改后的性别\n");
scanf("%s",worker[i].sex);break;
case5:
printf("输入修改后的地址\n");
scanf("%s",worker[i].address);break;
case6:
printf("输入修改后的电话\n");
scanf("%s",worker[i].phone);break;
case7:
printf("输入修改后的入厂年\n");
scanf("%d",&worker[i].in_time.year);break;
case8:
printf("输入修改后的入厂月\n");
scanf("%d",&worker[i].in_time.mouth);break;
case9:
printf("输入修改后的入厂日\n");
scanf("%d",&worker[i].in_time.day);break;
}
printf("修改后的信息\n");
printf("姓名\t年龄\t工作\t性别\t地址\t电话\t入厂时间\n");
printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);
}
elsebreak;
}
else
if(i==n)printf("此人不存在\n");
}
printf("\n是否继续输入(y/n)\n");
getchar();/*接收回车*/
ch=getchar();
if(ch=='y')
{printf("继续\n");
flag=1;
}
elseflag=0;
}while(flag==1);
printf("修改完毕,按任意键返回主菜单\n");
getch();
}
/*添加模块*/
voidadd()
{inti,flag=0;charch;
clrscr();
printf("\n开始添加新员工\n");
printf("*----------------------------------*\n\n");
do
{i=n;
printf("\n请输入添加职工的信息(姓名,年龄,工作,性别,地址,电话,入厂时间)\n");
printf("姓名\n");
scanf("%s",worker[i].name);
printf("年龄\n");
scanf("%d",&worker[i].age);
printf("工作\n");
scanf("%s",worker[i].job);
printf("性别\n");
scanf("%s",worker[i].sex);
printf("地址\n");
scanf("%s",worker[i].address);
printf("电话\n");
scanf("%s",worker[i].phone);
printf("入厂年\n");
scanf("%d",&worker[i].in_time.year);
printf("入厂月\n");
scanf("%d",&worker[i].in_time.mouth);
printf("入厂日\n");
scanf("%d",&worker[i].in_time.day);
n++;
printf("\n添加成功!
是否继续输入(y/n)\n");
getchar();/*接收回车*/
ch=getchar();
if(ch=='y')
{printf("继续\n");
flag=1;
}
elseflag=0;
}while(flag==1);
printf("添加完毕,按任意键返回主菜单\n");
getch();
}
/*删除模块*/
voiddel()
{inti,flag;charch,namekey[10];
flag=0;
clrscr();
printf("开始删除\n");
do
{printf("请输入要删除员工的名字\n");
scanf("%s",namekey);
for(i=0;iif(strcmp(worker[i].name,namekey)==0)/*查找此人*/
{printf("是否删除此人(y/n)\n");
printf("姓名\t年龄\t工作\t性别\t地址\t电话\t入厂时间\n");
printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);
getchar();/*接收回车*/
ch=getchar();
if(ch=='y')
{for(;iworker[i]=worker[i+1];
n--;
}
elsebreak;
}
else
if(i==n)
printf("此人不存在\n");
printf("\n是否继续输入(y/n)\n");
getchar();/*接收回车*/
ch=getchar();
if(ch=='y')
{printf("继续\n");
flag=1;
}
elseflag=0;
}while(flag==1);
printf("操作完毕,按任意键返回主菜单\n");
getch();
}
/*更新模块*/
voidrenew()
{inti;
do
{clrscr();
printf("\n\n\n****更新员工信息****\n\n");
printf("按1,添加员工信息\n\n");
printf("按2,删除员工信息\n\n");
printf("按3,修改员工信息\n\n");
printf("按0,返回主菜单\n");
printf("请选择(0-3)\n");
scanf("%d",&i);
switch(i)
{case1:
add();break;
case2:
del();break;
case3:
modify();break;
case0:
break;
}
}while(i!
=0);
save();
}
/*按姓名查找*/
voidname_cha()
{inti,j;charnamekey[10];
j=0;
clrscr();
printf("输入要查询的员工姓名\n");
scanf("%s",namekey);
for(i=0;iif(strcmp(worker[i].name,namekey)==0)/*查找此人*/
{printf("---------员工信息------\n");
printf("姓名\t年龄\t工作\t性别\t地址\t电话\t入厂时间\n");
printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,worker[i].address,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);
}
elsej++;
if(j==n)
printf("此人不存在\n");
printf("按任意键返回主菜单\n");
getch();
}
/*按年龄查找*/
voidage_cha()
{inti,j;intagekey;
j=0;
clrscr();
printf("输入要查询员工的年龄\n");
scanf("%d",&agekey);
for(i=0;iif(worker[i].age==agekey)
{printf("-------员工信息------\n");
printf("姓名\t年龄\t工作\t性别\t地址\t电话\t入厂时间\n");
printf("%s\t%d\t%s\t%s\t%s\t%s\t%d-%d-%d\n",worker[i].name,worker[i].age,worker[i].job,worker[i].sex,work