设计一个学生信息管理系统,用于实现学生信息的录入、查询、排序、输出等功能。学生信息包括:学号(整型)、姓名(字符串)、性别(布尔型)、出生日期(结构体)、各科成绩(10门)、平均成绩等,用函数实现各功能模块
时间: 2023-07-04 22:10:23 浏览: 162
以下是一个简单的学生信息管理系统的设计,包括录入、查询、排序和输出等功能的实现。其中,学生信息以一个结构体表示,各种功能模块都用函数实现。
```c++
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <cstring>
using namespace std;
// 学生信息结构体
struct Student {
int id; // 学号
string name; // 姓名
bool isMale; // 性别
struct Date { // 出生日期
int year;
int month;
int day;
} birthday;
double scores[10]; // 各科成绩
double averageScore; // 平均成绩
};
// 学生信息数组
Student students[1000];
int numStudents = 0;
// 日期比较函数
bool compareDate(const Student& s1, const Student& s2) {
if (s1.birthday.year != s2.birthday.year) {
return s1.birthday.year < s2.birthday.year;
} else if (s1.birthday.month != s2.birthday.month) {
return s1.birthday.month < s2.birthday.month;
} else {
return s1.birthday.day < s2.birthday.day;
}
}
// 学号比较函数
bool compareID(const Student& s1, const Student& s2) {
return s1.id < s2.id;
}
// 姓名比较函数
bool compareName(const Student& s1, const Student& s2) {
return s1.name < s2.name;
}
// 平均成绩比较函数
bool compareAverageScore(const Student& s1, const Student& s2) {
return s1.averageScore > s2.averageScore;
}
// 录入学生信息
void addStudent() {
Student s;
cout << "请输入学号:";
cin >> s.id;
cout << "请输入姓名:";
cin >> s.name;
cout << "请输入性别(男为1,女为0):";
cin >> s.isMale;
cout << "请输入出生日期(格式为 yyyy mm dd):";
cin >> s.birthday.year >> s.birthday.month >> s.birthday.day;
cout << "请输入各科成绩(10门):";
for (int i = 0; i < 10; i++) {
cin >> s.scores[i];
}
s.averageScore = accumulate(s.scores, s.scores + 10, 0.0) / 10;
students[numStudents++] = s;
}
// 查询学生信息
void queryStudent() {
int id;
cout << "请输入要查询的学生学号:";
cin >> id;
for (int i = 0; i < numStudents; i++) {
if (students[i].id == id) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "性别:" << (students[i].isMale ? "男" : "女") << endl;
cout << "出生日期:" << students[i].birthday.year << "年"
<< students[i].birthday.month << "月"
<< students[i].birthday.day << "日" << endl;
cout << "各科成绩:";
for (int j = 0; j < 10; j++) {
cout << students[i].scores[j] << " ";
}
cout << endl;
cout << "平均成绩:" << students[i].averageScore << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 按出生日期排序
void sortByDate() {
sort(students, students + numStudents, compareDate);
}
// 按学号排序
void sortByID() {
sort(students, students + numStudents, compareID);
}
// 按姓名排序
void sortByName() {
sort(students, students + numStudents, compareName);
}
// 按平均成绩排序
void sortByAverageScore() {
sort(students, students + numStudents, compareAverageScore);
}
// 输出所有学生信息
void outputAllStudents() {
for (int i = 0; i < numStudents; i++) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "性别:" << (students[i].isMale ? "男" : "女") << endl;
cout << "出生日期:" << students[i].birthday.year << "年"
<< students[i].birthday.month << "月"
<< students[i].birthday.day << "日" << endl;
cout << "各科成绩:";
for (int j = 0; j < 10; j++) {
cout << students[i].scores[j] << " ";
}
cout << endl;
cout << "平均成绩:" << students[i].averageScore << endl;
}
}
int main() {
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;
int choice;
cin >> choice;
switch (choice) {
case 0:
cout << "程序已退出!" << endl;
return 0;
case 1:
addStudent();
break;
case 2:
queryStudent();
break;
case 3:
sortByDate();
break;
case 4:
sortByID();
break;
case 5:
sortByName();
break;
case 6:
sortByAverageScore();
break;
case 7:
outputAllStudents();
break;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
这个学生信息管理系统实现了录入、查询、排序和输出等功能,用户可以通过菜单选择要执行的操作。其中,录入学生信息时需要输入学号、姓名、性别、出生日期和各科成绩;查询学生信息时可以根据学号查询,如果找到了对应的学生则输出其所有信息;排序功能可以按出生日期、学号、姓名和平均成绩排序;输出所有学生信息时会逐个输出每个学生的所有信息。
阅读全文