人事信息管理系统.docx

上传人:b****5 文档编号:11621281 上传时间:2023-03-28 格式:DOCX 页数:32 大小:55.87KB
下载 相关 举报
人事信息管理系统.docx_第1页
第1页 / 共32页
人事信息管理系统.docx_第2页
第2页 / 共32页
人事信息管理系统.docx_第3页
第3页 / 共32页
人事信息管理系统.docx_第4页
第4页 / 共32页
人事信息管理系统.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

人事信息管理系统.docx

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

人事信息管理系统.docx

人事信息管理系统

*******************

实践教学

*******************

 

兰州理工大学

计算机与通信学院

2012年春季学期

 

C程序设计课程设计

 

题目:

人事信息管理系统

专业班级:

姓名:

人才v

学号:

指导教师:

成绩:

_______________

摘要

企业的人设管理系统是运用于Windows系统下的应用软件,主要用于对企业人事基本管理,包括工人基本信息如工号,姓名以及职称,工资进行增加,删除,修改,查询,插入,统计,存盘等基本操作。

本程序实现了所有设计要求。

 

关键词:

人事信息,排序,统计

目录

摘要I

1题目要求a

1.1要求a

2需求分析:

a

3总体设计a

4详细设计b

4.1主函数b

4.2各功能模块设计:

c

5总结d

参考文献e

致谢e

附录-1-

1题目要求

1.1要求

人事信息管理系统

某高校主要人员有:

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

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

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

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

(1)添加删除功能:

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

(2)查询功能:

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

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

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

(4)统计功能:

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

(5)排序功能:

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

(6)保存功能:

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

2需求分析:

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

另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件存贮,这样的方法在一定程度上提高了对数据处理的灵活性,较容易理解,但存在处理中遇到以外情况而丢失数据的风险,另外当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将N定为100,基本上能满足要求。

3总体设计

一、总体设计:

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

1、新建数据文件(buildnewdata);

2、添加记录(adddata);

3、删除记录(deletedata);

4、按工号搜索(searchbynumber);

5、按姓名搜索(searchbyname);

6、浏览全部数据(browseall);

7、修改数据(modifythedata);

8、排序功能(orderthevolume);

9、统计功能(dataavolume);

系统功能模块图如下:

4详细设计

4.1主函数

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

main()函数定义如下:

main()

{menu();}

而menu()定义如下:

voidMenu()/********************菜单函数***************/

{

intnSelectNum,nWhileFlag;

do{

printf("\n\t\t\t\tMENU\n");

printf("\t\t0\tBuildnewdata\n\n");

printf("\t\t1\tDeletedata\n\n");

printf("\t\t2\tAdddata\n\n");

printf("\t\t3\tSearchbyNumber\n\n");

printf("\t\t4\tSearchbyName\n\n");

printf("\t\t5\tBrowseall\n\n");

printf("\t\t6\tModifythedata\n\n");

printf("\t\t7\tOrderthevolume\n\n");

printf("\t\t8\tDataavolume\n\n");

printf("\t\t9\tExit\n\n");

printf("\tPleasechoiceandenteranumber[]\b\b");

scanf("%d",&nSelectNum);

if(nSelectNum<0||nSelectNum>9)

{

nWhileFlag=1;

}

elsenWhileFlag=0;

}while(nWhileFlag==1);

switch(nSelectNum)

{

case0:

Build();break;

case1:

Del();break;

case2:

Add();break;

case3:

SNum();break;

case4:

Sname();break;

case5:

Browse();break;

case6:

Modify();break;

case7:

Order();break;

case8:

Data();break;

case9:

exit(0);break;//正常退出

default:

printf("inputerror!

!

pleaseinputacArrNumberbetween0and8");

Menu();

}

}

4.2各功能模块设计:

(1)、新建数据文件模块:

<1>、数据结构;

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

定义如下:

structworker

{

charcArrNum[11];

charcArrName[10];

charcArrSex[2];

charcArrAge[3];

charcArrZhiwu[15];

charcArrZhengzhi[15];

charcArrXueli[15];

charcArrZhicheng[15];

charcArrRenzhisj[8];

charcArrLaiyuansj[8];

charcArrLeibie[15];

}structWk[MAX_WORKER_NUM];

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

(2)浏览模块;

a)需求分析:

该模块的功能是显示所有保存在文件中的记录,考虑到记录较多,采用分屏显示的方式;

〈1〉程序:

voidBrowse()

{

inti,nWorkerNum;

nWorkerNum=Load();

Printf_face();

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

{

Printf_one(i);

}

printf("\tThereare%drecord.\n",nWorkerNum+1);

printf("pressanykeytocontinue...");

getch();

Menu();

}

b)上机操作:

下面是部分模块的运行结果的界面图:

输入模块:

新建文件和添加模块的输入界面设计基本相同:

编辑模块:

5总结

通过这次C程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化程序设计方法,提高了运用C语言进行程序设计的能力。

参考文献

1C/C++程序设计,王连相等,中国科学技术出版社,2004

2C语言程序设计,谭浩强,清华大学出版社,1999

3C程序设计题解与上机指导,谭浩强,清华大学出版社,1999

4C语言实用程序荟萃,西安电子科技大学出版社,1993

5C语言函数手册,机械工业出版社,1999

6C语言的实际应用,安徽科学技术出版社,2000

致谢

首先要感谢张宪立老师的授课与指导!

感谢所有支持我完成C程序设计论文的老师和同学们!

在这次课程设计中老师给了我很大的帮助,帮我解答疑难问题,给我提供资料,给我提供查阅资料的信息,引导我该如何去思考问题,教会我解决问题的方法.同时又鼓励我自己学习,老师给我的不仅是知识,时帮助,更是学习的信心和智慧,在这里衷心感谢老师的耐心细心一丝不苟的帮助.同时也感谢和我一起走过的同学,这是我们共同努力地结果,衷心的感谢大家对我的帮助和支持。

附录

#defineMAX_WORKER_NUM100

#include

#include

#include

#include

voidMenu();//菜单函数

voidBuild();//新建文件

voidAdd();

voidDel();//删除记录函数

voidBrowse();

voidModify();

voidOrder();//排序函数

intLoad();

voidCheckNum(int,int);//检查编号

voidData();//统计函数

voidSname();//按姓名搜索

voidSNum();//按学号搜索

voidPrintf_face();//显示数据结构

voidPrintf_one(int);//输出一条记录

voidInput(int,int);//输入一个记录

voidPrintf_one(int);//显示一条记录

voidSave(int);//保存函数

intModify_data(int,int);//修改数据函数

voidNumDuty();

voidNumPM();

voidNumWM();

voidHiedcation();

 

structworker

{

charcArrNum[11];

charcArrName[10];

charcArrSex[2];

charcArrAge[3];

charcArrZhiwu[15];

charcArrZhengzhi[15];

charcArrXueli[15];

charcArrZhicheng[15];

charcArrRenzhisj[8];

charcArrLaiyuansj[8];

charcArrLeibie[15];

}structWk[MAX_WORKER_NUM];

voidMenu()/********************菜单函数***************/

{

intnSelectNum,nWhileFlag;

do{

printf("\n\t\t\t\tMENU\n");

printf("\t\t0\tBuildnewdata\n\n");

printf("\t\t1\tDeletedata\n\n");

printf("\t\t2\tAdddata\n\n");

printf("\t\t3\tSearchbyNumber\n\n");

printf("\t\t4\tSearchbyName\n\n");

printf("\t\t5\tBrowseall\n\n");

printf("\t\t6\tModifythedata\n\n");

printf("\t\t7\tOrderthevolume\n\n");

printf("\t\t8\tDataavolume\n\n");

printf("\t\t9\tExit\n\n");

printf("\tPleasechoiceandenteranumber[]\b\b");

scanf("%d",&nSelectNum);

if(nSelectNum<0||nSelectNum>9)

{

nWhileFlag=1;

}

elsenWhileFlag=0;

}while(nWhileFlag==1);

switch(nSelectNum)

{

case0:

Build();break;

case1:

Del();break;

case2:

Add();break;

case3:

SNum();break;

case4:

Sname();break;

case5:

Browse();break;

case6:

Modify();break;

case7:

Order();break;

case8:

Data();break;

case9:

exit(0);break;//正常退出

default:

printf("inputerror!

!

pleaseinputacArrNumberbetween0and8");

Menu();

}

}

/**************************新建文件*********************/

voidBuild()

{

intnInputWkNum,nWorkerNum,p;

FILE*fp;

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

{

printf("cannotbuildfile\n");

Menu();

}

printf("howmanyworkersdoyouwanttoinput(0-%d)?

:

",MAX_WORKER_NUM);

scanf("%d",&nWorkerNum);

for(nInputWkNum=0;nInputWkNum

{

printf("\nInput%dthworkerrecord.\n",nInputWkNum+1);

Input(nInputWkNum,nInputWkNum);

}

for(p=0;p<=nInputWkNum;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",structWk[p].cArrNum,structWk[p].cArrName,structWk[p].cArrSex,structWk[p].cArrAge,structWk[p].cArrZhiwu,structWk[p].cArrZhicheng,structWk[p].cArrZhengzhi,structWk[p].cArrXueli,structWk[p].cArrRenzhisj,structWk[p].cArrLaiyuansj,structWk[p].cArrLeibie))!

=1)

printf("cannotwritethedata\n\n");

fclose(fp);

Menu();

}

voidAdd()/*****************增加人员***********************/

{

inti,nAddNum,nExistNum,nAftAddNum,p;

FILE*fp;

nExistNum=Load();

if(nExistNum==-1)

Menu();

printf("Howmanyworkersdoyouwanttoadd(0-%d)?

:

[]\b\b\b",MAX_WORKER_NUM-nExistNum);

scanf("%d",&nAddNum);

nAftAddNum=nAddNum+nExistNum;

for(i=nExistNum+1;i<=nAftAddNum;i++)

{

printf("\nInput%dthworkerrecord.\n",i-nExistNum+1);

Input(i,nExistNum);}

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

{printf("cannotopenfile\n");

Menu();}

for(p=0;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",structWk[p].cArrNum,structWk[p].cArrName,structWk[p].cArrSex,structWk[p].cArrAge,structWk[p].cArrZhiwu,structWk[p].cArrZhicheng,structWk[p].cArrZhengzhi,structWk[p].cArrXueli,structWk[p].cArrRenzhisj,structWk[p].cArrLaiyuansj,structWk[p].cArrLeibie);

fclose(fp);

Menu();

}

voidInput(inti,intn)/*********************输入一个记录************************/

{

CheckNum(i,n);

printf("\nentertheAge:

\t[]\b\b\b\b");

scanf("%s",structWk[i].cArrAge);

printf("\nentertheSex[MformanandWforwoman]:

\t[]\b\b");

scanf("%1s",structWk[i].cArrSex);

printf("\nentertheZhiwu:

\t[]\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",structWk[i].cArrZhiwu);

printf("\nentertheZhicheng:

\t[]\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",structWk[i].cArrZhicheng);

printf("\nenterthezhengzhimiannao:

\t[]\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",structWk[i].cArrZhengzhi);

printf("\nentertheXueli:

\t[]\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",structWk[i].cArrXueli);

printf("\nentertherenzhishijian:

\t[]\b\b\b\b\b\b\b\b\b");

scanf("%s",structWk[i].cArrRenzhisj);

printf("\nenterthelaiyanshijian:

\t[]\b\b\b\b\b\b\b\b\b");

scanf("%s",structWk[i].cArrLaiyuansj);

printf("\nentertheLeibie:

\t[]\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",structWk[i].cArrLeibie);

}

/****************加载函数**********************/

intLoad()

{

FILE*fp;

inti;

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

{

printf("cannotopenfile\n");

returnNULL;

}

else

{

for(i=0;!

feof(fp);i++)

fscanf(fp,"%s\t%s\t%1s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",structWk[i].cArrNum,structWk[i].cArrName,structWk[i].cArrSex,structWk[i].cArrAge,structWk[i].cArrZhiwu,structWk[i].cArrZhicheng,structWk[i].cArrZhengzhi,structWk[i].cArrXueli,structWk[i].cArrRenzhisj,structWk[i].cArrLaiyuansj,structWk[i].cArrLeibie);

return(i-1);

}

}

 

voidCheckNum(inti,intnWkNum)/*************检查输入号码************/

{

intj,k,nIllegalNum;

workertempWk;

do{

nIllegalNum=0;

printf("EntertheNumber:

[]\b\b\b\b\b\b\b\b\b\b\b\b");

scanf("%s",tempWk.cArrNum);

for(j=0;tempWk.cArrNum[j]!

='\0';j++)

{

if((tempWk.cArrNum[j]<'0')||(tempWk.cArrNum[j]>'9'))

{

printf("Inputerror!

Onlybemadeupof(0-9).Pleaseinputagain!

\n\n");

nIllegalNum=1;

break;

}

}

if(nIllegalNum==0)

{

for(k=0;k

{

if(k!

=i&&strcmp(structWk[k].cArrNum,tempWk.cArrNum)==0)

{

printf("thisrecord

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

当前位置:首页 > 经管营销

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

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