### C语言课程设计报告:飞机订票系统
#### 一、题目分析与需求说明
**题目原文:**设计一个飞机订票系统,该系统能够管理一定数量(假设为n个)的航班信息,包括航班号、起始站、终点站、飞行时间、乘员定额及余票量等。系统需具备以下功能:
1. **航班信息录入**:将航班信息存入文件。
2. **航班信息浏览**:查看所有航班的信息。
3. **航班信息查询**:支持按航班号、起点站、终点站、飞行时间等多种方式进行查询。
#### 二、需求分析
- **录入功能**:用户能够录入航班的基本信息,并且这些信息能够被持久化地存储起来。
- **浏览功能**:用户可以查看所有航班的信息,例如航班号、起点站、终点站、飞行时间等。
- **查询功能**:用户可以根据不同的条件进行查询,如航班号、起点站、终点站、飞行时间等,查询结果应包括航班的状态(如是否满座)。
#### 三、整体设计与模块划分
- **航班信息录入模块**:负责接收用户的输入,并将信息保存到文件中。
- **航班信息浏览模块**:展示所有航班的信息。
- **航班信息查询模块**:根据用户提供的查询条件筛选并展示符合条件的航班信息。
#### 四、代码设计
**航班信息录入模块**
1. **航班信息录入函数**:`void add();`
- 功能:允许用户录入航班信息,并将其保存到文件中。
- 流程:提示用户输入航班的相关信息,然后将这些信息保存到结构体数组中,并最终写入文件。
2. **航班信息浏览函数**:`void print();`
- 功能:遍历结构体数组中的航班信息,并将其展示出来。
- 流程:循环遍历结构体数组,使用`PRINTF`宏定义的格式打印每条航班信息。
3. **航班信息查询函数**:`void search();`
- 功能:根据用户提供的查询条件,查找匹配的航班信息。
- 流程:提示用户输入查询条件,然后遍历结构体数组,检查每个航班是否满足条件,并显示符合条件的结果。
**示例代码片段**
```c
void add() {
// 输入航班信息
printf("请输入航班号:");
scanf("%d", &s[m].num);
printf("请输入起始站:");
scanf("%s", s[m].start);
printf("请输入终点站:");
scanf("%s", s[m].over);
printf("请输入飞行时间:");
scanf("%s", s[m].time);
printf("请输入机票数量:");
scanf("%d", &s[m].count);
m++; // 更新航班数量
}
void print() {
// 输出航班信息
for (int i = 0; i < m; i++) {
printf(PRINT, s[i].num, s[i].start, s[i].over, s[i].time, s[i].count);
}
}
void search() {
int query_num;
printf("请输入要查询的航班号:");
scanf("%d", &query_num);
int found = 0;
for (int i = 0; i < m; i++) {
if (s[i].num == query_num) {
printf("查询结果:\n");
printf(PRINT, s[i].num, s[i].start, s[i].over, s[i].time, s[i].count);
found = 1;
break;
}
}
if (!found) {
printf("未找到匹配的航班信息。\n");
}
}
```
#### 五、总结
通过上述设计和实现,我们构建了一个简单的飞机订票系统。该系统实现了基本的航班信息录入、浏览和查询功能。未来还可以进一步扩展更多实用功能,比如预订机票、取消预订、修改航班信息等。此外,为了提高用户体验,可以考虑使用图形用户界面来代替命令行界面,使操作更加直观简便。