C++实现简单学生成绩管理系统
系统概述
学生成绩管理系统是一个常见的应用程序,用于管理学生的各类信息,例如学生基本资料,选修课程等信息。本文将介绍如何使用C++实现一个简单的学生成绩管理系统。
系统需求
学生成绩管理系统需要实现的功能如下:
- 增加学生信息,包含学号、姓名及出生年月日
- 增加学生课程成绩信息,包含课程编号、课程名称及成绩
- 修改学生信息及学生课程成绩信息
- 删除学生学科成绩信息
- 查询学生信息及学生成绩
系统设计
数据结构
为了满足系统需求,我们需要定义若干数据结构。
Student
结构体,包含学生的学号、姓名及出生年月日等信息。Course
结构体,包含课程的编号、课程名称及成绩等信息。StudentInfo
结构体,包含了学生的个人信息(Student
)及学生的课程成绩信息(Course
)。
具体定义及代码实现如下:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 定义学生信息结构体
struct Student {
string id;
string name;
int year;
int month;
int day;
};
// 定义课程成绩结构体
struct Course {
string id;
string name;
double score;
};
// 定义学生信息结构体,包含个人信息和学科成绩
struct StudentInfo {
Student student;
vector<Course> courses;
};
对于多个学生及学生的课程成绩,我们可以使用 vector
容器来存储。因此,我们还需要声明一个保存学生信息的 vector
,定义如下:
vector<StudentInfo> students;
系统功能函数
接下来,我们需要实现若干系统功能函数,包括添加学生信息,添加学生课程成绩,修改学生信息及学生课程成绩,删除学生学科成绩信息以及查询学生信息及学生成绩。具体实现如下:
添加学生信息
添加学生信息,需要用户输入学号、姓名及出生年月日等信息,代码实现如下:
void addStudent() {
// 输入学生信息
cout << "请输入学生信息:" << endl;
Student student;
cout << "学号:";
cin >> student.id;
cout << "姓名:";
cin >> student.name;
cout << "出生年月日(用空格分隔):";
cin >> student.year >> student.month >> student.day;
// 将学生信息添加到学生信息列表中
StudentInfo studentInfo;
studentInfo.student = student;
students.push_back(studentInfo);
cout << "添加成功!" << endl;
}
添加学生课程成绩
添加学生课程成绩,需要用户输入课程编号、课程名称及成绩等信息。在输入课程成绩前,需要先输入学生的学号,找到对应学生信息后再添加课程成绩。代码实现如下:
void addCourse() {
// 输入学号
string id;
cout << "请输入学生学号:";
cin >> id;
// 查找学生信息
auto it = find_if(students.begin(), students.end(),
[id](const StudentInfo& s){return s.student.id == id;});
if (it == students.end()) {
cout << "学生不存在!" << endl;
return;
}
// 输入课程成绩信息
Course course;
cout << "请输入课程成绩信息:" << endl;
cout << "课程编号:";
cin >> course.id;
cout << "课程名称:";
cin >> course.name;
cout << "成绩:";
cin >> course.score;
// 添加课程信息
it->courses.push_back(course);
cout << "添加成功!" << endl;
}
修改学生信息及学生课程成绩
修改学生信息及学生课程成绩,需要先输入学生学号,查找到对应的学生信息,然后让用户输入修改后的信息。修改学生课程成绩,还需要输入要修改的成绩的课程编号。代码实现如下:
void modifyStudent() {
// 输入学号
string id;
cout << "请输入学生学号:";
cin >> id;
// 查找学生信息
auto it = find_if(students.begin(), students.end(),
[id](const StudentInfo& s){return s.student.id == id;});
if (it == students.end()) {
cout << "学生不存在!" << endl;
return;
}
// 输入修改后的信息
cout << "请输入修改后的信息:" << endl;
cout << "学号:";
cin >> it->student.id;
cout << "姓名:";
cin >> it->student.name;
cout << "出生年月日(用空格分隔):";
cin >> it->student.year >> it->student.month >> it->student.day;
cout << "修改成功!" << endl;
// 修改课程成绩
cout << "是否要修改课程成绩?(Y/N)" << endl;
string choice;
cin >> choice;
if (choice == "Y" || choice == "y") {
// 输入课程编号
string courseId;
cout << "请输入要修改的课程编号:";
cin >> courseId;
// 查找课程成绩
auto courseIt = find_if(it->courses.begin(), it->courses.end(),
[courseId](const Course& c){return c.id == courseId;});
if (courseIt == it->courses.end()) {
cout << "课程成绩不存在!" << endl;
return;
}
// 输入修改后的成绩
cout << "请输入修改后的成绩:";
cin >> courseIt->score;
cout << "修改成功!" << endl;
}
}
删除学生学科成绩信息
删除学生学科成绩信息,需要先输入学生学号,查找到对应的学生信息,再根据课程编号删除对应的课程成绩。代码实现如下:
void removeCourse() {
// 输入学号
string id;
cout << "请输入学生学号:";
cin >> id;
// 查找学生信息
auto it = find_if(students.begin(), students.end(),
[id](const StudentInfo& s){return s.student.id == id;});
if (it == students.end()) {
cout << "学生不存在!" << endl;
return;
}
// 输入课程编号
string courseId;
cout << "请输入要删除的课程编号:";
cin >> courseId;
// 查找课程成绩
auto courseIt = find_if(it->courses.begin(), it->courses.end(),
[courseId](const Course& c){return c.id == courseId;});
if (courseIt == it->courses.end()) {
cout << "课程成绩不存在!" << endl;
return;
}
// 删除课程成绩
it->courses.erase(courseIt);
cout << "删除成功!" << endl;
}
查询学生信息及学生成绩
查询学生信息及学生成绩,需要先输入学生学号,查找到对应的学生信息,然后输出学生个人信息及学生课程成绩信息。代码实现如下:
void queryStudent() {
// 输入学号
string id;
cout << "请输入学生学号:";
cin >> id;
// 查找学生信息
auto it = find_if(students.begin(), students.end(),
[id](const StudentInfo& s){return s.student.id == id;});
if (it == students.end()) {
cout << "学生不存在!" << endl;
return;
}
// 输出学生信息
cout << "学号:" << it->student.id << endl;
cout << "姓名:" << it->student.name << endl;
cout << "出生日期:" << it->student.year << "年"
<< it->student.month << "月" << it->student.day << "日" << endl;
// 输出课程成绩
if (it->courses.empty()) {
cout << "无成绩记录!" << endl;
return;
}
cout << "课程成绩:" << endl;
for (const auto& course : it->courses) {
cout << course.id << " " << course.name << " " << course.score << endl;
}
}
示例说明
下面给出两个示例,展示如何使用学生成绩管理系统实现学生信息及课程成绩的管理。
示例一
假设有两个学生,分别为“1001 张三 1990 1 1”和“1002 李四 1991 2 2”,现在需要录入这两个学生的信息及课程成绩,具体操作如下:
请输入操作代码:1
请输入学生信息:
学号:1001
姓名:张三
出生年月日(用空格分隔):1990 1 1
添加成功!
请输入学生信息:
学号:1002
姓名:李四
出生年月日(用空格分隔):1991 2 2
添加成功!
请输入操作代码:2
请输入学生学号:1001
请输入课程成绩信息:
课程编号:001
课程名称:数学
成绩:90
添加成功!
请输入学生学号:1001
请输入课程成绩信息:
课程编号:002
课程名称:英语
成绩:85
添加成功!
请输入学生学号:1002
请输入课程成绩信息:
课程编号:001
课程名称:数学
成绩:92
添加成功!
请输入操作代码:5
请输入学生学号:1001
学号:1001
姓名:张三
出生日期:1990年1月1日
课程成绩:
001 数学 90
002 英语 85
请输入操作代码:5
请输入学生学号:1002
学号:1002
姓名:李四
出生日期:1991年2月2日
课程成绩:
001 数学 92
示例二
假设学生“1001 张三 1990 1 1”已经有了一门成绩“001 数学 90”,现在需要修改张三的个人信息及“001 数学”课程的成绩为95分,具体操作如下:
请输入操作代码:3
请输入学生学号:1001
请输入修改后的信息:
学号:1003
姓名:王五
出生年月日(用空格分隔):1992 3 3
修改成功!
是否要修改课程成绩?(Y/N)
Y
请输入要修改的课程编号:001
请输入修改后的成绩:95
修改成功!
请输入操作代码:5
请输入学生学号:1003
学号:1003
姓名:王五
出生日期:1992年3月3日
课程成绩:
001 数学 95
总结
使用C++实现简单的学生成绩管理系统,需要按照系统需求定义合适的数据结构,然后增加、修改、删除、查询学生信息及课程成绩时,根据需求编写对应的函数。对于函数的具体实现,需要注意输入输出、错误处理、参数传递等方面的问题。通过本文的介绍,相信大家能够掌握使用C++实现简单学生成绩管理系统的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现简单学生成绩管理系统 - Python技术站