https://blog.csdn.net/yanxiaolx/article/details/53393437

题目:用c++模拟实现一个学生成绩的信息管理系统,要求能添加、删除、修改、查看和保存学生的信息等功能

源代码如下:

[cpp] view plaincopy
  1. #define  _CRT_SECURE_NO_WARNINGS
  2. #include<iostream>
  3. using namespace std;
  4. #include<string.h>
  5. #include<fstream>
  6. class student
  7. {
  8. private:
  9. student* next;
  10. public:
  11. char stu_num[15];                  //学号
  12. char stu_name[30];                //姓名
  13. float stu_score;                      //成绩
  14. void afterInsert(student *p);//在该节点后插入一个节点
  15. void afterDelete();//在该节点后删除一个节点
  16. student *getNext()//获得下一个节点的指针
  17. {
  18. return next;
  19. }
  20. /***********查询学生信息************/
  21. void getMage();
  22. /******学生信息修改******/
  23. void changeMage(int n, char *ptr);
  24. void changegrade(float p);
  25. /******构造*****/
  26. student(char *num, char *name, float score);
  27. student();
  28. };
  29. void student::changegrade(float p)
  30. {
  31. stu_score = p;
  32. }
  33. student::student()           //构造
  34. {
  35. strcpy(stu_num, "\0");
  36. strcpy(stu_name, "\0");
  37. stu_score = 0;
  38. next = '\0';
  39. }
  40. student::student(char *num, char *name, float score)
  41. {
  42. strcpy(stu_num, num);
  43. strcpy(stu_name, name);
  44. stu_score = score;
  45. next = '\0';
  46. }
  47. void student::afterInsert(student *p)//插入节点
  48. {
  49. p->next = next;
  50. next = p;
  51. }
  52. void student::afterDelete()        //删除节点
  53. {
  54. student *p = next;
  55. next = p->next;
  56. delete p;
  57. }
  58. void student::getMage()             //获得信息
  59. {
  60. cout << "学号:" << stu_num << "      姓名:" << stu_name;
  61. cout << "      c++成绩:" << stu_score << endl;
  62. }
  63. void student::changeMage(int n, char *ptr)
  64. {
  65. switch (n)
  66. {
  67. case 1: strcpy(stu_num, ptr);
  68. break;
  69. case 2: strcpy(stu_name, ptr);
  70. }
  71. }
  72. //建立链表函数
  73. void  construct_list(student *tail)
  74. {
  75. student *p = new student;
  76. char very[20];
  77. float achieve;
  78. cout << "请输入学号:" << endl;
  79. cin >> very;
  80. p->changeMage(1, very);
  81. cout << "请输入姓名:" << endl;
  82. cin >> very;
  83. p->changeMage(2, very);
  84. cout << "请输入c++成绩:" << endl;
  85. cin >> achieve;
  86. p->changegrade(achieve);
  87. system("cls");
  88. cout << "信息输入完毕" << endl;
  89. for (; tail->getNext() != '\0';)
  90. {
  91. tail = tail->getNext();
  92. }
  93. tail->afterInsert(p);
  94. }
  95. /*********查询信息*********/
  96. student *findmege(student *head)
  97. {
  98. loop:
  99. cout << "1--按姓名查询           2--按学号查询              q--返回上一级菜单" << endl;
  100. char p[5], ptr[20];
  101. student *mid = head;
  102. cin >> p;
  103. if (p[0] != '1'&&p[0] != '2'&&p[0] != 'q' || strlen(p)>1)
  104. {
  105. system("cls");
  106. cout << "对不起,你的输入有误,请重新输入!" << endl;
  107. goto loop;
  108. }
  109. switch (p[0])
  110. {
  111. case '1':
  112. {
  113. system("cls");
  114. cout << "请输入要查找的姓名:" << endl;
  115. cin >> ptr;
  116. for (; strcmp(ptr, mid->stu_name) != 0; mid = mid->getNext())
  117. {
  118. if (mid->getNext() == '\0')
  119. {
  120. cout << "对不起,你要查找的人不存在,请确认你的输入是否正确!" << endl;
  121. goto loop;
  122. }
  123. }
  124. return mid;
  125. }
  126. case '2':
  127. {
  128. system("cls");
  129. cout << "请输入您要查找的学号:" << endl;
  130. cin >> ptr;
  131. for (; strcmp(ptr, mid->stu_num) != 0; mid = mid->getNext())
  132. {
  133. if (mid->getNext() == '\0')
  134. {
  135. cout << "对不起,您要查找的内容不存在,请确认您的输入是否正确!" << endl;
  136. goto loop;
  137. }
  138. }
  139. return mid;
  140. }
  141. case 'q':
  142. {
  143. return '\0';
  144. }
  145. default:
  146. {
  147. system("cls");
  148. cout << "对不起,您的输入有误,请重新输入!" << endl;
  149. goto loop;
  150. }
  151. }
  152. }
  153. /******************删除链表 节点***********************/
  154. void delete_list(student *head)
  155. {
  156. student *p = '\0';
  157. char selet[4];
  158. system("cls");
  159. cout << "在删除前,系统会根据您的提示找到您要删除的学生信息!" << endl;
  160. p = findmege(head);
  161. if (p != '\0')
  162. {
  163. cout << "确认要删除吗(yes/任意键返回)" << endl;
  164. cin >> selet;
  165. if (strcmp(selet, "yes") == 0)
  166. {
  167. for (; head->getNext() != p; head = head->getNext());
  168. head->afterDelete();
  169. system("cls");
  170. cout << "该信息删除成功!" << endl;
  171. }
  172. }
  173. }
  174. /*******************修改节点信息********************/
  175. void change_info(student *head)
  176. {
  177. system("cls");
  178. cout << "在您修改前,系统会根据您提供的信息找的您要修改的信息:" << endl;
  179. student *p = '\0';
  180. float achieve;
  181. p = findmege(head);
  182. if (p != '\0')
  183. {
  184. cout << "请输入c++成绩:" << endl;
  185. cin >> achieve;
  186. p->changegrade(achieve);
  187. system("cls");
  188. cout << "修改成功!" << endl;
  189. }
  190. }
  191. /**************输出学生成绩信息**************/
  192. void output(student *head)
  193. {
  194. system("cls");
  195. cout << "1-查看指定学生信息;2-查看所有学生信息;3-分段输出学生信息" << endl;
  196. char ch;
  197. int n = 0;
  198. head = head->getNext();
  199. cin >> ch;
  200. switch (ch)
  201. {
  202. case '1':
  203. head = findmege(head);
  204. if (head == '\0')
  205. {
  206. break;
  207. }
  208. head->getMage();
  209. break;
  210. case '2':
  211. while (head)
  212. {
  213. head->getMage();
  214. head = head->getNext();
  215. }
  216. break;
  217. case '3':
  218. cout << "a-60分以下;b-60~70分之间;c-70~80分之间;d-80~90分之间;e-90~100分之间:" << endl;
  219. cin >> ch;
  220. switch (ch)
  221. {
  222. case 'a':
  223. while (head)
  224. {
  225. if (head->stu_score <= 60)
  226. {
  227. head->getMage();
  228. n++;
  229. }
  230. head = head->getNext();
  231. }
  232. break;
  233. case 'b':
  234. while (head)
  235. {
  236. if (head->stu_score>60 && head->stu_score <= 70)
  237. {
  238. head->getMage();
  239. n++;
  240. }
  241. head = head->getNext();
  242. }
  243. break;
  244. case 'c':
  245. while (head)
  246. {
  247. if (head->stu_score>70 && head->stu_score <= 80)
  248. {
  249. head->getMage();
  250. n++;
  251. }
  252. head = head->getNext();
  253. }
  254. break;
  255. case 'd':
  256. while (head)
  257. {
  258. if (head->stu_score>80 && head->stu_score <= 90)
  259. {
  260. head->getMage();
  261. n++;
  262. }
  263. head = head->getNext();
  264. }
  265. break;
  266. case 'e':
  267. while (head)
  268. {
  269. if (head->stu_score>90 && head->stu_score <= 100)
  270. {
  271. head->getMage();
  272. n++;
  273. }
  274. head = head->getNext();
  275. }
  276. }
  277. if (n == 0)
  278. {
  279. cout << "该分段内没有您要找的学生信息" << endl;
  280. }
  281. }
  282. }
  283. /*****************主菜单************************/
  284. void mainmenu(student *head)
  285. {
  286. char selet[10];
  287. int n = 1;
  288. ofstream outfile;
  289. ifstream infile;
  290. student *p, *ptr;
  291. student *test = head, *mid;
  292. cout << "*************************欢迎进入学生信息管理系统*************************" << endl;
  293. do {
  294. cout << "**************************************************************************" << endl;
  295. cout << "1.插入信息;   2.删除信息;  3.修改信息; 4.查看信息; 5.保存  " << endl;
  296. cout << "按'q'键退出      " << endl;
  297. cout << "**************************************************************************" << endl;
  298. cin >> selet;
  299. if (((selet[0]<'1' || selet[0]>'6') && selet[0] != 'q') || strlen(selet)>1)
  300. {
  301. system("cls");
  302. cout << "您的输入有误,请重新输入!" << endl;
  303. break;
  304. }
  305. switch (selet[0])
  306. {
  307. case '1':
  308. construct_list(head);
  309. break;
  310. case '2':
  311. delete_list(head);
  312. break;
  313. case '3':
  314. change_info(head);
  315. break;
  316. case '4':
  317. output(head);
  318. break;
  319. case '5':
  320. outfile.open("students.txt", ios::out | ios::app);
  321. for (p = head->getNext(); p != '\0'; p = p->getNext())
  322. {
  323. outfile << p->stu_name << ' ';
  324. outfile << p->stu_num << ' ';
  325. outfile << p->stu_score << ' ';
  326. outfile << endl;
  327. }
  328. outfile.close();
  329. system("cls");
  330. cout << "保存成功!" << endl;
  331. break;
  332. case 'q':
  333. break;
  334. }
  335. } while (selet[0] != 'q');
  336. }
  337. void main()
  338. {
  339. student head;
  340. mainmenu(&head);
  341. }

运行结果部分截图:

用c++模拟实现一个学生成绩管理系统相关推荐

  1. 场景:一个年级,相当链表A ,该年级5个班,每个班5个人,相当于链表B1--B5:做一个学生成绩管理系统学生成绩有语文 数学 英语功能: 录入成绩 找三科总分的最高分 最低分 算出平均分

    #include <stdio.h> #include <stdlib.h>struct Student//学生结构体 {char* name;int chinese;int ...

  2. c语言学生成绩管理论文,用c语言实现一个学生成绩管理系统.doc

    用c语言实现一个学生成绩管理系统.doc 还剩 15页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 第 16 ...

  3. 用C语言实现一个学生成绩管理系统 实现学生信息管理。包括:录入、查询、排序等功能。 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。

    用C语言实现一个学生成绩管理系统 题目: 学生成绩管理系统 功能: 实现学生信息管理.包括:录入.查询.排序等功能. 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3-) ,利用 ...

  4. 用Java创建一个学生成绩管理系统登陆界面(初级)

    目录 任务与要求 代码部分 部分代码: 完整代码: 任务与要求 使用eclipse.exe创建一个登录界面,如图1所示,当用户名输入"lili",密码输入"123456& ...

  5. c语言设计一个学生成绩管理系统,用C语言设计的学生成绩管理系统1.doc

    实 训 报 告 实训名称: "学生成绩管理系统"设计 时间: 2009年 06月15日至 2009年06月 19日 学生实训任务书 一.题目 "学生成绩管理系统" ...

  6. Java实现一个学生成绩管理系统,要求存储学生信息并进行增删改查操作。

    这是我刚学完Java封装继承的时候写的一个小案例,还不会使用集合,就用数组硬写了出来,但数组的缺点是不能改变数组的长度,虽然可以写个方法新建长度加一的数组然后把旧的数组装进去,但是真的好麻烦还没必要. ...

  7. c语言数组用户注册登入管理系统_学生成绩管理系统案例

    最近可能是接近考试,有小伙伴微信私聊让找个学生成绩管理系统,今天发一下,比较简洁. 案例描述 案例要求模拟开发一个学生成绩管理系统,此系统具有以下功能: 添加学生信息,包括学号.姓名.语文成绩.数学成 ...

  8. c++对象数组模学生成绩管理系统Demo

    文章目录 一.设计要求 二.设计说明 三.实现效果 四.给出完整代码 一.设计要求 写一个学生成绩管理系统,包含学号,姓名,成绩等学生信息. 将数据存入二进制文件.dat中. 实现对学生信息的显示.查 ...

  9. ASP.NetCore+VUE 实现学生成绩管理系统(一)

    周三 陪伴是最长情的告白 还有两天情人节:「无论是在家里,还是在工作,或者是在自我防护中,多给家人爱人发句平安,是最有心意.最重要的一件事.」 ♥感谢老李???? 近来一段时间一直没有学习新的东西,闲 ...

最新文章

  1. R语言安装.tar.gz包
  2. STM32的can现场总线实验心得
  3. 分式的二阶导数怎么求_为何二阶微分要记为 d²y/dx²?
  4. win7下nsis打包exe安装程序教程
  5. Docker介绍与安装使用(一)
  6. SAP ABAP XSLT extract custom style
  7. Java多线程(review)
  8. MyEclipse创建struts.xml
  9. x12arima季节调整方法_深秋是腌洋姜的季节,用老一辈的方法做一坛,比腌萝卜香还爽口...
  10. Oracle(一)创建表空间 用户以及用户授权
  11. bgll算法 matlab,一种复杂网络社区检测的方法与流程
  12. [译] ASP.NET 生命周期 – ASP.NET 应用生命周期(一)
  13. UNIX高级环境编程(11)进程控制(Process Control)- 进程快照,用户标识符,进程调度...
  14. 第一章 路径规划算法概述
  15. 硬盘绝密维修资料(2)
  16. 项目总结 :木门app(2015.4.10 —— 2015.5.8)
  17. 子查询(exists子查询)
  18. win10系统查看组件服务器,如何查看win10电脑DNS服务器地址 win10查看DNS服务器地址的方法...
  19. 【活动推荐】2020中国DevOps社区峰会(成都站)
  20. 关于 AlphaBlend 和 32bpp 的反锯齿图标

热门文章

  1. sqlserver中自定义函数+存储过程实现批量删除
  2. mybatis06 增删改差 源码
  3. JMeter学习(四)参数化、断言、集合点
  4. 通过OracleDataReader来读取BLOB类型的数据 (转载)
  5. String类的构造与析构相关处理
  6. SQL Server 2005 DTS导入平面数据
  7. 刚刚注册,打声招呼先
  8. onpagefinished等了很久才执行_今天自律了吗?停课不停锻炼 才是战疫正确姿势
  9. python 局域网 主机名_使用python获取连接到本地网络(基于主机名)的所有设备的ip...
  10. 尝试连接到服务器时出错请检查虚拟机管理器,Hyper-V尝试连接到服务器出错无效类的解决方法...