• 学生成绩管理程序: 用面向对象的方法


    学生成绩管理程序: 用面向对象的方法设计一个菜单驱动的学生成绩管理程
    序。 学生的基本信息包括学生的学号、 姓名、 数学、 语文、 英语等信息。 实
    现如下管理功能:
    (1) 能输入并显示n 个学生的基本信息。
    (2) 计算学生的平均分和总分。
    (3) 按总分降序进行排序。
    (4) 任意输入一个学号, 能显示该学生的基本信息。
    (5) 可添加学生信息到指定位置, 亦可在最后追加一批学生信息。
    (6) 文件的导入和导出(从文件中读取若干条学生信息, 或者将学生信息
    输出到文件中) 。
    输出菜单形式如下:
    请选择下面的菜单:
    1 创建
    2 添加
    3 汇总
    4 排序
    5 查询
    6 显示
    7 从文件导入
    8 导出到文件
    9 退出
    请选择:
     

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. int n=0;//学生总数
    7. int m=0;//课程数
    8. int number;//功能键
    9. class Student
    10. {
    11. public:
    12. Student() {}
    13. long int num;//学号
    14. char name[100];//姓名
    15. float score[7];//各科成绩
    16. float sum;//成绩总和
    17. float aver;//平均分
    18. };
    19. Student s[1000];
    20. void menu();//菜单
    21. void inputscore(Student s[]);//输入分数
    22. void averofs(Student s[]);//每名学生总分和平均分
    23. void sortbynum(Student s[]);//学生总分排行
    24. void chose(int);//功能的选择
    25. void findstu(Student s[]);//任意输入一个学号,能显示该学生的基本信息
    26. void daoru(Student s[]);//文件的导入
    27. void daochu(Student s[]);//文件的导出
    28. void adds(Student s[]);//添加
    29. void creat();//创建
    30. int main()
    31. {
    32. while(1)
    33. {
    34. menu();
    35. cin>>number;
    36. chose(number);
    37. }
    38. return 0;
    39. }
    40. void menu()//菜单
    41. {
    42. cout<<"\n***********请选择下面的菜单:***********\n";
    43. cout<<"\t 1.创建\n";//
    44. cout<<"\t 2.添加\n";//可在最后追加一批学生信息
    45. cout<<"\t 3.汇总\n";//输入数据
    46. cout<<"\t 4.排序\n";// 按总分降序进行排序
    47. cout<<"\t 5.查询\n";//任意输入一个学号,能显示该学生的基本信息。
    48. cout<<"\t 6.显示\n";//显示n个学生的基本信息
    49. cout<<"\t 7.从文件导入\n";//
    50. cout<<"\t 8.导出到文件\n";//将学生信息 输出到文件中
    51. cout<<"\t 9.退出\n";
    52. cout<<"\t 请选择";
    53. cout<<"\n***************************************\n";
    54. }
    55. void chose(int number)
    56. {
    57. switch(number)
    58. {
    59. case 1:
    60. creat();// 创建
    61. break;
    62. case 2:
    63. adds(s);//可在最后追加一批学生信息
    64. break;
    65. case 3:
    66. inputscore(s);//输入数据
    67. break;
    68. case 4:
    69. sortbynum(s);//排序
    70. break;
    71. case 5:
    72. findstu(s);//查询
    73. break;
    74. case 6:
    75. averofs(s);//显示
    76. break;
    77. case 7:
    78. daoru(s);//导入
    79. break;
    80. case 8:
    81. daochu(s);//导出
    82. break;
    83. case 9:
    84. exit(0);//退出
    85. break;
    86. default:
    87. break;
    88. }
    89. }
    90. void creat()//创建
    91. {
    92. cout<<"请输入学生总数(n<=100):\n";
    93. cin>>n;
    94. cout<<"请输入课程的总数(m<=7):\n";
    95. cin>>m;
    96. }
    97. void inputscore(Student s[])//录入信息
    98. {
    99. cout<<"请输入学生学号,姓名,及各科成绩\n";
    100. for(int i=0; i
    101. {
    102. cout<<"学号:"<
    103. cin>>s[i].num;
    104. if(s[i].num==0) break;
    105. getchar();
    106. cout<<"姓名:"<
    107. gets(s[i].name);
    108. cout<<"请输入各科成绩:"<
    109. for(int j=0; j
    110. {
    111. cin>>s[i].score[j];
    112. s[i].sum+=s[i].score[j];
    113. }
    114. }
    115. }
    116. void averofs(Student s[])//显示
    117. {
    118. for(int i=0; i
    119. {
    120. s[i].sum=0;
    121. s[i].aver=0;
    122. for(int j=0; j
    123. {
    124. s[i].sum+=s[i].score[j];
    125. }
    126. s[i].aver=s[i].sum/m;
    127. cout<" 总分:"<" 平均分:"<" 学号:"<
    128. }
    129. }
    130. bool comp1(Student a,Student b)
    131. {
    132. return a.sum>b.sum;
    133. }
    134. void sortbynum(Student s[])//从大到小排序
    135. {
    136. sort(s,s+n,comp1);
    137. cout<<"按总分降序进行排序"<
    138. for(int j=0; j
    139. {
    140. cout<" "<
    141. }
    142. }
    143. void daochu(Student s[])//文件的导出
    144. {
    145. ofstream ofs;
    146. ofs.open("student.txt",ios::out);
    147. ofs<" "<" ";
    148. for(int i=0; i
    149. {
    150. ofs<" "<" ";
    151. for(int j=0; j
    152. {
    153. ofs<" ";
    154. }
    155. }
    156. cout<<"导出成功"<
    157. ofs.close();
    158. }
    159. void daoru(Student s[])//文件的导入
    160. {
    161. ifstream ifs;
    162. ifs.open("student.txt",ios::in);
    163. for(int i=0;i
    164. {
    165. ifs>>n>>m>>s[i].num>>s[i].name>>s[i].score[0];
    166. }
    167. for(int i=0;i
    168. {
    169. cout<" "<" "<" "<" "<0]<<" "<1]<<" "<2]<
    170. }
    171. cout<<"导入成功"<
    172. ifs.close();
    173. }
    174. void findstu(Student s[])//根据学号查询
    175. {
    176. int xh,i;
    177. cout<<"请输入要查找的学号:"<
    178. cin>>xh;
    179. for( i=0; i
    180. {
    181. if(s[i].num==xh)
    182. {
    183. cout<
    184. cout<
    185. for(int j=0; j
    186. {
    187. cout<
    188. }
    189. }
    190. }
    191. }
    192. void adds(Student s[])//添加,在最后追加一批学生信息
    193. {
    194. int x;
    195. cout<<"请输入要添加的人数:"<
    196. cin>>x;
    197. cout<<"请输入学生学号,姓名,及各科成绩"<
    198. for(int i=n; i<(n+x); i++)
    199. {
    200. cout<<"学号:"<
    201. cin>>s[i].num;
    202. if(s[i].num==0) break;
    203. getchar();
    204. cout<<"姓名:"<
    205. gets(s[i].name);
    206. cout<<"请输入各科成绩:"<
    207. for(int j=0; j
    208. {
    209. cin>>s[i].score[j];
    210. s[i].sum+=s[i].score[j];
    211. }
    212. }
    213. n=n+x;
    214. }

  • 相关阅读:
    Flink实时数仓同步:切片表实战详解
    GPU架构演进十年,从费米到安培
    java.lang.ClassNotFoundException: rx.Single(hystrix)
    安卓玩机搞机之. 更换内核 .内核比rom重要.了解内核相关
    winapi获取鼠标指向当前元素
    Talk预告 | 腾讯微信司马驰骏:OSDI论文分享-Ekko:大规模推荐系统模型低延时更新
    解决windows termail中文乱码的问题
    AI论文速读 | TPLLM:基于预训练语言模型的交通预测框架
    hive字段关键字问题处理
    C++动态内存分配
  • 原文地址:https://blog.csdn.net/m0_68176382/article/details/126190104