您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 高校职工信息与工资管理系统课程设计报告
C++课程设计报告课程:学号:姓名:班级:教师:课程设计任务书姓名班级课程名称高校工资管理系统课程性质C++程序设计设计时间2013年6月25日——2013年7月5日设计名称高校职工信息与工资管理系统设计要求问题的描述(功能要求):高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),若有职工由于工作调动,则可进行相对应的调整动作。设计思路与设计过程本程序设计了6个类,其中Person类为抽象基类,Teacher类、Assistant类、Manager类以Person类为直接基类,Teacher_Assistant类为Teacher类和Assistant类的派生类,Manger_Teacher类为Manager类和Teacher类的派生类,Salary_Management类为Person类的友元类,提供实现管理功能的相应的函数,主要实现职工信息的录入,查询、修改、添加、删除、浏览和退出系统的功能。计划与进度6月末完成题目的分析设计,7月1号完成程序代码的编写,7月4号初步调试工作基本完成。任课教师意见说明课程设计名称:高校工资管理系统1.设计内容:问题的描述(功能要求):高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),若有职工由于工作调动,则可进行相对应的调整动作。相关信息:每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:其中工资的基本构成如下:教师:基本工资+课时费;实验员:基本工资+实验室补助;行政人员:基本工资+行政补贴;教师兼职实验员:基本工资+课时费+实验室补助;行政人员兼职教师:基本工资+行政补贴+课时费;其中:1.课时费:教师每一月的基本工作量为24,实验员每学期基本工作量为0,行政人员没有基本工作量,每节课时费为30元;课时费=(上学期工作量-基本工作量)*30;注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*30为负值。2.基本工资:教师1000元,实验员800元,行政人员900元。3.行政补贴:250元。2.设计目的与要求:2.1设计目的达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的基本思路和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2.2设计要求要求利用面向对象的方法以及C++的编程思想来完成系统的设计;要求在设计的过程中,建立清晰的类层次;在系统的设计中,至少要用到面向对象的一种机制。3.系统分析与设计3.1主要知识点本程序共有三个文件组成,分别是Salary.h,Salary.cpp和main.cpp;Salary.h中定义了程序所需的类,全局函数,以及要用到的标准头文件。用到的知识主要有类的继承与派生,纯虚函数,头文件的组织,链表操作,程序菜单选择和处理函数的组织和编写,文件的读写操作。3.2关键技术程序中每一种数据类型用一个类来实现,共设计了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按职工姓名查找职工记录,FindRecSalary按职工工资查找职工记录,FindRecEducation按职工学历查找职工记录,FindRecAge按职工年龄查找职工记录Load用来从键盘录入职工信息,Build用来从文件读取职工信息,Statistics提供职工信息统计功能,可以实现分别按职工类别、职工工资、要发工资总数、职工人数的统计功能,MenuSelect菜单功能选择函数,显示程序主功能菜单并接收用户的选择,返回用户选择提供给Handle_menu函数,Handle_menu菜单处理函数,用来处理用户的功能选择,并调用相应的功能函数实现用户所要求实现的功能。(8)全局函数duty_to_string函数用来将岗位类别标识转换为相应的名称。print_worktype_menu函数用来显示人员类别选择菜单。dis_mainmenu函数用来选择程序主功能菜单。(9)调用的系统库函数system(pause);//在屏幕上输出:pressanykeytoquit,意思是停留,看程序的输出结果system(cls);清屏(10)头文件说明本程序有一个Salary.h头文件,该头文件包含程序所需包含的标准头文件和定义的类以及全局函数。为了防止头文件重复包含,采用如下格式:#if!defined(宏)#define宏……//头文件具体内容#endif这样可以使源文件中只要包含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临时空间,用infilebufbufDuty;语句先读取职工信息中的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函数来时用户信息的重新赋值。3.3基本功能要求(1)功能选择可以用菜单来实现例如:请
本文标题:高校职工信息与工资管理系统课程设计报告
链接地址:https://www.777doc.com/doc-1025614 .html