要求: 学生信息包括:学号,姓名,年龄,性别,出生年月,政治面貌,籍贯,家庭住址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能(学生信息用文件保存)
(3)学生信息浏览功能
(4)学生信息排序、查询功能对信息进行排序,可以按学号,按姓名,按性别,按出生年月日,按籍贯进行查询
(5)信息统计
a) 可以按性别,按出生年,按籍贯统计学生人数
b) 可以按班级统计学生人数
c) 可以按政治面貌统计学生人数按班级统计学生党员人数,团员人数,以及所占比例,设计并输出统计报表。
(6)学生信息的删除与修改
以下是一个简单的学生信息管理系统的C语言实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100 // 最大学生数
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_ADDRESS_LEN 50 // 地址最大长度
#define MAX_PHONE_LEN 20 // 电话最大长度
#define MAX_EMAIL_LEN 50 // 邮箱最大长度
// 学生信息结构体
typedef struct {
char id[10]; // 学号
char name[MAX_NAME_LEN]; // 姓名
int age; // 年龄
char gender; // 性别
char birth[11]; // 出生年月日
char political_status[20]; // 政治面貌
char hometown[20]; // 籍贯
char address[MAX_ADDRESS_LEN]; // 家庭住址
char phone[MAX_PHONE_LEN]; // 电话
char email[MAX_EMAIL_LEN]; // 邮箱
} Student;
// 学生信息数组
Student students[MAX_STUDENT_NUM];
int student_num = 0; // 学生数
// 读取学生信息文件
void read_student_file() {
FILE *fp = fopen("students.txt", "r");
if (fp == NULL) {
printf("无法打开学生信息文件!\n");
return;
}
while (!feof(fp)) {
fscanf(fp, "%s %s %d %c %s %s %s %s %s %s\n", students[student_num].id, students[student_num].name, &students[student_num].age, &students[student_num].gender, students[student_num].birth, students[student_num].political_status, students[student_num].hometown, students[student_num].address, students[student_num].phone, students[student_num].email);
student_num++;
}
fclose(fp);
}
// 保存学生信息文件
void save_student_file() {
FILE *fp = fopen("students.txt", "w");
if (fp == NULL) {
printf("无法打开学生信息文件!\n");
return;
}
for (int i = 0; i < student_num; i++) {
fprintf(fp, "%s %s %d %c %s %s %s %s %s %s\n", students[i].id, students[i].name, students[i].age, students[i].gender, students[i].birth, students[i].political_status, students[i].hometown, students[i].address, students[i].phone, students[i].email);
}
fclose(fp);
}
// 录入学生信息
void input_student_info() {
printf("请输入学生信息:\n");
printf("学号:");
scanf("%s", students[student_num].id);
printf("姓名:");
scanf("%s", students[student_num].name);
printf("年龄:");
scanf("%d", &students[student_num].age);
printf("性别:");
scanf(" %c", &students[student_num].gender);
printf("出生年月日(格式:yyyy-mm-dd):");
scanf("%s", students[student_num].birth);
printf("政治面貌:");
scanf("%s", students[student_num].political_status);
printf("籍贯:");
scanf("%s", students[student_num].hometown);
printf("家庭住址:");
scanf("%s", students[student_num].address);
printf("电话:");
scanf("%s", students[student_num].phone);
printf("邮箱:");
scanf("%s", students[student_num].email);
student_num++;
printf("学生信息录入成功!\n");
}
// 显示学生信息
void show_student_info(Student student) {
printf("%s\t%s\t%d\t%c\t%s\t%s\t%s\t%s\t%s\t%s\n", student.id, student.name, student.age, student.gender, student.birth, student.political_status, student.hometown, student.address, student.phone, student.email);
}
// 浏览学生信息
void browse_student_info() {
printf("学号\t姓名\t年龄\t性别\t出生年月日\t政治面貌\t籍贯\t家庭住址\t电话\t邮箱\n");
for (int i = 0; i < student_num; i++) {
show_student_info(students[i]);
}
}
// 按学号排序
int cmp_by_id(const void *a, const void *b) {
return strcmp(((Student *)a)->id, ((Student *)b)->id);
}
// 按姓名排序
int cmp_by_name(const void *a, const void *b) {
return strcmp(((Student *)a)->name, ((Student *)b)->name);
}
// 按性别排序
int cmp_by_gender(const void *a, const void *b) {
return ((Student *)a)->gender - ((Student *)b)->gender;
}
// 按出生年月日排序
int cmp_by_birth(const void *a, const void *b) {
return strcmp(((Student *)a)->birth, ((Student *)b)->birth);
}
// 按籍贯排序
int cmp_by_hometown(const void *a, const void *b) {
return strcmp(((Student *)a)->hometown, ((Student *)b)->hometown);
}
// 排序学生信息
void sort_student_info() {
printf("请选择排序方式:\n");
printf("1. 按学号排序\n");
printf("2. 按姓名排序\n");
printf("3. 按性别排序\n");
printf("4. 按出生年月日排序\n");
printf("5. 按籍贯排序\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
qsort(students, student_num, sizeof(Student), cmp_by_id);
printf("按学号排序成功!\n");
break;
case 2:
qsort(students, student_num, sizeof(Student), cmp_by_name);
printf("按姓名排序成功!\n");
break;
case 3:
qsort(students, student_num, sizeof(Student), cmp_by_gender);
printf("按性别排序成功!\n");
break;
case 4:
qsort(students, student_num, sizeof(Student), cmp_by_birth);
printf("按出生年月日排序成功!\n");
break;
case 5:
qsort(students, student_num, sizeof(Student), cmp_by_hometown);
printf("按籍贯排序成功!\n");
break;
default:
printf("无效的选择!\n");
break;
}
}
// 查询学生信息
void query_student_info() {
printf("请选择查询方式:\n");
printf("1. 按学号查询\n");
printf("2. 按姓名查询\n");
printf("3. 按性别查询\n");
printf("4. 按出生年月日查询\n");
printf("5. 按籍贯查询\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入学号:");
char id[10];
scanf("%s", id);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, id) == 0) {
show_student_info(students[i]);
return;
}
}
printf("未找到该学生!\n");
break;
case 2:
printf("请输入姓名:");
char name[MAX_NAME_LEN];
scanf("%s", name);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].name, name) == 0) {
show_student_info(students[i]);
}
}
break;
case 3:
printf("请输入性别(M/F):");
char gender;
scanf(" %c", &gender);
for (int i = 0; i < student_num; i++) {
if (students[i].gender == gender) {
show_student_info(students[i]);
}
}
break;
case 4:
printf("请输入出生年月日(格式:yyyy-mm-dd):");
char birth[11];
scanf("%s", birth);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].birth, birth) == 0) {
show_student_info(students[i]);
}
}
break;
case 5:
printf("请输入籍贯:");
char hometown[20];
scanf("%s", hometown);
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].hometown, hometown) == 0) {
show_student_info(students[i]);
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
struct Student {
int studentId;
std::string name;
int age;
std::string gender;
std::string birthDate;
std::string politicalStatus;
std::string hometown;
std::string address;
std::string phone;
std::string email;
};
void saveStudentInfo(const Student& student) {
std::ofstream file("student_info.txt", std::ios::app);
file << student.studentId << " " << student.name << " " << student.age << " " << student.gender << " "
<< student.birthDate << " " << student.politicalStatus << " " << student.hometown << " "
<< student.address << " " << student.phone << " " << student.email << std::endl;
file.close();
}
std::vector<Student> loadStudentInfo() {
std::vector<Student> students;
std::ifstream file("student_info.txt");
if (file.is_open()) {
int studentId, age;
std::string name, gender, birthDate, politicalStatus, hometown, address, phone, email;
while (file >> studentId >> name >> age >> gender >> birthDate >> politicalStatus >> hometown >> address >> phone >> email) {
students.push_back({ studentId, name, age, gender, birthDate, politicalStatus, hometown, address, phone, email });
}
file.close();
}
return students;
}
void displayStudentInfo(const Student& student) {
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.phone << std::endl;
std::cout << "E-mail: " << student.email << std::endl;
std::cout << std::endl;
}
void browseStudentInfo() {
std::vector<Student> students = loadStudentInfo();
for (const auto& student : students) {
displayStudentInfo(student);
}
}
bool compareByStudentId(const Student& s1, const Student& s2) {
return s1.studentId < s2.studentId;
}
bool compareByName(const Student& s1, const Student& s2) {
return s1.name < s2.name;
}
bool compareByGender(const Student& s1, const Student& s2) {
return s1.gender < s2.gender;
}
bool compareByBirthDate(const Student& s1, const Student& s2) {
return s1.birthDate < s2.birthDate;
}
bool compareByHometown(const Student& s1, const Student& s2) {
return s1.hometown < s2.hometown;
}
void sortStudentInfo(int option) {
std::vector<Student> students = loadStudentInfo();
switch (option) {
case 1:
std::sort(students.begin(), students.end(), compareByStudentId);
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;
}
for (const auto& student : students) {
displayStudentInfo(student);
}
}
void searchStudentInfo(int option, const std::string& keyword) {
std::vector<Student> students = loadStudentInfo();
std::vector<Student> searchResults;
switch (option) {
case 1:
for (const auto& student : students) {
if (student.name == keyword) {
searchResults.push_back(student);
}
}
break;
case 2:
for (const auto& student : students) {
if (student.gender == keyword) {
searchResults.push_back(student);
}
}
break;
case 3:
for (const auto& student : students) {
if (student.birthDate == keyword) {
searchResults.push_back(student);
}
}
break;
case 4:
for (const auto& student : students) {
if (student.hometown == keyword) {
searchResults.push_back(student);
}
}
break;
default:
std::cout << "无效的选项!" << std::endl;
return;
}
for (const auto& student : searchResults) {
displayStudentInfo(student);
}
}
void countByGender() {
std::vector<Student> students = loadStudentInfo();
int maleCount = 0, 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::vector<Student> students = loadStudentInfo();
std::vector<int> birthYears;
for (const auto& student : students) {
std::string year = student.birthDate.substr(0, 4);
int birthYear = std::stoi(year);
if (std::find(birthYears.begin(), birthYears.end(), birthYear) == birthYears.end()) {
birthYears.push_back(birthYear);
}
}
for (const auto& year : birthYears) {
int count = 0;
for (const auto& student : students) {
std::string studentYear = student.birthDate.substr(0, 4);
int studentBirthYear = std::stoi(studentYear);
if (studentBirthYear == year) {
count++;
}
}
std::cout << year << "年出生的学生人数: " << count << std::endl;
}
}
void countByPoliticalStatus() {
std::vector<Student> students = loadStudentInfo();
std::vector<std::string> politicalStatuses;
for (const auto& student : students) {
if (std::find(politicalStatuses.begin(), politicalStatuses.end(), student.politicalStatus) == politicalStatuses.end()) {
politicalStatuses.push_back(student.politicalStatus);
}
}
for (const auto& politicalStatus : politicalStatuses) {
int count = 0;
for (const auto& student : students) {
if (student.politicalStatus == politicalStatus) {
count++;
}
}
std::cout << politicalStatus << "学生人数: " << count << std::endl;
}
}
void countByClass() {
std::vector<Student> students = loadStudentInfo();
std::vector<std::string> classes;
for (const auto& student : students) {
std::string studentClass = student.name.substr(0, 2);
if (std::find(classes.begin(), classes.end(), studentClass) == classes.end()) {
classes.push_back(studentClass);
}
}
for (const auto& studentClass : classes) {
int count = 0;
for (const auto& student : students) {
std::string studentClass = student.name.substr(0, 2);
if (studentClass == studentClass) {
count++;
}
}
std::cout << studentClass << "班学生人数: " << count << std::endl;
}
}
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 << "6. 按籍贯排序" << std::endl;
std::cout << "7. 搜索学生信息" << std::endl;
std::cout << "8. 统计男女学生人数" << std::endl;
std::cout << "9. 统计出生年份学生人数" << std::endl;
std::cout << "10. 统计政治面貌学生人数" << std::endl;
std::cout << "11. 统计班级学生人数" << std::endl;
std::cout << "0. 退出程序" << std::endl;
}
int main() {
while (true) {
displayMenu();
int option;
std::cout << "请输入选项: ";
std::cin >> option;
if (option == 0) {
break;
}
switch (option) {
case 1:
browseStudentInfo();
break;
case 2:
sortStudentInfo(option);
break;
case 3:
sortStudentInfo(option);
break;
case 4:
sortStudentInfo(option);
break;
case 5:
sortStudentInfo(option);
break;
case 6:
sortStudentInfo(option);
break;
case 7: {
int searchOption;
std::string keyword;
std::cout << "请输入搜索选项: ";
std::cin >> searchOption;
std::cout << "请输入关键词: ";
std::cin >> keyword;
searchStudentInfo(searchOption, keyword);
break;
}
case 8:
countByGender();
break;
case 9:
countByBirthYear();
break;
case 10:
countByPoliticalStatus();
break;
case 11:
countByClass();
break;
default:
std::cout << "无效的选项!" << std::endl;
break;
}
}
return 0;
}
这种直接拿chatgpt一搜全是。
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string studentId;
string name;
int age;
string gender;
string birthDate;
string politicalStatus;
string hometown;
string address;
string phone;
string email;
};
vector<Student> students;
void displayMenu() {
cout << "1. 学生信息录入" << endl;
cout << "2. 学生信息浏览" << endl;
cout << "3. 学生信息排序和查询" << endl;
cout << "4. 信息统计" << endl;
cout << "5. 学生信息的删除与修改" << endl;
cout << "0. 退出程序" << endl;
cout << "请输入菜单选项:";
}
void addStudent() {
Student student;
cout << "请输入学生信息:" << endl;
cout << "学号: ";
cin >> student.studentId;
cout << "姓名: ";
cin >> student.name;
cout << "年龄: ";
cin >> student.age;
cout << "性别: ";
cin >> student.gender;
cout << "出生年月: ";
cin >> student.birthDate;
cout << "政治面貌: ";
cin >> student.politicalStatus;
cout << "籍贯: ";
cin >> student.hometown;
cout << "家庭住址: ";
cin >> student.address;
cout << "电话: ";
cin >> student.phone;
cout << "E-mail: ";
cin >> student.email;
students.push_back(student);
// 将学生信息写入文件
ofstream file("students.txt", ios::app);
file << student.studentId << " "
<< student.name << " "
<< student.age << " "
<< student.gender << " "
<< student.birthDate << " "
<< student.politicalStatus << " "
<< student.hometown << " "
<< student.address << " "
<< student.phone << " "
<< student.email << endl;
file.close();
cout << "学生信息录入成功!" << endl;
}
void viewStudents() {
cout << "学生信息如下:" << endl;
for (const auto& student : students) {
cout << "学号: " << student.studentId << endl;
cout << "姓名: " << student.name << endl;
cout << "年龄: " << student.age << endl;
cout << "性别: " << student.gender << endl;
cout << "出生年月: " << student.birthDate << endl;
cout << "政治面貌: " << student.politicalStatus << endl;
cout << "籍贯: " << student.hometown << endl;
cout << "家庭住址: " << student.address << endl;
cout << "电话: " << student.phone << endl;
cout << "E-mail: " << student.email << endl;
cout << endl;
}
}
bool compareByStudentId(const Student& s1, const Student& s2) {
return s1.studentId < s2.studentId;
}
bool compareByName(const Student& s1, const Student& s2) {
return s1.name < s2.name;
}
bool compareByGender(const Student& s1, const Student& s2) {
return s1.gender < s2.gender;
}
bool compareByBirthDate(const Student& s1, const Student& s2) {
return s1.birthDate < s2.birthDate;
}
bool compareByHometown(const Student& s1, const Student& s2) {
return s1.hometown < s2.hometown;
}
void sortAndQueryStudents() {
cout << "请选择排序方式:" << endl;
cout << "1. 按学号排序" << endl;
cout << "2. 按姓名排序" << endl;
cout << "3. 按性别排序" << endl;
cout << "4. 按出生年月排序" << endl;
cout << "5. 按籍贯排序" << endl;
cout << "请输入排序选项:";
int option;
cin >> option;
switch (option) {
case 1:
sort(students.begin(), students.end(), compareByStudentId);
break;
case 2:
sort(students.begin(), students.end(), compareByName);
break;
case 3:
sort(students.begin(), students.end(), compareByGender);
break;
case 4:
sort(students.begin(), students.end(), compareByBirthDate);
break;
case 5:
sort(students.begin(), students.end(), compareByHometown);
break;
default:
cout << "无效的选项!" << endl;
return;
}
viewStudents();
}
void countStudentsByGender() {
int maleCount = 0;
int femaleCount = 0;
for (const auto& student : students) {
if (student.gender == "男") {
maleCount++;
} else if (student.gender == "女") {
femaleCount++;
}
}
cout << "男生人数:" << maleCount << endl;
cout << "女生人数:" << femaleCount << endl;
}
void countStudentsByBirthYear() {
cout << "请输入统计年份:";
int year;
cin >> year;
int count = 0;
for (const auto& student : students) {
string birthYear = student.birthDate.substr(0, 4);
if (stoi(birthYear) == year) {
count++;
}
}
cout << year << "年出生的学生人数:" << count << endl;
}
void countStudentsByHometown() {
cout << "请输入统计籍贯:";
string hometown;
cin >> hometown;
int count = 0;
for (const auto& student : students) {
if (student.hometown == hometown) {
count++;
}
}
cout << hometown << "籍贯的学生人数:" << count << endl;
}
void deleteStudent() {
cout << "请输入要删除的学生的学号:";
string studentId;
cin >> studentId;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->studentId == studentId) {
students.erase(it);
cout << "学生信息删除成功!" << endl;
return;
}
}
cout << "未找到该学生的信息!" << endl;
}
void modifyStudent() {
cout << "请输入要修改的学生的学号:";
string studentId;
cin >> studentId;
for (auto& student : students) {
if (student.studentId == studentId) {
cout << "请输入修改后的学生信息:" << endl;
cout << "学号: ";
cin >> student.studentId;
cout << "姓名: ";
cin >> student.name;
cout << "年龄: ";
cin >> student.age;
cout << "性别: ";
cin >> student.gender;
cout << "出生年月: ";
cin >> student.birthDate;
cout << "政治面貌: ";
cin >> student.politicalStatus;
cout << "籍贯: ";
cin >> student.hometown;
cout << "家庭住址: ";
cin >> student.address;
cout << "电话: ";
cin >> student.phone;
cout << "E-mail: ";
cin >> student.email;
cout << "学生信息修改成功!" << endl;
return;
}
}
cout << "未找到该学生的信息!" << endl;
}
int main() {
ifstream file("students.txt");
if (file.is_open()) {
string studentId, name, gender, birthDate, politicalStatus, hometown, address, phone, email;
int age;
while (file >> studentId >> name >> age >> gender >> birthDate >> politicalStatus >> hometown >> address >> phone >> email) {
Student student{studentId, name, age, gender, birthDate, politicalStatus, hometown, address, phone, email};
students.push_back(student);
}
file.close();
}
int option;
while (true) {
displayMenu();
cin >> option;
cout << endl;
switch (option) {
case 1:
addStudent();
break;
case 2:
viewStudents();
break;
case 3:
sortAndQueryStudents();
break;
case 4:
cout << "请选择统计方式:" << endl;
cout << "1. 按性别统计学生人数" << endl;
cout << "2. 按出生年统计学生人数" << endl;
cout << "3. 按籍贯统计学生人数" << endl;
cout << "请输入统计选项:";
int statOption;
cin >> statOption;
cout << endl;
switch (statOption) {
case 1:
countStudentsByGender();
break;
case 2:
countStudentsByBirthYear();
break;
case 3:
countStudentsByHometown();
break;
default:
cout << "无效的选项!" << endl;
break;
}
break;
case 5:
cout << "请选择操作:" << endl;
cout << "1. 删除学生信息" << endl;
cout << "2. 修改学生信息" << endl;
cout << "请输入操作选项:";
int op;
cin >> op;
cout << endl;
switch (op) {
case 1:
deleteStudent();
break;
case 2:
modifyStudent();
break;
default:
cout << "无效的选项!" << endl;
break;
}
break;
case 0:
cout << "程序已退出。" << endl;
return 0;
default:
cout << "无效的选项!" << endl;
break;
}
cout << endl;
}
return 0;
}
每天都有人问这种,这种你网上搜啊,一大堆
在主函数中,提示用户输入节点个数n,然后提示用户输入指令,并进行相应操作
针对学生管理信息系统,您可以考虑以下几个功能的实现:
示例代码:
#include <iostream>
#include <string>
using namespace std;
class Student {
public:
string id; // 学号
string name; // 姓名
char gender; // 性别
int age; // 年龄
// ... 其他属性和方法
};
int main() {
const int MAX_STUDENT = 100; // 最大学生数
Student students[MAX_STUDENT]; // 学生数组
// 从键盘输入学生信息,并添加到数组中
int numStudents; // 学生数
cout << "请输入学生数: ";
cin >> numStudents;
for (int i = 0; i < numStudents; i++) {
cout << "请输入学号、姓名、性别(男/女)、年龄: ";
cin >> students[i].id >> students[i].name >> students[i].gender >> students[i].age;
// ... 输入其他属性
}
// TODO: 将学生信息保存到文件中
return 0;
}
示例代码:
// 实现一个哈希表,将学生对象以学号作为键值存储
class StudentHashTable {
public:
void add(const Student& student) {
// TODO: 实现添加操作
}
void remove(const string& studentId) {
// TODO: 实现删除操作
}
Student* find(const string& studentId) {
// TODO: 实现查找操作
return nullptr;
}
void update(const string& studentId, const Student& newStudent) {
Student* student = find(studentId);
if (student != nullptr) {
*student = newStudent;
}
}
// ... 其他操作
};
示例代码:
// 实现一个哈希表,将学生对象以学号作为键值存储
class StudentHashTable {
public:
void add(const Student& student) {
// TODO: 实现添加操作
}
void remove(const string& studentId) {
// TODO: 实现删除操作
}
// ... 其他操作
};
// 从哈希表中删除学生对象
void deleteStudent(StudentHashTable& hashTable, const string& studentId) {
hashTable.remove(studentId);
}
示例代码:
// 输出学生信息
void printStudent(const Student& student) {
cout << student.id << " " << student.name << " " << student.gender << " " << student.age << endl;
// ... 输出其他属性
}
// 输出所有学生信息
void printAllStudents(const StudentHashTable& hashTable) {
// 遍历哈希表中的所有键值对,输出学生信息
// TODO: 实现遍历操作
Student* student = nullptr;
while ((student = hashTable.getNextStudent()) != nullptr) {
printStudent(*student);
}
}
// 从哈希表中查找并输出某个学生的信息
void findAndPrintStudent(StudentHashTable& hashTable, const string& studentId) {
Student* student = hashTable.find(studentId);
if (student != nullptr) {
printStudent(*student);
}
}
示例代码:
// 比较器类,用于为sort算法提供排序规则
class StudentComparator {
public:
bool operator()(const Student& s1, const Student& s2) {
// 按学号升序排列
return s1.id < s2.id;
}
};
void sortStudents(Student students[], int numStudents) {
sort(students, students + numStudents, StudentComparator());
}
需求to我,价低