//录入宿舍信息 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 浏览: 171
这是一个函数,用于向一个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 的语法规则。
希望这些建议可以帮助你找到问题所在并解决它。如果你仍然无法解决问题,请提供更多错误信息,我会尽力帮助你。
int *lp; typedef struct { int credit; // 学分 int usual_score;//平时成绩 int exp_score;//实验成绩 int paper_score;//卷面成绩 float final_score;//综合成绩 float real_credit;//实得学分 char course_id[3]; // 课程编号 char course_name[10]; // 课程名称 }grade; typedef struct { char student_id[2]; // 学号 char name[10]; // 姓名 char gender; // 性别 int dorm_num; // 宿舍号码 long phone_num; //电话号码 grade data[MAX]; }student; typedef struct { student data[MAX];//数据域 int length;//表长 }Seqlist;引用学号数组
如果要引用学号数组,可以使用下标运算符 [] 来访问数组中的元素,例如:
```c
Seqlist list;
// 假设已经初始化了 list 数据域中的学生信息和学号数组
char student_id = list.data[0].student_id[0];
```
这里,list.data[0] 表示表中的第一个学生信息,.student_id[0] 表示该学生的学号数组中的第一个字符,这个字符会被赋值给 student_id。
需要注意的是,如果数组中有多个字符组成的学号,则需要使用循环结构遍历整个数组,例如:
```c
Seqlist list;
// 假设已经初始化了 list 数据域中的学生信息和学号数组
for (int i = 0; i < MAX; i++) {
char student_id = list.data[i].student_id[0];
// 处理学号数组中的第一个字符
// ...
}
```
这里使用了循环结构遍历整个学生信息数组,对于每个学生都可以访问其学号数组中的第一个字符。
阅读全文