当前位置:文档之家› c语言程序设计__企业员工管理系统

c语言程序设计__企业员工管理系统

c语言程序设计__企业员工管理系统
c语言程序设计__企业员工管理系统

一、课程设计目的

通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的容,掌握工程软件设计的基本方法。

学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

为后续各门计算机课程的学习打下坚实基础。

为毕业设计和以后工作打下必要基础。

二、课程设计容

针对某企业的员工,对其信息进行系统的管理。

三、需求分析

对所开发系统功能、性能的描述,想要实现的目标。

此系统可对该厂员工进行信息的录入,修改,删除,添加,查询,排序,统计,打印等功能。用户可通过提示选择进入某一功能界面,然后进行对员工的信息管理。每一功能模块都充分为用户考虑,编排详细。使用户可以方便快捷的了解员工信息,及时有效的对员工进行信息的管理。

四、概要设计

1.系统结构图(功能模块图)

对系统进行分析,给出系统结构图;

分析:此系统,为方便客户输入,以及使程序清晰化,因而本人采用模块法,将每一功能模块化,使程序中各函数间调用更加明了。以下为系统模

块图。

2.功能模块说明

对各个模块进行功能的描述。

录入模块:输入该厂现有员工信息并保存与文件中,方便日后进行排序,更新,统计,打印等操作。

输出模块:将所有员工信息,或所需员工信息输出于屏幕上,用于打印或查询员工信息。

更新模块:此模块又分为删除,添加,修改三个模块。

删除模块:对已退休或离开该厂的员工进行删除操作。

添加模块:添加新入厂的员工信息并保存起来。

修改模块:找到该员工并,选择所要修改的选项。

排序模块:本程序只对员工年龄进行从小到大排序。

查询模块:此模块分为按,年龄,工作查询。

查询模块:输入要查找的,找到就输出其信息。找不到则输出无此人。

年龄查询模块:输入要查找的年龄,找到就输出其信息。找不到则输出无此人。

工作查询模块:输入要查找的工作,找到就输出其信息。找不到则输出无此人。

统计模块:此模块分为,统计年龄,性别和工作。

统计年龄:输入要统计的年龄,查找并输出,若无此年龄则输出暂无此

年龄员工。

统计性别:输入要统计的性别,查找并输出,若无此性别则输出暂无此性别员工。

统计工作:输入要统计的工作,查找并输出,若无此工作则输出暂无此工作员工。

保存模块:将现有信息保存于文件中,以防丢失。

系统模块图

五、详细设计及运行结果

流程图,函数之间相互调用的图示,程序设计及编码, 运行结果。

主函数:

输出模块:

否否

是是

六、调试情况,设计技巧及体会

1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。

自我评价:本人自我觉得此系统还不错,程序简洁明了,功能齐全,而且充分从用户的角度进行编排,易于执行。经本人多次调试终于出现0个错误与警告,而且从未有过死循环,用户一旦输错,立即会有提示,此程序相当的健壮。

因本人定义了全局变量,使操作更加简单易行,使用了结构体数组,避开链表那样的复杂操作。但不足之处便是没有链表那样节省存。如有机会下次可能会用链表。

2、在设计过程中的感受。

在把字符一个个敲上屏幕时,坐在那一动不动相当的枯燥,一想到过会儿就能看到自己亲自编的程序,就只能忍吧。当看到模块一个个运行后与预料中的完全一样时,郁闷的心情立马被一种成就感替代。就想赶紧编完看看自己的杰作。然而也会遇到自己解决不了的问题,就只能去求老师了。

这次最大的感受就是当你竭尽全力的干一件事时,就没有能挡住你的困难。七、参考文献

C语言课本。

八、附录:源代码

#include

#include

#define MAX 100

char filename[20]; /*文件名*/

FILE *fp;

int n; /*当前该厂人数*/

struct date /*时间结构体*/

{ int year;

int mouth;

int day;

} ;

struct person /*员工信息结构体*/ { char name[10]; /**/

int age; /*年龄*/

char job[10]; /*工作*/

char sex[10]; /*性别*/

char address[20]; /*地址*/

char phone[10]; /**/

struct date in_time; /*入厂时间*/

}t,worker[MAX];

/*录入模块*/

void input()

{int i;

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;i

fprintf(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);

}

/*输出模块*/

void output()

{ int i;

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,wor ker[i].job,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.y ear,&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_ti me.day);

}

fclose(fp);

printf(" 输出完毕,按任意键返回主菜单\n");

getch();

}

/*保存模块*/

void save()

{ int i;

if((fp=fopen(filename,"w"))==NULL) /*打开文件*/

{ printf("\n 不能打开该文件!");

exit();

}

for(i=0;i

fprintf(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);

}

/*读取信息*/

void read_message()

{ int i;

printf("输入文件名\n");

scanf("%s",filename);

printf("\n请输入现有员工人数\n");

scanf("%d",&n);

if((fp=fopen(filename,"r"))==NULL)

{ printf(" 暂时未有任何信息,请按任意键返回主菜单进行信息录入\n");

getch();

}

for(i=0;i

fscanf(fp,"%s %d %s %s %s %s %d-%d-%d",worker[i].name,&worker[i].age,work er[i].job,worker[i].sex,worker[i].address,worker[i].phone,&worker[i].in_time.ye ar,&worker[i].in_time.mouth,&worker[i].in_time.day);

fclose(fp);

}

/*修改模块*/

void modify()

{ int i,flag,choice; char ch,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_ti me.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)

{ case 1: printf("输入修改后的\n");

scanf("%s",worker[i].name); break;

case 2: printf("输入修改后的年龄\n");

scanf("%d",&worker[i].age); break;

case 3: printf("输入修改后的工作\n");

scanf("%s",worker[i].job); break;

case 4: printf("输入修改后的性别\n");

scanf("%s",worker[i].sex); break;

case 5: printf("输入修改后的地址\n");

scanf("%s",worker[i].address); break;

case 6: printf("输入修改后的\n");

scanf("%s",worker[i].phone); break;

case 7: printf("输入修改后的入厂年\n");

scanf("%d",&worker[i].in_time.year); break;

case 8: printf("输入修改后的入厂月\n");

scanf("%d",&worker[i].in_time.mouth); break;

case 9: 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_ti me.day);

}

else break;

}

else

if(i==n) printf("此人不存在\n");

}

printf("\n是否继续输入(y/n)\n");

getchar(); /*接收回车*/

ch=getchar();

if(ch=='y')

{ printf("继续\n");

flag=1;

}

else flag=0;

}while(flag==1);

printf("修改完毕,按任意键返回主菜单\n") ;

getch();

}

/*添加模块*/

void add()

{ int i,flag=0; char ch;

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;

}

else flag=0;

}while(flag==1);

printf("添加完毕,按任意键返回主菜单\n") ;

getch();

}

/*删除模块*/

void del()

{ int i,flag; char ch,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_ti me.day);

getchar(); /*接收回车*/

ch=getchar();

if(ch=='y')

{ for(;i

worker[i]=worker[i+1];

n--;

}

else break;

}

else

if(i==n)

printf("此人不存在\n");

printf("\n是否继续输入(y/n)\n");

getchar(); /*接收回车*/

ch=getchar();

if(ch=='y')

{ printf("继续\n");

flag=1;

}

else flag=0;

}while(flag==1);

printf("操作完毕,按任意键返回主菜单\n") ;

getch();

}

/*更新模块*/

void renew()

{ int i;

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)

{ case 1: add(); break;

case 2: del(); break;

case 3: modify(); break;

case 0: break;

}

}while(i!=0);

save();

}

/*按查找*/

void name_cha()

{ int i,j; char namekey[10];

j=0;

clrscr();

printf(" 输入要查询的员工\n");

scanf("%s",namekey);

for(i=0;i

if(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_ti me.day);

}

else j++;

if(j==n)

printf("此人不存在\n");

printf("按任意键返回主菜单\n");

getch();

}

/*按年龄查找*/

void age_cha()

{ int i,j; int agekey;

j=0;

clrscr();

printf(" 输入要查询员工的年龄\n");

scanf("%d",&agekey);

for(i=0;i

if(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,worker[i].address ,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_ti me.day);

}

else j++;

if(j==n)

printf("此人不存在\n");

printf("按任意键返回主菜单\n");

getch();

}

/*按工作查找*/

void job_cha()

{ int i,j; char jobkey[10];

j=0;

clrscr();

printf("输入要查询的员工职务\n");

scanf("%s",jobkey);

for(i=0;i

if(strcmp(worker[i].job,jobkey)==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_ti me.day);

}

else j++;

if(j==n)

printf("此人不存在\n");

printf("按任意键返回主菜单\n");

getch();

}

/*查询模块*/

void inquire()

{ int i;

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)

{ case 1: name_cha();break;

case 2: age_cha(); break;

case 3: job_cha();break;

case 0: break;

}

}while(i!=0);

}

/*排列模块*/

void line()

{ int i,j;

clrscr();

printf("-------按年龄排序-------\n\n");

for(i=0;i

for(j=i+1;j

if(worker[i].age>worker[j].age)

{ t=worker[i];

worker[i]=worker[j];

worker[j]=t;

}

printf("\t年龄\t工作\t性别\t地址\t\t入厂时间\n");

for(i=0;i

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_ti me.day);

printf("按任意键返回主菜单\n");

getch();

}

/*按年龄统计*/

void count_age()

{ int i,j; int agekey;

j=0;

clrscr();

printf(" 输入要统计员工的年龄\n");

scanf("%d",&agekey);

for(i=0;i

if(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,worker[i].address ,worker[i].phone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_ti me.day);

}

else j++;

if(j==n)

printf("暂无该年龄段员工\n");

printf("按任意键返回主菜单\n");

getch();

}

/*按职务统计*/

void count_job()

{ int i,j; char jobkey[10];

j=0;

clrscr();

printf("输入要统计的员工职务\n");

scanf("%s",jobkey);

for(i=0;i

if(strcmp(worker[i].job,jobkey)==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_ti me.day);

}

else j++;

if(j==n)

printf("暂无该职务或该职务暂时无人\n");

printf("按任意键返回主菜单\n");

getch();

}

/*按性别统计*/

void count_sex()

{ int i,j; char sexkey[10];

j=0;

clrscr();

printf("输入要统计的员工性别\n");

scanf("%s",sexkey);

for(i=0;i

if(strcmp(worker[i].sex,sexkey)==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_ti me.day);

}

else j++;

if(j==n)

printf("暂无该性别员工\n");

printf("按任意键返回主菜单\n");

getch();

}

/*统计模块*/

void count()

{ int i;

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):\n");

scanf("%d",&i);

switch(i)

{ case 1: count_age(); break;

case 2: count_job(); break;

case 3: count_sex(); break;

case 0: break;

}

}while(i!=0);

}

/*主函数*/

main()

{ int choice;

read_message();

do

{ clrscr();

printf("\n\n

*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*\ n");

printf("

#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\ n");

printf(" * *\n");

printf(" #----------------欢迎进入王氏企业员工管理系统-----------------#\n");

printf(" * *\n");

printf(" #----------------------按1,录入员工信息----------------------#\n");

printf(" * *\n");

printf(" #----------------------按2,更新员工信息----------------------#\n");

printf(" * *\n");

printf(" #----------------------按3,查询员工信息----------------------#\n");

printf(" * *\n");

printf(" #----------------------按4,排列员工信息----------------------#\n");

printf(" * *\n");

printf(" #----------------------按5,统计员工信息----------------------#\n");

printf(" * *\n");

printf(" #----------------------按6,输出员工信息----------------------#\n");

printf(" * *\n");

printf(" #-----------------------按0,退出系统-------------------------#\n");

printf(" * *\n");

printf(" #*#*#*#*#*#*# 制作者:王增QQ:815604901 *#*#*#*#\n");

printf("

#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\ n");

scanf("%d",&choice);

switch(choice)

{ case 1: input(); break;

case 2: renew(); break;

case 3: inquire(); break;

case 4: line(); break;

case 5: count(); break;

case 6: output(); break;

case 0: break;

}

}while(choice!=0);

save();

printf("现有员工数:%d\n",n);

printf("\n以上信息已保存!文件名为:%s\n",filename);

}

相关主题
文本预览
相关文档 最新文档