C语言课程设计报告人事管理系统.docx
- 文档编号:11383646
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:37
- 大小:98.59KB
C语言课程设计报告人事管理系统.docx
《C语言课程设计报告人事管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告人事管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告人事管理系统
人事管理系统
前言:
现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助,各行各业都需要特定计算系统的运用,我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。
我们需要学习C语言编程,根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养编程能力、用计算机解决实际问题的能力,能够按照要求编辑一些基本的程序,提高自己的思维能力。
题目:
某高校主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员及临时工。
现在需要储存这些人员的人事档案信息,内容包括编号、姓名、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。
其中,人员编号唯一,不能重复。
(1)添加删除功能:
能根据学院人事的变动情况,添加删除记录。
(2)查询功能:
能根据编号和姓名进行查询。
(3)编辑功能(高级):
根据查询对相应的记录进行修改并记录。
(4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数,高学历高职称人数),统计要求同时显示被统计着的信息。
(5)排序功能:
按照年龄、来院时间进行排序。
(6)保存功能:
能对输入的数据进行相应的存储。
分析:
我们编辑的程序要能够满足题目的要求,可以进行这么多的功能的计算!
但是在开始我们运行使用程序的时候必须要知道我们要运用这些功能中的哪一个!
这就要求我们可以程序中任意选择我们所需要的功能!
很显然我们要编辑存储人员的信息自然要运用到文件!
而人员的信息必须要以结构体的形式来表示才能够方便我们提取信息!
我们选择了要运行的功能分支之后!
这些功能是以主函数以外的被调函数!
当有需要时被调函数还可以调用其他的被吊函数!
例如我们题目中的统计和查询功能,就可以用这种方式来编辑程序!
方便清楚!
设计:
很显然主程序要用到SWICTH函数,这样可以选择要运行的那个功能的函数来执行,而其他的功能函数则不必运行!
三、解题思路
1、定义结构
structstaff
{
charnum[10];
charname[20];
charsex[10];
intage;
chartitle[20];
charp_landscape[30];
charQualifications[30];
intService_time;
charcome_time[30];
charcategory[30];
}staff[100];
2、主程序
进入主菜单函数
voidmain()
{
menu();
}
/*******************主菜单函数**********************/
voidmenu()
{
charw0;
do{
system("cls");
fflush(stdin);/*清除缓冲区输入*/
puts("***********************高校人事管理系统**********************\n\n");
puts("\t\t\t\t1)增加人员信息\n");
puts("\t\t\t\t2)删除人员信息\n");
puts("\t\t\t\t3)查询人员信息\n");
puts("\t\t\t\t4)修改人员信息\n");
puts("\t\t\t\t5)统计人员信息\n");
puts("\t\t\t\t6)对人员排序\n");
puts("\t\t\t\t7)保存人员信息\n");
puts("\t\t\t\t8)浏览人员信息\n");
puts("\t\t\t\t9)退出\n");
printf("\t\t\t\t请选择[]\b\b");
w0=getchar();
}while(w0<'1'||w0>'9');
switch(w0-48)
{
case1:
add();break;
case2:
delete_data();break;
case3:
search();break;
case4:
modify();break;
case5:
stastic();break;
case6:
sort();break;
case7:
save();break;
case8:
browse();break;
case9:
break;}
}
(1)查询功能
intsearch_data()/*查找单个数据函数*/
{
inti,flag;
chars[30],w0;
system("cls");/*清屏*/
n=load();
do{
fflush(stdin);/*清除缓冲区输入*/
printf("通过1)编号2)姓名[]\b\b");
w0=getchar();}while(w0<'1'||w0>'2');
if(w0=='1'){/*按编号查找*/
flag=0;
puts("输入人员编号:
");
scanf("%s",s);
for(i=0;i if(strcmp(s,staff[i].num)==0){ printf_face();printf_one(staff[i]); flag=1;break;} elsecontinue; } if(flag==0)puts("该人员不存在! "); } else{/*按姓名查找*/ flag=0; puts("输入人员姓名: "); scanf("%s",s); for(i=0;i if(strcmp(s,staff[i].name)==0){ printf_face(); printf_one(staff[i]); flag=1;break;} elsecontinue; } if(flag==0)puts("该人员不存在! "); } returni; voidsearch() { intk;charw1; loop: k=search_data(); do{ fflush(stdin);/*清除缓冲区输入*/ printf("1)回主菜单2)退出3)继续查询[]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1')menu(); elseif(w1=='2')exit(0); elsegotoloop; } (2)增加人员信息 voidadd() { charw0,w1; loop: system("cls"); puts("请输入编号(如001): "); scanf("%s",s.num); if(test(s.num))gotoloop;/*编号重复*/ puts("请输入姓名: "); scanf("%s",s.name); puts("请输入性别(男,女): "); scanf("%s",s.sex); puts("请输入年龄: "); scanf("%d",&s.age); puts("请输入职务(教授副教授讲师助教学生后勤人员): "); scanf("%s",s.duty); puts("请输入职称(无初级高级): "); scanf("%s",s.title); puts("请输入政治面貌(党员非党员): "); scanf("%s",s.p_landscape); puts("请输入最高学历(小学初中高中大学硕士学位更高): "); scanf("%s",s.Qualifications); puts("请输入任职时间: "); scanf("%d",&s.Service_time); puts("请输入来院时间(如20050101): "); scanf("%s",e_time); puts("请输入人员类别(行政人员教师一般员工退休人员临时工): "); scanf("%s",s.category); do{ fflush(stdin);/*清除缓冲区输入*/ printf("是否保存? 1)是2)否[]\b\b"); w0=getchar();}while(w0<'1'||w0>'2'); switch(w0) { case1: save(s);break; case2: break; } do{ fflush(stdin);/*清除缓冲区输入*/ printf("1)继续增加人员信息2)回主菜单3)退出[]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1')gotoloop; elseif(w1=='2')menu(); elseexit(0); } (3)保存信息 voidsave() { charw0; save_all(); printf("所有信息已保存! \n"); do{ fflush(stdin);/*清除缓冲区输入*/ printf("1)回主菜单2)退出[]\b\b"); w0=getchar();}while(w0<'1'||w0>'2'); if(w0=='1')menu(); elseexit(0); } voidsave_all()/*保存所有数据函数*/ { inti; FILE*fp; if((fp=fopen("text.txt","wb"))==NULL){ printf("无法打开文件! ");exit(0);} for(i=0;i if(staff[i].age! =0) fprintf(fp,"%s%s%s%d%s%s%s%s%d%s%s\n",staff[i].num,staff[i].name,staff[i].sex,staff[i].age,staff[i].duty,staff[i].title,staff[i].p_landscape,staff[i].Qualifications,staff[i].Service_time,staff[i].come_time,staff[i].category); elsecontinue;} fclose(fp); } (4)删除人员 voiddelete_data() { intk;charw0,w1; loop: k=search_data(); if(k do{ fflush(stdin);/*清除缓冲区输入*/ printf("确认要删除该人员信息? 1)是2)否[]\b\b"); w0=getchar();}while(w0<'1'||w0>'2'); if(w0=='1'){ staff[k].age=0; save_all();puts("该人员信息已被删除! ");} } do{ fflush(stdin);/*清除缓冲区输入*/ printf("1)继续删除数据2)回主菜单3)退出[]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1')gotoloop; elseif(w1=='2')menu(); elseexit(0); } (5)修改人员信息 voidmodify() { intk=0,w0,g; charh[30],w1,w2; loop: g=search_data(); if(g do{ puts("\t\t\t修改: 1)编号"); puts("\t\t\t2)姓名"); puts("\t\t\t3)性别"); puts("\t\t\t4)年龄"); puts("\t\t\t5)职务"); puts("\t\t\t6)职称"); puts("\t\t\t7)政治面貌"); puts("\t\t\t8)最高学历"); puts("\t\t\t9)任职时间"); puts("\t\t\t10)来院时间"); puts("\t\t\t11)人员类别"); printf("请选择: []\b\b"); scanf("%d",&w0);}while(w0<1||w0>11); switch(w0) {case1: puts("请输入新编号: "); scanf("%s",h);strcpy(staff[g].num,h);break; case2: puts("请输入姓名: "); scanf("%s",h);strcpy(staff[g].name,h);break; case3: puts("请输入性别: "); scanf("%s",h);strcpy(staff[g].sex,h);break; case4: puts("请输入年龄: "); scanf("%d",&k);staff[g].age=k;break; case5: puts("请输入职务: "); scanf("%s",h);strcpy(staff[g].duty,h);break; case6: puts("请输入职称: "); scanf("%s",h);strcpy(staff[g].title,h);break; case7: puts("请输入政治面貌: "); scanf("%s",h);strcpy(staff[g].p_landscape,h);break; case8: puts("请输入最高学历: "); scanf("%s",h);strcpy(staff[g].Qualifications,h);break; case9: puts("请输入任职时间: "); scanf("%d",&k);staff[g].Service_time=k;break; case10: puts("请输入来院时间: "); scanf("%s",h);strcpy(staff[g].come_time,h);break; case11: puts("请输入人员类别: "); scanf("%s",h);strcpy(staff[g].category,h);break; } do{ fflush(stdin);/*清除缓冲区输入*/ printf("是否保存? 1)保存2)否[]\b\b"); w1=getchar();}while(w1<'1'||w1>'2'); if(w1=='1'){save_all();puts("保存修改成功! ");} } do{ fflush(stdin);/*清除缓冲区输入*/ printf("1)继续修改2)回主菜单3)退出[]\b\b"); w2=getchar();}while(w2<'1'||w2>'3'); if(w2=='1')gotoloop; elseif(w2=='2')menu(); elseexit(0); } (6)统计人员信息 voidstastic() { inti,count;charw0,w1; n=load(); if(n==0){ puts("没有数据! ");getchar();menu();} loop: system("cls"); do{ fflush(stdin);/*清除缓冲区输入*/ printf("通过1)在职人员2)党员\n"); printf("3)女工人数4)最高学历[]\b\b"); w0=getchar();}while(w0<'1'||w0>'4'); if(w0=='1'){/*统计在职人员*/ printf_face(); for(i=0,count=0;i if(strcmp(staff[i].category,"退休人员")! =0&&strcmp(staff[i].category,"临时工")! =0){ count++;printf_one(staff[i]);} printf("\t\t\t\t共有%d条记录",count); } elseif(w0=='2'){/*统计党员*/ printf_face(); for(i=0,count=0;i if(strcmp(staff[i].p_landscape,"党员")==0){ count++;printf_one(staff[i]);} printf("\t\t\t\t共有%d条记录",count); } elseif(w0=='3'){/*统计女工人员*/ printf_face(); for(i=0,count=0;i if(strcmp(staff[i].sex,"女")==0){ count++;printf_one(staff[i]);} printf("\t\t\t\t共有%d条记录",count); } else{/*统计高学历人员*/ printf_face(); for(i=0,count=0;i if(strcmp(staff[i].Qualifications,"硕士学位")==0||strcmp(staff[i].Qualifications,"更高")==0){ count++;printf_one(staff[i]);} printf("\t\t\t\t共有%d条记录",count);} do{ fflush(stdin);/*清除缓冲区输入*/ printf("\n1)继续统计2)回主菜单3)退出[]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1')gotoloop; elseif(w1=='2')menu(); elseexit(0); } (7)排序功能 voidsort() { inti,j;charw0,w1; structstaffs1; loop: n=load(); system("cls"); do{ fflush(stdin);/*清除缓冲区输入*/ printf("通过1)年龄2)来院时间[]\b\b"); w0=getchar();}while(w0<'1'||w0>'2'); if(w0=='1'){/*按年龄排序*/ for(i=0;i for(j=i+1;j if(staff[i].age>staff[j].age){ s1=staff[i];staff[i]=staff[j];staff[j]=s1;} } else{/*按来院时间排序*/ for(i=0;i for(j=i+1;j if(strcmp(staff[i].come_time,staff[j].come_time)>0){ s1=staff[i];staff[i]=staff[j];staff[j]=s1;} } printf_face(); for(i=0;i printf_one(staff[i]); do{ fflush(stdin);/*清除缓冲区输入*/ printf("\n1)回主菜单2)继续排序3)退出[]\b\b"); w1=getchar();}while(w1<'1'||w1>'3'); if(w1=='1')menu(); elseif(w1=='2')gotoloop; elseexit(0); } 四、运行与测试报告 *********************************高校人事管理系统****************************** 1)增加人员信息 2)删除人员信息 3)查询人员信息 4)修改人员信息 5)统计人员信息 6)对人员排序 7)保存人员信息 8)浏览人员信息 9)退出 请选择【1】 请输入编号(如001): 20071003335 请输入姓名: majianbo 请输入性别(男,女): nan 请输入年龄: 20 请输入职务(教授副教授讲师助教学生后勤人员): jiaoshou 请输入职称(无初级高级): gaoji 请输入政治面貌(党员非党员): danyuan 请输入最高学历(小学初中高中大学硕士学位更高): shuoshi 请输入任职时间: 20070901 请输入来院时间(如20050101): 20070901 请输入人员类别(行政人员教师一般员工退休人员临时工): jiaoshi 是否保存? 1)是2)否[1] 该信息已成功保存! 1)继续增加人员信息2)回主菜单3)退出[] 程序: #include #include #include structstaff/*定义结构体*/ { charnum[10];/*编号*/ charname[20];/*姓名*/ charsex[10];/*性别*/ intage;/*年龄*/ charduty[20];/*职务*/ chartitle[20];/*职称*/ charp_landscape[30];/*政治面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 人事管理系统