目 录
设计目的………………………………………………………1 总体设计………………………………………………………1 详细设计………………………………………………………3 调试与测试……………………………………………………4 源程序代码……………………………………………4 程序运行截图…………………………………………16 仍存在的问题…………………………………………18 心得体会………………………………………………………18 设计进度表……………………………………………………19 参考文献………………………………………………………20
______________________________________________________________________________________________________________
一、正文
(一)设计目的:
假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。设计一飞机订票系统,使之能提供下列服务:
1、航班信息录入功能(航班信息用文件保存)
包括航班号、起始站、终点站、机票总数、已售机票数; 2、航班信息浏览功能
3、查询航线:按航班号查询、按终点站查询、按航线查询 4、承办订票和退票业务(可选项) 5、修改航班信息 6、删除航班信息 (二)总体设计:
编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录入、浏览、查询、修改、删除以及订票、退票的功能。根据题目要求,首先要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。这就是看到题目后的最初的思路。
因为飞机票管理系统含有各航班的各项信息,如航班号、航线、飞行时间、机票数目等必要信息,综合考虑决定用结构体数组比较合适,根据题目要求定义如下结构体类型:
头文件包含、全局变量定义和结构体定义源代码: #include
#define N 1000 //定义最多的航班数 #define
PRT
\[i].selled //定义输出格式
#define LB \航班号 起始站 终点站 时 间 机票总数 已售票数 \\n\定义打印列表格式
struct air {int num; char start[20]; char over[20]; char time[10]; int count;//机票总数
精品资料
______________________________________________________________________________________________________________
int selled;//已预定机票总数 }s[N]; int i,m=0; char ii[10];
//定义全局变量,记录下航班信息的数量 //用来选择是否继续的变量
大概思路就是这样!
详细设计(定义的每个函数均作介绍): 1)初始化界面函数(face函数)
在程序开始执行时调用该函数,在屏幕上打印出初始界面!并选择要执行的操作!
2)信息输入函数(input函数)
该函数里面调用for循环控制,该函数中用到一个全局变量k,用来控制该函数被再次调用时可以在已存放信息结构体后面继续输入数据,每当一个完整的航班信息输入完毕后,会提示是否输入下一个信息!按\结束输入!然后调用下面要介绍的信息保存函数(save函数)!保存完毕后退回到主菜单!
3)信息保存函数(save函数)
由于本程序设计时当输入机票总数不是正数时就会结束保存航班信息,所以进入save函数时首先判断机票总数是否大于0,大于0时候开始进入主体部分执行!主要过程是先打开文件,文件打开成功后调用文件格式输出函数(fprinf函数)将信息保存到文件中区!
4)文件读取函数(read函数)
该函数首先打开保存飞机票信息的文件,然后将保存的信息写到飞机信息的结构体数组里面去(调用格式输入函数fscanf),并将航班信息输出到屏幕上!输入完毕后关闭文件!
5)信息打印函数(print函数)
该函数只是负责把调用read函数,并打印出航班信息输出事的一些辅助信息! 6)航班信息查找函数
本函数用do.....while 循环控制结构,进入函数后选择查询方式(可以按航班号、终点站、航线查询),方式选择后用switch语句飞机的航班号(或者起始站、终点站)!从switch语句出来后,首先调用文件读取函数(read函数),输出所有航班信息到屏幕上,然后在if语句中判断刚才所输入飞机的航班号(或者起始站、终点站)与数组中那个航班信息符合,找到后打印出来!循环结束后,输入“yes”(“no”),while判断输入的条件继续(终止查找)!选择终止查找后返回主菜单! 7)航班信息删除函数(Delete)
航班删除模块与查找函数类似,也是用的do.....while 循环控制结构,不同时要先输入密码才能进入函数!进入函数后要选择删除方式(按航班号、航线)删除,输入要删除的航班号(航线)后,比如说选择按航班号删除,找到要删除的航班数组下标i后,用for(int j=i;j 删除完毕后打印出删除过的航班信息列表,然后选择“no”结束该函数,返回到主菜单! 8)订票函数(Book函数) 精品资料 ______________________________________________________________________________________________________________ 首先调用查询函数(search函数),找到要预订机票的航班,然后输入要顶的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息! 9)退票函数(Refund()函数 与订票函数类似,首先调用查询函数(search函数),找到要预订机票的航班,然后输入要退的机票数目,根据输入的机票书修改已售机票书数值!然后保存信息! 10)修改函数(Modify函数) 该函数与输入函数类似,把数组里面的信息重新输入一遍达到修改航班信息的功能! 11)main函数 输入密码后进入main函数,然后main函数负责调用以上程序就行了! 源程序代码: #include #define N 200 struct air {int num; char start[20]; char over[20]; char time[10]; int count;//机票总数 int selled;//已预定机票总数 }s[N]; #define PRT \[i].selled //定义输出格式 #define LB \航班号 起始站 终点站 时 间 机票总数 已售票数 \\n\定义打印列表格式 void face(); void input(); void print(); void search(); void Delete(); void Booking(); void Modify(); void Refund(); void save(); void read(); int i,m=0,k=0; 精品资料 ______________________________________________________________________________________________________________ void face() {system(\ puts(\★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\ puts(\★* 飞机票管理系统欢迎您 *★\ puts(\★********************************************************★\ puts(\★* 你可以选择下面的操作: *★\ puts(\★* 1.输入航班信息 *★\ puts(\★* 2.浏览航班信息 *★\ puts(\★* 3.查询航班信息 *★\ puts(\★* 4.删除航班信息 *★\ puts(\★* 5.订票信息 *★\ puts(\★* 6.修改信息 *★\ puts(\★* 7.退票信息 *★\ puts(\★* 0.退出 *★\ puts(\★********************************************************★\ puts(\★* 制作人:##### 学号:111111111111 *★\ puts(\★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\} void main() { //delay(1000); system(\设置背景和字体颜色 //system(\ int j; char f[]=\设置密码 int y; printf(\飞 机 票 管 理 系 统\\n\\n\ while(1){ printf(\请 输 入 密 码 进 入 系 统:\\n \ scanf(\读取密码 if(strcmp(f,\ { while(1) { system(\ face(); printf(\请在0-7中选择以回车键结束: \ scanf(\ system(\ switch(j) { case 1: input();//调用输入模块 精品资料