c++课程设计之高校教职工人事管理系统.docx
《c++课程设计之高校教职工人事管理系统.docx》由会员分享,可在线阅读,更多相关《c++课程设计之高校教职工人事管理系统.docx(26页珍藏版)》请在冰点文库上搜索。
c++课程设计之高校教职工人事管理系统
《C++程序设计》课程设计报告
高校教职工人事管理系统
年级/专业/班:
学生姓名:
学号:
指导教师:
开题时间:
2010年09月06日
完成时间:
2010年09月28日
《C++程序设计语言》课程设计
——高校教职工人事管理系统
一、引言
随着人们生活水平的提高,计算机发展异常迅速。
如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。
通过计算机对各类问题求解已经成为一种高效、快捷的方式。
本课程设计就是用C++研究两点距离的求解的问题,实现对两点距离的问题求解,和实现类模板的应用以及函数的调用。
二、设计目的与任务
1、本课程设计的目的
1)通过课程设计更进一步理解C++的基础知识和面向对象的思想。
2)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。
初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
3)熟练掌握C++中类及类模板在程序中的应用,并熟练了解类中函数的调用。
2、本课程设计的任务
使用类实现编写一个高校教职工人事管理系统,能够实现教职工信息增加、删除、修改、查找,能够统计在职人员、中共党员、女教职工、高职称、高学历的人数,信息的输入输出能够重载输入与输出操作符,并且要求有错误提示功能,例如输入日期,输入错误提示重新输入.
三、设计方案
1、总体设计
(1)定义员工(Person)类,其中包括编号、职工分类(”行政人员",”教师","一般员工","退休人员”,"返聘人员",”临时工”)、性别、年龄,职务("无”,”科级”,”处级”,”地级");、职称(”无”,"初级","中级”,”高级");、政治面貌(”群众”,"中共党员",”民主党派")、学历("中专”,”大专","大学”,”硕士”,”博士”)。
(2)实现下面的功能
a、设计菜单实现功能选择;
b、输入功能:
输入员工的信息,并保存到文件中;
c、删除资料:
能够根据编号删除员工的资料;
d、修改功能:
能够根据编号来修改员工的资料;
e、查询功能:
能够根据编号来查看员工的资料;
f、统计功能:
能够统计在职人员、中共党员、女教职工、高职称、高学历的人数.
g、错误提示功能:
如果输入的资料不合法,将会提示错误,并给予指导。
2、详细设计
类Person
charno[100];//编号
charduty[30];//职工分类
charsex[10];//性别
intage;//年龄
charposition[30];//职务
charzhicheng[30];//职称
charpolitical[30];//政治面貌
charrecord[30];//学历
voidadd();//增加信息
voiddelet();//删除信息
voidchange();//修改信息
voidfind();//查找信息
voidpush(Personpp);//给类赋值
下面程序流程图中的判断框必须用菱形表示,请修改
(1)Person:
:
add()
(2)Person:
:
delete()
(3)Person:
:
change()
(4).Person:
:
find()
3、程序清单
/*
改程序需要在D盘加入文本名为“subject.txt”文本档案作为资料的库存.
文本档案资料内容如下:
09408201行政人员男35处级高级中共党员大学
09408202教师女30处级高级中共党员大学
09408203临时工女20无高级群众中专
09408204临时工男22处级初级中共党员博士
09408205返聘人员男30科级高级中共党员大专
09408206教师女40科级初级中共党员硕士
09408207退休人员女68处级中级民主党派大学
09408208一般员工男27地级高级群众大学
09408209教师男22处级高级中共党员博士
09408210退休人员男62地级初级民主党派硕士
09408211返聘人员女40无中级中共党员硕士
09408212一般员工男38处级中级群众大学
09408213教师男46处级无中共党员博士
09408214教师男27无高级民主党派大学
09408215教师男18处级高级中共党员大学
*/
//下面程序开始
#include#include〈cstring〉
usingnamespacestd;
constintN=1000;
intt=0;
inton=0;//统计在职人员人数
intdang=0;//统计中共党员人数
intnv=0;//统计女性职工人数
intgaozhi=0;//统计高职称人数
intgaoli=0;//统计高学历人数
classPerson
{public:
charsex[10];//性别
charduty[30];//职工分类
intage;//年龄
charpolitical[30];//政治面貌
charrecord[30];//学历
charposition[30];//职务
charzhicheng[30];//职称
charno[100];//编号
voidadd();//增加信息
voiddelet();//删除信息
voidchange();//修改信息
voidfind();//查找信息
voidpush(Personpp);//给列成员赋值
};
Personp[N];
voidPerson:
:
push(Personpp)
{
strcpy(no,pp。
no);
strcpy(sex,pp.sex);
strcpy(position,pp。
position);
strcpy(zhicheng,pp.zhicheng);
strcpy(political,pp。
political);
strcpy(record,pp。
record);
strcpy(duty,pp。
duty);
age=pp.age;
if(strcmp(duty,”退休人员”))on++;
if(strcmp(sex,"女”)==0)nv++;
if(strcmp(zhicheng,"高级”)==0)gaozhi++;
if(strcmp(political,"中共党员”)==0)dang++;
if(strcmp(record,"硕士")==0||strcmp(record,"博士")==0)gaoli++;
}
voidtip()
{cout〈〈”输入ENTER返回子菜单!
"〈getchar();
getchar();
system(”cls”);
}
voidtip1()
{cout<<"输入ENTER返回主菜单!
"<〈endl;
getchar();
getchar();
system(”cls");
}
voidLoad()//通过文本输入数据
{PersonS;
FILE*fp1;
boolf=1;
fp1=fopen(”d:
\\subject。
txt”,"r");if(fp1==NULL)f=0;
while(f&&!
feof(fp1))
{fscanf(fp1,"%s%s%s%d%s%s%s%s",S.no,S。
duty,S.sex,&S。
age,S.position,S.zhicheng,S。
political,S。
record);
p[t++]。
push(S);
}
fclose(fp1);
}
voidPerson:
:
add()//录入信息
{
cout〈〈”现在录入编号为”〈"<〈endl;
A1:
cout〈〈”输入员工的职工分类:
”;
cin〉〉duty;
if(strcmp(duty,”行政人员”)&&strcmp(duty,"教师")&&
strcmp(duty,"一般员工")&&strcmp(duty,"退休人员")&&
strcmp(duty,"返聘人员”)&&strcmp(duty,"临时工"))
{cout〈<”-—(请输入正确的职工分类,例如:
行政人员,教师,一般员工,退休人员,返聘人员,临时工)"〈if(strcmp(duty,"退休人员”))on++;
A2:
cout〈〈”输入员工的性别:
”;
cin〉>sex;
if(strcmp(sex,”男”)&&strcmp(sex,”女”))
{cout<<”--(请输入正确的性别,例如:
男,女)"<if(strcmp(sex,"女")==0)nv++;
A3:
cout<〈”输入员工的年龄:
”;
cin〉>age;
if(age〈=0){cout<<”—-(请输入正确的年龄,例如:
18等)"〈A4:
cout<〈”输入员工的职务:
";
cin〉〉position;
if(strcmp(position,”无”)&&strcmp(position,"科级")&&
strcmp(position,”处级”)&&strcmp(position,”地级”))
{cout<〈"—-(请输入正确的职务,例如:
无,科级,处级,地级)”<〈endl;gotoA4;}
A5:
cout<<"输入员工的职称:
";
cin〉>zhicheng;
if(strcmp(zhicheng,"无”)&&strcmp(zhicheng,"初级")&&
strcmp(zhicheng,”中级")&&strcmp(zhicheng,”高级"))
{cout<〈"——(请输入正确的职称,例如:
无,初级,中级,高级)”<if(strcmp(zhicheng,”高级")==0)gaozhi++;
A6:
cout<<"输入员工的政治面貌:
”;
cin>〉political;
if(strcmp(political,”群众”)&&strcmp(political,"中共党员")&&
strcmp(political,"民主党派”))
{cout<<”——(请输入正确的政治面貌,例如:
群众,中共党员,民主党派)"<〈endl;gotoA6;}
if(strcmp(political,"中共党员”)==0)dang++;
A7:
cout〈〈”输入与员工的学历:
”;
cin>>record;
if(strcmp(record,"中专”)&&strcmp(record,”大专")&&
strcmp(record,"大学")&&strcmp(record,"硕士")
&&strcmp(record,”博士"))
{cout〈<”--(请输入正确的学历,例如:
中专,大专,大学,硕士,博士)"〈if(strcmp(record,"硕士”)==0||strcmp(record,"博士")==0)gaoli++;
cout〈<”编号为"〈t++;
tip1();
}
voidPerson:
:
delet()//删除信息
{
no[0]=’-’;
if(strcmp(duty,”退休人员"))on--;
if(strcmp(sex,"女")==0)nv—-;
if(strcmp(zhicheng,”高级”)==0)gaozhi—-;
if(strcmp(political,"中共党员")==0)dang——;
if(strcmp(record,”硕士")==0||strcmp(record,”博士")==0)gaoli-—;
cout〈<”删除员工信息成功!
"<tip1();
}
voidPerson:
:
change()//修改信息
{intn,flag=1;
do{
A:
cout<〈"***子菜单:
修改资料***"<<<”修改哪些信息?
"<〈endl
〈<"1(编号)2(职工分类)3(性别)4(年龄)5(职务)6(职称)7(政治面貌)8(学历)9(退回主菜单)”〈〈endl
〈<”输入数字1-9进行修改或退出:
”;
cin>〉n;
if(n〈1||n>9){cout<<”sorry,您输入的信息有误,请重新输入!
”<switch(n)
{case1:
cout<<"输入正确的员工编号:
”;
cin>>no;
cout<〈”员工编号修改成功"〈tip();
break;
case2:
B1:
cout〈〈”输入正确的员工的职工分类:
”;
if(strcmp(duty,"退休人员"))on—-;
cin〉>duty;
if(strcmp(duty,"行政人员”)&&strcmp(duty,"教师")&&
strcmp(duty,”一般员工”)&&strcmp(duty,"退休人员")&&
strcmp(duty,”返聘人员")&&strcmp(duty,”临时工”))
{cout<<”(请输入正确的职工分类,例如:
行政人员,教师,一般员工,退休人员,返聘人员,临时工)"<〈endl;gotoB1;}
if(strcmp(duty,”退休人员"))on++;
cout〈〈"员工职工分类修改成功"〈〈endl〈tip();
break;
case3:
B2:
cout〈<"输入正确的员工的性别:
";
if(strcmp(sex,”女")==0)nv——;
cin>〉sex;
if(strcmp(sex,"男")&&strcmp(sex,”女"))
{cout<〈"(请输入正确的性别,例如:
男,女)”<if(strcmp(sex,”女")==0)nv++;
cout〈<”员工性别修改成功”<tip();
break;
case4:
B3:
cout<<"输入正确的员工的年龄:
”;
cin>〉age;
if(age<=0)
{cout<<"(请输入正确的年龄,例如:
18等)"〈cout〈<"员工年龄修改成功”<tip();
break;
case5:
B4:
cout<<”输入正确的员工的职务:
”;
cin>〉position;
if(strcmp(position,"无")&&strcmp(position,"科级")&&
strcmp(position,"处级”)&&strcmp(position,"地级"))
{cout〈〈”(请输入正确的职务,例如:
无,科级,处级,地级)”〈cout<〈”员工职务修改成功"<〈endl<tip();
break;
case6:
B5:
cout<<”输入正确的员工的职称:
”;
if(strcmp(zhicheng,"高级")==0)gaozhi——;
cin〉〉zhicheng;
if(strcmp(zhicheng,”无")&&strcmp(zhicheng,”初级")&&
strcmp(zhicheng,"中级")&&strcmp(zhicheng,"高级”))
{cout〈<"(请输入正确的职称,例如:
无,初级,中级,高级)"<〈endl;gotoB5;}
cout〈<"员工职称修改成功"〈〈endl<if(strcmp(zhicheng,”高级”)==0)gaozhi++;
tip();
break;
case7:
B6:
cout<<"输入正确的员工的政治面貌:
";
if(strcmp(political,”中共党员”)==0)dang——;
cin>>political;
if(strcmp(political,”群众”)&&strcmp(political,"中共党员”)&&
strcmp(political,"民主党派"))
{cout<〈"(请输入正确的政治面貌,例如:
群众,中共党员,民主党派)”<〈endl;gotoB6;}
if(strcmp(political,”中共党员")==0)dang++;
cout〈〈”员工政治面貌修改成功"<tip();
break;
case8:
B7:
cout<〈"输入正确的员工的学历:
";
if(strcmp(record,”硕士”)==0||strcmp(record,”博士”)==0)gaoli--;
cin〉〉record;
if(strcmp(record,"中专")&&strcmp(record,”大专”)&&
strcmp(record,"大学”)&&strcmp(record,"硕士")
&&strcmp(record,"博士”))
{cout〈<”(请输入正确的学历,例如:
中专,大专,大学,硕士,博士)"<〈endl;gotoB7;}
if(strcmp(record,"硕士")==0||strcmp(record,"博士")==0)gaoli++;
cout<<”员工学历修改成功"<〈endl〈〈endl;
tip();
break;
case9:
tip1();
flag=0;
break;
}
}while(flag);
}
voidPerson:
:
find()//查找信息(输出信息)
{
cout<〈”员工的编号:
”;
cout〈cout〈<"员工的职工分类:
”;
cout<cout〈<”员工的性别:
";
cout〈〈sex<〈endl;
cout<<”员工的年龄:
”;
cout<cout<〈"员工的职务:
”;
cout〈cout<<"员工的职称:
";
cout〈cout<<"员工的政治面貌:
";
cout〈cout<〈”员工的学历:
";
cout<〈record<〈endl<tip1();
}
intmain()
{
Load();
intn,i,flag1=1;
charnum[100];
do
{A:
cout〈<"***************"〈〈endl
〈<"主菜单"<〈endl
〈〈”***************”<〈endl
<<”
(1)增加资料
(2)删除资料(3)修改资料(4)查找资料(5)查看统计”
<〈”(6)退出”<〈endl
〈<"请选择1—6进行操作:
";
cin>>n;
system(”cls");
if(n<1||n〉9){cout〈<"sorry,您输入的信息有误。
"〈〈endl;tip1();gotoA;}
switch(n)
{case1:
C:
cout〈〈"输入要增加的员工的编号:
”;
cin>〉num;
for(i=0;ino,num)==0)break;
if(i!
=t)
{cout〈〈”Sorry,您要增加的员工编号已存在,请重新输入!
"〈〈endl〈strcpy(p[t]。
no,num);
cout〈〈endl;
p[t].add();
break;
case2:
cout<<"输入要删除的员工的编号:
";
cin〉>num;
for(i=0;i{if(strcmp(p[i]。
no,num)==0)
{p[i].delet();
break;
}
}
cout〈if(i==t){cout〈〈"sorry,您输入的员工编号有误。
"〈break;
case3:
cout<〈”输入要修改的员工的编号:
”;
cin>>num;
cout〈〈endl;
for(i=0;i〈t;i++)
{if(strcmp(p[i]。
no,num)==0)
{p[i].change();
break;
}
}
if(i==t){cout<〈”sorry,您输入的员工编号有误。
”<break;
case4:
cout<<"输入要查看的员工的编号:
";
cin>〉num;
cout〈for(i=0;i{if(strcmp(p[i].no,num)==0)
{p[i]。
find();
break;
}
}
if(i==t){cout<〈”sorry,您输入的员工编号有误。
"〈〈endl;tip1();}
break;
case5:
cout〈〈”在职人员人数为:
"<〈on〈cout<〈”中共党员人数为:
"〈〈dang〈〈endl;
cout〈<"女教职工人数为:
"〈cout<<”高职称人数为:
"<〈gaozhi<cout〈<"搞学历人数为:
"<cout〈<"(说明:
1。
在职人员不包括退休人员.”<cout<<”2。
高学历包括硕士及博士。
)”<〈endl<tip1();
break;
ca