面向对象程序设计课程设计高校工资管理系统.docx
《面向对象程序设计课程设计高校工资管理系统.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计高校工资管理系统.docx(54页珍藏版)》请在冰豆网上搜索。
面向对象程序设计课程设计高校工资管理系统
各专业全套优秀毕业设计图纸
课程设计报告
课程名称面向对象程序设计
课题名称高校工资管理系统
专业计算机科学与技术
班级1202
学号34
姓名
指导教师
2013年12月12日
湖南工程学院
课程设计任务书
课程名称面向对象程序设计
课题高校工资管理系统
专业班级计算机科学与技术1202
学生姓名
学号34
指导老师审批
任务书下达日期2013年12月12日
任务完成日期2014年01月06日
高校工资管理系统
(一)、课程设计题目:
高校工资管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
现一高校有五类职工:
教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。
为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师:
基本工资+课时费;
实验员:
基本工资+实验室补助;
行政人员:
基本工资+行政补贴;
教师兼职实验员:
基本工资+课时费+实验室补助;
行政人员兼职教师:
基本工资+行政补贴+课时费;
其中:
(1)课时费:
教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;
注意:
如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
(2)基本工资:
教师800元,实验员650元,行政人员750元。
(3)行政补贴:
250元。
(4)实验室补助:
150元。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)写出需求分析(做什么);
(2)分析系统中的各个实体之间的关系及其属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)用户界面的设计;
(7)分析系统功能模块(系统流程图);
(8)代码编写,功能调试;
(9)完成系统总结报告以及系统使用说明书。
1.1用户需求................................................................................................................1
1.2系统拟实现的功能................................................................................................1
2.1系统功能分析........................................................................................................2
2.2系统功能模块图....................................................................................................3
3.详细设计
3.1程序模块................................................................................................................5
3.2类的层次图............................................................................................................6
3.3功能模块实现........................................................................................................7
4.1进入主页面..........................................................................................................10
4.2进入信息录入模块..............................................................................................11
4.3进入信息查询模块..............................................................................................13
4.4进入信息删除模块..............................................................................................15
5.1设计特点..............................................................................................................16
5.2设计不足..............................................................................................................16
6.1设计总结..............................................................................................................17
7.附录
7.1头文件..................................................................................................................18
7.2主函数..................................................................................................................32
1.系统需求分析
1.1用户需求
现一高校有五类职工:
教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。
为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。
1.2系统拟实现的功能
(1)本系统显示这样的主菜单:
1.信息录入
2.信息查询
3.信息删除
4.退出
(2)进入信息输入功能后,显示录入菜单:
1.教师录入
2.实验员录入
3.行政人员录入
4.教师兼职实验员录入
5.行政人员兼职教师录入
6.退出录入
(3)进入信息查询功能后,显示查询菜单:
1.教师查询
2.实验员查询
3.行政人员查询
4.教师兼职实验员查询
5.行政人员兼职教师查询
6.退出查询
(4)进入信息删除功能后,显示删除菜单:
1.教师删除
2.实验员删除
3.行政人员删除
4.教师兼职实验员删除
5.行政人员兼职教师删除
6.退出删除
2.总体设计
2.1系统功能分析
(1)本程序采用的是类、继承、多态及文件来处理职工的所有基本信息。
(2)程序模块组成:
a.包含的库函数有:
#include"iostream"#include"fstream.h"
#include"stdlib.h"#include"string.h"其中#include"fstream.h"是文件流的头文件,ifstream和ofstream表示输入和输出文件流。
b.包含的函数有:
主函数:
intmain()
菜单函数:
voidshow1()(录入菜单函数)
voidshow2()(查询菜单函数)
voidshow3()(删除菜单函数)
voidshow4()(主菜单函数)
信息录入函数:
voidjiaoshiluru()(教师录入函数)
voidshiyanyuanluru()(实验员录入函数)
voidmanagerluru()(行政人员录入函数)
voidjianzhi1luru()(教师兼职实验员录入函数)
voidjianzhi2luru()(行政人员兼职教师录入函数)
信息查询函数:
voidjiaoshichaxun()(教师查询函数)
voidshiyanyuanchaxun()(实验员查询函数)
voidmanagerchaxun()(行政人员查询函数)
voidjianzhi1chaxun()(教师兼职实验员查询函数)
voidjianzhi2chaxun()(行政人员兼职教师查询函数)
删除信息函数:
voidjiaoshishanchu()(教师删除函数)
voidshiyanyuanshanchu()(实验员删除函数)
voidmanagershanchu()(行政人员删除函数)
voidjianzhi1shanchu()(教师兼职实验员删除函数)
voidjianzhi2shanchu()(行政人员兼职教师删除函数)
包含的类:
classEmployee()classTeacher()classShiyanyuan()
classManager()classJianzhi1()classJianzhi2()
2.2系统功能模块图
(1)主菜单:
图2.1主菜单功能模块图
(2)录入功能:
图2.2信息录入功能模块图
(3)查询功能:
图2.3信息查询功能模块图
(4)删除功能:
图2.4信息删除功能模块图
3.详细设计
3.1程序模块
(1)程序模块组成:
主函数:
intmain()
菜单函数:
voidshow1()(录入菜单函数)
voidshow2()(查询菜单函数)
voidshow3()(删除菜单函数)
voidshow4()(主菜单函数)
信息录入函数:
voidjiaoshiluru()(教师录入函数)
voidshiyanyuanluru()(实验员录入函数)
voidmanagerluru()(行政人员录入函数)
voidjianzhi1luru()(教师兼职实验员录入函数)
voidjianzhi2luru()(行政人员兼职教师录入函数)
信息查询函数:
voidjiaoshichaxun()(教师查询函数)
voidshiyanyuanchaxun()(实验员查询函数)
voidmanagerchaxun()(行政人员查询函数)
voidjianzhi1chaxun()(教师兼职实验员查询函数)
voidjianzhi2chaxun()(行政人员兼职教师查询函数)
删除信息函数:
voidjiaoshishanchu()(教师删除函数)
voidshiyanyuanshanchu()(实验员删除函数)
voidmanagershanchu()(行政人员删除函数)
voidjianzhi1shanchu()(教师兼职实验员删除函数)
voidjianzhi2shanchu()(行政人员兼职教师删除函数)
(2)各函数的主要功能:
a.主函数:
主要用于对其他函数的调用,采用for循环,使用多分支语句。
b.菜单函数:
show1()是录入菜单函数,显示各类职工的录入;show2()是查询菜单函数,显示各类职工的查询;show3()是删除菜单函数,显示各类职工的删除;show4()是主菜单函数,显示登录的页面。
c.信息录入函数:
使用for和多分支语句,调用类的成员函数,实现各类职工信息的录入,并读取到磁盘里,形成文本文件,可从文本文件中查看录入的职工信息。
d.信息查询函数:
使用for和多分支语句,调用类的成员函数,实现各类职工信息的查询,并从磁盘里读取,显示在屏幕上。
e.信息删除函数:
使用for和多分支语句,调用类的成员函数,实现各类职工信息的删除,删除磁盘里用户需要删除的数据。
3.2类层次图
<><><>
<><>
<><>
图3.1类层次图
3.3功能模块实现
(1)主菜单函数
图3.2主菜单函数实现
(2)信息录入函数
图3.3信息录入函数实现
(3)信息查询函数
图3.4信息查询函数实现
(4)信息删除函数
图3.5信息删除函数实现
4.系统调试
4.1进入主页面,如下图所示:
图4.1主菜单
4.2进入信息录入模块,出现下图:
图4.2录入模块
图4.3教师录入
图4.4实验员录入
图4.5行政人员录入
图4.6教师兼职实验员录入
图4.7行政人员兼职教师录入
4.3进入信息查询模块,出现下图:
图4.8信息查询模块
图4.9按编号查询教师
图4.10按姓名查询教师
图4.11按编号查询实验员
图4.12按姓名查询实验员
图4.13按编号查询行政人员
图4.14按姓名查询行政人员
图4.15按编号查询教师兼职实验员
图4.16按姓名查询教师兼职实验员
图4.17按编号查询行政人员兼职教师
图4.18按姓名查询行政人员兼职教师
4.4进入信息删除模块,出现下图:
图4.19信息删除模块
图4.20教师删除
图4.21实验员删除
图4.22行政人员删除
图4.23教师兼职实验员删除
图4.24行政人员兼职教师删除
5.结果分析
5.1设计特点:
在输入信息的时候先选择你要输入的职工类型,然后有提示输入职工的个数,逐个输入即可,在输入过程中,系统会自动将用户输入的信息存储到相应的文件中。
本系统符合设计基本要求,能够实现职工信息的录入、查询、删除等功能,可以从文本文件中查看录入的职工信息,比较方便。
5.2设计不足:
a.各职工的最大人数是固定的,如果超过最大数,需要修改程序里数据,给用户带来麻烦,增加了维护系统成本。
有必要把职工信息存储改为动态申请内存,就不会出现问题。
b.系统不能分辨输入的职工信息相同的情况,在查询职工信息时,会输出职工信息相同数据。
c.此系统没有修改用户信息的功能,只能查询职工信息和删除职工信息。
6.总结
6.1设计总结
(1)通过这次对《高校工资管理系统》的设计,我体会到面向对象程序设计的特点:
多态性、封装性、继承性,并掌握了一定的编程技巧,拓展了思维,提升了自己解决实际问题的能力。
虽然对文件和多态的理解还很肤浅,但是我学到了很多平时学不到的东西。
通过这次课程设计,深深体会到我对很多的专业知识还不了解,还有许多知识需要掌握,在以后的学习中,我需要打好基础,认真对待不同的问题,学会从不同的角度看待问题,争取做得更好。
同时也把我在学这门课程的所存在的弊端暴露出来了,这就促使我要更多的阅读课外书籍,学到更多的专业知识,不断锻炼自己,使自己得到不断的提高。
(2)我要衷心感谢老师和同学们在我的设计过程中给予我的极大帮助,他们给我指出程序中的错误,帮我修改不足,给我讲多文件的创建和使用,不断完善我的设计,使我能够及时、顺利地完成此次的课程设计。
衷心感谢他们的援助,谢谢你们!
!
!
7.附录
7.1头文件
Employee.h(雇员)
classEmployee
{
public:
charname[20];
intnum;
voiddisplay()
{
cout<<"姓名:
";
cin>>name;
cout<<"编号:
";
cin>>num;
}
};
Teacher.h(教师)
externi;
classTeacher:
publicEmployee
{
public:
intscore;
inttime;
Teacher(ints=800){score=s;}
staticvoidjiaoshiluru();
staticvoidjiaoshichaxun();
staticvoidjiaoshishanchu();
voiddisplay1()
{
cout<<"请输入教师的:
";
Employee:
:
display();
cout<<"请输入教师的工作量(课时):
";
cin>>time;
}
};
Teachert[100];
voidTeacher:
:
jiaoshiluru()//教师录入
{
ofstreamoutfile("教师.txt",ios:
:
app);
if(outfile.fail())
{
cout<<"openerror!
"<exit
(1);
}
intb;
cout<<"请选择你要录入教师的个数:
";
cin>>b;
for(i=0;i
{
t[i].display1();
outfile<}
outfile.close();
}
voidTeacher:
:
jiaoshichaxun()//教师查询
{
ifstreaminfile("教师.txt",ios:
:
in);
intk,n,r,bh;
charnam[20];
cout<<"1.按编号查询"<cout<<"2.按姓名查询"<cout<<"请输入您的选择:
";
cin>>r;
if(r==1)
{
cout<<"请输入你要查询教师的编号:
";
cin>>bh;
for(i=0,n=0;i<100;i++)
{
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;
cout<<"教师:
"<}
}
if(n==0)cout<<"没有你要查询的教师。
"<infile.close();
}
if(r==2)
{
cout<<"请输入你要查询教师的名字:
";
cin>>nam;
for(i=0,n=0;i<100;i++)
{
infile>>t[i].num>>t[i].name>>t[i].score>>t[i].time;
if(t[i].num==0)break;
if(strcmp(t[i].name,nam)==0)
{
n++;
k=t[i].score+(t[i].time-120)*20;
cout<<"教师:
"<}
}
if(n==0)cout<<"没有你要查询的教师。
"<infile.close();
}
}
voidTeacher:
:
jiaoshishanchu()//教师删除
{
ifstreaminfile("教师.txt",ios:
:
in);
charnam[20];
cout<<"请输入你要删除教师的名字:
";
cin>>nam;
for(i=0;i<100;i++)
{
infile>>t[i].num>>t[i].name>>t[i].score>>t[i].time;
if(t[i].num==0)break;
if(strcmp(t[i].name,nam)==0)
{
for(intj=i;j<100;j++)
t[j].num=t[j+1].num;strcpy(t[j].name,t[j