千家信息网

C++如何实现简单的学生成绩管理系统

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了C++如何实现简单的学生成绩管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++如何实现简单的学生成绩管理系统文章都会有所收获,下面我们一起来看
千家信息网最后更新 2026年11月03日C++如何实现简单的学生成绩管理系统

这篇文章主要介绍了C++如何实现简单的学生成绩管理系统的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++如何实现简单的学生成绩管理系统文章都会有所收获,下面我们一起来看看吧。

manage.h

#include #include #include using namespace std;//学生template class Student {    template     friend class StudentManage;public:    Student() {        next = NULL;    }private:    int Sid;//学生编号    string Sname;//学生姓名    string Ssex;//学生性别    int Sage;//学生年龄    int Sscore;//学生成绩    Student* next;//指向下一结点的指针};template class StudentManage {public:    StudentManage();    ~StudentManage();    StudentManage& SInsert(int k, const T& sid, const string& sname, const string& ssex, const T& sage, const T& sscore);//插入    bool SIsEmpty() const;//判空    int SGetLength() const;//获取长度    bool SGetData(int k, T& sid, string& sname, string& ssex, T& sage, T& sscore);//获取数据    bool SModifyData(int k, const T& sid, const string& sname, const string& ssex, const T& sage, const T& sscore);//修改    int SFind(const int& sid);//根据id查找    StudentManage& SDelete(int k, T& sid, string& sname, string& ssex, T& sage, T& sscore);//删除    void Sort(T a[]);    void SOutPut(ostream& sout) const;//打印private:    Student* shead;};//班级template class Class {    template     friend class ClassManage;public:    Class() {        next = NULL;    }private:    int Cid;//班级编号    string CName;//班级名称    string CBzrName;//班主任名称    string CXsName;//学生名称    Class* next;};template class ClassManage {public:    ClassManage();    ~ClassManage();    ClassManage& CInsert(int k, const T& cid, const string& cname, const string& cbzrname, const string& cxsname);//插入    bool CIsEmpty() const;//判空    int CGetLength() const;//获取长度    bool CGetData(int k, T& cid, string& cname, string& cbzrname, string& cxsname);//获取数据    bool CModifyData(int k, const T& cid, const string& cname, const string& cbzrname, const string& cxsname);//修改    int CFind(const int& cid);//根据id查找    ClassManage& CDelete(int k,  T& cid, string& cname, string& cbzrname, string& cxsname);//删除    void COutPut(ostream& cout) const;//打印private:    Class* chead;};//成绩template class Grade {    template     friend class GradeManage;public:    Grade() {        next = NULL;    }private:    string Gname;    int Gscore;    Grade* next;};template class GradeManage {public:    GradeManage();    ~GradeManage();    GradeManage& GInsert(int k, const string& gname, const T& gscore);//插入    bool GIsEmpty() const;//判空    int GGetLength() const;//获取长度    bool GGetData(int k, string& gname, T& gscore);//获取数据    bool GModifyData(int k, const string& gname, const T& gscore);//修改    int GFind(const string& gname);//根据课程名称查找    GradeManage& GDelete(int k, string& gname, T& gscore);//删除    void GOutPut(ostream& gout) const;//打印private:    Grade* ghead;};

manage.cpp

#include "manage.h"//学生templateinline StudentManage::StudentManage(){    shead = new Student();}templateStudentManage::~StudentManage(){    delete shead;}templateStudentManage& StudentManage::SInsert(int k, const T& sid, const string& sname, const string& ssex, const T& sage, const T& sscore){    Student* p = shead;    Student* newNode = new Student;    newNode->Sid = sid;    newNode->Sname = sname;    newNode->Ssex = ssex;    newNode->Sage = sage;    newNode->Sscore = sscore;    int len = SGetLength();    if (k<1 || k>len + 1)        cout << "失败";    else {        for (int i = 1; i < k; i++)            p = p->next;        newNode->next = p->next;        p->next = newNode;    }    return *this;}templatebool StudentManage::SIsEmpty() const{    return shead->next == NULL;}templateint StudentManage::SGetLength() const{    int length = 0;    Student* p = shead->next;    while (p) {        length++;        p = p->next;    }    return length;}templatebool StudentManage::SGetData(int k, T& sid, string& sname, string& ssex, T& sage, T& sscore){    Student* p = shead->next;    int index = 1;    if (k<1 || k>SGetLength())        return false;    while (p != NULL && index < k) {        index++;        p = p->next;    }    if (p == NULL)        return false;    else {        sid = p->Sid;        sname = p->Sname;        ssex = p->Ssex;        sage = p->Sage;        sscore = p->Sscore;        return true;    }}templatebool StudentManage::SModifyData(int k, const T& sid, const string& sname, const string& ssex, const T& sage, const T& sscore){    Student* p = shead->next;    int index = 1;    if (k<1 || k>SGetLength())        return false;    while (p != NULL && index < k) {        index++;        p = p->next;    }    if (p == NULL)        return false;    else {        p->Sid = sid;        p->Sname = sname;        p->Ssex = ssex;        p->Sage = sage;        p->Sscore = sscore;        return true;    }}templateint StudentManage::SFind(const int& sid){    Student* p = shead->next;    int index = 1;    while (p != NULL && p->Sid != sid) {        p = p->next;        index++;    }    if (p != NULL)        return index;    else        return 0;}templateStudentManage& StudentManage::SDelete(int k, T& sid, string& sname, string& ssex, T& sage, T& sscore){    if (SGetData(k, sid, sname, ssex, sage, sscore)) {        Student* p = shead;        Student* q = NULL;        for (int i = 1; i < k; i++)            p = p->next;        q = p->next;        p->next = q->next;        delete q;    }    else        cout << "失败";    return *this;}templatevoid StudentManage::Sort(T a[]){    int n = SGetLength();    T  i, j, temp;    for (i = 1; i < n; i++) {        if (a[i] < a[i - 1]) {            temp = a[i];            for (j = i - 1; j >= 0 && a[j] > temp; --j)                a[j + 1] = a[j];            a[j + 1] = temp;        }    }    }templatevoid StudentManage::SOutPut(ostream& sout) const{    Student* p = shead->next;    while (p != NULL) {        sout << "学生编号:" << p->Sid << "学生姓名:" << p->Sname << "学生性别:" << p->Ssex << "学生年龄:" << p->Sage << "学生总分:" << p->Sscore <<" " << endl;        p = p->next;    }}template ostream& operator<<(ostream& sout, StudentManage& x) {    x.SOutPut(sout);    return sout;}//班级templateinline ClassManage::ClassManage(){    chead = new Class();}templateClassManage::~ClassManage(){    delete chead;}templateClassManage& ClassManage::CInsert(int k, const T& cid, const string& cname, const string& cbzrname, const string& cxsname){    Class* p = chead;    Class* newNode = new Class;    newNode->Cid = cid;    newNode->CName = cname;    newNode->CBzrName = cbzrname;    newNode->CXsName = cxsname;    int len = CGetLength();    if (k<1 || k>len + 1)        cout << "失败";    else {        for (int i = 1; i < k; i++)            p = p->next;        newNode->next = p->next;        p->next = newNode;    }    return *this;}templatebool ClassManage::CIsEmpty() const{    return chead->next == NULL;}templateint ClassManage::CGetLength() const{    int length = 0;    Class* p = chead->next;    while (p) {        length++;        p = p->next;    }    return length;}templatebool ClassManage::CGetData(int k, T& cid, string& cname, string& cbzrname, string& cxsname){    Class* p = chead->next;    int index = 1;    if (k<1 || k>CGetLength())        return false;    while (p != NULL && index < k) {        index++;        p = p->next;    }    if (p == NULL)        return false;    else {        cid = p->Cid;        cname = p->CName;        cbzrname = p->CBzrName;        cxsname = p->CXsName;        return true;    }}templatebool ClassManage::CModifyData(int k, const T& cid, const string& cname, const string& cbzrname, const string& cxsname){    Class* p = chead->next;    int index = 1;    if (k<1 || k>CGetLength())        return false;    while (p != NULL && index < k) {        index++;        p = p->next;    }    if (p == NULL)        return false;    else {        p->Cid = cid;        p->CName = cname;        p->CBzrName = cbzrname;        p->CXsName = cxsname;        return true;    }}templateint ClassManage::CFind(const int& cid){    Class* p = chead->next;    int index = 1;    while (p != NULL && p->Cid != cid) {        p = p->next;        index++;    }    if (p != NULL)        return index;    else        return 0;}templateClassManage& ClassManage::CDelete(int k,  T& cid, string& cname, string& cbzrname, string& cxsname){    if (CGetData(k, cid, cname, cbzrname, cxsname)) {        Class* p = chead;        Class* q = NULL;        for (int i = 1; i < k; i++)            p = p->next;        q = p->next;        p->next = q->next;        delete q;    }    else        cout << "失败";    return *this;}templatevoid ClassManage::COutPut(ostream& cout) const{    Class* p = chead->next;    while (p != NULL) {        cout << "班级编号:" << p->Cid << "班级:" << p->CName << "班主任姓名:" << p->CBzrName << "学生姓名:" << p->CXsName <<" " << endl;        p = p->next;    }}template ostream& operator<<(ostream& cout, ClassManage& x) {    x.COutPut(cout);    return cout;}//成绩templateinline GradeManage::GradeManage(){    ghead = new Grade();}templateGradeManage::~GradeManage(){    delete ghead;}templateGradeManage& GradeManage::GInsert(int k, const string& gname, const T& gscore){    Grade* p = ghead;    Grade* newNode = new Grade;    newNode->Gname = gname;    newNode->Gscore = gscore;    int len = GGetLength();    if (k<1 || k>len + 1)        cout << "失败";    else {        for (int i = 1; i < k; i++)            p = p->next;        newNode->next = p->next;        p->next = newNode;    }    return *this;}templatebool GradeManage::GIsEmpty() const{    return ghead->next == NULL;}templateint GradeManage::GGetLength() const{    int length = 0;    Grade* p = ghead->next;    while (p) {        length++;        p = p->next;    }    return length;}templatebool GradeManage::GGetData(int k, string& gname, T& gscore){    Grade* p = ghead->next;    int index = 1;    if (k<1 || k>GGetLength())        return false;    while (p != NULL && index < k) {        index++;        p = p->next;    }    if (p == NULL)        return false;    else {        gname = p->Gname;        gscore = p->Gscore;        return true;    }}templatebool GradeManage::GModifyData(int k, const string& gname, const T& gscore){    Grade* p = ghead->next;    int index = 1;    if (k<1 || k>GGetLength())        return false;    while (p != NULL && index < k) {        index++;        p = p->next;    }    if (p == NULL)        return false;    else {        p->Gname = gname;        p->Gscore = gscore;        return true;    }}templateint GradeManage::GFind(const string& gname){    Grade* p = ghead->next;    int index = 1;    while (p != NULL && p->Gname != gname) {        p = p->next;        index++;    }    if (p != NULL)        return index;    else        return 0;}templateGradeManage& GradeManage::GDelete(int k, string& gname, T& gscore){    if (GGetData(k, gname, gscore)) {        Grade* p = ghead;        Grade* q = NULL;        for (int i = 1; i < k; i++)            p = p->next;        q = p->next;        p->next = q->next;        delete q;    }    else        cout << "失败";    return *this;}templatevoid GradeManage::GOutPut(ostream& gout) const{    Grade* p = ghead->next;    while (p != NULL) {        gout << "课程名称:" << p->Gname << "课程成绩:" << p->Gscore<<" " << endl;        p = p->next;    }}template ostream& operator<<(ostream& gout, GradeManage& x) {    x.GOutPut(gout);    return gout;}/*int main() {    //学生    StudentManage s;    s.SInsert(1, 1, "小明", "男",23 , 290);    s.SInsert(2, 2, "张三", "男", 22, 280);    s.SInsert(3, 3, "小红", "女", 21, 270);    s.SInsert(4, 4, "李四", "男", 24, 260);    cout << s;    int n = s.SGetLength();    cout << "共有" << n << "条数据" << endl;    s.SModifyData(3, 3, "小丽", "女", 21, 270);    cout << s;    int sid, sage, sscore; string sname, ssex;    int sid1, sage1, sscore1; string sname1, ssex1;    s.SGetData(1, sid,  sname,ssex, sage, sscore);    cout << "学生编号:" << sid << " 学生姓名:" << sname << " 学生性别:" << ssex << " 学生年龄:" << sage << " 学生总分:" << sscore << endl;    s.SDelete(2, sid1, sname1, ssex1, sage1, sscore1);    cout << "删除学生编号:" << sid1 << " 学生姓名:" << sname1 << " 学生性别:" << ssex1 << " 学生年龄:" << sage1 << " 学生总分:" << sscore1 << endl;    cout << s;    //班级    ClassManage c;    c.CInsert(1,1,"一班","李主任","王麻子");    c.CInsert(2, 2,"一班", "李主任", "十大");    c.CInsert(3, 3,"一班", "李主任", "的撒");    cout << c;    int x = c.CGetLength();    cout << "共有" << x << "条数据" << endl;    c.CModifyData(3, 3, "一班", "张主任", "的撒");    cout << c;    int cid; string cname, cbzrname,cxsname;    c.CGetData(1, cid, cname, cbzrname, cxsname);    cout << "班级编号:" << cid << " 班级:" < g;    g.GInsert(1, "c++", 90);    g.GInsert(1, "java", 90);    cout << g;    int t = g.GGetLength();    cout << "共有" << t << "条数据" << endl;    g.GModifyData(2,  "python", 92);    cout << g;    string gname;int gscore;    g.GGetData(1, gname, gscore);    cout << "课程名称:" << gname << " 课程成绩:" << gscore << endl;    return 0;}*/int main() {    ofstream outfile;//终端输入--内存--文本    //学生    StudentManage stud;    stud.SInsert(1, 1, "小明", "男", 23, 290);    stud.SInsert(2, 2, "张三", "男", 22, 280);    stud.SInsert(3, 3, "小红", "女", 21, 270);    stud.SInsert(4, 4, "李四", "男", 24, 260);    int sid; string sname; string ssex; int sage; int sscore;    int sid1; string sname1; string ssex1; int sage1; int sscore1;    int sid2; string sname2; string ssex2; int sage2; int sscore2;    //班级    ClassManage cla;    cla.CInsert(1, 1, "一班", "李主任", "王麻子");    cla.CInsert(2, 2, "一班", "李主任", "王五");    cla.CInsert(3, 3, "二班", "李主任", "达摩");    int cid; string cname, cbzrname, cxsname;    int cid1; string cname1, cbzrname1, cxsname1;    int cid2; string cname2, cbzrname2, cxsname2;    //成绩    GradeManage gra;    gra.GInsert(1, "c++", 90);    gra.GInsert(1, "java", 90);    string gname; int gscore;    string gname1; int gscore1;    string gname2; int gscore2;    //主界面    cout << "欢迎来到学生成绩管理系统!" << endl;    cout << "选择1,进入学生信息管理"<> n;    while (n != 999) {        switch (n)        {        case 1:cout << "欢迎来到学生信息管理,输入999退出" << endl;               cout << "1、查看学生信息\n2、增加学生信息\n3、修改学生信息\n4、删除学生信息\n5、保存学生信息\n6、读取学生信息\n7、学生按总成绩排序*" << endl;            int s; cout << "请输入选项:"; cin >> s;                        while(s!=999){                switch (s)                {                case 1:cout << "查看学生信息" << endl;                       cout << stud << endl;                       break;                case 2:cout << "增加学生信息" << endl;                        int k;                        cout << "请输入学生位置" << endl; cin >> k;                        cout << "请输入编号:"; cin >> sid;                        cout << "请输入姓名:"; cin >> sname;                        cout << "请输入性别:"; cin >> ssex;                        cout << "请输入年龄:"; cin >> sage;                        cout << "请输入总分:"; cin >> sscore;                        stud.SInsert(k, sid, sname, ssex, sage, sscore);                        break;                case 3:cout << "修改学生信息" << endl;                        int k1;                        cout << "请输入要修改的学生位置" << endl; cin >> k1;                        cout << "请输入要修改的编号:"; cin >> sid1;                        cout << "请输入要修改的姓名:"; cin >> sname1;                        cout << "请输入要修改的性别:"; cin >> ssex1;                        cout << "请输入要修改的年龄:"; cin >> sage1;                        cout << "请输入要修改的总分:"; cin >> sscore1;                        stud.SModifyData(k1, sid1, sname1, ssex1, sage1, sscore1);                        break;                case 4:cout << "删除学生信息" << endl;                        int k2;                        cout << "请输入要删除的学生位置" << endl; cin >> k2;                        cout << "请输入要删除的编号:"; cin >> sid2;                        cout << "请输入要删除的姓名:"; cin >> sname2;                        cout << "请输入要删除的性别:"; cin >> ssex2;                        cout << "请输入要删除的年龄:"; cin >> sage2;                        cout << "请输入要删除的总分:"; cin >> sscore2;                        stud.SDelete(k2, sid2, sname2, ssex2, sage2, sscore2);                        break;                case 5:cout << "保存学生信息" << endl;                        outfile.open("F:\student.txt");                        outfile << stud << endl;                        outfile.close();                    break;                case 6:cout << "读取学生信息" << endl;                {                    ifstream in("F:\student.txt", ios::in);                    if (!in.fail())                    {                        while (!in.eof())                        {                            string str5;                            in >> str5;                            cout << str5 << endl;                        }                    }                }                    break;                case 7:cout << "学生按总成绩排序" << endl;                    break;                default:                    break;                }                cout << "请输入选项:"; cin >> s;                }            break;        case 2:cout << "欢迎来到班级信息管理,输入999退出" << endl;            cout << "1、查看班级信息\n2、增加班级信息\n3、修改班级信息\n4、删除班级信息\n5、保存班级信息\n6、读取班级信息" << endl;            int c; cout << "请输入选项:"; cin >> c;            while (c != 999) {                switch (c)                {                case 1:cout << "查看班级信息" << endl;                    cout << cla << endl;                    break;                case 2:cout << "增加班级信息" << endl;                    int k;                    cout << "请输入班级位置" << endl; cin >> k;                    cout << "请输入班级编号:"; cin >> cid;                    cout << "请输入班级名称:"; cin >> cname;                    cout << "请输入班主任名称:"; cin >> cbzrname;                    cout << "请输入学生名字:"; cin >> cxsname;                    cla.CInsert(k, cid, cname, cbzrname, cxsname);                    break;                case 3:cout << "修改班级信息" << endl;                    int k1;                    cout << "请输入班级位置" << endl; cin >> k1;                    cout << "请输入班级编号:"; cin >> cid1;                    cout << "请输入班级名称:"; cin >> cname1;                    cout << "请输入班主任名称:"; cin >> cbzrname1;                    cout << "请输入学生名字:"; cin >> cxsname1;                    cla.CModifyData(k1, cid1, cname1, cbzrname1, cxsname1);                    break;                case 4:cout << "删除班级信息" << endl;                    int k2;                    cout << "请输入班级位置" << endl; cin >> k2;                    cout << "请输入班级编号:"; cin >> cid2;                    cout << "请输入班级名称:"; cin >> cname2;                    cout << "请输入班主任名称:"; cin >> cbzrname2;                    cout << "请输入学生名字:"; cin >> cxsname2;                    cla.CDelete(k2, cid2, cname2, cbzrname2, cxsname2);                    break;                case 5:cout << "保存班级信息" << endl;                    outfile.open("F:\class.txt");                    outfile << cla << endl;                    outfile.close();                    break;                case 6:cout << "读取班级信息" << endl;                {                    ifstream in("F:\class.txt", ios::in);                    if (!in.fail())                    {                        while (!in.eof())                        {                            string str5;                            in >> str5;                            cout << str5 << endl;                        }                    }                }                    break;                default:                    break;                }                cout << "请输入选项:"; cin >> c;            }            break;        case 3:cout << "欢迎来到成绩信息管理,输入999退出" << endl;            cout << "1、查看成绩信息\n2、增加成绩信息\n3、修改成绩信息\n4、删除成绩信息\n5、保存成绩信息\n6、读取成绩信息" << endl;            int g; cout << "请输入选项:"; cin >> g;            while (g != 999) {                switch (g)                {                case 1:cout << "查看成绩信息" << endl;                    cout << gra << endl;                    break;                case 2:cout << "增加成绩信息" << endl;                    int k;                    cout << "请输入成绩位置" << endl; cin >> k;                    cout << "请输入课程名称:"; cin >> gname;                    cout << "请输入课程成绩:"; cin >> gscore;                    gra.GInsert(k, gname, gscore);                    break;                case 3:cout << "修改成绩信息" << endl;                    int k1;                    cout << "请输入成绩位置" << endl; cin >> k1;                    cout << "请输入课程名称:"; cin >> gname1;                    cout << "请输入课程成绩:"; cin >> gscore1;                    gra.GModifyData(k1, gname1, gscore1);                    break;                case 4:cout << "删除成绩信息" << endl;                    int k2;                    cout << "请输入成绩位置" << endl; cin >> k2;                    cout << "请输入课程名称:"; cin >> gname2;                    cout << "请输入课程成绩:"; cin >> gscore2;                    gra.GDelete(k2, gname2, gscore2);                    break;                case 5:cout << "保存成绩信息" << endl;                    outfile.open("F:\grade.txt");                    outfile << gra << endl;                    outfile.close();                    break;                case 6:cout << "读取成绩信息" << endl;                {                    ifstream in("F:\grade.txt", ios::in);                    if (!in.fail())                    {                        while (!in.eof())                        {                            string str5;                            in >> str5;                            cout << str5 << endl;                        }                    }                }                    break;                default:                    break;                }                cout << "请输入选项:"; cin >> g;            }            break;        default:            break;        }        cout << "请输入选项:"; cin >> n;    }    /*    ofstream outfile;//终端输入--内存--文本    outfile.open("F:\student.txt", ios::binary | ios::app | ios::in | ios::out);//注意,里面有iOS::app,表示打开文件后,在写入的文件不会覆盖原文件中的内容,也就是原来文件中的数据会得到保存。    //outfile << "学生编号:" << sid << "  学生姓名: " << sname << "  学生性别:" << ssex << "  学生年龄:" << sage << "  学生总分:" << sscore << endl;    outfile << stud << endl;    outfile.close();*/    return 0;}

关于"C++如何实现简单的学生成绩管理系统"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"C++如何实现简单的学生成绩管理系统"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

学生 信息 成绩 班级 输入 管理 位置 姓名 主任 数据 名称 管理系统 系统 年龄 性别 课程 C++ 总分 文件 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 哈尔滨大商圈互联网科技有限公司 广州大一互联网络科技有限公司 互联网科技工作委员会主任 科技互联网公司装修 互联网科技作文 苏州大垚互联网科技 互联网金融监管科技 以后互联网后是啥科技 世界互联网科技公司市值排名 语蝶互联网科技有限公司 深圳艾果互联网通讯科技 互联网在线教育科技创业 上海钢联属于互联网科技股吗 中国互联网有什么科技 互联网科技实习生岗位 中天科技中国工业互联网 工业互联网科技成果转化 马化腾互联网科技教学 每日互联网科技新闻 互联网科技公司经营范围 世界互联网领先科技成果 长亮科技 互联网金融 海南购全球互联网科技 中国最先进互联网科技公司 新兴科技互联网创新大赛颁奖典礼 山东星卡互联网科技有限公司官网 国产互联网科技公司 互联网大会出现的黑科技 宁波允成互联网科技有限公司
0