21xrx.com
2024-09-20 01:02:04 Friday
登录
文章检索 我的文章 写文章
C++学生信息管理系统完整代码
2023-07-07 16:11:25 深夜i     --     --
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++的学生信息管理系统的完整代码,该程序使用了面向对象的编程思想,实现了添加、删除、查询、修改、排序、查看全部、清空所有等管理学生信息的功能。该程序具有一定的可扩展性和实用性,可以应用于学校、教育机构等需要管理学生信息的场合。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复