{"title":"C++学生管理系统设计:功能实现与代码示例","description":"本文介绍使用C++语言设计一个简单的学生管理系统,包含数据录入、查询、删除和排序等基本功能,并提供完整的代码示例。","keywords":"学生管理系统, C++, 面向对象, 数据录入, 查询, 删除, 排序, 代码示例","content":"#include "iostream"\n#include "fstream"\n#include "vector"\n#include "algorithm"\n\nusing namespace std;\n\nstruct Student {\n string id;\n string name;\n string gender;\n string dorm;\n string phone;\n};\n\nstruct Course {\n string id;\n string code;\n string name;\n int credits;\n int regularGrade;\n int experimentGrade;\n int examGrade;\n int totalGrade;\n int earnedCredits;\n};\n\nvector students;\nvector courses;\n\nvoid readStudents() {\n ifstream file("A.txt");\n string line;\n while (getline(file, line)) {\n Student student;\n student.id = line.substr(0, 2);\n student.name = line.substr(2, 8);\n student.gender = line.substr(10, 2);\n student.dorm = line.substr(12, 3);\n student.phone = line.substr(15, 8);\n students.push_back(student);\n }\n file.close();\n}\n\nvoid readCourses() {\n ifstream file("B.txt");\n string line;\n while (getline(file, line)) {\n Course course;\n course.id = line.substr(0, 2);\n course.code = line.substr(2, 4);\n course.name = line.substr(6, 10);\n course.credits = stoi(line.substr(16, 1));\n course.regularGrade = stoi(line.substr(17, 2));\n course.experimentGrade = stoi(line.substr(19, 2));\n course.examGrade = stoi(line.substr(21, 2));\n course.totalGrade = 0;\n course.earnedCredits = 0;\n courses.push_back(course);\n }\n file.close();\n}\n\nvoid calculateGrades() {\n for (auto& course : courses) {\n if (course.experimentGrade == -1) {\n course.totalGrade = course.regularGrade * 0.3 + course.examGrade * 0.7;\n } else {\n course.totalGrade = course.regularGrade * 0.15 + course.experimentGrade * 0.15 + course.examGrade * 0.7;\n }\n\n if (course.totalGrade >= 90) {\n course.earnedCredits = course.credits;\n } else if (course.totalGrade >= 80) {\n course.earnedCredits = course.credits * 0.8;\n } else if (course.totalGrade >= 70) {\n course.earnedCredits = course.credits * 0.75;\n } else if (course.totalGrade >= 60) {\n course.earnedCredits = course.credits * 0.6;\n } else {\n course.earnedCredits = 0;\n }\n }\n}\n\nvoid addCourse() {\n Course course;\n cout << "Enter course information:" << endl;\n cout << "ID: ";\n cin >> course.id;\n cout << "Code: ";\n cin >> course.code;\n cout << "Name: ";\n cin >> course.name;\n cout << "Credits: ";\n cin >> course.credits;\n cout << "Regular grade: ";\n cin >> course.regularGrade;\n cout << "Experiment grade (-1 if none): ";\n cin >> course.experimentGrade;\n cout << "Exam grade: ";\n cin >> course.examGrade;\n course.totalGrade = 0;\n course.earnedCredits = 0;\n courses.push_back(course);\n calculateGrades();\n}\n\nvoid searchStudent() {\n string option;\n cout << "Search by ID or name? (id/name): ";\n cin >> option;\n if (option == "id") {\n string id;\n cout << "Enter student ID: ";\n cin >> id;\n for (const auto& student : students) {\n if (student.id == id) {\n cout << "Student information:" << endl;\n cout << "ID: " << student.id << endl;\n cout << "Name: " << student.name << endl;\n cout << "Gender: " << student.gender << endl;\n cout << "Dorm: " << student.dorm << endl;\n cout << "Phone: " << student.phone << endl;\n break;\n }\n }\n } else if (option == "name") {\n string name;\n cout << "Enter student name: ";\n cin >> name;\n for (const auto& student : students) {\n if (student.name == name) {\n cout << "Student information:" << endl;\n cout << "ID: " << student.id << endl;\n cout << "Name: " << student.name << endl;\n cout << "Gender: " << student.gender << endl;\n cout << "Dorm: " << student.dorm << endl;\n cout << "Phone: " << student.phone << endl;\n break;\n }\n }\n } else {\n cout << "Invalid option!" << endl;\n }\n}\n\nvoid searchDorm() {\n string dorm;\n cout << "Enter dorm number: ";\n cin >> dorm;\n for (const auto& student : students) {\n if (student.dorm == dorm) {\n cout << "Student information:" << endl;\n cout << "ID: " << student.id << endl;\n cout << "Name: " << student.name << endl;\n cout << "Gender: " << student.gender << endl;\n cout << "Dorm: " << student.dorm << endl;\n cout << "Phone: " << student.phone << endl;\n }\n }\n}\n\nvoid searchGrades() {\n string id;\n cout << "Enter student ID: ";\n cin >> id;\n cout << "Student grades:" << endl;\n for (const auto& course : courses) {\n if (course.id == id) {\n cout << "Course ID: " << course.code << endl;\n cout << "Course Name: " << course.name << endl;\n cout << "Total Grade: " << course.totalGrade << endl;\n cout << "Earned Credits: " << course.earnedCredits << endl;\n }\n }\n}\n\nvoid deleteStudent() {\n string id;\n cout << "Enter student ID to delete: ";\n cin >> id;\n students.erase(remove_if(students.begin(), students.end(), [&](const Student& student) {\n return student.id == id;\n }), students.end());\n courses.erase(remove_if(courses.begin(), courses.end(), [&](const Course& course) {\n return course.id == id;\n }), courses.end());\n}\n\nvoid sortGrades() {\n string option;\n cout << "Sort by total grade or earned credits? (grade/credits): ";\n cin >> option;\n if (option == "grade") {\n sort(courses.begin(), courses.end(), [&](const Course& a, const Course& b) {\n return a.totalGrade < b.totalGrade;\n });\n } else if (option == "credits") {\n sort(courses.begin(), courses.end(), [&](const Course& a, const Course& b) {\n return a.earnedCredits < b.earnedCredits;\n });\n } else {\n cout << "Invalid option!" << endl;\n }\n}\n\nvoid displayMenu() {\n cout << "1. Add course" << endl;\n cout << "2. Search student" << endl;\n cout << "3. Search dorm" << endl;\n cout << "4. Search grades" << endl;\n cout << "5. Delete student" << endl;\n cout << "6. Sort grades" << endl;\n cout << "0. Exit" << endl;\n cout << "Enter option: ";\n}\n\nint main() {\n readStudents();\n readCourses();\n calculateGrades();\n\n int option;\n do {\n displayMenu();\n cin >> option;\n switch (option) {\n case 1:\n addCourse();\n break;\n case 2:\n searchStudent();\n break;\n case 3:\n searchDorm();\n break;\n case 4:\n searchGrades();\n break;\n case 5:\n deleteStudent();\n break;\n case 6:\n sortGrades();\n break;\n case 0:\n cout << "Exiting..." << endl;\n break;\n default:\n cout << "Invalid option!" << endl;\n break;\n }\n } while (option != 0);\n\n return 0;\n}


原文地址: https://www.cveoy.top/t/topic/pq0l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录