计算器类面向对象程序设计大作业Word格式.docx
- 文档编号:21569106
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:27
- 大小:21.76KB
计算器类面向对象程序设计大作业Word格式.docx
《计算器类面向对象程序设计大作业Word格式.docx》由会员分享,可在线阅读,更多相关《计算器类面向对象程序设计大作业Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
当表达式
中数据格式或运算符输入错误,程序给出错误信息。
要求:
(1)表达式的左、右操作数可以为整数或实数。
(2)运算符限制为+,-,*,/
(3)输入表达式允许有前导空格,允许在运算符前后嵌入空格。
(4)检测表达式由以下函数完成:
voidcheck(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"
string"
usingnamespacestd;
voidcheck(char*input,double&
x,double&
doublechage(char*ch);
intmain()
{
doublex,y;
intop;
charinput[40],*err;
doubleresult;
gets(input);
check(input,x,y,op,err);
if(op<
0)
{cout<
<
err<
endl;
return0;
}
switch(op)
{
case1:
result=x+y;
break;
case2:
result=x-y;
case3:
result=x*y;
case4:
result=x/y;
}
cout<
input<
"
="
result<
voidcheck(char*input,double&
err)
inti=0,j=0,k;
intpoint=0;
charleftx[20],righty[20];
while(input[i]=='
'
)i++;
j=i;
if(input[j]=='
0'
&
(input[j+1]>
='
input[j+1]<
9'
))
{err="
左操作数错误!
;
op=-1;
return;
while((input[j]>
input[j]<
)||input[j]=='
.'
)
)point++;
if(point>
1){err="
j++;
k=0;
while(i<
j)leftx[k++]=input[i++];
leftx[k]='
\0'
x=chage(leftx);
switch(input[i])
case'
+'
:
op=1;
i++;
-'
op=2;
*'
op=3;
/'
op=4;
default:
op=-3;
err="
运算符错误!
point=0;
右操作数错误!
op=-2;
j)righty[k++]=input[i++];
righty[k]='
y=chage(righty);
if(op==4&
y==0)
除数不能为0"
doublechage(char*ch)
inti=0,j,f=-1;
doubleresult=0,wre;
while(ch[i])
if(ch[i]=='
)break;
f=i;
for(i=f-1;
i>
=0;
i--)
wre=1;
j=0;
while(j<
f-i-1){wre*=10;
result+=(ch[i]-'
)*wre;
for(i=f+1;
ch[f]&
ch[i];
i++)
i-f){wre*=0.1;
returnresult;
指导教师评语
成绩:
指导教师(签章):
2015年 月日
六、题目:
公司人员工资管理系统
七、原始资料:
八、应解决下列各主要问题:
公司人员工资管理系统:
本程序用于管理一个公司的人员工资,所有雇员类(Employee)有共性的数据成员是:
编号、姓名和工资。
技术员类(Technician)的数据成员包括共性的数据成员以及工作时间(每月的)、每小时的工资。
销售员类(Salesman)的数据成员包括共性的数据成员以及销售额(本月)、提成。
经理类(Manager)的数据成员包括共性的数据成员以及月工资。
销售员兼经理类(Salesmanager)的数据成员包括销售员类和经理类的数据成员。
九、设计说明书应附有下列图纸:
一十、小组分工说明:
目的与要求
(1)公司主要有4类人:
经理、计术员、销售员、销售经理。
要求存储这些人的职工号、姓名、月工资、年龄、性别等信息。
(2)工资的计算方法
A、经理:
固定月薪为8000元;
B、技术员:
工作时间*小时工资(100元每小时);
C、销售员:
销售额*4%提成;
D、销售经理:
底薪(5000元)+所辖部门销售额总额*0.5%;
(3)输入员工基本数据,要求每类人员不能少于2人。
(4)实现功能
数据录入:
输入各项数据;
数据统计:
统计各销售经理下属销售员的销售额及销售额之和;
销售经理按工资进行的冒泡排序;
数据打印:
打印各类员工的数据信息;
数据备份:
把各类员工的数据信息写入文件中保存;
退出:
退出本系统
(6)菜单说明
数据录入指通过键盘输入各类员工的各项数据;
数据统计指统计各销售经理下属销售员的销售额及销售额之和;
数据打印指按照表格的格式在屏幕上输出各类员工的信息;
数据备份指将所有员工的信息保存到文件;
结束程序的运行。
#include<
iostream>
string>
stdlib.h>
iomanip>
fstream>
ofstreamoutfile;
constintB=2;
constintT=2;
constintSB=2;
constintS=4;
intwage(intn);
voidtechnicianinformatian();
voidmanagerinformation();
voidsalesmanagerinformation();
voidsellerinformation();
voidtotal();
voidmaopao();
voidyejibiao();
voidSBrank();
voidexcelhead();
voidexcelmiddle();
voidexcelend();
voidbackup_yejibiao();
voidbackup_SBrank();
voidbackup_technicianinformatian();
voidbackup_managerinformation();
voidbackup_salesmanagerinformation();
voidbackup_sellerinformation();
classEmployee
public:
intnume(){return(num);
stringnam(){return(name);
charshowsex(){return(sex);
intshowage(){return(age);
protected:
intnum;
stringname;
charsex;
intage;
intwage;
};
classManager:
publicEmployee
Manager()//8000元为经理固定月薪
{wage=8000;
intmanagerwage(){return(wage);
voidset_in()
cout<
经理的编号:
cin>
>
num;
其姓名:
name;
性别(m/w):
cin>
sex;
年龄:
age;
classTechnician:
voidset_in()
技术员的编号:
cout<
工作时间:
worktime;
intget_wage()
{return(worktime*100);
}//100元为单位小时工资
intworktime;
classSalesmanager:
Salesmanager()
{allsale=0;
销售经理的编号:
{return(5000+allsale*0.005);
}//5000元为销售经理底薪
intallsale;
classSeller:
intbossnume(){return(bossnum);
}
intmoney(){return(salesmoney);
销售员的编号:
销售额:
cin>
salesmoney;
所属销售经理的编号:
bossnum;
{return(salesmoney*0.04);
intsalesmoney;
intbossnum;
Managerboss[B];
Techniciantechni[T];
Sellersalesman[S];
Salesmanagersalesboss[SB];
intsalesbosstotale[SB]={0};
SalesmanagerexchangeSB;
intexchange;
intb=0,t=0,sb=0,s=0;
intInputboss()
for(inti=0;
i<
B;
boss[i].set_in();
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅"
return0;
intInputtechni()
for(intj=0;
j<
T;
j++)
techni[j].set_in();
intInputsalesman()
for(intn=0;
n<
S;
n++)
salesman[n].set_in();
intInputsalesboss()
for(intm=0;
m<
SB;
m++)
salesboss[m].set_in();
intmain()
for(;
★★小型公司工资管理系统★★"
┏━━━━━━━━━━━━━━━━┓"
┃请选择您所需要的操作┃"
┃数据输入:
1,并按回车键┃"
┃数据统计:
2,并按回车键┃"
┃数据打印:
3,并按回车键┃"
┃数据备份:
4,并按回车键┃"
┃退出系统:
5,并按回车键┃"
┗━━━━━━━━━━━━━━━━┛"
请选择一个操作:
intselect;
select;
switch(select)
{
case1:
for(;
{
cout<
┏━━━━━━━━━━━━━━━━━━━━┓"
┃经理数据输入:
┃技术员数据输入:
┃销售员数据输入:
┃销售经理数据输入:
┃返回上一级:
┗━━━━━━━━━━━━━━━━━━━━┛"
intchoice;
choice;
switch(choice)
{
case1:
Inputboss();
b++;
break;
case2:
Inputtechni();
t++;
break;
case3:
Inputsalesman();
s++;
case4:
Inputsalesboss();
sb++;
case5:
default:
cout<
输入有误,请重新输入..."
}
if(choice==5)break;
}
break;
case2:
if(s==0)cout<
尚未输入销售员数据..."
if(sb==0)cout<
尚未输入销售经理数据..."
if(s==0||sb==0)break;
total();
maopao();
yejibiao();
SBrank();
break;
case3:
cout<
请等待..."
if(t!
=0||b!
=0||sb!
=0||s!
=0)
职工基本情况一览表如下"
技术员"
technicianinformatian();
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅"
if(b!
经理"
managerinformation();
if(sb!
销售经理"
salesmanagerinformation();
if(s!
销售员"
sellerinformation();
if(t==0&
b==0&
sb==0&
s==0)
尚未录入任何人员数据..."
else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算器 面向 对象 程序设计 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)