用c++模拟实现一个学生成绩管理系统
https://blog.csdn.net/yanxiaolx/article/details/53393437
题目:用c++模拟实现一个学生成绩的信息管理系统,要求能添加、删除、修改、查看和保存学生的信息等功能
源代码如下:
- #define _CRT_SECURE_NO_WARNINGS
- #include<iostream>
- using namespace std;
- #include<string.h>
- #include<fstream>
- class student
- {
- private:
- student* next;
- public:
- char stu_num[15]; //学号
- char stu_name[30]; //姓名
- float stu_score; //成绩
- void afterInsert(student *p);//在该节点后插入一个节点
- void afterDelete();//在该节点后删除一个节点
- student *getNext()//获得下一个节点的指针
- {
- return next;
- }
- /***********查询学生信息************/
- void getMage();
- /******学生信息修改******/
- void changeMage(int n, char *ptr);
- void changegrade(float p);
- /******构造*****/
- student(char *num, char *name, float score);
- student();
- };
- void student::changegrade(float p)
- {
- stu_score = p;
- }
- student::student() //构造
- {
- strcpy(stu_num, "\0");
- strcpy(stu_name, "\0");
- stu_score = 0;
- next = '\0';
- }
- student::student(char *num, char *name, float score)
- {
- strcpy(stu_num, num);
- strcpy(stu_name, name);
- stu_score = score;
- next = '\0';
- }
- void student::afterInsert(student *p)//插入节点
- {
- p->next = next;
- next = p;
- }
- void student::afterDelete() //删除节点
- {
- student *p = next;
- next = p->next;
- delete p;
- }
- void student::getMage() //获得信息
- {
- cout << "学号:" << stu_num << " 姓名:" << stu_name;
- cout << " c++成绩:" << stu_score << endl;
- }
- void student::changeMage(int n, char *ptr)
- {
- switch (n)
- {
- case 1: strcpy(stu_num, ptr);
- break;
- case 2: strcpy(stu_name, ptr);
- }
- }
- //建立链表函数
- void construct_list(student *tail)
- {
- student *p = new student;
- char very[20];
- float achieve;
- cout << "请输入学号:" << endl;
- cin >> very;
- p->changeMage(1, very);
- cout << "请输入姓名:" << endl;
- cin >> very;
- p->changeMage(2, very);
- cout << "请输入c++成绩:" << endl;
- cin >> achieve;
- p->changegrade(achieve);
- system("cls");
- cout << "信息输入完毕" << endl;
- for (; tail->getNext() != '\0';)
- {
- tail = tail->getNext();
- }
- tail->afterInsert(p);
- }
- /*********查询信息*********/
- student *findmege(student *head)
- {
- loop:
- cout << "1--按姓名查询 2--按学号查询 q--返回上一级菜单" << endl;
- char p[5], ptr[20];
- student *mid = head;
- cin >> p;
- if (p[0] != '1'&&p[0] != '2'&&p[0] != 'q' || strlen(p)>1)
- {
- system("cls");
- cout << "对不起,你的输入有误,请重新输入!" << endl;
- goto loop;
- }
- switch (p[0])
- {
- case '1':
- {
- system("cls");
- cout << "请输入要查找的姓名:" << endl;
- cin >> ptr;
- for (; strcmp(ptr, mid->stu_name) != 0; mid = mid->getNext())
- {
- if (mid->getNext() == '\0')
- {
- cout << "对不起,你要查找的人不存在,请确认你的输入是否正确!" << endl;
- goto loop;
- }
- }
- return mid;
- }
- case '2':
- {
- system("cls");
- cout << "请输入您要查找的学号:" << endl;
- cin >> ptr;
- for (; strcmp(ptr, mid->stu_num) != 0; mid = mid->getNext())
- {
- if (mid->getNext() == '\0')
- {
- cout << "对不起,您要查找的内容不存在,请确认您的输入是否正确!" << endl;
- goto loop;
- }
- }
- return mid;
- }
- case 'q':
- {
- return '\0';
- }
- default:
- {
- system("cls");
- cout << "对不起,您的输入有误,请重新输入!" << endl;
- goto loop;
- }
- }
- }
- /******************删除链表 节点***********************/
- void delete_list(student *head)
- {
- student *p = '\0';
- char selet[4];
- system("cls");
- cout << "在删除前,系统会根据您的提示找到您要删除的学生信息!" << endl;
- p = findmege(head);
- if (p != '\0')
- {
- cout << "确认要删除吗(yes/任意键返回)" << endl;
- cin >> selet;
- if (strcmp(selet, "yes") == 0)
- {
- for (; head->getNext() != p; head = head->getNext());
- head->afterDelete();
- system("cls");
- cout << "该信息删除成功!" << endl;
- }
- }
- }
- /*******************修改节点信息********************/
- void change_info(student *head)
- {
- system("cls");
- cout << "在您修改前,系统会根据您提供的信息找的您要修改的信息:" << endl;
- student *p = '\0';
- float achieve;
- p = findmege(head);
- if (p != '\0')
- {
- cout << "请输入c++成绩:" << endl;
- cin >> achieve;
- p->changegrade(achieve);
- system("cls");
- cout << "修改成功!" << endl;
- }
- }
- /**************输出学生成绩信息**************/
- void output(student *head)
- {
- system("cls");
- cout << "1-查看指定学生信息;2-查看所有学生信息;3-分段输出学生信息" << endl;
- char ch;
- int n = 0;
- head = head->getNext();
- cin >> ch;
- switch (ch)
- {
- case '1':
- head = findmege(head);
- if (head == '\0')
- {
- break;
- }
- head->getMage();
- break;
- case '2':
- while (head)
- {
- head->getMage();
- head = head->getNext();
- }
- break;
- case '3':
- cout << "a-60分以下;b-60~70分之间;c-70~80分之间;d-80~90分之间;e-90~100分之间:" << endl;
- cin >> ch;
- switch (ch)
- {
- case 'a':
- while (head)
- {
- if (head->stu_score <= 60)
- {
- head->getMage();
- n++;
- }
- head = head->getNext();
- }
- break;
- case 'b':
- while (head)
- {
- if (head->stu_score>60 && head->stu_score <= 70)
- {
- head->getMage();
- n++;
- }
- head = head->getNext();
- }
- break;
- case 'c':
- while (head)
- {
- if (head->stu_score>70 && head->stu_score <= 80)
- {
- head->getMage();
- n++;
- }
- head = head->getNext();
- }
- break;
- case 'd':
- while (head)
- {
- if (head->stu_score>80 && head->stu_score <= 90)
- {
- head->getMage();
- n++;
- }
- head = head->getNext();
- }
- break;
- case 'e':
- while (head)
- {
- if (head->stu_score>90 && head->stu_score <= 100)
- {
- head->getMage();
- n++;
- }
- head = head->getNext();
- }
- }
- if (n == 0)
- {
- cout << "该分段内没有您要找的学生信息" << endl;
- }
- }
- }
- /*****************主菜单************************/
- void mainmenu(student *head)
- {
- char selet[10];
- int n = 1;
- ofstream outfile;
- ifstream infile;
- student *p, *ptr;
- student *test = head, *mid;
- cout << "*************************欢迎进入学生信息管理系统*************************" << endl;
- do {
- cout << "**************************************************************************" << endl;
- cout << "1.插入信息; 2.删除信息; 3.修改信息; 4.查看信息; 5.保存 " << endl;
- cout << "按'q'键退出 " << endl;
- cout << "**************************************************************************" << endl;
- cin >> selet;
- if (((selet[0]<'1' || selet[0]>'6') && selet[0] != 'q') || strlen(selet)>1)
- {
- system("cls");
- cout << "您的输入有误,请重新输入!" << endl;
- break;
- }
- switch (selet[0])
- {
- case '1':
- construct_list(head);
- break;
- case '2':
- delete_list(head);
- break;
- case '3':
- change_info(head);
- break;
- case '4':
- output(head);
- break;
- case '5':
- outfile.open("students.txt", ios::out | ios::app);
- for (p = head->getNext(); p != '\0'; p = p->getNext())
- {
- outfile << p->stu_name << ' ';
- outfile << p->stu_num << ' ';
- outfile << p->stu_score << ' ';
- outfile << endl;
- }
- outfile.close();
- system("cls");
- cout << "保存成功!" << endl;
- break;
- case 'q':
- break;
- }
- } while (selet[0] != 'q');
- }
- void main()
- {
- student head;
- mainmenu(&head);
- }
运行结果部分截图:
用c++模拟实现一个学生成绩管理系统相关推荐
- 场景:一个年级,相当链表A ,该年级5个班,每个班5个人,相当于链表B1--B5:做一个学生成绩管理系统学生成绩有语文 数学 英语功能: 录入成绩 找三科总分的最高分 最低分 算出平均分
#include <stdio.h> #include <stdlib.h>struct Student//学生结构体 {char* name;int chinese;int ...
- c语言学生成绩管理论文,用c语言实现一个学生成绩管理系统.doc
用c语言实现一个学生成绩管理系统.doc 还剩 15页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 第 16 ...
- 用C语言实现一个学生成绩管理系统 实现学生信息管理。包括:录入、查询、排序等功能。 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。
用C语言实现一个学生成绩管理系统 题目: 学生成绩管理系统 功能: 实现学生信息管理.包括:录入.查询.排序等功能. 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3-) ,利用 ...
- 用Java创建一个学生成绩管理系统登陆界面(初级)
目录 任务与要求 代码部分 部分代码: 完整代码: 任务与要求 使用eclipse.exe创建一个登录界面,如图1所示,当用户名输入"lili",密码输入"123456& ...
- c语言设计一个学生成绩管理系统,用C语言设计的学生成绩管理系统1.doc
实 训 报 告 实训名称: "学生成绩管理系统"设计 时间: 2009年 06月15日至 2009年06月 19日 学生实训任务书 一.题目 "学生成绩管理系统" ...
- Java实现一个学生成绩管理系统,要求存储学生信息并进行增删改查操作。
这是我刚学完Java封装继承的时候写的一个小案例,还不会使用集合,就用数组硬写了出来,但数组的缺点是不能改变数组的长度,虽然可以写个方法新建长度加一的数组然后把旧的数组装进去,但是真的好麻烦还没必要. ...
- c语言数组用户注册登入管理系统_学生成绩管理系统案例
最近可能是接近考试,有小伙伴微信私聊让找个学生成绩管理系统,今天发一下,比较简洁. 案例描述 案例要求模拟开发一个学生成绩管理系统,此系统具有以下功能: 添加学生信息,包括学号.姓名.语文成绩.数学成 ...
- c++对象数组模学生成绩管理系统Demo
文章目录 一.设计要求 二.设计说明 三.实现效果 四.给出完整代码 一.设计要求 写一个学生成绩管理系统,包含学号,姓名,成绩等学生信息. 将数据存入二进制文件.dat中. 实现对学生信息的显示.查 ...
- ASP.NetCore+VUE 实现学生成绩管理系统(一)
周三 陪伴是最长情的告白 还有两天情人节:「无论是在家里,还是在工作,或者是在自我防护中,多给家人爱人发句平安,是最有心意.最重要的一件事.」 ♥感谢老李???? 近来一段时间一直没有学习新的东西,闲 ...
最新文章
- R语言安装.tar.gz包
- STM32的can现场总线实验心得
- 分式的二阶导数怎么求_为何二阶微分要记为 d²y/dx²?
- win7下nsis打包exe安装程序教程
- Docker介绍与安装使用(一)
- SAP ABAP XSLT extract custom style
- Java多线程(review)
- MyEclipse创建struts.xml
- x12arima季节调整方法_深秋是腌洋姜的季节,用老一辈的方法做一坛,比腌萝卜香还爽口...
- Oracle(一)创建表空间 用户以及用户授权
- bgll算法 matlab,一种复杂网络社区检测的方法与流程
- [译] ASP.NET 生命周期 – ASP.NET 应用生命周期(一)
- UNIX高级环境编程(11)进程控制(Process Control)- 进程快照,用户标识符,进程调度...
- 第一章 路径规划算法概述
- 硬盘绝密维修资料(2)
- 项目总结 :木门app(2015.4.10 —— 2015.5.8)
- 子查询(exists子查询)
- win10系统查看组件服务器,如何查看win10电脑DNS服务器地址 win10查看DNS服务器地址的方法...
- 【活动推荐】2020中国DevOps社区峰会(成都站)
- 关于 AlphaBlend 和 32bpp 的反锯齿图标
热门文章
- sqlserver中自定义函数+存储过程实现批量删除
- mybatis06 增删改差 源码
- JMeter学习(四)参数化、断言、集合点
- 通过OracleDataReader来读取BLOB类型的数据 (转载)
- String类的构造与析构相关处理
- SQL Server 2005 DTS导入平面数据
- 刚刚注册,打声招呼先
- onpagefinished等了很久才执行_今天自律了吗?停课不停锻炼 才是战疫正确姿势
- python 局域网 主机名_使用python获取连接到本地网络(基于主机名)的所有设备的ip...
- 尝试连接到服务器时出错请检查虚拟机管理器,Hyper-V尝试连接到服务器出错无效类的解决方法...