C++课程设计——学生成绩管理系统

这篇具有很好参考价值的文章主要介绍了C++课程设计——学生成绩管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天清理电脑偶尔发现一个我刚学编程时用c++写的一份课程设计,使用到简单的链表,结构体,c++类与对象的知识——学生成绩管理系统。
~~
系统结构:

  1. 管理员模式
  2. 教师模式
  3. 学生模式

实现了对学生成绩及信息的增删改查以及排序。

效果图

主菜单

学生成绩管理系统c++课程设计,c++,开发语言,算法

管理员模式菜单

学生成绩管理系统c++课程设计,c++,开发语言,算法文章来源地址https://www.toymoban.com/news/detail-559836.html

源代码

#include <algorithm>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
class Student
{
private:
    char name[10];
    char id[12];
    float math;
    float computer;
    float english;

public:
    Student()
    {
    }
    Student(char *n)
    {
        strcpy(name, n);
    }
    Student(char *n, char *i)
    {
        strcpy(name, n);
        strcpy(id, i);
    }
    void SetName(char *n)
    {
        strcpy(name, n);
    }
    void SetID(char *i)
    {
        strcpy(id, i);
    }
    void SetMath(float m)
    {
        math = m;
    }
    void SetComputer(float c)
    {
        computer = c;
    }
    void SetEnglish(float e)
    {
        english = e;
    }
    void SetAll(float m, float e, float c)
    {
        math = m;
        english = e;
        computer = c;
    }
    float Sum()
    {
        return math + english + computer;
    }
    string Name()
    {
        return name;
    }
    string Id()
    {
        return id;
    }
    float GetMath()
    {
        return math;
    }
    float GetEnglish()
    {
        return english;
    }
    float GetComputer()
    {
        return computer;
    }
    bool Match(char *str, short flag) //flag=1 name flag=2 id
    {
        if (flag == 1)
            return strcmp(name, str) == 0;
        else
            return strcmp(id, str) == 0;
    }
    void Print()
    {
        cout << name << '\t' << id << endl;
        cout << "高数:" << math << '\t' << "英语:" << english << '\t' << "C++:" << computer << endl;
    }
};

struct Node
{
    Student st;
    Node *next;
};
class Data //su zu
{
private:
    Node *head;

public:
    Data()
    {
        head = new Node;
        head->next = NULL;
    }
    ~Data()
    {
        Node *p;
        while (head != NULL)
        {
            p = head;
            head = head->next;
            delete p;
        }
        cout << "程序结束";
    }
    void Push(char *n, char *i, float m, float e, float c)
    {

        Student st(n, i);
        st.SetAll(m, e, c);
        Node *p = new Node;
        p->st = st;
        p->next = head->next;
        head->next = p;
    }
    void Push()
    {
        char n[10], id1[12];

        cout << "请输入添加学生姓名:";
        cin >> n;
        cout << endl;
        Node *p;
        do
        {
            cout << "请输入添加学生学号:";
            cin >> id1;
            for (p = head->next; p != NULL; p = p->next)
            {
                if (p->st.Match(id1, 2))
                {
                    cout << "该学号已存在请重新输入" << endl;
                    break;
                }
            }
        } while (p != NULL);
        Student stu1(n, id1);
        float m, e, c;
        cout << "请输入该生高数成绩:";
        cin >> m;
        cout << "请输入该生英语成绩:";
        cin >> e;
        cout << "请输入该生C++成绩:";
        cin >> c;
        stu1.SetAll(m, e, c);
        Node *s = new Node;
        s->st = stu1;
        s->next = head->next;
        head->next = s;
        cout << "添加成功\n";
        system("pause");
    }
    Node *Search(Node *start, char *str, short flag)
    {
        for (Node *p = start; p != NULL; p = p->next)
        {
            if (p->st.Match(str, flag))
            {

                p->st.Print();
                return p;
            }
        }
        return NULL;
    }
    Node *Search1()
    {
        short choice;
        char ch;
        do
        {
            cout << "1.按姓名搜索  2.按学号搜索";
            cin >> choice;
        } while (choice != 1 && choice != 2);
        char match[12];
        cout << "请输入你要查找的" << (choice == 1 ? "姓名" : "学号") << ":\n";
        cin >> match;
        Node *result = head->next;
        while (true)
        {
            result = Search(result, match, choice);
            if (result == NULL)
            {
                cout << "未找到该学生" << endl;
                system("pause");
                return NULL;
            }
            cout << "这是你要找的学生?(y/n)";
            cin >> ch;
            system("pause");
            if (ch == 'y' || ch == 'Y')
                return result;
            else
                result = result->next;
        }
    }
    bool Delete()
    {
        Node *result;
        result = Search1();
        if (result == NULL)
            return false;
        char choice;
        cout << "是否要删除这条信息?(y/n)";
        cin >> choice;
        Node *p;
        if (choice == 'y' || choice == 'Y')
        {
            p = result;
            for (p = head; p->next != result; p = p->next)
                ;
            p->next = result->next;
            result->next = NULL;
            delete result;
            cout << "删除成功";
            system("pause");
            return true;
        }
        cout << "信息未删除";
        system("pause");
        return false;
    }
    bool xiugai()
    {
        Node *result;
        result = Search1();
        if (result == NULL)
            return false;
        char choice;
        char choice1;
        char xinname[10];
        float xinmath, xinenglish, xincomputer;

        cout << "是否要修改 (y/n)";
        cin >> choice;
        if (choice == 'y' || choice == 'Y')
        {
            cout << "请输入要修改内容的序号    1.姓名   2.高数成绩   3.英语成绩   4.C++成绩\n";
            cout << "    (注: 学号无法修改)\n";
            cin >> choice1;
            switch (choice1)
            {
            case '1':
                cout << "请输入修改后姓名:";
                cin >> xinname;
                result->st.SetName(xinname);
                cout << "修改成功";
                system("pause");
                break;
            case '2':
                cout << "请输入修改后高数成绩:";
                cin >> xinmath;
                result->st.SetMath(xinmath);
                cout << "修改成功";
                system("pause");
                break;
            case '3':
                cout << "请输入修改后英语成绩:";
                cin >> xinenglish;
                result->st.SetEnglish(xinenglish);
                cout << "修改成功";
                system("pause");
                break;
            case '4':
                cout << "请输入修改后C++成绩:";
                cin >> xincomputer;
                result->st.SetComputer(xincomputer);
                cout << "修改成功";
                system("pause");
                break;
            default:
                cout << "信息未修改";
                system("pause");
                return false;
            }
            return true;
        }
        cout << "信息未修改";
        return false;
    }
    void Display()
    {
        cout << endl;
        cout << setw(12) << setiosflags(ios::left) << "姓名" << setw(12) << "学号" << setw(8) << "高数" << setw(8) << "英语" << setw(8) << "C++" << setw(8) << "总分" << endl;
        Node *p;
        for (p = head->next; p != NULL; p = p->next)
        {
            cout << setw(12) << p->st.Name() << setw(12) << p->st.Id() << setw(8) << p->st.GetMath() << setw(8) << p->st.GetEnglish() << setw(8) << p->st.GetComputer() << setw(8) << p->st.Sum() << endl;
        }
        cout << resetiosflags(ios::left);
        system("pause");
    }
    void Sort()
    {
        char choice;
        do
        {
            cout << "请输入排序方式:  1.学号升序     2.总成绩降序" << endl;
            cin >> choice;
        } while (choice != '1' && choice != '2');
        if (choice == '1')
        {
            Node *p = head->next;
            while (p != NULL)
            {
                Node *q = p->next;
                while (q != NULL)
                {
                    if (p->st.Id() > q->st.Id())
                    {
                        Node *s = new Node;
                        s->st = p->st;
                        p->st = q->st;
                        q->st = s->st;
                    }
                    q = q->next;
                }
                p = p->next;
            }
        }
        else
        {
            Node *p = head->next;
            while (p != NULL)
            {
                Node *q = p->next;
                while (q != NULL)
                {
                    if (p->st.Sum() < q->st.Sum())
                    {
                        Node *s = new Node;
                        s->st = p->st;
                        p->st = q->st;
                        q->st = s->st;
                    }
                    q = q->next;
                }
                p = p->next;
            }
        }
        cout << "排序完成";
        system("pause");
    }
    char MainMenu()
    {
        char choice;
        do
        {
            system("cls");
            cout << "    --------------欢迎使用学生成绩管理系统--------------\n\n\n";
            cout << "                      1.管理员入口\n";
            cout << "                      2.教师入口\n";
            cout << "                      3.学生入口\n";
            cout << "                      4.退出\n";
            cin >> choice;
        } while (choice < '1' || choice > '4');
        return choice;
    }
    char MMenu()
    {
        char choice;
        do
        {
            system("cls");
            cout << "    -------------------管理员模式--------------------\n\n\n";
            cout << "                      1.添加学生\n";
            cout << "                      2.查找学生\n";
            cout << "                      3.删除学生\n";
            cout << "                      4.重新排序\n";
            cout << "                      5.修改学生信息\n";
            cout << "                      6.返回上一级\n";
            cin >> choice;
        } while (choice < '1' || choice > '6');
        return choice;
    }
    char TMenu()
    {
        char choice;
        do
        {
            system("cls");
            cout << "    --------------------教师模式----------------------\n\n\n";
            cout << "                      1.添加学生\n";
            cout << "                      2.查找学生\n";
            cout << "                      3.重新排序\n";
            cout << "                      4.返回上一级\n";
            cin >> choice;
        } while (choice < '1' || choice > '4');
        return choice;
    }
    char SMenu()
    {
        char choice;
        do
        {
            system("cls");
            cout << "    --------------------学生模式-----------------------\n\n\n";
            cout << "                      1.查找学生\n";
            cout << "                      2.学生排序\n";
            cout << "                      3.返回上一级\n";
            cin >> choice;

        } while (choice < '1' || choice > '3');
        return choice;
    }
};
int main()
{
    Data s;
    bool flag = false;
    bool flag1 = false;
    bool flag2 = false;
    bool flag3 = false;
    char choice;
    s.Push("lxp", "1111", 60, 90, 80);
    s.Push("jjy", "1112", 80, 40, 100);
    s.Push("wzb", "1113", 30, 32, 100);
    s.Push("fhd", "1114", 100, 120, 200);
    while (!flag)
    {
        choice = s.MainMenu();
        switch (choice)
        {
        case '1':
            while (!flag1)
            {
                choice = s.MMenu();
                switch (choice)
                {
                case '1':
                    s.Push();
                    break;
                case '2':
                    s.Search1();
                    break;
                case '3':
                    s.Delete();
                    break;
                case '4':
                    s.Sort();
                    s.Display();
                    break;
                case '5':
                    s.xiugai();
                    break;
                case '6':
                    flag1 = true;
                    break;
                }
            }
            break;
        case '2':
            while (!flag2)
            {
                choice = s.TMenu();
                switch (choice)
                {
                case '1':
                    s.Push();
                    break;
                case '2':
                    s.Search1();
                    break;
                case '3':
                    s.Sort();
                    s.Display();
                    break;
                case '4':
                    flag2 = true;
                    break;
                }
            }
            break;
        case '3':
            while (!flag3)
            {
                choice = s.SMenu();
                switch (choice)
                {
                case '1':
                    s.Search1();
                    break;
                case '2':
                    s.Sort();
                    s.Display();
                    break;
                case '3':
                    flag3 = true;
                    break;
                }
            }
            break;
        case '4':
            flag = true;
            break;
        }
        flag1 = false;
        flag2 = false;
        flag3 = false;
    }
    return 0;
}

到了这里,关于C++课程设计——学生成绩管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构课程设计:学生成绩管理系统

    目  录 第一章   需求分析 第二章 概要设计 第三章 详细设计 第四章 测试报告 第五章 安装及使用 第六章 项目总结 第七章 源码 一.需求分析        学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好

    2024年02月02日
    浏览(66)
  • C语言课程设计_学生成绩管理系统

    设计一个学生成绩排名系统。 1)  具备对成绩的管理功能(添加、删除、排序) 2)  具备对成绩的统计功能(最高分,最低分,平均分,及格率等) 3)  具备按学号、姓名、或课程名查询成绩的功能。 4)学生成绩应该保存在文件中。 备注:成绩记录以下信息:班级,学号,

    2024年02月11日
    浏览(46)
  • 学生成绩管理系统(C++实现)

    实现学生成绩管理系统: 学生信息包括:学号、姓名、性别、年龄、班级等信息。除了包括学生所有信息外,还包括专业、英语、程序设计和高等数学等课程。 设计一程序能够对学生成绩进行管理,应用到继承、抽象类、虚函数、虚基类、多态和文件的输入/输出等内容。用

    2024年02月05日
    浏览(46)
  • C语言课程设计:学生成绩信息管理系统(排序、平均分、总分)详解

    1、需求分析 利用C语言编写一个可以对学生成绩信息进行管理的系统 0、退出系统 1、录入学生信息和成绩 2、打印学生信息 3、统计学生人数 4、查找学生信息 5、修改学生信息 6、删除学生信息 7、排序学生成绩 8、生成学生信息文件 9、读取文件学生信息 10、输出各科成绩不

    2024年02月11日
    浏览(50)
  • Python毕业设计|课程设计|基于Python+Django实现的学生成绩管理系统

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路  关注作者有好处 文末获取源码   语言环境:Python3.7 数据库:

    2024年02月10日
    浏览(54)
  • C++之学生成绩信息管理系统

    为了加深对自己所学到的C++相关知识的理解,熟悉C++程序设计语言编程以及调试的基本技能,锻炼自己利用C++语言程序设计进行简单软件设计的基本思路和方法,提高运用高级语言解决实际问题的能力。我用C++做了一个学生成绩信息管理系统,下面介绍它所实现的功能以及具

    2024年02月03日
    浏览(36)
  • (c++)简易学生成绩管理系统(超简单)

    摘要: 一个简单的学生成绩管理系统自然要包括增删改查。学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。此代码是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改

    2024年02月11日
    浏览(34)
  • android课程设计-学生成绩管理系统(Android期末作业,Android课设,AndroidStudio毕业设计)

    博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年02月02日
    浏览(47)
  • 使用C++实现的学生成绩管理系统(附完整代码)

    学生成绩管理系统可以录入、查询、修改学生的成绩,它包括:信息条目序号、学生姓名、课程名称、课程学分数、学生该课程的成绩(百分制成绩, 等级制成绩,绩点)。学生成绩管理系统能够提供以下功能: 1)录入学生的成绩信息:从键盘输入数据,依次输入:学生姓

    2024年02月06日
    浏览(36)
  • 【python课程作业】python学生成绩管理系统

    功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。给舍友做的课程作业。 功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_score 演示地址 http:/

    2024年03月13日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包