21xrx.com
2024-12-23 01:07:31 Monday
登录
文章检索 我的文章 写文章
使用C++编写学生成绩管理系统
2023-06-23 21:04:44 深夜i     --     --
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++编写学生成绩管理系统,可以使得此系统更加高效、稳定和易于维护。通过此系统,学校和老师可以更加方便地管理学生成绩,及时发现和解决问题,帮助学生更好地提高学习成绩。

  
  

评论区

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