资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统的设计专业班级:电子信息工程学号:姓名:指导教师: 时 间:2013.7.12013.7.62013年7月目录一、 实习内容1二、 设计思路2三、 程序调试过程中典型问题及解决方法4四、 运行结果5五、 程序使用说明12六、 心得体会及课程改进设想12程序设计实习报告备注:页码根据目录的实际页码进行标注一、实习内容1.1、课程设计的目的 此次课程设计的目的是以程序设计语言(C/C+)为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。通过设计一个简单的小型公司工资管理系统,进一步熟悉C+中类的概念、类的封装、继承和多态的实现方式。了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。1.2、设计题目及要求1 题目:小型公司工资关系系统设计2 设计说明与要求 (1) 公司主要有4类人员:经理、技术员、销售员、销售经理。要求储存这些人的职工号姓名、月工资、年龄、性别等信息。 (2) 工资的计算方法A、经理:固定月薪为8000元;B、技术员:工作时间小时工资(100元每小时);C、销售员:销售额4%提成;D、销售经理:底薪(5000元)+所辖部门销售额总额0.5%;(3) 类的层次结构大体如下:雇员类 技术员类销售员类经理类销售经理类 (4) 输入员工基本数据,要求每类人员不能少于4人,员工信息输出格式参考运行效果。 (5) 实现功能 应用程序中要有菜单,用于选择各种功能,其中 数据输入:输入各种数据; 数据统计:统计各种销售经理下属销售员的销售额及限售额之和;销售经理按工资进行的冒泡排序; 数据打印:打印各类员工的数据信息; 数据备份:把各类员工的数据星系写入文件中保存; 推出本系统; (6) 菜单说明 数据录入指通过键盘输入各类员工的各项数据; 数据统计指统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行冒泡法排序; 数据打印指按照表格的格式在屏幕上输出个员工的信息; 数据备份指将所有员工的信息保存到文件; 退出:结束程序的运行。 (7) 注意一个销售经理管辖多个销售员。 (8) 其他功能可以自己扩充(扩充的功能若比较合理可适当加分)。 (9) 要求在控制台下完成(显示内容都在黑屏下显示)。二、设计思路1、程序应实现的功能,有数据输入,数据统计,数据打印,数据备份和退出系统5个。2、考虑各种数据类型还有所需的C+内的函数,要引用 这四个头文件。用其setw(n)设置其后输出数据的宽度为n位,便于表格的制作。用于数据备份,使用时,先用ofstream outfile(即定义ofstream类对象outfile)。3、outfile.open(小型公司工资管理系统.txt,ios:out);打开磁盘流文件,并且对备份文件进行命名,同时确定存储位置。4、首先定义一个employee的雇员基类,然后得到technician、manager、seller三个分别为技术员类,经理类,销售员类的派生类,再由manager派生出销售经理类salesmanager。每个类中的数据成员都是protected型的,成员函数都是public型的,所有的继承都是公有继承,基类中定义有数据输入函数,各派生类中有由基类继承过来的不同的数据输入函数。5、然后定义各功能的函数,如f1()、f2()、begin()等。4、数据统计、打印以及备份都以表格形式输出。表格通过制表符进行设计。表头表中表尾还有分隔符均单独定义成void 型的函数。如:void begin()coutendl;cout 职工号 姓名 性别 年龄 工资 endl;void middle()coutendl;。6、因为类中成员都是保护类型的,所以要定义属于各类的返回成员值的函数,如rshuyu ()、rnum ()等,在后面统计、打印时会用到。7、在进行销售经理的数据输出时,考虑其与销售员之间所属关系,定义全局数组double wagen4单独存放销售经理的工资,排序时通过if语句先判断所属关系,再进行冒泡法排序,这是要用到双重循环。8、main函数里定义了四个对象数组,technician tn1、manager mn2、seller sn3、salesmanager man4,其中n1、n2、n3、n4都是全局常变量,分别代表技术员、经理、销售员、销售经理的人数,便于程序修改。9、整个程序由主函数的一个for循环控制,根据输入的操作选项通过一个switch语句判断该进行什么操作,每一个case后面对应一个函数,每个函数对应一个操作,1对应数据输入,2对应数据统计,3对应数据打印,4对应数据备份,5对应退出系统。10、case 中调用四个带参数的函数f3(t,m,s,ma)、statistics(t,m,s,ma)、print(t,m,s,ma)、beifen(t,m,s,ma)。四个函数均用了四个循环语句分别进行输入、统计、打印、备份。如输入中的一个:for(i=0;in1;i+)ti.input();input()这类函数在各个类中定义,并且同名,这样能简化程序。3、 程序调试过程中典型问题及解决方法1、 第一天和第二天是完成总体设计及数据输入功能及调试。共有三个问题需要注意:第一是,成员函数要设计成protected。第二,销售经理是经理的派生类,而不是雇员类的派生,要注意。第三,f3(technician t,manager m,seller s,salesmanager ma)是一个带有参数的函数,后面调用时也要给参数,如f3(t,m,s,ma)。2、 第三天要求完成数据统计及排序功能。这次问题比较多:第一,要在基类及派生类中加入具有返回值的函数,如返回姓名、性别等,数据打印的时候也会用到。第二,计算销售经理的工资时要先找到与其对应的销售员才可计算,还有,销售经理的工资要求用冒泡法进行排序,也要熟练掌握冒泡法。第三,int money4=0,0,0,0是对四个经理所对应的总销售额惊醒初始化为0,若不进行初始化,得到的是随机值。要用setw(n)控制宽度,使表格对齐。3、 第四天完成程序输出显示及退出系统等操作,退出系统之前还要进行数据备份。ofstream outfile;和outfile.open(小型公司工资管理系统.txt,ios:out);两句是完成备份的关键,第一句是定义ofstream类对象outfile,第二句是打开磁盘流文件。备份时不能用cout,要用outfile,才能将文件备份成功。因为循环设定的次数为100次,所以判断玩是否退出系统后,如果是退出系统,要用exit(0)结束。4、 总体的问题就是要注意符号的运用,不要把分好达成冒号,也不要漏加大括号,做到各方面的细心,才可以变出最好的程序。四、运行结果五、程序使用说明1、看到菜单后,屏幕上有提示“请选择一个操作:”,用户首先输入1进行数据输入;2、输入1后,会逐项显示所要输入的成员信息,按顺序输入即可;3、数据输入完以后,会返回菜单由用户重新选择其他操作,包括数据统计,数据打印和数据备份,最后还有退出系统的选项;4、如果输入2,则进行数据统计,会在屏幕显示各个销售经理下属销售员的业绩,还有对销售经理按工资从高到低进行排序;5、如果输入3,则进行数据打印,屏幕会显示各类成员的基本信息,包括编号、姓名、性别、年龄、工资,销售员的还有其所属部门经理的编号;6、如果输入4,则进行数据备份,将打印出来的信息备份到系统指定的文件夹中;7、输入5就是退出系统,退出前可以循环操作,但有一定的次数限制,最好不要超过100次,一般情况够用;8、由于人数固定,所以数据输入时只能输入确定人数的信息,四名技术员,四名经理,八名销售员,四名销售经理;六、心得体会及课程改进设想通过对小型公司工资管理系统的C+程序编写,加强了我对C+功能的了解,对象与类之间关系的理解,同时也提高了上机实践能力,自主学习能力,错误分析能力从实习前开始对实习进行构思,如老师所言,要全局考虑,而我也正因为编写前考虑不周全,在定义完类以后,很快把输入数据的函数编写出来了,上机操作也很成功。可是到统计部分还有打印和备份部分就开始发现原写的程序有许多地方需要改动,或者增添新的成员或函数,比如统计数据时需要计算销售经理的工资并且排序,这就需要定义新的数组,新的函数来判断哪些销售员属于哪位销售经理,并按其工资从高到低排序。还有打印数据时需要计算各类对象的工资,就得回头重新定义一些成员函数,而且由于成员都是保护类型的,类外不能直接访问,所以需要在类中定义具有返回类中各数据功能的函数。这些都是数据输入时没有考虑到的。所以说,全局统筹规划,有缜密的构思很重要。当然,快速接受新事物的能力也是必备的,因为备份数据在课堂上未曾提及,就得自己通过网络查找相关信息,百度后才知道要添加这个头文件,用outfile来进行数据备份,并用outfile.open(“”,ios:out)打开磁盘流文件。还有如果需要退出系统,除了我用break跳出循环的方法外,也可以用exit(0)函数退出,只需增加一个头文件。这些知识都是自己查找相关信息分析才知道的,所以自学能力也很重要。再者,由于程序编写过程中出现错误是常有的事,那么,分析错误的能力也就需要慢慢提高,因为错误提示都是英文,所以学好英语也很有必要。错误往往是粗心或者语法不对,比如大括号少了或者多了或者放错了位置,少打分号了,输入法转换时符号输入不经意间改变了,或者一些函数没有声明,声明位置靠后了,由于程序较长,有时候搞不清在哪定义在哪调用了。有时也可能重复定义了。但其实难改的错误并不是这些,当一个程序可以运行时,发现输出的数据存在问题这才是最头疼的,我用了几天时间找一个错误的出错原因。就是销售经理的工资和排序有问题。整个程序编译连接都没有问题,除了销售经理的工资外其他数据也都正确。最后找老师帮忙,才发现是一处极不起眼的地方出现了错误,程序段是这样
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号