您的位置:首页 > 编程语言 > C语言/C++

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

2013-11-14 16:26 591 查看
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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: