课 程 设 计 报 告
课程名称
课题名称
业
专
级
班
号
学
姓
名
指导教师
面向对象程序设计
高校工资管理系统
通信工程
1301
201303020102
谢稳桩
乔汇东、胡瑛、黄哲
2015 年 1 月 3 日
湖南工程学院
课 程 设 计 任 务 书
课程名称 面向对象程序设计
课
题 高校工资管理系统
专业班级
学生姓名
学
号
指导老师
批
审
通信 1301
谢稳桩
201303020102
乔汇东、胡瑛、黄哲
任务书下达日期 2014 年 12 月 26 日
2015 年 1 月 3 日
任务完成日期
目 录
系统需求分析......................................................................................................................1
总体设计..............................................................................................................................1
详细设计..............................................................................................................................2
系统调试............................................................................................................................ 11
结果分析............................................................................................................................18
总结 ...................................................................................................................................19
源代码................................................................................................................................19
一 、 设 计 内 容 与 设 计 要 求
1.课程设计目的:
面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》
课程后进行的一次全面的综合练习。要求学生达到熟练掌握 C++语言的基本知识和技能;
基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单
的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目
⑴公司考勤管理系统
⑵高校学籍管理系统
⑶高校工资管理系统
⑷高校人事管理系统
⑸文件加密管理系统
3.设计要求:
⑴设计课题题目:第 5 个课题是扩展课题,有能力完成的同学可以选择。
其余每位同学根据自己学号除以 4 所得的余数加一选择相应题号的课题。换题
者不记成绩。
⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系
统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完成
系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块
图)。③完成系统详细设计:包括数据库需求分析;类层次图;界面设计与各
功能模块实现。④系统调试:调试出现的主要问题,编译语法错误及修改,重
点是运行逻辑问题修改和调整。⑤使用说明书及编程体会:说明如何使用你编
写的程序,详细列出每一步的操作步骤。⑥关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4 纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二 、 进 度 安 排
第 周 星期 时:分——时:分
星期 时:分——时:分
星期 时:分——时:分
星期 时:分——时:分
课题 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)完成系统总结报告以及系统使用说明书
湖南工程学院课程设计报告
系统需求分析
我本次的课程设计的题目为设计一个高校工资管理系统,据题目的要求,我察觉到
此次课程设计需要做一个管理系统,即能够从管理系统中录入不同的职工:
1、根据职工工资的组成的不同,需要不同方式输入,再通过相应的程序计算他们
的工资,来实现工资发放;
2、发放完毕则需要删除该职工的记录,所以再设置一个删除功能来实现清除记录
功能;
3、如果职工录入有误或者需要相应的调动,则需要执行修改记录,因此程序还需
要增添一个修改的功能,通过职工的不同编号来实现对指定职工的修改,已满足用户需
求;
4、程序中还设置一个查询功能,通过编号及姓名的查找,来让用户很方便的查看
某一个职工记录,其中还设置了一个查找所有职工的功能,让用户能过很清楚的知道每
一个职工的工资等的情况;
5、为能过长时间保存职工的信息,所以还设计了文件保存功能,这个需要能够按要
求保存数据并且能够在下次启用程序是还能继续使用。
总体设计
开始
1
、
增
加
职
工
2
、
删
除
职
工
3
、
修
改
职
工
4
、
查
询
职
工
5
、
文
件
保
存
6
、
退
出
主菜单中主要有六个功能:分别用于增加职工、删除职工、修改职工、查询职工、
文件保存和退出,在每一级菜单中还设计了分菜单,使用户能够方便操作此工资管理系
统。
1
湖南工程学院课程设计报告
详细设计
需要设计在程序中设置一个基类和五个派生类,分别为:Person(人员类、基类)、
Teacher(教师类)、Assistant(实验员类)、Manager(行政人员类)、Teacher_Assistant
(教师兼实验员类)、Manager_Teacher(行政人员兼教师类);其中教师兼实验员类和行
政人员兼教师类又是与前三个派生类有多继承关系。通过设置不同的类来实现用户对不
同类型人员的操作与调动等,再类的基础上执行相应的操作。我定义的类如下代码:
/****************************人员类基类******************************************/
class Person
{
public:
//人员类
int number;
char Name[30];
double Salary;
virtual void Input(int n)
{
//编号
//姓名
//基本工资
//输入信息
number=n;
cout<<"输入姓名:";cin>>Name;
}
virtual void Output()
{
//输出信息
cout<<"编号:"<>number>>Name;
}
Person(){}
//从文件 f 中导出数据
//从文件读取到编号和姓名
//基类构造函数
};
/********************************教师类*********************************************/
class Teacher:virtual public Person
{
public:
//教师类
int workload;
Teacher()
{
//上学期工作量
//构造函数,初始化部分数据
2