C语言飞机售票自动服务系统.docx
《C语言飞机售票自动服务系统.docx》由会员分享,可在线阅读,更多相关《C语言飞机售票自动服务系统.docx(36页珍藏版)》请在冰豆网上搜索。
C语言飞机售票自动服务系统
第二阶段课程设计报告
课程名称:
《程序设计基础》
课程设计题目:
航空售票自动服务系统
学号:
姓名:
班级:
实训日期:
指导教师:
成绩:
一、概述
当今航空产业迅猛发展,而旅客购票比较不方便。
人工售票时,买票要排很长的队,而且需要的人力和物力都很多。
为了最大程度方便客户,采用自动售票系统。
该系统程序能载入1000个航班信息,管理员通过密码输入航班信息或修改航班信息,一般用户可以使用航班信息查询、订票、退票、浏览功能。
二、数据描述
1.数据对象描述
定义数据对象的属性及其对应的结构体类型,并要求加以适当的说明。
1、主菜单(显示主界面):
1输入航班信息2浏览航班信息
3航班查询系统4预订机票系统
5退订机票系统6载入航班信息
7修改航班信息8退出系统
通过选择不同的数字进入不同的功能界面。
主函数main通过调用函menu
()来实现主界面的实现。
然后menu()函数通过分别调用函数
enter()、browse()、menu1()、book()、back()、load()、del()
来实现不同功能的实现。
2、输入航班信息模块:
管理员通过输入正确密码才能对此进行操作,然后
根据系统提示进行信息输入操作,信息输入完毕,
按任意键返回主菜单。
Enter():
该函数通过调用函数input(inti)来实现对数据的输入,航
空信息保存在文件ticket.dat中。
航空机票信息的输入是通
过结构体数组PLANEti[i]实现的。
该结构体是以plane为
类型名的结构体,是一个全局结构体类型。
该结构体又包
含9个成员,分别是航空公司(company[])、航班号(flight[])
、起飞地点(Bplace[])、降落地点(Enplace[])、起飞时间
(date[])、降落时间(arrive[])、票价(intprice)、最大载
客量(intmax)、剩余票数(intnum),通过对结构体各个
成员的引用来实现航班信息数据的输入和存储。
3、浏览航班信息模块:
用户可以通过提示选择要浏览的航班个数来实现对
航班信息的浏览,浏览后按任意键返回主菜单。
Browse():
该函数通过打开由fp指向的文件,读取文件中的信息,然
后通过调用printf_one()来实现航班信息的显示。
该模块
用户通过自己选择浏览多少个航班信息。
4、航班信息查询模块:
该程序又由9大模块组成,用户通过选择不同的数
字进入不同的模块:
1按航空公司查询2按航班号查询3按起飞时间
4按到达时间查询5按起飞地点查询6按降落地
点查询7按航线查询8按时间排序
9返回主菜单
进入不同的模块后,用户根据提示进行操作。
Menu1():
主要通过调用search_comname()、search_airname()
search_time()、search_geton()、search_start()、
search_end()、search_flyway()和order()这些函数,
来实现以上9大功能。
5、机票预订模块:
该程序用户根据输入起飞地点、降落地点和起飞时间来
实现订购机票。
Book():
该程序模块调用search()函数,通过输入购票的起始地点、
降落地点和起飞时间进行购票。
6、退订机票模块:
用户通过输入航班代号来进行对机票的退订。
Back():
该程序块通过用户输入航班代号进行退票。
7、载入航班信息:
管理员通过输入密码将输入的航班信息保存到文件中。
Load():
管理员通过输入密码将信息载入到文件中。
8、修改航班信息:
管理员通过输入密码并调用文件来实现对航班信息的修
改和保存。
Del():
管理员通过输入密码来修改航班信息。
9、退出系统:
用户操作完后退出程序。
2.数据对象实例
以表格方式给出所定义数据对象的实例,并要求这些实例数据已输入系统并存储到数据文件中去了,可以通过查询功能进行检验。
a、主界面:
b、选择1,界面显示:
c、选择2,界面显示:
d、选择3,界面如下:
e、按1,界面如下:
f、选择4,界面如下:
g、选择5,界面如下:
h、选择6,界面如下:
i、选择7,界面如下:
f、选择8,显示界面如下:
三、功能及菜单描述
1.功能菜单设计(系统功能结构图)
2.主要功能描述
1、航班信息的输入通过函数enter()实现,输入密码(wanteng)后,再输入要输入的航班个数并赋值给i,然后调用函数input(inti),根据提示输入航班信息并将输入的信息通过fwrite()保存到由fp指向的文件中。
2、航班信息的浏览通过函数browse()实现,其通过fread()将航班信息由fp指向的文件读入到结构体数组ti[]中,并通过变量l记录存储的航班信息的个数,然后用户输入想要查看的航班个数并将其赋值给变量j,最后通过调用printf_one()显示航班信息。
3、航班信息查询通过函数menu1()实现。
该函数通过调用通过调用search_comname()、search_airname()等函数来实现航班信息的查询。
如search_comname()函数通过fread()将航班信息由fp指向的文件读入到结构体数组ti[]中,并通过变量l记录存储的航班信息的个数,通过for()语句和字符串比较函数strcmp()进行比较,若比较相等便输出该航班信息。
其他查询函数类似。
四、系统结构及函数描述
1.系统文件结构图
Main()函数:
Enter()函数:
航班信息输入
Browse()函数:
航班信息浏览
Menu1()函数:
航班信息查询
Book()函数:
机票预订
2.函数原型及功能描述
a、main()函数:
调用menu()函数,显示主菜单。
b、menu()函数:
通过分别调用函数enter()、browse()、menu1()、
book()、back()、load()、del()来实现不同功能的实现。
c、enter()函数:
航班信息输入,通过调用input(inti),依次输入航
信息,并通过fwrite()函数将信息保存到文件中。
d、browse()函数:
浏览航班信息,通过fread()函数将航班信息读
出到结构体数组ti[]中,最后调用printf_one()将信息输出。
e、menu1()函数:
查询航班信息,通过调用search_comname()、
Search_airname()、search_time()、search_geton()、
search_start()、Search_end()、search_flyway()和order()来
实现9大功能。
Search_comname()函数:
按航空公司查询。
先通过函数fread()
将保存在文件中的航班信息读取并保存到结构体数组ti[]中,同时
用变量l记录有多少个航班信息,然后用for()语句并用strcmp
()逐个比较,通过比较,若比较匹配,则显示出航班信息,反之
则显示“对不起,您要查找的航班信息不存在!
”(其他查询函数的
功能实现类似。
)
Order()函数:
按时间排序。
该函数是通过冒泡法将各航班由时
间从小到大排序并显示。
f、back()函数:
机票退订函数。
用户通过输入航班代号来进行对机
票的退订,其航班代号通过strcmp()进行比较,实现该功能。
g、book()函数:
预订机票函数。
该函数通过调用函数search()进
行订票信息的查找,search()函数通过fread()函数对存储在文
件中的航班信息读取并保存到结构体数组ti[]中,同时用变量l记录
有多少个航班信息,然后依次输入起飞地点、降落地点和起飞时间
并通过for()语句和strcmp()函数对输入的三个数据依次比较,
若有符合的信息,则显示订票成功,反之,则显示订票失败。
h、load():
航班信息的载录。
通过对文件的调用来实现航班信息的载
录。
五、总结
感受和收获:
通过这次c语言程序设计的加强训练,我感觉自己所学的关于
C语言的知识学以致用,让我受益匪浅。
不仅巩固了自己以前学的知识,而且还增加了一些关于c其他的知识点,自己实际操作能力得到提高。
为以后的编程和软件开发打下了一定的基础,而且增强了我对c语言编程的信心和兴趣。
由于这次c语言编程是解决实际生活中的问题,需要运用大量c语言知识。
就如我的程序中,有关文件的使用十分频繁,让本来文件方面较为薄弱的我得到了有关这方面的加强,从而进一步加强了我对c的兴趣。
这次训练,增强了同学之间相互交流和讨论,有利于调动全体同学学习c语言的积极性,并且同学们向老师提问的次数也很频繁,有利于师生之间的交流和此课程的进展。
不足及有待解决的问题:
我所编的这个程序中,有关用户订票的这个模块,较为简单。
用户订票时只能依次输入起飞地点、降落地点和起飞时间,从而实现订票,并没有记录用户的姓名和身份证号,从而导致退票系统很不完善。
因为用户退票时只需输入航班号就可以退票,不符合实际也没有可行性。
还有修改模块,不能很好的实现,有待改善。
附件:
程序清单
程序要求符合格式规范。
为了便于阅读和理解,要求加上适当的注释说明。
#include
#include
#include
#defineN1000
typedefstructplane
{
charcompany[20];//航班公司
charflightnum[10];/*航班代号*/
charBePlace[10];/*飞机起飞地点*/
charEnPlace[10];/*飞机降落终点*/
chardata[15];/*飞机起飞时间*/
chararrive[15];/*飞机到达时间*/
intmax;/*飞机最大乘客人数*/
intprice;/*飞机票价*/
intnum;/*飞机已售票数*/
}PLANE;
PLANEti[N];
intn;/*当前的航班数目*/
voidmenu();
voidmenu1();
voidprintf_one(inti)/*显示一个记录的函数*/
{
printf("%-8s%-6s%-6s%-6s%-8s%-8s%-4d%-8d%-8d",ti[i].company,ti[i].flightnum,ti[i].BePlace,ti[i].EnPlace,ti[i].data,ti[i].arrive,ti[i].price,ti[i].max,ti[i].num);
}
voidsearch_comname()//按航空公司查询
{
inti,m=0;
FILE*fp;
intj=0,l=0;
structplanes;
system("cls");
fp=fopen("ticket.dat","rb");
while(!
feof(fp))
{
fread(&ti[j],sizeof(structplane),1,fp);
if(feof(fp))break;
j++;
l++;
}
printf("\n\n\n\n请输入航空公司的名字:
\n");
scanf("%s",pany);/*输入航空公司的名字*/
puts("\n******************************************************************************");
printf("航空公司航班号起始站终点站起飞时间到达时间票价最大乘客已售票数\n");
for(i=0;i{
if(strcmp(pany,ti[i].company)==0)
{
m++;
if((m!
=0)&&(m%10==0))/*目的是分屏显示*/
{
printf("\n\nPressanykeytocontiune...");
getchar();
puts("\n\n");
}
printf_one(i);/*调用显示一个记录的函数*/
printf("\n");
}
fclose(fp);
}
if(m==0)printf("\n\t\t\t对不起,您要查找的信息不存在!
\n");
puts("******************************************************************************\n");
printf("请按任意键返回菜单:
");
getchar();/*按任意健*/
getchar();
menu1();
}
voidsearch_airname()//按航班号查询
{
inti,m=0;
structplanes;
FILE*fp;
intj=0,l=0;
system("cls");
fp=fopen("ticket.dat","rb");
while(!
feof(fp))
{
fread(&ti[j],sizeof(structplane),1,fp);
if(feof(fp))break;
j++;
l++;
}
printf("\n\n\n\n请输入航班号的名字:
\n");
scanf("%s",s.flightnum);/*输入航班号的名字*/
puts("\n******************************************************************************");
printf("航空公司航班号起始站终点站起飞时间到达时间票价最大乘客已售票数\n");
for(i=0;i{
if(strcmp(s.flightnum,ti[i].flightnum)==0)
{
m++;
if((m!
=0)&&(m%10==0))/*目的是分屏显示*/
{
printf("\n\nPressanykeytocontiune...");
getchar();
puts("\n\n");
}
printf_one(i);/*调用显示一个记录的函数*/
printf("\n");
}
}
if(m==0)printf("\n\t\t\t对不起,您要查找的信息不存在!
\n");
puts("******************************************************************************\n");
printf("请按任意键返回菜单:
");
getchar();/*按任意健*/
getchar();
menu1();
}
voidsearch_time()//按飞机起飞时间查询
{
inti,m=0;
structplanes;
FILE*fp;
intj=0,l=0;
system("cls");
fp=fopen("ticket.dat","rb");
while(!
feof(fp))
{
fread(&ti[j],sizeof(structplane),1,fp);
if(feof(fp))break;
j++;
l++;
}
printf("\n\n\n\n输入航班起飞时间:
\n");
scanf("%s",s.data);/*输入出发的时间*/
puts("******************************************************************************");
printf("航空公司航班号起始站终点站起飞时间到达时间票价最大乘客已售票数\n");
for(i=0;i{
if(strcmp(s.data,ti[i].data)==0)
{
m++;
if((m!
=0)&&(m%10==0))/*目的是分屏显示*/
{
printf("\n\nPressanykeytocontiune...");
getchar();
puts("\n\n");
}
printf_one(i);/*调用显示一个记录的函数*/
printf("\n");
}
}
if(m==0)printf("\n\t\t\t对不起,您要查找的信息不存在!
\n");
puts("******************************************************************************\n");
printf("请按任意键返回菜单:
");
getchar();/*按任意健*/
getchar();
menu1();
}
voidsearch_geton()//按到达时间查询
{
inti,m=0;
structplanes;
FILE*fp;
intj=0,l=0;
system("cls");
fp=fopen("ticket.dat","rb");
while(!
feof(fp))
{
fread(&ti[j],sizeof(structplane),1,fp);
if(feof(fp))break;
j++;
l++;
}
printf("\n\n\n\n输入航班到达时间:
\n");
scanf("%s",s.arrive);/*输入出发的时间*/
puts("\n******************************************************************************");
printf("航空公司航班号起始站终点站起飞时间到达时间票价最大乘客已售票数\n");
for(i=0;i{
if(strcmp(s.arrive,ti[i].arrive)==0)
{
m++;
if((m!
=0)&&(m%10==0))/*目的是分屏显示*/
{
printf("\n\nPressanykeytocontiune...");
getchar();
puts("\n\n");
}
printf_one(i);/*调用显示一个记录的函数*/
printf("\n");
}
}
if(m==0)printf("\n\t\t\t对不起,您要查找的信息不存在!
\n");
puts("******************************************************************************\n");
printf("请按任意键返回菜单:
");
getchar();/*按任意健*/
getchar();
menu1();
}
voidsearch_start()//按起始地点查询
{
inti,m=0;
structplanes;
FILE*fp;
intj=0,l=0;
system("cls");
fp=fopen("ticket.dat","rb");
while(!
feof(fp))
{
fread(&ti[j],sizeof(structplane),1,fp);
if(feof(fp))break;
j++;
l++;
}
printf("\n\n\n\n请输入起始站:
\n");
scanf("%s",s.BePlace);/*输入要到达的地方*/
puts("******************************************************************************");
printf("航空公司航班号起始站终点站起飞时间到达时间票价最大乘客已售票数\n");
for(i=0;i{
if(strcmp(ti[i].BePlace,s.BePlace)==0)
{
m++;
if((m!
=0)&&(m%10==0))/*目的是分屏显示*/
{
printf("\n\nPressanykeytocontiune...");
getchar();
puts("\n\n");
}
printf_one(i);/*调用显示一个记录的函数*/
printf("\n");
}
}
if(m==0)printf("\n\t\t\t对不起,您要查找的信息不存在!
\n");
puts("******************************************************************************\n");
printf("请按任意键返回菜单:
");
getchar();/*按任意健*/
getchar();
menu1();
}
voidsearch_end()//按到达地点查询
{
inti,m=0;
structplanes;
FILE*fp;
intj=0,l=0;
system("cls");
fp=fopen("ticket.dat","rb");
while(!
feof(fp))
{
fread(&ti[j],sizeof(structplane),1,fp);
if(feof(fp))break;
j++;
l++;
}
printf("\n\n\n\n请输入终点站:
\n");
scanf("%s",s.EnPlace);/*输入要到达的地方*/
puts("******************************************************************************");
printf("航空公司航班号起始站终点站起飞时间到达时间票价最大乘客已售票数\n");