c++: 本系统主要应用于学校学生管理,总体任务是实现学生管理的系统化、规范化和自动化,其主要任务是对学生的基本信息进行日常管理,如录入、显示、插入、删除、查询、排序等功能,针对这些要求设计了学生

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;
}
}

猜你喜欢

转载自blog.csdn.net/qq_62088638/article/details/134225476
今日推荐