




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计大作业-计算器类、学校人员管理系统学 院 名 称 数学与系统科学学院 专业班级 信息与计算科学2013-2班 学生姓名 陈涛 学 号 201301050904 指 导 教 师 孙红梅 完成时间:2015 年 7月 1 日山 东 科 技 大 学大 作 业 任 务 书一、 题目:计算器类二、 原始资料:面向对象程序设计大作业要求和任务书三、 应解决下列各主要问题:计算器类:设计一个计算器类模板,适用各类型表达式的“+、-、/” 数学四则运算以及“、=、=、=、!=、=”等关系运算。数学四则运算表达式中可含有加、减、乘、除运算符以及各型数据的运算对象。程序可以直接输入数学表达式以及关系表达式,不需要任何转换,就可以直接输出数学四则运算和逻辑运算的结果。并且操作简单、界面清晰、灵活、实用、方便等。(系统功能可充分自由发挥)。扩展功能:三角运算、进制转换、开方、幂指数等。问题描述设计一个简单计算器。用户输入四则运算表达式,程序输出正确结果。当表达式中数据格式或运算符输入错误,程序给出错误信息。要求:(1)表达式的左、右操作数可以为整数或实数。(2)运算符限制为+,-,*,/(3)输入表达式允许有前导空格,允许在运算符前后嵌入空格。(4)检测表达式由以下函数完成:void check(char *input, int &a, double &y, int &op, char * &err);其中参数意义如下: input 输入表达式的字符串。x 返回表达式的左操作数转换结果数值。此题为简单起见,把数据统一转换成double类型。y 返回表达式的右操作数转换结果数值。op 返回对运算式的判断结果。若输入表达式左、右操作数和运算符都正确,则返回值为1、2、3、4,分别表示做+、-、*、/运算。若返回-1,表示左操作数错;若返回-2,表示右操作数错;若返回-3,表示操作符错。err 返回显示错误信息的字符串。附录(源程序代码)#include iostream#include stringusing namespace std;void check(char *input, double &x, double &y, int &op, char * &err);double chage(char *ch);int main() double x,y; int op; char input40,*err; double result; gets(input); check(input,x,y,op,err); if(op0) couterrendl; return 0; switch(op) case 1: result=x+y; break; case 2: result=x-y; break; case 3: result=x*y; break; case 4: result=x/y; break; coutinput=result=0&inputj+1=0&inputj1) err=左操作数错误!; op=-1; return; j+; k=0; while(i=0&inputj+1=0&inputj1) err=右操作数错误!; op=-2; return; j+; k=0; while(i=0;i-) wre=1; j=0; while(jf-i-1) wre*=10; j+; result+=(chi-0)*wre; for(i=f+1;chfχi+) wre=1; j=0; while(ji-f) wre*=0.1; j+; result+=(chi-0)*wre; return result;指导教师评语成绩: 指导教师(签章):2015年 月 日山 东 科 技 大 学大 作 业 任 务 书六、 题目:公司人员工资管理系统七、 原始资料:面向对象程序设计大作业要求和任务书八、 应解决下列各主要问题:公司人员工资管理系统:本程序用于管理一个公司的人员工资,所有雇员类(employee)有共性的数据成员是:编号、姓名和工资。技术员类(technician)的数据成员包括共性的数据成员以及工作时间(每月的)、每小时的工资。销售员类(salesman)的数据成员包括共性的数据成员以及销售额(本月)、提成。经理类(manager)的数据成员包括共性的数据成员以及月工资。销售员兼经理类(salesmanager)的数据成员包括销售员类和经理类的数据成员。 九、 设计说明书应附有下列图纸:无十、 小组分工说明:无 六、命题发出日期:2015.6.10设计完成日期:2015.7.10目的与要求本程序用于管理一个公司的人员工资,所有雇员类(employee)有共性的数据成员是:编号、姓名和工资。技术员类(technician)的数据成员包括共性的数据成员以及工作时间(每月的)、每小时的工资。销售员类(salesman)的数据成员包括共性的数据成员以及销售额(本月)、提成。经理类(manager)的数据成员包括共性的数据成员以及月工资。销售员兼经理类(salesmanager)的数据成员包括销售员类和经理类的数据成员。问题描述(1) 公司主要有4类人:经理、计术员、销售员、销售经理。要求存储这些人 的职工号、姓名、月工资、年龄、性别等信息。(2) 工资的计算方法 a、经理:固定月薪为8000元; b、技术员:工作时间*小时工资(100元每小时); c、销售员:销售额*4%提成; d、销售经理:底薪(5000元)+所辖部门销售额总额*0.5%;(3)输入员工基本数据,要求每类人员不能少于2人。(4)实现功能数据录入:输入各项数据;数据统计:统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行的冒泡排序;数据打印:打印各类员工的数据信息;数据备份:把各类员工的数据信息写入文件中保存;退出:退出本系统(6)菜单说明 数据录入指通过键盘输入各类员工的各项数据;数据统计指统计各销售经理下属销售员的销售额 及销售额之和;销售经理按工资进行的冒泡排序;数据打印指按照表格的格式在屏幕上输出各类员工的信息;数据备份指将所有员工的信息保存到文件;退出:结束程序的运行。附录(源程序代码)#include#include#include#include#includeusing namespace std;ofstream outfile;const int b=2;const int t=2;const int sb=2;const int s=4;int wage(int n);void technicianinformatian();void managerinformation();void salesmanagerinformation();void sellerinformation();void total();void maopao();void yejibiao();void sbrank();void excelhead();void excelmiddle();void excelend();void backup_yejibiao();void backup_sbrank();void backup_technicianinformatian();void backup_managerinformation();void backup_salesmanagerinformation();void backup_sellerinformation();class employeepublic:int nume() return(num);string nam()return(name);char showsex() return(sex);int showage() return(age);protected:int num;string name;char sex;int age;int wage;class manager:public employeepublic:manager() /8000元为经理固定月薪wage=8000;int managerwage() return(wage);void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;class technician:public employeepublic:void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;coutworktime;coutendl;int get_wage()return (worktime*100); /100元为单位小时工资protected:int worktime;class salesmanager:public employeepublic:salesmanager()allsale=0; void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;int get_wage()return (5000+allsale*0.005); /5000元为销售经理底薪protected:int allsale;class seller:public employeepublic:int bossnume() return(bossnum); int money() return(salesmoney); void set_in()coutnum;coutendl;coutname;coutendl;coutsex;coutendl;coutage;coutendl;coutsalesmoney;coutendl;coutbossnum;coutendl; int get_wage() return (salesmoney*0.04);protected:int salesmoney;int bossnum;manager bossb;technician technit;seller salesmans;salesmanager salesbosssb;int salesbosstotalesb=0;salesmanager exchangesb;int exchange; int b=0,t=0,sb=0,s=0;int inputboss()for(int i=0;ib;i+)bossi.set_in(); coutendl;return 0;int inputtechni()for(int j=0;jt;j+)technij.set_in(); coutendl;return 0;int inputsalesman()for(int n=0;ns;n+)salesmann.set_in(); coutendl;return 0;int inputsalesboss()for(int m=0;msb;m+)salesbossm.set_in();return 0;int main ()for(;)cout 小型公司工资管理系统endl;coutendl;cout 请选择您所需要的操作 endl;cout 数据输入:1,并按回车键 endl;cout 数据统计:2,并按回车键 endl;cout 数据打印:3,并按回车键 endl;cout 数据备份:4,并按回车键 endl;cout 退出系统:5,并按回车键 endl;coutendl;coutselect;switch(select)case 1: for(;)cout 小型公司工资管理系统endl; coutendl; cout 请选择您所需要的操作 endl; cout 经理数据输入 :1,并按回车键 endl; cout 技术员数据输入 :2,并按回车键 endl; cout 销售员数据输入 :3,并按回车键 endl; cout 销售经理数据输入:4,并按回车键 endl; cout 返回上一级 :5,并按回车键 endl; coutendl; coutchoice;switch(choice)case 1: inputboss();b+;break;case 2: inputtechni();t+; break;case 3: inputsalesman();s+;break;case 4: inputsalesboss();sb+;break;case 5:break;default:cout输入有误,请重新输入.endl;if(choice=5) break;break;case 2:if(s=0) cout尚未输入销售员数据.endl;if(sb=0) cout尚未输入销售经理数据.endl;if(s=0|sb=0) break; total();maopao();yejibiao();sbrank(); break;case 3:cout请等待.endl;if(t!=0|b!=0|sb!=0|s!=0)cout职工基本情况一览表如下endl;if(t!=0)cout技术员endl; technicianinformatian(); coutendl;if(b!=0)cout经理endl; managerinformation(); coutendl;if(sb!=0)cout销售经理endl; salesmanagerinformation(); coutendl;if(s!=0)cout销售员endl; sellerinformation(); coutendl; if(t=0&b=0&sb=0&s=0)cout尚未录入任何人员数据.endl;else if(t=0)cout尚未录入技术员数据.endl; if(b=0)cout尚未录入经理数据.endl; if(sb=0)cout尚未录入销售经理数据.endl; if(s=0)cout尚未录入销售员数据.endl;if(t=0|b=0|sb=0|s=0)cout请录入所需打印数据 或 进行其他操作endl;break; case 4:if(t=0|b=0|sb=0|s=0)cout人员数据输入尚未完全,请打印确认后再备份.endl;break;backup_yejibiao();backup_sbrank(); backup_technicianinformatian(); backup_managerinformation(); backup_salesmanagerinformation(); backup_sellerinformation();cout备份中,请等待.endl;break;case 5:char choice;for(;)coutchoice; if(choice=y) exit(0);else if(choice=n) break;else cout输入有误,请重新输入.endl; default:cout输入有误,请重新输入.endl;return 0;int wage(int n)return(5000+n*0.005);/以下为第二步代码void total() /求总销售额for(int n=0;ns;n+)for(int m=0;msb;m+)if(salesmann.bossnume()=salesbossm.nume()salesbosstotalem+=salesmann.money(); break;void maopao() /冒泡法排序for(int n=1;nsb;n+)for(int m=1;msalesbosstotalem)exchangesb=salesbossm-1;salesbossm-1=salesbossm;salesbossm=exchangesb;exchange=salesbosstotalem-1;salesbosstotalem-1=exchange;salesbosstotalem=exchange; void yejibiao() for(int n=0;nsb;n+)cout职工号为salesbossn.nume()销售经理salesbossn.nam()下属的销售员业绩为:endl; coutendl; cout职工号 姓名 销售额 endl; for(int j=0;js;j+)if(salesmanj.bossnume()=salesbossn.nume() coutendl;coutsetw(12)salesmanj.nume()setw(12)salesmanj.nam()setw(14)salesmanj.money()endl; coutendl; cout销售额总计: setw(28)salesbosstotalenendl; coutendl; void sbrank() cout销售经理按工资排序为:-1;n-)excelmiddle();coutsetw(8)salesbossn.nume()setw(8)salesbossn.nam()setw(6)salesbossn.showsex()setw(8)salesbossn.showage()setw(8)wage(salesbosstotalen)endl;excelend();/以上为第二步代码/以下为职工信息一览表代码void technicianinformatian()excelhead();for(int k=0;kt;k+)excelmiddle();coutsetw(8)technik.nume()setw(8)technik.nam()setw(6)technik.showsex()setw(8)technik.showage()setw(8)technik.get_wage()endl; excelend();void managerinformation() excelhead();for(int k=0;kb;k+) excelmiddle();coutsetw(8)bossk.nume()setw(8)bossk.nam()setw(6)bossk.showsex()setw(8)bossk.showage()setw(8)bossk.managerwage()-1;k-) excelmiddle();coutsetw(8)salesbossk.nume()setw(8)salesbossk.nam()setw(6)salesbossk.showsex()setw(8)salesbossk.showage()setw(8)wage(salesbosstotalek)endl;excelend();void sellerinformation()coutendl;cout 职工号 姓名 性别 年龄 工资 所属部门经理编号endl;for(int k=0;ks;k+)coutendl;coutsetw(8)salesmank.nume()setw(8)salesmank.nam()setw(6)salesmank.showsex()setw(8)salesmank.showage()setw(8)salesmank.get_wage()setw(16)salesmank.bossnume()endl;coutendl;/以上为职工信息一览表代码/各步表格的表头,表中和表尾void excelhead() coutendl;cout 职工号 姓名 性别 年龄 工资 endl;void excelmiddle()coutendl;void excelend()coutendl;/各步表格的表头,表中和表尾/数据备份void backup_yejibiao() outfile.open(备份数据.text,ios:out);for(int n=0;nsb;n+)outfile职工号为salesbossn.nume()销售经理salesbossn.nam()下属的销售员业绩为:endl;outfileendl;outfile职工号 姓名 销售额 endl; for(int j=0;js;j+)if(salesmanj.bossnume()=salesbossn.nume() outfileendl;outfilesetw(12)salesmanj.nume()setw(12)salesmanj.nam()setw(14)salesmanj.money()endl; outfileendl; outfile销售额总计: setw(28)salesbosstotalenendl; outfileendl;void backup_sbrank()outfile销售经理按工资排序为:endl; outfileendl;outfile 职工号 姓名 性别 年龄 工资 -1;n-)outfileendl;outfilesetw(8)salesbossn.nume()setw(8)salesbossn.nam()setw(6)salesbossn.showsex()setw(8)salesbossn.showage()setw(8)wage(salesbosstotalen)endl;outfileendl;void backup_technicianinformatian()outfile职工基本情况一览表如下endl;outfile技术员endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 endl;for(int k=0;kt;k+)outfileendl;outfiles
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代定住宿合同范本
- 物业设备租赁合同范本
- 小型生意合作合同范本
- 钳工兼职接单合同范本
- 乙方终止设计合同范本
- 建筑砖供货合同范本
- 机械出租合同范本
- 租赁套路合同范本
- 承包农田出租合同范本
- led灯维修合同范本
- 延缓慢性肾脏病进展临床管理指南(2025年)解读课件
- 土地管理培训课件
- 2025年山西中考历史试卷真题解读及答案讲解课件
- 2025至2030中国科技成果转换行业发展趋势分析与未来投资战略咨询研究报告
- 除颤仪使用讲课件
- 中国PCBA行业发展前景及发展策略与投资风险研究报告2025-2028版
- 教育科技公司团队管理制度
- 特殊人群服务管理制度
- 2025-2030中国磁悬浮离心鼓风机行业市场发展趋势与前景展望战略研究报告
- 高等教育自学考试《00018计算机应用基础》模拟试卷一
- 2025年公共卫生检验士考试试题及答案
评论
0/150
提交评论