C语言课程设计报告飞机订票系统.docx
《C语言课程设计报告飞机订票系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告飞机订票系统.docx(13页珍藏版)》请在冰豆网上搜索。
![C语言课程设计报告飞机订票系统.docx](https://file1.bdocx.com/fileroot1/2023-7/5/b6fe4b0e-bb8c-4e87-8d4d-0ce722a23ff7/b6fe4b0e-bb8c-4e87-8d4d-0ce722a23ff71.gif)
C语言课程设计报告飞机订票系统
C语言课程设计
题目:
飞机订票系统
专业:
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
**:
。
。
。
。
。
。
。
。
。
。
。
:
。
。
。
。
。
。
。
任课教师:
。
。
。
。
。
。
。
。
C语言课程设计报告
一、课程设计报告正文
〔1〕课程设计题目的原文;
假定民航机场共有n个航班:
航班号、起始站、终点站、飞机号、飞机时间、乘员定额、余票量。
试设计一民航订票系统,使之能提供以下效劳:
航班信息录入功能〔文件保存〕
完成航班信息浏览功能;
查询航线〔至少一种查询方式〕。
〔2〕题目的分析〔需求分析〕;
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况〔数据可以存储在一个数据文件中〕
浏览:
航班信息浏览功能需要提供显示操作;
查询:
可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询*个航线的情况〔如,输入航班号,起飞抵达城市,确定航班是否满仓〕;另外要提供键盘式选择菜单以实现功能选择。
要求:
根据以上功能说明,设计航班信息,订票信息的存储构造,设计程序完成功能。
可以建立航班构造体,构造体成员包括航班号、起点站、终点站、飞行时间、预售票总数、已售票数。
〔3〕整体设计与模块划分;
根据需求分析,该程序可分为以下四大模块:
〔4〕代码设计;
包括——各功能模块的流程图;重要模块中关键局部的代码分析;关键函数的算法设计和分析等等;
二、航班根本信息输入模块
航班信息录入函数:
航班信息浏览函数:
[流程图]显示信息
查询模块:
分析:
根本信息的查询按查询可供选择的方式比拟丰富,可按航班号查询。
在查询小模块中采用了直接查找的方法。
本模块可以通过多种查询方式进展完善。
这是本程序没有做的地方。
[流程图]
(一)核心源程序清单和执行结果:
a)源程序清单:
*include
*include
*include
*include//标准输入、输出头文件
*include//包含字符串函数处理头文件
*include//包含access函数的头文件
*defineN1000//定义最多的航班数
*definePRINT"%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count//宏定义输出格式
structair//定义构造体数组
{
intnum;//定义航班号
charstart[20];//航班起始站
charover[20];//终点站
chartime[10];//飞行时间
intcount;//机票数量
}s[N];
inti,m=0;//定义全局变量
charii[10];
voidadd();//函数声明增加航班信息函数
voidprint();//显示航班信息
voidsearch();//查找航班信息
voidread();//读取文件
voidsave();//保存文件
voidoutput();//输出格式
voidchushihua();//系统初始化
voidbuild();//建立数据文件
voidmain()//主函数
{
intj;
chushihua();//系统初始化判断是否存在原始数据文件
printf("O(^_^)O欢送使用飞机订票系统O(^_^)O\n");//打印出系统主界面
do
{
printf("================================================================================");
printf("1.增加航班信息\n"
"2.浏览航班信息\n"
"3.查找航班信息(按航班号)\t\t\n"
"0.退出\n");
printf("================================================================================");
printf("请在0-3中选择以回车键完毕:
");
scanf("%d",&j);
switch(j)
{
case1:
add();//调用增加航班函数
break;
case2:
print();//调用显示模块
break;
case3:
search();//调用查找模块
break;
case0:
//退出系统
save();
printf("使用,再见!
(^_^)/~~\n");
break;
}
}while(j!
=0);//判断是否调用其他函数
}
voidchushihua()//定义系统初始化函数
{
if(access("hangban.dat",0))
{
build();
}
else
read();
}
voidbuild()//定义建立数据文件函数
{
FILE*fp;//定义文件指针
if((fp=fopen("hangban.dat","wb"))==NULL)//翻开文件并判定是否出错
{
printf("创立文件失败!
");//打印出错提示
getchar();
return;
}
printf("请依次输入航班信息(以回车键完毕):
\n");//打印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;i{
printf("请输入航班号:
");
scanf("%d",&s[i].num);//输入航班号
printf("请输入起始站:
");
scanf("%s",s[i].start);//输入起始站
printf("请输入终点站:
");
scanf("%s",s[i].over);//输入终点站
printf("请输入时间(星期几):
");
scanf("%s",s[i].time);//输入时间
printf("请输入机票数:
");
scanf("%d",&s[i].count);//输入机票数
fwrite(&s[i],sizeof(structair),1,fp);
m++;
printf("添加完毕,是否继续添加"请键入y或n以回车键完毕:
");
scanf("%s",ii);
if(strcmp(ii,"y")!
=0)//判断是否继续添加航班信息
{
fclose(fp);//关闭文件
return;
}
}
}
voidread()//定义读取文件函数
{
FILE*fp;
if((fp=fopen("hangban.dat","r"))==NULL)
{
printf("创立文件失败!
");
getchar();
return;
}
i=0;
while(!
feof(fp))
{
fread(&s[i],sizeof(structair),1,fp);//逐块读取数据
i++;
m++;//计算存在航班数
}
m--;
fclose(fp);
}
voidsave()//定义保存函数
{
FILE*fp;
if((fp=fopen("hangban.dat","wb"))==NULL)
{
printf("创立文件失败!
");
getchar();
return;
}
for(i=0;ifwrite(&s[i],sizeof(structair),1,fp);
fclose(fp);
}
voidadd()//定义增加航班信息函数
{
do{
printf("请依次输入您要增加的航班信息(以回车键完毕):
\n");//打印提示信息
printf("--------------------------------------------------------------------------\n");
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++;
printf("添加完毕,是否继续添加"请键入y或n以回车键完毕:
");
scanf("%s",ii);
}
while(!
strcmp(ii,"y"));//判断是否继续添加
}
voidoutput()//定义输出格式函数
{
printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n");//信息标题
for(i=0;iprintf(PRINT);//打印出信息
}
voidprint()//定义显示航班信息函数
{
printf("\n目前我们有如下航班:
\n");
output();//调用输出格式函数
printf("\n请按回车键返回上层菜单");
getchar();
getchar();
}
voidsearch()//定义查询函数
{
intn;
do
{
printf("\n请输入航班号:
");
scanf("%d",&n);//输入查询的航班号
for(i=0;i{
if(s[i].num==n)//按航班号判定输出条件
{
printf("\n您所查找的航班信息为:
\n");
printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n");
printf(PRINT);//显示信息
printf("\n查询完毕,按回车键继续");
getchar();
getchar();
return;
}
}
printf("\n对不起,没有您需要的信息!
\n");
printf("是否重新查找"请键入y或n以回车键完毕");
scanf("%s",ii);
}
while(!
strcmp(ii,"y"));//判定是否重新查找
}
1)第一次运行程序〔输入初始数据〕
界面提示输入原始数据:
请输入航班号→请输入起始站→请输入终点站→请输入飞行时间→请输入机票数。
我按照提示一次输入了4个航班信息后按提示输入“n〞则不再继续输入,系统显示出了主菜单界面。
接着按0退出程序,显示“使用,再见。
〞
图表1—主菜单界面
1)第二次运行程序〔进展航班信息的浏览〕
运行程序就不再显示输入航班信息了,而是直接显示出了主菜单界面〔如图表1〕。
在提示中输入“2〞→显示航班信息。
输出如下航班信息〔如图表2〕,确实显示出输入的4个航班信息。
图表2—显示航班信息
1)查询航班信息
在主菜单界面输入3→请输入航班号→输入“1010〞→显示出所查找的信息〔如图表3〕
图表3—查询航班信息
2)航班排序
在主菜单界面输入4→按照提示输入“2〞〔按航班号从大到小排序〕→显示出排序后的航班信息〔如图表4〕
图表4—航班排序
三、总结
经过十天的程序设计,根本掌握程序设计的根本方法和步骤。
在这十天中悟出:
程序设计要求有一定的根底是必须的,在设计过程中要大胆的发挥自己的想象力,要敢于不断的创新,要敢于尝试,我认为这也是一种进步的好方法。
回忆起此次课程设计,至今我仍感慨颇多,从理论到实践,在十天的日子里,我学到很多很多的东西,不仅稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的容。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够结实,通过这次课程设计,把以前所学过的知识重新温故,稳固了所学的知识。
仍存在的问题:
系统只是按照题目的要求做的,虽然是很好地完成了题目要求的所有模块,但是在整个编程过程中我们也曾尝试增加我们感兴趣的功能,但是失败了。
四、参考文献
"C++程序设计",谭浩强著,清华大学,2004年
"C++程序设计",钱能著,清华大学,2000年
"C++Prime"〔第三版〕,stanleyBlippman著,爱民译,中国电力