实验二 类和对象(二)
一、请定义一个矩形类(Rectangle),私有数据成员为矩形的长度(len)和宽度(wid),缺省构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、求矩形面积、修改矩形长度和宽度为对应形参的值、输出矩形尺寸等公有成员函数。要求输出矩形尺寸的格式为“length:长度,width:宽度”。编写主函数对定义的类进行测试。
二、
1、定义一个学生类,
其数据成员为:姓名、学号、总学分、平均成绩;
其成员函数有:(1)构造函数:能对学生类的姓名和学号进行初始化,同时应默认将学生类中的学分和平均成绩初始化为0。(2)Show函数:显示该学生总学分和平均成绩。
2、定义一个班级类:
其数据成员为:学生总数,学生信息;
其成员函数有:
(1)构造函数;
(2)显示所有学生信息;
(3)根据学生查找指定学生信息;
(4)增加学生信息;
(5)为学生添加成绩和学分,并适时修改平均成绩。
3、定义一个班级类对象和若干个学生类对象,进行初始化操作、把学生对象添加进班级,并尝试为学生添加成绩和学分信息。
完整代码
矩形类:
#include <iostream>
using namespace std;
class Rectangle
{
public:
Rectangle()
{
len=0;
wid=0;
}
Rectangle(int le,int wi);
void circumference();
void area();
void change(int le,int wi);
void putout();
private:
int len;
int wid;
};
Rectangle::Rectangle(int le,int wi)
{
len=le;
wid=wi;
}
void Rectangle::circumference()
{
cout<<"矩形周长:"<<(len*2+wid*2)<<endl;
}
void Rectangle::area()
{
cout<<"矩形面积:"<<(len*wid)<<endl;
}
void Rectangle::change(int le,int wi)
{
len=le;
wid=wi;
}
void Rectangle::putout()
{
cout<<"length:"<<len<<" ,"<<"width:"<<wid<<endl;
}
int main()
{
Rectangle rec;
int putin;
int le,wi;
while(1)
{
rec.putout();
cout<<"请输入对应数字序号:"<<endl<<"1.求矩形周长"<<endl<<"2.求矩形面积"<<endl<<"3.修改矩形长度和宽度"<<endl<<"4.输出矩形尺寸"<<endl;
cin>>putin;
if(putin==1)
{
rec.circumference();
}
else if(putin==2)
{
rec.area();
}
else if(putin==3)
{
cout<<"length=";
cin>>le;
cout<<"width=";
cin>>wi;
rec.change(le,wi);
}
else if(putin==4)
{
rec.putout();
}
else
{
cout<<"格式有误,请重新输入!"<<endl;
}
cout<<endl;
}
}
学生班级类:
#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
Student()
{
name="未命名";
number="00000000";
score_number=0;
for(int i=0;i<10;i++)
{
credit[i]=0;
score[i]=0;
}
}
void show();
void addstudent();
void fillmessage();
string picknum();
private:
string name;
string number;
int score_number;
float credit[10];
float score[10];
};
class Class
{
public:
Class()
{
student_number=0;
}
void showStudentMessage();
void Find();
void addStudent();
void fillMessage();
private:
int student_number;
Student stu[20];
};
string Student::picknum()
{
return number;
}
void Student::show()
{
float add_credit=0;
float add_score=0;
for(int i=0;i<10;i++)
{
add_credit=add_credit+credit[i];
add_score=add_score+score[i];
}
cout<<"姓名:"<<name<<" ,学号:"<<number;
cout<<" ,总学分:"<<add_credit<<" ,平均成绩:"<<add_score/score_number<<endl;
}
void Student::addstudent()
{
cout<<"姓名:";
cin>>name;
cout<<"学号:";
cin>>number;
}
void Student::fillmessage()
{
cout<<"学分:";
cin>>credit[score_number];
cout<<"成绩:";
cin>>score[score_number];
score_number++;
}
void Class::showStudentMessage()
{
for(int i=0;i<student_number;i++)
{
stu[i].show();
}
}
void Class::Find()
{
string num;
int i=0;
cout<<"请输入要查找的学生学号:";
cin>>num;
for(i=0;i<student_number;i++)
{
if(num==stu[i].picknum())
{
stu[i].show();
break;
}
}
if(i==student_number)
{
cout<<"无此学生信息!"<<endl;
}
}
void Class::addStudent()
{
stu[student_number].addstudent();
student_number++;
}
void Class::fillMessage()
{
string num;
int i=0;
cout<<"请输入指定学号:";
cin>>num;
for(i=0;i<student_number;i++)
{
if((num==stu[i].picknum()))
{
stu[i].fillmessage();
break;
}
}
if(i==student_number)
{
cout<<"无此学生信息!"<<endl;
}
}
int main()
{
int choose;
Class cla;
while(1)
{
cout<<"请输入序号进行选择:"<<endl;
cout<<"1.显示所有学生信息"<<endl<<"2.查找指定学生信息"<<endl<<"3.增加学生信息"<<endl<<"4.添加成绩和学分"<<endl;
cin>>choose;
if(choose==1)
{
cla.showStudentMessage();
}
else if(choose==2)
{
cla.Find();
}
else if(choose==3)
{
cla.addStudent();
}
else if(choose==4)
{
cla.fillMessage();
}
else
{
cout<<"格式有误,请重新输入!"<<endl;
}
cout<<endl;
}
return 0;
}
仅作留档。