//录入宿舍信息 void add_dorm(Dormitory* dorms, int& size) { Dormitory dorm; cout << "请输入宿舍号:"; cin >> dorm.dorm_num; cout << "请输入性别(m/f):"; cin >> dorm.gender; cout << "请输入容纳人数:"; cin >> dorm.capacity; cout << "请输入住宿费用:"; cin >> dorm.fee; dorm.occupied = 0; dorm.names = new string[dorm.capacity]; dorms[size] = dorm; size++; cout << "宿舍号 "<<dorm.dorm_num<<" 添加成功!" << endl; }
时间: 2024-01-19 20:02:25 浏览: 26
这是一个函数,用于向一个Dormitory类型的数组中添加新的宿舍信息。具体步骤如下:
1. 定义一个Dormitory类型的变量dorm。
2. 要求用户输入宿舍号、性别、容纳人数和住宿费用,分别保存到dorm的对应属性中。
3. 将dorm的occupied属性赋值为0,表示该宿舍当前没有人住。
4. 动态分配一个string类型的数组,大小为dorm的capacity属性,用于存储住宿该宿舍的学生姓名。
5. 将dorm添加到dorms数组的末尾,并将size加1。
6. 输出添加成功的信息。
需要注意的是,该函数假设调用者已经创建好了一个Dormitory类型的数组dorms,并且将该数组的大小保存在变量size中。同时,为了避免内存泄漏,需要在程序的其他地方负责释放每个宿舍的names数组。
相关问题
当宿舍信息被插入时,自动检查宿舍号是否已存在。 CREATE TRIGGER check_dorm_id BEFORE INSERT ON dormitory FOR EACH ROW BEGIN DECLARE dorm_count INT; SELECT COUNT(*) INTO dorm_count FROM dormitory WHERE dorno = NEW.dorno; IF dorm_count > 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '该宿舍号已存在'; END IF; END;错误追踪
这个错误追踪可能是由于以下原因之一导致的:
1. 缺少 END IF 语句:在 IF 语句中,你需要使用 END IF 来结束它。确保在语句中适当地使用 END IF。
2. 缺少分号:在 DECLARE 语句和 SIGNAL 语句之间需要使用分号。确保在语句中适当使用分号。
3. 语法错误:在语句中可能存在语法错误。请检查所有语句是否正确,并确保它们符合 MySQL 的语法规则。
希望这些建议可以帮助你找到问题所在并解决它。如果你仍然无法解决问题,请提供更多错误信息,我会尽力帮助你。
请用C++语言写出以下能完整运行的程序并注释 题目:学生宿舍管理系统设计 功能:实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等基本要求:1设计简单的菜单,能够进行系统功能选择。2实现信息的录入功能。3在已有信 息的基础上添加新的记录。4删除指定房间号的记录。5修改指定房间号的记录 6实现信 息的浏览功能7按房间号查询功能 8按已入住人数排序功能
很高兴帮您写出该程序。以下是一个简单的学生宿舍管理系统设计的 C++ 程序,带有注释解释每个部分的功能:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 学生宿舍信息结构体
struct Dormitory {
int building_number; // 楼号
int room_number; // 房间号
double area; // 面积
int capacity; // 容纳人数
int occupied; // 已入住人数
// 重载小于运算符,用于排序
bool operator < (const Dormitory &dorm) const {
return occupied < dorm.occupied;
}
// 打印宿舍信息
void print() const {
cout << "楼号: " << building_number << endl;
cout << "房间号: " << room_number << endl;
cout << "面积: " << area << endl;
cout << "容纳人数: " << capacity << endl;
cout << "已入住人数: " << occupied << endl;
}
};
// 学生宿舍管理系统类
class DormitoryManagementSystem {
public:
// 构造函数
DormitoryManagementSystem() {
// 初始化宿舍信息
dorms.push_back({ 1, 101, 25.5, 4, 2 });
dorms.push_back({ 1, 102, 30.1, 3, 1 });
dorms.push_back({ 2, 201, 27.8, 2, 0 });
dorms.push_back({ 2, 202, 28.5, 2, 1 });
dorms.push_back({ 3, 301, 35.2, 4, 3 });
dorms.push_back({ 3, 302, 36.4, 4, 4 });
}
// 显示菜单
void show_menu() {
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;
}
// 录入宿舍信息
void enter_dorm_info() {
Dormitory dorm;
cout << "请输入宿舍信息:" << endl;
cout << "楼号: ";
cin >> dorm.building_number;
cout << "房间号: ";
cin >> dorm.room_number;
cout << "面积: ";
cin >> dorm.area;
cout << "容纳人数: ";
cin >> dorm.capacity;
cout << "已入住人数: ";
cin >> dorm.occupied;
dorms.push_back(dorm);
cout << "录入成功!" << endl;
}
// 添加宿舍信息
void add_dorm_info() {
int room_number;
cout << "请输入要添加信息的宿舍房间号: ";
cin >> room_number;
auto iter = find_if(dorms.begin(), dorms.end(), [room_number](const Dormitory &dorm) {
return dorm.room_number == room_number;
});
if (iter == dorms.end()) {
cout << "宿舍信息不存在!" << endl;
}
else {
Dormitory dorm;
cout << "请输入宿舍信息:" << endl;
cout << "楼号: ";
cin >> dorm.building_number;
cout << "房间号: ";
cin >> dorm.room_number;
cout << "面积: ";
cin >> dorm.area;
cout << "容纳人数: ";
cin >> dorm.capacity;
cout << "已入住人数: ";
cin >> dorm.occupied;
*iter = dorm;
cout << "添加成功!" << endl;
}
}
// 删除宿舍信息
void delete_dorm_info() {
int room_number;
cout << "请输入要删除信息的宿舍房间号: ";
cin >> room_number;
auto iter = find_if(dorms.begin(), dorms.end(), [room_number](const Dormitory &dorm) {
return dorm.room_number == room_number;
});
if (iter == dorms.end()) {
cout << "宿舍信息不存在!" << endl;
}
else {
dorms.erase(iter);
cout << "删除成功!" << endl;
}
}
// 修改宿舍信息
void modify_dorm_info() {
int room_number;
cout << "请输入要修改信息的宿舍房间号: ";
cin >> room_number;
auto iter = find_if(dorms.begin(), dorms.end(), [room_number](const Dormitory &dorm) {
return dorm.room_number == room_number;
});
if (iter == dorms.end()) {
cout << "宿舍信息不存在!" << endl;
}
else {
Dormitory dorm;
cout << "请输入宿舍信息:" << endl;
cout << "楼号: ";
cin >> dorm.building_number;
cout << "房间号: ";
cin >> dorm.room_number;
cout << "面积: ";
cin >> dorm.area;
cout << "容纳人数: ";
cin >> dorm.capacity;
cout << "已入住人数: ";
cin >> dorm.occupied;
*iter = dorm;
cout << "修改成功!" << endl;
}
}
// 浏览宿舍信息
void browse_dorm_info() {
cout << "所有宿舍信息:" << endl;
for (const auto &dorm : dorms) {
dorm.print();
cout << endl;
}
}
// 按房间号查询宿舍信息
void search_dorm_info() {
int room_number;
cout << "请输入要查询信息的宿舍房间号: ";
cin >> room_number;
auto iter = find_if(dorms.begin(), dorms.end(), [room_number](const Dormitory &dorm) {
return dorm.room_number == room_number;
});
if (iter == dorms.end()) {
cout << "宿舍信息不存在!" << endl;
}
else {
iter->print();
}
}
// 按已入住人数排序宿舍信息
void sort_dorm_info() {
sort(dorms.begin(), dorms.end());
cout << "按已入住人数排序后的宿舍信息:" << endl;
for (const auto &dorm : dorms) {
dorm.print();
cout << endl;
}
}
// 运行学生宿舍管理系统
void run() {
while (true) {
show_menu();
int choice;
cout << "请输入您的选择: ";
cin >> choice;
switch (choice) {
case 1:
enter_dorm_info();
break;
case 2:
add_dorm_info();
break;
case 3:
delete_dorm_info();
break;
case 4:
modify_dorm_info();
break;
case 5:
browse_dorm_info();
break;
case 6:
search_dorm_info();
break;
case 7:
sort_dorm_info();
break;
case 0:
cout << "谢谢使用!再见!" << endl;
return;
default:
cout << "选择无效!请重新输入!" << endl;
break;
}
}
}
private:
vector<Dormitory> dorms; // 存储宿舍信息
};
// 主函数
int main() {
DormitoryManagementSystem system;
system.run();
return 0;
}
```
这是一个比较简单的程序,但它具备了题目中要求的所有功能。您可以根据需要进行修改和扩展。