【简单项目实战】用C++实现学生成绩管理系统 | [普通实现]

简介: 用 C++设计一个程序实现学生成绩管理系统

●功能介绍


用 C++设计一个程序,能提供下列功能:


1. 录入学生成绩信息。按照学号,姓名,语文,数学,英语的格式录入学生的成绩。


2.展示目前录入学生的成绩信息。以学号,姓名,语文,数学,英语的格式按列表展示。


3.查询成绩。根据学生的学号或姓名查询学生的成绩。


4.修改。通过姓名查询找到相应的学生记录并对其进行修改。


5.统计。计算学生的总分并按顺序显示输出;统计班级学生的每门课程的平均分和全班人总分的平

均分并显示;统计个人总得分小于班级总分的学生并显示为不及格学生名单。


6.删除。删除指定学生成绩信息。


7.清空。清空学生表所有成绩信息。


●案例


1.录入5个学生的信息:


       ①1001 zhangsan 80 90 70


       ②1002 lisi  60 65 75


       ③1003 wangwu 75 85 100


       ④1004 zhaoliu 50 60 40


       ⑤1005 sunqi 70 85 95


2.展示已输入5个的学生成绩信息


3.用学号去查询zhaoliu的各科成绩


4.实现统计,查看学生成绩信息和不及格学生


5.对wangwu的语文成绩进行单科修改,修改为80(若要进行整体修改,按操作提示执行即可,这里只修改其语文成绩)


6.用姓名去查询wangwu的各科成绩


7.因为lisi的成绩录入错误,所以删除他的所有信息


8.展示目前剩余学生的成绩信息


9.操作完成清空学生成绩信息


●代码展示

#include <iostream>
#include <string>
#define max 100   //学生人数 
using namespace std;
struct person {
  string id;
  string name;
  int chinese;
  int math;
  int english;
};
struct student_information {
  struct person data[max];
  int size;
};
void addinformation(student_information* si)
{
  if (si->size == max)
  {
  cout << "学生信息表已满" << endl;
  }
  else
  {
  cout << "请输入学号:" << endl;
  string id;
  cin >> id;
  si->data[si->size].id = id;
  cout << "请输入姓名:" << endl;
  string name;
  cin >> name;
  si->data[si->size].name = name;
  cout << "请输入语文成绩:" << endl;
  int chinese;
  cin >> chinese;
  si->data[si->size].chinese = chinese;
  cout << "请输入数学成绩:" << endl;
  int math;
  cin >> math;
  si->data[si->size].math = math;
  cout << "请输入英语成绩:" << endl;
  int english;
  cin >> english;
  si->data[si->size].english = english;
  si->size++;
  cout << "<<添加成功>>" << endl;
  system("pause");
  system("cls");
  }
}
void showperson(student_information* si)
{
  if (si->size == 0) {
  cout << "当前数据为空!" << endl;
  }
  else {
  for (int i = 0; i < si->size; i++)
  {
    cout << "学号:" << si->data[i].id<<" "
    << "姓名:" << si->data[i].name<<" "
    << "语文成绩:" << si->data[i].chinese<<" "
    << "数学成绩:" << si->data[i].math<<" "
    << "英语成绩:" << si->data[i].english << endl;
  }
  system("pause");
  system("cls");
  }
}
int isexist(student_information* si, string id)
{
  for (int k = 0; k < si->size; k++)
  {
  if (si->data[k].id == id)
    return k;
  }
  return -1;
}
int isexist_1(student_information* si, string name)
{
  for (int k = 0; k < si->size; k++)
  {
  if (si->data[k].name == name)
    return k;
  }
  return -1;
}
void searchperson(student_information* si)
{
  cout << "请输入您要查找的学生:" << endl;
  cout << "如果按照学号查找输入1" << endl;
  cout << "如果按照姓名查找输入2" << endl;
  int n; cin >> n;
  string id, name;
  if (n == 1) {
  cin >> id;
  if (isexist(si, id) == -1) {
    cout << "此人不存在!" << endl;
  }
  else {
    cout << "此人存在!" << endl;
    int ret = isexist(si, id);
    {
    cout << "学号 " << si->data[ret].id << "\t";
    cout << "姓名 " << si->data[ret].name << "\t";
    cout << "语文成绩 " << si->data[ret].chinese << "\t";
    cout << "数学成绩 " << si->data[ret].math << "\t";
    cout << "英语成绩 " << si->data[ret].english << "\t";
    }
  }
  }
  else {
  cin >> name;
  if (isexist_1(si, name) == -1) {
    cout << "此人不存在!" << endl;
  }
  else {
    cout << "此人存在!" << endl;
    int ret_1 = isexist_1(si, name);
    {
    cout << "学号 " << si->data[ret_1].id << "\t";
    cout << "姓名 " << si->data[ret_1].name << "\t";
    cout << "语文成绩 " << si->data[ret_1].chinese << "\t";
    cout << "数学成绩 " << si->data[ret_1].math << "\t";
    cout << "英语成绩 " << si->data[ret_1].english << "\t";
    }
  }
  }
  system("pause");
  system("cls");
}
void alterperson(student_information* si)
{
  cout << "请输入您要修改的联系人:" << endl;
  string name;
  cin >> name;
  if (isexist_1(si, name) == -1)
  {
  cout << "此人不存在!" << endl;
  }
  else
  {
  cout << "此人存在!" << endl;
  int ret_2 = isexist_1(si,name);
  cout << "单一修改-0" << "多数修改-1" << endl;
  int sign; cin >> sign;
  {
    if (sign == 0)
    {
    cout << "学号-1" << "姓名-2" << "语文成绩-3" << "数学成绩-4" << "英语成绩-5" << endl;
    int select_1; cin >> select_1;
    if (select_1 == 1) {
      string id; cin >> id;
      si->data[ret_2].id = id;
    }
    if (select_1 == 2) {
      string name; cin >> name;
      si->data[ret_2].name = name;
    }
    if (select_1 == 3) {
      int chinese; cin >> chinese;
      si->data[ret_2].chinese = chinese;
    }
    if (select_1 == 4) {
      int math; cin >> math;
      si->data[ret_2].math = math;
    }
    if (select_1 == 5) {
      int english; cin >> english;
      si->data[ret_2].english = english;
    }
    }
  }
  if (sign == 1)
  {
    cout << "请输入学号:" << endl;
    string id; cin >> id;
    si->data[ret_2].id = id;
    cout << "请输入姓名:" << endl;
    string name; cin >> name;
    si->data[ret_2].name = name;
    cout << "请输入语文成绩:" << endl;
    int chinese; cin >> chinese;
    si->data[ret_2].chinese = chinese;
    cout << "请输入数学成绩:" << endl;
    int math; cin >> math;
    si->data[ret_2].math = math;
    cout << "请输入英语成绩:" << endl;
    int english; cin >> english;
    si->data[ret_2].english = english;
  }
  }
  cout << "信息修改成功!" << endl;
  system("pause");
  system("cls");
}
void staticperson(student_information* si)
{
  int allsum = 0;
  for (int i = 0; i < si->size; i++)
  {
  int sum = 0;
  sum = si->data[i].chinese + si->data[i].math + si->data[i].english;
  cout << "姓名:" << si->data[i].name << "语文:" << si->data[i].chinese << " " << "数学:" << si->data[i].math << " " << "英语:" << si->data[i].english << " " << "总分:" << sum << endl;
  allsum += sum;
  }
  int sum1 = 0, sum2 = 0, sum3 = 0;
  for (int i = 0; i < si->size; i++)
  {
  sum1 += si->data[i].chinese;
  sum2 += si->data[i].math;
  sum3 += si->data[i].english;
  }
  cout << "全班语文平均分:" << sum1 / si->size << endl;
  cout << "全班数学平均分:" << sum2 / si->size << endl;
  cout << "全班英语平均分:" << sum3 / si->size << endl;
  cout << "全班总分的平均分:" << allsum / si->size << endl;
  for (int i = 0; i < si->size; i++)
  {
  int sum = 0;
  sum = si->data[i].chinese + si->data[i].math + si->data[i].english;
  if (sum < allsum/si->size)
  {
    cout << "得分小于班级总分平均分的不及格学生:" << si->data[i].id << " " << si->data[i].name << endl;
  }
  }
  system("pause");
  system("cls");
}
void deleteperson(student_information* si)
{
  cout << "请输入您要删除的学生:" << endl;
  string name;
  cin >> name;
  if (isexist_1(si, name) == -1) {
    cout << "查无此人!" << endl;
  }
  else {
    cout << "找到此人!" << endl;
    int ret = isexist_1(si, name);
    for (int l = ret; l < si->size; l++)
    {
      si->data[l].id = si->data[l + 1].id;
      si->data[l].name = si->data[l + 1].name;
      si->data[l].chinese = si->data[l + 1].chinese;
      si->data[l].math = si->data[l + 1].math;
      si->data[l].english = si->data[l + 1].english;
    }//abs->arrar[l]=abs->array[l+1];
    si->size--;
    cout << "已删除此学生信息!" << endl;
  }
  system("pause");
  system("cls");
}
void emptyperson(student_information* si)
{
  si->size = 0;
  cout << "成绩表已清空!" << endl;
  system("pause");
  system("cls");
}
void showmenu()
{
  cout << "*************************" << endl;
  cout << "*****1:录入学生信息*****" << endl;
  cout << "*****2:展示学生信息******" << endl;
  cout << "*****3:查找学生信息******" << endl;
  cout << "*****4:修改学生信息******" << endl;
  cout << "*****5:统计学生信息******" << endl;
  cout << "*****6:删除学生信息******" << endl;
  cout << "*****7:清空学生信息******" << endl;
  cout << "*************************" << endl;
}
void text()
{
  student_information SI;
  SI.size = 0;
  while (1)
  {
  showmenu();
  int n; cin >> n;
  switch (n)
  {
  case 1:
    addinformation(&SI);
    break;
  case 2:
    showperson(&SI);
    break;
  case 3:
    searchperson(&SI);
    break;
  case 4:
    alterperson(&SI);
    break;
  case 5:
    staticperson(&SI);
    break;
  case 6:
    deleteperson(&SI);
    break;
  case 7:
    emptyperson(&SI);
    break;
  }
  }
}
int main()
{
  text();
}


●结果展示


1.

470386f00d401399ef7e0a95a8df7579_3067451a8241462d9073950e027d49fb.png

cca5ebffa43ba3f9f3a13213ccfaed8d_9aecd9fb0f9a49f8ae91ab084c85b857.png

23f9c29325cd791c5c4f72bd0ed1df9d_447add7488384154871ff8dcbb8b1209.png

7c7ba8f729b764f2b4535b780b3d01e9_4d59e4f2dab44d38aebfbff18ded2127.png

d0418df289091ee4efedc75ad8e4399f_ee0451dab48e484a938b92f14156efdd.png

2.

cb35ffb745a5c323b6e2ee89d28ba92d_8c6f1447043d47f49ba3d9513b83ad64.png

3.

e8158f25ca3c4edc923a5be2b15f3cb3_e8794bc3ea14449787c649e3d703b800.png

4.

7bf1aa822553f20cebe061021872568c_3f814903f8294c97b8680d6d12a87888.png

5.

b471d939539ce3f40638bb341e821314_a9f341d403b745ccb53b133567bafde3.png

6.

eb9dc0d117ace56c635c912b17b4663f_323789665e10484bab3ee58750d67c84.png

7.

956e39455bf1249d5b0132de86880106_a27f08730fe24bb6a0833ca0ae455a93.png

8.

9b86086b5391cfdb2833a5ff821c7227_470c6281dacb497db39972bee9fd6a53.png

9.

aee1b67ddc7f157c799a061e79e4cd0d_8b481dd6376f469fab31a18d4a09c105.png

目录
相关文章
|
4月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
86 0
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
47 3
|
4月前
|
存储 C++
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
|
4月前
|
Rust 安全 C++
系统编程的未来之战:Rust能否撼动C++的王座?
【8月更文挑战第31天】Rust与C++:现代系统编程的新选择。C++长期主导系统编程,但内存安全问题频发。Rust以安全性为核心,通过所有权和生命周期概念避免内存泄漏和野指针等问题。Rust在编译时确保内存安全,简化并发编程,其生态系统虽不及C++成熟,但发展迅速,为现代系统编程提供了新选择。未来有望看到更多Rust驱动的系统级应用。
68 1
|
4月前
|
存储 算法 数据可视化
【C++】C++旅游管理系统(源码+论文)【独一无二】
【C++】C++旅游管理系统(源码+论文)【独一无二】
|
4月前
|
存储 数据挖掘 C语言
【C/C++】C/C++车辆交通违章管理系统(源码+数据文件)【独一无二】
【C/C++】C/C++车辆交通违章管理系统(源码+数据文件)【独一无二】
|
4月前
|
搜索推荐 数据处理 文件存储
【C++】C++ 培训报名系统 (源码+论文)【独一无二】
【C++】C++ 培训报名系统 (源码+论文)【独一无二】
|
4月前
|
存储 C++
【C++】C++公司人事管理系统(源码)【独一无二】
【C++】C++公司人事管理系统(源码)【独一无二】
122 2
|
4月前
|
存储 数据可视化 C++
【C++】C++-机房收费管理系统(源码+注释)【独一无二】
【C++】C++-机房收费管理系统(源码+注释)【独一无二】
|
4月前
|
数据可视化 C++
【C++】C++商店销售管理系统(源码+论文)【独一无二】
【C++】C++商店销售管理系统(源码+论文)【独一无二】