机票管理系统.docx
《机票管理系统.docx》由会员分享,可在线阅读,更多相关《机票管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
机票管理系统
1.设计的目的
在一年的C语言的学习中,使得我掌握了许多的C语言的专业知识,为了能够提高自己的调试运行程序的能力,巩固自己知识,我设计了一个小型的程序,来给他人带来更多的方便。
从而也增强了我的综合运用理论知识来分析和解决实际问题的能力,使我受到很大的帮助。
我的选题是飞机订票系统的设置,在如今快速发展的时代,我们的交通工具也越来越趋向高速化,方便化,而飞机奔走两地又是十分的快捷的,随着更多的人的乘坐,我们就应该更方便的为客户服务,下面设置一个简单的飞机订票系统的C语言程序,可运用于小的管理软件。
软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足用户的需要。
2.设计方案论证
2.1设计思路
通过建立一个函数[1],确定航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额,完成飞机订票系统。
主函数可以调用子函数[2],分别完成输入信息,保存信息,读取信息,输出信息,排序,查找信息,订票命令。
在主函数中可以设置调用子函数[3],分别按相应的数字键,则分别可以执行某个功能模。
主要功能模块即如图1所示:
图1飞机订票系统主要功能模块
2.2设计方法
根据所构想的功能及模块设计出与之相对算法并建立函数来实现功能[4]。
①数据结构体的定义:
将一个货物的信息作为一个结构体,由于利用链表所以在结构体中别忘记指向后继结点的指针。
如下
intcount;
}p[1];
read();
for(j=0;j<(m-1);j++)
for(i=0;i<(m-(1+j));i++)
②通过主函数进行程序调用及连接以下函数[5]:
read():
读取航班信息功能函数,运用if,for,scanf,printf,scanf等进行课程名称信息查询;
paixu():
按航班信息输出功能函数,运用if,for,scanf,printf,scanf,printf等进行航班名称信息查询;
search():
按航班号查询信息功能函数,运用if,for,scanf,printf,scanf,printf等进行航班名称信息查询;
dingpiao()订票功能函数,运用if,for,scanf,printf,scanf,printf等进行航班名称信息查询。
(1)读取航班信息
图2读取航班信息流程图
(2)输出航班信息
图3输出航班信息流程图
(3)查询航班信息
图4查找航班信息流程图
(4)订票
图4订票流程图
2.3源程序
#include//标准输入、:
输出头文件
#include//包含字符串函数处理头文件
#include//包含动态存储与释放函数头文件
#defineN1000
structair//定义结构体数组
{
intnum;
charstart[20];
charover[20];
chartime[10];
intcount;
}s[N];
inti;
intm=0;
#definePRINT“%-d%12s%12s%10s%12d\n”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//定义输出格式
voidinput();//输入航班信息
voidprint();//输出航班信息
voidsave();//保存航班信息
voidread();//读取航班信息
voidpaixu();//对所有航班按航班号排序
voidsearch();//查找航班信息
voiddingpiao();//订票信息
voidmain()
{
intj;printf(“★----------------您好,欢迎进入自动化飞机订票系统!
---★\n”);
printf(“================================================================================\n”);
do
{
printf(“**---------------☆1.输入航班信息☆---------------------------**\n\n”“**------------☆2.浏览航班信息☆-----------------------**\n\n”“**--------☆3.查找航班信息-☆--------------------**\n\n”“**-----------☆4.对航班按航班号排序---☆-----------------------**\n\n”“**--------------☆5.订票信息—☆-------------------------**\n\n”“**------------------☆0.退出-☆-----------------------------**\n\n”“**-----------------------☆☆---------------------------------**\n\n”“**-------------------------☆----------------------------------**\n\n”“**-----------------------☆☆----------------------------------**\n\n”);
printf(“================================================================================\n”);
printf(“请在0-5中选择以回车键结束:
\n\n”);
scanf(“%d”,&j);
switch(j)
{
case1:
input();//调用输入模块
break;
case2:
print();//调用打印模块
break;
case3:
search();//调用查找模块
break;
case4:
paixu();//调用排序模块
break;
case5:
dingpiao();//调用订票模块
break;
case0:
;
break;
}
}while(j!
=0);//判断结束
printf(“谢谢使用,再见!
\n”);
}//主函数结束
voidinput()//打印模块程序
{
printf(“请依次输入航班信息(航班号,起始站,终点站,起飞时间,机票数):
\n\n”);//打印提示信息
printf(“--------------------------------------------------------------------------\n”);
for(i=0;i{inty;
printf(“请输入航班号:
\n”);
scanf(“%d”,&s[i].num);//读取航班号
printf(“请输入起始站:
\n”);
scanf(“%s”,s[i].start);//读取起始站
printf(“请输入终点站:
\n”);
scanf(“%s”,s[i].over);//读取终点站
printf(“请输入时间:
\n”);
scanf(“%s”,s[i].time);//读取时间
printf(“请输入机票数(机票数为0结束输入):
\n”,m);
scanf(“%d”,&s[i].count);//读取机票数
m++;
printf(“第%d个信息已经输完是否继续?
按1-9任意数字继续,按0结束”,m);
scanf(“%d”,&y);
if(y==0)
{
save();//将结构体信息存盘
print();//输出输入的航班信息
break;
}
}
}
voidsave()//保存模块程序
{
FILE*fp,*fp1;//定义文件指针
if((fp=fopen(“chen.dat”,”wb”))==NULL)//打开文件并判断是否出错
{
printf(“创建文件失败!
\n\n”);//打印出错提示
getchar();
return;
}
if((fp1=fopen(“hao.dat”,”wb”))==NULL)//打开文件并判断是否出错
{
printf(“创建文件失败!
\n\n”);//打印出错提示
getchar();
return;
}
for(i=0;iif(fwrite(&s[i],sizeof(structair),1,fp)==0)//向文件写入数据,并判断是否出错
printf(“向文件输入数据失败!
\n\n”);
fprintf(fp1,”%d”,m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
voidread()//从文件读取信息模块
{
FILE*fp,*fp1;//定义文件指针
if((fp=fopen(“chen.dat”,”rb”))==NULL)//打开文件,并判断是否出错
{
printf(“出错,请检查文件是否存在,按任意键返回住菜单”);//打印出错提示getchar();
}
if((fp1=fopen(“hao.dat”,”rb”))==NULL)//打开文件并判断是否出错
{
printf(“创建文件失败!
\n\n”);//打印出错提示
getchar();
return;
}
fscanf(fp1,”%d”,&m);
fclose(fp1);//关闭文件
for(i=0;i{
fread(&s[i],sizeof(structair),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
voidprint()//打印模块
{
charw[10];
read();//调用读取文件函数
printf(“航班号起始站终点站时间机票数\n”);
for(i=0;i{
printf(PRINT);//打印信息
}
printf(“请按任意键回车键结束返回上层菜单:
\n”);
scanf(“%s”,w);
}
voidpaixu()//对所有航班按航班号排序
{intj;
structpai
{intno;
charname1[20];
charname2[20];
chartime[20];
intcount;
}p[1];
read();
for(j=0;j<(m-1);j++)
for(i=0;i<(m-(1+j));i++)
{if(s[i].num>s[i+1].num)
{p[0].no=s[i].num;//替换航班号
strcpy(p[0].name1,s[i].start);//替换其始站
strcpy(p[0].name2,s[i].over);//替换终点站
strcpy(p[0].time,s[i].time);//替换时间
p[0].count=s[i].count;//替换机票数
s[i]=s[i+1];
s[i+1].num=p[0].no;//替换航班号
strcpy(s[i+1].start,p[0].name1);//替换其始站
strcpy(s[i+1].over,p[0].name2);//替换终点站
strcpy(s[i+1].time,p[0].time);//替换时间
s[i+1].count=p[0].count;//替换机票数
}
}
save();
print();
}
voidsearch()//查询模块
{
charii[10];
intno;
do
{
printf(“请输入你要找的航班号:
\n\n”);//打印查询方式菜单
scanf(“%d”,&no);//航班号
read();//调用读取函数
for(i=0;i{if(s[i].num==no)//按航班号判断输出条件
{
printf(“\n查找航班信息成功!
\n”);
printf(“航班号起始站终点站时间机票数\n”);
printf(PRINT);//打印信息
break;}
}
no=0;//将航班号赋值为0
printf(“没有您需要的信息或查找完毕:
\n\n”
“是否继续查找?
请键入yes或no以回车键结束\n”);
scanf(“%s”,ii);
}while(strcmp(ii,”yes”)==0);//判断结束
}
voiddingpiao()//订票模块
{
intn;
chara[10];
do
{
search();//调用查询模块
printf(“请输入您要订的机票数以回车键结束:
\n”);
scanf(“%d”,&n);//读取所订机票数
if(n<0)
{
printf(“请输入有效的机票数!
\n”);//判断机票数是否出错break;
}
if(s[i].count!
=0&&s[i].count>=n)//判断是否出错
{
s[i].count=s[i].count-n;
save();//调用保存函数
printf(“订票成功!
\n\n”);
break;
}
if(s[i].count{
printf(“请输入有效的机票数:
\n”);
break;
}
printf(“是否继续?
请输入yes或no以回车键结束:
\n”);//判断是否继续订票
scanf(“%s”,a);
}while(!
strcmp(a,”yes”));//判断结束
}
3.设计结果与分析
①在MicrosoftVisualC++6.0环境中输入源程序,在没有提示错误的情况下编译,生执行文件.
在输入1键回车后提示输入飞机的航班号、起始点、终止点、时间、票数,用户可以把要输入的信息按要求进行输入。
图5运行程序进入主菜单界面
运行主函数时,进行airfile()文件的读取,该函数是一个菜单函数,用Switch语句来读取飞机的航班的个信息。
根据用户的选择数据,分别调用其他自定义函数,实现了函数的调用。
②在输入2回车后提示输入飞机的航班号、起始点、终止点、时间、票数,用户可以把要输入的信息按要求进行输入。
图6输入飞机航班
界面是调用函数add()的结果,再add()函数中,首先用scanf函数接收用户输入并用prinf输出输入的航班信息.,用fopen函数进行打来文件判断是否出错,用fclose关闭文件,用fread进行读取文件。
③在输入3按回车键,输入航班的航班号,起始站,终点站,时间,票数,再按0键结束程序,此时程序会显示出输入的所有的航班信息。
图7结束输入指定的航班信息
界面是调用函数add()的结果,再add()函数中,首先用scanf函数接收用户输入的航班信息,当输入的信息完成时,就输入0按回车键,就不再输入飞机的订票情况,,此时会显示所有输入进去的信息
④按任意键返回上层菜单,并且输入3查找航班信息,输入你要查找的飞机的航班号,就会显示你要找的飞机的信息。
图8查找航班信息
先用intno定义输入的航班号,然后用printf输入你要找的航班号,再用read()读取函数来查找航班用search()查找航班信息,用for循环来进行飞机航班的查询,当查找信息完毕后,继续进行下一项。
⑤当系统完成上一个功能,显示是否要继续查找时,输入no,就要再次返回上层菜单,这时你输入5按回车键,输入你要订的飞机航班号,就会查找并显示订票成功。
图9进行订票
用dingpiao()函数完成订票功能,用先调用search输入航班的票数,用scanf读取所订票数,再输入有效票数,用save()调用保存函数,看是否订票成功,再继续进行。
4.设计体会
我这次在C语言程序设计课程中,我做的设计的题目是“飞机订票系统”。
通过近一周的上机操作,我充分的应用了所学的C语言的知识,粗略设计出并成功的运行起该系统。
这说明我这次的课程设计是比较成功的,但更为重要的是我又进一步了解了C语言,加深了对C语言的认识,充分的将课本知识进行梳理、整合之后应用到了实际的工作需要中。
以实现学以致用,学有所用。
同时也增加了我对C语言的兴趣,激起了学习的热情。
当然,由于学艺不精,在课程设计的过程也碰到的一些问题。
其中,不乏一些简单的基础性的错误,如经常输入错误的字母,使程序无法运行,但通过这次专业性的练习,相信在以后会有所减少。
而关键性问题经常出现在一些函数的使用上,由于对一些函数调用的正确使用不够熟悉,往往也会造成程序无法运行,出现错误。
如:
主函数voidmain()的用法,C语言的一些标准库函数的应用。
然而这一切,在运行程序时也都得到解决了。
我发现乐书很重要,但我们更应学会将书本知识应用到实际的工作中。
实践中才会发现错误,也才能改进,才能达到学习的最终目的。
这些就是我在这个设计中所得到的体会。
5.参考文献
[1]谭浩强.C语言程序设计(第三版)[M],北京:
清华大学出版社,2005.7:
30-42
[2]孙家启,王永国,张孟资等.C语言程序设计教程[M].合肥:
安徽大学出版社,2006.2:
51-112
[3]梁翎,李爱齐.C语言程序设计实用技巧与程序实例[M].上海:
上海科普出版社,1996.5:
36-59
[4]朱三元,计算机应用与软件[J].北京:
科学爱好出版社,2004,7(02):
2-56
[5]赵立伟,信息与电脑[J].天津:
雨乐出版社,2003,12(8):
24-78
.