C++面型对象程序 (电子工业出版社)设计课后习题第三章最后两题

11.设计工人类Worker

#include<iostream>

#define MaxSize 20

#include<iomanip>
using namespace std;
class Worker
{
private:
char name[10];
char Dept[10];
int age;
Salary salary;
static int personsum;
public:
Worker():age(0),salary(){personsum++;}
void setname(char *a){strcpy(name,a);}
void setDept(char *b){strcpy(Dept,b);}
void setage(int c){age=c;}
void setsalary(double d,double i,double j,double n,double m)
{
salary.setwage (d);
salary.setsubsidy (i);
salary.setrent (j);
salary.setwatrfee (n);
salary.setelecfee (m);
}
char * getname(){return name;}
char * getDept(){return Dept;}
int getage(){return age;}
    void display();
static int getpersonsum(){return personsum;}
void getdisplay()
{
salary.display();
}
};
int Worker::personsum=0;
void Worker::display()
{
cout<<name<<'\t'<<age<<'\t'<<Dept<<'\t';

}

class Salary
{                                           
private:
double wage,subsidy,rent, waterfee,elecfee;
public:
Salary(double i,double j,double n,double m,double z);
Salary(){wage=subsidy=rent=waterfee=elecfee=0.0;}
void setwage(double i){wage=i;}
void setsubsidy(double j){subsidy=j;}
void setrent(double n){rent=n;}
void setwatrfee(double m){waterfee=m;}
void setelecfee(double z){elecfee=z;}
double getwage(){return wage;}
double getsubsidy(){return subsidy;}
double getrent(){return rent;}
double getwaterfee(){return waterfee;}
double getelecfee(){return elecfee;}
double RealSalary(){return (wage+subsidy-rent-waterfee-elecfee);}
void display();
};


Salary::Salary(double i,double j,double n,double m,double z)
{
wage=i;subsidy=j;rent=n; waterfee=m;elecfee=z;
cout<<"Salary constructor !"<<endl;
}
void Salary::display()
{
cout<<wage<<'\t'<<subsidy<<'\t'<<rent<<'\t'<<waterfee<<'\t'<<elecfee<<'\t'<<wage+subsidy-rent-waterfee-elecfee<<'\t'<<endl;
}


void main()
{
char a[10],b[10];
int c,k;
double d,i,j,n,m;
Worker worker[MaxSize];
for(k=0;k<MaxSize;k++)
{
 cout<<"输入职工的姓名:\n";
 cin>>a;
 cout<<"输入职工的年龄:"<<endl;
      cin>>c;
 cout<<"输入职工的工作部门:"<<endl;
 cin>>b; 
 cout<<"输入职工的基本工资:"<<endl;
 cin>>d;
 cout<<"输入职工的岗位津贴:"<<endl;
 cin>>i;
 cout<<"输入职工的房租:"<<endl;
 cin>>j;
 cout<<"输入职工的水费:"<<endl;
 cin>>n;
 cout<<"输入职工的电费:"<<endl;
 cin>>m;
 worker[k].setname(a);
 worker[k].setage(c);
 worker[k].setDept (b);
 worker[k].setsalary (d,i,j,n,m);
}
cout<<"姓名  年龄  工作部门  基本工资  岗位津贴  房租  水费  电费  实发工资"<<endl;
for(k=0;k<MaxSize;k++)
{
worker[k].display();
worker[k].getdisplay();
}
cout<<"工人数目是:"<<endl;
cout<<Worker::getpersonsum()<<endl;
}


12.设计一个整形链表类list,能够实现链表节点的插入(insert),删除(delete),以及链表数据的输出操作(prin)。


#include<iostream>
#include<malloc.h>
typedef int ElemType;
using namespace std;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkList;
class list
{
private:


public:
void InitList(LinkList * &L)
{
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
}
bool insert(LinkList *&L,int i,ElemType e);
bool listdelete(LinkList *&L,int i,ElemType &e);
void print(LinkList *L);
};


bool list::insert(LinkList *&L,int i,ElemType e)
{
int j=0;
LinkList *p=L,*s;
while (j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=e;
s->next=p->next;
p->next=s;
return true;
}
}


bool list::listdelete(LinkList *&L,int i,ElemType &e)
{
int j=0;
LinkList *p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
return false;
else
{
q=p->next;
if(q==NULL)
return false;
e=q->data;
p->next=q->next;
free(q);
return true;
}
}
void list::print(LinkList *L)
{
LinkList *p=L->next;
while(p!=NULL)
{
cout<<p->data<<'\t';
p=p->next;
}
cout<<endl;
}


void main()
{
LinkList *L;
ElemType e;
int i;
list a;
a.InitList(L);
a.insert(L,0,9);
a.insert(L,1,87);
a.print(L);
a.listdelete(L,i,e);
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值