您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页c语言程序设计 企业员工管理系统

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

来源:好走旅游网


一、 课程设计目的

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

学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。 为后续各门计算机课程的学习打下坚实基础。 为毕业设计和以后工作打下必要基础。 二、课程设计内容 针对某企业的员工,对其信息进行系统的管理。 三、需求分析

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

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

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

分析:此系统,为方便客户输入,以及使程序清晰化,因而本人采用模块法,

将每一功能模块化,使程序中各函数间调用更加明了。以下为系统模块图。

2.功能模块说明

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

录入模块:输入该厂现有员工信息并保存与文件中,方便日后进行排序,更

新,统计,打印等操作。

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

询员工信息。

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

删除模块:对已退休或离开该厂的员工进行删除操作。 添加模块:添加新入厂的员工信息并保存起来。 修改模块:找到该员工并,选择所要修改的选项。 排序模块:本程序只对员工年龄进行从小到大排序。 查询模块:此模块分为按姓名,年龄,工作查询。

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

无此人。

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

此人。

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

无此人。

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

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

年龄员工。

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

性别员工。

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

员工。

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

王氏企业员工 信息管理系统 输入i的值,进入相应模块 更查排统录输 新询序计出 入模模模模 模模块 块 块 块 块 块 保存模块 退出系统 添加员工信息 删除员工信息 修改员工 信息 按姓名查询 按年龄 查寻 按工作查询 按年龄排序 按年龄统计 按性别统计 按工作统计 按任意键返回主界面

五、详细设计及运行结果

流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。 主函数: 开始 输入i

判断i值

i=1 i=6 i=2 i=3 i=4 i=5 i=0 退统排 录输更查出计序 入出新询系模 模模模模模统 块 块 块 块 块 块

输出模块:

开始 否

i=0

打开文件 录入模块: 开始 是 保存模块 i=0 打开文件

结束

i=0 否 i 是 否 输出员工信息 ii++

关闭文件

关闭文件 结束

开始 开始排序模块: 更新模块:

i=0 j=i+1

i 的年龄大于 j 的 否 年龄 是

交换i与j的信息

j=j+1

否 j>n 是 i=i+1 否 i>n-1 是

输出信息

结束

输入i 判断i值 i=3 i=1 添修 i=2 i=0 删退加改除出模模系块 块 模块 统 否 i=0 是 返回主界面 结束

查询模块: 统计模块: 开始 开始

输入i 输入i 判断i值 判断i值

i=1 i=3 i=2 i=0 i=1 i=2 i=3 i=0 工退 姓年统作出统统 名龄计查系计计

查查性 询 统 年工询 询 别 作 龄

否 否 i=0 i=0

是 是 返回主界面 返回主界面

退出系统

结束 结束

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

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\

printf(\"开始输入员工的信息\\n\"); printf(\"\\n请输入现有员工人数\\n\"); scanf(\"%d\

if((fp=fopen(filename,\"w\"))==NULL) { printf(\"不能建立!\\n\"); exit(); }

for(i=0;i{ printf(\"第%d个人的信息:\\n\ printf(\"姓名\\n\");

scanf(\"%s\ printf(\"年龄\\n\");

scanf(\"%d\ printf(\"工作\\n\");

scanf(\"%s\

printf(\"性别\\n\");

scanf(\"%s\ printf(\"地址\\n\");

scanf(\"%s\ printf(\"电话\\n\");

scanf(\"%s\ printf(\"入厂年\\n\");

scanf(\"%d\ printf(\"入厂月\\n\");

scanf(\"%d\ printf(\"入厂日\\n\");

scanf(\"%d\ }

printf(\"录入完毕,按任意键返回主菜单\\n\"); getch();

for(i=0;ifprintf(fp,\"%s %d %s %s %s %s %d-%d-%d\\n\orker[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(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); for(i=0;i{ fscanf(fp,\"%s %d %s %s %s %s %d-%d-%d\ob,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\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);

}

fclose(fp);

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

/*保存模块*/ void save()

{ int i;

if((fp=fopen(filename,\"w\"))==NULL) /*打开文件*/ { printf(\"\\n 不能打开该文件!\"); exit(); }

for(i=0;ifprintf(fp,\"%s %d %s %s %s %s %d-%d-%d\\n\orker[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\

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

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].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 modify()

{ int i,flag,choice; char ch,namekey[10]; flag=0; clrscr();

printf(\" 开始修改\\n\"); do {

printf(\"请输入要修改的员工姓名\\n\"); scanf(\"%s\ for(i=0;i{ if(strcmp(worker[i].name,namekey)==0) { printf(\"是否修改此人(y/n)\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,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\ switch(choice)

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

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

scanf(\"%d\ break; case 3: printf(\"输入修改后的工作\\n\"); scanf(\"%s\ case 4: printf(\"输入修改后的性别\\n\"); scanf(\"%s\ case 5: printf(\"输入修改后的地址\\n\");

scanf(\"%s\ case 6: printf(\"输入修改后的电话\\n\");

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

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

scanf(\"%d\ case 9: printf(\"输入修改后的入厂日\\n\");

scanf(\"%d\ }

printf(\"修改后的信息\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.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\ printf(\"年龄\\n\");

scanf(\"%d\ printf(\"工作\\n\");

scanf(\"%s\ printf(\" 性别\\n\");

scanf(\"%s\ printf(\"地址\\n\");

scanf(\"%s\ printf(\"电话\\n\");

scanf(\" %s\ printf(\"入厂年\\n\");

scanf(\"%d\ printf(\"入厂月\\n\");

scanf(\"%d\ printf(\"入厂日\\n\");

scanf(\"%d\ 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\ for(i=0;iif(strcmp(worker[i].name,namekey)==0) /*查找此人*/ { printf(\"是否删除此人(y/n)\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,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--; }

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\ 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\ for(i=0;iif(strcmp(worker[i].name,namekey)==0) /*查找此人*/ { printf(\"---------员工信息------\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.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\ for(i=0;iif(worker[i].age==agekey)

{ printf(\"-------员工信息------\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.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\ for(i=0;iif(strcmp(worker[i].job,jobkey)==0) { printf(\"-------员工信息------\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.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\ 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;ifor(j=i+1;jif(worker[i].age>worker[j].age) { t=worker[i];

worker[i]=worker[j]; worker[j]=t; }

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); for(i=0;iprintf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.day);

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

/*按年龄统计*/ void count_age() { int i,j; int agekey; j=0; clrscr();

printf(\" 输入要统计员工的年龄\\n\"); scanf(\"%d\ for(i=0;iif(worker[i].age==agekey)

{ printf(\"-------员工信息------\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.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\ for(i=0;iif(strcmp(worker[i].job,jobkey)==0) { printf(\"-------员工信息------\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.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\ for(i=0;iif(strcmp(worker[i].sex,sexkey)==0) { printf(\"-------员工信息------\\n\");

printf(\"姓名\年龄\工作\性别\地址\电话\入厂时间 \\n\"); printf(\"%s\%d\%s\%s\%s\%s\%d-%d-%d

\\n\hone,worker[i].in_time.year,worker[i].in_time.mouth,worker[i].in_time.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\ 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\ 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\

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务