计算器类面向对象程序设计大作业Word格式.docx

上传人:b****6 文档编号:21569106 上传时间:2023-01-31 格式:DOCX 页数:27 大小:21.76KB
下载 相关 举报
计算器类面向对象程序设计大作业Word格式.docx_第1页
第1页 / 共27页
计算器类面向对象程序设计大作业Word格式.docx_第2页
第2页 / 共27页
计算器类面向对象程序设计大作业Word格式.docx_第3页
第3页 / 共27页
计算器类面向对象程序设计大作业Word格式.docx_第4页
第4页 / 共27页
计算器类面向对象程序设计大作业Word格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

计算器类面向对象程序设计大作业Word格式.docx

《计算器类面向对象程序设计大作业Word格式.docx》由会员分享,可在线阅读,更多相关《计算器类面向对象程序设计大作业Word格式.docx(27页珍藏版)》请在冰豆网上搜索。

计算器类面向对象程序设计大作业Word格式.docx

当表达式

中数据格式或运算符输入错误,程序给出错误信息。

要求:

(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1