【简单项目实战】用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>
#include<vector>
using namespace std;
class student {   //父类
public:
  string id;
  string name;
  int chinese;
  int math;
  int english;
};
class information :public student {   //子类
public:
  vector<student>V;  //vector容器
  void showmenu();  //展示功能菜单
  void addinformation();  //录入学生信息
  void showperson();  //展示学生信息
  void searchperson();  //查找学生信息
  void alterperson();//修改学生信息
  void staticperson();  //统计学生信息
  void deleteperson(); //删除学生信息
  void emptyperson();  //清空学生信息
}; 
void information::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;
}
//父类、子类的全局声明,以便于下面使用
student s;   
information i;
void information::addinformation()
{
  cout << "请输入学号:" << endl;
  cin >> s.id;
  cout << "请输入姓名:" << endl;
  cin >> s.name;
  cout << "请输入语文成绩:" << endl;
  cin >> s.chinese;
  cout << "请输入数学成绩:" << endl;
  cin >> s.math;
  cout << "请输入英语成绩:" << endl;
  cin >> s.english;
  i.V.push_back(s);
  cout << "<<添加成功>>" << endl;
  system("pause");
  system("cls");
}
void information::showperson()
{
  vector<student>::iterator p = i.V.begin();
  while(p!=i.V.end())
  {
  cout << "学号:" << p->id<< " "
    << "姓名:" << p->name << " "
    << "语文成绩:" << p->chinese << " "
    << "数学成绩:" << p->math << " "
    << "英语成绩:" << p->english << endl;
  p++;
  }
  system("pause");
  system("cls");
}
int isexist(string id)
{
  int count = 0;
  for (vector<student>::iterator p = i.V.begin(); p != i.V.end() ; p++)
  {
  count++;
  if (p->id == id)
  {
    return count;
  }
  }
  return -1;
}
int isexist_1(string name)
{
  int count = 0;
  for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
  {
  count++;
  if (p->name==name)
  {
    return count;
  }
  }
  return -1;
}
void information::searchperson()
{
  cout << "请输入您要查找的学生:" << endl;
  cout << "如果按照学号查找输入1" << endl;
  cout << "如果按照姓名查找输入2" << endl;
  int n;cin >> n;
  if (n==1)
  {
  string id;cin >> id;
  if (isexist(id)==-1)
  {
    cout << "此人不存在!" << endl;
  }
  else
  {
    cout << "此人存在!" << endl;
    int ret = isexist(id);
    int count = 0;
    for(vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
    {
    count++;
    if (ret == count)
    {
      cout << "学号 " << p->id << "\t";
      cout << "姓名 " << p->name << "\t";
      cout << "语文成绩 " << p->chinese<< "\t";
      cout << "数学成绩 " << p->math<< "\t";
      cout << "英语成绩 " << p->english<< "\t";
      break;
    }
    }
  }
  }
  else
  {
  string name;cin >> name;
  if (isexist_1(name) == -1)
  {
    cout << "此人不存在!" << endl;
  }
  else
  {
    cout << "此人存在!" << endl;
    int ret_1 = isexist_1(name);
    int count = 0;
    for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
    {
    count++;
    if (ret_1 == count)
    {
      cout << "学号 " << p->id << "\t";
      cout << "姓名 " << p->name << "\t";
      cout << "语文成绩 " << p->chinese << "\t";
      cout << "数学成绩 " << p->math << "\t";
      cout << "英语成绩 " << p->english << "\t";
      break;
    }
    }
  }
  }
  system("pause");
  system("cls");
}
void information::alterperson()
{
  cout << "请输入您要修改的联系人:" << endl;
  string name;cin >> name;
  if (isexist_1(name) == -1)
  {
  cout << "此人不存在!" << endl;
  }
  else
  {
  cout << "此人存在!" << endl;
  int ret_2 = isexist_1(name);
  cout << "单一修改-0" << "多数修改-1" << endl;
  int sign; cin >> sign;
  {
    if (sign == 0)
    {
    cout << "学号-1" << "姓名-2" << "语文成绩-3" << "数学成绩-4" << "英语成绩-5" << endl;
    int select; cin >> select;
    if (select == 1) {
      int count = 0;
      for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
      {
      count++;
      if (ret_2 == count) {
        cin >> p->id;
        break;
      }
      }
    }
    if (select == 2) {
      int count = 0;
      for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
      {
      count++;
      if (ret_2 == count) {
        cin >> p->name;
        break;
      }
      }
    }
    if (select == 3) {
      int count = 0;
      for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
      {
      count++;
      if (ret_2 == count) {
        cin >> p->chinese;
        break;
      }
      }
    }
    if (select == 4) {
      int count = 0;
      for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
      {
      count++;
      if (ret_2 == count) {
        cin >> p->math;
        break;
      }
      }
    }
    if (select == 5) {
      int count = 0;
      for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
      {
      count++;
      if (ret_2 == count) {
        cin >> p->english;
        break;
      }
      }
    }
    }
    if (sign == 1)
    {
    int count = 0;
    for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
    {
      count++;
      if (ret_2 == count)
      {
      cout << "请输入学号:" << endl;  cin >> p->id;
      cout << "请输入姓名:" << endl;  cin >> p->name;
      cout << "请输入语文成绩:" << endl; cin >> p->chinese;
      cout << "请输入数学成绩:" << endl; cin >> p->math;
      cout << "请输入英语成绩:" << endl; cin >> p->english;
      break;
      }
    }
    }
  }
  }
  cout << "信息修改成功!" << endl;
  system("pause");
  system("cls");
}
void information::staticperson()
{
  int allsum = 0;
  for (vector<student>::iterator p=i.V.begin();p!=i.V.end();p++)
  {
  int sum = 0;
  sum = p->chinese + p->math + p->english;
  cout << "姓名:" << p->name << "语文:" << p->chinese << " " << "数学:" << p->math << " " << "英语:" << p->english << " " << "总分:" << sum << endl;
  allsum += sum;
  }
  int sum1 = 0, sum2 = 0, sum3 = 0;
  for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
  {
  sum1 += p->chinese;
  sum2 += p->math;
  sum3 += p->english;
  }
  cout << "全班语文平均分:" << sum1 / i.V.size() << endl;
  cout << "全班数学平均分:" << sum2 / i.V.size() << endl;
  cout << "全班英语平均分:" << sum3 / i.V.size() << endl;
  cout << "全班总分的平均分:" << allsum / i.V.size() << endl;
  for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
  {
  int sum = 0;
  sum = p->chinese + p->math + p->english;
  if (sum < allsum /i.V.size() )
  {
    cout << "得分小于班级总分平均分的不及格学生:" << p->id << " " << p->name << endl;
  }
  }
  system("pause");
  system("cls");
}
void information::deleteperson()
{
  cout << "请输入您要删除的学生:" << endl;
  string name;
  cin >> name;
  if (isexist_1(name) == -1) {
  cout << "查无此人!" << endl;
  }
  else {
  cout << "找到此人!" << endl;
  int ret_3 = isexist_1(name);
  int count = 0;
    for (vector<student>::iterator p = i.V.begin(); p != i.V.end(); p++)
    {
    count++;
    if (ret_3 == count)
    {
      p=i.V.erase(p);
      break;
    }
    }
  cout << "已删除此学生信息!" << endl;
  }
  system("pause");
  system("cls");
}
void information::emptyperson()
{
  i.V.clear();
  cout << "成绩表已清空!" << endl;
  system("pause");
  system("cls");
}
void text()
{
  while(1)
  {
  i.showmenu();
  int n;
  cin >> n;
  switch (n)
  {
  case 1:
    i.addinformation();
    break;
  case 2:
    i.showperson();
    break;
  case 3:
    i.searchperson();
    break;
  case 4:
    i.alterperson();
    break;
  case 5:
    i.staticperson();
    break;
  case 6:
    i.deleteperson();
    break;
  case 7:
    i.emptyperson();
    break;
  }
  }
}
int main()
{
  text();
}


目录
相关文章
|
4月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
86 0
|
2月前
|
安全 程序员 编译器
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
88 11
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
47 3
|
3月前
|
存储 安全 编译器
【C++核心】一文理解C++面向对象(超级详细!)
这篇文章详细讲解了C++面向对象的核心概念,包括类和对象、封装、继承、多态等。
28 2
|
2月前
|
存储 编译器 C语言
【C++】初识面向对象:类与对象详解
【C++】初识面向对象:类与对象详解
|
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++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
29 0
|
4月前
|
C++
使用 QML 类型系统注册 C++ 类型
使用 QML 类型系统注册 C++ 类型
69 0
|
4月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)【独一无二】
【C++】C++-学生考试题库管理系统(源码)【独一无二】
154 0