用c++写一份代码,为宿舍管理人员编写一个宿舍管理查询软件程序设计要求:包括学生信息、宿舍信息、住宿信息,学生信息按关键字(姓名、学号)进行排序(排序方法自选,不能相同);查询: (用二分查找实现以下操作) 按姓名查询按学号查询 (用顺序查找实现以下操作) 按房号查询。要操作试范。
时间: 2024-02-16 13:05:15 浏览: 124
C++宿舍管理查询系统
好的,我可以为您提供一个简单的代码框架,您可以根据需求进行修改和完善:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct Student {
char name[20];
char id[10];
// 其他信息
};
struct Dormitory {
char room[10];
// 其他信息
};
struct Accommodation {
char name[20];
char id[10];
char room[10];
};
// 定义一些函数来实现排序和查询功能
int main() {
// 读取数据文件
// 对学生信息按关键字进行排序
// 实现交互工作方式
return 0;
}
```
接下来,我们需要实现排序和查询功能的函数。可以参考以下代码:
```c++
// 按姓名排序
bool cmp_by_name(Student s1, Student s2) {
return strcmp(s1.name, s2.name) < 0;
}
// 按学号排序
bool cmp_by_id(Student s1, Student s2) {
return strcmp(s1.id, s2.id) < 0;
}
// 二分查找
int binary_search_by_name(Student* students, int n, char* name) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (strcmp(students[mid].name, name) == 0) {
return mid;
} else if (strcmp(students[mid].name, name) < 0) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int binary_search_by_id(Student* students, int n, char* id) {
// 类似实现按姓名查询的函数
}
// 顺序查找
int sequential_search_by_room(Accommodation* accommodations, int n, char* room) {
for (int i = 0; i < n; i++) {
if (strcmp(accommodations[i].room, room) == 0) {
return i;
}
}
return -1;
}
```
最后,我们需要在主函数中实现交互工作方式,可以参考以下代码:
```c++
int main() {
// 读取数据文件
// 对学生信息按关键字进行排序
sort(students, students + n, cmp_by_name);
// 或者:sort(students, students + n, cmp_by_id);
// 实现交互工作方式
while (true) {
cout << "请选择要查询的方式:" << endl;
cout << "1. 按姓名查询" << endl;
cout << "2. 按学号查询" << endl;
cout << "3. 按房号查询" << endl;
int choice;
cin >> choice;
if (choice == 1) {
cout << "请输入要查询的姓名:" << endl;
char name[20];
cin >> name;
int index = binary_search_by_name(students, n, name);
if (index == -1) {
cout << "未找到该学生信息!" << endl;
} else {
// 输出学生信息
}
} else if (choice == 2) {
cout << "请输入要查询的学号:" << endl;
// 类似实现按姓名查询的代码
} else if (choice == 3) {
cout << "请输入要查询的房号:" << endl;
char room[10];
cin >> room;
int index = sequential_search_by_room(accommodations, m, room);
if (index == -1) {
cout << "未找到该住宿信息!" << endl;
} else {
// 输出住宿信息
}
} else {
cout << "无效的选择!" << endl;
}
}
return 0;
}
```
希望这些代码能够帮助到您。如果您有任何问题或者需要更多的帮助,请随时告诉我。
阅读全文