C++實(shí)現(xiàn)學(xué)生住宿管理系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)學(xué)生住宿管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
功能
(1)學(xué)生信息包括:姓名、學(xué)號(hào)、年齡、性別、學(xué)院、年級(jí)等
(2)宿舍信息包括:宿舍編號(hào)、宿舍樓名、樓層號(hào)、宿舍類型(二人間、四人間、六 人間、八人間) 、收費(fèi)標(biāo)準(zhǔn)等。
(3)住宿信息包括:學(xué)生、宿舍、入住時(shí)間、是否欠費(fèi)等。
(4)完成以下的操作:學(xué)生信息和宿舍信息的添加、修改、瀏覽、刪除和查詢。
(5)完成以下的操作:學(xué)生入住、繳費(fèi);住宿信息瀏覽、學(xué)生住宿信息查詢、宿舍住 宿信息瀏覽與查詢。
提示:
(1)增加必要的數(shù)據(jù)成員、成員函數(shù)或類; (2)對(duì)象指針(住宿信息類的對(duì)象指針成員可以指向相關(guān)的宿舍、對(duì)象指針數(shù)組成員可 以表示該宿舍的學(xué)生們)
代碼:
#include <iostream> #include <string> using namespace std; ? //定義學(xué)生和宿舍的最大數(shù)量 #define MAXSTU 50 #define MAXDOR 20 ? //定義學(xué)生類 class Student { private: ?? ?int mXuehao; ? ?//學(xué)號(hào) ?? ?char* mName; ? ?//名字 ?? ?int mAge; ? ? ? //年齡 ?? ?char mSex; ? ? ?//性別 ?? ?char* mPartment;//學(xué)院 ?? ?int mGrade; ? ? //年級(jí) 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; ?? ??? ?} ?? ?} ?? ?//設(shè)置類屬性 ?? ?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);//設(shè)置左對(duì)齊 ?? ??? ?cout << mXuehao << " " ; ?? ??? ?cout.fill(' '); ?//設(shè)置不足位填充方式 ?? ??? ?cout.width(10); ?//設(shè)置寬度,只對(duì)下一條有作用 ?? ??? ?cout << mName ; ?? ??? ?cout << " " << mSex << " "; ?? ??? ?cout << mAge << " " ; ?? ??? ?cout.fill(' '); ?? ??? ?cout.width(20); ?? ??? ?cout<< mPartment ; ?? ??? ?cout<< " " << mGrade << endl; ?? ??? ?cout.unsetf(ios::left); //取消左對(duì)齊 ?? ?} }; ? //定義宿舍類型 enum EDomType { ?? ?e_dorm_two=1, ?? ?e_dorm_four, ?? ?e_dorm_six, ?? ?e_dorm_eight }; ? //定義宿舍類 class Dormatory { private: ?? ?int mSusheId; ? //宿舍號(hào) ?? ?char* mDorName; //宿舍樓名 ?? ?int mLayer; ? ? //樓層號(hào) ?? ?EDomType mEtype;//類型 ?? ?int mPrice; ? ? //價(jià)格 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; ?? ??? ?} ?? ?} ?? ?//設(shè)置類屬性 ?? ?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個(gè)漢子或者10個(gè)英文字符 ?? ??? ?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); ?? ?} }; //定義時(shí)間類 struct Date? { ?? ?int year; ?? ?int month; ?? ?int day; }; //住宿信息 class HomeInfo { private: ?? ?Dormatory* mDormatory; ? //宿舍對(duì)象指針 ?? ?Student* mStu[8]; ? ? ? ?//學(xué)生指針數(shù)組 ?? ?bool mbqf[8]; ? ? ? ? ? ?//是否欠費(fèi),true欠費(fèi),否則不欠費(fèi) ?? ?Date mHomeDate[8]; ? ? ? //入住時(shí)間 ? ?? ?int mCurrentNmb;//當(dāng)前已入住人數(shù) ?? ?char mDormSex; ?//當(dāng)前宿舍的性別 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;} ?? ?//查看某個(gè)學(xué)生是否在該房間 ?? ?bool isIn(Student* stu) ?? ?{ ?? ??? ?for (int i=0;i<mCurrentNmb;i++) ?? ??? ?{ ?? ??? ??? ?if(mStu[i] == stu) ?? ??? ??? ??? ?return true; ?? ??? ?} ?? ??? ?return false; ?? ?} ? ?? ?//是否已經(jīng)注滿 ?? ?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,Date d) ?? ?{ ?? ??? ?if(isFull()) ?? ??? ?{ ?? ??? ??? ?cout << "宿舍已滿,請重新選擇宿舍?。?!"<< endl; ?? ??? ??? ?return false; ?? ??? ?} ?? ??? ?if(mDormSex == 'n') ?? ??? ??? ?mDormSex = stu->getSex(); ?? ??? ?mStu[mCurrentNmb] = stu; ?? ??? ?mHomeDate[mCurrentNmb] = d; ?? ??? ?mCurrentNmb++; ?? ??? ?cout << "入住成功!宿舍:" << mDormatory->getName() << " " << mDormatory->getLayer() << " " << mDormatory->getId() << endl; ?? ??? ?return true; ?? ?} ?? ?//付費(fèi) ?? ?void pay(Student *stu) ?? ?{ ?? ??? ?for (int i=0;i<mCurrentNmb;i++) ?? ??? ?{ ?? ??? ??? ?if(mStu[i] == stu) ?? ??? ??? ?{ ?? ??? ??? ??? ?mbqf[i] = false; ?? ??? ??? ??? ?cout << "繳費(fèi)成功!!"<< endl; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ? ?? ?//學(xué)生離開 ?? ?void Leave(Student* stu) ?? ?{ ?? ??? ?for (int i=0;i<mCurrentNmb;i++) ?? ??? ?{ ?? ??? ??? ?if(mStu[i] == stu) ?? ??? ??? ?{ ?? ??? ??? ??? ?for(int j= i;j< mCurrentNmb-1;j++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?mbqf[j] = mbqf[j+1]; ?? ??? ??? ??? ??? ?mStu[j] = mStu[j+1]; ?? ??? ??? ??? ??? ?mHomeDate[j] = mHomeDate[j+1]; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?mCurrentNmb -=1; ?//入住人數(shù)減去1 ?? ??? ??? ??? ?cout << "該學(xué)生已從入住信息中刪除" << endl; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?//判斷學(xué)生是否已經(jīng)繳費(fèi) ?? ?bool isPayed(Student* stu) ?? ?{ ?? ??? ?for (int i=0;i<mCurrentNmb;i++) ?? ??? ?{ ?? ??? ??? ?if(mStu[i] == stu) ?? ??? ??? ?{ ?? ??? ??? ??? ?return (!mbqf[i]); ?? ??? ??? ?} ?? ??? ?} ?? ??? ?return false; ?? ?} ?? ?//顯示入住信息 ?? ?void display() ?? ?{ ?? ??? ?mDormatory->display(); ?? ??? ?for (int i =0;i<mCurrentNmb;i++) ?? ??? ?{ ?? ??? ??? ?cout << " ?>>"; ?? ??? ??? ?mStu[i]->display(); ?? ??? ?} ?? ?} }; ? //轉(zhuǎn)換類型 EDomType getDormType(int type) { ?? ?if(1== type) ?? ??? ?return e_dorm_two; ?? ?else if(2 == type) ?? ??? ?return e_dorm_four; ?? ?else if(3== type) ?? ??? ?return e_dorm_six; ?? ?else? ?? ??? ?return e_dorm_eight; } ? ? ? //1添加學(xué)生 void AddStudent(Student* allStudents[],int &nRealStu) { ?? ?bool bgo = true; ?? ?int id; ?? ?char name[20]={0}; ?? ?char sex; ?? ?int age; ?? ?char par[30]={0}; ?? ?int grade; ?? ?char ch; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?cout << "請輸入學(xué)生學(xué)號(hào):"; ?? ??? ? ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?id = 0; ?? ??? ??? ?cin >> id; ?? ??? ??? ?if(id <= 0) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "輸入不合法,請重新輸入"; ?? ??? ??? ??? ?if (cin.fail()) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ??? ?cin.sync(); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?else ?? ??? ??? ??? ?break; ?? ??? ?} ?? ??? ? ?? ??? ? ?? ??? ?cout << "請輸入學(xué)生姓名:" ; ?? ??? ?memset(name,0,20); ?? ??? ?cin >> name; ?? ??? ?cout << "請輸入學(xué)生性別:"; ?? ??? ?cin >> sex; ?? ??? ?cout << "請輸入學(xué)生年齡:"; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?age = 0; ?? ??? ??? ?cin >> age; ?? ??? ??? ?if (age <= 0) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "輸入不合法,請重新輸入"; ?? ??? ??? ??? ?if (cin.fail()) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ??? ?cin.sync(); ?? ??? ??? ??? ?} ?? ??? ??? ?}else ?? ??? ??? ??? ?break; ?? ??? ?} ?? ??? ? ?? ??? ?cout << "請輸入學(xué)院:"; ?? ??? ?memset(par,0,30); ?? ??? ?cin >> par; ?? ??? ?cout << "請輸入年級(jí):"; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?grade = 0; ?? ??? ??? ?cin >> grade; ?? ??? ??? ?if (grade <= 0) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "輸入不合法,請重新輸入"; ?? ??? ??? ??? ?if (cin.fail()) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ??? ?cin.sync(); ?? ??? ??? ??? ?} ?? ??? ??? ?}else ?? ??? ??? ??? ?break; ?? ??? ?} ?? ??? ? ?? ??? ?Student* stu = new Student(id,name,age,sex,par,grade); ?? ??? ?allStudents[nRealStu] = stu; ?? ??? ?nRealStu++; ?? ??? ?cout << "學(xué)生添加成功!" << endl; ?? ??? ?cout << "是否繼續(xù)添加(Y/N)?" ; ?? ??? ?while(true) ?? ??? ?{ ?? ??? ??? ?if (cin.fail()) ?? ??? ??? ?{ ?? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ?cin.sync(); ?? ??? ??? ?} ?? ??? ??? ?cin >> ch; ?? ??? ??? ? ?? ??? ??? ?if (ch == 'N' || ch == 'n') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?}else if(ch == 'Y' || ch == 'y') ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ? ?? ?system("pause"); } ? //2修改學(xué)生信息 void ModStudent(Student* allStudents[],int nRealStu) { ?? ?int id; ?? ?char name[20]={0}; ?? ?char sex; ?? ?int age; ?? ?char par[30]={0}; ?? ?int grade; ?? ?Student* stu = 0; ?? ?system("cls"); ?? ?cout << "請輸入需要修改信息的學(xué)生學(xué)號(hào):"; ?? ?while(1) ?? ?{ ?? ??? ?id = 0; ?? ??? ?cin >> id; ?? ??? ?if(id > 0) ?? ??? ??? ?break; ?? ??? ?if (cin.fail()) ?? ??? ?{ ?? ??? ??? ?cin.clear(); ?? ??? ??? ?cin.sync(); ?? ??? ?} ?? ??? ?cout << "輸入不合法,請重新輸入" << endl; ?? ?} ?? ? ? ?? ?for (int i =0;i< nRealStu;i++) ?? ?{ ?? ??? ?if(allStudents[i]->getId() == id) ?? ??? ?{ ?? ??? ??? ?stu = allStudents[i]; ?? ??? ??? ?cout << "找到學(xué)生信息如下:" << endl; ?? ??? ??? ?cout << "姓名:" << stu->getName() << endl;; ?? ??? ??? ?cout << "性別:" << stu->getSex() << endl; ?? ??? ??? ?cout << "年齡:" << stu->getAge() << endl;; ?? ??? ??? ?cout << "學(xué)院:" << stu->getPartment() << endl; ?? ??? ??? ?cout << "年級(jí):"<< stu->getGrade() << endl; ? ?? ??? ??? ?cout << "請輸入需要修改的信息:" << endl; ? ?? ??? ??? ?cout << "請輸入學(xué)生姓名:"; ?? ??? ??? ?cin >> name; ?? ??? ??? ?cout << "請輸入學(xué)生性別:"; ?? ??? ??? ?cin >> sex; ?? ??? ??? ?cout << "請輸入學(xué)生年齡:"; ?? ??? ??? ?cin >> age; ?? ??? ??? ?cout << "請輸入學(xué)院:"; ?? ??? ??? ?cin >> par; ?? ??? ??? ?cout << "請輸入年級(jí):"; ?? ??? ??? ?cin >> grade; ? ?? ??? ??? ?allStudents[i]->setName(name); ?? ??? ??? ?allStudents[i]->setSex(sex); ?? ??? ??? ?allStudents[i]->setAge(age); ?? ??? ??? ?allStudents[i]->setPartment(par); ?? ??? ??? ?allStudents[i]->setGrade(grade); ? ?? ??? ??? ?cout << "學(xué)生信息修改成功!" << endl; ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?if(stu==0) ?? ??? ?cout << "未找到該學(xué)生信息!" << endl; ?? ? ?? ?system("pause"); } ? //3刪除學(xué)生信息 void DeleteStudent(Student* allStudents[],int &nRealStu,HomeInfo allInfo[],int nRealDorm) { ?? ?int id; ?? ?Student* stu = 0; ?? ?system("cls"); ?? ?cout << "請輸入需要?jiǎng)h除信息的學(xué)生學(xué)號(hào):"; ?? ?while(1) ?? ?{ ?? ??? ?id = 0; ?? ??? ?cin >> id; ?? ??? ?if(id > 0) ?? ??? ??? ?break; ?? ??? ?if (cin.fail()) ?? ??? ?{ ?? ??? ??? ?cin.clear(); ?? ??? ??? ?cin.sync(); ?? ??? ?} ?? ??? ?cout << "輸入不合法,請重新輸入" << endl; ?? ?} ? ?? ?for (int i =0;i< nRealStu;i++) ?? ?{ ?? ??? ?if(allStudents[i]->getId() == id) ?? ??? ?{ ?? ??? ??? ?stu = allStudents[i]; ?? ??? ??? ?//刪除學(xué)生 ?? ??? ??? ?nRealStu -=1; ?? ??? ??? ?//數(shù)組元素前移 ?? ??? ??? ?for (int j = i;j< nRealStu;j++) ?? ??? ??? ?{ ?? ??? ??? ??? ?allStudents[j] = allStudents[j+1]; ?? ??? ??? ?} ?? ??? ??? ?cout << "刪除成功!!" << endl; ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?if (stu == 0) ?? ?{ ?? ??? ?cout << "未找到該學(xué)生信息" << endl; ?? ?}else ?? ?{ ?? ??? ?//從住宿信息中刪除該學(xué)生信息 ?? ??? ?for (int i=0;i< nRealDorm;i++) ?? ??? ?{ ?? ??? ??? ?allInfo[i].Leave(stu); ?? ??? ?} ?? ??? ?delete stu; ?? ??? ?stu = 0; ?? ?} ?? ?system("pause"); } ? //4.瀏覽所有學(xué)生信息 void ShowAllStudents(Student* allStudents[],int nRealStu) { ?? ?system("cls"); ?? ?cout << "學(xué)生信息如下:" << endl; ?? ?for (int i =0;i< nRealStu;i++) ?? ?{ ?? ??? ?allStudents[i]->display(); ?? ?} ?? ?system("pause"); } //5.查詢學(xué)生信息 void FindStudents(Student* allStudents[],int nRealStu) { ?? ?int i,opt; ?? ?int id; ?? ?char tmp[40] = {0}; ?? ?bool bgo = true; ?? ?bool isfind = false; ?? ?char ch; ?? ?while(bgo) ?? ?{ ? ?? ??? ?system("cls"); ?? ??? ?cout << "1.按學(xué)號(hào)查詢" << endl; ?? ??? ?cout << "2.按姓名查詢" << endl; ?? ??? ?cin >> opt; ?? ??? ?switch(opt) ?? ??? ?{ ?? ??? ?case 1: ?? ??? ??? ?cout << "請輸入需要查詢的學(xué)號(hào):" << endl; ?? ??? ??? ?while(1) ?? ??? ??? ?{ ?? ??? ??? ??? ?cin >> id; ?? ??? ??? ??? ?if(id > 0)break; ?? ??? ??? ??? ?else ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if (cin.fail()) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ??? ??? ?cin.sync(); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?cout << "輸入不合法,請重新輸入" << endl; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?for (i=0;i<nRealStu;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(allStudents[i]->getId() == id) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?allStudents[i]->display(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if (i == nRealStu) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "未找到學(xué)號(hào)為"<< id <<"的學(xué)生信息..." << endl; ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?break; ?? ??? ?case 2: ?? ??? ??? ?cout << "請輸入需要查詢的姓名:" << endl; ?? ??? ??? ?memset(tmp,0,40); ?? ??? ??? ?cin >> tmp; ?? ??? ??? ?isfind = false; ?? ??? ??? ?for (i=0;i<nRealStu;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(strcmp(allStudents[i]->getName(),tmp) == 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?isfind = true; ?? ??? ??? ??? ??? ?allStudents[i]->display(); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if (!isfind) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "未找到姓名為"<< tmp <<"的學(xué)生信息..." << endl; ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?} ? ?? ??? ?cout << "是否繼續(xù)查詢(Y/N)?"; ?? ??? ?while(true) ?? ??? ?{ ?? ??? ??? ?if (cin.fail()) ?? ??? ??? ?{ ?? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ?cin.sync(); ?? ??? ??? ?} ?? ??? ??? ?cin >> ch; ?? ??? ??? ?if (ch == 'n' || ch == 'N') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?}else if(ch == 'y'||ch =='Y') ?? ??? ??? ?{ ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?system("pause"); } ? //6.添加宿舍 void AddDormatory(Dormatory* allDormatory[],int &nRealDorm,HomeInfo allInfo[]) { ?? ?int id; ?? ?char name[20]={0}; ?? ?int layer; ?? ?int type; ?? ?int price; ?? ?char ch; ?? ?bool bgo = true; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?cout << "請輸入宿舍編號(hào):"; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?id = 0; ?? ??? ??? ?cin >> id; ?? ??? ??? ?if(id > 0) break; ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?if (cin.fail()) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ??? ?cin.sync(); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?cout << "輸入不合法,請重新輸入" << endl; ?? ??? ??? ?} ?? ??? ?} ?? ? ?? ??? ?cout << "請輸入宿舍名稱:"; ?? ??? ?cin >> name; ?? ??? ?cout << "請輸入樓層號(hào):"; ?? ??? ?cin >> layer; ?? ??? ?cout << "請輸入宿舍類型(1.二人間 2.四人間 3.六人間 4.八人間)"; ?? ??? ?cin >> type; ?? ??? ?cout << "請輸入價(jià)格:"; ?? ??? ?cin >> price; ?? ??? ?Dormatory* st = new Dormatory(id,name,layer,getDormType(type),price); ?? ??? ?allDormatory[nRealDorm] = st; ? ?? ??? ?//添加入住信息 ?? ??? ?allInfo[nRealDorm].setDormatory(st); ? ?? ??? ?nRealDorm += 1; ?? ??? ?cout << "宿舍添加成功!!" << endl; ?? ??? ?cout << "是否繼續(xù)添加(Y/N)?"; ?? ??? ?while(true) ?? ??? ?{ ?? ??? ??? ?cin >> ch; ?? ??? ??? ?if(ch == 'y' || ch == 'Y') ?? ??? ??? ??? ?break; ?? ??? ??? ?else if(ch == 'N' || ch == 'n') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?system("pause"); } //7.修改宿舍信息 void ModDormatory(Dormatory* allDormatory[],int nRealDorm) { ?? ?int id; ?? ?int i; ?? ?char name[20]={0}; ?? ?int layer; ?? ?int type; ?? ?int price; ?? ?system("cls"); ?? ?cout << "請輸入要修改信息的宿舍編號(hào):"; ?? ?while(1) ?? ?{ ?? ??? ?id = 0; ?? ??? ?cin >> id; ?? ??? ?if (id > 0)break; ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?if (cin.fail()) ?? ??? ??? ?{ ?? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ?cin.sync(); ?? ??? ??? ?} ?? ??? ??? ?cout << "輸入不合法,請重新輸入" << endl; ?? ??? ?} ?? ?} ? ?? ?for (i=0;i<nRealDorm;i++) ?? ?{ ?? ??? ?if (allDormatory[i]->getId() == id) ?? ??? ?{ ?? ??? ??? ?cout << "該宿舍當(dāng)前信息如下:" << endl; ?? ??? ??? ?allDormatory[i]->display(); ?? ??? ??? ?cout << "-------------------------" << endl; ?? ??? ??? ?cout << "請輸入宿舍名稱:"; ?? ??? ??? ?cin >> name; ?? ??? ??? ?cout << "請輸入樓層號(hào):"; ?? ??? ??? ?cin >> layer; ?? ??? ??? ?cout << "請輸入宿舍類型(1.二人間 2.四人間 3.六人間 4.八人間)"; ?? ??? ??? ?cin >> type; ?? ??? ??? ?cout << "請輸入價(jià)格:"; ?? ??? ??? ?cin >> price; ?? ??? ??? ?allDormatory[i]->setName(name); ?? ??? ??? ?allDormatory[i]->setLayer(layer); ?? ??? ??? ?allDormatory[i]->setDormType(getDormType(type)); ?? ??? ??? ?allDormatory[i]->setPrice(price); ?? ??? ??? ?cout << "宿舍信息修改成功!!"<< endl; ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?system("pause"); } //8.刪除宿舍信息 void DeleteDormatory(Dormatory* allDormatory[],int &nRealDorm,HomeInfo allInfo[]) { ?? ?int i,j,id; ?? ?bool isfind = false; ?? ?Dormatory* dor = 0; ?? ?system("cls"); ?? ?cout << "請輸入需要?jiǎng)h除的宿舍號(hào):"; ?? ?while(1) ?? ?{ ?? ??? ?id = 0; ?? ??? ?cin >> id; ?? ??? ?if (id > 0)break; ?? ??? ?else ?? ??? ?{ ?? ??? ??? ?if (cin.fail()) ?? ??? ??? ?{ ?? ??? ??? ??? ?cin.clear(); ?? ??? ??? ??? ?cin.sync(); ?? ??? ??? ?} ?? ??? ??? ?cout << "輸入不合法,請重新輸入" << endl; ?? ??? ?} ?? ?} ?? ?for (i=0;i<nRealDorm;i++) ?? ?{ ?? ??? ?if (allDormatory[i]->getId() == id) ?? ??? ?{ ?? ??? ??? ?dor = allDormatory[i]; ?? ??? ??? ?//數(shù)組前移 ?? ??? ??? ?for (j = i;j<nRealDorm-1;j++) ?? ??? ??? ?{ ?? ??? ??? ??? ?allDormatory[j] = allDormatory[j+1]; ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?if (dor == 0) ?? ?{ ?? ??? ?cout << "未找到宿舍號(hào)為" << id << "的宿舍信息" << endl; ?? ?}else ?? ?{ ?? ??? ?//從入住信息中刪除 ?? ??? ?for (i = 0;i<nRealDorm;i++) ?? ??? ?{ ?? ??? ??? ?if (allInfo[i].getDormatory() == dor) ?? ??? ??? ?{ ?? ??? ??? ??? ?for (j = i;j<nRealDorm-1;j++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?allInfo[j] = allInfo[j+1]; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?delete dor; ?? ??? ?dor = 0; ?? ??? ?nRealDorm -=1; ?? ??? ?cout << "宿舍信息已刪除!!" << endl; ?? ?} ?? ?system("pause"); } //9.瀏覽所有宿舍信息 void ShowAllDormatory(Dormatory* allDormatory[],int nRealDorm) { ?? ?system("cls"); ?? ?cout << "宿舍信息如下:" << endl; ?? ?for (int i=0;i<nRealDorm;i++) ?? ?{ ?? ??? ?allDormatory[i]->display(); ?? ?} ?? ?system("pause"); } //10.查詢宿舍信息 void FindDormatory(Dormatory* allDormatory[],int nRealDorm) { ?? ?int id,i; ?? ?char tmp[30]={0}; ?? ?char ch; ?? ?int opt; ?? ?bool isfind = false; ?? ?bool bgo = true; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?cout << "1.根據(jù)宿舍編號(hào)查詢" << endl; ?? ??? ?cout << "2.根據(jù)宿舍名查詢" << endl; ?? ??? ?cout << "3.根據(jù)樓層號(hào)查詢" << endl; ?? ??? ?cout << "4.根據(jù)宿舍類型查詢" << endl; ?? ??? ?cin >> opt; ?? ??? ?switch(opt) ?? ??? ?{ ?? ??? ?case 1: ?? ??? ??? ?cout << "請輸入宿舍編號(hào):"; ?? ??? ??? ?cin >> id; ?? ??? ??? ?for (i=0;i<nRealDorm;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(allDormatory[i]->getId() == id) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?allDormatory[i]->display(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if (i == nRealDorm) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "未找到是宿舍編號(hào)為" << id << "的宿舍信息" << endl; ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?case 2: ?? ??? ??? ?cout << "請輸入宿舍名:"; ?? ??? ??? ?cin >> tmp; ?? ??? ??? ?isfind = false; ?? ??? ??? ?for (i=0;i<nRealDorm;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(strcmp(allDormatory[i]->getName(),tmp) == 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?allDormatory[i]->display(); ?? ??? ??? ??? ??? ?isfind = true; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if (!isfind) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "未找到是宿舍名為" << tmp << "的宿舍信息" << endl; ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?case 3: ?? ??? ??? ?cout << "請輸入樓層號(hào):"; ?? ??? ??? ?cin >> id; ?? ??? ??? ?isfind = false; ?? ??? ??? ?for (i=0;i<nRealDorm;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(allDormatory[i]->getLayer() == id) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?allDormatory[i]->display(); ?? ??? ??? ??? ??? ?isfind = true; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if (!isfind) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "未找到是樓層號(hào)為" << id << "的宿舍信息" << endl; ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?case 4: ?? ??? ??? ?cout << "請輸入宿舍類型(1.二人間 2.四人間 3.六人間 4.八人間):"; ?? ??? ??? ?cin >> id; ?? ??? ??? ?isfind = false; ?? ??? ??? ?for (i=0;i<nRealDorm;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(allDormatory[i]->getType() == getDormType(id)) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?allDormatory[i]->display(); ?? ??? ??? ??? ??? ?isfind = true; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if (!isfind) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(1 == id) ?? ??? ??? ??? ??? ?cout << "未找到是房間類型為二人間的宿舍信息" << endl; ?? ??? ??? ??? ?else if(2 == id) ?? ??? ??? ??? ??? ?cout << "未找到是房間類型為四人間的宿舍信息" << endl; ?? ??? ??? ??? ?else if(3 == id) ?? ??? ??? ??? ??? ?cout << "未找到是房間類型為六人間的宿舍信息" << endl; ?? ??? ??? ??? ?else? ?? ??? ??? ??? ??? ?cout << "未找到是房間類型為八人間的宿舍信息" << endl; ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?} ?? ? ?? ??? ?cout << "是否繼續(xù)查詢(Y/N)?" << endl; ?? ??? ?while(true) ?? ??? ?{ ?? ??? ??? ?cin >> ch; ?? ??? ??? ?if(ch == 'y' || ch =='Y') ?? ??? ??? ??? ?break; ?? ??? ??? ?else if(ch == 'n' || ch == 'N') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ? ?? ??? ?} ?? ?} ?? ?system("pause"); } ? //獲取可用的宿舍-功能11調(diào)用 int GetDormatory(Student* stu,HomeInfo allinfo[],int nRealNmb) { ?? ?int i = 0; ?? ?//先找是否有未住滿的同性別宿舍 ?? ?for (i=0;i<nRealNmb;i++) ?? ?{ ?? ??? ?if ( (allinfo[i].getSex() == stu->getSex()) && (!allinfo[i].isFull()) ) ?? ??? ?{ ?? ??? ??? ?return i; ?? ??? ?} ?? ?} ?? ?//沒有已分配的宿舍,則從未分配性別的宿舍中找一個(gè) ?? ?for (i=0;i<nRealNmb;i++) ?? ?{ ?? ??? ?if (allinfo[i].getSex() == 'n') ?? ??? ?{ ?? ??? ??? ?return i; ?? ??? ?} ?? ?} ?? ?return -1; } ? ? //11學(xué)生入住 void StudentIn(Student* allStudents[],int nRealStu,Dormatory* allDormatory[],int nRealDorm,HomeInfo allInfo[]) { ?? ?int id; ?? ?bool bgo = true; ?? ?Student* stu = 0; ?? ?char ch; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?cout << "請輸入需要辦理入住的學(xué)生的學(xué)號(hào):"; ?? ??? ?cin >> id; ?? ??? ?//查找學(xué)生信息 ?? ??? ?stu = 0; ?? ??? ?for (int i = 0;i<nRealStu;i++) ?? ??? ?{ ?? ??? ??? ?if(allStudents[i]->getId()==id) ?? ??? ??? ?{ ?? ??? ??? ??? ?stu = allStudents[i]; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?if (stu == 0) ?? ??? ?{ ?? ??? ??? ?cout << "未找到該學(xué)號(hào)的學(xué)生"<< endl; ?? ??? ?}else ?? ??? ?{ ?? ??? ??? ?//判斷學(xué)生是否已經(jīng)入住 ?? ??? ??? ?bool isIn = false; ?? ??? ??? ?for (int i=0;i<nRealDorm;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (allInfo[i].isIn(stu)) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?isIn = true; ?? ??? ??? ??? ??? ?cout << "該學(xué)生已經(jīng)入住" << endl; ?? ??? ??? ??? ??? ?allInfo[i].getDormatory()->display(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?//如果沒有入住,則辦理入住 ?? ??? ??? ?if (!isIn) ?? ??? ??? ?{ ?? ??? ??? ??? ?int index = GetDormatory(stu,allInfo,nRealDorm); ?? ??? ??? ??? ?if(index == -1) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cout << "沒有宿舍可供分配" << endl; ?? ??? ??? ??? ?}else ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?cout << "請輸入入住年、月、日:"; ?? ??? ??? ??? ??? ?Date dd; ?? ??? ??? ??? ??? ?cin >> dd.year >> dd.month >> dd.day; ?? ??? ??? ??? ??? ?allInfo[index].Home(stu,dd); ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?cout << "是否繼續(xù)辦理入住(Y/N)?"; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?cin >> ch; ?? ??? ??? ?if(ch == 'y' || ch == 'Y') ?? ??? ??? ??? ?break; ?? ??? ??? ?else if(ch =='n' || ch == 'N') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?}//while end ?? ?system("pause"); } ? //12學(xué)生繳費(fèi) void StudentPay(Student* allStudents[],int nRealStu,HomeInfo allInfo[],int nRealDorm) { ?? ?int id; ?? ?bool bgo = true; ?? ?Student* stu = 0; ?? ?char ch; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?cout << "請輸入要繳費(fèi)的學(xué)生學(xué)號(hào):"; ?? ??? ?cin >> id; ?? ??? ?//查找學(xué)生信息 ?? ??? ?stu = 0; ?? ??? ?for (int i = 0;i<nRealStu;i++) ?? ??? ?{ ?? ??? ??? ?if(allStudents[i]->getId()==id) ?? ??? ??? ?{ ?? ??? ??? ??? ?stu = allStudents[i]; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?if (stu == 0) ?? ??? ?{ ?? ??? ??? ?cout << "未找到該學(xué)號(hào)的學(xué)生"<< endl; ?? ??? ?}else ?? ??? ?{ ?? ??? ??? ?//查找該學(xué)生的入住信息 ?? ??? ??? ?int i = 0; ?? ??? ??? ?for (i=0;i< nRealDorm;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if (allInfo[i].isIn(stu)) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if(allInfo[i].isPayed(stu)) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?cout << "該學(xué)生已經(jīng)付費(fèi)" << endl; ?? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ?}else ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?allInfo[i].pay(stu); ?? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if (i == nRealDorm) ?? ??? ??? ?{ ?? ??? ??? ??? ?cout << "該學(xué)生尚未辦理入住,請先辦理入住" << endl; ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?cout << "是否繼續(xù)辦理繳費(fèi)(Y/N)?"; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?cin >> ch; ?? ??? ??? ?if(ch == 'y' || ch == 'Y') ?? ??? ??? ??? ?break; ?? ??? ??? ?else if(ch =='n' || ch == 'N') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?system("pause"); } //13住宿信息瀏覽 void ShowHomeInfo(HomeInfo allInfo[],int nRealDorm) { ?? ?int i; ?? ?system("cls"); ?? ?cout << "入住信息如下:" <<endl; ?? ?for (i=0;i<nRealDorm;i++) ?? ?{ ?? ??? ?allInfo[i].display(); ?? ?} ?? ?system("pause"); } //14學(xué)生入住信息查詢 void FindStudent(Student* allStudents[],int nRealStu,HomeInfo allInfo[],int nRealDorm) { ?? ?int i,j; ?? ?Student* stu = 0; ?? ?bool bgo = true; ?? ?int opt; ?? ?char ch; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?stu = 0; ?? ??? ?cout << "1.根據(jù)學(xué)號(hào)查找" << endl; ?? ??? ?cout << "2.根據(jù)姓名查找" << endl; ?? ??? ?cin >> opt; ?? ??? ?int id; ?? ??? ?char tmp[30]={0}; ?? ??? ?switch(opt) ?? ??? ?{ ?? ??? ?case 1: ?? ??? ??? ?cout << "請輸入學(xué)號(hào):"; ?? ??? ??? ?cin >> id; ?? ??? ??? ?for (i=0;i<nRealStu;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(allStudents[i]->getId() == id) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?stu = allStudents[i]; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if(stu == 0) ?? ??? ??? ??? ?cout << "未找到該學(xué)號(hào)的學(xué)生" << endl; ?? ??? ??? ?else ?? ??? ??? ?{ ?? ??? ??? ??? ?for (i=0;i<nRealDorm;i++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?if (allInfo[i].isIn(stu)) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?cout << "該學(xué)生的入住信息如下:" << endl; ?? ??? ??? ??? ??? ??? ?allInfo[i].getDormatory()->display(); ?? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?case 2: ?? ??? ??? ?cout << "請輸入姓名:"; ?? ??? ??? ?cin >> tmp; ?? ??? ??? ?for (i=0;i<nRealStu;i++) ?? ??? ??? ?{ ?? ??? ??? ??? ?if(strcmp(allStudents[i]->getName(),tmp) == 0) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?stu = allStudents[i]; ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ?for (j=0;j<nRealDorm;j++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if (allInfo[j].isIn(stu)) ?? ??? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ??? ?cout << "該學(xué)生的入住信息如下:" << endl; ?? ??? ??? ??? ??? ??? ??? ?allInfo[j].getDormatory()->display(); ?? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?//可能存在重名的學(xué)生,所以此處不退出循環(huán) ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?if(stu == 0) ?? ??? ??? ??? ?cout << "未找到該學(xué)號(hào)的學(xué)生" << endl; ?? ??? ??? ? ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?cout << "是否繼續(xù)查詢(Y/N)?"; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?cin >> ch; ?? ??? ??? ?if(ch == 'y' || ch == 'Y') ?? ??? ??? ??? ?break; ?? ??? ??? ?else if(ch =='n' || ch == 'N') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?system("pause"); } //15宿舍入住信息查詢 void FindDormInfo(HomeInfo allInfo[],int nRealDorm) { ?? ?int i; ?? ?bool bgo = true; ?? ?int id; ?? ?char ch; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?cout << "請輸入需要查詢的宿舍編號(hào):"<< endl; ?? ??? ?cin >> id; ?? ??? ?for (i=0;i< nRealDorm;i++) ?? ??? ?{ ?? ??? ??? ?if (allInfo[i].getDormatory()->getId() == id) ?? ??? ??? ?{ ?? ??? ??? ??? ?allInfo[i].display(); ?? ??? ??? ?} ?? ??? ?} ? ?? ??? ?cout << "是否繼續(xù)查詢(Y/N)?"; ?? ??? ?while(1) ?? ??? ?{ ?? ??? ??? ?cin >> ch; ?? ??? ??? ?if(ch == 'y' || ch == 'Y') ?? ??? ??? ??? ?break; ?? ??? ??? ?else if(ch =='n' || ch == 'N') ?? ??? ??? ?{ ?? ??? ??? ??? ?bgo = false; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?system("pause"); } ? int main() { ?? ?Student* allStudents[MAXSTU]; ? //存儲(chǔ)所有學(xué)生信息 ?? ?int nRealStu = 0; ? ? ? ? ? ? ? //當(dāng)前實(shí)際學(xué)生數(shù)量 ?? ?Dormatory* allDormatory[MAXDOR];//保存所有宿舍信息 ?? ?int nRealDorm = 0; ? ? ? ? ? ? ?//當(dāng)前實(shí)際宿舍數(shù)量 ?? ?HomeInfo allInfo[MAXDOR]; ? ? ? //保存所有入住信息 ? ?? ?int opt; ?? ?bool bgo = true; ?? ?while(bgo) ?? ?{ ?? ??? ?system("cls"); ?? ??? ?cout << "--------------學(xué)生住宿信息管理系統(tǒng)---------------"<< endl; ?? ??? ?cout << "| ? ?1.添加學(xué)生 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?2.修改學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?3.刪除學(xué)生 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?4.瀏覽所有學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?5.查詢學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?6.添加宿舍 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?7.修改宿舍信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?8.刪除宿舍 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?9.瀏覽所有宿舍信息 ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "| ? ?10.查詢宿舍信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ?|"<< endl; ?? ??? ?cout << "| ? ?11.學(xué)生入住 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|"<< endl; ?? ??? ?cout << "| ? ?12.學(xué)生繳費(fèi) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|"<< endl; ?? ??? ?cout << "| ? ?13.住宿信息瀏覽 ? ? ? ? ? ? ? ? ? ? ? ? ? ?|"<< endl; ?? ??? ?cout << "| ? ?14.學(xué)生入住信息查詢 ? ? ? ? ? ? ? ? ? ? ? ?|"<< endl; ?? ??? ?cout << "| ? ?15.宿舍入住信息查詢 ? ? ? ? ? ? ? ? ? ? ? ?|"<< endl; ?? ??? ?cout << "| ? ?0.退出系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |"<< endl; ?? ??? ?cout << "-------------------------------------------------"<< endl; ?? ??? ?cin >> opt; ?? ??? ?switch(opt) ?? ??? ?{ ?? ??? ?case 0: ?? ??? ??? ?bgo = false; ?? ??? ??? ?break; ?? ??? ?case 1: ?? ??? ??? ?//添加學(xué)生 ?? ??? ??? ?AddStudent(allStudents,nRealStu); ?? ??? ??? ?break; ?? ??? ?case 2: ?? ??? ??? ?//修改學(xué)生信息 ?? ??? ??? ?ModStudent(allStudents,nRealStu); ?? ??? ??? ?break; ?? ??? ?case 3: ?? ??? ??? ?//刪除學(xué)生 ?? ??? ??? ?DeleteStudent(allStudents,nRealStu,allInfo,nRealDorm); ?? ??? ??? ?break; ?? ??? ?case 4: ?? ??? ??? ?//瀏覽所有學(xué)生信息 ?? ??? ??? ?ShowAllStudents(allStudents,nRealStu); ?? ??? ??? ?break; ?? ??? ?case 5: ?? ??? ??? ?//查詢學(xué)生信息 ?? ??? ??? ?FindStudents(allStudents,nRealStu); ?? ??? ??? ?break; ?? ??? ?case 6: ?? ??? ??? ?//添加宿舍信息 ?? ??? ??? ?AddDormatory(allDormatory,nRealDorm,allInfo); ?? ??? ??? ?break; ?? ??? ?case 7: ?? ??? ??? ?//修改宿舍信息 ?? ??? ??? ?ModDormatory(allDormatory,nRealDorm); ?? ??? ??? ?break; ?? ??? ?case 8: ?? ??? ??? ?//刪除宿舍信息 ?? ??? ??? ?DeleteDormatory(allDormatory,nRealDorm,allInfo); ?? ??? ??? ?break; ?? ??? ?case 9: ?? ??? ??? ?//瀏覽所有宿舍信息 ?? ??? ??? ?ShowAllDormatory(allDormatory,nRealDorm); ?? ??? ??? ?break; ?? ??? ?case 10: ?? ??? ??? ?//查詢宿舍信息 ?? ??? ??? ?FindDormatory(allDormatory,nRealDorm); ?? ??? ??? ?break; ?? ??? ?case 11: ?? ??? ??? ?//學(xué)生入住 ?? ??? ??? ?StudentIn(allStudents,nRealStu,allDormatory,nRealDorm,allInfo); ?? ??? ??? ?break; ?? ??? ?case 12: ?? ??? ??? ?//學(xué)生繳費(fèi) ?? ??? ??? ?StudentPay(allStudents,nRealStu,allInfo,nRealDorm); ?? ??? ??? ?break; ?? ??? ?case 13: ?? ??? ??? ?//住宿信息瀏覽 ?? ??? ??? ?ShowHomeInfo(allInfo,nRealDorm); ?? ??? ??? ?break; ?? ??? ?case 14: ?? ??? ??? ?//學(xué)生入住信息查詢 ?? ??? ??? ?FindStudent(allStudents,nRealStu,allInfo,nRealDorm); ?? ??? ??? ?break; ?? ??? ?case 15: ?? ??? ??? ?//宿舍入住信息查詢 ?? ??? ??? ?FindDormInfo(allInfo,nRealDorm); ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?return 0; }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語言中計(jì)算函數(shù)執(zhí)行時(shí)間的三種方式
本文主要介紹了C語言中計(jì)算函數(shù)執(zhí)行時(shí)間的三種方式,主要包括clock(),timeb和time,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09結(jié)合C++11的新特性來解析C++中的枚舉與聯(lián)合
這篇文章主要介紹了C++編程中的枚舉與聯(lián)合,結(jié)合了范圍(或強(qiáng)類型)enum class類型等C++11的新特性來講解,需要的朋友可以參考下2016-01-01關(guān)于VS+QT5應(yīng)用程序換圖標(biāo)的解決方案
這篇文章主要介紹了VS+QT5應(yīng)用程序換圖標(biāo)的處理方案,本文給大家提供了兩種解決方案供大家參考,每種方法給大家講解的都非常詳細(xì),需要的朋友可以參考下2021-12-12C++中的繼承問題(繼承基本概念、菱形虛擬繼承的對(duì)象模型)
這篇文章主要介紹了C++中的繼承問題(繼承基本概念、菱形虛擬繼承的對(duì)象模型),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02