您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 工资管理系统C++课程设计
《面向对象程序设计》课程设计报告姓名:叶小波姚旺富李成班级:信管082信息工程学院信息管理系二〇一一年一月题目:建立企业工资计算及管理系统一、题目要求:采用面向对象程序设计思想,利用文本文件来存储数据,实现数据的输入,处理,查询(按姓名,编号,职业,对应员工工资分布情况查询)等功能,并自动计算出工资。二、需求分析:实现数据的输入及处理、编辑、管理、查询(按姓名,编号,职业,对应员工工资分布情况查询)数据输入的-------根据题意,输入员工的信息,包括职业,姓名,编号及对应的工资处理数据,系统会进行处理。查询-------根据题意,按照姓名、编号、职业、对应员工工资分布情况进行查询三、设计思路:1、对象设计:抽象类employee,对应产生3个派生类technician,salesman,manager,再把salesman,manager,salesman与manager作为虚基类派生出一个salesmanager类,从而避免二义性问题。2、Technician,salesman,manager,salesmanager都用将用到pay()与display()两个函数,而且都是派生得到,于是在基类中设置了虚函数pay()与display().3、函数的设计:设置了6个函数,分别为添加员工及工资计算,按姓名查询,按编号查询,按职业查询,对应员工工资分布情况查询,查看所有员工信息4、6个函数分别设为类的友元函数,可以访问私有成员。5、采用文本文件存储数据。四、详细设计:1.类定义:///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////classemployee//雇员类类中函数:employee()//雇员构造函数virtualvoidpay()=0/雇员工资计算虚函数virtualvoiddisplay()=0//雇员工资显示虚函数friendvoidadd();//添加员工及工资计算友元函数friendvoidvisitname();//按姓名查询友元函数friendvoidvisitnum();//按标号查询友元函数friendvoidvisitprofession();//按职业查询友元函数friendvoidsearchpay();//对应员工工资分布情况查询友元函数friendvoidoutpay();//打印员工工资friendvoidoutpay();~employee()//雇员析构函数变量:no//编号name[20]//姓名salary//工资/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////classtechnician//兼职技术人员类类中函数:technician()//兼职技术人员构造函数voidpay()//兼职技术人员工资计算函数voiddisplay()//兼职技术人员工资函数~technician()///兼职技术人员析构函数friendvoidadd();//添加员工及工资计算友元函数friendvoidvisitname();//按姓名查询友元函数friendvoidvisitnum();//按标号查询友元函数friendvoidvisitprofession();//按职业查询友元函数friendvoidsearchpay();//对应员工工资分布情况查询友元函数friendvoidoutpay();//打印员工工资变量:no//编号name[20]//姓名salary//工资hourlyrate//每小时的工作费用workhours//工作时间///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////salesman类中函数:salesman()//销售人员构造函数virtualvoidpay()=0/销售人员工资计算虚函数virtualvoiddisplay()=0//销售人员工资显示虚函数friendvoidadd();//添加员工及工资计算友元函数friendvoidvisitname();//按姓名查询友元函数friendvoidvisitnum();//按标号查询友元函数friendvoidvisitprofession();//按职业查询友元函数friendvoidsearchpay();//对应员工工资分布情况查询友元函数friendvoidoutpay();//打印员工工资~salesman()//销售人员析构函数变量:no//编号name[20]//姓名salary//工资commrate//提成sales//销售量///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////manager类中函数:manager()//经理构造函数virtualvoidpay()=0//经理工资计算函数virtualvoiddisplay()=0//经理工资显示函数~manager()//经理析构函数friendvoidadd();//添加员工及工资计算友元函数friendvoidvisitname();//按姓名查询友元函数friendvoidvisitnum();//按标号查询友元函数friendvoidvisitprofession();//按职业查询友元函数friendvoidsearchpay();//对应员工工资分布情况查询友元函数friendvoidoutpay();//打印员工工资变量:no//编号name[20]//姓名salary//工资monthlypay//月工资///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////classsalesmanager//销售经理类中函数:employee()//销售经理构造函数virtualvoidpay()=0//销售经理计算函数virtualvoiddisplay()=0//销售经理工资显示函数friendvoidadd();//添加员工及工资计算友元函数friendvoidvisitname();//按姓名查询友元函数friendvoidvisitnum();//按标号查询友元函数friendvoidvisitprofession();//按职业查询友元函数friendvoidsearchpay();//对应员工工资分布情况查询友元函数friendvoidoutpay();//打印员工工资~employee()//销售经理析构函数变量:no//编号name[20]//姓名salary//工资monthlypay//月工资sales//销售量2.变量定义:manager*m[50];//经理指针technician*t[50];//兼职技术人员指针数组salesman*s[50];//销售人员指针数组salesmanager*sm[50];//销售经理指针数组outfile//文件名snum//销售人员数量tnum//兼职技术人员数量mnum//经理人数量smnum//销售经理人数量3、重要函数:voidadd();//添加员工及工资计算voidvisitname();//按姓名查询voidvisitnum();//按标号查询voidvisitprofession();//按职业查询voidsearchpay();//对应员工工资分布情况查询voidoutpay();//打印员工工资重要类CArray是内存管理的类。可以在任意位置插入数据,删除数据,并自动重新排好。这样给程序带来了不少方便Carchive允许一个二进制(通常为磁盘存储)的形式保存一个对象的复杂网络。把归档的对象看成一种二进制流,归档与文件有关,并允许写缓冲区及从硬盘读出或读入数据。五、设计流程:A.函数流程:B.界面流程:1.主页面开始添加成员与工资计算按姓名查询按编号查询功能选择按职业查询对应员工工资分布情况输出员工工资分布情况结束2.添加成员与工资计算3.按编号查询4.按职业查询5.按对应职业员工分布情况查询6.输出所有员工工资六、调试分析:调试过程中一些常见的小错误就不说了。调试中主要遇到的问题有二1:定义了类的变量数组,放在主函数之外时,不能编译成功,于是定义类的指针变量数组进行操作,就可以在类外进行了。2;两个基类派生出一个类时,出现二义性问题,用虚基类解决了。3.部分函数不能调用类中的私有成员,用友元函数得以解决。七、心得体会:经过一星期的课程实习,重设计到实现,虽然花费了不少时间,但也学到了很多。主要总结以下几点:1:运用面向对象程序设计的思想。并将文件读入,读出,多态,派生,虚基类,虚函数,合理整合并运用在代码中,实现程序。2.程序代码实现是个耐性,细心的过程,写完一段,调试一段,遇到问题,分析问题,解决问题,事半功倍。3.提高了动手能力。课程设计虽然技术了,C++是一块很大的领域,还有很多地方和知识点不了解,要我们不断地学习,探索,思考,提高我们的能力。八、源代码:#includeiostream.h#includefstream.h#includestdlib.h#includestring.hclassemployee{protected:intno;charname[20];floatsalary;public:employee(){cout职工编号:;cinno;cout职工姓名;cinname;salary=0;}virtualvoidpay()=0;virtualvoiddisplay()=0;friendvoidadd();//添加员工及工资计算friendvoidvisitname();//按姓名查询friendvoidvisitnum();//按标号查询friendvoidvisitprofession();//按职业查询friendvoidsearchpay();//对应员工工资分布情况查询friendvoidoutpay();~employee(){};};classtechnician:publicemployee{private:floathourlyrate;intworkhours;public:technician(){hourlyrate=100;}voidpay(){coutname本月工作时数:;cinworkhours;salary=hourlyrate*workhours;}voiddisplay(){cout兼职技术人员name(编号为no)本月工资:salaryendl;}friendvoidadd();//添加员工及工资计算friendvoidvisitname();//按姓名查询friendvoidvisitnum();//按标号查询friendvoidvisitprofession();//按职业查询friendvoidsearchpay();//对应员工工资分布情况查询friend
本文标题:工资管理系统C++课程设计
链接地址:https://www.777doc.com/doc-6019600 .html