C++类中静态成员定义使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三面向对象编程
一、实验目的:
掌握类中静态成员的定义方法,初始化方法,使用方法;
掌握类的友元说明方法,理解友元的使用特点
二、实验时间:
三、实验地点:
四、实验内容:
1.编写程序,统计某旅馆住宿客人的总数,要求输入客人姓名,输出客人编号(按先后顺序自动生成),姓名以及总人数。
2.编写学生类Stu,包含学生姓名,成绩,设计一个友员函数,将学生成绩按大到小排序。
3.设计Person类,包含学号,姓名和成绩等私有数据成员,不含任何成员函
数,只将main()设为该类的友元函数。
4.已知三点座标,求三角形的面积。
五、实验要求:
在上机前写出全部源程序;
六、实验结果分析:
1.统计某旅馆住宿客人的总数
#include
using namespace std;
const int MAX = 100; //旅店的最大住宿人数
/*
定义一个旅客类
*/
class passenger
{
public :
passenger(string name = "", string ID = "", string romID = "")
{
this->name = name;
this->ID = ID;
this->romID = romID;
next = NULL;
cnt++;
}
~passenger()
{
cnt--;
}
passenger *getNext()
{
return next;
}
string getRomID()
{
return romID;
}
string getName()
{
return name;
}
void setNext(passenger *next)
{
this->next = next;
}
void setData()
{
cout << "Enter the romID:";
cin >> this->romID ;
cout << "Enter the name:";
cin >> this->name;
cout << "Enter the ID:";
cin >> this->ID;
cout << "---------------------------" << endl;
}
void disp()
{
cout << "the romID:" << romID <<"\n"
<< "the name:" < << "the ID:" << ID << "\n" << "----------------------------------------" << endl; } int getCnt() { return cnt; } private: string name, ID, romID; passenger *next; static int cnt; }; int passenger::cnt = -1; /* 初始化一个链表 */ passenger *initial() { passenger *temp; temp = new passenger; return temp; } /* 增加一名旅客 */ passenger *addNode(passenger *pre) { passenger *temp; temp = new passenger; if(temp->getCnt() == MAX + 1) { cout << "there is not the rom" << endl; cout << "----------------------------------------------" << endl; delete temp; return pre; } temp->setData(); pre->setNext(temp); return temp; } /* 删除一名旅客 */ int deleteNode(passenger *head, string romID) { passenger *temp, *p; p = head; while(p->getNext() != NULL) { temp = p->getNext(); if(temp->getRomID() == romID) { p->setNext(temp->getNext()); delete temp; return 1; } p = p->getNext(); } return 0; } /* 寻找一名旅客并显示他的信息 */ int seachNode(passenger *head, string name) { passenger *temp, *p; p = head; while(p->getNext() != NULL) { if(temp->getName() == name) { p->disp(); return 1; } p = p->getNext(); } return 0; } /* 显示所有旅客信息 */ void dispNode(passenger *head) { passenger *p = head; int i = 1;