ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:416.06KB ,
资源ID:8720487      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8720487.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验报告 1.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验报告 1.docx

1、实验报告 1 C+课程设计报告题 目: 高校教职工信息及工资管理系统 班 级:采试1301 姓 名: 学 号: 指导教师: 时 间:课程设计任务书姓名班级课程名称高校教职工信息及工资管理系统课程性质C+程序设计设计时间2014年6月25 日2014年7月 5 日设计名称高校职工信息与工资管理系统设计要求问题的描述(功能要求):高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现

2、),若有职工由于工作调动,则可进行相对应的调整动作。设计思路与设计过程本程序设计了6个类,其中Person类为抽象基类,Teacher类、Assistant类、Manager类以Person类为直接基类,Teacher_Assistant类为Teacher类和Assistant类的派生类,Manger_Teacher类为Manager类和Teacher类的派生类,Salary_Management类为Person类的友元类,提供实现管理功能的相应的函数,主要实现职工信息的录入,查询、修改、添加、删除、浏览和退出系统的功能。计划与进度6月末完成题目的分析设计,7月1号完成程序代码的编写,7月4号

3、初步调试工作基本完成。任课教师意见说明课程设计名称: 高校工资管理系统1.设计内容:问题的描述(功能要求):高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),若有职工由于工作调动,则可进行相对应的调整动作。相关信息:每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:其中工资的基本构成

4、如下: 教师: 基本工资+课时费; 实验员: 基本工资+实验室补助; 行政人员: 基本工资+行政补贴; 教师兼职实验员: 基本工资+课时费+实验室补助; 行政人员兼职教师:基本工资+行政补贴+课时费;其中:1.课时费:教师每一月的基本工作量为24,实验员每学期基本工作量为0,行政人员没有基本工作量,每节课时费为30元;课时费=(上学期工作量-基本工作量)*30;注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*30为负值。2.基本工资:教师1000元,实验员800元,行政人员900元。3.行政补贴:250元。2.设计目的与要求:2.1设计目的达到熟练掌握C+语言的基本知识和技

5、能;基本掌握面向对象程序设计的基本思路和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2.2设计要求要求利用面向对象的方法以及C+的编程思想来完成系统的设计;要求在设计的过程中,建立清晰的类层次;在系统的设计中,至少要用到面向对象的一种机制。3.系统分析与设计3.1主要知识点本程序共有三个文件组成,分别是Salary.h, Salary.cpp和main.cpp; Salary.h中定义了程序所需的类,全局函数,以及要用到的标准头文件。用到的知识主要有类的继承与派生,纯虚函数,头文件的组织,链表操作,程序菜单选择和处理函数的组织和编写,文件的读写操作。3.2关键技术程序中

6、每一种数据类型用一个类来实现,共设计了6个类。人员类 Person,教师类Teacher,实验员类Assistant,行政人员类 Manager,教师兼实验员类Teacher_Manager,行政人员兼教师类Manager_Teacher以及工资信息管理类Salary_Management。每一种类都定义了相应的成员函数。具体定义如下所示:(1)类Person类Person为抽象类,为另外五个类的基类,在类Person中,成员变量ID表示职工编号,name表示职工姓名,duty表示岗位类别,salary表示职工工资以及next表示Person类的指针域。两个input()成员函数,无参成员函数

7、input()为纯虚函数用来从键盘输入职工数据,有参成员函数input(ifstream& infile)用来从文件读入职工数据;两个output()成员函数,无参成员函数output()用来向屏幕输出职工信息,有参成员函数output(ofstream& outfile)向指定文件Salary.txt中输出职工信息以及成员函数incoming()用来计算职工工资。类中还将将Salary_Management类声明为友员类,将Work_type(int duty)函数声明为友元函数,用来将职工类别标志转换为相应的类别名称,以便显示职工岗位类别名称。(2)类Teacher类Teacher中,在继

8、承基类数据成员的基础上增加了成员变量hours用来存放教师的上课课时数,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。(3)类Assistant类Assistant中,在继承基类数据成员的基础上增加了成员变量hours用来存放教师的上课课时数和Allowance用来存放试验室补助,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。(4)类Manager类Manager中,在继承基类数据成员的基础上增加了成员变量Allowance用来存放行政

9、补贴,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。(5)类Teacher_Assistant类Teacher_Assistant以Teacher类和Assistant类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。(6)类Manager_Teacher类Manager_Teacher以Teacher类和Assistant类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incomin

10、g()用来计算教师类的人员工资。(7)类Salary_Management类Salary_Management用来为管理职工信息提供相关功能函数,有私有数据成员PL是链表的头指针,私有成员函数clear清除所有职工结点,私有成员函数QueryRec用来查询职工记录。共有成员函数AddRec用来增加职工记录,DelRec用来删除职工记录,Modify用来修改职工记录,display用来显示职工记录,Save用来保存职工信息,FindRecID按职工编号查找职工记录,FindRecName按职工姓名查找职工记录,FindRecSalary按职工工资查找职工记录,FindRecEducation按职

11、工学历查找职工记录,FindRecAge按职工年龄查找职工记录Load用来从键盘录入职工信息,Build用来从文件读取职工信息,Statistics提供职工信息统计功能,可以实现分别按职工类别、职工工资、要发工资总数、职工人数的统计功能,MenuSelect菜单功能选择函数,显示程序主功能菜单并接收用户的选择,返回用户选择提供给Handle_menu函数,Handle_menu菜单处理函数,用来处理用户的功能选择,并调用相应的功能函数实现用户所要求实现的功能。(8)全局函数duty_to_string函数用来将岗位类别标识转换为相应的名称。print_worktype_menu函数用来显示人员

12、类别选择菜单。dis_mainmenu函数用来选择程序主功能菜单。(9)调用的系统库函数system(pause); /在屏幕上输出:press any key to quit,意思是停留,看程序的输出结果system(cls); 清屏 (10)头文件说明本程序有一个Salary.h头文件,该头文件包含程序所需包含的标准头文件和定义的类以及全局函数。为了防止头文件重复包含,采用如下格式:#if !defined (宏)#define 宏 /头文件具体内容#endif这样可以使源文件中只要包含Salary.h一个头文件即可,使文件头变得简洁。(11)程序的主要功能函数及相关算法本程序共定义六个类

13、,分别是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类中主要的成员函数有:

14、AddRec函数用来提供添加职工信息的功能。该函数先调用print_worktype_menu函数打印职工类别选择菜单供用户选择,程序再根据用户的不同选择分别调用Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类的input函数实现添加职工信息。Build函数的功能是从文件读取职工信息来实现程序的初始化,该函数使用文件指针操作函数tellg和seekg函数来不断调整文件指针,以实现从文件读取职工信息供程序初始化的功能。再该函数中,先定义buf临时空间,用infilebufbufDuty;语句先读取职工信息中的du

15、ty的值,然后在根据duty的值分别调用Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类的input(ifstream&)函数来实现从文件输入职工信息的功能。DelRec函数的功能是根据用户输入的编号来删除指定的职工记录。该函数先调用QueryRec函数查找与用户输入的编号相对应的职工记录,然后从链表中删除对应的结点,实现职工记录的删除,同样也会相应的输出文件中的信息。display函数的功能是显示所用的职工记录。Search函数功能是通过调用FindRecID函数和FindRecName函数来实现按职工编号或

16、按姓名来查找相应的职工信息,如果能查找到则输出相应的职工信息,没找到会给出”找不到你要查找的职工信息!”的提示信息。该函数具有循环查找功能。Load函数的功能是录入职工信息。该函数先要求用户输入要录入的职工数,然后调用print_worktype_menu函数提示用户输入职工的类别,程序再根据用户输入的职工类别duty来调用相应类的input函数实现职工信息的键盘录入功能。Handle_menu函数的功能是处理用户的功能选择。该函数通过调用MenuSelect函数获取用户的功能选择序号来给select变量赋值,然后再用switch语句根据select的值调用相应的功能函数来实现用户选择的功能。

17、Save函数的功能是将职工信息已成功保存到Salary.txt文件中。Statistics函数的是职工信息的统计。共提供四种不同方式的统计功能:1、统计各职工类别职工的人数2、根据用户输入的工资范围统计并输出该范围内的职工信息3、统计要发工资总数4、统计职工的总人数Modify函数的功能是修改指定职工的信息;但不能修改职工的类别信息。函数先要求用户输入要修改的职工编号,然后调用QueryRec函数查找到相应职工的记录,然后调用该职工所属类的input函数来时用户信息的重新赋值。3.3基本功能要求(1)功能选择可以用菜单来实现例如:请选择您的计算内容:1、 职工信息录入2、 查询职工信息3、 修

18、改职工信息4、 增加职工记录5、 删除职工信息6、 统计职工信息7、 浏览所有信息8、 退出系统用户通过输入不同的数字进入不同的菜单。次级菜单主要显示本程序的功能,主要的功能有录入职工信息、查询职工信息、添加职工记录、删除职工记录、统计职工信息、浏览职工信息。(2)运行时给出明确的提示信息。比如,在选择主功能菜单是选择范围是(1-8),如果用户输入的选项不在可选择范围之内,程序会给出输入选项不在可选范围之内的提示,并要求用户且知道输入选项在可选范围内才执行相应的功能。本程序有较友好的用户交互界面,每进入或离开一个功能界面时都会有相应的提示信息,方便用户操作。4.系统总体设计(确定程序功能模块)

19、本程序的类继承关系如1所示:Salary_Management类中成员函数调用关系如图所示:main函数图2、Salary_Management类中成员函数调用关系图5、程序文件组成及各文件中的源代码(1)头文件:#if !defined (H_Salary_H)#define H_Salary_H#include#include#include#includeusingnamespace std;class Person /人员信息类(抽象基类)public: virtualvoid input()=0; /从键盘输入职工数据 virtualvoid input(ifstream& infi

20、le)=0; /从文件读入职工数据 virtualvoid output()=0; /向屏幕输出职工信息 virtualvoid output(ofstream& outfile)=0; /向指定文件输出职工信息 virtualdouble incoming()=0; / 计算职工收入函数 Person() /Person基类构造函数 next=0; /指针赋值为空 virtual Person()protected: char name15; /职工姓名 string ID; /职工编号int duty; /*岗位类别:1:教师 2:实验员 3:行政人员 4:教师兼实验员 5:行政人员兼教师

21、*/ char address150 ; string phone; char education50; /a;学士 b;硕士 c;博士 char sex10; int age; double salary; /职工薪水 Person *next; /指针成员friendbool isexist(string id);friendclass Salary_Management; /将Salary_Management类声明为友员类;class Teacher :virtualpublic Personprotected:int hours; /上学期工作量public: Teacher() s

22、alary=1000; /教师基本工资1000元 duty=1; /岗位类别为1 void input(); void input(ifstream& infile); void output(); void output(ofstream& outfile); double incoming();class Assitant :virtualpublic Personpublic: Assitant() salary=800; /实验员基本工资800元 duty=2; /岗位类别为2 allowance=150; /实验室补助为150元 ; void input(); void input(

23、ifstream& infile); void output(); void output(ofstream& outfile); double incoming();protected:int hours; double allowance;class Manager :virtualpublic Personpublic: Manager() salary=900; /行政人员基本工资为900元 duty=3; /岗位类别为3 allowance=250; /行政补贴 void input();void input(ifstream& infile);void output();void

24、output(ofstream& outfile);double incoming();protected: double allowance; /行政补贴;class Teacher_Assistant : public Teacher,public Assitantpublic: Teacher_Assistant() Teacher:salary=1000; /基本工资1000元 duty=4; /岗位类别为4 Assitant:allowance=150; /实验室补助150元 void input(); void input(ifstream& infile); void outpu

25、t(); void output(ofstream& outfile); double incoming();class Manager_Teacher :public Manager,public Teacherpublic: Manager_Teacher() salary=900; /基本工资900元 duty=5; /岗位类别为5 Manager:allowance=250; /行政补贴250元 void input(); void input(ifstream& infile); void output(); void output(ofstream& outfile); doubl

26、e incoming();class Salary_Managementpublic: Salary_Management(); /构造函数 Salary_Management(); /析构函数 void AddRec(); /增加职工记录 void DelRec(); /删除职工记录 void Modify(); /修改职工记录 void display(); /显示职工记录 void Save(); /保存职工信息 void FindRecID(); /按职工编号查找职工记录 void FindRecName();/按职工姓名查找职工记录 void FindRecAge(); void F

27、indRecEducation(); void FindRecSalary(); void Load(); /职工信息装入 void Build(); /引导 void Statistics(); /职工信息统计 int MenuSelect(); /菜单功能选择 void Handle_menu(); /菜单处理函数 private: Person *PL; /链表头指针 void clear(); /清除所有职工结点,仅保留头结点bool QueryRec(string ID,Person* p1,Person* p2 ); /查找职工结点;string Work_type(int dut

28、y);void print_worktype_menu();void dis_mainmenu();#endif(2)源文件:#include高校职工信息与工资管理系统.hvoid Teacher:input() /从键盘补充其他数据 coutID; coutname; coutsex; coutage; couteducation; coutaddress; coutphone; couthours;salary=incoming();void Teacher:input(ifstream& infile) infileID; infilesex; infileage; infileeduc

29、ation; infilename; infileaddress; infilephone; infileduty; infilehourssalary;void Teacher:output() coutt编号: IDendl; coutt姓名: nameendl; coutt性别: sexendl; coutt年龄: ageendl; coutt学历:educationendl; coutt地址:addressendl; coutt电话:phoneendl; coutt人员类别: Work_type(duty)endl; coutt上学期上课课时: hoursendl; coutt工资: salary 元endl; void Teacher:output(ofstream& outfile) outfileIDtnametsextageteducationtaddresstphonetdutythou

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1