C++学生信息管理系统

跟着网上学习了c++,写出了一个简单的学生信息管理系统,实现对学生的增删改查以及清空学生列表的功能。

一、创建结构体

struct student
{    
    string stuId;//学号
    string name;//姓名
    string sex;//性别
    int age;//年龄
};
struct stu_class {
    struct student students [MAX];//一个班MAX人
    int number;//当前数量
};

创建了两个结构体,student结构体用来存放学号,姓名,性别,年龄等信息;stu_class代表一个班,students数组存放学生,number代表当前的学生数量

二、显示菜单

void showMenu(){
    cout << "--------------------" << endl;
    cout << "-----1.添加学生-----" << endl;
    cout << "-----2.删除学生-----" << endl;
    cout << "-----3.修改学生-----" << endl;
    cout << "-----4.查找学生-----" << endl;
    cout << "-----5.显示学生-----" << endl;
    cout << "-----6.清空学生-----" << endl;
    cout << "-----0.退出系统-----" << endl;
    cout << "--------------------" << endl;

}

用cout输出

三、添加学生

void addStudent(stu_class * a) {
    if (a->number > MAX) {
        cout << "添加失败,学生已满!" << endl;
    }
    else {
        //添加学号
        string id;
        cout << "请输入要添加学生的学号:" << endl;
        cin >> id;
        a->students[a->number].stuId = id;
        //添加姓名
        string name;
        cout << "请输入要添加学生的姓名:" << endl;
        cin >> name;
        a->students[a->number].name = name;
        //添加性别
        string sex;
        cout << "请输入要添加学生的性别:" << endl;        
        while (true)
        {    
            cin >> sex;
            if (sex == "男" || sex == "女") {
                break;
            }
            else {
                cout << "性别输入有误!" << endl;
                cout << "请重新输入:" << endl;
            }
        }
        a->students[a->number].sex = sex;
        //添加年龄
        int age;
        cout << "请输入学生的年龄:" << endl;        
        while (true)
        {
            cin >> age;
            if (age >= 0 && age <= 100) { //规定年龄在0--100岁
                break;
            }
            else {
                cout << "年龄输入有误!" << endl;
                cout << "请重新输入:" << endl;
            }
        }
        a->students[a->number].age = age;
    }
    cout << "添加成功!" << endl;
    a->number++;
    system("pause");
    system("cls");
}

通过地址传递,用cin输入存放在第number个student数组中,性别只能输入男或女,年龄规定为0到100岁

四、显示学生

void showStudent(stu_class * b) {
    if (b->number == 0) {
        cout << "无法显示,没有学生!" << endl;
    }
    else {
        int i;
        for (i = 0; i <= b->number - 1; i++) {
            cout << "学号:" << b->students[i].stuId << "\t";
            cout << "姓名:" << b->students[i].name << "\t";
            cout << "性别:" << b->students[i].sex << "\t";
            cout << "年龄:" << b->students[i].age << endl;
        }
    }
    system("pause");
    system("cls");
    
}

如果还未添加学生,显示"无法显示,没有学生!",添加了之后,通过遍历student数组,将相关信息输出

五、检测学生是否存在

int detectStudent(stu_class * c , string name){
    int i;
    for (i = 0; i <= c->number - 1; i++) {
        if (c->students[i].name == name) {
            return i;
        }
    }
    return -1;
}

检测学生是否存在,后面的删除修改查找功能以此为基础,如果学生不存在,返回-1,存在的话返回当前数组下标

六、其他功能

1、主函数

int main() {
    stu_class sc;
    sc.number = 0;
    int select;
    
    while (true)
    {    
        showMenu();
        cout << "请输入您的操作:" << endl;
        cin >> select;
        switch (select)
        {
        case 0:
            cout << "感谢您的使用!" << endl;
            system("pause");
            return 0;
            break;
        case 1:
            addStudent(&sc);
            break;
        case 2:
        {    string name;
            cout << "请输入要删除学生的姓名:" << endl;
            cin >> name;
            int record = detectStudent(&sc, name);
            deleteStudent(&sc, record);
        }
            break;
        case 3:
        {    string name;
            cout << "请输入要修改学生的姓名:" << endl;
            cin >> name;
            int record = detectStudent(&sc, name);
            updateStudent(&sc, record);
        }
            break;
        case 4:
        {    string name;
            cout << "请输入要查找学生的姓名:" << endl;
            cin >> name;
            int record = detectStudent(&sc, name);
            findStudent(&sc, record);
        }
            break;
        case 5:
            showStudent(&sc);
            break;
        case 6:
            cleanStudent(&sc);
            break;
        default:
            break;
        }
    }
    system("pause");
    return 0;
}

删改查的功能,先输入姓名,调用detectStudent函数,检测学生是否存在和学生存在哪里,用变量record记录detectStudent的返回值

2、删除学生

void deleteStudent(stu_class* d, int record) {
    int i;
    if (record == -1) {
        cout << "未找到此学生。" << endl;
    }
    else
    {
        for (i = record; i <= d->number - 1; i++) {
            d->students[i].stuId = d->students[i + 1].stuId;
            d->students[i].name = d->students[i + 1].name;        
            d->students[i].sex = d->students[i + 1].sex;
            d->students[i].age = d->students[i + 1].age;
        }
        d->number--;
        cout << "删除成功!" << endl;
    }
    
    system("pause");
    system("cls");

}

先判断是否存在,然后根据record把要删除的用后一个覆盖

3、修改学生

void updateStudent(stu_class * e, int record) {
    if (record == -1) {
        cout << "未找到此学生。" << endl;
    }
    else {
        //修改学号    
        string id;
        cout << "请重新输入学号:" << endl;
        cin >> id;
        e->students[record].stuId = id;
        //修改性别
        string sex;
        cout << "请重新输入性别:" << endl;
        cin >> sex;
        e->students[record].sex = sex;
        //修改年龄
        int age;
        cout << "请重新输入年龄:" << endl;
        cin >> age;
        e->students[record].age = age;
        cout << "修改成功!" << endl;
    }
    system("pause");
    system("cls");
}

修改我没有限制年龄和性别,cin输入覆盖原来的信息

4、查找学生

void findStudent(stu_class* f, int record) {
    if (record == -1) {
        cout << "未找到此学生。" << endl;
    }
    else{
        cout << "学号:" << f->students[record].stuId << "\t";
        cout << "姓名:" << f->students[record].name << "\t";
        cout << "性别:" << f->students[record].sex << "\t";
        cout << "年龄:" << f->students[record].age << endl;
    }
    system("pause");
    system("cls");
}

根据record的值,cout输出相应的信息

5、清空

void cleanStudent(stu_class * g){
    g->number = 0;
    cout << "清空完成!" << endl;
    system("pause");
    system("cls");
}

将number的值重置为0实现清空操作

七、完整代码

#include <iostream>
using namespace std;
#define MAX 100

//学生结构体
struct student
{    
    string stuId;//学号
    string name;//姓名
    string sex;//性别
    int age;//年龄
};
struct stu_class {
    struct student students [MAX];//一个班MAX人
    int number;//当前数量
};

//1.显示菜单
void showMenu(){
    cout << "--------------------" << endl;
    cout << "-----1.添加学生-----" << endl;
    cout << "-----2.删除学生-----" << endl;
    cout << "-----3.修改学生-----" << endl;
    cout << "-----4.查找学生-----" << endl;
    cout << "-----5.显示学生-----" << endl;
    cout << "-----6.清空学生-----" << endl;
    cout << "-----0.退出系统-----" << endl;
    cout << "--------------------" << endl;

}

//2. 添加学生
void addStudent(stu_class * a) {
    if (a->number > MAX) {
        cout << "添加失败,学生已满!" << endl;
    }
    else {
        //添加学号
        string id;
        cout << "请输入要添加学生的学号:" << endl;
        cin >> id;
        a->students[a->number].stuId = id;
        //添加姓名
        string name;
        cout << "请输入要添加学生的姓名:" << endl;
        cin >> name;
        a->students[a->number].name = name;
        //添加性别
        string sex;
        cout << "请输入要添加学生的性别:" << endl;        
        while (true)
        {    
            cin >> sex;
            if (sex == "男" || sex == "女") {
                break;
            }
            else {
                cout << "性别输入有误!" << endl;
                cout << "请重新输入:" << endl;
            }
        }
        a->students[a->number].sex = sex;
        //添加年龄
        int age;
        cout << "请输入学生的年龄:" << endl;        
        while (true)
        {
            cin >> age;
            if (age >= 0 && age <= 100) { //规定年龄在0--100岁
                break;
            }
            else {
                cout << "年龄输入有误!" << endl;
                cout << "请重新输入:" << endl;
            }
        }
        a->students[a->number].age = age;
    }
    cout << "添加成功!" << endl;
    a->number++;
    system("pause");
    system("cls");
}

//3.显示学生
void showStudent(stu_class * b) {
    if (b->number == 0) {
        cout << "无法显示,没有学生!" << endl;
    }
    else {
        int i;
        for (i = 0; i <= b->number - 1; i++) {
            cout << "学号:" << b->students[i].stuId << "\t";
            cout << "姓名:" << b->students[i].name << "\t";
            cout << "性别:" << b->students[i].sex << "\t";
            cout << "年龄:" << b->students[i].age << endl;
        }
    }
    system("pause");
    system("cls");
    
}

//4.根据姓名检测学生是否存在,不存在返回-1
int detectStudent(stu_class * c , string name){
    int i;
    for (i = 0; i <= c->number - 1; i++) {
        if (c->students[i].name == name) {
            return i;
        }
    }
    return -1;
}

//5.删除学生
void deleteStudent(stu_class* d, int record) {
    int i;
    if (record == -1) {
        cout << "未找到此学生。" << endl;
    }
    else
    {
        for (i = record; i <= d->number - 1; i++) {
            d->students[i].stuId = d->students[i + 1].stuId;
            d->students[i].name = d->students[i + 1].name;        
            d->students[i].sex = d->students[i + 1].sex;
            d->students[i].age = d->students[i + 1].age;
        }
        d->number--;
        cout << "删除成功!" << endl;
    }
    
    system("pause");
    system("cls");

}

//6.修改学生信息
void updateStudent(stu_class * e, int record) {
    if (record == -1) {
        cout << "未找到此学生。" << endl;
    }
    else {
        //修改学号    
        string id;
        cout << "请重新输入学号:" << endl;
        cin >> id;
        e->students[record].stuId = id;
        //修改性别
        string sex;
        cout << "请重新输入性别:" << endl;
        cin >> sex;
        e->students[record].sex = sex;
        //修改年龄
        int age;
        cout << "请重新输入年龄:" << endl;
        cin >> age;
        e->students[record].age = age;
        cout << "修改成功!" << endl;
    }
    system("pause");
    system("cls");
}

//7.查找学生
void findStudent(stu_class* f, int record) {
    if (record == -1) {
        cout << "未找到此学生。" << endl;
    }
    else{
        cout << "学号:" << f->students[record].stuId << "\t";
        cout << "姓名:" << f->students[record].name << "\t";
        cout << "性别:" << f->students[record].sex << "\t";
        cout << "年龄:" << f->students[record].age << endl;
    }
    system("pause");
    system("cls");
}

//8.学生清空
void cleanStudent(stu_class * g){
    g->number = 0;
    cout << "清空完成!" << endl;
    system("pause");
    system("cls");
}
int main() {
    stu_class sc;
    sc.number = 0;
    int select;
    
    while (true)
    {    
        showMenu();
        cout << "请输入您的操作:" << endl;
        cin >> select;
        switch (select)
        {
        case 0:
            cout << "感谢您的使用!" << endl;
            system("pause");
            return 0;
            break;
        case 1:
            addStudent(&sc);
            break;
        case 2:
        {    string name;
            cout << "请输入要删除学生的姓名:" << endl;
            cin >> name;
            int record = detectStudent(&sc, name);
            deleteStudent(&sc, record);
        }
            break;
        case 3:
        {    string name;
            cout << "请输入要修改学生的姓名:" << endl;
            cin >> name;
            int record = detectStudent(&sc, name);
            updateStudent(&sc, record);
        }
            break;
        case 4:
        {    string name;
            cout << "请输入要查找学生的姓名:" << endl;
            cin >> name;
            int record = detectStudent(&sc, name);
            findStudent(&sc, record);
        }
            break;
        case 5:
            showStudent(&sc);
            break;
        case 6:
            cleanStudent(&sc);
            break;
        default:
            break;
        }
    }
    system("pause");
    return 0;
}

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,学生信息管理系统是一个比较典型的应用程序,可以通过使用C++语言进行开发。下面是一个简单的学生信息管理系统的代码示例,可以供您参考: ```c++ #include <iostream> #include <string> #include <vector> using namespace std; struct Student { string name; int age; int grade; }; vector<Student> students; void addStudent() { Student student; cout << "请输入学生姓名:"; cin >> student.name; cout << "请输入学生年龄:"; cin >> student.age; cout << "请输入学生成绩:"; cin >> student.grade; students.push_back(student); cout << "添加成功!" << endl; } void showAllStudents() { if (students.empty()) { cout << "暂无学生信息!" << endl; return; } for (auto student : students) { cout << "姓名:" << student.name << " 年龄:" << student.age << " 成绩:" << student.grade << endl; } } void showMenu() { cout << "------------------------" << endl; cout << " 学生信息管理系统 " << endl; cout << "------------------------" << endl; cout << " 1. 添加学生信息" << endl; cout << " 2. 显示所有学生信息" << endl; cout << " 3. 退出" << endl; cout << "------------------------" << endl; } int main() { int choice; while (true) { showMenu(); cout << "请选择操作:"; cin >> choice; switch (choice) { case 1: addStudent(); break; case 2: showAllStudents(); break; case 3: cout << "谢谢使用!" << endl; return 0; default: cout << "输入有误,请重新输入!" << endl; break; } } } ``` 这段代码实现了一个简单的学生信息管理系统,可以通过菜单选择添加学生信息、显示所有学生信息、退出等操作。您可以根据需要进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值