C++实现简单的学生信息管理系统

目录

程序说明

源代码

功能详细介绍

运行示例


程序说明

本程序是由C++编写而成的一个简单的学生信息管理系统,学生的信息包括学号、姓名、性别、年龄、专业和奖励信息,用文件系统实现学生信息管理,具有如下功能:
1.数据录入
2.按学号查询学生信息并输出
3.文件保存
4.退出程序

源代码

//用文件系统实现学生信息管理
//功能: 1.数据录入 2.按学号查询学生信息并输出 3.文件保存
#include <iostream>
#include <fstream>
#include <map>
using namespace std;

struct Student {     //定义学生结构体 
    string stu_id;   //学号 
    string name;     //姓名 
    string gender;   //性别 
    int age;         //年龄 
    string major;    //专业 
    string awards;   //奖励信息 
};

void add_student(map<string, Student>& students) {  //数据录入
    cout << "请输入学生信息:" << endl;
    Student student;
    cout << "学号:";
    cin >> student.stu_id;
    cout << "姓名:";
    cin >> student.name;
    cout << "性别:";
    cin >> student.gender;
    cout << "年龄:";
    cin >> student.age;
    cout << "专业:";
    cin >> student.major;
    cout << "奖励信息:";
    cin >> student.awards;
    students[student.stu_id] = student;
    cout << "学生信息添加成功!" << endl;
}

void search_student(map<string, Student>& students) {    //按学号查询学生信息并输出
    string stu_id;
    cout << "请输入要查询的学生学号:";
    cin >> stu_id;
    if (students.find(stu_id) != students.end()) {
        Student student = students[stu_id];
        cout << "学号:" << student.stu_id << endl;
        cout << "姓名:" << student.name << endl;
        cout << "性别:" << student.gender << endl;
        cout << "年龄:" << student.age << endl;
        cout << "专业:" << student.major << endl;
        cout << "奖励信息:" << student.awards << endl;
    } else {
        cout << "未找到该学生信息!" << endl;
    }
}

void save_students(map<string, Student>& students) {       //文件保存
    ofstream outfile("students.txt");
    if (outfile.is_open()) {
        outfile << "学号\t姓名\t性别\t年龄\t专业\t奖励信息" << endl;
        //for (auto it = students.begin(); it != students.end(); ++it)
//注:编译器版本较高的可以用上面注释这一行替换下面 { 前这一大行
		for (std::map<std::string, Student>::iterator it = students.begin(); it != students.end(); ++it)  {
            outfile << it->second.stu_id << "\t" << it->second.name << "\t" << it->second.gender << "\t" << it->second.age << "\t" << it->second.major << "\t" << it->second.awards << endl;
        }
        outfile.close();
        cout << "学生信息保存成功!" << endl;
    } else {
        cout << "无法打开文件!" << endl;
    }
}

int main() {
    map<string, Student> students;
    ifstream infile("students.txt");
    if (infile.is_open()) {
        string header;
        getline(infile, header);
        cout << header << endl;
        while (!infile.eof()) {
            Student student;
            infile >> student.stu_id >> student.name >> student.gender >> student.age >> student.major >> student.awards;
            students[student.stu_id] = student;
        }
        infile.close();
        cout << "学生信息读取成功!" << endl;
    } else {
        cout << "无法打开文件!" << endl;
    }

    int choice;
    while (1) {
        cout << "请选择操作:" << endl;
        cout << "1.数据录入" << endl;
        cout << "2.按学号查询学生信息并输出" << endl;
        cout << "3.文件保存" << endl;
        cout << "4.退出程序" << endl;
        cin >> choice;
        switch (choice) {
            case 1:
                add_student(students);
                break;
            case 2:
                search_student(students);
                break;
            case 3:
                save_students(students);
                break;
            case 4:
                return 0;
            default:
                cout << "无效的选项!" << endl;
        }
    }
    return 0;
}

功能详细介绍

运行程序后会有明确提示如下:
请选择操作:
1.数据录入
2.按学号查询学生信息并输出
3.文件保存
4.退出程序
输入数字”1“即可进行学生新的的录入,输入数字”2“可按学号查询学生信息并输出,输入数字”3“进行文件保存,输入数字”4“退出程序。
学生的信息记录在名为”students.txt“的文件里,在选择功能1录入学生信息后需选择功能3进行文件保存方可在文件中显示出学生信息。另外,若需要根据学号查询学生信息,选择功能2然后输入其学号即可。
本系统运行后有清晰的操作提示,操作起来比较方便。

运行示例

1.信息录入(部分展示)

2.信息查询

3.信息保存

保存后,对应文件夹里“students.txt”文档显示如下:

注:本程序单次进行多种功能的运行一般没问题,但多次运行可能出现以下问题:打开程序后不能正常弹出功能选择的提示,无法进行后续操作。初步判断问题在主程序while循环前的那一部分,由于时间和水平有限,暂不能修改,有修改办法的欢迎分享在评论区。


关注我,持续分享有趣有用的知识!

相关推荐

  1. 简单学生信息管理系统

    2024-05-10 05:22:02       8 阅读
  2. C++构建MVC学生信息管理系统

    2024-05-10 05:22:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 05:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 05:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 05:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 05:22:02       18 阅读

热门阅读

  1. 有关while((c=getchar())!=\n)和while((ch=getchar()!=EOF))

    2024-05-10 05:22:02       10 阅读
  2. 令牌桶和漏桶算法的区别

    2024-05-10 05:22:02       12 阅读
  3. 双网口扩展IO支持8DO输出

    2024-05-10 05:22:02       12 阅读
  4. .Net WinFrom中DataGridView控件的熟练学习

    2024-05-10 05:22:02       10 阅读
  5. Go中json的解析和反解析

    2024-05-10 05:22:02       8 阅读
  6. 【Android】EventBus收不到消息的一种情况

    2024-05-10 05:22:02       11 阅读
  7. 深入理解nginx中的signal处理机制

    2024-05-10 05:22:02       11 阅读
  8. 等保测评—Linux核查指令3

    2024-05-10 05:22:02       11 阅读
  9. 2024.5.2 —— LeetCode 高频题复盘

    2024-05-10 05:22:02       13 阅读