C语言课程设计报告—人事管理系统11

  • 格式:doc
  • 大小:169.50 KB
  • 文档页数:21

人事管理系统

前言:

现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助, 各行各业都需要特定计算系统的运用, 我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。我们需要学习C语言编程, 根据课堂讲授内容, 做相应的自主练习, 消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题, 逐渐培养编程能力、用计算机解决实际问题的能力, 能够按照要求编辑一些基本的程序, 提高自己的思维能力。

题目:

(1) 某高校主要人员有: 在职人员(行政人员、教师、一般员工)、退休人员及临时工。现在需要储存这些人员的人事档案信息, 内容包括编号、姓名、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。其中, 人员编号唯一, 不能重复。

(2) 添加删除功能:能根据学院人事的变动情况, 添加删除记录。

(3) 查询功能: 能根据编号和姓名进行查询。

(4) 编辑功能(高级): 根据查询对相应的记录进行修改并记录。

(5) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数,

高学历高职称人数), 统计要求同时显示被统计着的信息。

排序功能: 按照年龄、来院时间进行排序。

保存功能: 能对输入的数据进行相应的存储。

分析:

我们编辑的程序要能够满足题目的要求, 可以进行这么多的功能的计算! 但是在开始我们运行使用程序的时候必须要知道我们要运用这些功能中的哪一个! 这就要求我们可以 程序中任意选择我们所需要的功能! 很显然我们要编辑存储人员的信息自然要运用到文件!

而人员的信息必须要以结构体的形式来表示才能够方便我们提取信息! 主函数main()

添加与删除功能 查询功能 编辑功能 统计功能 排序功能 保存功能

我们选择了要运行的功能分支之后!这些功能是以主函数以外的被调函数!当有需要时被调函数还可以调用其他的被吊函数!例如我们题目中的统计和查询功能, 就可以用这种方式来编辑程序!方便清楚!

设计:

很显然主程序要用到SWICTH函数, 这样可以选择要运行的那个功能的函数来执行,

而其他的功能函数则不必运行!

三、解题思路

1.定义结构

struct staff

{

char num[10];

char name[20];

char sex[10];

int age;

char title[20];

char p_landscape[30];

char Qualifications[30];

int Service_time;

char come_time[30];

char category[30];

}staff[100];

2.主程序

进入主菜单函数

void main()

{

menu();

}

/*******************主菜单函数**********************/

void menu()

{

char w0;

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)

{

case 1:add();break;

case 2:delete_data();break;

case 3:search();break;

case 4:modify();break;

case 5:stastic();break;

case 6:sort();break;

case 7:save();break;

case 8:browse();break;

case 9:break;}

}

(1)查询功能

int search_data()/*查找单个数据函数*/

{

int i,flag;

char s[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;}

else continue;

}

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

else continue;

}

if(flag==0) puts("该人员不存在!");

}

return i;

void search()

{

int k;char w1;

loop: k=search_data();

do{

fflush(stdin); /*清除缓冲区输入*/

printf("1)回主菜单 2)退出 3)继续查询 [ ]\b\b");

w1=getchar();}while(w1<'1'||w1>'3');

if(w1=='1')menu();

else if(w1=='2')exit(0);

else goto loop;

}

开始

数据查询

wo=1?

wo=2? 输入编号

输入姓名 Y Y

N N

结束 输入wo的值 1或2

(2)增加人员信息

void add()

{

char w0,w1;

loop: system("cls");

puts("请输入编号(如001):");

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

if(test(s.num))goto loop;/*编号重复*/

puts("请输入姓名:");

scanf("%s",);

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)

{

case 1:save(s);break;

case 2:break;

}

do{

fflush(stdin); /*清除缓冲区输入*/

printf("1)继续增加人员信息 2)回主菜单 3)退出 [ ]\b\b");

w1=getchar();}while(w1<'1'||w1>'3'); 开始

输入信息

结束 保存信息