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

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

概述

这是一个基于C++语言的简单学生管理系统,可实现学生信息的添加、删除、修改、查询、打印等功能。主要分为4个模块:菜单选择、学生信息操作、文件读写和程序退出。

菜单选择

菜单选择模块主要用于输出菜单并接受用户输入的选项。

void showMenu() { 
  cout << "*****学生管理系统*****" << endl; 
  cout << "      1.添加学生信息" << endl; 
  cout << "      2.删除学生信息" << endl; 
  cout << "      3.修改学生信息" << endl; 
  cout << "      4.查询学生信息" << endl; 
  cout << "      5.打印学生信息" << endl; 
  cout << "      6.退出程序" << endl; 
  cout << "************************" << endl; 
}

int getInput() { 
  int option = 0; 
  cout << "请输入选项:" << endl; 
  cin >> option; 
  return option; 
}

学生信息操作

学生信息操作模块主要用于添加、删除、修改、查询和打印学生信息。

学生信息结构体

struct Student { 
  string name; 
  int id; 
  int age; 
  string gender; 
  float score; 
}; 

添加学生信息

void addStudent(vector<Student>& vec) { 
  Student stu; 
  cout << "请输入学生姓名:" << endl; 
  cin >> stu.name; 
  cout << "请输入学生学号:" << endl; 
  cin >> stu.id; 
  cout << "请输入学生年龄:" << endl; 
  cin >> stu.age; 
  cout << "请输入学生性别:" << endl; 
  cin >> stu.gender; 
  cout << "请输入学生成绩:" << endl; 
  cin >> stu.score; 
  vec.push_back(stu); 
  cout << "添加成功!" << endl; 
}

删除学生信息

void deleteStudent(vector<Student>& vec) { 
  int id; 
  cout << "请输入要删除的学生学号:" << endl; 
  cin >> id; 
  for (auto it = vec.begin(); it != vec.end(); it++) { 
    if (it->id == id) { 
      vec.erase(it); 
      cout << "删除成功!" << endl; 
      return; 
    } 
  } 
  cout << "未找到该学生信息!" << endl; 
}

修改学生信息

void modifyStudent(vector<Student>& vec) { 
  int id; 
  cout << "请输入要修改的学生学号:" << endl; 
  cin >> id; 
  for (auto& stu : vec) { 
    if (stu.id == id) { 
      cout << "请输入学生姓名:" << endl; 
      cin >> stu.name; 
      cout << "请输入学生年龄:" << endl; 
      cin >> stu.age; 
      cout << "请输入学生性别:" << endl; 
      cin >> stu.gender; 
      cout << "请输入学生成绩:" << endl; 
      cin >> stu.score; 
      cout << "修改成功!" << endl; 
      return; 
    } 
  } 
  cout << "未找到该学生信息!" << endl; 
}

查询学生信息

void queryStudent(vector<Student>& vec) { 
  int id; 
  cout << "请输入要查询的学生学号:" << endl; 
  cin >> id; 
  for (auto& stu : vec) { 
    if (stu.id == id) { 
      cout << "姓名: " << stu.name << endl; 
      cout << "学号: " << stu.id << endl; 
      cout << "年龄: " << stu.age << endl; 
      cout << "性别: " << stu.gender << endl; 
      cout << "成绩: " << stu.score << endl; 
      return; 
    } 
  } 
  cout << "未找到该学生信息!" << endl; 
}

打印学生信息

void printStudent(vector<Student>& vec) { 
  cout << "学生信息列表:" << endl; 
  for (auto& stu : vec) { 
    cout << "姓名: " << stu.name << endl; 
    cout << "学号: " << stu.id << endl; 
    cout << "年龄: " << stu.age << endl; 
    cout << "性别: " << stu.gender << endl; 
    cout << "成绩: " << stu.score << endl; 
    cout << "---------------" << endl; 
  } 
}

文件读写

文件读写模块主要用于将学生信息保存在文件中并从文件中读取学生信息。

写入学生信息

void saveData(vector<Student>& vec, string fileName) { 
  ofstream outFile; 
  outFile.open(fileName, ios::out | ios::trunc); 
  for (auto& stu : vec) { 
    outFile << stu.name << " " << stu.id << " " << stu.age 
            << " " << stu.gender << " " << stu.score << endl; 
  } 
  cout << "保存成功!" << endl; 
  outFile.close(); 
}

读取学生信息

void loadData(vector<Student>& vec, string fileName) { 
  ifstream inFile; 
  inFile.open(fileName, ios::in); 
  if (!inFile) { 
    cout << "文件不存在!" << endl; 
    return; 
  } 
  Student stu; 
  while (inFile >> stu.name >> stu.id >> stu.age >> stu.gender >> stu.score) { 
    vec.push_back(stu); 
  } 
  cout << "读取成功!" << endl; 
  inFile.close(); 
}

程序退出

程序退出模块主要用于在用户选择退出程序时结束程序运行。

void exitProgram() { 
  cout << "程序已退出!" << endl; 
  exit(0); 
}

示例说明

示例1

*****学生管理系统*****
      1.添加学生信息
      2.删除学生信息
      3.修改学生信息
      4.查询学生信息
      5.打印学生信息
      6.退出程序
************************
请输入选项:
1
请输入学生姓名:
张三
请输入学生学号:
1001
请输入学生年龄:
18
请输入学生性别:
男
请输入学生成绩:
90
添加成功!
请输入选项:
5
学生信息列表:
姓名: 张三
学号: 1001
年龄: 18
性别: 男
成绩: 90
---------------
请输入选项:
6
程序已退出!

示例2

*****学生管理系统*****
      1.添加学生信息
      2.删除学生信息
      3.修改学生信息
      4.查询学生信息
      5.打印学生信息
      6.退出程序
************************
请输入选项:
1
请输入学生姓名:
李四
请输入学生学号:
1002
请输入学生年龄:
20
请输入学生性别:
女
请输入学生成绩:
80
添加成功!
请输入选项:
4
请输入要查询的学生学号:
1002
姓名: 李四
学号: 1002
年龄: 20
性别: 女
成绩: 80
请输入选项:
2
请输入要删除的学生学号:
1002
删除成功!
请输入选项:
5
学生信息列表:
姓名: 张三
学号: 1001
年龄: 18
性别: 男
成绩: 90
---------------
请输入选项:
3
请输入要修改的学生学号:
1001
请输入学生姓名:
张三丰
请输入学生年龄:
22
请输入学生性别:
男
请输入学生成绩:
95
修改成功!
请输入选项:
5
学生信息列表:
姓名: 张三丰
学号: 1001
年龄: 22
性别: 男
成绩: 95
---------------
请输入选项:
6
程序已退出!

以上就是C++实现简单学生管理系统的完整攻略,希望能对您有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现简单学生管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 基于一致性hash算法 C++语言的实现详解

    下面是 “基于一致性Hash算法C++语言的实现详解” 的攻略。 简介 一致性Hash算法是分布式系统中常用的一种负载均衡算法。C++ 语言是一种高效的编程语言,有着广泛的应用。本篇攻略将通过分析一致性Hash算法的实现,详细讲解如何在C++语言中实现这一算法,并给出两个示例说明。 一致性Hash算法的实现 步骤一:将服务器节点映射到一个环上 一致性Hash…

    C 2023年5月22日
    00
  • 在C++中反射调用.NET的方法(三)

    介绍: 在C++中,通过COM技术可以调用.NET的方法。但UNIX平台上并不支持COM技术。因此,可以使用反射机制来实现在C++中调用.NET方法的目的。在我的博客中,我介绍了一种方法来实现C++中反射调用.NET方法,即使用Mono运行时库。本文将详细介绍如何使用这个库来完成这个任务。 步骤: 安装Mono运行时库 首先,需要安装Mono运行时库。可以通…

    C 2023年5月23日
    00
  • c++中nlohmann json的基本使用教程

    C++中nlohmann json的基本使用教程 简介 nlohmann json是一个开源的JSON解析器和生成器,支持标准的JSON格式。它是一个单头文件的库,可以轻松地集成到C++项目中。 安装 使用nlohmann json不需要安装,只需要将头文件json.hpp复制到你的项目中即可。 基本使用 创建一个JSON对象 #include "…

    C 2023年5月22日
    00
  • 系统提示lsass.exe失败状态代码c0000005的解决方法

    解决“系统提示lsass.exe失败状态代码c0000005”的方法 什么是lsass.exe? lsass.exe是Windows操作系统中的一个进程,它负责处理用户登录信息等安全相关的任务。由于其重要性,所以典型情况下,它的进程权限是系统管理员。 了解错误信息 在运行Windows操作系统时,您可能会看到一个弹出对话框,指示“lsass.exe失败,状态…

    C 2023年5月23日
    00
  • 关于python中逆序的三位数

    关于Python中逆序的三位数,你可以按照以下步骤进行处理: 第一步:输入数字 首先,你可以通过input()函数来从用户那里获取一个三位数。具体代码如下: num = input("请输入一个三位数:") 在该代码中,input()函数会弹出一个提示框,要求用户输入一个三位数,然后将用户输入的内容存储到num变量中。 第二步:判断输入是…

    C 2023年5月22日
    00
  • 深入解析C++编程中__alignof 与__uuidof运算符的使用

    深入解析C++编程中__alignof 与__uuidof运算符的使用 __alignof 运算符 __alignof 运算符用来获取一个类型所需的对齐宽度,也就是该类型所占空间的整数倍。其语法如下: alignof(type) 其中,type 表示类型,可以是内置类型、用户自定义类型、指针类型、引用类型等。 示例1: #include <iostre…

    C 2023年5月23日
    00
  • C/C++ 恨透了 double free or corruption

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/IwSVImp5cOB3gZbaf0YiPw 写过 C/C++ 的都知道,内存允许程序员自主分配,用完了这些资源也得释放出来,这种在系统运行过程中动态申请的内存,称为动态内存。 常言道,借东西好借好还,下次再借也不难,但是有的…

    C语言 2023年4月18日
    00
  • C语言实现俄罗斯方块小游戏

    C语言实现俄罗斯方块小游戏 简介 俄罗斯方块是一种经典的电子游戏,是由前苏联设计师在1984年开发的。这个游戏的基本玩法是在一个长方形的游戏界面中不断地掉落各种形状的砖块,玩家需要操控这些砖块的位置和方向,让它们在界面内排列出完整的一行或几行,以获得分数。 在此,我们将使用C语言来实现俄罗斯方块小游戏。 实现步骤 步骤一:界面设计 首先,我们需要确定游戏的界…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部