人事管理系统C语言.doc

上传人:b****1 文档编号:233526 上传时间:2022-10-07 格式:DOC 页数:21 大小:233KB
下载 相关 举报
人事管理系统C语言.doc_第1页
第1页 / 共21页
人事管理系统C语言.doc_第2页
第2页 / 共21页
人事管理系统C语言.doc_第3页
第3页 / 共21页
人事管理系统C语言.doc_第4页
第4页 / 共21页
人事管理系统C语言.doc_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

人事管理系统C语言.doc

《人事管理系统C语言.doc》由会员分享,可在线阅读,更多相关《人事管理系统C语言.doc(21页珍藏版)》请在冰豆网上搜索。

人事管理系统C语言.doc

人事管理管理系统

[要求]

某高校主要人员有:

在职人员(行政人员、教师、一般员工)、退休人员和临时工。

现在,需要存储这些人员的人事档案信息:

编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。

其中,人员编号唯一,不能重复。

(1)添加删除功能:

能根据学院人事的变动情况,添加删除记录;

(2)查询功能:

能根据编号和姓名进行查询;

(3)编辑功能(高级):

根据查询对相应的记录进行修改,并存储;

(4)统计功能:

能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;

(5)排序功能:

按照年龄、来院时间进行排序;

(6)保存功能:

能对输入的数据进行相应的存储;

一、需求分析:

根据题目要求,职工信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。

另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,也即最多可储存的职工人数为100;

二、总体设计:

根据以上需求分析,将程序分成以下几个模块:

1、新建档案信息;

2、删除信息;

3、追加信息;

4、搜索查找信息(按姓名或者编号搜索);

5、浏览全部信息;

6、修改信息;

7、信息排序;

8、信息统计;

三、详细设计;

1、主函数:

〈1〉需求分析:

为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的很简单,只包含一个menu()函数,其余的全部功能都通过menu()函数调用来实现,并通过menu()函数的递归调用实现返回主界面的功能。

main()函数定义如下:

main()

{menu();}

而menu()定义如下:

〈2〉流程图:

voidmenu()

{

intn,w1;

do

{

printf("\n\t\t\t\t菜\t单\n");

printf("\n\t\t0\t新建档案信息\n\n");

printf("\t\t1\t删除信息\n\n");

printf("\t\t2\t追加信息\n\n");

printf("\t\t3\t搜索查找信息\n\n");

printf("\t\t4\t浏览所有信息\n\n");

printf("\t\t5\t修改信息\n\n");

printf("\t\t6\t信息排序\n\n");

printf("\t\t7\t信息统计\n\n");

printf("\t\t8\t离开\n\n");

printf("\t\t请选择您要进行的操作[]\b\b");/**显示一系列功能并提示选择**/

scanf("%d",&n);

if(n<0||n>8)

{

w1=1;

getchar();

}

elsew1=0;

}

while(w1==1);/**输入n并判断是否属于0到8**/

switch(n)

{

case0:

build();break;

case1:

del();break;

case2:

add();break;

case3:

search();break;

case4:

browse();break;

case5:

modify();break;

case6:

order();break;

case7:

data();break;

case8:

exit(0);

default:

{printf("输入错误!

请重新输入");menu();}

/**根据n的值调用各功能函数**/

}

}

2、各功能模块设计:

(1)、新建档案信息模块:

<1>、数据结构;

看各个数据信息,编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别,均为字符串类型,在文件中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进内存中时,可以以结构体的形式,每一个结构体包含了一个人员的全部信息,多的人员的信息组成了一个结构体数组。

定义如下:

structworker

{charnum[11];

charname[10];

charsex[2];

charage[3];

charzhiwu[15];

charzhicheng[15];

charzhengzhi[15];

charxueli[15];

charrenzhisj[8];

charlaiyansj[8];

charleibie[15];

}wk[N],s;

其中N是宏定义形式定义的字符,临时定义为100,wk[N],为存放人员信息的结构体数组,而S为临时的结构体,用来保存信息处理过程中的临时数据。

〈2〉、流程图如下:

〈3〉、程序:

intbuild()

{

inti,m,n,p;

FILE*fp;

if((fp=fopen("worker00.txt","w"))==NULL)

{

printf("cannotbuildfile\n");

printf_back();/*输入用户要输入的学生的个数N*/

}

printf("您要输入的人数是(0-%d)?

:

",N);

scanf("%d",&m);

n=m;

for(i=0;i

{

printf("\n请输入第%d个工作人员的信息\n",i+1);

input(i);/*从0到N调用输入函数input*/

}

for(p=0;p<=i;p++)

if((fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie))!

=1)

printf("cannotwritethedata\n\n");/*将结构体数组中的数据写入文件*/

fclose(fp);/*关闭文件*/

printf_back();

}

(2)、追加模块:

〈1〉[需求分析]

该模块的功能是拥护需要增加新的员工记录,从键盘输入并逐条写入到原来的文件中去,其中输入号码是要防止号码重复,重复时报告错误,重新输入。

为方便用户管理和查看,该模块采用的方式是用先把原来文件中的数据读入内存,保存在内存中,然后在内存中的数据后面增加新的数据,操作完成后用写的方式打开文件,用覆盖的方式写入。

〈2〉流程图:

〈3〉程序:

intadd()

{

inti,m,n,p;

FILE*fp;

n=load();/*调用加载函数load将文件中的数据读入内存*/

if(n==-1)

{

printf("\n对不起,还没有档案,请新建一个档案\n");

menu();

}

printf("您要追加的人数是(0-%d)?

:

[]\b\b\b",N-n);

scanf("%d",&m);/*输入要追加的人员个数m*/

for(i=n+1;i<=m+n;i++)

{

printf("\n追加第%d个工作人员的信息\n",i-n);

input(i);/*从n到k调用输入函数input(i)*/

}

if((fp=fopen("worker00.txt","a+"))==NULL)

{

printf("cannotopenfile\n");

printf_back();/*调用*/

}

for(p=n+1;p<=m+n;p++)fprintf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",wk[p].num,wk[p].name,wk[p].sex,wk[p].age,wk[p].zhiwu,wk[p].zhicheng,wk[p].zhengzhi,wk[p].xueli,wk[p].renzhisj,wk[p].laiyansj,wk[p].leibie);

/*从0到k以覆盖的方式写入文件并保存*/

fclose(fp);

printf_back();/*关闭文件*/

}(3)修改模块:

〈1〉[需求分析:

]

该模块的功能是显示所有信息,考虑到记录较多,采用分屏显示,显示完所有的记录后,由用户输入需要修改的人员的号码,查找成功后,显示查找结果,并询问拥护修改人员的哪部分记录,根据用户选择修改相应的信息,然后保存修改后的结果;

〈2〉流程图

〈3〉程序;

modify()

{

inti,n,k,p,w0=1,w1,w2=0;

FILE*fp;

n=load();

do

{

k=-1;

printf_face();

for(i=0;i<=n;i++)printf_one(i);

do

{

printf("\n\n请输入你要修改的信息的编号\n\t\t编号:

[]\b\b");

scanf("%s",s.num);

for(i=0;i<=n;i++)

{

if(strcmp(s.num,wk[i].num)==0)

{

k=i;

s=wk[i];

}

}

if(k==-1)printf("\n\n没有找到您所需的信息!

请重新输入!

\n");

}while(k==-1);

printf_face();

print

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1