问答题

【说明】 设计希赛IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;销售员拿固定工资1000元,然后再按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5‰。 按要求设计一个基类employee,销售员类salesman,经理类manager,销售经理类 salesmanager。 程序5-1是类employee的模块内容,程序5-2是类salesman的类模块内容,程序5-3是类manager的模块内容,程序5-4是类salesmanager的模块内容。在主测试程序中,输入张三所管部门月销售量10000后的输出结果如下: 张三所管部门月销售量:10000 销售经理:张三 编号:1001 本月工资:5050 #include <iostream.h> #include <string.h> class employee { protected: int no; char *name; float salary; public: employee(int num,char *ch) { no=num; name=ch; salary=0; } virtual void pay()=0; virtual void display() { cout<<"编号:"<<no<<endl; cout<<"本月工资:"<<salary<<endl; } }; 【程序5-2】 class salesman: (1) { protected: float commrate, sales; public: salesman(int num,char *ch):employee(num,ch) { commrate=0.04; } void pay() { cout<<name<<"本月销售额:"; cin>>saies; salary=sales*commrate+1000; } void display() { cout<<"销售员:"<<name<<endl; employee::display(); } }; 【程序5-3】 class manager: (1) { protected: float monthpay; public: manager(int num,char *ch):employee(num,ch) { monthpay=8000; } void pay() { salary=monthpay; } void display() { cout<<"经理:"<<name<<endl; employee::display(); } }; 【程序5-4】 class salesmanager: (2) { public: salesmanager(int num,char *ch): (3) { monthpay=5000; commrate=0.005;} void pay() { cout<<name<<"所管部门月销售量:"; cin>>sales; (4) } void display() { cout<<"销售经理:"<<name<<endl; (5) } }; void main() //主测试函数 { salesmanager p1 (1001,"张三"); p1.pay(); p1.display(); }

【参考答案】

(1)virtual public employee (2)public manager,public salesman......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】 魔方阵,又叫幻方,在我国古代称为“纵横图”。由1…N2共N2个自然数构成每行、每列及两对角线上各数之和都相等的N×N方阵,这样的方阵就叫做N阶魔方阵。顾名思义,奇阶魔方阵就是N为奇数的幻方。 奇数阶魔方阵的生成方法如下: (1)第一个位置在第一行正中。 (2)新位置应当处于最近一个插入位置右上方,但如果右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如果超出右边界,则新位置取应选行的最左一个位置。 (3)若最近一个插入元素为N的整数倍,则选下面一行同列上的位置为新位置。本题要求输入一个数据n,然后打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为: 8 1 6 3 5 7 4 9 2 了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m, n。其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了 MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。 【程序】 #include <stdio.h> #define MAX 15 void main() { int n; int m=1; int i,j; int a[MAX][MAX]; printf( Please input the rank of matrix: ); scanf( %d ,&n); i=0; (1) while( (2) ) a[i][j]=m; m++; i--; j++; if((m-1)%n==0 && m>1) { (3) j=j-1; } if(j>(n-1)) 超出上界 (4) if(j>(n-1)) (5) } for(i=0;i<n;i++) 输出魔方阵 for(j=0;j<n;j++) { if(a[i][j] 10==0) printf( %d ,a[i][j]); 对程序无影响,只是使输出的数每一列对齐 else printf( %d ,a[i][j]); if(j==(n-1)) printf( n ); } }