程序设计基础实践报告Word文档格式.docx
- 文档编号:14261705
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:38
- 大小:279.81KB
程序设计基础实践报告Word文档格式.docx
《程序设计基础实践报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计基础实践报告Word文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
课程设计结束时,要求进行设计成果演示(由指导老师验收相关程序运行成果并打分);
每人须对相关电子文档进行整理上交(包括:
程序文件、帮助说明文档);
交课程设计报告一份(纸质打印稿)。
二、课程设计的内容
设计一个职工信息管理案例,实现不同类别职工的工资数据。
职工的种类包括:
正式职工和临时工。
定义一个基本的职工类,基本信息包括:
编号、姓名、性别、年龄、家庭住址、基本职务工资。
派生出正式职工类,增加的属性包括:
岗位津贴、养老金、住房公积金、所得税、医疗保险、实发工资;
临时工增加的属性包括:
奖金、所得税、实发工资。
1.正式职工:
实发工资=基本职务工资+岗位津贴-养老金-住房公积金-所得税-医疗保险;
2.临时工:
实发工资=基本职务工资+奖金-所得税;
基本功能及技术要求
1、数据文件管理功能:
利用输入输出流创建新文件、打开文件、保存文件。
2、计算及统计功能:
采用静态数据成员及成员函数完成记录中相关数据的统计;
1)能够打开已存在的数据表文件,对数据表中及某关键字匹配的相关记录进行数据统计(包括:
工资总额、平均值)
2)计算每个职工的实发工资。
3、记录管理功能:
利用继承及派生思想创建不同的类;
记录的管理采用链表或者指针数组实现;
采用抽象类、虚函数等实现对象及函数的动态关联,体现多态性。
1)输入/添加/插入记录:
利用重载运算符“>
>
”完成对任意一条记录输入、添加或插入数据表中,并保存到数据文件中。
2)查询、显示记录:
能够打开已存在的数据表文件,根据用户要求按所给记录关键字查询一个或多个相关联记录的各项信息。
利用重载运算符“<
<
”输出个对象的信息。
3)修改记录:
能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。
4)删除记录:
能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。
数据文件管理功能:
计算及统计功能:
用静态数据成员及成员函数完成记录中相关数据的统计;
记录管理功能:
实现输入,插入,删除,恢复等功能。
四、主体内容
4.1设计分析
设置基本类staff,并由此派生出正式职工类formal和临时工类casual.由于在派生类中都要用到同名的同功能函数,所以在基类中定义了虚函数,以实现对象及函数的动态关联。
在整个程序中定义了三个函数stringInputNormalInfo(istream&
input,stringtip,chartype);
(用于直到输入正确类型的数据才返回)voidSaveToFile(fstream&
file,staff*s);
(用于保存信息到指定文件)voidReadFromFile(fstream&
file,staff**s);
(用于从文件读取信息),InputNormalInfo函数用于对测试过程中一些由输入错误引起的错误的纠正。
最后在主函数中用SWITCH语句实现了对文件,信息的相关操作。
为了体现C++工程性的特点,本程序中的类,函数单独作为头文件和CPP文件,最后在主程序中调用即可。
即为了实现面向对象中的公用借口及私有实现的分离。
4.2程序结构
4.3各模块的功能及程序说明
a.函数模块(作为三个头文件)
①stringInputNormalInfo(istream&
input,stringtip,chartype);
用于直到输入正确类型的数据才返回。
执行过程中用户可能会由于不小心输入错误,而是系统终止运行,系统就会出错。
用这个函数检查用户的输入是否正确,提高程序的可行性。
②voidSaveToFile(fstream&
file,staff*s);
用于保存信息到指定文件。
此函数执行对职工数据的保存。
③voidReadFromFile(fstream&
用于从文件读取信息。
b.主函数模块(作为最终的主程序)
创建主菜单界面,以供用户选择。
用SWITCH语句和链表实现相关操作。
①职工信息文件模块:
case'
1'
:
(新建)
case'
2'
(打开)
3'
(保存)
4'
(另存为)
②职工信息输入模块:
5'
(输入信息)
③职工信息插入模块:
6'
(插入信息)
④职工信息显示模块:
7'
(显示信息)
⑤职工信息查询模块:
8'
(查询信息)
⑥职工信息统计关键字模块:
9'
(统计关键字(工资总额,平均值))
⑦职工信息删除模块:
a'
(删除信息)
⑧职工信息恢复模块:
b'
(恢复信息)
⑨退出系统模块:
q'
(退出程序)
c.类模块(每个类作为一个头文件,类的函数作为cpp文件)
①staff基本职工类:
classstaff{}定义了职工的基本信息,数据包括编号,姓名,年龄等。
设置输入输出重载友元函数,计算工资的虚函数。
②formal正式职工类:
classformal:
publicclassstaff{}增加正式职工的其他数据,比如保险之类的。
明确定义计算工资函数
③casual临时工类:
classcasual:
publicclassstaff{}增加临时工的附加信息。
明确定义计算工资函数。
4.4相关模块源程序
a.函数模块
①InputNormalInfo函数cpp文件源程序
#include"
staff.h"
formal.h"
casual.h"
stringInputNormalInfo(istream&
input,stringtip,chartype)//用于直到输入正确类型的数据才返回
{
stringstr;
//临时变量
while
(1)
{
boolwrong=false;
//记录是否输入错误
cout<
tip;
if(INT==type)
cout<
"
(请输入整数)"
;
elseif(DECIMAL==type)
(请输入小数或整数)"
cout.put('
'
);
getline(input,str);
if(INT==type)//整数
{
for(autoiter=str.cbegin();
iter!
=str.cend();
iter++)//使用迭代器检查是否输入的都是整数
{
if(!
isdigit(*iter))//不是数字
{
wrong=true;
break;
}
}
}
elseif(DECIMAL==type)//小数
boolpoint=false;
//记录是否已经读取到小数点
iter++)//使用迭代器检查是否输入的是小数
if('
.'
==*iter&
&
!
point)//第一次读取到小数点
{
point=true;
//已经读取小数点
continue;
}
//否则输入错误
//判断输入是否错误
if(!
wrong)
returnstr;
}
}
②SaveToFile函数cpp文件源程序
voidSaveToFile(fstream&
file,staff*s)//用于保存信息到指定文件
if(&
file==&
cout)
staff*p=s;
while(p)
*p<
'
\n'
p=p->
next;
else
fstreamtemp;
temp.open(path,ios:
out);
temp<
temp.close();
③ReadFromFile函数cpp文件源程序
voidReadFromFile(fstream&
file,staff**s)//用于从文件读取信息
file.seekg(0,ios:
beg);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 实践 报告