C语言课程设计报告飞机订票系统.docx
《C语言课程设计报告飞机订票系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告飞机订票系统.docx(19页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告飞机订票系统
C语言课程设计
题目:
飞机订票系统
专业:
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
学号:
。
。
。
。
。
。
。
。
。
。
。
姓名:
。
。
。
。
。
。
。
任课教师:
。
。
。
。
。
。
。
。
C语言课程设计报告
一、课程设计报告正文
(1)课程设计题目的原文;
假定民航机场共有n个航班:
航班号、起始站、终点站、飞机号、飞机时间、
乘员定额、余票量。
试设计一民航订票系统,使之能提供下列服务:
。
(2)题目的分析(需求分析);
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中)
浏览:
航班信息浏览功能需要提供显示操作;
查询:
可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的
情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选
择菜单以实现功能选择。
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、
预售票总数、已售票数。
(3)整体设计与模块划分;
根据需求分析,该程序可分为以下四大模块:
飞机订票系统
输入模块显示模块查询模块退出模块
(4)代码设计;
包括——各功能模块的流程图;重要模块中关键部分的代码分析;关键函数的算法设
计和分析等等;
二、航班基本信息输入模块
航班信息录入函数:
开始
文件打开否
输入信息
输出错误信息
将信息输出到磁盘
是否继续
调用printf_back()函数
结束
航班信息浏览函数:
[流程图]显示信息
开始
文件打开输出错误信息
查找航班信息
是否查找到
删除操作
输入信息
是否继续
结束
查询模块:
分析:
基本信息的查询按查询可供选择的方式比较丰富,可按航班号查询。
在查询小模块中采用了直接查找的方法。
本模块可以通过多种查询方式进行完善。
这是本程序没有做的地方。
[流程图]
开始
文件打开
输出错误信息
查询方式
此处可以
航班号
完善其它
查询方式
是否继续
结束
(一)核心源程序清单和执行结果:
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著,潘爱民译,中国电力出
版社