用c++编写宿舍管理查询软件 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求: (1)采用交互工作方式; (2)可以增加、删除、修改信息; (3)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序; (4) 查询: a.按姓名查询 ;b.按学号查询 ;c按房号查询 (5) 输出任一查询结果(可以连续操作)。
时间: 2023-06-15 15:03:14 浏览: 180
为宿舍管理人员编写一个宿舍管理查询系统
5星 · 资源好评率100%
以下是一个简单的宿舍管理查询软件的C++代码,实现了增加、删除、修改信息以及按姓名、学号、房号查询和数据文件排序的功能。
```c++
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int MAX_NUM = 1000; // 最大记录数
struct Student {
char name[20]; // 姓名
char id[10]; // 学号
char room[10]; // 房号
char tel[20]; // 联系电话
};
Student students[MAX_NUM];
int num = 0; // 记录数
// 比较函数,用于sort排序
bool cmp_name(const Student &a, const Student &b) {
return strcmp(a.name, b.name) < 0;
}
bool cmp_id(const Student &a, const Student &b) {
return strcmp(a.id, b.id) < 0;
}
bool cmp_room(const Student &a, const Student &b) {
return strcmp(a.room, b.room) < 0;
}
// 增加记录
void add_student() {
if(num == MAX_NUM) {
cout << "记录已满,无法添加!" << endl;
return;
}
cout << "请输入学生信息(姓名 学号 房号 联系电话):" << endl;
cin >> students[num].name >> students[num].id >> students[num].room >> students[num].tel;
num++;
cout << "添加成功!" << endl;
}
// 删除记录
void del_student() {
char id[10];
cout << "请输入要删除的学生学号:" << endl;
cin >> id;
int i;
for(i = 0; i < num; i++) {
if(strcmp(students[i].id, id) == 0) {
break;
}
}
if(i == num) {
cout << "未找到该学生!" << endl;
return;
}
for(; i < num - 1; i++) {
students[i] = students[i+1];
}
num--;
cout << "删除成功!" << endl;
}
// 修改记录
void modify_student() {
char id[10];
cout << "请输入要修改的学生学号:" << endl;
cin >> id;
int i;
for(i = 0; i < num; i++) {
if(strcmp(students[i].id, id) == 0) {
break;
}
}
if(i == num) {
cout << "未找到该学生!" << endl;
return;
}
cout << "请输入新的学生信息(姓名 学号 房号 联系电话):" << endl;
cin >> students[i].name >> students[i].id >> students[i].room >> students[i].tel;
cout << "修改成功!" << endl;
}
// 按姓名查询
void search_by_name() {
char name[20];
cout << "请输入要查询的学生姓名:" << endl;
cin >> name;
bool found = false;
for(int i = 0; i < num; i++) {
if(strcmp(students[i].name, name) == 0) {
cout << "姓名:" << students[i].name << " 学号:" << students[i].id << " 房号:" << students[i].room << " 联系电话:" << students[i].tel << endl;
found = true;
}
}
if(!found) {
cout << "未找到该学生!" << endl;
}
}
// 按学号查询
void search_by_id() {
char id[10];
cout << "请输入要查询的学生学号:" << endl;
cin >> id;
bool found = false;
for(int i = 0; i < num; i++) {
if(strcmp(students[i].id, id) == 0) {
cout << "姓名:" << students[i].name << " 学号:" << students[i].id << " 房号:" << students[i].room << " 联系电话:" << students[i].tel << endl;
found = true;
}
}
if(!found) {
cout << "未找到该学生!" << endl;
}
}
// 按房号查询
void search_by_room() {
char room[10];
cout << "请输入要查询的房号:" << endl;
cin >> room;
bool found = false;
for(int i = 0; i < num; i++) {
if(strcmp(students[i].room, room) == 0) {
cout << "姓名:" << students[i].name << " 学号:" << students[i].id << " 房号:" << students[i].room << " 联系电话:" << students[i].tel << endl;
found = true;
}
}
if(!found) {
cout << "未找到该房间!" << endl;
}
}
// 数据文件排序
void sort_data_file() {
sort(students, students+num, cmp_name); // 按姓名排序
ofstream fout("data.txt");
for(int i = 0; i < num; i++) {
fout << students[i].name << " " << students[i].id << " " << students[i].room << " " << students[i].tel << endl;
}
fout.close();
cout << "数据文件已按姓名排序!" << endl;
}
int main() {
ifstream fin("data.txt");
while(fin >> students[num].name >> students[num].id >> students[num].room >> students[num].tel) {
num++;
}
fin.close();
while(true) {
cout << "请选择操作(1.增加记录 2.删除记录 3.修改记录 4.按姓名查询 5.按学号查询 6.按房号查询 7.数据文件排序 0.退出):" << endl;
int choice;
cin >> choice;
switch(choice) {
case 1:
add_student();
break;
case 2:
del_student();
break;
case 3:
modify_student();
break;
case 4:
search_by_name();
break;
case 5:
search_by_id();
break;
case 6:
search_by_room();
break;
case 7:
sort_data_file();
break;
case 0:
exit(0);
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}
```
这个程序将学生信息存储在一个结构体数组中,并将数据文件作为数据的持久存储。它实现了基本的增加、删除、修改、查询和排序功能,可以作为一个简单的宿舍管理查询软件。
阅读全文