帮我用c++写一个学生成绩管理系统,系统应具有:数据维护(数据录入、添加、修改、删除)、数据查询 (可按学号、姓名、性别、民族、年龄、地址、各门课程成绩等进行查询),需要采用面向对象程序设计方法和C++程序设计语言,利用封装、继承和多态机制、设计并实现一个功能完整的软件系统
时间: 2023-10-20 20:24:31 浏览: 133
c++面向对象课程设计报告 (学生成绩管理系统).pdf
5星 · 资源好评率100%
好的,下面是一个简单的学生成绩管理系统的C++代码,主要包含了学生类和成绩类:
```c++
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
// 学生类
class Student {
public:
Student(string id, string name, string gender, int age, string address) :
id_(id), name_(name), gender_(gender), age_(age), address_(address) {}
string get_id() const { return id_; }
string get_name() const { return name_; }
string get_gender() const { return gender_; }
int get_age() const { return age_; }
string get_address() const { return address_; }
private:
string id_; // 学号
string name_; // 姓名
string gender_; // 性别
int age_; // 年龄
string address_; // 地址
};
// 成绩类
class Score {
public:
Score(string id, double chinese, double math, double english) :
id_(id), chinese_(chinese), math_(math), english_(english) {}
string get_id() const { return id_; }
double get_chinese() const { return chinese_; }
double get_math() const { return math_; }
double get_english() const { return english_; }
private:
string id_; // 学号
double chinese_; // 语文成绩
double math_; // 数学成绩
double english_; // 英语成绩
};
// 学生管理类
class StudentManager {
public:
void add_student(const Student& student) { students_.push_back(student); }
void remove_student(const string& id) {
students_.erase(remove_if(students_.begin(), students_.end(), [&](const Student& student) { return student.get_id() == id; }), students_.end());
}
void modify_student(const string& id, const string& name, const string& gender, int age, const string& address) {
for (auto& student : students_) {
if (student.get_id() == id) {
student = Student(id, name, gender, age, address);
break;
}
}
}
vector<Student> search_by_id(const string& id) const {
vector<Student> result;
for (const auto& student : students_) {
if (student.get_id() == id) {
result.push_back(student);
}
}
return result;
}
vector<Student> search_by_name(const string& name) const {
vector<Student> result;
for (const auto& student : students_) {
if (student.get_name() == name) {
result.push_back(student);
}
}
return result;
}
// 可以按照其他条件进行查询
private:
vector<Student> students_; // 学生列表
};
// 成绩管理类
class ScoreManager {
public:
void add_score(const Score& score) { scores_.push_back(score); }
void remove_score(const string& id) {
scores_.erase(remove_if(scores_.begin(), scores_.end(), [&](const Score& score) { return score.get_id() == id; }), scores_.end());
}
vector<Score> search_by_id(const string& id) const {
vector<Score> result;
for (const auto& score : scores_) {
if (score.get_id() == id) {
result.push_back(score);
}
}
return result;
}
// 可以按照其他条件进行查询
private:
vector<Score> scores_; // 成绩列表
};
int main() {
StudentManager student_manager;
ScoreManager score_manager;
// 添加学生和成绩
student_manager.add_student(Student("001", "Tom", "Male", 18, "Beijing"));
score_manager.add_score(Score("001", 90, 85, 95));
// 查询学生和成绩
auto students = student_manager.search_by_id("001");
for (const auto& student : students) {
cout << student.get_name() << endl;
}
auto scores = score_manager.search_by_id("001");
for (const auto& score : scores) {
cout << score.get_chinese() << " " << score.get_math() << " " << score.get_english() << endl;
}
// 删除学生和成绩
student_manager.remove_student("001");
score_manager.remove_score("001");
// 修改学生信息
student_manager.modify_student("001", "Tommy", "Male", 19, "Shanghai");
return 0;
}
```
这个简单的学生成绩管理系统包含了学生类和成绩类,以及学生管理类和成绩管理类。你可以根据自己的需要进行修改和扩展。
阅读全文