资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
程序设计实习报告1中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统的设计专业班级:自动化 10-4班学号:10051426姓名:吴光韬时 间:2011.7.142011.7.172011年 7月 16日程序设计实习报告2目录一、 实习内容1 1.1、课程设计的目的11.2、设计题目及要求1二、 设计思路2三、 程序清单33.1、程序源代码4四、 运行结果144.1、程序运行144.2、备份文本信息16五、 程序使用说明17六、 总结及心得体会17程序设计实习报告1一:实习内容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 人,员工信息输出格式雇员类经理类 销售员类技术员类销售经理类程序设计实习报告2参考运行效果。(5) 实现功能应用程序中要有菜单,用于选择各种功能,其中 数据输入:输入各种数据; 数据统计:统计各种销售经理下属销售员的销售额及限售额之和;销售经理按工资进行的冒泡排序; 数据打印:打印各类员工的数据信息; 数据备份:把各类员工的数据星系写入文件中保存; 推出本系统;(6) 菜单说明 数据录入指通过键盘输入各类员工的各项数据; 数据统计指统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行冒泡法排序; 数据打印指按照表格的格式在屏幕上输出个员工的信息; 数据备份指将所有员工的信息保存到文件; 退出:结束程序的运行。(7) 注意一个销售经理管辖多个销售员。(8) 其他功能可以自己扩充(扩充的功能若比较合理可适当加分) 。(9) 要求在控制台下完成(显示内容都在黑屏下显示) 。二、设计思路1、整体考虑程序应该实现的功能,有数据输入,数据统计,数据打印,数据备份和退出系统 5 个。2、首先定义一个 Employee 的雇员基类,然后由此派生出 Tech,Manager,Salesman 三个分别为技术员类,经理类,销售员类;再由 Manager 派生出销售经理类 Salesmanager。每个类中的成员都是 protected 型的,所有的继承都是公有继承,基类中定义有数据输入函数。3、主函数里定义了四个对象数组,Tech TA;Manager MB;Salesman SC;Salesmanager SMD,其中 A/B/C/D 都是全局常变量,代表各类成员人数,便于程序修改。4、整个程序由主函数的一个 for 循环控制,根据输入的操作选项通过一个 switch 语句判断该进行什么操作,每一个 case 后面对应一个函数,每个函数对应一个操作, 1 对应数据输程序设计实习报告3入,2 对应数据统计,3 对应数据打印,4 对应数据备份,5 对应退出系统。5、数据统计、打印以及备份都以表格形式输出。表格通过制表符进行设计。表头表尾表中、菜单还有分隔符均单独定义成 void 型的函数。如:void tou()cout 这四个头文件。 用于数据备份,使用时,先用 ofstream outfile;outfile.open(工资管理系统 .txt,ios:out);打开磁盘流文件,并且对备份文件进行命名,同时确定存储位置。 用其 setw()设置输出数据的宽度,便于表格的制作9、因为类中成员都是保护类型的,所以要定义属于各类的返回成员值的函数,如turn_belong()、turn_num() 10、整体构思比较简单,基本能够实现各项功能程序设计实习报告4三、程序清单#include#include#include#includeusing namespace std;void fun1();void fun2();void tou();void wei();void zhong();const int A=2,B=2,C=4,D=2;const int a=8000;const int b=5000;const double c=0.005;const int d=100;const double e=0.04;int n=0;int m2=0,0;int t2;class Employeepublic:void data_cin() coutname;coutsex;coutage;int turn_num()return num;string turn_name()return name;程序设计实习报告5char turn_sex()return sex;int turn_age()return age;protected:int num;string name;int age;char sex;int gz;class Tech:public Employeepublic:void data_cin()coutnum;Employee:data_cin();couttime;int turn_gz1()return d*time;protected:int time;class Salesman:public Employeepublic:Salesman()sales_money=0;void data_cin()coutnum;Employee:data_cin();程序设计实习报告6coutsales_money;coutbelong;gz=sales_money*e;int turn_sales_money()return sales_money;int turn_belong()return belong;int turn_gz2()return sales_money*e;protected:int sales_money;int belong;class Manager:public Employeepublic:void data_cin()coutnum;Employee:data_cin();gz=a;int turn_gz3()return a;class Salesmanager:public Managerpublic:int turn_num()return num;void data_cin()coutnum;程序设计实习报告7Employee:data_cin();double wageD;double SM_wage(Salesman S,Salesmanager SM)int i,j,k;double p;Salesmanager q;for(k=0;kn;display(T,M,S,SM,n);if(n=5)break;return 0;void display(Tech T,Manager M,Salesman S,Salesmanager SM,int n)switch(n)case 1:fun3(T,M,S,SM);break;case 2:data_tongji(T,M,S,SM);break;case 3:data_print(T,M,S,SM);break;case 4:data_beifen(T,M,S,SM);break;case 5:cout这个头文件,用 outfile 来进行数据备份,并用 outfile.open(“”,程序设计实习报告18ios:out)打开磁盘流文件。还有如果需要退出系统,除了我用 break 跳出循环的方法外,也可以用 exit(0)函数退出,只需增加一个头文件。这些知识都是自己查找相关信息分析才知道的,所以自学能力也很重要。再者,由于程序编写过程中出现错误是常有的事,那么,分析错误的能力也就需要慢慢提高,因为错误提示都是英文,所以学好英语也很有必要。错误往往是粗心或者语法不对,比如大括号少了或者多了或者放错了位置,少打分号了,输入法转换时符号输入不经意间改变了,或者一些函数没有声明,声明位置靠后了,由于程序较长,有时候搞不清在哪定义在哪调用了。有时也可能重复定义了。但其实难改的错误并不是这些,当一个程序可以运行时,发现输出的数据存在问题这才是最头疼的,我用了几天时间找一个错误的出错原因。就是销售经理的工资和排序有问题。整个程序编译连接都没有问题,除了销售经理的工资外其他数据也都正确。最后找老师帮忙,才发现是一处极不起眼的地方出现了错误,程序段是这样的:for(i=0;iD;i+)double sum=0;for(j=0;jC;j+)if(SMi.turn_num()=Sj.turn_belong() /其中的 i 被我写成了 jsum+=Sj.turn_sales_money();wagei=sum*c+b;所以说,算法出错时最不好改的,比较计算机是机器。总体来说,在整个程序中,我们通过使用 while 循环,switch 语句,冒泡排序法,表格设计中的 setw()以及类的定义及使用来完成程序设计,使我提高了对 C+中语句的使用能力和组合能力,进一步加强了我对使用 C+编程的能力。通过这次实习,对 C+进行了更如的了解,得到了宝贵的经验,许多同学都有了很大的收获,对程序的优化问题也有了一定认识。然而我写的程序不算灵活,因为人数都是固定的,如果能定义成动态的,并且设置一些查找函数,增加多级菜单,我想程序会更实用。程序设计实习报告19
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号