好文档 - 专业文书写作范文服务资料分享网站

C++大作业:学生信息管理系统(附代码)

天下 分享 时间: 加入收藏 我要投稿 点赞

学生信息管理系统(附代码) 题目要求:

设计一个类CStudent,类中包含一个学生的基本数据如下:

编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。 并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。

如: 1 LiPing m 18 89 98 94

请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号 num为“序”来对文件中的各对象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。

要求成员函数完成以下功能:

(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。

(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。

(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。

(4) 计算某编号学生的总成绩与平均成绩。

(5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。 Code:

1. /**************************************** 2. *名称: student.cpp * 3. *描述: 学生管理程序 *

4. *功能: 添加,修改,按条件查询学生信息 * 5. *环境: Fedora Linux 11 & GCC & x86 *

6. *备注: davelv第一次Class于2010-01-10 * 7. *更新: 新建了可复用的搜索模板searchframe * 8. ****************************************/ 9.

10. #include 11. #include 12. #include

13. #include 14. #include 15.

16. using namespace std;

17. #define CIN_LEN 1024//缓冲区长度 18. #define FILENAME \数据文件名 19. /////////////////////////////////////

20. // 结构和类 // 21. /////////////////////////////////// 22. struct data//学生个人信息 23. {

24. int id;//学号

25. char name[20];//名字 26. char major[20];//专业 27. char sex;//性别

28. double ch,en,ma;//成绩 29. int grade;//年级 30. }; 31.

32. class CStudent 33. {

34. protected:

35. bool altered;//是否修改 36. data info;//学生信息 37. public:

38. static int nowid ;//新学生自增id 39. static void displayhead();//显示表头

40. static void displayshorthead();//显示短表头 41. CStudent();//构造

42. void displayinfo();//显示全部学生信息 43. void displayshortinfo();//显示学生短信息 44. double getsum();//取总成绩 45. double getave();//取得平均分 46. double getch();//取语文成绩 47. double geten();//取外语成绩 48. double getma();//取数学成绩

49. int set(bool isnew);//设置学生信息 50. int getgrade();//取年级 51. int getid();//取学号

52. bool isaltered();//取是否修改 53. char getsex();//取性别 54. char* getname();//取姓名 55. char* getmajor();//取专业

56. data* getinfo();//取学生全部信息

57. //定义友元函数以便重载运算符

58. friend ostream& operator<<(ostream&,const CStudent&); 59. friend istream& operator>>(istream&,CStudent&); 60. 61. }; 62.

63. int CStudent::nowid = 1;//初始化类静态成员 64.

65. CStudent::CStudent()//基类构造 66. {

67. info.id=CStudent::nowid++;//子增id 68. strcpy(info.name,\名字 69. info.ch=0;//语文成绩 70. info.en=0;//外语成绩 71. info.ma=0;//数学成绩 72. info.grade=1;//年级

73. altered=false;//未被修改 74. } 75.

76. int CStudent::getgrade() 77. {

78. return info.grade; 79. } 80.

81. double CStudent::getsum() 82. {

83. return info.ch+info.en+info.ma; 84. }

85. double CStudent::getave() 86. {

87. return (info.ch+info.en+info.ma)/3; 88. }

89. double CStudent::getch() 90. {

91. return info.ch; 92. } 93.

94. double CStudent::geten() 95. {

96. return info.en; 97. } 98.

99. double CStudent::getma() 100. {

101. return info.ma; 102. } 103.

104. int CStudent::getid() 105. {

106. return info.id; 107. } 108.

109. char CStudent::getsex() 110. {

111. return info.sex; 112. } 113.

114. char * CStudent::getname() 115. {

116. return info.name; 117. }

118. bool CStudent::isaltered() 119. {

120. return altered; 121. }

122. data *CStudent::getinfo() 123. {

124. return &info; 125. }

126. void CStudent::displayinfo() 127. {

128. cout<<*this<<\利用重载运算符输出 129. }

130. void CStudent::displayshortinfo() 131. {

132. cout << *this<

134. void CStudent::displayhead() 135. {

136. cout<<\学号\\t姓名\\t性别\\t专业\\t年级\\t中文\\t英文\\t数学\\t总分\\t平均分\\n\ 137. }

138. void CStudent::displayshorthead() 139. {

140. cout<<\学号\\t姓名\\t性别\\t专业\\t年级\\t中文\\t英文\\t数学\\n\ 141. }

142. int CStudent::set(bool isalter) 143. {

144. cout<<\输入学生信息:\\n\

145. displayshorthead(); 146. if (isalter)

147. displayshortinfo(); 148. cout<<\ 149. cin.clear();

150. cin>> *this;//从标准输入获取学生信息 151. altered=true;//已修改 152.

153. if(cin.fail()) 154. {

155. cout<<\录入失败\\n\ 156. cin.clear();

157. cin.ignore(CIN_LEN,'\\n');//这两行是用来清空输入缓冲 158. return -1; 159. } 160. else 161. {

162. cout<<\录入成功\\n\ 163. return 1; 164. } 165. } 166.

167. //重载输出符

168. ostream &operator<<(ostream& out,const CStudent &right) 169. {

170. //输出学生的全部信息

171. out <<\ 172. <

176. //重载输入符

177. istream& operator>>(istream& in,CStudent& right) 178. {

179. //输入除ID外的其他信息

180. in >>right.info.name>>right.info.sex>>right.info.major

181. >>right.info.grade>>right.info.ch>>right.info.en>>right.info.ma; 182. return in; 183. } 184.

185. /////////////////////////////////

186. // 初始化函数 // 187. ////////////////////////////////

188. int initial(vector &stu)

C++大作业:学生信息管理系统(附代码)

学生信息管理系统(附代码)题目要求:设计一个类CStudent,类中包含一个学生的基本数据如下:编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如:1LiPingm18899894请采用
推荐度:
点击下载文档文档为doc格式
93lxv0cw5h5gf8x599ez10e609m8f001bap
领取福利

微信扫码领取福利

微信扫码分享