当前位置:   article > 正文

学生住宿管理系统(小系统C++)_宿舍管理系统c++程序设计

宿舍管理系统c++程序设计

功能

(1)学生信息包括:姓名、学号、年龄、性别、学院、年级等

(2)宿舍信息包括:宿舍编号、宿舍楼名、楼层号、宿舍类型(二人间、四人间、六 人间、八人间) 、收费标准等。

(3)住宿信息包括:学生、宿舍、入住时间、是否欠费等。

(4)完成以下的操作:学生信息和宿舍信息的添加、修改、浏览、删除和查询。 (5)完成以下的操作:学生入住、缴费;住宿信息浏览、学生住宿信息查询、宿舍住 宿信息浏览与查询。 2、提示: (1)增加必要的数据成员、成员函数或类; (2)对象指针(住宿信息类的对象指针成员可以指向相关的宿舍、对象指针数组成员可 以表示该宿舍的学生们)

代码:

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. //定义学生和宿舍的最大数量
  5. #define MAXSTU 50
  6. #define MAXDOR 20
  7. //定义学生类
  8. class Student
  9. {
  10. private:
  11. int mXuehao; //学号
  12. char* mName; //名字
  13. int mAge; //年龄
  14. char mSex; //性别
  15. char* mPartment;//学院
  16. int mGrade; //年级
  17. public:
  18. Student(){mName = 0;mPartment = 0;}
  19. Student(int id,const char* name,int age,char sex,const char* par,int grade)
  20. {
  21. mXuehao = id;
  22. mName = new char[strlen(name)+1];
  23. memcpy(mName,name,strlen(name));
  24. mName[strlen(name)] = '\0';
  25. mAge = age;
  26. mSex = toupper(sex);
  27. mPartment = new char[strlen(par)+1];
  28. memcpy(mPartment,par,strlen(par));
  29. mPartment[strlen(par)] = '\0';
  30. mGrade = grade;
  31. }
  32. ~Student()
  33. {
  34. if (mName)
  35. {
  36. delete[] mName;
  37. mName = 0;
  38. }
  39. if (mPartment)
  40. {
  41. delete[] mPartment;
  42. mPartment = 0;
  43. }
  44. }
  45. //设置类属性
  46. void setId(int id){mXuehao = id;}
  47. void setName(const char* name)
  48. {
  49. if (mName != 0)
  50. {
  51. delete[] mName;
  52. mName = 0;
  53. }
  54. mName = new char[strlen(name)+1];
  55. memcpy(mName,name,strlen(name));
  56. mName[strlen(name)] = '\0';
  57. }
  58. void setSex(char sex){mSex = toupper(sex);}
  59. void setAge(int age){mAge = age;}
  60. void setPartment(const char* par)
  61. {
  62. if(mPartment)
  63. delete []mPartment;
  64. mPartment = new char[strlen(par)+1];
  65. memcpy(mPartment,par,strlen(par));
  66. mPartment[strlen(par)] = '\0';
  67. }
  68. void setGrade(int g){mGrade = g;}
  69. //获取类属性
  70. int getId(){return mXuehao;}
  71. char* getName(){return mName;}
  72. char getSex(){return mSex;}
  73. int getAge(){return mAge;}
  74. char* getPartment(){return mPartment;}
  75. int getGrade(){return mGrade;}
  76. void display()
  77. {
  78. cout.setf(ios::left);//设置左对齐
  79. cout << mXuehao << " " ;
  80. cout.fill(' '); //设置不足位填充方式
  81. cout.width(10); //设置宽度,只对下一条有作用
  82. cout << mName ;
  83. cout << " " << mSex << " ";
  84. cout << mAge << " " ;
  85. cout.fill(' ');
  86. cout.width(20);
  87. cout<< mPartment ;
  88. cout<< " " << mGrade << endl;
  89. cout.unsetf(ios::left); //取消左对齐
  90. }
  91. };
  92. //定义宿舍类型
  93. enum EDomType
  94. {
  95. e_dorm_two=1,
  96. e_dorm_four,
  97. e_dorm_six,
  98. e_dorm_eight
  99. };
  100. //定义宿舍类
  101. class Dormatory
  102. {
  103. private:
  104. int mSusheId; //宿舍号
  105. char* mDorName; //宿舍楼名
  106. int mLayer; //楼层号
  107. EDomType mEtype;//类型
  108. int mPrice; //价格
  109. public:
  110. Dormatory(){mDorName = 0;}
  111. Dormatory(int id,const char* name,int layer,EDomType e,int price)
  112. {
  113. mSusheId = id;
  114. mDorName = new char[strlen(name)+1];
  115. memcpy(mDorName,name,strlen(name));
  116. mDorName[strlen(name)] = '\0';
  117. mLayer = layer;
  118. mEtype = e;
  119. mPrice = price;
  120. }
  121. ~Dormatory()
  122. {
  123. if(mDorName)
  124. {
  125. delete[] mDorName;
  126. mDorName = 0;
  127. }
  128. }
  129. //设置类属性
  130. void setId(int id){mSusheId = id;}
  131. void setName(const char* name)
  132. {
  133. if(mDorName) delete[] mDorName;
  134. mDorName = new char[strlen(name)+1];
  135. memcpy(mDorName,name,strlen(name));
  136. mDorName[strlen(name)] = '\0';
  137. }
  138. void setLayer(int layer){mLayer = layer;}
  139. void setDormType(EDomType e){mEtype = e;}
  140. void setPrice(int p){mPrice = p;}
  141. //获取类属性
  142. int getId(){return mSusheId;}
  143. char* getName(){return mDorName;}
  144. int getLayer(){return mLayer;}
  145. EDomType getType(){return mEtype;}
  146. int getPrice(){return mPrice;}
  147. void display()
  148. {
  149. cout.setf(ios::left);
  150. cout<< mSusheId << " ";
  151. cout.fill(' ');
  152. cout.width(10); //名字最多5个汉子或者10个英文字符
  153. cout << mDorName;
  154. cout << " " << mLayer << " ";
  155. if(e_dorm_two == mEtype)
  156. cout << "二人间" ;
  157. else if(e_dorm_four == mEtype)
  158. cout << "四人间" ;
  159. else if(e_dorm_six == mEtype)
  160. cout << "六人间" ;
  161. else
  162. cout << "八人间" ;
  163. cout << " " << mPrice << endl;
  164. cout.unsetf(ios::left);
  165. }
  166. };
  167. //定义时间类
  168. struct Date
  169. {
  170. int year;
  171. int month;
  172. int day;
  173. };
  174. //住宿信息
  175. class HomeInfo
  176. {
  177. private:
  178. Dormatory* mDormatory; //宿舍对象指针
  179. Student* mStu[8]; //学生指针数组
  180. bool mbqf[8]; //是否欠费,true欠费,否则不欠费
  181. Date mHomeDate[8]; //入住时间
  182. int mCurrentNmb;//当前已入住人数
  183. char mDormSex; //当前宿舍的性别
  184. public:
  185. HomeInfo()
  186. {
  187. for (int i =0;i< 8;i++)
  188. {
  189. mStu[i] = 0;
  190. mbqf[i] = true;
  191. }
  192. mDormatory = 0;
  193. mCurrentNmb = 0;
  194. mDormSex = 'n'; //表示该宿舍尚未分配
  195. }
  196. void setDormatory(Dormatory* p){mDormatory = p;}
  197. void setSex(char sex){mDormSex = sex;}
  198. Dormatory* getDormatory(){return mDormatory;}
  199. char getSex(){return mDormSex;}
  200. int getCurrentNmb(){return mCurrentNmb;}
  201. //查看某个学生是否在该房间
  202. bool isIn(Student* stu)
  203. {
  204. for (int i=0;i<mCurrentNmb;i++)
  205. {
  206. if(mStu[i] == stu)
  207. return true;
  208. }
  209. return false;
  210. }
  211. //是否已经注满
  212. bool isFull()
  213. {
  214. if(e_dorm_eight == mDormatory->getType() && mCurrentNmb == 8)
  215. return true;
  216. else if(e_dorm_six == mDormatory->getType() && mCurrentNmb == 6)
  217. return true;
  218. else if(e_dorm_four == mDormatory->getType() && mCurrentNmb == 4)
  219. return true;
  220. else if(e_dorm_two == mDormatory->getType() && mCurrentNmb == 2)
  221. return true;
  222. return false;
  223. }
  224. //办理入住
  225. bool Home(Student *stu
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/788968
推荐阅读
相关标签
  

闽ICP备14008679号