用visualc++2010做一个学生成绩管理系统,功能包含添加学生成绩,删除学生成绩,查询学生成绩,修改学生成绩,按成绩平均分大到小排序,最后存档存档
时间: 2023-06-18 17:03:46 浏览: 227
好的,下面是一个简单的学生成绩管理系统的实现,参考以下代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using std;
// 定义学生成绩结构体
struct Student {
string name;
int math;
int english;
int computer;
int total;
double avg;
};
// 添加学生信息
void addStudent(vector<Student>& students) {
Student s;
cout << "请输入学生姓名:";
cin >> s.name;
cout << "请输入学生数学成绩:";
cin >> s.math;
cout << "请输入学生英语成绩:";
cin >> s.english;
cout << "请输入学生计算机成绩:";
cin >> s.computer;
s.total = s.math + s.english + s.computer;
s.avg = s.total / 3.0;
students.push_back(s);
cout << "添加成功!" << endl;
}
// 删除学生信息
void deleteStudent(vector<Student>& students) {
string name;
cout << "请输入要删除的学生姓名:";
cin >> name;
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
if (it->name == name) {
students.erase(it);
cout << "删除成功!" << endl;
return;
}
}
cout << "找不到该学生!" << endl;
}
// 查询学生信息
void queryStudent(vector<Student>& students) {
string name;
cout << "请输入要查询的学生姓名:";
cin >> name;
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
if (it->name == name) {
cout << "姓名:" << it->name << endl;
cout << "数学成绩:" << it->math << endl;
cout << "英语成绩:" << it->english << endl;
cout << "计算机成绩:" << it->computer << endl;
cout << "总分:" << it->total << endl;
cout << "平均分:" << it->avg << endl;
return;
}
}
cout << "找不到该学生!" << endl;
}
// 修改学生信息
void modifyStudent(vector<Student>& students) {
string name;
cout << "请输入要修改的学生姓名:";
cin >> name;
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
if (it->name == name) {
cout << "请输入该学生新的数学成绩:";
cin >> it->math;
cout << "请输入该学生新的英语成绩:";
cin >> it->english;
cout << "请输入该学生新的计算机成绩:";
cin >> it->computer;
it->total = it->math + it->english + it->computer;
it->avg = it->total / 3.0;
cout << "修改成功!" << endl;
return;
}
}
cout << "找不到该学生!" << endl;
}
// 按成绩平均分大到小排序
bool cmp(const Student& s1, const Student& s2) {
return s1.avg > s2.avg;
}
// 显示所有学生信息
void showAllStudents(vector<Student>& students) {
if (students.empty()) {
cout << "暂无学生信息!" << endl;
return;
}
sort(students.begin(), students.end(), cmp);
cout << "姓名\t数学\t英语\t计算机\t总分\t平均分" << endl;
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
cout << it->name << "\t" << it->math << "\t" << it->english << "\t" << it->computer << "\t" << it->total << "\t" << it->avg << endl;
}
}
// 存档
void saveData(vector<Student>& students) {
ofstream ofs("data.txt");
if (!ofs) {
cout << "文件打开失败!" << endl;
return;
}
for (vector<Student>::iterator it = students.begin(); it != students.end(); it++) {
ofs << it->name << " " << it->math << " " << it->english << " " << it->computer << endl;
}
ofs.close();
cout << "存档成功!" << endl;
}
// 读档
void loadData(vector<Student>& students) {
ifstream ifs("data.txt");
if (!ifs) {
cout << "文件打开失败!" << endl;
return;
}
students.clear();
string name;
int math, english, computer;
while (ifs >> name >> math >> english >> computer) {
Student s;
s.name = name;
s.math = math;
s.english = english;
s.computer = computer;
s.total = s.math + s.english + s.computer;
s.avg = s.total / 3.0;
students.push_back(s);
}
ifs.close();
cout << "读档成功!" << endl;
}
int main() {
vector<Student> students;
int choice;
loadData(students);
while (true) {
cout << "====================================" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 查询学生信息" << endl;
cout << "4. 修改学生信息" << endl;
cout << "5. 按成绩平均分大到小排序" << endl;
cout << "6. 显示所有学生信息" << endl;
cout << "7. 存档" << endl;
cout << "0. 退出" << endl;
cout << "====================================" << endl;
cout << "请选择操作:";
cin >> choice;
switch (choice) {
case 1:
addStudent(students);
break;
case 2:
deleteStudent(students);
break;
case 3:
queryStudent(students);
break;
case 4:
modifyStudent(students);
break;
case 5:
showAllStudents(students);
break;
case 6:
showAllStudents(students);
break;
case 7:
saveData(students);
break;
case 0:
cout << "谢谢使用!" << endl;
return 0;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
这个程序包含了添加学生成绩、删除学生成绩、查询学生成绩、修改学生成绩、按成绩平均分大到小排序以及最后存档的功能。你可以根据自己的需要进行修改和完善。同时,你需要自己在 Visual Studio 中创建一个工程,并把上述代码复制到工程中,然后进行编译和运行。如果需要存档,程序会在当前目录下创建一个名为 data.txt 的文件。