C++课程设计之学生选题系统

请为高校设计一个课程设计选题系统,系统主要处理学生的课程设计选题信息。其中,学生信息主要包括:学号、姓名、年级、专业,登录密码等,课程设计信息主要包括:课程编号、课程名称、选题题目、指导教师等,请按照以下的功能要求设计系统。
【功能要求】
(1)录入功能:可输入或从文件读入学生信息、课程设计信息。
(2)打印功能:可输出学生信息、课程设计信息、选题情况(最好用文件保存信息数据);
(3)选题功能:学生按学号和密码登录后可进行选题操作,学生可选择查看课程设计信息,选题要求每个学生只能选一题,每个题目限定不超过3个学生;
(4)编辑功能:可对学生信息、课程设计信息及选题情况执行查询、修改、添加、删除等操作;
(5)菜单功能:每种功能的操作都是在菜单中进行相应选择。
在这里插入图片描述

#include<iostream>
#include<cstring>
#include<fstream>
#include<cstdlib> 
using namespace std;
char A; //题目A 
int a = 0; //题目A的计数器 
char B;
int b = 0;
char C;
int c = 0;
class Student {//定义一个学生类

    friend class course;
public:

    int stuid; // 学号
    char stuname[10]; // 姓名  
    char clas[10]; // 年级
    char specialty[10]; // 专业
    string StuID;//登陆密码
public:
    void add(); // 添加学生信息
    void total(); // 统计信息
    void display(); // 显示信息
    void write(int n); // 向文件中写入数据
    int read(); // 从文件中读数据
}stu[40];

class Course { //定义一个课程设计类
    friend class Student;
private:

    string couId; // 课程编号
    char couName[10]; // 课程名称
    char couTitle; // 选题题目
    char couTeacher[30]; // 指导教师
public:
    void search(); // 查询信息
    void searchsid(); // 按学号查询信息
    void alter(); // 修改信息
    void del(); // 删除信息
}Cou[40];

//1. 向文件中写入数据
void Student::write(int n)
{
    fstream myfile;//1.创建流对象
    myfile.open("student.txt", ios::out | ios::binary);
    if (!myfile)
    {
        cout << "该文件不能打开 !" << endl;
        abort();//功能: 终止程序的执行。返回值依赖于执行,可以通过返回值显示错误。
    }
    int count = n;
    myfile << count << endl << endl;
    for (int i = 0; i <= count; i++)
    {
        myfile << stu[i].stuid << " " << stu[i].stuname << " " << stu[i].clas << " " << stu[i].specialty << " " << Cou[i].couId << " " << Cou[i].couName << " " << Cou[i].couTitle << " " << Cou[i].couTeacher << " " << endl;
    }
    myfile.close();

}
//2.从文件中读数据
int Student::read()
{

    fstream myfile;//定义流对象
    myfile.open("student.txt", ios::in | ios::binary);
    if (!myfile)
    {
        cout << "该文件不能打开 !" << endl;
        abort();
    }
    int count;
    myfile.seekg(0);
    myfile >> count;
    for (int i = 0; i <= count; i++)
    {
        myfile >> stu[i].stuid >> stu[i].stuname >> stu[i].clas >> stu[i].specialty >> Cou[i].couId >> Cou[i].couName >> Cou[i].couTitle >> Cou[i].couTeacher;
        cout << endl;
    }
    myfile.close();
    return count;
}

//录入功能
void Student::add()
{

    int n = read();;

    int i = 0;
    char sign;
    cout << endl << "是否输入增加的学生的相关信息 :(Y or N) " << endl;
    cin >> sign;
    while (sign != 'N')
    {
    loop:
        cout << "学号 :";
        cin >> stu[i].stuid;
        cout << endl;
        cout << "学生登陆密码 :";
        cin >> stu[i].StuID;
        cout << endl;
        int c = 0;
        while (c < i)
        {
            c++;
            if (stu[i].stuid == stu[i - c].stuid)
            {
                cout << "你输入的学号已经存在 ! 请重新输入 " << endl;
                goto loop;
            }
        }
        cout << "请录入学生基本信息:" << endl;
        cout << "姓名 :";
        cin >> stu[i].stuname;
        cout << endl;
        cout << "年级 :";
        cin >> stu[i].clas;
        cout << endl;
        cout << "专业 :";
        cin >> stu[i].specialty;
        cout << endl;
        cout << "请录入课程设计信息:" << endl;

        cout << "请输入......" << endl;
        cout << "课程编号 :" << endl;

        cin >> Cou[i].couId;
        cout << endl;
        cout << "课程名称 :";
        cin >> Cou[i].couName;
        cout << endl;
        cout << "进入选题程序......" << endl;
        int id;//学号
        string password;//登录密码

        cout << "选题题目 :本系统每个课程有3道题目[A,B,C],每道题目限定3名学生" << endl;
        for (int j = 0; j < 3; j++)
        {
            cout << "用户名:[学号]" << endl;
            cin >> id;
            cout << "登录密码:" << endl;
            cin >> password;
            if (id == stu[i].stuid && password == stu[i].StuID) {
                cout << "登录成功,请选题:" << endl;
                cin >> Cou[i].couTitle;
                if (Cou[i].couTitle == 'A') {
                    a++;
                    if (a > 3)
                        cout << "选择A题目人数已满" << endl;
                    break;
                }
                if (Cou[i].couTitle == 'B') {
                    b++;
                    if (b > 3)
                        cout << "选择B题目人数已满" << endl;
                    break;
                }
                if (Cou[i].couTitle == 'C') {
                    c++;
                    if (c > 3)
                        cout << "选择C题目人数已满" << endl;
                    break;
                }
                break;
            }
            else {
                if (2 - j == 0) {
                    cout << "3次登录失败,账号被锁定,请与指导老师联系!" << endl;
                }
                else {
                    cout << "选题程序登录失败,你还有" << 2 - j << "次机会登录!" << endl;
                }
            }
        }


        cout << endl;
        cout << "指导教师 :";
        cin >> Cou[i].couTeacher;
        cout << endl;
        cout << "提示:是否继续写入学生信息 ?(Y/N)";
        cin >> sign; // 输入判断  
        i++;
    }
    write(i);
}

//查询学生信息、课程设计信息
void Course::search()
{
    Student stu;
    int n = stu.read();
    cout << "查询学生信息、课程设计信息:[确认查询:1]" << endl;
    cout << endl;
    int c;
    Course g;
    cout << "请输入选择 :";
    cin >> c;
    switch (c)
    {
    case 1:
        g.searchsid();
    default:
        cout << "输入错误 , 请重新输入 !" << endl;
    }
    stu.write(n);
}
//登录学号,密码,查询学生信息、课程设计信息
void Course::searchsid()
{
    Student st;
    int n = st.read();
    int s;
    int i = 0;
    cout << endl << "查找学生信息 :" << endl;
    cout << "请输入需要查找学生的学号 :" << endl;
    cin >> s;
    string id;
    cout << "请输入学生登陆密码:";
    cin >> id;
    while ((stu[i].stuid - s) != 0 && i < n && (id == stu[i].StuID)) i++; // 查找判断  
    if (i == n)
    {
        cout << "登陆失败" << endl;
        cout << "提示:对不起,无法找到该学生的信息! " << endl;
    }
    else
    {
        cout << "查询中,请等待......" << endl;
        cout << "---------------查询结果如下----------------" << endl;
        cout << "学号 : " << stu[i].stuid << endl;
        cout << "姓名 : " << stu[i].stuname << endl;
        cout << "年级 : " << stu[i].clas << endl;
        cout << "专业 : " << stu[i].specialty << endl;

        cout << "课程编号 : " << Cou[i].couId << endl;
        cout << "课程名称 : " << Cou[i].couName << endl;
        cout << "选题题目 : " << Cou[i].couTitle << endl;
        cout << "指导教师 : " << Cou[i].couTeacher << endl;
    }
}

//修改学生信息、课程设计信息
void Course::alter()
{
    Student st;
    int n = st.read();
    int s;
    int i = 0;
    cout << endl << "修改学生信息 :" << endl;
    cout << "请输入需要修改学生的学号 :" << endl;
    cin >> s;
    while ((stu[i].stuid - s) != 0 && i < n) i++; // 查找判断  
    if (i == n)
    {
        cout << "提示:对不起,无该学生的信息 !!!" << endl; // 输入失败信息
    }
    else
    {
        cout << "该学生的信息 :" << endl;
        cout << "学号: " << stu[i].stuid << '\n' << "姓名: " << stu[i].stuname << "年级: " << stu[i].clas << '\n' << "专业: " << '\n' << stu[i].specialty << '\n'
            << "课程编号 : " << Cou[i].couId << '\n' << "课程名称 : " << Cou[i].couName << '\n' << "选题题目 : " << Cou[i].couTitle << '\n' << "指导教师 : " << Cou[i].couTitle << '\n' << endl;
        cout << "请重新输入该学生的信息 " << endl;
        cout << "学号 :";
        cin >> stu[i].stuid;
        cout << endl;
        cout << "姓名 :";
        cin >> stu[i].stuname;
        cout << endl;
        cout << "年级 :";
        cin >> stu[i].clas;
        cout << endl;
        cout << "专业 :";
        cin >> stu[i].specialty;
        cout << endl;

        cout << "请重新输入课程设计信息:" << endl;
        cout << "课程编号 :";
        cin >> Cou[i].couId;
        cout << endl;
        cout << "课程名称 :";
        cin >> Cou[i].couName;
        cout << endl;
        cout << "进入选题程序......" << endl;
        int id;//学号
        string password;//登录密码

        cout << "选题题目 :本系统每个课程有3道题目[A,B,C],每道题目限定3名学生" << endl;
        for (int j = 0; j < 3; j++)
        {
            cout << "用户名:[学号]" << endl;
            cin >> id;
            cout << "登录密码:" << endl;
            cin >> password;
            if (id == stu[i].stuid && password == stu[i].StuID) {
                cout << "登录成功,请选题:" << endl;
                cin >> Cou[i].couTitle;
                if (Cou[i].couTitle == 'A') {
                    a++;
                    if (a > 3)
                        cout << "选择A题目人数已满" << endl;
                    break;
                }
                if (Cou[i].couTitle == 'B') {
                    b++;
                    if (b > 3)
                        cout << "选择B题目人数已满" << endl;
                    break;
                }
                if (Cou[i].couTitle == 'C') {
                    c++;
                    if (c > 3)
                        cout << "选择C题目人数已满" << endl;
                    break;
                }
                break;
            }
            else {
                if (2 - j == 0) {
                    cout << "3次登录失败,账号被锁定,请与指导老师联系!" << endl;
                }
                else {
                    cout << "选题程序登录失败,你还有" << 2 - j << "次机会登录!" << endl;
                }
            }
        }
        cout << endl;
        cout << "指导老师 :";
        cin >> Cou[i].couTitle;
        cout << endl;
        char c;
        cout << "是否保存数据 ?(y/n)" << endl;
        cin >> c;
        if (c == 'y')
            cout << "修改成功 !" << endl;
        st.write(n);
    }
}
//删除学生信息、课程设计信息
void  Course::del()
{
    Student st;
    int n = st.read();
    int s;
    int i = 0, j;
    cout << endl << "删除学生信息 :" << endl;
    cout << "请输入需要删除学生的学号 :" << endl;
    cin >> s;
    while ((stu[i].stuid - s) != 0 && i < n) i++; // 查找判断  
    if (i == n)
    {
        cout << "提示:记录为空 !!!" << endl; // 返回失败信息
    }
    else
    {
        for (j = i; j < n - 1; j++) // 删除操作  
        {
            stu[j].stuid = stu[j + 1].stuid;
            strcpy(stu[j].stuname, stu[j + 1].stuname);
            strcpy(stu[j].clas, stu[j + 1].clas);
            strcpy(stu[j].specialty, stu[j + 1].specialty);
            // Cou[i].couId >> Cou[i].couName >> Cou[i].couTitle >> Cou[i].couTeacher;
            Cou[j].couId = Cou[j + 1].couId;
            strcpy(Cou[j].couName, Cou[j].couName);
            //strcpy(Cou[j].couTitle, Cou[j].couTitle);
            Cou[j].couTitle = Cou[j].couTitle;
            strcpy(Cou[j].couTeacher, Cou[j].couTeacher);
        }
        cout << "提示:已成功删除 !" << endl; // 返回成功信息
    }
    cout << "你要删除的信息如下 :" << endl;
    cout << "姓名 :" << stu[i].stuname << endl;
    cout << "学号 :" << stu[i].stuid << endl;
    cout << "年级班级 :" << stu[i].clas << endl;
    cout << "专业 :" << stu[i].specialty << endl;

    cout << "课程编号 :" << Cou[i].couId << endl;
    cout << "课程名称 :" << Cou[i].couName << endl;
    cout << "选题题目 :" << Cou[i].couTitle << endl;
    cout << "指导老师 :" << Cou[i].couTeacher << endl;
    st.write(n - 1);
}
//统计学生信息、课程设计信息
void Student::total()
{
    {
        int n = read();
        char c[10];
        cout << "请输入需要查找的课程名称 :" << endl;
        cin >> c;
        for (int i = 0; i < n; i++)
            if (strcmp(Cou[i].couName, c) == 0)
            {
                cout << "你要统计的信息如下 :" << endl;
                cout << "姓名 :" << stu[i].stuname << endl;
                cout << "学号 :" << stu[i].stuid << endl;
                cout << "年级班级 :" << stu[i].clas << endl;
                cout << "专业 :" << stu[i].specialty << endl;

                cout << "课程编号 :" << Cou[i].couId << endl;
                cout << "课程名称 :" << Cou[i].couName << endl;
                cout << "选题题目 :" << Cou[i].couTitle << endl;
                cout << "指导老师 :" << Cou[i].couTeacher << endl;
            }
            else
            {
                cout << "没有找到该课程的记录! " << endl;
            }
    }
}
//显示学生信息、课程设计信息
void Student::display()
{
    int n = read();
    cout << endl << "显示全部学生信息: " << endl;
    if (!stu)
        cout << "没有记录" << endl;
    else
    {
        for (int i = 0; i < n; i++) // 循环输入  

            cout << "学号: " << stu[i].stuid << '\n' << "姓名: " << stu[i].stuname << "年级: " << stu[i].clas << '\n' << "专业: " << '\n' << stu[i].specialty << '\n'
            << "课程编号 : " << Cou[i].couId << '\n' << "课程名称 : " << Cou[i].couName << '\n' << "选题题目 : " << Cou[i].couTitle << '\n' << "指导教师 : " << Cou[i].couTeacher << '\n' << endl;

    }
}

int main()
{
    char choice;
    cout << "\n\n\ ********------欢迎使用课程设计选题管理系统------******** \n\n";
    cout << "|----------------- 1.[录入]+[选题]功能   --------------|\n";
    cout << "|----------------- 2.查询功能            --------------|\n";
    cout << "|----------------- 3.修改功能            --------------|\n";
    cout << "|----------------- 4.删除功能            --------------|\n";
    cout << "|----------------- 5.统计功能            --------------|\n";
    cout << "|----------------- 6.打印功能[学生+课程] --------------|\n";
    cout << "|----------------- 0.退出选题系统功能    --------------|\n";
    cout << endl;
    cout << "请输入对应功能的序号: ";
    cin >> choice;
    Course g;
    Student st;
    if (choice == '0')
    {
        cout << "感谢您使用课程设计选题管理系统!" << endl;
        exit(0);
    }
    else if (choice == '1')
    {
        st.add();
        system("pause");
        main();
    }
    else if (choice == '2')
    {
        g.search();
        system("pause");
        main();
    }
    else if (choice == '3')
    {
        g.alter();
        system("pause");
        main();
    }
    else if (choice == '4')
    {
        g.del();
        system("pause");
        main();
    }
    else if (choice == '5')
    {
        st.total();
        system("pause");
        main();
    }
    else if (choice == '6')
    {
        st.display();
        system("pause");
        main();
    }
    else
    {
        cout << "输入错误,请重新输入您的选择: ";
        main();
    }
    return 0;
}
  • 19
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值