c++写: 本系统主要应用于学校学生管理,总体任务是实现学生管理的系统化、规范化和自动化,其主要任务是对学生的基本信息进行日常管理,如录入、显示、插入、删除、查询、排序等功能,针对这些要求设计了学生管理系统。其主要功能要求如下:
学生登录
在学生管理系统中输入正确的账户与密码实现用户的登录效果 。
注意: 用户名与密码最多只能输错三次,如输错三次,则程序结束。
目录模块
目录模块包含7个功能菜单。
目录选择模块
根据输入的数字选择对应的功能需求,如输入1,则表示录入单个学生信息;2表示显示所有学生信息;3……。录入学生信息模块
输入1录入学生的学号、姓名、3门成绩并对学号,姓名进行判断是否出现重复值及3门成绩范围是否在0-100之间。
显示所有学生信息模块
输入2输出录入的所有学生信息并显示。
学生信息排序模块
输入3输出按照平均成绩降序排序功能,排序完成后并显示排序后的学生信息。并让程序暂停。
插入学生信息模块
输入4完成插入学生信息功能,调用排序函数,按照平均成绩降序排序显示,并让程序暂停。
删除学生信息模块
输入5完成删除单个学生信息功能,按照学号删除,如果学号不存在,给出相应的提示,如果存在,询问是否确定删除。
查找学生信息模块
输入6完成查找学生信息功能,按照学号查找,如果学号不存在,给出相应的提示,如果存在,显示该学生信息。并让程序暂停
退出系统模块
输入7直接退出程序,并提示“程序结束. 写完整哦 数据使用表格显示 数据保存在stu.txt 学生
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <iomanip>
using namespace std;
/*完整代码 联系博主哦:微信:lxt123lxp456*/
vector<Student> students;
void loadStudentData() {
ifstream inFile("stu.txt");
if (!inFile) {
cout << "Error: Unable to open file." << endl;
return;
}
students.clear();
string studentId, name;
double score1, score2, score3;
while (inFile >> studentId >> name >> score1 >> score2 >> score3) {
Student student;
student.studentId = studentId;
student.name = name;
student.score1 = score1;
student.score2 = score2;
student.score3 = score3;
student.averageScore = (score1 + score2 + score3) / 3.0;
students.push_back(student);
}
inFile.close();
}
void saveStudentData() {
ofstream outFile("stu.txt");
for (const Student& student : students) {
outFile << student.studentId << " " << student.name << " "
<< student.score1 << " " << student.score2 << " " << student.score3 << endl;
}
outFile.close();
}
void displayMenu() {
cout << "╔══════════════════════════════════╗" << endl;
cout << "║ 学生管理系统 ║" << endl;
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;
cout << "请选择功能(输入对应数字): ";
}
bool studentLogin() {
string username, password;
int maxAttempts = 3;
while (maxAttempts > 0) {
cout << "╔══════════════════════════════════╗" << endl;
cout << "║ 学生登录 ║" << endl;
cout << "╠══════════════════════════════════╣" << endl;
cout << "║ 请输入用户名: ";
cin >> username;
cout << "║ 请输入密码: ";
cin >> password;
if (username == "111" && password == "111") {
cout << "╚══════════════════════════════════╝" << endl;
cout << "登录成功!" << endl;
return true;
} else {
maxAttempts--;
if (maxAttempts > 0) {
cout << "╠══════════════════════════════════╣" << endl;
cout << "║ 用户名或密码错误,还有" << maxAttempts << "次尝试机会。 ║" << endl;
} else {
cout << "╠══════════════════════════════════╣" << endl;
cout << "║ 登录失败,程序结束。 ║" << endl;
cout << "╚══════════════════════════════════╝" << endl;
exit(0);
}
}
}
}
void insertStudentInfo() {
Student student;
cout << "╔══════════════════════════════════╗" << endl;
cout << "║ 学生信息录入 ║" << endl;
cout << "╠══════════════════════════════════╣" << endl;
cout << "║ 请输入学号: ";
cin >> student.studentId;
cout << "║ 请输入姓名: ";
cin >> student.name;
cout << "║ 请输入第一门成绩: ";
cin >> student.score1;
cout << "║ 请输入第二门成绩: ";
cin >> student.score2;
cout << "║ 请输入第三门成绩: ";
cin >> student.score3;
student.averageScore = (student.score1 + student.score2 + student.score3) / 3.0;
for (const Student& existingStudent : students) {
if (existingStudent.studentId == student.studentId) {
cout << "║ 学号已存在,请重新输入。 ║" << endl;
cout << "╚══════════════════════════════════╝" << endl;
return;
}
}
students.push_back(student);
saveStudentData();
cout << "║ 学生信息录入成功。 ║" << endl;
cout << "╚══════════════════════════════════╝" << endl;
}
void displayAllStudents() {
for (const Student& student : students) {
cout << "╔════════════════════════════════════════╗" << endl;
cout << "║学号: " << student.studentId << " 姓名: ║" << student.name
<< " ║平均成绩: " << student.averageScore << endl;
cout << "╚════════════════════════════════════════╝" << endl;
}
}
bool compareStudentsByAverageScore(const Student& a, const Student& b) {
return a.averageScore > b.averageScore;
}
void sortStudentsByAverageScore() {
sort(students.begin(), students.end(), compareStudentsByAverageScore);
}
void deleteStudentInfo() {
string studentId;
cout << "请输入要删除的学号: ";
cin >> studentId;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->studentId == studentId) {
students.erase(it);
saveStudentData();
cout << "学生信息删除成功。" << endl;
return;
}
}
cout << "未找到该学号的学生信息。" << endl;
}
void searchStudentInfo() {
string studentId;
cout << "请输入要查找的学号: ";
cin >> studentId;
// 设置表头
cout << left << setw(10) << "学号" << setw(20) << "姓名" << setw(15) << "平均成绩" << endl;
cout << "-------------------------------------------" << endl;
for (const Student& student : students) {
if (student.studentId == studentId) {
// 以表格形式输出学生信息
cout << left << setw(10) << student.studentId << setw(20) << student.name
<< setw(15) << student.averageScore << endl;
return;
}
}
cout << "未找到该学号的学生信息。" << endl;
}
int main() {
loadStudentData();
int choice;
bool studentLoggedIn = false; // 用于记录学生是否已登录
while (true) {
while (true) {
if (!studentLoggedIn) {
studentLoggedIn = studentLogin();
} else {
// 如果学生已登录,显示主菜单
displayMenu();
std::cout << "请选择功能(输入对应数字): ";
std::cin >> choice;
switch (choice) {
case 1:
insertStudentInfo();
break;
case 2:
displayAllStudents();
break;
case 3:
sortStudentsByAverageScore();
displayAllStudents();
break;
case 4:
insertStudentInfo();
break;
case 5:
deleteStudentInfo();
break;
case 6:
searchStudentInfo();
break;
case 7:
exit(0);
return 0;
default:
cout << "无效的选择,请重新选择." << endl;
}
}
}
return 0;
}
}