《程序设计基础课程设计》
一、课程设计题目及内容
程序名称:飞机订票系统
功能要求:假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。
二、主要设计思路
以链表作为数据结构存储航班等信息,然后围绕链表编写一些函数来实现一堆功能
定义一个全局范围内的头节点,然后在其他子函数中可以进行链表数据的遍历,存储信息,查找,删除等功能
能够在录入的同时将航班信息打印到文件中
- 程序结构分析
本次飞机订票系统导入了除基本库函数预处理命令<stdio.h>外的两个预处理命令,定义一个符号常量,两个结构体(航班信息和乘客信息),一个全局变量,七个自定义子函数,分别实现主菜单界面,录入信息,写入文件,显示信息,查询信息,订票,退票等功能
四、程序源码及注释
- 预处理命令
导入<stdlib.h>调用malloc动态分配函数
基本结构 (指针数据类型)malloc (数据类型字节大小)
导入<string.h>调用strcmp函数进行对链表指定元素的查询,如在find函数里查找指定航班号,遍历链表,用strcmp函数进行匹配查找
基本结构 strcmp(字符串1,字符串2) 如果相等返回0值,否则返回-1
定义符号常量为指定的文件地址
- 结构体定义
航班信息结构体TIC定义
结构体内包含基本的一些航班属性,以及一个同类型的指向下一个节点的指针
乘客信息结构体
PAS定义
- 全局变量
全局的头节点变量,可以在所有的自定义里函数自由使用
- 函数声明
- main函数定义
在初始时定义一个整型变量,记录下用户输入的数字,通过一个死循环来实现与用户的互动,通过switich...case 选择结构执行相关的功能,当用户退出系统时,return带回一个0值让循环终止
- 自定义子函数定义
- .menu函数
通过基本的printf函数打印基本的菜单栏视图,用来提示用户使用基本功能
- .add函数
定义一个接受信息的节点,并通过malloc函数动态分配一块内存,提示用户输入航班的各个基本信息,然后从头节点开始判断节点内是否有值,如果没有则将接收到信息赋值给该节点,不断遍历直至链表结束
- .write函数
定义一个文件类型的指针,打开对应文件,如果文件地址为空则退出并提示重新输入,文件访问类型为追加“at+”,写入信息不会覆盖之前写入的信息
定义一个p节点,让其等于head,然后从头节点开始用fprintf函数遍历将信息写入文件,执行操作完成后用fclose函数关闭文件
- .display函数
定义一个p节点,让其等于head,然后从头节点开始将节点信息输出打印
- .find函数
定义一个choice选择变量,让用户选择查询方式,然后执行不同的查询方法
定义两个节点,分别进行从头节点开始的遍历,利用strcmp函数匹配对应的字符串信息,如果带回值则查询成功,输出当前节点的航班信息,如果没有查到指定航班信息,提示用户查询失败
- .book函数
定义一个乘客类型的结构体指针,提示用户输入个人的基本信息进行购票,输入完成后
显示目前所有的航班信息,提示用户输入要购买的航班号,用户输入后提示用户购买成功
定义一个p节点从头节点开始遍历,然后匹配到对应购买的航班号后将对应的剩余票数减一,然后输出对应信息
- .refund函数
定义一个char类型的confirm变量,询问用户是否确认退票,如果接收到y,让用户输入要退订的航班号,从头节点开始遍历,匹配到对应要退订的航班号后,将对应剩余票数加一,如果接收到n,提示用户退票成功
五、运行实例
1.录入两组航班信息并显示(控制台显示和文件显示)
- 查询指定航班
航班号查询
终点站查询
3.购买机票
4.退订机票
- 退出系统