《程序设计基础实践报告》由会员分享,可在线阅读,更多相关《程序设计基础实践报告(41页珍藏版)》请在金锄头文库上搜索。
1、中南大学程序设计基础实践报告 题 目 职工工资信息管理系统 学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 完成时间 2014.7.3 指导教师 汪杰 / 文档可自由编辑打印目 录一、课程设计目的和要求. 二、课程设计基本内容.三、程序功能简介. 四、主体内容. 4.1 设计分析. 4.2 程序结构. 4.3 模块的功能及程序说明. 4.4 相关模块源程序. 4.5 操作方法(流程). 4.6 试验结果(包括输入数据和输出结果). 4.7 设计体会. 4.8 参考文献.五、用户使用说明. 六、对本设计过程及方法、手段的改进建议.一、 课程设计的目的和要求本次课程设
2、计,是基于“面向对象编程(C+)”课程学习内容的重要实践环节,其主要目的在于通过综合程序课程设计,培养和提高学生的独立分析问题、解决实际问题的能力和计算机语言编程能力。本次课程设计时间为2周,要求每位同学在为期两周的时间段内,在编程环境下,用面向对象程序设计思想进行C+程序设计、功能模块调试,在正确、合理的软件功能规划的基础上,实现公用接口与私有实现的分离,独立完成相关设计题所规定的任务、进行课程设计报告编写与整理。而且也是为了培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。对掌握知识的深度、运用理论去处理问题的能力、实验能力、
3、课程设计能力、书面及口头表达能力进行考核。课程设计结束时,要求进行设计成果演示(由指导老师验收相关程序运行成果并打分);每人须对相关电子文档进行整理上交(包括:程序文件、帮助说明文档);交课程设计报告一份(纸质打印稿)。二、课程设计的内容设计一个职工信息管理案例,实现不同类别职工的工资数据。职工的种类包括:正式职工和临时工。定义一个基本的职工类,基本信息包括:编号、姓名、性别、年龄、家庭住址、基本职务工资。派生出正式职工类,增加的属性包括:岗位津贴、养老金、住房公积金、所得税、医疗保险、实发工资;临时工增加的属性包括:奖金、所得税、实发工资。1.正式职工:实发工资=基本职务工资+岗位津贴-养老
4、金-住房公积金-所得税-医疗保险;2.临时工:实发工资=基本职务工资+奖金-所得税;基本功能与技术要求1、 数据文件管理功能:利用输入输出流创建新文件、打开文件、保存文件。2、计算与统计功能:采用静态数据成员与成员函数完成记录中相关数据的统计;1)能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:工资总额、平均值)2)计算每个职工的实发工资。3、记录管理功能:利用继承与派生思想创建不同的类;记录的管理采用链表或者指针数组实现;采用抽象类、虚函数等实现对象与函数的动态关联,体现多态性。1)输入添加/插入记录:利用重载运算符“”完成对任意一条记录输入、添加或插入数据
5、表中,并保存到数据文件中。2)查询、显示记录:能够打开已存在的数据表文件,根据用户要求按所给记录关键字查询一个或多个相关联记录的各项信息。利用重载运算符“”输出个对象的信息。3)修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。4)删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。三、程序功能简介 数据文件管理功能:利用输入输出流创建新文件、打开文件、保存文件。 计算与统计功能:用静态数据成员与成员函数完成记
6、录中相关数据的统计; 记录管理功能:实现输入,插入,删除,恢复等功能。四、主体内容4.1 设计分析 设置基本类staff,并由此派生出正式职工类formal和临时工类casual.由于在派生类中都要用到同名的同功能函数,所以在基类中定义了虚函数,以实现对象与函数的动态关联。 在整个程序中定义了三个函数string InputNormalInfo(istream &input,string tip, char type);(用于直到输入正确类型的数据才返回)void SaveTo & *s);(用于保存信息到指定文件)void ReadFrom & *s);(用于从文件读取信息),InputNo
7、rmalInfo函数用于对测试过程中一些由输入错误引起的错误的纠正。 最后在主函数中用SWITCH语句实现了对文件,信息的相关操作。为了体现C+工程性的特点,本程序中的类,函数单独作为头文件和CPP文件,最后在主程序中调用即可。即为了实现面向对象中的公用借口与私有实现的分离。4.2 程序结构 职工工资管理系统 类模块 主函数 模块函数模块 职 工 信 息 恢 复 模 块 职 工 信 息 删 除 模 块 职 工 信 息 统 计 关 键 字 模 块 职 工 信 息 插 入 模 块 职 工 信 息 查 询 模 块 职 工 信 息 文 件 模 块 职 工 信 息 输 入 模 块4.3 各模块的功能及程
8、序说明a. 函数模块(作为三个头文件)string InputNormalInfo(istream &input,string tip, char type);用于直到输入正确类型的数据才返回。执行过程中用户可能会由于不小心输入错误,而是系统终止运行,系统就会出错。用这个函数检查用户的输入是否正确,提高程序的可行性。void SaveTo & *s);用于保存信息到指定文件。此函数执行对职工数据的保存。void ReadFrom & *s);用于从文件读取信息。b.主函数模块(作为最终的主程序)创建主菜单界面,以供用户选择。用SWITCH语句和链表实现相关操作。职工信息文件模块:case 1:
9、(新建) case 2:(打开) case 3:(保存) case 4:(另存为)职工信息输入模块:case 5:(输入信息)职工信息插入模块:case 6:(插入信息)职工信息显示模块:case 7:(显示信息)职工信息查询模块: case 8:(查询信息)职工信息统计关键字模块: case 9:(统计关键字(工资总额,平均值))职工信息删除模块: case a:(删除信息)职工信息恢复模块:case b:(恢复信息)退出系统模块:case q:(退出程序)c.类模块(每个类作为一个头文件,类的函数作为cpp文件)staff基本职工类:class staff定义了职工的基本信息,数据包括编号
10、,姓名,年龄等。设置输入输出重载友元函数,计算工资的虚函数。formal正式职工类:class formal:public class staff增加正式职工的其他数据,比如保险之类的。明确定义计算工资函数casual临时工类:class casual:public class staff增加临时工的附加信息。明确定义计算工资函数。4.4 相关模块源程序a.函数模块InputNormalInfo函数cpp文件源程序#includestaff.h#includeformal.h#includecasual.hstring InputNormalInfo(istream &input, strin
11、g tip, char type)/用于直到输入正确类型的数据才返回string str;/临时变量while (1)bool wrong = false;/记录是否输入错误cout tip;if (INT = type)cout (请输入整数);else if (DECIMAL = type)cout (请输入小数或整数);cout.put(:);getline(input, str);if (INT = type)/整数for (auto iter = str.cbegin(); iter != str.cend(); iter+)/使用迭代器检查是否输入的都是整数if (!isdigit(*iter)/不是数字wrong = true;break;else if (DECIMAL = type)/小数bool point = false;/记录是否已经读取到小数点for (auto iter = str.cbegin(); iter != str.cend(); iter+)/使用迭代器检查是否输入的是小数if (!isdigit(*iter)/不是数字if (. = *iter & !point) /第一次读取到小数点