赞
踩
(1)学生信息包括:姓名、学号、年龄、性别、学院、年级等
(2)宿舍信息包括:宿舍编号、宿舍楼名、楼层号、宿舍类型(二人间、四人间、六 人间、八人间) 、收费标准等。
(3)住宿信息包括:学生、宿舍、入住时间、是否欠费等。
(4)完成以下的操作:学生信息和宿舍信息的添加、修改、浏览、删除和查询。 (5)完成以下的操作:学生入住、缴费;住宿信息浏览、学生住宿信息查询、宿舍住 宿信息浏览与查询。 2、提示: (1)增加必要的数据成员、成员函数或类; (2)对象指针(住宿信息类的对象指针成员可以指向相关的宿舍、对象指针数组成员可 以表示该宿舍的学生们)
- #include <iostream>
- #include <string>
- using namespace std;
-
- //定义学生和宿舍的最大数量
- #define MAXSTU 50
- #define MAXDOR 20
-
- //定义学生类
- class Student
- {
- private:
- int mXuehao; //学号
- char* mName; //名字
- int mAge; //年龄
- char mSex; //性别
- char* mPartment;//学院
- int mGrade; //年级
- public:
- Student(){mName = 0;mPartment = 0;}
- Student(int id,const char* name,int age,char sex,const char* par,int grade)
- {
- mXuehao = id;
- mName = new char[strlen(name)+1];
- memcpy(mName,name,strlen(name));
- mName[strlen(name)] = '\0';
- mAge = age;
- mSex = toupper(sex);
- mPartment = new char[strlen(par)+1];
- memcpy(mPartment,par,strlen(par));
- mPartment[strlen(par)] = '\0';
- mGrade = grade;
- }
- ~Student()
- {
- if (mName)
- {
- delete[] mName;
- mName = 0;
- }
- if (mPartment)
- {
- delete[] mPartment;
- mPartment = 0;
- }
- }
- //设置类属性
- void setId(int id){mXuehao = id;}
- void setName(const char* name)
- {
- if (mName != 0)
- {
- delete[] mName;
- mName = 0;
- }
- mName = new char[strlen(name)+1];
- memcpy(mName,name,strlen(name));
- mName[strlen(name)] = '\0';
- }
- void setSex(char sex){mSex = toupper(sex);}
- void setAge(int age){mAge = age;}
- void setPartment(const char* par)
- {
- if(mPartment)
- delete []mPartment;
- mPartment = new char[strlen(par)+1];
- memcpy(mPartment,par,strlen(par));
- mPartment[strlen(par)] = '\0';
- }
- void setGrade(int g){mGrade = g;}
- //获取类属性
- int getId(){return mXuehao;}
- char* getName(){return mName;}
- char getSex(){return mSex;}
- int getAge(){return mAge;}
- char* getPartment(){return mPartment;}
- int getGrade(){return mGrade;}
- void display()
- {
- cout.setf(ios::left);//设置左对齐
- cout << mXuehao << " " ;
- cout.fill(' '); //设置不足位填充方式
- cout.width(10); //设置宽度,只对下一条有作用
- cout << mName ;
- cout << " " << mSex << " ";
- cout << mAge << " " ;
- cout.fill(' ');
- cout.width(20);
- cout<< mPartment ;
- cout<< " " << mGrade << endl;
- cout.unsetf(ios::left); //取消左对齐
- }
- };
-
- //定义宿舍类型
- enum EDomType
- {
- e_dorm_two=1,
- e_dorm_four,
- e_dorm_six,
- e_dorm_eight
- };
-
- //定义宿舍类
- class Dormatory
- {
- private:
- int mSusheId; //宿舍号
- char* mDorName; //宿舍楼名
- int mLayer; //楼层号
- EDomType mEtype;//类型
- int mPrice; //价格
- public:
- Dormatory(){mDorName = 0;}
- Dormatory(int id,const char* name,int layer,EDomType e,int price)
- {
- mSusheId = id;
- mDorName = new char[strlen(name)+1];
- memcpy(mDorName,name,strlen(name));
- mDorName[strlen(name)] = '\0';
- mLayer = layer;
- mEtype = e;
- mPrice = price;
- }
-
- ~Dormatory()
- {
- if(mDorName)
- {
- delete[] mDorName;
- mDorName = 0;
- }
- }
- //设置类属性
- void setId(int id){mSusheId = id;}
- void setName(const char* name)
- {
- if(mDorName) delete[] mDorName;
- mDorName = new char[strlen(name)+1];
- memcpy(mDorName,name,strlen(name));
- mDorName[strlen(name)] = '\0';
- }
- void setLayer(int layer){mLayer = layer;}
- void setDormType(EDomType e){mEtype = e;}
- void setPrice(int p){mPrice = p;}
-
- //获取类属性
- int getId(){return mSusheId;}
- char* getName(){return mDorName;}
- int getLayer(){return mLayer;}
- EDomType getType(){return mEtype;}
- int getPrice(){return mPrice;}
- void display()
- {
- cout.setf(ios::left);
- cout<< mSusheId << " ";
- cout.fill(' ');
- cout.width(10); //名字最多5个汉子或者10个英文字符
- cout << mDorName;
- cout << " " << mLayer << " ";
- if(e_dorm_two == mEtype)
- cout << "二人间" ;
- else if(e_dorm_four == mEtype)
- cout << "四人间" ;
- else if(e_dorm_six == mEtype)
- cout << "六人间" ;
- else
- cout << "八人间" ;
- cout << " " << mPrice << endl;
- cout.unsetf(ios::left);
- }
- };
- //定义时间类
- struct Date
- {
- int year;
- int month;
- int day;
- };
- //住宿信息
- class HomeInfo
- {
- private:
- Dormatory* mDormatory; //宿舍对象指针
- Student* mStu[8]; //学生指针数组
- bool mbqf[8]; //是否欠费,true欠费,否则不欠费
- Date mHomeDate[8]; //入住时间
-
- int mCurrentNmb;//当前已入住人数
- char mDormSex; //当前宿舍的性别
- public:
- HomeInfo()
- {
- for (int i =0;i< 8;i++)
- {
- mStu[i] = 0;
- mbqf[i] = true;
- }
- mDormatory = 0;
- mCurrentNmb = 0;
- mDormSex = 'n'; //表示该宿舍尚未分配
- }
-
- void setDormatory(Dormatory* p){mDormatory = p;}
- void setSex(char sex){mDormSex = sex;}
- Dormatory* getDormatory(){return mDormatory;}
- char getSex(){return mDormSex;}
- int getCurrentNmb(){return mCurrentNmb;}
- //查看某个学生是否在该房间
- bool isIn(Student* stu)
- {
- for (int i=0;i<mCurrentNmb;i++)
- {
- if(mStu[i] == stu)
- return true;
- }
- return false;
- }
-
- //是否已经注满
- bool isFull()
- {
- if(e_dorm_eight == mDormatory->getType() && mCurrentNmb == 8)
- return true;
- else if(e_dorm_six == mDormatory->getType() && mCurrentNmb == 6)
- return true;
- else if(e_dorm_four == mDormatory->getType() && mCurrentNmb == 4)
- return true;
- else if(e_dorm_two == mDormatory->getType() && mCurrentNmb == 2)
- return true;
- return false;
- }
- //办理入住
- bool Home(Student *stu

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。