高校工资管理系统C++课程设计报告Word文件下载.docx
《高校工资管理系统C++课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《高校工资管理系统C++课程设计报告Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
③完成系统详细设计:
主要包括类层次图;
界面设计与各功能模块实现等累人。
④完成系统调试:
主要包括调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:
说明系统的使用和操作步骤,详细列出每一步的操作步骤。
⑥附录:
关键源程序(带注释),可以只选取程序主要部分。
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第17周星期一08时:
00分——12时:
00分
星期三14时:
00分——18时:
星期四14时:
课题3:
高校工资管理系统
(一)、课程设计题目:
高校工资管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
现一高校有五类职工:
教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。
为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师:
基本工资+课时费;
实验员:
基本工资+实验室补助;
行政人员:
基本工资+行政补贴;
教师兼职实验员:
基本工资+课时费+实验室补助;
行政人员兼职教师:
基本工资+行政补贴+课时费;
其中课时费计算:
教师每一学期的基本工作量为120,教师兼职实验员每学期基本工作量为70,行政人员没有基本工作量,若每节课时费为20元;
课时费=(上学期工作量-基本工作量)*20;
注意:
如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)写出需求分析(做什么);
(2)分析系统中的各个实体之间的关系及其属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)用户界面的设计;
(7)分析系统功能模块(系统流程图);
(8)代码编写,功能调试;
(9)完成系统总结报告以及系统使用说明书。
系统需求分析
现在各高校工资的管理变得越来越来复杂,为了对工资进行系统化的管理,并实现工资的自动发放功能,特设计此系统。
它可以对职工的基本信息进行输入和存取,其次可以选择职工的编号和姓名查询职工的工资的所有基本信息,如若有职工由于工作调动,则可进行相对应的删除动作。
生成的相关数据以文件的形式存放在硬盘上,并且可以继续录入,以达到建议操作的目的。
总体设计
该程序采用的是类、继承、多态及文件来处理职工的所有基本信息,如下所述。
包含的库函数有:
#include<
iostream.h>
#include<
string.h>
stdlib.h>
fstream.h>
其中#include<
是文件流的头文件,ifstream和ofstream表示输入和输出文件流。
包含的函数有:
主函数main()
菜单函数show()show1()show2()show3()show4()
录入函数voidjiaoshilur()voidshiyanyuanluru()voidmanagerluru()
voidjianzhi1luru()voidjianzhi2luru()
查询信息函数voidjiaoshichaxun()voidmanagerchaxun()voidshiyanyuanchaxun()voidjianzhi1chaxun()voidjianzhi2chaxun()
删除信息函数voidjiaoshishanchu()voidshiyanyuanshanchu()voidmanagershanchu()voidjianzhi1shanchu()voidjianzhi2shanchu()
包含的类:
classEmployee()classTeacher()classDhiyanyuan()
classManager()classJianzhiq()classJianzhi2()
系统功能模块图
详细设计
1.系统进入
此部分功能主要是提供进入系统的一个接口,系统以菜单形式打开,输入选项执行相关动作,在输入选项的同时系统还对你输入的选项进行检验,若不合理,系统就会自动提示输入错误,并重新输入;
若合理,则执行相关动作。
2.信息录入
此部分的功能主要是对职工的信息进行录入并保存,包括其编号和姓名及教师课时量。
录入流程图
3.信息查询
此部分的功能主要是根据你输入的职工的编号或者是姓名查询工资,若之前没有录入此人信息,则输出“没有你要查询的对象”。
查询流程图
4.信息删除
此部分的功能主要是有职工由于工作调动,可进行相对应的删除动作。
删除流程图
5.退出系统
此部分功能就是在执行完所有动作后推出此系统。
4.系统调试与使用说明
在这次程序的编写过程中,主要存在的问题是文件操作与文件流。
没有注意到在向文件输出数据时。
“f<
<
a[i]<
”””用于在各个数据后加一个空格,如采用“f<
”。
则所有数据之间没有分隔号。
达不到分别存储各个数据的目的。
1.系统界面
进入程序菜单,界面如图
2.录入界面
3.查询界面
文件中没有查询在对象
3.删除界面
4.文件已经删除
结果分析
设计特点:
在输入信息的时候先选择你要输入的职工类型,然后有提示输入职工的个数,逐个输入即可,在输入过程中,系统会自动将用户输入的信息存储到相应的文件中。
不过此系统没有修改用户信息的功能,只能查询用户信息和删除信息。
总结
通过这次对《高校工资管理系统》的设计,我体会到面向对象程序设计的特点,多态性,封装性,继承性,并掌握了一定的编程技巧,拓展了思维,提升了自己解决实际问题的能力。
虽然对文件和多态的理解还很肤浅,但是我学到了很多平时学不到的东西。
通过这次课程设计,深深体会到我对很多的专业知识还不了解,同时也把我在学这门课程的所存在的弊端暴露出来了,这就促使我要更多的阅读课外书籍,学到更多的专业知识,使自己得到不断的提高。
最后,我要衷心感谢老师和同学在我的设计过程中给予我的极大帮助,使我能够及时、顺利地完成此次的课程设计。
源代码
#include<
iostream>
inti;
classEmployee
{
public:
charname[20];
intnum;
voiddisplay()
{
cout<
"
姓名:
;
cin>
>
name;
编号:
num;
}
};
classTeacher:
publicEmployee
intscore;
inttime;
Teacher(ints=1000){score=s;
}
voiddisplay1()
{
请输入教师的"
Employee:
:
display();
请输入教师的工作量(课时):
"
time;
}
classShiyanyuan:
publicEmployee
public:
intbuzu;
Shiyanyuan(ints=800,intb=250){score=s;
buzu=b;
cout<
请输入实验员的"
classManager:
intbutie;
Manager(ints=900,intb=250){score=s;
butie=b;
请输入行政人员的"
classJianzhi1:
publicTeacher,publicShiyanyuan//教师兼职实验员
Jianzhi1(ints=1000,intb=250):
Teacher(s=1000),Shiyanyuan(b=250){}
{cout<
请输入教师兼职实验员的"
Teacher:
请输入教师兼职实验员的工作量(课时):
classJianzhi2:
publicManager,publicTeacher//行政人员兼职教师
Jianzhi2(ints=900,intb=210):
Manager(s=900){butie=b;
请输入行政人员兼职教师的"
请输入行政人员兼职教师的工作量(课时):
Teachert[100];
Shiyanyuans[100];
Managerm[100];
Jianzhi1j[100];
Jianzhi2j2[100];
voidshow()
{cout<
请输入你要录入的对象:
endl;
cout<
1:
教师"
2:
实验员"
3:
行政人员"
4:
教师兼职实验员"
5:
行政人员兼职教师"
6:
退出录入"
请选择:
voidjiaoshiluru()//教师录入
ofstreamoutfile("
教师.txt"
ios:
app);
if(outfile.fail())
openerror!
exit
(1);
}intb;
请选择你要录入教师的个数:
b;
for(i=0;
i<
i++)
t[i].display1();
outfile<
t[i].num<
t[i].name<
t[i].score<
t[i].time<
outfile.close();
voidshiyuanyuanluru()//实验员录入
实验员.txt"
请输入你要录入实验员的个数:
s[i].display1();
s[i].num<
s[i].name<
s[i].score<
s[i].buzu<
voidManagerluru()//行政人员录入
行政人员.txt"
请输入你要录入行政人员的个数:
m[i].display1();
m[i].num<
m[i].name<
m[i].score<
m[i].butie<
voidjianzhi1luru()//教师兼职实验员录入
教师兼职实验员.txt"
请输入你要录入教师兼职实验员的个数:
j[i].display1();
j[i].Teacher:
num<
name<
score<
j[i].buzu<
j[i].time<
outfile.close();
voidjianzhi2luru()//行政人员兼职教师录入
行政人员兼职教师.txt"
请输入你要行政人员兼职教师的个数"
j2[i].display1();
j2[i].Teacher:
j2[i].Manager:
j2[i].butie<
time<
voidxinxiluru()//信息录入
intc;
show();
c;
if(c==6){cout<
退出录入成功。
break;
else
switch(c)
{case1:
jiaoshiluru();
break;
case2:
shiyuanyuanluru();
case3:
Managerluru();
case4:
jianzhi1luru();
case5:
jianzhi2luru();
default:
上一次输入错误。
}break;
voidshow2()
请输入你要查询的对象:
1:
教师查询"
2:
实验员查询"
3:
行政人员查询"
4:
教师兼职实验员查询"
5:
行政人员兼职教师查询"
6:
退出查询"
请选择一个操作:
voidjiaoshichaxun()
ifstreaminfile("
in);
charnam[20];
intk,n,r,bh;
1、按编号查询"
2、按姓名查询"
请输入您的选择:
r;
if(r==1)
请输入你要查询教师的编号:
bh;
for(i=0,n=0;
100;
infile>
t[i].num>
t[i].name>
t[i].score>
t[i].time;
if(t[i].num==0)break;
if(t[i].num==bh)
{
n++;
k=t[i].score+(t[i].time-120)*20;
教师:
k<
}
if(n==0)cout<
没有你要查询的教师。
infile.close();
if(r==2)
请输入你要查询教师的名字:
nam;
if(strcmp(t[i].name,nam)==0)
voidshiyanyuanchaxun()//实验员查询
fstreamiofile("
intk,n,r,bh;
charnam[20];
请输入你要查询实验员的编号:
iofile>
s[i].num>
s[i].name>
s[i].score>
s[i].buzu;
if(s[i].num==bh)
n++;
k=s[i].score+s[i].buzu;
实验员:
if(n==0)cout<
没有你要查询的实验员。
iofile.close();
请输入你要查询实验员的名字:
if(strcmp(s[i].name,nam)==0)
voidManagerchaxun()//行政人员查询
if(r==1)
请输入你要查询的行政人员的编号: