编写C++学生信息管理系统设计与报告
刚学完c++基础,希望各位尽可能编写的简单一些,用VS编写
学生信息管理系统设计要求
可参考
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#inhttps://img-mid.csdnimg.cn/release/static/image/mid/ask/203765477786159.png "#left")
clude <algorithm>
struct Student {
std::string studentId;//学号
std::string name;//姓名
int age;//年龄
std::string gender;//性别
std::string birthDate;//出生
std::string politicalStatus;//政治面貌
std::string hometown;//籍贯
std::string address;//地址
std::string phoneNumber;//电话
std::string email;//邮箱
};
std::vector<Student> students;
void displayMenu() {
std::cout << "学生管理信息系统" << std::endl;
std::cout << "1. 录入学生信息" << std::endl;
std::cout << "2. 浏览学生信息" << std::endl;
std::cout << "3. 排序和查询学生信息" << std::endl;
std::cout << "4. 信息统计" << std::endl;
std::cout << "5. 删除和修改学生信息" << std::endl;
std::cout << "0. 退出系统" << std::endl;
std::cout << "请输入菜单选项:";
}
void saveStudentsToFile() {
std::ofstream file("students.txt");
if (file.is_open()) {
for (const auto& student : students) {
file << student.studentId << ","
<< student.name << ","
<< student.age << ","
<< student.gender << ","
<< student.birthDate << ","
<< student.politicalStatus << ","
<< student.hometown << ","
<< student.address << ","
<< student.phoneNumber << ","
<< student.email << std::endl;
}
file.close();
std::cout << "学生信息已保存到文件。" << std::endl;
}
else {
std::cout << "无法打开文件进行保存。" << std::endl;
}
}
void loadStudentsFromFile() {
std::ifstream file("students.txt");
if (file.is_open()) {
students.clear();
std::string line;
while (std::getline(file, line)) {
std::stringstream ss(line);
std::string field;
Student student;
std::getline(ss, field, ',');
student.studentId = field;
std::getline(ss, field, ',');
student.name = field;
std::getline(ss, field, ',');
student.age = std::stoi(field);
std::getline(ss, field, ',');
student.gender = field;
std::getline(ss, field, ',');
student.birthDate = field;
std::getline(ss, field, ',');
student.politicalStatus = field;
std::getline(ss, field, ',');
student.hometown = field;
std::getline(ss, field, ',');
student.address = field;
std::getline(ss, field, ',');
student.phoneNumber = field;
std::getline(ss, field);
student.email = field;
students.push_back(student);
}
file.close();
std::cout << "学生信息已从文件加载。" << std::endl;
}
else {
std::cout << "无法打开文件进行加载。" << std::endl;
}
}
void addStudent() {
std::cout << "请输入学生信息:" << std::endl;
Student student;
std::cout << "学号:";
std::cin >> student.studentId;
std::cout << "姓名:";
std::cin >> student.name;
std::cout << "年龄:";
std::cin >> student.age;
std::cout << "性别:";
std::cin >> student.gender;
std::cout << "出生年月:";
std::cin >> student.birthDate;
std::cout << "政治面貌:";
std::cin >> student.politicalStatus;
std::cout << "籍贯:";
std::cin >> student.hometown;
std::cout << "家庭住址:";
std::cin >> student.address;
std::cout << "电话:";
std::cin >> student.phoneNumber;
std::cout << "E-mail:";
std::cin >> student.email;
students.push_back(student);
std::cout << "学生信息已添加。" << std::endl;
}
void browseStudents() {
if (students.empty()) {
std::cout << "没有学生信息可浏览。" << std::endl;
return;
}
std::cout << "学生信息列表:" << std::endl;
for (const auto& student : students) {
std::cout << "学号:" << student.studentId << std::endl;
std::cout << "姓名:" << student.name << std::endl;
std::cout << "年龄:" << student.age << std::endl;
std::cout << "性别:" << student.gender << std::endl;
std::cout << "出生年月:" << student.birthDate << std::endl;
std::cout << "政治面貌:" << student.politicalStatus << std::endl;
std::cout << "籍贯:" << student.hometown << std::endl;
std::cout << "家庭住址:" << student.address << std::endl;
std::cout << "电话:" << student.phoneNumber << std::endl;
std::cout << "E-mail:" << student.email << std::endl;
std::cout << std::endl;
}
}
bool compareById(const Student& student1, const Student& student2) {
return student1.studentId < student2.studentId;
}
bool compareByName(const Student& student1, const Student& student2) {
return student1.name < student2.name;
}
bool compareByGender(const Student& student1, const Student& student2) {
return student1.gender < student2.gender;
}
bool compareByBirthDate(const Student& student1, const Student& student2) {
return student1.birthDate < student2.birthDate;
}
bool compareByHometown(const Student& student1, const Student& student2) {
return student1.hometown < student2.hometown;
}
void sortAndQueryStudents() {
if (students.empty()) {
std::cout << "没有学生信息可排序和查询。" << std::endl;
return;
}
std::cout << "请选择排序方式:" << std::endl;
std::cout << "1. 按学号排序" << std::endl;
std::cout << "2. 按姓名排序" << std::endl;
std::cout << "3. 按性别排序" << std::endl;
std::cout << "4. 按出生年月排序" << std::endl;
std::cout << "5. 按籍贯排序" << std::endl;
std::cout << "请输入选项:";
int option;
std::cin >> option;
switch (option) {
case 1:
std::sort(students.begin(), students.end(), compareById);
break;
case 2:
std::sort(students.begin(), students.end(), compareByName);
break;
case 3:
std::sort(students.begin(), students.end(), compareByGender);
break;
case 4:
std::sort(students.begin(), students.end(), compareByBirthDate);
break;
case 5:
std::sort(students.begin(), students.end(), compareByHometown);
break;
default:
std::cout << "无效的选项。" << std::endl;
return;
}
browseStudents();
}
void countByGender() {
int maleCount = 0;
int femaleCount = 0;
for (const auto& student : students) {
if (student.gender == "男") {
maleCount++;
}
else if (student.gender == "女") {
femaleCount++;
}
}
std::cout << "男生人数:" << maleCount << std::endl;
std::cout << "女生人数:" << femaleCount << std::endl;
}
void countByBirthYear() {
std::cout << "请输入出生年份:";
std::string year;
std::cin >> year;
int count = 0;
for (const auto& student : students) {
if (student.birthDate.substr(0, 4) == year) {
count++;
}
}
std::cout << year << "年出生的学生人数:" << count << std::endl;
}
void countByHometown() {
std::cout << "请输入籍贯:";
std::string hometown;
std::cin >> hometown;
int count = 0;
for (const auto& student : students) {
if (student.hometown == hometown) {
count++;
}
}
std::cout << hometown << "籍贯的学生人数:" << count << std::endl;
}
void countByPoliticalStatus() {
std::cout << "请输入政治面貌:";
std::string politicalStatus;
std::cin >> politicalStatus;
int count = 0;
for (const auto& student : students) {
if (student.politicalStatus == politicalStatus) {
count++;
}
}
std::cout << politicalStatus << "政治面貌的学生人数:" << count << std::endl;
}
void countByClass() {
std::cout << "请输入班级:";
std::string className;
std::cin >> className;
int studentCount = 0;
int partyMemberCount = 0;
int leagueMemberCount = 0;
for (const auto& student : students) {
if (student.studentId.substr(0, 4) == className) {
studentCount++;
if (student.politicalStatus == "党员") {
partyMemberCount++;
}
else if (student.politicalStatus == "团员") {
leagueMemberCount++;
}
}
}
std::cout << className << "班级的学生人数:" << studentCount << std::endl;
std::cout << "党员人数:" << partyMemberCount << std::endl;
std::cout << "团员人数:" << leagueMemberCount << std::endl;
std::cout << "党员比例:" << (partyMemberCount / static_cast<double>(studentCount)) * 100 << "%" << std::endl;
std::cout << "团员比例:" << (leagueMemberCount / static_cast<double>(studentCount)) * 100 << "%" << std::endl;
}
void deleteStudent() {
std::cout << "请输入要删除的学生学号:";
std::string studentId;
std::cin >> studentId;
auto it = std::find_if(students.begin(), students.end(), [&studentId](const Student& student) {
return student.studentId == studentId;
});
if (it != students.end()) {
students.erase(it);
std::cout << "学生信息已删除。" << std::endl;
}
else {
std::cout << "未找到该学生信息。" << std::endl;
}
}
void modifyStudent() {
std::cout << "请输入要修改的学生学号:";
std::string studentId;
std::cin >> studentId;
auto it = std::find_if(students.begin(), students.end(), [&studentId](const Student& student) {
return student.studentId == studentId;
});
if (it != students.end()) {
std::cout << "请输入修改后的学生信息:" << std::endl;
std::cout << "学号:";
std::cin >> it->studentId;
std::cout << "姓名:";
std::cin >> it->name;
std::cout << "年龄:";
std::cin >> it->age;
std::cout << "性别:";
std::cin >> it->gender;
std::cout << "出生年月:";
std::cin >> it->birthDate;
std::cout << "政治面貌:";
std::cin >> it->politicalStatus;
std::cout << "籍贯:";
std::cin >> it->hometown;
std::cout << "家庭住址:";
std::cin >> it->address;
std::cout << "电话:";
std::cin >> it->phoneNumber;
std::cout << "E-mail:";
std::cin >> it->email;
std::cout << "学生信息已修改。" << std::endl;
}
else {
std::cout << "未找到该学生信息。" << std::endl;
}
}
int main() {
loadStudentsFromFile();
int option;
do {
displayMenu();
std::cin >> option;
switch (option) {
case 0:
saveStudentsToFile();
std::cout << "感谢使用学生管理信息系统,再见!" << std::endl;
break;
case 1:
addStudent();
break;
case 2:
browseStudents();
break;
case 3:
sortAndQueryStudents();
break;
case 4:
std::cout << "请选择统计方式:" << std::endl;
std::cout << "a) 按性别统计学生人数" << std::endl;
std::cout << "b) 按出生年份统计学生人数" << std::endl;
std::cout << "c) 按籍贯统计学生人数" << std::endl;
std::cout << "d) 按政治面貌统计学生人数" << std::endl;
std::cout << "e) 按班级统计学生党员人数和团员人数" << std::endl;
std::cout << "请选择选项:";
char subOption;
std::cin >> subOption;
switch (subOption) {
case 'a':
countByGender();
break;
case 'b':
countByBirthYear();
break;
case 'c':
countByHometown();
break;
case 'd':
countByPoliticalStatus();
break;
case 'e':
countByClass();
break;
default:
std::cout << "无效的选项。" << std::endl;
break;
}
break;
case 5:
std::cout << "请选择操作:" << std::endl;
std::cout << "a) 删除学生信息" << std::endl;
std::cout << "b) 修改学生信息" << std::endl;
std::cout << "请选择选项:";
char subOption2;
std::cin >> subOption2;
switch (subOption2) {
case 'a':
deleteStudent();
break;
case 'b':
modifyStudent();
break;
default:
std::cout << "无效的选项。" << std::endl;
break;
}
break;
default:
std::cout << "无效的选项。" << std::endl;
break;
}
std::cout << std::endl;
} while (option != 0);
return 0;
}
发需求文档来看看?
1.代码示例。你可以在此基础上进行扩展和改进。
c++
#include <iostream>
using namespace std;
// 定义学生结构体
struct Student {
int id;
string name;
int age;
};
// 添加学生信息
void addStudent(Student students[], int& count) {
cout << "请输入学生ID: ";
cin >> students[count].id;
cout << "请输入学生姓名: ";
cin >> students[count].name;
cout << "请输入学生年龄: ";
cin >> students[count].age;
count++;
cout << "添加成功!" << endl;
}
// 显示所有学生信息
void showStudents(Student students[], int count) {
for (int i = 0; i < count; i++) {
cout << "学生ID: " << students[i].id << endl;
cout << "学生姓名: " << students[i].name << endl;
cout << "学生年龄: " << students[i].age << endl;
cout << endl;
}
}
int main() {
const int MAX_STUDENTS = 100;
Student students[MAX_STUDENTS];
int count = 0;
bool isRunning = true;
while (isRunning) {
cout << "请选择操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 显示所有学生信息" << endl;
cout << "3. 退出" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
addStudent(students, count);
break;
case 2:
showStudents(students, count);
break;
case 3:
isRunning = false;
break;
default:
cout << "无效的选择,请重新输入!" << endl;
}
}
return 0;
}
这个示例演示了一个学生信息管理系统,包括添加学生信息和显示所有学生信息的功能。请根据你的需求进行修改和扩展,比如可以添加删除学生、查询学生、保存到文件等功能。同时,你还可以使用类来实现更优雅的设计。
2.报告示例。
学生信息管理系统设计与报告
系统目标
学生信息管理系统旨在提供一个方便的方式来管理学生的基本信息,包括学生ID、姓名和年龄等。该系统应具备添加学生、显示所有学生信息和退出等功能。
功能介绍
添加学生信息:用户可以输入学生的ID、姓名和年龄,并将其添加到系统中。
显示所有学生信息:系统将列出所有已添加学生的ID、姓名和年龄。
退出:用户可以选择退出系统。
数据结构设计
在该系统中,使用了以下数据结构:
结构体(Student):用于表示学生的基本信息,包括学生ID、姓名和年龄。
数组(students):用于存储学生信息的容器,可根据需要进行动态调整。
算法设计
添加学生信息:通过用户输入,将学生的ID、姓名和年龄保存到学生结构体中,并将结构体添加到学生信息数组中。
显示所有学生信息:遍历学生信息数组,逐个输出学生的ID、姓名和年龄。
退出:用户选择退出系统时,退出程序的循环。
界面设计
在该系统中,使用控制台界面来与用户进行交互。通过菜单选项提供不同的功能选择,并在用户输入后执行相应的操作,并给予相应的输出结果。
测试结果
经过测试,学生信息管理系统能够正常运行,并实现了所需的功能。添加学生信息后,系统能够正确显示已添加的学生信息。
总结:
通过该学生信息管理系统的设计与实现,我对C++基础知识有了更深入的理解。通过这个项目,我学会了如何使用结构体、数组以及控制流和函数等知识来构建一个简单的信息管理系统。同时,在编写报告的过程中,我也提高了我的文档撰写能力。
以上是一个示例报告,你可以根据自己的项目需求和要求进行修改和扩展,添加其他必要的部分,并包含你的具体设计思路和实现细节。希望这个示例能对你有所帮助!如果还有其他问题,请随时提问。
c++学生信息管理系统+项目报告
设计思路
将学生信息定义为一个person类,在类中包含数据成员:
int num;
string name;
string sex;
int age;
int banji;,
分别表示学号、姓名、性别、年龄、班级。
分别定义小、中、大学三个类为class xiaoxuesheng、class zhongxuesheng、class daxuesheng并继承person类,而后分别为它们一个管理类并定义公有成员函数
void Add(); 实现数据添加功能
void Show(); 实现数据显示功能
void Search(); 实现数据查询功能
void Edit(); 实现数据修改功能
void Delete(); 实现数据删除功能
然后定义了一个主菜单函数和三个分菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作。
主函数是一个程序必不可少的,在主函数中,使用一个switch语句来选择调用主菜单中的各个功能函数。
系统的详细设计
1、程序中函数及数据介绍
class Person 学生类
class zhongxuesheng 中学生类
class daxuesheng 大学生类
class xiaoxuesheng 小学生类
class xiao_Manage 小学生管理类
class zhong_Manage 中学生管理类
class da_Manage 大学生管理类
void xiaoMenu() 小学生管理菜单函数
void zhongMenu() 中学生管理菜单函数
void daMenu() 大学生管理菜单函数
int main() 主函数
2、函数功能介绍
2.1显示函数
显示保存的数据
2.2 添加函数
此函数实现的功能主要是,添加一个学生的信息,也就是说调用一次这个函数只能添加一个学生的信息。在此函数中也使用文件处理的方式,但使用的是以追加的方式打开文件,使输入的学生信息写在文件里原有信息的后面。
2.3 删除函数
此函数实现的功能主要是,删除一个学生的信息。在此函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,用户再根据提示信息输入想要删除第几个人的信息,关闭文件。再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。
2.4 修改函数
此函数实现的功能主要是,修改一个学生的信息。此函数的设计方法和删除函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖。
2.5 查询函数
在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按学号查询和按姓名查询。使用if语句来选择查询条件。
2.5.1 按学号查询
根据提示信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环。
当无查询结果时,会输出一条提示信息“无此人信息!” 。
2.5.2 按姓名查询
根据提示信息输入姓名后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的姓名和输入的姓名一样,则输出该学生的信息,由于学生的姓名有可能重复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最后一名学生。
当无查询结果时,会输出一条提示信息“无此人信息!” 。
2.6 显示函数
此函数实现的功能主要是,显示所有学生的信息。先是从文件中读取学生信息,然后在输出到显示窗口中。用一个for循环语句,来把所有学生的信息都输出。
2.7 退出系统
当输入“0”时,就能退出系统,这是通过while语句来控制实现的。
回答部分参考、引用ChatGpt以便为您提供更准确的答案:
根据您的要求,您希望编写一个使用C++编写的学生信息管理系统,并提供设计和报告。以下是一个简单的学生信息管理系统的设计要求和报告要求:
设计要求:
报告要求:
在使用VS编写学生信息管理系统时,可以使用C++的面向对象特性来设计学生类和系统类,利用类的封装、继承和多态等概念来实现系统的功能。
以下是一个简单的示例:
#include <iostream>
#include <vector>
using namespace std;
class Student {
private:
string studentID;
string name;
int age;
string gender;
public:
Student(string id, string n, int a, string g) : studentID(id), name(n), age(a), gender(g) {}
void displayInfo() {
cout << "Student ID: " << studentID << endl;
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Gender: " << gender << endl;
}
};
class StudentManagementSystem {
private:
vector<Student> students;
public:
void addStudent(Student s) {
students.push_back(s);
}
void displayAllStudents() {
for (const auto& student : students) {
student.displayInfo();
cout << endl;
}
}
};
int main() {
StudentManagementSystem system;
Student student1("001", "Alice", 20, "Female");
Student student2("002", "Bob", 21, "Male");
system.addStudent(student1);
system.addStudent(student2);
system.displayAllStudents();
return 0;
}
这是一个简单的学生信息管理系统示例,包括学生类和学生管理系统类。学生类存储了学生的基本信息,而学生管理系统类提供了添加学生和显示所有学生信息的功能。
您可以根据自己的需求和具体的设计要求对系统进行扩展和优化。