【C++ 程设作业】大作业:学生管理系统

程序源代码可以在我的github主页寻找:我的Github主页
本来是打算用C写的,谁让C++比C好用呢?

// 学生信息管理系统.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。


#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
#include <algorithm>

#define FILENAME "studentfile.txt"

using namespace std;

const int MAXN = 1000;

/****************************以下为类的定义*****************************/
/**********************************************************************/
//类 学生
class Student {
public:
    string name;
    int sex;    //1为男,2为女
    int age;
    int grade;  //1表示高一,2表示高二,3表示高三
    int score;  //评级,满分为100
    string phoneNumber;
    string teacher;
    string addr;    //地址
};

//类 学生信息档案
class Books {
public:
    Student stuArray[MAXN];
    //学生人数
    int size;
};


/****************************以下为函数的定义*****************************/
/***********************************************************************/

//显示菜单
void showMenu() {
    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 << "********* 【8】退出系统 *********" << endl;
    cout << "*********************************" << endl;
}

//添加学生
void addStu(Books* abs) {
    //判断档案是否满了
    if (abs->size == MAXN) {
        cout << "档案满了,无法继续添加学生" << endl;
        cout << "若要继续添加,请删除学生或清空学生" << endl;
        return;
    }
    //添加学生
    else {

        //1.姓名
        string name;
        cout << "请输入姓名:";
        cin >> name;
        abs->stuArray[abs->size].name = name;

        //2.性别
        int sex = 0;
        cout << "注意:使用1表示男性,2表示女性,请规范输入!"<<endl;
        cout << "请输入性别:";
        
        while (true) {
            cin >> sex;
            if (sex == 1 || sex == 2) {
                abs->stuArray[abs->size].sex = sex;
                break;
            }
            else {
                cout << "请规范输入!" << endl;
            }
        }

        //3.年龄
        int age;
        cout << "请输入年龄:";
        cin >> age;
        abs->stuArray[abs->size].age = age;

        //4.年级
        int grade;
        cout << "注意:使用1表示高一,2表示高二,3表示高三,请规范输入!" << endl;
        cout << "请输入年级:";
        while (true) {
            cin >> grade;
            if (grade == 1 || grade == 2 || grade == 3) {
                abs->stuArray[abs->size].grade = grade;
                break;
            }
            else {
                cout << "请规范输入!" << endl;
            }
        }

        //5.评级
        int score;
        cout << "请输入该学生的评级(满分为100分):";
        cin >> score;
        abs->stuArray[abs->size].score = score;

        //6.电话号码
        string phoneNumber;
        cout << "请输入学生的联系电话:";
        cin >> phoneNumber;
        abs->stuArray[abs->size].phoneNumber = phoneNumber;

        //7.班主任
        string teacher;
        cout << "请输入班主任姓名:";
        cin >> teacher;
        abs->stuArray[abs->size].teacher = teacher;

        //8.家庭住址
        string addr;
        cout << "请输入学生的家庭住址:";
        cin >> addr;
        abs->stuArray[abs->size].addr = addr;

        //最后进行人数更新
        abs->size++;
        
        cout << "添加成功!"<< endl;


        //调用stdlib.h函数
        system("pause");    //暂停
        system("cls");  //清屏
    }
}

//显示学生
void showStu(Books* abs) {
    //判断档案人数是否为0
    if (abs->size == 0) {
        cout << "当前人数为空"<<endl;
    }
    else {
        for (int i = 0; i < abs->size; i++) {
            cout << "姓名: " << abs->stuArray[i].name << " ";
            cout << "性别: " << (abs->stuArray[i].sex == 1 ? "男" : "女") << " ";
            cout << "年龄: " << abs->stuArray[i].age << " ";
            cout << "年级: ";
            if (abs->stuArray[i].grade == 1)
                cout << "高一";
            else if (abs->stuArray[i].grade == 2)
                cout << "高二";
            else
                cout << "高三";
            cout << " ";
            cout << "评级: " << abs->stuArray[i].score << " ";
            cout << "电话号码: " << abs->stuArray[i].phoneNumber << " ";
            cout << "班主任姓名: " << abs->stuArray[i].teacher << " ";
            cout << "家庭住址: " << abs->stuArray[i].addr << endl;
        }
    }

    //调用stdlib.h函数
    system("pause");    //暂停
    system("cls");  //清屏
}

//检测学生是否存在,存在返回数组下标,不存在返回-1
int isExist(Books* abs, string name) {
    for (int i = 0; i < abs->size; i++) {
        if (abs->stuArray[i].name == name) {
            return i;   //找到了,返回数组下标
        }
    }
    return -1;  //如果没找到,返回-1
}

//删除学生
void deleteStu(Books* abs) {
    cout << "请输入你要删除的学生:";
    string name;
    cin >> name;
    int ret = isExist(abs, name);
    if (ret == -1) {
        cout << "学生档案中并不存在此人" << endl;
    }
    else {
        for (int i = ret; i < abs->size; i++) {
            //数据前移
            abs->stuArray[i] = abs->stuArray[i + 1];
        }
        abs->size--;    //更新人数
        cout << "删除成功!" << endl;
    }

    //调用stdlib.h函数
    system("pause");    //暂停
    system("cls");  //清屏
}

//查找学生
void findStu(Books* abs) {
    cout << "请输入你要查找的学生:";
    string name;
    cin >> name;
    int i = isExist(abs, name);
    if (i == -1) {
        cout << "学生档案中并不存在此人" << endl;
    }
    else {
        cout << "姓名: " << abs->stuArray[i].name << " ";
        cout << "性别: " << (abs->stuArray[i].sex == 1 ? "男" : "女") << " ";
        cout << "年龄: " << abs->stuArray[i].age << " ";
        cout << "年级: ";
        if (abs->stuArray[i].grade == 1)
            cout << "高一";
        else if (abs->stuArray[i].grade == 2)
            cout << "高二";
        else
            cout << "高三";
        cout << " ";
        cout << "评级: " << abs->stuArray[i].score << " ";
        cout << "电话号码: " << abs->stuArray[i].phoneNumber << " ";
        cout << "班主任姓名: " << abs->stuArray[i].teacher << " ";
        cout << "家庭住址: " << abs->stuArray[i].addr << endl;
    }

    //调用stdlib.h函数
    system("pause");    //暂停
    system("cls");  //清屏
}

//修改学生信息
void modifyStu(Books* abs) {
    cout << "请输入你要修改的学生:";
    string name;
    cin >> name;
    int i = isExist(abs, name);
    if (i == -1) {
        cout << "学生档案中并不存在此人" << endl;
    }
    else {

        //1.姓名
        cout << "请输入姓名:";
        cin >> name;
        abs->stuArray[i].name = name;

        //2.性别
        int sex = 0;
        cout << "注意:使用1表示男性,2表示女性,请规范输入!" << endl;
        cout << "请输入性别:";

        while (true) {
            cin >> sex;
            if (sex == 1 || sex == 2) {
                abs->stuArray[i].sex = sex;
                break;
            }
            else {
                cout << "请规范输入!" << endl;
            }
        }

        //3.年龄
        int age;
        cout << "请输入年龄:";
        cin >> age;
        abs->stuArray[i].age = age;

        //4.年级
        int grade;
        cout << "注意:使用1表示高一,2表示高二,3表示高三,请规范输入!" << endl;
        cout << "请输入年级:";
        while (true) {
            cin >> grade;
            if (grade == 1 || grade == 2 || grade == 3) {
                abs->stuArray[i].grade = grade;
                break;
            }
            else {
                cout << "请规范输入!" << endl;
            }
        }

        //5.评级
        int score;
        cout << "请输入该学生的评级(满分为100分):";
        cin >> score;
        abs->stuArray[i].score = score;

        //6.电话号码
        string phoneNumber;
        cout << "请输入学生的联系电话:";
        cin >> phoneNumber;
        abs->stuArray[i].phoneNumber = phoneNumber;

        //7.班主任
        string teacher;
        cout << "请输入班主任姓名:";
        cin >> teacher;
        abs->stuArray[i].teacher = teacher;

        //8.家庭住址
        string addr;
        cout << "请输入学生的家庭住址:";
        cin >> addr;
        abs->stuArray[i].addr = addr;

        cout << "修改成功!" << endl;
    }

    //调用stdlib.h函数
    system("pause");    //暂停
    system("cls");  //清屏
}

//清空学生
void cleanStu(Books* abs) {
    abs->size = 0;
    cout << "清空成功!" << endl;

    //调用stdlib.h函数
    system("pause");    //暂停
    system("cls");  //清屏
}

//评级排序
/*void sortStu(Books* abs) {
    if (abs->size == 0) {
        cout << "当前人数为空!" << endl;
    }
    else {
        sort(abs->stuArray->score, abs->stuArray->score + abs->size);
        cout << "排序成功!";
    }
    
    //调用stdlib.h函数
    system("pause");    //暂停
    system("cls");  //清屏
}*/

//I/O流写入文件(保存学生信息—>学生信息.txt)
void save(Books *abs){
    ofstream ofs;
    ofs.open(FILENAME, ios::out);   //用输出方式打开文件

    //将每个学生的数据写入到文件中
    for (int i = 0; i < abs->size; i++) {
        ofs << abs->stuArray[i].name << " "
            << abs->stuArray[i].sex << " "
            << abs->stuArray[i].age << " "
            << abs->stuArray[i].grade << " "
            << abs->stuArray[i].score << " "
            << abs->stuArray[i].phoneNumber << " "
            << abs->stuArray[i].teacher << " "
            << abs->stuArray[i].addr << " " << endl;
    }


    //关闭文件
    ofs.close();
}


/********************************主函数**********************************/
/***********************************************************************/

int main()
{
    //创建信息档案结构
    Books abs;
    //人数初始化为0
    abs.size = 0;
    
    //选择变量
    int select = 0;

    //用户输入
    while (true) {
        //菜单显示
        showMenu();
        cin >> select;
        switch (select) {
            case 1: {
                addStu(&abs);
                save(&abs);
                break;
            } 
            case 2: 
                showStu(&abs);
                break;
            case 3: 
                deleteStu(&abs);
                break;
            case 4: 
                findStu(&abs);
                break;
            case 5: 
                modifyStu(&abs);
                break;
            case 6: 
                cleanStu(&abs);
                break;
            case 7: {
                cout << "该功能在维护中!" << endl;

                //调用stdlib.h函数
                system("pause");    //暂停
                system("cls");  //清屏

                break;
            } 
            case 8: 
                cout << "欢迎下次使用本系统" << endl;
                return 0;
        }
    }
    return 0;
}



  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C 学生作业管理系统是一个帮助学生和老师更好地管理和组织作业的在线平台。它提供了一种方便快捷的方式,使学生能够及时了解和完成自己的作业。 首先,学生可以在系统上查看每门课程的作业任务和截止日期。系统会提醒学生即将到期的作业,并保持学生对作业完成情况的经常更新。这样,学生不会错过任何截止日期,并能够更好地规划自己的时间以完成作业。 其次,学生可以在系统上提交作业。他们可以上传文件或输入文本,并将其发送给老师。这个过程是完全电子化的,消除了传统纸质作业可能出现的遗失或损坏的风险。老师也可以在系统上及时看到学生的提交,从而更好地跟踪和评估作业完成情况。 除了作业管理,C 学生作业管理系统还提供了其他功能。学生可以在系统上与老师和同学交流和讨论作业的问题,以及分享学习资源。这样,学生可以互相帮助和鼓励,促进学习氛围的形成和交流。 此外,C 学生作业管理系统还可以生成作业成绩和报告。老师可以将学生的作业成绩输入系统,并用图表和图表的形式进行分析和展示。这样,学生和家长可以更清楚地了解学生的学术表现,并对自己的学习进行调整和改进。 总的来说,C 学生作业管理系统提供了一个更有效和便捷的方式来管理作业。它帮助学生和老师更好地组织和跟踪作业,促进学生的学习和进步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值