21xrx.com
2025-03-20 05:47:07 Thursday
文章检索 我的文章 写文章
使用C++编写学生成绩管理系统
2023-06-23 21:04:44 深夜i     14     0
C++ 学生成绩管理 编程 系统开发 数据处理

学生成绩管理系统是一个非常实用的工具,可以帮助学校和老师更好地管理和统计学生的成绩。而使用C++编写学生成绩管理系统,则可以让此系统更加高效、稳定和易于维护。本篇文章将介绍如何使用C++编写一个简单的学生成绩管理系统。

1.需求分析

在编写任何一个软件之前,首先需要了解用户需求和功能要求。对于一个学生成绩管理系统来说,一般需要具备以下功能:

(1)录入学生基本信息和成绩

(2)查询学生的成绩信息

(3)修改学生的成绩信息

(4)删除学生的成绩信息

(5)统计某一科目的平均成绩、最高成绩、最低成绩等

(6)统计某位学生的总成绩和平均成绩

2.概要设计

在确定了需求之后,我们需要进行概要设计,也就是确定程序的主要框架和类的设计。对于一个简单的学生成绩管理系统来说,我们可以设计以下类:

(1)Student类,用于描述学生的基本信息和成绩信息;

(2)Manage类,用于管理学生信息,可以实现录入、查询、修改、删除和统计等功能。

3.详细设计

在确定了类的设计之后,我们需要对具体的类进行详细的设计。以Student类为例,我们可以设计如下:

class Student {
  private:
    int studentId; //学号
    string name; //姓名
    int mathScore; //数学成绩
    int englishScore; //英语成绩
    int chineseScore; //语文成绩
  public:
    //构造函数
    Student(int id, string nm, int math, int eng, int chin):
      studentId(id), name(nm), mathScore(math), englishScore(eng), chineseScore(chin) {};
    
    //获取学生基本信息和成绩信息
    void getInfo();
    //修改学生某一科目的成绩
    void updateScore(int subject, int score);
    //获取学生某一科目的成绩
    int getScore(int subject);
    //计算学生总成绩
    int getTotalScore();
    //计算学生平均成绩
    float getAverageScore();
};

对于Manage类,我们可以设计如下:

class Manage {
  private:
    vector<Student>students; //用于存储学生信息
  public:
    //录入学生信息
    void insertStudent(int id, string name, int math, int eng, int chin);
    //查询学生信息
    void searchStudent(int id);
    //修改学生信息
    void updateStudent(int id, int subject, int score);
    //删除学生信息
    void deleteStudent(int id);
    //统计某一科目的平均成绩、最高成绩、最低成绩等
    void subjectStatistics(int subject);
    //统计某位学生的总成绩和平均成绩
    void studentStatistics(int id);
};

4.编码实现

在进行完详细设计之后,我们就可以开始编码实现了。这里给出一个简单的编码示例,供大家参考:

#include<iostream>
#include<vector>
using namespace std;
class Student {
  private:
    int studentId;
    string name;
    int mathScore;
    int englishScore;
    int chineseScore;
  public:
    //构造函数
    Student(int id, string nm, int math, int eng, int chin):
      studentId(id), name(nm), mathScore(math), englishScore(eng), chineseScore(chin) {};
    
    //获取学生基本信息和成绩信息
    void getInfo()
      cout << "学号:" << studentId << endl;
      cout << "姓名:" << name << endl;
      cout << "数学成绩:" << mathScore << endl;
      cout << "英语成绩:" << englishScore << endl;
      cout << "语文成绩:" << chineseScore << endl;
    
    //修改学生某一科目的成绩
    void updateScore(int subject, int score) {
      switch (subject)
        case 1:
          mathScore = score;
          break;
        case 2:
          englishScore = score;
          break;
        case 3:
          chineseScore = score;
          break;
        default:
          cout << "输入科目无效!" << endl;
      
    }
    //获取学生某一科目的成绩
    int getScore(int subject) {
      switch (subject)
        case 1:
          return mathScore;
        case 2:
          return englishScore;
        case 3:
          return chineseScore;
        default:
          cout << "输入科目无效!" << endl;
          return -1;
      
    }
    //计算学生总成绩
    int getTotalScore() {
      return mathScore + englishScore + chineseScore;
    }
    //计算学生平均成绩
    float getAverageScore() {
      return (mathScore + englishScore + chineseScore) / 3.0;
    }
};
class Manage {
  private:
    vector<Student>students;
  public:
    //录入学生信息
    void insertStudent(int id, string name, int math, int eng, int chin) {
      students.push_back(Student(id, name, math, eng, chin));
    }
    //查询学生信息
    void searchStudent(int id) {
      for (unsigned int i = 0; i < students.size(); i++) {
        if (students[i].getStudentId() == id) {
          students[i].getInfo();
          return;
        }
      }
      cout << "该学生不存在!" << endl;
    }
    //修改学生信息
    void updateStudent(int id, int subject, int score) {
      for (unsigned int i = 0; i < students.size(); i++) {
        if (students[i].getStudentId() == id) {
          students[i].updateScore(subject, score);
          students[i].getInfo();
          return;
        }
      }
      cout << "该学生不存在!" << endl;
    }
    //删除学生信息
    void deleteStudent(int id) {
      for (unsigned int i = 0; i < students.size(); i++) {
        if (students[i].getStudentId() == id) {
          students.erase(students.begin() + i);
          cout << "删除成功!" << endl;
          return;
        }
      }
      cout << "该学生不存在!" << endl;
    }
    //统计某一科目的平均成绩、最高成绩、最低成绩等
    void subjectStatistics(int subject) {
      int sum = 0;
      int maxScore = INT_MIN;
      int minScore = INT_MAX;
      float avgScore = 0.0;
      for (unsigned int i = 0; i < students.size(); i++) {
        int score = students[i].getScore(subject);
        sum += score;
        if (score > maxScore)
          maxScore = score;
        
        if (score < minScore)
          minScore = score;
        
      }
      avgScore = sum / float(students.size());
      cout << "平均成绩:" << avgScore << " 最高成绩:" << maxScore << " 最低成绩:" << minScore << endl;
    }
    //统计某位学生的总成绩和平均成绩
    void studentStatistics(int id) {
      for (unsigned int i = 0; i < students.size(); i++) {
        if (students[i].getStudentId() == id) {
          int totalScore = students[i].getTotalScore();
          float avgScore = students[i].getAverageScore();
          cout << "学生总成绩:" << totalScore << " 平均成绩:" << avgScore << endl;
          return;
        }
      }
      cout << "该学生不存在!" << endl;
    }
};
int main() {
  Manage manager;
  //录入学生信息
  manager.insertStudent(1001, "张三", 90, 80, 85);
  manager.insertStudent(1002, "李四", 75, 70, 80);
  manager.insertStudent(1003, "王五", 85, 90, 95);
  //查询学生信息
  manager.searchStudent(1001);
  //修改学生信息
  manager.updateStudent(1001, 1, 95);
  //删除学生信息
  manager.deleteStudent(1002);
  //统计某一科目的平均成绩、最高成绩、最低成绩等
  manager.subjectStatistics(1);
  //统计某位学生的总成绩和平均成绩
  manager.studentStatistics(1003);
  return 0;
}

如上述代码所示,我们通过定义两个类Student和Manage来实现对学生成绩的管理。通过此程序,我们可以方便地实现录入、查询、修改、删除和统计等功能,可以大大提高学生成绩管理的效率和精确度。

综上所述,使用C++编写学生成绩管理系统,可以使得此系统更加高效、稳定和易于维护。通过此系统,学校和老师可以更加方便地管理学生成绩,及时发现和解决问题,帮助学生更好地提高学习成绩。

  
  

评论区