实验报告修改文档格式.docx
- 文档编号:4757328
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:15
- 大小:392.43KB
实验报告修改文档格式.docx
《实验报告修改文档格式.docx》由会员分享,可在线阅读,更多相关《实验报告修改文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
五、主要流程图4
六、实验结果展示6
七、设计体会10
八、参考文献11
附录:
源程序代码1
一、程序设计目的与要求
1.1目的
达到熟练掌握C++语言的基本知识和技能;
基本掌握面向对象程序设计的基本思路和方法;
能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
1.2要求
要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
要求在设计的过程中,建立清晰的类层次;
在系统的设计中,至少要用到面向对象的一种机制。
二、程序功能介绍
功能选择可以用菜单来实现
例如:
请选择您的计算内容:
1、职工信息录入
2、查询职工信息
3、修改职工信息
4、增加职工记录
5、删除职工信息
6、统计职工信息
7、浏览所有信息
8、退出系统
用户通过输入不同的数字进入不同的菜单。
次级菜单主要显示本程序的功能,主要的功能有录入职工信息、查询职工信息、添加职工记录、删除职工记录、统计职工信息、浏览职工信息。
二、运行时给出明确的提示信息。
比如,在选择主功能菜单是选择范围是(1-8),如果用户输入的选项不在可选择范围之内,程序会给出输入选项不在可选范围之内的提示,并要求用户且知道输入选项在可选范围内才执行相应的功能。
本程序有较友好的用户交互界面,每进入或离开一个功能界面时都会有相应的提示信息,方便用户操作。
三、设计内容:
问题的描述(功能要求):
高校有五类职工:
教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。
为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),若有职工由于工作调动,则可进行相对应的调整动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师:
基本工资+课时费;
实验员:
基本工资+实验室补助;
行政人员:
基本工资+行政补贴;
教师兼职实验员:
基本工资+课时费+实验室补助;
行政人员兼职教师:
基本工资+行政补贴+课时费;
其中:
1.课时费:
教师每一月的基本工作量为24,实验员每学期基本工作量为0,行政人员没有基本工作量,每节课时费为30元;
课时费=(上学期工作量-基本工作量)*30;
注意:
如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*30为负值。
2.基本工资:
教师1000元,实验员800元,行政人员900元。
3.行政补贴:
250元。
四、系统分析与设计
4.1、主要知识点
全局函数,以及要用到的标准头文件。
用到的知识主要有类的继承与派生,纯虚函数,头文件的组织,链表操作,程序菜单选择和处理函数的组织和编写,文件的读写操作。
4.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"
);
//在屏幕上输出:
press
any
key
to
quit,意思是停留,看程序的输出结果
cls"
清屏
(10)程序的主要功能函数及相关算法
本程序共定义六个类,分别是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>
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函数来时用户信息的重新赋值。
五、主要流程图
Salary_Management类中成员函数调用关系如图所示:
main函数
图2、Salary_Management类中成员函数调用关系图
六、实验结果展示
图1:
录入职工信息
图2:
图3:
查询职工信息
图4:
修改职工信息
图5:
增加职工
图6:
删除职工信息
图7:
统计职工信息
图8:
浏览职工信息
七.设计体会
试验过程中出现了很多令人意想不到的问题,首先就是拿到问题不知该如何分析问题,可以说没啥思路。
但是决不能因此就轻易放弃,于是我就上网搜集相关问题的资料,很幸运,找到了相同问题的答案。
但是有了答案不等于我就不必花时间去编代码了,我应该做的是学习答案中的编程思想,弄懂答案中的每行代码。
抱着这种正确的态度,我开始认真体会他人的解题思路。
后在将这些思想融入自己的解题分析过程中。
我花了整整两天的时间才完成代码的编写。
我之前认为编写完代码,问题不就解决了吗?
情况不如我想的那么简单,下面还有很多的事情没完成。
其中调试程序就是一项很艰苦的工作,由于程序刚开始能实现的功能很少而且程序界面也缺少良好的用户交互性。
随着代码量的增加,我感觉到程序调试变得越来越困难,由于实验课上没有接触到更多的程序调试方面的操作方法,如今也只能自己摸索了。
但最终还是没能掌握调试方法,我只感觉到C++的编程工具非常强大,自己的专业知识真是太肤浅,要学习的东西还有很多很多。
我编写的代码足足将近1000多行,这对我来说可是前所未有呀!
这都是因为扩充功能和改善交互界面的结果。
此外,经过联想我得出另外一条语句system(“pause”);
作用是:
在屏幕上输出“按任意键继续……”,并使程序暂停执行,等候用户做出响应,这个命令我主要用在输出结果时,使程序暂停,以便用户查看输出结果。
还有的较为困难问题是关于链表的操作,由于上学期这方面的知识掌握的不是很牢靠,只能把上学期的书拿过来再温习一下。
另一个较困难的问题是关于文件的操作。
我的问题是只能使程序往文件中存放数据,但我想添加的想从文件中读取的功能没能实现。
本程序可扩展的功能:
统计职工信息功能(已实现);
从文件读取数据(已实现)
在输出数据时选择保存文件名称及保存路径功能(没能实现);
从文件输入数据时,姓名读写支持带空格的名字输入功能(没能实现)……
通过这次课程设计,说实在,感觉与软件开发人员的水平还相差深远,自己的水平还很差,要学的编程知识还很多。
编程不是件容易的事情。
不过,我想通过付出辛勤的劳动,成为编程高手是不会遥不可及的。
我会为此付出必要的劳动,但我认为我还需要不断的努力。
八.参考书目
【1】《C程序设计》清华大学出版社谭浩强
【2】《C++教程》人民邮电出版社郑莉
【3】《VisualC++使用速成》清华大学出版社沈纪新
【4】MSDN
九、程序文件组成及各文件中的源代码
设计成绩:
教师签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告 修改
![提示](https://static.bingdoc.com/images/bang_tan.gif)