21xrx.com
2025-03-16 09:26:13 Sunday
文章检索 我的文章 写文章
C++学生信息管理系统完整代码
2023-07-07 16:11:25 深夜i     9     0
C++ 学生信息管理系统 完整代码

学生信息管理系统是一种常见的计算机应用程序,特别是在学校和教育机构中广泛使用。本文将介绍一个基于C++的学生信息管理系统的完整代码,它可以帮助教师和管理员管理学生的个人信息、考试成绩和其他相关数据。

代码实现

本系统使用C++编程语言和面向对象编程的思想来实现。主要的功能代码分为头文件、源文件和主函数,这些文件代码的实现如下:

头文件

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <algorithm>
using namespace std;
// 定义Student类
class Student {
  private:
    string name;
    string id;
    string major;
    string grade;
    string sex;
    float score;
  public:
    void input();
    void print();
    string getId() { return id;}
    void setScore(float s) { score = s;}
    float getScore() return score;
};
// 定义ManagementSystem类
class ManagementSystem {
  private:
    int size;
    Student* students;
    string file_path; // 文件路径
  public:
    ManagementSystem(string path);
    void run();
    void printMenu();
    void readFile();
    void writeFile();
    void addStudent();
    void deleteStudent();
    void searchStudent();
    void modifyStudent();
    void sortStudentByScore();
    void displayAllStudent();
    void clean();
    ~ManagementSystem();
};

源文件

#include "ManagementSystem.h"
// Student类成员函数
// 输入学生信息
void Student::input()
  cout << "请输入学生信息:" << endl;
  cout << "姓名:"; cin >> name;
  cout << "学号:"; cin >> id;
  cout << "专业:"; cin >> major;
  cout << "年级:"; cin >> grade;
  cout << "性别:"; cin >> sex;
  cout << "成绩:"; cin >> score;
// 打印学生信息
void Student::print() {
  cout << setw(10) << name;
  cout << setw(15) << id;
  cout << setw(10) << major;
  cout << setw(5) << grade;
  cout << setw(5) << sex;
  cout << setw(5) << score << endl;
}
// ManagementSystem类成员函数
// 构造函数,读取文件中的学生信息
ManagementSystem::ManagementSystem(string path) {
  file_path = path;
  readFile();
}
// 读取文件中的学生信息
void ManagementSystem::readFile() {
  ifstream file(file_path);
  if (!file)
    cout << "文件打开失败!" << endl;
    return;
  
  file >> size;
  students = new Student[size];
  for (int i = 0; i < size; i++) {
    string name, id, major, grade, sex;
    float score;
    file >> name >> id >> major >> grade >> sex >> score;
    Student stu;
    stu.input();  // 从文件中读取一个学生的信息
    students[i] = stu;
  }
  file.close();
  cout << "读取文件成功!" << endl;
}
// 写入学生信息到文件中
void ManagementSystem::writeFile() {
  ofstream file(file_path);
  if (!file)
    cout << "文件打开失败!" << endl;
    return;
  
  file << size << endl;
  for (int i = 0; i < size; i++) {
    Student stu = students[i];
    file << stu.getName() << " "
       << stu.getId() << " "
       << stu.getMajor() << " "
       << stu.getGrade() << " "
       << stu.getSex() << " "
       << stu.getScore() << endl;
  }
  file.close();
  cout << "写入文件成功!" << endl;
}
// 添加学生信息
void ManagementSystem::addStudent() {
  cout << "添加学生信息: " << endl;
  Student stu;
  stu.input();
  students[size++] = stu;
  writeFile();
}
// 删除学生信息
void ManagementSystem::deleteStudent() {
  cout << "请输入要删除的学生学号: " << endl;
  string id;
  cin >> id;
  int index = -1;
  for (int i = 0; i < size; i++) {
    if (students[i].getId() == id)
      index = i;
      break;
    
  }
  if (index == -1)
    cout << "未找到该学生信息!" << endl;
    return;
  
  for (int i = index + 1; i < size; i++)
    students[i - 1] = students[i];
  size--;
  writeFile();
}
// 查找学生信息
void ManagementSystem::searchStudent() {
  cout << "请输入要查找的学生学号: " << endl;
  string id;
  cin >> id;
  int index = -1;
  for (int i = 0; i < size; i++) {
    if (students[i].getId() == id)
      index = i;
      break;
    
  }
  if (index == -1)
    cout << "未找到该学生信息!" << endl;
    return;
  
  students[index].print();
}
// 修改学生信息
void ManagementSystem::modifyStudent() {
  cout << "请输入要修改的学生学号: " << endl;
  string id;
  cin >> id;
  int index = -1;
  for (int i = 0; i < size; i++) {
    if (students[i].getId() == id)
      index = i;
      break;
    
  }
  if (index == -1)
    cout << "未找到该学生信息!" << endl;
    return;
  
  students[index].input();
  writeFile();
}
// 按成绩排序
void ManagementSystem::sortStudentByScore() {
  for (int i = 0; i < size; i++) {
    for (int j = i + 1; j < size; j++) {
      if (students[j].getScore() > students[i].getScore()) {
        Student temp = students[i];
        students[i] = students[j];
        students[j] = temp;
      }
    }
  }
  writeFile();
}
// 查看全部学生信息
void ManagementSystem::displayAllStudent() {
  cout << "全部学生信息: " << endl;
  cout << setw(10) << "姓名"
     << setw(15) << "学号"
     << setw(10) << "专业"
     << setw(5) << "年级"
     << setw(5) << "性别"
     << setw(5) << "成绩" << endl;
  for (int i = 0; i < size; i++)
    students[i].print();
}
// 显示菜单
void ManagementSystem::printMenu()
  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 ManagementSystem::clean() {
  delete[] students;
  size = 0;
  writeFile();
}
// 析构函数,释放内存
ManagementSystem::~ManagementSystem() {
  clean();
}
// 运行系统
void ManagementSystem::run() {
  bool flag = true;
  while (flag) {
    printMenu();
    cout << "请选择: " << endl;
    int choice;
    cin >> choice;
    switch (choice) {
      case 1: addStudent(); break;
      case 2: deleteStudent(); break;
      case 3: searchStudent(); break;
      case 4: modifyStudent(); break;
      case 5: sortStudentByScore(); break;
      case 6: displayAllStudent(); break;
      case 7: clean(); break;
      case 8: flag = false; cout << "退出成功" << endl; break;
      default: cout << "请输入有效的菜单选项!" << endl;
    }
  }
}

主函数

#include "ManagementSystem.h"
int main() {
  string file_path = "students.txt";
  ManagementSystem sys(file_path);
  sys.run();
  return 0;
}

运行效果

在运行程序后,会在命令行窗口中出现以下界面:

==========学生信息管理系统==========

1.添加学生信息

2.删除学生信息

3.查询学生信息

4.修改学生信息

5.按成绩排序

6.查看全部学生信息

7.清空所有学生信息

8.退出

=====================================

用户可以按照菜单选项,选择所需的操作。例如,添加学生信息:

添加学生信息:

请输入学生信息:

姓名:Alice

学号:s0001

专业:计算机

年级:大一

性别:女

成绩:98.5

写入文件成功!

再查看全部学生信息:

全部学生信息:

    姓名       学号    专业  年级  性别  成绩

   Alice     s0001   计算机   大一   女 98.5

可以看到,我们成功添加了一名学生的信息。

总结

本文介绍了基于C++的学生信息管理系统的完整代码,该程序使用了面向对象的编程思想,实现了添加、删除、查询、修改、排序、查看全部、清空所有等管理学生信息的功能。该程序具有一定的可扩展性和实用性,可以应用于学校、教育机构等需要管理学生信息的场合。

  
  

评论区

请求出错了