C++大zuo业之大学生选课系统设计

题目1:大学生选课系统设计
问题描述:同学们都已经经历过选课,对选课的系统内容和操作都非常熟悉,选课系统可以简单分为两个部分:学生。教师和管理员部分。管理员对学生,教师,课程等相关信息的管理;学生能够在登陆后的首页查看到自己能够选修的课程,并对其进行选择和退选,以及对自己身份信息的修改。
系统功能:
A、用户管理
用户的注册、密码等管理。
B、管理员模块
(1)主要是完成学生以及教师的角色创建,修改和删除
(2)管理员能够进行对课程的安排和管理。
C、课程管理
(1)课程信息:课程名称,课时,授课教师,学分
(2)按照各种关键字对课程进修
D、学生模块
(1)对课程进行选择
(2)对课程进行查找
(3)查询自己的信息
(4)修改自己的信息
E、对不同的课程选课人数等提供排序功能
以上各种,包括信息的显示,查询,增删改查与排序统计等。
在设计时,在完成上述基本功能的情况下,可基于实际需求,增加其他功能。也可以根据实际需求,对上面功能进行略微调整。

class info
{
protected:
    long number;//编号
    string name;//名称
public:
    info() {}
    info(long num, string name) :number(num), name(name) {}
};

class course : public info//课程类
{
private:
    int credit;//学分
    string teachername;//授课教师
public:
    course() {}
    course(long num, string name, int cre, string tea) : info(num, name)
    {
        credit = cre;
        teachername = tea;
    }
    course(const course& c1)
    {
        number = c1.number;
        name = c1.name;
        credit = c1.credit;
        teachername = c1.teachername;
    }
    static void print();//输出数据
    static void get();//获取数据
    static void add();//增加数据
    static void del();//删除数据
    static void edit();//修改数据
    static int ishave(long si);//查询是否有该课程
};

class student : public info//学生类
{
private:
    string sex;//性别
    string grade;//年级
    long scredit;
public:
    vector<course> havec;//查询学生选课信息
    student() {}
    student(long num, string name, string se, string gra, long scr) : info(num, name)
    {
        sex = se;
        grade = gra;
        scredit = scr;
    }
    static void print();//输出数据
    static void get();//获取数据
    static void add();//增加数据
    static void del();//删除数据
    static void edit();//修改数据
    static int ishave(long si);//查询是否有该学生
    static void addcourse();// 为学生添加课程
    static void delcourse();//为学生删除课程
    static int ishavec(long si);//查询该学生是否有该课程
};

void course::print()
{
    system("cls");
 
    for (int i = 0; i < c.size(); i++)
    {
        cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
        cout << endl << "课程编号:" << c[i].number << "   课程名称:" << c[i].name << "   课程学分:" \
            << c[i].credit << "   授课老师:" << c[i].teachername << endl;
    }
 
    cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
    cprintorget();
}

void course::get()//获得课程信息
{
    system("cls");
    long k = 1, kk;
 
    cout << "*************请输入要查询的课程编号**************" << endl;
    
    cin >> kk;
    if (ishave(kk))
    {
        for (size_t i = 0; i < c.size(); i++)
            if (c[i].number == kk)
            {
                cout << endl << "课程编号:" << c[i].number << "   课程名称:" << c[i].name << "   课程学分:" \
                    << c[i].credit << "   授课老师:" << c[i].teachername << endl;
                break;
            }
    }
    else
    {
        cout << "*************没有该课程******************" << endl;
    
    }
    cprintorget();
}

void course::add()
{
    system("cls");
    long k = 1; course c1;
    cout << "$        请输入要添加的课程编号:      $" << endl;
    cin >> c1.number;
    while (ishave(c1.number))
    {
 
        system("cls");
    
        cout << "***************************************" <<endl;
        cout << "        该课程已添加,请重新输入:       " << endl;
        cout << "              (按0退出)               " << endl;
        cout << "***************************************" << endl;
        cin >> k;
        if (k == 0)
        {
            cinfo();
            break;
        }
        else c1.number = k;
 
    }
    if (k != 0)
    {
        
        cout << "$           请输入课程名称:           &" << endl;
        cin >> c1.name;
        cout << "****************************************" << endl;
        cout << "            请输入课程学分:             " << endl;
        cout << "****************************************" << endl;
        cin >> c1.credit;
        cout << "****************************************" << endl;
        cout << "          请输入授课老师名称:            " << endl;
        cout << "****************************************" << endl;
        cin >> c1.teachername;
        system("cls");
        c.push_back(c1);
        cinfo();
    }
}

void course::del()//老师删除课程信息
{
    system("cls");
    long k = 1, kk;
    cout << "***************请输入要删除的课程编号****************" << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (auto p = c.begin(); p != c.end();)
        {
            if (p->number == kk)
            {
                p = c.erase(p);
                break;
            }
            else
                ++p;
        }
        cout << "***************成功删除该课程********************" << endl;
        
}
    else
    {
        
        cout << "****************你还没有添加该课程****************" << endl;
    }
}

void course::edit()//老师修改课程信息
{
    system("cls");
    long k = 1, kk;
    cout << "       请输入要修改课程的课程编号:     " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (size_t i = 0; i < c.size(); i++)
        {
            if (c[i].number == kk)
            {
                system("cls");
                cout << "          请重新输入课程名称:           " << endl;
                cin >> c[i].name;
                cout << "          请重新输入课程学分:           " << endl;
                cin >> c[i].credit;
                cout << "         请重新输入授课老师名称:         " << endl;
                cin >> c[i].teachername;
                cout << "              修改成功。                 " << endl;
                break;
            }
        }
    }
    else
    {
        cout << "              没有该课程 。             " << endl;
 
    }
 
}

int course::ishave(long si)//查询是否有该课程
{
    for (size_t i = 0; i < c.size(); i++)
        if (c[i].number == si)
            return true;
    return false;
}

void student::print()//打印所有学生信息
{
    long sumk = 0;
    system("cls");
    for (int i = 0; i < s.size(); i++)
    {
        sumk = 0;
        cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
        cout << endl << "学生学号:" << s[i].number << "   姓名:" << s[i].name << "   性别:" \
            << s[i].sex << "   年级:" << s[i].grade << endl << endl\
            << "学生已选课程:" << endl;
        if (s[i].havec.size() == 0)
        {
            cout << "无" << endl;
            continue;
        }
        else
        {
            for (int k = 0; k < s[i].havec.size(); k++)
            {
                cout << endl << "课程编号:" << s[i].havec[k].number << "   课程名称:" << s[i].havec[k].name << "   课程学分:" \
                    << s[i].havec[k].credit << "   授课老师:" << s[i].havec[k].teachername << endl;
                sumk = sumk + s[i].havec[k].credit;
 
            }
            cout << endl << "该学生本学期共有" << s[i].scredit << "学分,已选" << s[i].havec.size() << "门,共" << sumk << "学分。" << endl;
        }
    }cout << "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" << endl;
    sprintorget();
}

void student::get()//获取学生信息
{
    system("cls");
    long k = 1, kk, sumk = 0;
    cout << "          请输入要查询的学生学号:       " << endl;
    cin >> kk;
    system("cls");
    if (ishave(kk))
    {
        for (size_t i = 0; i < s.size(); i++)
            if (s[i].number == kk)
            {
                cout << "************************************************** << endl;
                cout << endl << "学生学号:" << s[i].number << "   姓名:" << s[i].name << "   性别:" \
                    << s[i].sex << "   年级:" << s[i].grade << endl << endl\
                    << "学生已选课程:" << endl;
                if (s[i].havec.size() == 0)
                {
                    cout << "无" << endl;
                    continue;
                }
                else
                {
                    for (int k = 0; k < s[i].havec.size(); k++)
                    {
                        cout << endl << "课程编号:" << s[i].havec[k].number << "   课程名称:" << s[i].havec[k].name << "   课程学分:" \
                            << s[i].havec[k].credit << "   授课老师:" << s[i].havec[k].teachername << endl;
                        sumk = sumk + s[i].havec[k].credit;
                    }
                    cout << endl << "该学生本学期共有" << s[i].scredit << "学分,已选" << s[i].havec.size() << "门,共" << sumk << "学分。" << endl;
                    cout << "************************************************" << endl;
                }
            }
    }
    else
    {
        cout << "              没有该学生。            " << endl;
    }
    sprintorget();
}

void student::add()//添加学生信息
{
    system("cls");
    long k = 1; student s1;
    cout << "          请输入要添加的学生学号:        " << endl;
    cin >> s1.number;
    while (ishave(s1.number))
    {
 
        system("cls");
        cout << "       该学生已添加,请重新输入:       " << endl;
        cout << "             (按0退出)               " << endl;
        cin >> k;
        if (k == 0)
        {
            sinfo();
            break;
        }
        else s1.number = k;
 
    }
    if (k != 0)
    {
        cout << "             请输入学生姓名:            " << endl;
        cin >> s1.name; 
        cout << "             请输入学生性别:             " << endl;
        cin >> s1.sex;
        cout << "             请输入学生年级:            " << endl;
        cin >> s1.grade; 
        system("cls");
        s.push_back(s1);
        sinfo();
    }
}

#if 1
#include <iostream>
#include<string.h>
#include <windows.h>
#include <vector>
#include<algorithm>
#include <string>
using namespace std;
using std::vector;
int Menu();
void cinfo();
void cprintorget();
void sinfo();
void sprintorget();
char password[16] = "1234";
 
class info//信息类
{
protected:
    long number;//编号
    string name;//名称
public:
    info() {}
    info(long num, string name) :number(num), name(name) {}
};
 
class course : public info//课程类
{
protected:
    int credit;//学分
    string teachername;//授课教师
public:
    course() {}
    course(long num, string name, int cre, string tea) : info(num, name)
    {
        credit = cre;
        teachername = tea;
    }
    course(const course& c1)
    {
        number = c1.number;
        name = c1.name;
        credit = c1.credit;
        teachername = c1.teachername;
    }
    static void print();//输出数据
    static void get();//获取数据
    static void add();//增加数据
    static void del();//删除数据
    static void edit();//修改数据
    static int ishave(long si);//查询是否有该课程
    friend class student;
};
vector<course> c;
 
class student : public info//学生类
{
    
protected:
    string sex;//性别
    string grade;//年级
    long scredit;
public:
    vector<course> havec;//查询学生选课信息
    student() {}
    student(long num, string name, string se, string gra, long scr) : info(num, name)
    {
        sex = se;
        grade = gra;
        scredit = scr;
    }
    static void print();//输出数据
    static void get();//获取数据
    static void add();//增加数据
    static void del();//删除数据
    static void edit();//修改数据
    static int ishave(long si);//查询是否有该学生
    static void addcourse();// 为学生添加课程
    static void delcourse();//为学生删除课程
    static int ishavec(long si);//查询该学生是否有该课程
};
vector<student> s;
 
 
void course::print()//打印所以课程信息 
{
    system("cls");
 
    for (int i = 0; i < c.size(); i++)
    {
        cout << endl << "课程编号:" << c[i].number << "   课程名称:" << c[i].name << "   课程学分:" \
            << c[i].credit << "   授课老师:" << c[i].teachername << endl;
    }
 
    cprintorget();
}
 
void course::get()//获得课程信息
{
    system("cls");
    long k = 1, kk;
    
    cout << "        请输入要查询的课程编号:      " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (size_t i = 0; i < c.size(); i++)
            if (c[i].number == kk)
            {
                cout << endl << "课程编号:" << c[i].number << "   课程名称:" << c[i].name << "   课程学分:" \
                    << c[i].credit << "   授课老师:" << c[i].teachername << endl;
                break;
            }
    }
    else
    {    
        cout << "              没有该课程 。           " << endl;
    }
    cprintorget();
}
 
void course::add()
{
    system("cls");
    long k = 1; course c1;
    cout << "        请输入要添加的课程编号:      " << endl;
    cin >> c1.number;
    while (ishave(c1.number))
    {
 
        system("cls");
        cout << "┃      该课程已添加,请重新输入:      ┃" << endl;
        cout << "┃             (按0退出)              ┃" << endl;
        cin >> k;
        if (k == 0)
        {
            cinfo();
            break;
        }
        else c1.number = k;
 
    }
    if (k != 0)
    {
        cout << "           请输入课程名称:            " << endl;
        cin >> c1.name;
        cout << "           请输入课程学分:           " << endl;
        cin >> c1.credit;
        cout << "          请输入授课老师名称:         " << endl;
        cin >> c1.teachername;
        system("cls");
        c.push_back(c1);
        cinfo();
    }
}
 
void course::del()//老师删除课程信息
{
    system("cls");
    long k = 1, kk;
    cout << "         请输入要删除的课程编号:       " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (auto p = c.begin(); p != c.end();)
        {
            if (p->number == kk)
            {
                p = c.erase(p);
                break;
            }
            else
                ++p;
        }
        cout << "            成功删除该课程。          " << endl;
    }
    else
    {
        cout << "          你还没有添加该课程 。        " << endl;
    }
}
 
void course::edit()//老师修改课程信息
{
    system("cls");
    long k = 1, kk;
    cout << "      请输入要修改课程的课程编号:    " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (size_t i = 0; i < c.size(); i++)
        {
            if (c[i].number == kk)
            {
                system("cls");
                
                cout << "         请重新输入课程名称:         " << endl;
                cin >> c[i].name;
                cout << "         请重新输入课程学分:         " << endl;
                cin >> c[i].credit;
                cout << "       请重新输入授课老师名称:       " << endl;
                cin >> c[i].teachername;
                cout << "              修改成功。              " << endl;
                break;
            }
        }
    }
    else
    {
        cout << "              没有该课程 。           " << endl;
    }
 
}
 
int course::ishave(long si)//查询是否有该课程
{
    for (size_t i = 0; i < c.size(); i++)
        if (c[i].number == si)
            return true;
    return false;
}
void student::print()//打印所有学生信息
{
    long sumk = 0;
    system("cls");
    for (int i = 0; i < s.size(); i++)
    {
        sumk = 0;
        cout << endl << "学生学号:" << s[i].number << "   姓名:" << s[i].name << "   性别:" \
            << s[i].sex << "   年级:" << s[i].grade << endl << endl\
            << "学生已选课程:" << endl;
        if (s[i].havec.size() == 0)
        {
            cout << "无" << endl;
            continue;
        }
        else
        {
            for (int k = 0; k < s[i].havec.size(); k++)
            {
                cout << endl << "课程编号:" << s[i].havec[k].number << "   课程名称:" << s[i].havec[k].name << "   课程学分:" \
                    << s[i].havec[k].credit << "   授课老师:" << s[i].havec[k].teachername << endl;
                sumk = sumk + s[i].havec[k].credit;
 
            }
            cout << endl << "该学生本学期共有" << s[i].scredit << "学分,已选" << s[i].havec.size() << "门,共" << sumk << "学分。" << endl;
        }
    }
    sprintorget();
}
 
void student::get()//获取学生信息
{
    system("cls");
    long k = 1, kk, sumk = 0;
    cout << "        请输入要查询的学生学号:      " << endl;
    cin >> kk;
    system("cls");
    if (ishave(kk))
    {
        for (size_t i = 0; i < s.size(); i++)
            if (s[i].number == kk)
            {
                cout << endl << "学生学号:" << s[i].number << "   姓名:" << s[i].name << "   性别:" \
                    << s[i].sex << "   年级:" << s[i].grade << endl << endl\
                    << "学生已选课程:" << endl;
                if (s[i].havec.size() == 0)
                {
                    cout << "无" << endl;
                    continue;
                }
                else
                {
                    for (int k = 0; k < s[i].havec.size(); k++)
                    {
                        cout << endl << "课程编号:" << s[i].havec[k].number << "   课程名称:" << s[i].havec[k].name << "   课程学分:" \
                            << s[i].havec[k].credit << "   授课老师:" << s[i].havec[k].teachername << endl;
                        sumk = sumk + s[i].havec[k].credit;
 
                    }
                    cout << endl << "该学生本学期共有" << s[i].scredit << "学分,已选" << s[i].havec.size() << "门,共" << sumk << "学分。" << endl;
                }
            }
    }
    else
    {
        cout << "              没有该学生。            " << endl;
    }
    sprintorget();
}
 
void student::add()//添加学生信息
{
    system("cls");
    long k = 1; student s1;
    cout << "        请输入要添加的学生学号:      " << endl;
    cin >> s1.number;
    while (ishave(s1.number))
    {
        system("cls");
        cout << "┃      该学生已添加,请重新输入:      ┃" << endl;
        cout << "┃             (按0退出)              ┃" << endl;
        cin >> k;
        if (k == 0)
        {
            sinfo();
            break;
        }
        else s1.number = k;
 
    }
    if (k != 0)
    {
        cout << "           请输入学生姓名:           " << endl;
        cin >> s1.name;
        cout << "           请输入学生性别:           " << endl;
        cin >> s1.sex;
        cout << "           请输入学生年级:           " << endl;
        cin >> s1.grade;
        system("cls");
        s.push_back(s1);
        sinfo();
    }
}
 
void student::del()    //删除学生信息
{
    system("cls");
    long k = 1, kk;
    cout << "        请输入要删除的学生学号:      " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (auto p = s.begin(); p != s.end();)
        {
            if (p->number == kk)
            {
                p = s.erase(p);
                break;
            }
            else
                ++p;
        }
        cout << "            成功删除该学生:          " << endl;
 
    }
    else
    {
        cout << "          你还没有添加该学生 。       " << endl;
        
    }
}
 
void student::edit()//修改学生信息
{
    system("cls");
    long k = 1, kk;
    cout << "        请输入要修改学生的学号:      " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (size_t i = 0; i < s.size(); i++)
        {
            if (s[i].number == kk)
            {
                system("cls");    
                cout << "         请重新输入学生姓名:         " << endl;
                cin >> s[i].name;
                cout << "         请重新输入学生性别:         " << endl;
                cin >> s[i].sex;
                cout << "         请重新输入学生年级:         " << endl;
                cin >> s[i].grade;
                cout << "              修改成功。              " << endl;
                break;
            }
        }
    }
    else
    {
        cout <<  "             没有该学生。            " << endl;
    }
}
 
void student::addcourse()//添加课程
{
    system("cls");
    long k = 1, kk, sumk = 0, sk;
    cout << "           请输入学生的学号:         " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (size_t i = 0; i < s.size(); i++)
        {
            if (s[i].number == kk)
            {
            
                cout << endl << "学生学号:" << s[i].number << "   姓名:" << s[i].name << "   性别:" \
                    << s[i].sex << "   年级:" << s[i].grade << endl << endl\
                    << "学生已选课程:" << endl;
                if (s[i].havec.size() == 0)
                {
                    cout << "无" << endl;
 
                }
                else
                {
                    for (int k = 0; k < s[i].havec.size(); k++)
                    {
                        cout << endl << "课程编号:" << s[i].havec[k].number << "   课程名称:" << s[i].havec[k].name << "   课程学分:" \
                            << s[i].havec[k].credit << "   授课老师:" << s[i].havec[k].teachername << endl;
                        sumk = sumk + s[i].havec[k].credit;
 
                    }
                    cout << endl << "该学生本学期共有" << s[i].scredit << "学分,已选" << s[i].havec.size() << "门,共" << sumk << "学分。" << endl;
                
                }
                
                cout << "          请输入要添加的课程:        " << endl;
                cin >> sk;
                for (size_t k = 0; k < s[i].havec.size(); k++)
                    if (s[i].havec[k].number == sk)
                    {
                        cout << "         已有该课程,无法添加。       " << endl;    
                    }
                    else
                    {
                        if (course::ishave(sk))
                        {
                            course c1;
                            for (size_t jk = 0; jk < c.size(); jk++)
                            {
                                if (c[jk].number == sk)
                                {
                                    c1.number = c[jk].number;
                                    c1.name = c[jk].name;
                                    c1.credit = c[jk].credit;
                                    c1.teachername = c[jk].teachername;
                                }
                            }
                            sumk = sumk + c1.credit;
                            if (sumk > s[i].scredit)
                            {
                                cout << "┃          学分不足,无法添加。        ┃" << endl;
                            }
                            else
                            {
                                s[i].havec.push_back(c1);        
                                cout << "┃               添加成功。             ┃" << endl;
                                break;
                            }
 
 
                        }
                        else
                        {
                            cout << "┃           系统内没有该课程 。        ┃" << endl;
                        }
                    }
 
            }
        }
    }
    else
    {
        cout << "              没有该学生。            " << endl;
    }
}
 
void student::delcourse()//删除课程 
{
    system("cls");
    long k = 1, kk, sumk = 0, sk;
    cout << "           请输入学生的学号:         " << endl;
    cin >> kk;
    if (ishave(kk))
    {
        for (size_t i = 0; i < s.size(); i++)
        {
            if (s[i].number == kk)
            {
                cout << endl << "学生学号:" << s[i].number << "   姓名:" << s[i].name << "   性别:" \
                    << s[i].sex << "   年级:" << s[i].grade << endl << endl\
                    << "学生已选课程:" << endl;
                if (s[i].havec.size() == 0)
                {
                    cout << "无" << endl;
                    continue;
                }
                else
                {
                    for (int k = 0; k < s[i].havec.size(); k++)
                    {
                        cout << endl << "课程编号:" << s[i].havec[k].number << "   课程名称:" << s[i].havec[k].name << "   课程学分:" \
                            << s[i].havec[k].credit << "   授课老师:" << s[i].havec[k].teachername << endl;
                        sumk = sumk + s[i].havec[k].credit;
 
                    }
                    cout << endl << "该学生本学期共有" << s[i].scredit << "学分,已选" << s[i].havec.size() << "门,共" << sumk << "学分。" << endl;
                }
                cout << "          请输入要删除的课程:        " << endl;
                cin >> sk;
                for (auto p = s[i].havec.begin(); p != s[i].havec.end();)
                {
                    if (p->number == sk)
                    {
                        p = s[i].havec.erase(p);
                        break;
                    }
                    else
                        ++p;
                }
                cout << "               删除成功。             " << endl;
            }
        }
    }
    else
    {
        cout << "              没有该学生。            " << endl;
 
    }
}
 
int student::ishave(long si)
{
    for (size_t i = 0; i < s.size(); i++)
        if (s[i].number == si)
            return true;
    return false;
}
 
void cprintorget()//查询或展示课程信息
{
    cout << endl;
    cout << "      **学生选课信息管理系统**   " << endl;
    cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
    cout << "      ┃ 请选择功能:        ┃   " << endl;
    cout << "      ┃ 1.查询课程信息      ┃  " << endl;
    cout << "      ┃ 2.展示课程信息      ┃  " << endl;
    cout << "      ┃ 3.回到上一页        ┃  " << endl;
    cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
    cout << "      请输入序号(1~3)进入系统操作:  " << endl;
    cout << endl;
    int ii, k = 1;
    cin >> ii;
    while (k)
    {
        if (ii > 3 || ii < 1)
        {
            cout << "输入错误,请重新输入数字1~3。" << endl;
            cin >> ii;
        }
 
        else
            k = 0;
    }
    system("cls");
    switch (ii)
    {
    case 1: course::get(); break;
    case 2: course::print(); break;
    case 3:cinfo(); break;
    }
}
 
void cinfo()//学生选课信息
{
    system("cls");
    cout << endl;
    cout << "      **学生选课信息管理系统**   " << endl;
    cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
    cout << "      ┃ 请选择功能:        ┃   " << endl;
    cout << "      ┃ 1.查询课程信息      ┃  " << endl;
    cout << "      ┃ 2.录入课程信息      ┃  " << endl;
    cout << "      ┃ 3.删除课程信息      ┃  " << endl;
    cout << "      ┃ 4.修改课程信息      ┃  " << endl;
    cout << "      ┃ 5.回到主菜单        ┃  " << endl;
    cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
    cout << "      请输入序号(1~5)进入系统操作:  " << endl;
    cout << endl;
 
    int ii, k = 1;
    cin >> ii;
    while (k)
    {
        if (ii > 5 || ii < 1)
        {
            cout << "输入错误,请重新输入数字1~5。" << endl;
            cin >> ii;
        }
 
        else
            k = 0;
    }
    system("cls");
    switch (ii)
    {
    case 1: cprintorget(); break;
    case 2:course::add(); break;
    case 3:course::del(); break;
    case 4:course::edit(); break;
    case 5:Menu(); break;
    }
}
 
void sprintorget()//查询或展示学生信息
{
    cout << endl;
    cout << "      **学生选课信息管理系统**   " << endl;
    cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
    cout << "      ┃ 请选择功能:        ┃   " << endl;
    cout << "      ┃ 1.查询学生信息      ┃  " << endl;
    cout << "      ┃ 2.展示学生信息      ┃  " << endl;
    cout << "      ┃ 3.回到上一页        ┃  " << endl;
    cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
    cout << "      请输入序号(1~3)进入系统操作:  " << endl;
    cout << endl;
    int ii, k = 1;
    cin >> ii;
    while (k)
    {
        if (ii > 3 || ii < 1)
        {
            cout << "输入错误,请重新输入数字1~3。" << endl;
            cin >> ii;
        }
 
        else
            k = 0;
    }
    system("cls");
    switch (ii)
    {
    case 1: student::get(); break;
    case 2: student::print(); break;
    case 3:sinfo(); break;
    }
}
 
void sinfo()
{
    system("cls");
    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 << "      ┃ 7.回到主菜单        ┃  " << endl;
    cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
    cout << "      请输入序号(1~7)进入系统操作:  " << endl;
    cout << endl;
 
    int ii, k = 1;
    cin >> ii;
    while (k)
    {
        if (ii > 7 || ii < 1)
        {
            cout << "输入错误,请重新输入数字1~7。" << endl;
            cin >> ii;
        }
 
        else
            k = 0;
    }
    system("cls");
    switch (ii)
    {
    case 1: sprintorget(); break;
    case 2:student::add(); break;
    case 3:student::del(); break;
    case 4:student::edit(); break;
    case 5:student::addcourse(); break;
    case 6:student::delcourse(); break;
    case 7:Menu(); break;
    }
}
 
void login()//登录界面
{
    cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" << endl;
    cout << "┃                                      ┃" << endl;
    cout << "┃欢迎您使用学生选课信息管理系统管理端!┃" << endl;
    cout << "┃                                      ┃" << endl;
    cout << "┃    请输入密码:(默认密码:1234)    ┃" << endl;
    cout << "┃                                      ┃" << endl;
    cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
    int k = 0;
    char input[16];
    cin >> input;
    while (strcmp(password, input) != 0)
    {
        cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" << endl;
        cout << "┃                                      ┃" << endl;
        cout << "┃        密码错误,请重新输入。        ┃" << endl;
        cout << "┃                                      ┃" << endl;
        cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
        cin >> input;
        k++;
 
        if (k > 3)
        {
            cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" << endl;
            cout << "┃                                      ┃" << endl;
            cout << "┃    输入错误超过5次,暂停操作5秒。    ┃" << endl;
            cout << "┃                                      ┃" << endl;
            cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" << endl;
            Sleep(5000);
            k = 0;
            system("cls");
            cout << "             请重新输入。             " << endl;
            cin >> input;
        }
    }
 
    if (strcmp(password, input) == 0)
    {
        system("cls");
        cout << "          登录成功,欢迎您 !         " << endl;
    }
}
 
void changepassword()//修改密码
{
    int kk = 1;
    char p1[16], p2[16];
    while (kk) {
        system("cls");
        cout << "            请输入新密码:            " << endl;
        cin >> p1;
        cout << "           请重新输入密码:           " << endl;
        cin >> p2;
        if (strcmp(p1, p2) != 0)
        {
            cout << "  两次输入的密码不一致 ,请重新输入。 " << endl;
        }
        else
        {
            system("cls");
            cout << "       更改密码成功,请重新登录。     " << endl;
            strcpy_s(password, p1);
            kk = 0;
            login();
        }
    }
}
 
 
int Menu()//菜单
{
    while (1)
    {
        cout << endl;
        cout << "      **学生选课信息管理系统**   " << endl;
        cout << "      ┏━━━━━━━━━━━━━━━━━━━━━┓   " << endl;
        cout << "      ┃ 请选择功能:        ┃   " << endl;
        cout << "      ┃ 1.课程信息管理      ┃  " << endl;
        cout << "      ┃ 2.学生信息管理      ┃  " << endl;
        cout << "      ┃ 3.修改密码          ┃  " << endl;
        cout << "      ┃ 4.注销              ┃  " << endl;
        cout << "      ┃ 5.退出系统          ┃  " << endl;
        cout << "      ┗━━━━━━━━━━━━━━━━━━━━━┛   " << endl;
        cout << "      请输入序号(1~5)进入系统操作:  " << endl;
        cout << endl;
 
        int ii, k = 1;
        cin >> ii;
        while (k)
        {
            if (ii > 5 || ii < 1)
            {
                cout << "输入错误,请重新输入数字1~5。" << endl;
                cin >> ii;
            }
 
            else
                k = 0;
        }
 
        switch (ii)
        {
        case 1: cinfo(); break;
        case 2: sinfo(); break;
        case 3:
        {
            changepassword();
            login();
            break;
        }
        case 4:
        {
            system("cls");
            cout << "┃         注销成功,请重新登录。       ┃" << endl;
            login();
        }
        break;
        case 5: return 0;
            break;
        }
    }
}
//*****************************************************//
 
int main()
{
    
    return 0;
}
#endif

https://blog.csdn.net/weixin_48560325/article/details/124294798

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7738112
  • 除此之外, 这篇博客: 指针和数组试题解析(重置版)中的 小编,在这里想说一下,c语言的最后一节 C预处理,可能还需要一些时间,因为小编,昨天才下载了虚拟机 和 linux 系统,还没开始安装。所以无法着手写,因为 C预处理,vs2013很难表达,也就意味可能会讲不清楚。所以这篇文章可能需要点时间,再加上小编初期的文章,是没有排版的(而且可能有些错误,请大家以重置版为准),所以这几天我就把这些重新写。有兴趣的朋友可以看看。(ps:如果哪一天没有更新,意味着小编正在努力学习,为了能给大家呈现一片详细好懂的文章。) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:


  • 以下回答由chatgpt基于相关博客总结生成:

    我可以为您提供一个大学生选课系统的设计方案,包括学生、教师和管理员模块。具体实现方式如下:

    1. 数据库设计

    首先需要设计选课系统的数据库,包括学生、教师和课程信息。可以采用MySQL等关系型数据库,也可以选择NoSQL等非关系型数据库,根据具体需求和技术水平作出选择。

    学生表: 包含学生ID、姓名、密码、选修课程ID等字段

    教师表: 包含教师ID、姓名、密码、管理课程ID等字段

    课程表: 包含课程ID、课程名、课时、授课教师、学分和选课人数等字段

    1. 登录模块

    学生、教师和管理员都需要有登录模块,学生和教师需要输入账号和密码登录,管理员可以采用其他方式验证身份。

    1. 课程浏览和选择模块

    学生登录后可以查看所有未选课程,并进行选择和退选操作,并可以查找自己的选修课程。教师登录后可以查看自己管理的所有课程,并查看学生名单和学生成绩等信息。

    1. 课程管理模块

    管理员可以管理学生、教师和课程信息,包括添加、删除、修改和查询等操作。课程信息也可以按照选课人数排序等。

    1. 其他功能

    可以根据具体需求增加其他功能,例如成绩查询、选课排名等。

    1. 编码实现

    根据所选数据库和编程语言进行实现,例如采用C++实现。可以采用面向对象的编程方式,设计学生、教师和课程类等使用类来实现。

    具体编码实现方式可以参考以下示例代码:

    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    // 声明学生、教师、课程等类
    class Student {};
    class Teacher {};
    class Course {};
    
    // 声明管理员类
    class Admin {
    private:
        string name;
        string password;
    
    public:
        // 管理员登录
        bool login(string name, string password) {}
    
        // 添加学生
        bool add_student(Student student) {}
    
        // 删除学生
        bool delete_student(int id) {}
    
        // 修改学生信息
        bool modify_student(Student student) {}
    
        // 添加教师
        bool add_teacher(Teacher teacher) {}
    
        // 删除教师
        bool delete_teacher(int id) {}
    
        // 修改教师信息
        bool modify_teacher(Teacher teacher) {}
    
        // 添加课程
        bool add_course(Course course) {}
    
        // 删除课程
        bool delete_course(int id) {}
    
        // 修改课程信息
        bool modify_course(Course course) {}
    
        // 按照选课人数排序
        vector<Course> sort_course_by_count() {}
    };
    
    // 声明选课系统类
    class CourseSelectSystem {
    private:
        Admin admin;
        Student student;
        Teacher teacher;
        vector<Student> student_list;
        vector<Teacher> teacher_list;
        vector<Course> course_list;
    
    public:
        // 学生登录
        bool student_login(string name, string password) {}
    
        // 教师登录
        bool teacher_login(string name, string password) {}
    
        // 管理员登录
        bool admin_login(string name, string password) {}
    
        // 学生选课
        bool select_course(int student_id, int course_id) {}
    
        // 学生退选
        bool drop_course(int student_id, int course_id) {}
    
        // 查找自己的选修课程
        vector<Course> find_student_courses(int student_id) {}
    
        // 查找教师管理的课程
        vector<Course> find_teacher_courses(int teacher_id) {}
    };
    
    // 示例代码
    int main() {
        CourseSelectSystem system;
        system.student_login("Alice", "123456");
        vector<Course> courses = system.find_student_courses(1001);
        for (int i = 0; i < courses.size(); i++) {
            cout << courses[i].name << endl;
        }
        return 0;
    }
    

    以上代码仅为示例,具体实现方式可以根据需求进行更改和扩展。