c++高校工资管理系统.docx
- 文档编号:30509300
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:25
- 大小:198.89KB
c++高校工资管理系统.docx
《c++高校工资管理系统.docx》由会员分享,可在线阅读,更多相关《c++高校工资管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
c++高校工资管理系统
《C++语言程序设计》课程设计(论文)
题目:
高校工资管理系统
院(系):
专业班级:
学号:
学生姓名:
指导教师:
教师职称:
起止时间:
课程设计(论文)题目
高校工资管理系统
课程设计(论文)任务
(1).掌握面向对象程序设计语言C++的基本语法
(2).掌握C++面向对象设计的思想
(3).掌握VC++6.0与DEVC++开发工具的使用
(4).运用标准C++规范设计应用程序
设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。
正确地完成上述内容,规范完整地撰写出设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
年月日
第1章课程设计目的与要求
1.1课程设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握面向对象程序设计的方法。
(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
1.2课程设计的实验环境
硬件要求能运行Windows操作系统的微机系统。
C++语言应用程序开发软件使用:
VC++系统,或其他C++语言应用程序开发软件。
1.3课程设计的预备知识
熟悉C++语言程序设计的基本知识及VC++编辑器的使用方法。
1.4课程设计要求
1.仔细分析设计题目,画出程序流程图,编写程序源代码。
2.积极上机调试源程序,增强编程技巧与调程能力。
3.认真书写课程设计预习报告,课程设计说明书。
4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容
第2章课程设计内容
2.1C++语言程序设计------《高校工资管理系统》问题分析
这个高校工资管理系统的主要功能是为学校的教职工提供工资查询及银行转帐服务,方便学校财务处工作,提高财务处的服务质量和服务效率。
教职工的个人信息必须经由各部门及人事初及时汇总到财务处,教务处结合后勤部门提供的的有关教职工水电费及个人所得税提交银行,并把信息及时反馈给教职工所在部门方便教职工的查询,最后教职工可以方便、快捷的到银行提取工资或办理各项银行业务。
财务处的服务器的管理员享有对教职工工资信息库银行帐户库的管理与修改。
人事初只享有对教职工个人信息信息库的部分修改(写入与读出)。
系统实现后,提高学校财务处的服务效率。
降低工资发放过程中的错误发生率,减少信息交流的烦琐过程及其带来的开销,最大限度的方便学校教职工。
2.1.1功能分析
问题的描述(功能要求):
高校有五类职工:
教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。
为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),若有职工由于工作调动,则可进行相对应的调整动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
教师:
基本工资+课时费;实验员:
基本工资+实验室补助;行政人员:
基本工资+行政补贴;教师兼职实验员:
基本工资+课时费+实验室补助;行政人员兼职教师:
基本工资+行政补贴+课时费;
1.课时费:
教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;注意:
如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
2.基本工资:
教师800元,实验员650元,行政人员750元。
3.行政补贴:
250元。
2.1.2算法设计及程序设计中技术重点
一、主要知识点:
本程序共有三个文件组成,分别是Salary.h,Salary.cpp和main.cpp;Salary.h中定义了程序所需的类,全局函数,以及要用到的标准头文件。
用到的知识主要有类的继承与派生,纯虚函数,头文件的组织,链表操作,程序菜单选择和处理函数的组织和编写,文件的读写操作。
二、关键技术:
程序中每一种数据类型用一个类来实现,共设计了6个类。
人员类Person,教师类Teacher,实验员类Assistant,行政人员类Manager,教师兼实验员类Teacher_Manager,行政人员兼教师类Manager_Teacher以及工资信息管理类Salary_Management。
每一种类都定义了相应的成员函数。
具体定义如下所示:
1、类Person
类Person为抽象类,为另外五个类的基类,在类Person中,成员变量ID表示职工编号,name表示职工姓名,duty表示岗位类别,salary表示职工工资以及next表示Person类的指针域。
两个input()成员函数,无参成员函数input()为纯虚函数用来从键盘输入职工数据,有参成员函数input(ifstream&infile)用来从文件读入职工数据;两个output()成员函数,无参成员函数output()用来向屏幕输出职工信息,有参成员函数output(ofstream&outfile)向指定文件Salary.txt中输出职工信息以及成员函数incoming()用来计算职工工资。
类中还将将Salary_Management类声明为友员类,将Work_type(intduty)函数声明为友元函数,用来将职工类别标志转换为相应的类别名称,以便显示职工岗位类别名称。
2、类Teacher
类Teacher中,在继承基类数据成员的基础上增加了成员变量hours用来存放教师的上课课时数,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
3、类Assistant
类Assistant中,,在继承基类数据成员的基础上增加了成员变量hours用来存放教师的上课课时数和Allowance用来存放试验室补助,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
4、类Manager
类Manager中,在继承基类数据成员的基础上增加了成员变量Allowance用来存放行政补贴,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
5、类Teacher_Assistant
类Teacher_Assistant以Teacher类和Assistant类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
6、类Manager_Teacher
类Manager_Teacher以Teacher类和Assistant类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
7、类Salary_Management
类Salary_Management用来为管理职工信息提供相关功能函数,有私有数据成员PL是链表的头指针,私有成员函数clear清除所有职工结点,私有成员函数QueryRec用来查询职工记录。
共有成员函数AddRec用来增加职工记录,DelRec用来删除职工记录,Modify用来修改职工记录,display用来显示职工记录,Save用来保存职工信息,FindRecID按职工编号查找职工记录,FindRecName按职工姓名查找职工记录,Load用来从键盘录入职工信息,Build用来从文件读取职工信息,Statistics提供职工信息统计功能,可以实现分别按职工类别、职工工资、要发工资总数、职工人数的统计功能,MenuSelect菜单功能选择函数,显示程序主功能菜单并接收用户的选择,返回用户选择提供给Handle_menu函数,Handle_menu菜单处理函数,用来处理用户的功能选择,并调用相应的功能函数实现用户所要求实现的功能。
8、全局函数
duty_to_string函数用来将岗位类别标识转换为相应的名称。
print_worktype_menu函数用来显示人员类别选择菜单。
dis_mainmenu函数用来选择程序主功能菜单。
9、调用的系统库函数
system("pause"); //在屏幕上输出:
press any key to quit,意思是停留,看程序的输出结果
system("cls"); 清屏
10、头文件说明
本程序有一个Salary.h头文件,该头文件包含程序所需包含的标准头文件和定义的类以及全局函数。
为了防止头文件重复包含,采用如下格式:
#if!
defined(宏)
#define宏
……//头文件具体内容
这样可以使源文件中只要包含Salary.h一个头文件即可,使文件头变得简洁。
11、程序的主要功能函数及相关算法
本程序共定义六个类,分别是Person类、Teacher类、Assistant类、Manager类、Teacher_Assistant类、Manager_Teacher类和Salary_Management类。
Person类为抽象类作为Teacher类、Assistant类和Manager类直接基类。
Teacher_Assistant类以Teacher类和Assistant类作为直接基类,多重继承,Manager_Teacher类以Manager类和Teacher类作为直接基类多重继承。
Salary_Management类是为职工信息管理提供功能函数。
Salary_Management类中主要的成员函数有:
AddRec函数用来提供添加职工信息的功能。
该函数先调用print_worktype_menu函数打印职工类别选择菜单供用户选择,程序再根据用户的不同选择分别调用Teacher类、Assistant类、Manager类、Teacher_Assistant类、Manager_Teacher类的input函数实现添加职工信息。
Build函数的功能是从文件读取职工信息来实现程序的初始化,该函数使用文件指针操作函数tellg和seekg函数来不断调整文件指针,以实现从文件读取职工信息供程序初始化的功能。
再该函数中,先定义buf临时空间,用infile>>buf>>buf>>Duty;语句先读取职工信息中的duty的值,然后在根据duty的值分别调用Teacher类、Assistant类、Manager类、Teacher_Assistant类、Manager_Teacher类的input(ifstream&)函数来实现从文件输入职工信息的功能。
DelRec函数的功能是根据用户输入的编号来删除指定的职工记录。
该函数先调用QueryRec函数查找与用户输入的编号相对应的职工记录,然后从链表中删除对应的结点,实现职工记录的删除,同样也会相应的输出文件中的信息。
display函数的功能是显示所用的职工记录。
Search函数功能是通过调用FindRecID函数和FindRecName函数来实现按职工编号或按姓名来查找相应的职工信息,如果能查找到则输出相应的职工信息,没找到会给出”找不到你要查找的职工信息!
”的提示信息。
该函数具有循环查找功能。
Load函数的功能是录入职工信息。
该函数先要求用户输入要录入的职工数,然后调用print_worktype_menu函数提示用户输入职工的类别,程序再根据用户输入的职工类别duty来调用相应类的input函数实现职工信息的键盘录入功能。
Handle_menu函数的功能是处理用户的功能选择。
该函数通过调用MenuSelect函数获取用户的功能选择序号来给select变量赋值,然后再用switch语句根据select的值调用相应的功能函数来实现用户选择的功能。
Save函数的功能是将职工信息已成功保存到Salary.txt文件中。
Statistics函数的是职工信息的统计。
共提供四种不同方式的统计功能:
(1)统计各职工类别职工的人数
(2)根据用户输入的工资范围统计并输出该范围内的职工信息
(3)统计要发工资总数
(4)统计职工的总人数
Modify函数的功能是修改指定职工的信息;但不能修改职工的类别信息。
函数先要求用户输入要修改的职工编号,然后调用QueryRec函数查找到相应职工的记录,然后调用该职工所属类的input函数来时用户信息的重新赋值。
三、基本功能要求:
1、功能选择可以用菜单来实现
例如请选择您的计算内容:
(1)数据录入
(2)查询职工信息
(3)增加职工记录
(4)删除职工信息
(5)统计职工信息
(6)显示所有信息
(7)退出系统
用户通过输入不同的数字进入不同的菜单。
次级菜单主要显示本程序的功能,主要的功能有录入职工信息、查询信息、添加职工记录、删除职工记录、统计职工信息、显示所有信息。
2、运行时给出明确的提示信息。
比如,在选择主功能菜单是选择范围是(1-8),如果用户输入的选项不在可选择范围之内,程序会给出输入选项不在可选范围之内的提示,并要求用户且知道输入选项在可选范围内才执行相应的功能。
本程序有较友好的用户交互界面,每进入或离开一个功能界面时都会有相应的提示信息,方便用户操作。
2.2程序中涉及的类的UML类图和主要函数流程图或框图
高校工资管理系统系统流程图:
图2.1系统流程图
经过分析可知,WageManageMent的类图如下所示:
1、职工(工资)信息的类图:
图2.2工职信息的类图
2、银行代发的类图:
图2.2银行代发的类图
3、项目显示过滤的类图
图2.3显示过滤的类图
4、所得税的类图:
图2.4显示过滤的类图
5、工资转账的类图:
图2.5工资转账的类图
2.3程序源代码
程序运行时,首先出现主界面菜单,由用户进行功能选择,选择不同的数字,进入不同的功能区。
如图2.6所示。
图2.6程序运行主界面
选择1,则进入职工信息录入界面,如图2.7所示。
图2.7职工信息录入界面
选择2,进行职工信息查询次级菜单,如图2.8所示。
图2.8查询职工信息界面
按8,保存信息并退出管理系统
本程序由一个Salary.h头文件和两个源文件Salary.cpp和main.cpp组成。
各文件的源代码如下:
Salary.h文件代码
#if!
defined(H_Salary_H)
#defineH_Salary_H
#include
#include
#include
#include
usingnamespacestd;
classPerson//人员信息类(抽象基类)
{
public:
virtualvoidinput()=0;//从键盘输入职工数据
virtualvoidinput(ifstream&infile)=0;//从文件读入职工数据
virtualvoidoutput()=0;//向屏幕输出职工信息
virtualvoidoutput(ofstream&outfile)=0;//向指定文件输出职工信息
virtualdoubleincoming()=0;//计算职工收入函数
Person()//Person基类构造函数
{next=0;}//指针赋值为空
virtual~Person(){}
protected:
charname[15];//职工姓名
stringID;//职工编号
intduty;/*岗位类别:
1:
教师2:
实验员3:
行政人员4:
教师兼实验员5:
行政人员兼教师*/
doublesalary;//职工薪水
Person*next;//指针成员
friendboolisexist(stringid);
friendclassSalary_Management;//将Salary_Management类声明为友员类
};
classTeacher:
virtualpublicPerson
{
protected:
inthours;//上学期工作量
public:
Teacher()
{
salary=800;//教师基本工资800元
duty=1;//岗位类别为1
}
voidinput();
voidinput(ifstream&infile);
voidoutput();
voidoutput(ofstream&outfile);
doubleincoming();
};
classAssitant:
virtualpublicPerson
{
public:
Assitant()
{
salary=650;//实验员基本工资650元
duty=2;//岗位类别为2
allowance=150;//实验室补助为150元
};
voidinput();
voidinput(ifstream&infile);
voidoutput();
voidoutput(ofstream&outfile);
doubleincoming();
protected:
inthours;
doubleallowance;
};
classManager:
virtualpublicPerson
{
public:
Manager()
{
salary=750;//行政人员基本工资为750元duty=3;//岗位类别为3
allowance=250;//行政补贴
}
voidinput();
voidinput(ifstream&infile);
voidoutput();
voidoutput(ofstream&outfile);
doubleincoming();
protected:
doubleallowance;//行政补贴
};
classTeacher_Assistant:
publicTeacher,publicAssitant
{
public:
Teacher_Assistant()
{
Teacher:
:
salary=800;//基本工资800元
duty=4;//岗位类别为4
Assitant:
:
allowance=150;//实验室补助150元
}
voidinput();
voidinput(ifstream&infile);
voidoutput();
voidoutput(ofstream&outfile);
doubleincoming();
};
classManager_Teacher:
publicManager,publicTeacher
{
public:
Manager_Teacher()
{
salary=750;//基本工资750元
duty=5;//岗位类别为5
Manager:
:
allowance=250;//行政补贴250元
}
voidinput();
voidinput(ifstream&infile);
voidoutput();
voidoutput(ofstream&outfile);
doubleincoming();
};
classSalary_Management
{
public:
Salary_Management();//构造函数
~Salary_Management();//析构函数
voidAddRec();//增加职工记录
voidDelRec();//删除职工记录
voidModify();//修改职工记录
voiddisplay();//显示职工记录
voidSave();//保存职工信息
voidFindRecID();//按职工编号查找职工记录
voidFindRecName();//按职工姓名查找职工记录
voidLoad();//职工信息装入
voidBuild();//引导
voidStatistics();//职工信息统计
intMenuSelect();//菜单功能选择
voidHandle_menu();//菜单处理函数
private:
Person*PL;//链表头指针
voidclear();//清除所有职工结点,仅保留头结点
boolQueryRec(stringID,Person**p1,Person**p2);//查找职工结点
};
stringWork_type(intduty);
voidprint_worktype_menu();
voiddis_mainmenu();
#endif
Salary.cpp文件中的代码
#include"Salary.h"
voidTeacher:
:
input()//从键盘补充其他数据
{
cout<<"\t编号:
";cin>>ID;
cout<<"\t姓名:
";cin>>name;
cout<<"\t教师上学期课时:
";cin>>hours;
salary=incoming();
}
voidTeacher:
:
input(ifstream&infile)
{
infile>>ID;
infile>>name;
infile>>duty;
infile>>hours>>salary;
}
voidTeacher:
:
output()
{
cout<<"\t编号:
"< cout<<"\t姓名: "< cout<<"\t人员类别: "< cout<<"\t上学期上课课时: "< cout<<"\t工资: "< } voidAssitant: : input() { cout<<"\t编号: ";cin>>ID; cout<<"\t姓名: ";cin>>name; cout<<"\t实验员上学期试验课
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 高校 工资管理 系统