广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现学生成绩管理系统最新版
  • 772
分享到

C++实现学生成绩管理系统最新版

2024-04-02 19:04:59 772人浏览 八月长安
摘要

学生成绩管理系统,供大家参考,具体内容如下 一、问题描述及功能要求 (1)输入同学的学号,姓名,三门科成绩(应用数学、大学英语、计算机应用基础) (2)可以计算出每个学生三门课的

学生成绩管理系统,供大家参考,具体内容如下

一、问题描述及功能要求

(1)输入同学的学号,姓名,三门科成绩(应用数学、大学英语、计算机应用基础)

(2)可以计算出每个学生三门课的平均成绩。

(3)可通过输入姓名、学号查询成绩,也可通过姓名修改学生信息,也可通过主界面删除学生信息,以及清楚所有信息

二、代码实现 带有注释

废话不说,直接代码,欢迎指正。
大家CV可能有不兼容的情况,可以跟我滴滴,尽可能解决问题地回复。


#include <cstdlib>
#include <iOStream>
#include <string>
using namespace std;

#define null NULL

class student
{
    private:
        friend class studentMessage;
        student *next; //节点指针
        string name; //学生姓名
        int age; //年纪
        int id; //学号
        double score[3]; //三科成绩
        double total; //总分
        double average; //平均成绩
    public:
        student(string _name,int _age,int _id,double *_score)
        {
            name = _name;
            age = _age;
            id = _id;
            score[0] = _score[0];
            score[1] = _score[1];
            score[2] = _score[2];
            total = score[0]+score[1]+score[2];
            average = total/3;
            next = NULL;
        }
        student() //为studentMessage初始化头结点用
        {
            name = "null";
            age = 0;
            id = 0;
            score[0]=score[1]=score[2]=0;
            total = 0;
            average = 0;
            next = NULL;
        }
        ~student(){}
        void swap(student*);
};


void student::swap(student *q)
{
    string _name;
    int _age,_id;
    double _score[3],_total,_average;

    _name = name;
    name = q->name;
    q->name = _name;

    _age = age;
    age = q->age;
    q->age = _age;

    _id = id;
    id = q->id;
    q->id = _id;

    _score[0] = score[0];
    score[0] = q->score[0];
    q->score[0] = _score[0];

    _score[1] = score[1];
    score[1] = q->score[1];
    q->score[1] = _score[1];

    _score[2] = score[2];
    score[2] = q->score[2];
    q->score[2] = _score[2];

    _total = total;
    total = q->total;
    q->total = _total;

    _average = average;
    average = q->average;
    q->average = _average;
}






class studentMessage
{
    private:
      student *first; //头指针
      int num; //信息中的学生人数
    public:
        studentMessage()
        {
            num = 0; //初始化学生人数为0
            first = new student;  //初始化头结点
        }
        ~studentMessage(){delete first;}

        
        void Insret(void); //插入
        void Display(void); //显示
        void Delete(void); //删除
        void Search(void); //搜索
        void Change(void); //改动
        void sortByLesson1(void); //按成绩一来排序
        void sortByLesson2(void); //按成绩二来排序
        void sortByLesson3(void); //按成绩三来排序
        void sortByTotal(void); //按总分来排序
        void SearchByid(void); //按照学号查找
        void SearchByname(void); //按照姓名查找
        int menu(void); //初始的菜单
        void clear(void); //清空列表
};


int studentMessage::menu(void)
{
    int ch;
    cout<<"**********************************************************************"<<endl;
    cout<<"======================================================================"<<endl;
    cout<<"***************************学生成绩管理系统***************************"<<endl;cout<<endl;
    cout<<"1.显示所有学生成绩"<<endl;
    cout<<"2.添加学生信息"<<endl;
    cout<<"3.查询学生信息"<<endl;
    cout<<"4.修改学生信息"<<endl;
    cout<<"5.删除最下面一个学生信息"<<endl;
    cout<<"6.删除所有信息"<<endl;
    cout<<"0.退出系统"<<endl;cout<<endl;
    cout<<"********************Copyright@ By Jeaven Wong**************************"<<endl;
    cout<<"======================================================================="<<endl;
    cout<<"***********************************************************************"<<endl;
    cin >> ch;
    cout<<"\n\n\n"<<endl;
    return ch;
}



//插入
void studentMessage::Insret(void)
{
    string name;
    int age;
    int id;
    double score[3];
    cout<<"请输入学生姓名: ";
    cin>>name;
    cout<<"请输入学生年龄: ";
    cin>>age;
    cout<<"请输入学生学号: ";
    cin>>id;
    cout<<"下面请输入学生三门课程成绩: ";
    cout<<endl;
    cout<<"请输入第一门课的成绩: ";cin>>score[0];
    cout<<"请输入第二门课的成绩: ";cin>>score[1];
    cout<<"请输入第三门课的成绩: ";cin>>score[2];
    cout<<endl;


    student *newstu = new student(name,age,id,score);
    student *p = first;
    while(p->next != NULL)
    {
        p = p->next;
    }
    p->next = newstu;
    newstu->next = null;
    num++;
}



void studentMessage::Display(void)
{
    if(num == 0)
    {
        cout<<"当前记录中无学生..."<<endl;
    }

    else
    {
        student *p = first->next;
        while(p != null)
        {
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年龄:"<<p->age<<"  ";
            cout<<"学号:"<<p->id<<"  ";
            cout<<"三门课程成绩: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"总分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
            p = p->next;
        }
    }
}


void studentMessage::Delete(void)
{
    student *p = first;
    student *pre = first;
    while(p->next != NULL)
    {
        pre = p;
        p = p->next;
    }
    pre->next = NULL;
    delete p;
    num--;
}


void studentMessage::Search(void)
{
    int temp = 0;
    cout<<"请输入查找的条件,有如下选项..."<<endl;
    cout<<"按照学号查找(请输入【1】) 按照姓名查找(请输入【2】)"<<endl;
    cin>>temp;
    switch(temp)
    {
        case 1: SearchByid(); break;
        case 2: SearchByname(); break;
        default: cout<<"输入有误..."<<endl;
    }
}

void studentMessage::SearchByid(void)
{
    int _id;
    int flag = 0;
    cout<<"请输入待查找学生的学号:";
    cin >> _id;
    student *p = first->next;
    while(p != null)
    {
        if(p->id == _id)
        {
            flag = 1;
            cout<<"下面是查找匹配结果:"<<endl;
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年龄:"<<p->age<<"  ";
            cout<<"学号:"<<p->id<<"  ";
            cout<<"三门课程成绩: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"总分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
        }
        p = p->next;
    }
    if(flag == 0)
    {
        cout<<"抱歉,记录中没有查找匹配项..."<<endl;
    }
}

void studentMessage::SearchByname(void)
{
    string _name;
    int flag = 0;
    cout<<"请输入待查找的学生姓名: ";
    cin >> _name;
    student *p = first->next;
    while(p != null)
    {
        if(p->name == _name)
        {
            flag = 1;
            cout<<"下面是查找匹配结果:"<<endl;
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年龄:"<<p->age<<"  ";
            cout<<"学号:"<<p->id<<"  ";
            cout<<"三门课程成绩: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"总分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
        }
        p = p->next;
    }

    if(flag == 0)
    {
        cout<<"抱歉,记录中没有查找匹配项..."<<endl;
    }
}



void studentMessage::Change(void)
{
    string _name;
    int flag = 0,temp;
    int _id,_age;
    int course = 0;
    cout<<"请输入需要改动信息的学生的姓名: ";
    cin >> _name;
    student *p = first->next;
    while(p != null)
    {
        if(p->name == _name)
        {
            flag = 1;
            cout<<"该学生当前信息如下:"<<endl;
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年龄:"<<p->age<<"  ";
            cout<<"学号:"<<p->id<<"  ";
            cout<<"三门课程成绩: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"总分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
            cout<<"请指明哪一项需要修改..."<<endl;
            cout<<"修改学号(输入【1】) 修改年龄(输入【2】)修改成绩(输入【3】)"<<endl;
            cin >> temp;
            switch(temp)
            {
                case 1:
                    {
                        cout<<"请输入新的学号:";cin>>_id;
                        p->id = _id;
                    }
                    break;
                case 2:
                    {
                        cout<<"请输入新的年龄:";cin>>_age;
                        p->age = _age;
                    }
                    break;
                case 3:
                    {
                        cout<<"请按指示修改课程成绩..."<<endl;
                        cout<<"是否需要修改第一门课程成绩?(需要输入【1】不需要输入【0】)"<<endl;
                        cin >> course;
                        if(course == 1)
                        {
                            cout<<"请输入修改后的第一门课的成绩:"; cin >> p->score[0];
                        }
                        course = 0;

                        cout<<"是否需要修改第二门课程成绩?(需要输入【1】不需要输入【0】)"<<endl;
                        cin >> course;
                        if(course == 1)
                        {
                            cout<<"请输入修改后的第二门课的成绩:"; cin >> p->score[1];
                        }
                        course = 0;

                        cout<<"是否需要修改第三门课程成绩?(需要输入【1】不需要输入【0】)"<<endl;
                        cin >> course;
                        if(course == 1)
                        {
                            cout<<"请输入修改后的第三门课的成绩:"; cin >> p->score[2];
                        }
                        course = 0;

                        p->total = p->score[0]+p->score[1]+p->score[2];
                        p->average = p->total/3;

                        cout<<"修改后的信息如下: "<<endl;
                        cout<<"姓名:"<<p->name<<"  ";
                        cout<<"年龄:"<<p->age<<"  ";
                        cout<<"学号:"<<p->id<<"  ";
                        cout<<"三门课程成绩: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
                        cout<<"总分:"<<p->total<<"  ";
                        cout<<"平均分:"<<p->average<<endl;
                    }
                    break;
                default:  cout<<"输入有误..."<<endl;
            }
        }
        p = p->next;
    }
    if(flag == 0)
        cout<<"当前记录中没有次学生..."<<endl;
}




//按照科目一排序
void studentMessage::sortByLesson1(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->score[0] > q->score[0])
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

//按照科目二排序
void studentMessage::sortByLesson2(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->score[1] > q->score[1])
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

//按照科目三排序
void studentMessage::sortByLesson3(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->score[2] > q->score[2])
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

//按照总成绩排序
void studentMessage::sortByTotal(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->total > q->total)
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

void studentMessage::clear(void)
{
    student *p = first->next;
    while(p != null)
    {
        first->next = p->next;
        p->next = null;
        delete p;
        p = first->next;
    }
}



int main()
{
    studentMessage stulist;
    int ch;
    while(ch = stulist.menu())
    {
        switch(ch)
        {
            case 1: stulist.Display(); break;
            case 2: stulist.Insret(); break;
            case 3: stulist.Search(); break;
            case 4: stulist.Change(); break;
            case 5: stulist.Delete(); break;
            case 6: stulist.clear(); break;
            default: cout<<"请按要求输入..."<<endl;
        }
    }
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C++实现学生成绩管理系统最新版

本文链接: https://www.lsjlt.com/news/128432.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现学生成绩管理系统最新版
    学生成绩管理系统,供大家参考,具体内容如下 一、问题描述及功能要求 (1)输入同学的学号,姓名,三门科成绩(应用数学、大学英语、计算机应用基础) (2)可以计算出每个学生三门课的...
    99+
    2022-11-12
  • C#实现学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 使用链表写学生成绩管理系统 链表可以灵活的展示增删改查 下面是结果演示 这是登录及部分添加 继续添...
    99+
    2022-11-13
    C#学生成绩管理系统 C#成绩管理系统 C#学生管理系统
  • C++实现简单学生成绩管理系统
    本文实例为大家分享了C++实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 一、问题描述 设计一个学生成绩管理程序,实现按班级完成对学生成绩信息的录入和修改,并用文件保存。实...
    99+
    2022-11-13
  • C#实现简单学生成绩管理系统
    本文实例为大家分享了C#实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 C#作业 用循环结构/数组实现 进入启动页面 管理员身份登入 用户名:师晓峰密码:88481234...
    99+
    2022-11-13
    C#学生成绩管理系统 C#学生管理系统 C#成绩管理系统
  • C++实现简单的学生成绩管理系统
    本文实例为大家分享了C++实现简单学生成绩管理系统的具体代码,供大家参考,具体内容如下 manage.h #include <iostream> #include <...
    99+
    2022-11-13
  • Java实现学生成绩管理系统
    本文实例为大家分享了Java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 新手练手小项目,主要练习面向对象、循环、数组、排序等等。 本人也是自学练手,代码有不正确的或不完...
    99+
    2022-11-12
  • C语言实现学生成绩管理系统项目
    本文实例为大家分享了C语言实现学生成绩管理系统项目,供大家参考,具体内容如下 1、数据结构:学生信息:学号、姓名、年龄、性别、3课成绩 2、功能: (1)  增加学生记录(...
    99+
    2022-11-13
  • C语言代码实现学生成绩管理系统
    某班有最多不超过 30 人(具体人数由键盘输人)参加期未考试,考试科目 最多不超过 6 门(具体门数由键盘输入,但不少于 3 门),学生成绩管理系统是一 个非常实用的程序,如果能够把...
    99+
    2022-11-13
  • C语言链表实现学生成绩管理系统
    目录一、课程设计题目及内容二、主要设计思路三、程序源码及具体注释(1)预处理指令(2)类型定义(3)函数原型(4)main函数定义(5)其他函数定义 四、运行示例五、注意事...
    99+
    2022-11-13
  • 使用C语言实现学生成绩管理系统
    最近正在学习C语言,搞了一个学生成绩管理系统的小程序,代码粗陋,大佬勿喷。 先上图: 整个程序采用链表来管理学生成绩,保存学生成绩用的是 文件处理函数,使用 fopen(FileP...
    99+
    2022-11-12
  • python mysql实现学生成绩管理系统
    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的成绩管理系统,这个东西其实拿不出手,不过就...
    99+
    2022-11-12
  • 学生成绩管理系统——JAVA
    学生成绩管理系统 1.简介 本学生成绩管理系统具有录入学生成绩、查询学生成绩、输出学 生按成绩的排名、输出学科的分数四个功能,其中后两个功能在“输出成绩”这一目录下。 此系统可以实现学生成绩管理的一些...
    99+
    2023-10-01
    java mysql 数据库 计算机视觉 爬虫
  • Java——学生成绩管理系统
    一、项目简介 学生管理系统是一种基于计算机技术实现的学生信息管理工具,能够方便地对学生信息进行录入、查询、修改和删除。该项目采用 Java 语言编写,使用 Spring MVC 框架和 MySQL 数据库,实现了以上所述的主要功能,该学生管...
    99+
    2023-09-08
    mysql 数据库 开发语言 json
  • 怎么用C语言实现学生成绩管理系统
    这篇“怎么用C语言实现学生成绩管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C语言实现学生成绩管理系统”文章吧...
    99+
    2023-06-29
  • C++基于单链表实现学生成绩管理系统
    本文实例为大家分享了C++实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 #include<iostream> using namespace std; s...
    99+
    2022-11-13
  • C++如何实现简单的学生成绩管理系统
    这篇文章主要介绍了C++如何实现简单的学生成绩管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++如何实现简单的学生成绩管理系统文章都会有所收获,下面我们一起来看看吧。manage.h#include&...
    99+
    2023-06-29
  • C语言学生成绩管理系统源码
    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 效果如下: 代码如下: #include <stdio.h> #include <...
    99+
    2022-11-13
  • java实现简单学生成绩管理系统
    本文实例为大家分享了java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下   import java.util.Scanner; import java.lang.*;...
    99+
    2022-11-13
  • java实现学生成绩档案管理系统
    本文实例为大家分享了java实现学生成绩档案管理系统的具体代码,供大家参考,具体内容如下 实验要求 • 学生信息录入,信息包括学号、姓名、专业、四门课成绩、总分、名次; ...
    99+
    2022-11-12
  • shell如何实现学生成绩管理系统
    这篇文章主要介绍了shell如何实现学生成绩管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下基本的操作增加删除查询展示全部学生信息vim编辑保存信息的文件遇...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作