21xrx.com
2024-11-22 08:05:30 Friday
登录
文章检索 我的文章 写文章
C++成绩管理系统的面向过程编程代码
2023-07-09 05:00:50 深夜i     --     --
C++ 成绩管理系统 面向过程 编程代码

C++是一种非常流行的编程语言,广泛应用于各个领域,而成绩管理系统也是C++常用的应用之一。下面介绍一个基于面向过程编程思想的C++成绩管理系统的代码实现。

首先,我们需要定义一个结构体来存储学生的信息,包括学号、姓名、各科成绩等。代码如下:


struct student

  int id;//学号

  string name;//姓名

  float chinese;//语文成绩

  float math;//数学成绩

  float english;//英语成绩

  float total;//总成绩

;

接下来,我们需要实现以下几个功能:

1.添加学生信息

2.显示单个学生信息

3.显示所有学生信息

4.修改学生信息

5.删除学生信息

6.按总分排名

7.按科目成绩排名

首先是添加学生信息的功能,代码如下:


void add(student s[], int &len) {

  student ss;

  cout << "请输入学号:";

  cin >> ss.id;

  cout << "请输入姓名:";

  cin >> ss.name;

  cout << "请输入语文成绩:";

  cin >> ss.chinese;

  cout << "请输入数学成绩:";

  cin >> ss.math;

  cout << "请输入英语成绩:";

  cin >> ss.english;

  ss.total = ss.chinese + ss.math + ss.english;

  s[len++] = ss;

  cout << "添加成功!" << endl;

}

其中,数组s用来存储所有学生信息,len表示学生信息的数量,每次添加完毕后,len需要加1。

接下来是显示单个学生信息的功能,代码如下:


void show(student s[], int len) {

  int id;

  cout << "请输入要查找的学生学号:";

  cin >> id;

  bool exist = false;

  for (int i = 0; i < len; i++) {

    if (s[i].id == id) {

      cout << "学号:" << s[i].id << " 姓名:" << s[i].name

         << " 语文成绩:" << s[i].chinese << " 数学成绩:" << s[i].math

         << " 英语成绩:" << s[i].english << " 总成绩:" << s[i].total << endl;

      exist = true;

      break;

    }

  }

  if (!exist)

    cout << "查无此人!" << endl;

  

}

其中,id是要查找的学生的学号,通过循环遍历数组s,查找学号等于id的学生信息,如果找到则输出学生信息,否则提示查无此人。

接下来是显示所有学生信息的功能,代码如下:


void showAll(student s[], int len) {

  if (len == 0)

    cout << "没有学生信息!" << endl;

   else {

    cout << "学号\t姓名\t语文成绩\t数学成绩\t英语成绩\t总成绩" << endl;

    for (int i = 0; i < len; i++) {

      cout << s[i].id << "\t" << s[i].name << "\t"

         << s[i].chinese << "\t\t" << s[i].math << "\t\t" << s[i].english

         << "\t\t" << s[i].total << endl;

    }

  }

}

遍历数组s,并输出所有学生信息。

接下来是修改学生信息的功能,代码如下:


void modify(student s[], int len) {

  int id;

  cout << "请输入要修改的学生学号:";

  cin >> id;

  bool exist = false;

  for (int i = 0; i < len; i++) {

    if (s[i].id == id) {

      cout << "请输入修改后的语文成绩:";

      cin >> s[i].chinese;

      cout << "请输入修改后的数学成绩:";

      cin >> s[i].math;

      cout << "请输入修改后的英语成绩:";

      cin >> s[i].english;

      s[i].total = s[i].chinese + s[i].math + s[i].english;

      cout << "修改成功!" << endl;

      exist = true;

      break;

    }

  }

  if (!exist)

    cout << "查无此人!" << endl;

  

}

根据学生的学号遍历数组s,如果找到则修改学生的成绩信息,修改后需要重新计算总成绩,并输出修改成功的提示信息,否则提示查无此人。

接下来是删除学生信息的功能,代码如下:


void del(student s[], int &len) {

  int id;

  cout << "请输入要删除的学生学号:";

  cin >> id;

  bool exist = false;

  for (int i = 0; i < len; i++) {

    if (s[i].id == id) {

      for (int j = i; j < len - 1; j++) {

        s[j] = s[j + 1];

      }

      len--;

      cout << "删除成功!" << endl;

      exist = true;

      break;

    }

  }

  if (!exist)

    cout << "查无此人!" << endl;

  

}

根据学生的学号遍历数组s,如果找到则将该学生信息从数组s中删除,数组长度减1,输出删除成功的提示信息,否则提示查无此人。

接下来是按总分排名的功能,代码如下:


void totalSort(student s[], int len) {

  for (int i = 0; i < len - 1; i++) {

    for (int j = 0; j < len - i - 1; j++) {

      if (s[j].total < s[j + 1].total) {

        swap(s[j], s[j + 1]);

      }

    }

  }

  cout << "按总分排名:" << endl;

  showAll(s, len);

}

通过冒泡排序的方式按照学生总成绩进行排名,然后输出结果。

最后是按科目成绩排名的功能,代码如下:


void subjectSort(student s[], int len) {

  int choice;

  cout << "请选择排序方式:1.语文成绩 2.数学成绩 3.英语成绩" << endl;

  cin >> choice;

  switch (choice) {

    case 1:

      for (int i = 0; i < len - 1; i++) {

        for (int j = 0; j < len - i - 1; j++) {

          if (s[j].chinese < s[j + 1].chinese) {

            swap(s[j], s[j + 1]);

          }

        }

      }

      cout << "按语文成绩排名:" << endl;

      showAll(s, len);

      break;

    case 2:

      for (int i = 0; i < len - 1; i++) {

        for (int j = 0; j < len - i - 1; j++) {

          if (s[j].math < s[j + 1].math) {

            swap(s[j], s[j + 1]);

          }

        }

      }

      cout << "按数学成绩排名:" << endl;

      showAll(s, len);

      break;

    case 3:

      for (int i = 0; i < len - 1; i++) {

        for (int j = 0; j < len - i - 1; j++) {

          if (s[j].english < s[j + 1].english) {

            swap(s[j], s[j + 1]);

          }

        }

      }

      cout << "按英语成绩排名:" << endl;

      showAll(s, len);

      break;

    default:

      cout << "无效选项!" << endl;

      break;

  }

}

首先让用户选择要进行排名的科目,然后根据用户的选择使用冒泡排序的方式按照相应的科目成绩进行排名,输出排序的结果。

上面就是一个基于面向过程编程思想的C++成绩管理系统的完整代码实现。通过该系统,我们可以方便地管理学生成绩信息,并进行各种排序查询等操作。

  
  

评论区

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