学生成绩管理系统c++
时间: 2023-11-03 14:52:45 浏览: 35
好的,学生成绩管理系统可以按照以下步骤来实现:
1. 定义学生类和课程类,包括属性和方法。
2. 定义成绩类,包括学生ID、课程ID和成绩属性。
3. 定义成绩管理类,包括添加成绩、删除成绩、修改成绩和查询成绩等方法。
4. 在程序运行时,首先读取存储在文件中的学生和课程信息,然后根据用户选择进行相应的操作,并将修改后的成绩信息写入文件中。
下面是一个简单的C++代码示例:
```
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 学生类
class Student
{
public:
int id;
string name;
int age;
};
// 课程类
class Course
{
public:
int id;
string name;
};
// 成绩类
class Grade
{
public:
int studentId;
int courseId;
float score;
};
// 成绩管理类
class GradeManager
{
public:
void addGrade(Grade grade);
void deleteGrade(int studentId, int courseId);
void modifyGrade(int studentId, int courseId, float score);
void queryGrade(int studentId, int courseId);
private:
// 存储成绩信息的容器
vector<Grade> grades;
};
void GradeManager::addGrade(Grade grade)
{
// 将成绩信息添加到容器中
grades.push_back(grade);
}
void GradeManager::deleteGrade(int studentId, int courseId)
{
// 查找需要删除的成绩信息
for (vector<Grade>::iterator it = grades.begin(); it != grades.end(); it++)
{
if (it->studentId == studentId && it->courseId == courseId)
{
grades.erase(it);
break;
}
}
}
void GradeManager::modifyGrade(int studentId, int courseId, float score)
{
// 查找需要修改的成绩信息
for (vector<Grade>::iterator it = grades.begin(); it != grades.end(); it++)
{
if (it->studentId == studentId && it->courseId == courseId)
{
it->score = score;
break;
}
}
}
void GradeManager::queryGrade(int studentId, int courseId)
{
// 查找需要查询的成绩信息
for (vector<Grade>::iterator it = grades.begin(); it != grades.end(); it++)
{
if (it->studentId == studentId && it->courseId == courseId)
{
cout << "学生ID:" << it->studentId << endl;
cout << "课程ID:" << it->courseId << endl;
cout << "成绩:" << it->score << endl;
break;
}
}
}
int main()
{
// 读取学生信息和课程信息
vector<Student> students;
vector<Course> courses;
ifstream studentFile("students.txt");
ifstream courseFile("courses.txt");
if (studentFile.is_open())
{
string line;
while (getline(studentFile, line))
{
Student student;
sscanf(line.c_str(), "%d %s %d", &student.id, &student.name[0], &student.age);
students.push_back(student);
}
studentFile.close();
}
if (courseFile.is_open())
{
string line;
while (getline(courseFile, line))
{
Course course;
sscanf(line.c_str(), "%d %s", &course.id, &course.name[0]);
courses.push_back(course);
}
courseFile.close();
}
// 进入成绩管理系统
GradeManager gradeManager;
while (true)
{
int choice;
cout << "1. 添加成绩" << endl;
cout << "2. 删除成绩" << endl;
cout << "3. 修改成绩" << endl;
cout << "4. 查询成绩" << endl;
cout << "0. 退出" << endl;
cout << "请选择操作:";
cin >> choice;
if (choice == 1)
{
int studentId, courseId;
float score;
cout << "请输入学生ID、课程ID和成绩:";
cin >> studentId >> courseId >> score;
Grade grade;
grade.studentId = studentId;
grade.courseId = courseId;
grade.score = score;
gradeManager.addGrade(grade);
}
else if (choice == 2)
{
int studentId, courseId;
cout << "请输入学生ID和课程ID:";
cin >> studentId >> courseId;
gradeManager.deleteGrade(studentId, courseId);
}
else if (choice == 3)
{
int studentId, courseId;
float score;
cout << "请输入学生ID、课程ID和新的成绩:";
cin >> studentId >> courseId >> score;
gradeManager.modifyGrade(studentId, courseId, score);
}
else if (choice == 4)
{
int studentId, courseId;
cout << "请输入学生ID和课程ID:";
cin >> studentId >> courseId;
gradeManager.queryGrade(studentId, courseId);
}
else if (choice == 0)
{
break;
}
else
{
cout << "无效的选择,请重新输入!" << endl;
}
}
// 将修改后的成绩信息写入文件中
ofstream gradeFile("grades.txt");
if (gradeFile.is_open())
{
for (vector<Grade>::iterator it = gradeManager.grades.begin(); it != gradeManager.grades.end(); it++)
{
gradeFile << it->studentId << ' ' << it->courseId << ' ' << it->score << endl;
}
gradeFile.close();
}
return 0;
}
```
以上代码仅供参考,具体实现还需根据实际情况进行调整和完善。