课程设计报告航空飞机订票系统优化完整版.docx

上传人:b****3 文档编号:12877260 上传时间:2023-04-22 格式:DOCX 页数:33 大小:175.15KB
下载 相关 举报
课程设计报告航空飞机订票系统优化完整版.docx_第1页
第1页 / 共33页
课程设计报告航空飞机订票系统优化完整版.docx_第2页
第2页 / 共33页
课程设计报告航空飞机订票系统优化完整版.docx_第3页
第3页 / 共33页
课程设计报告航空飞机订票系统优化完整版.docx_第4页
第4页 / 共33页
课程设计报告航空飞机订票系统优化完整版.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

课程设计报告航空飞机订票系统优化完整版.docx

《课程设计报告航空飞机订票系统优化完整版.docx》由会员分享,可在线阅读,更多相关《课程设计报告航空飞机订票系统优化完整版.docx(33页珍藏版)》请在冰豆网上搜索。

课程设计报告航空飞机订票系统优化完整版.docx

课程设计报告航空飞机订票系统优化完整版

一、设计内容及要求

本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《高级语言程序设计(C)2》课程后进行的一次全面的综合练习。

学生从给定的参考题目中选择一个编程实现,并按照课程设计规范要求按时参加答辩、完成课程设计报告并及时提交要求的文档资料。

通过本次课程设计可以达到下列目的:

巩固和加深学生对C语言课程的基本知识的理解和掌握;掌握C语言编程和程序调试的基本技能;利用C语言进行基本的软件设计;掌握书写程序设计说明文档的能力;提高运用C语言解决实际问题的能力。

二、设计原始资料

(1)课程设计任务书

(2)C语言课程设计报告编写规范

(3)C语言课程设计指导书

三、设计完成后提交的文件和图表

1.计算说明书部分

(1)课程设计报告(同时提交纸质版和电子版)

(2)源程序(电子版)

(3)程序的可执行文件(.exe)(电子版)

2.图纸部分:

四、进程安排

(1)提前2天公示题目,学生查阅资料,了解题目要求,分组选题做设计准备。

(2)系统分析,进一步理解确认需求(1天)。

(3)分析确定整体设计方案,完成数据结构及功能模块设计(3天)。

(4)完成系统的编码测试(4天)。

(5)总结设计资料,进一步调试完善系统(1天)。

(6)答辩考核(1天)。

(7)答辩完成后,及时按照设计规范要求完成课程设计报告,合并其他相关资料按时提交。

五、主要参考资料

(1)《C程序设计(第四版)》,谭浩强著,清华大学出版社

(2)《C语言程序设计教程》,王敬华等编著,清华大学出版社

(3)《C语言程序(第四版)学习辅导》,王敬华等编著,清华大学出版社

(4)《C语言程序设计实验指导与实训》,倪然等编,中国水利水电出版社

 

【摘要】………………………………1

1、问题要求及任务描述………………………………2

1.1题目要求………………………………2

1.2主要任务………………………………2

2、解决问题的主要思路和方法………………………………2

2.1关键问题………………………………2

2.2采用解决问题的方法………………………………2

2.3主要算法和处理流程图………………………………3

3、程序实现………………………………11

3.1程序实现时应考虑的问题………………………………11

3.2主要代码及说明………………………………11

4、测试………………………………18

5、小结………………………………20

5.1设计遇到的问题的解决方法及程序实现小结………………………………20

5.2尚未解决的问题及下一步工作思路………………………………21

参考文献………………………………21

 

摘要

计算机在普及,计算机科学技术也在发展,人们开始越来越多地利用计算机解决实际问题。

在这个经济飞速发展的时代,飞机成为了人们日常出行的主要工具之一,因此,飞机订票成为了人们日常生活中要面对的问题。

去机场订票对于生活安排的比较紧凑的人群来讲太浪费时间。

因此,开发一个界面友好,易于操作的飞机订票系统变得十分重要,这正是本系统开发的目的和意义。

通过深入的分析,从研究如何实现功能优化、操作简便易用、提高实用性等角度出发,开发此系统。

本系统是以microsoftvisualc++作为主要的开发工具.主要实现了航班录入,航班查询,航班浏览,订票退票等功能。

本系统功能完备,操作简便,能够解决日常订退机票的基本问题。

因此,本信息管理系统的开发具有一定的现实意义和实用价值。

关键字词:

C语言,飞机订票,航班查询,信息录入

 

-1-

1、问题要求及任务描述

1.1题目要求

本次c语言课程设计的任务是综合运用c语言知识变成实现一个飞机订票系统,其中航班信息(航班号,起始点,终点站,飞行时间,预售票总数,已售票总数)应用文件保存。

本系统主要完成以下功能,并提供选择菜单以实现功能选择。

1.2主要任务

(1)数据录入:

航班基本信息可以在磁盘建立,采用写文件方式录入航班基本信息(航班号,起始点,终点站,飞行时间,预售票总数,已售票总数)。

——————建立input()函数,调用save()函数

(2)浏览功能:

通过菜单选择航班信息浏览功能,浏览录入的所有航班信息,浏览结果根据航班号升序排列显示。

————————建立order()函数,采用冒泡法排序

(3)查询功能:

实现按照航班号、起点站、终点站的查询,采用基本的查找方式即可。

——————建立search()函数,采用switch函数进行菜单选择,调用read()函数

(4)订票功能:

通过菜单选择订票功能,可根据航班号,起始站,终点站查询到相关信息,进行订票。

保证航班信息中的已售票数随之改变。

————建立dingpiao()函数,调用search()函数以及save()函数

(5)退票功能:

通过菜单选择退票功能,可根据航班号,起始站,终点站查询到相关信息,进行退票。

保证航班信息中的已售票数随之改变。

————建立tuipiao()函数,调用search()函数以及save()函数

2、解决问题的主要思路和方法

2.1关键问题

(1)每条航线所涉及的信息有:

航班号,起始站,终点站,飞行时间,总票数,已售票数。

(2)全部数据可放在内存中。

(3)查询航班信息

根据航班号,起始站或者终点站输出下列信息:

航班号,起始站,终点站,飞行时间,总票数,已售票数。

(4)订票功能

根据航班号,起始站或者终点站进行查询余票。

若无余票或余票量小于订票量,则不可订票。

(5)退票功能

根据航班号,起始站或者终点站进行查询信息,进行退票。

若退票数大于已订票数,则不可退票。

2.2采用解决问题的方法

使用access函数判断文件是否已经建立;使用PRINTF定义输出格式;

使用冒泡法进行排序;使用switch函数进行菜单选择;

使用strcmp函数定义按(航班号,起始站,终点站)进行查询的条件;

定义文件指针,实现文件的读取与录入;for循环,do……while循环等。

-2-

2.3主要算法和处理流程图

录入功能

流程图:

 

 

程序算法:

voidinput()

{inty;

{printf("→→→→→→→→→→→→→→→→→\n");

printf("请依次输入航班信息\n\n"

"完成输入信息请键入0以回车键结束\n\n");

printf("←←←←←←←←←←←←←←←←←\n");

for(i=0;i

{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);

-3-

printf("请输入机票数(机票数为0结束输入):

\n",m);

scanf("%d",&s[i].count);

m++;

printf("信息已经输完是否继续?

请输入任意数字键并回车继续,按0键回车结束");

scanf("%d",&y);

if(y==0)

{save();

break;

}

}

}

}

浏览功能

流程图:

-4-

程序算法:

信息读取:

voidread()

{FILE*fp;

if((fp=fopen("plane.dat","rb"))==NULL)

{printf("出错,请检查文件是否存在,按z键回车返回主菜单");

getchar();

}

for(i=0;i

{fread(&s[i],sizeof(structair),1,fp);}

fclose(fp);

}

浏览排序:

voidorder()

{inti,j;

structairt;

for(i=0;i

{for(j=0;j

if(s[j].num>s[j+1].num)

{t=s[j+1];

s[j+1]=s[j];

s[j]=t;

}

}

{charw[20];

printf("航班号起始站终点站飞行时间机票总数已售票数\n");

for(i=0;i

{

printf(PRINT);

}

printf("请按z键回车键结束返回主菜单:

\n");

scanf("%s",w);

}

}

查询功能

流程图:

-5-

程序算法:

voidsearch()

{charname1[20];

charname2[20];

charhb[10];

intn,b;

do

{printf("→→→→→→→→→→→→→→→→→\n");

printf("请选择查找方式:

\n\n");

printf("——1.按航班号查找——\n\n"

"——2.按起始站查找——\n\n"

"——3.终点站查找——\n\n"

-6-

"——0.返回——\n\n");

printf("←←←←←←←←←←←←←←←←←\n");

printf("请在0-3中选择:

\n\n");

scanf("%d",&n);

if(n==0)

break;

switch(n)

{case1:

printf("请输入航班号:

\n");

scanf("%d",&b);

break;

case2:

printf("请输入起始站名称:

\n");

scanf("%s",name1);

break;

case3:

printf("请输入终点站名称:

\n");

scanf("%s",name2);

break;

}

read();

for(i=0;i

{if(strcmp(s[i].start,name1)==0)

{printf("\n查找航班信息成功!

\n");

printf("航班号起始站终点站飞行时间机票总数已售票数\n");

printf(PRINT);

break;

}

if(strcmp(s[i].over,name2)==0)

{printf("\n查找航班信息成功!

\n");

printf("航班号起始站终点站飞行时间机票总数已售票数\n");

printf(PRINT);

break;

}

if(s[i].num==b)

{printf("\n查找航班信息成功!

\n");

printf("航班号起始站终点站飞行时间机票总数已售票数\n");

printf(PRINT);

break;

-7-

}

}

no=0;

printf("**查找完毕**\n\n");

printf("此航班若是您需要查询航班,请输入yes并回车确定\n"

"此航班不是您需要查询的航班,请输入no并回车键重新查询:

\n");

scanf("%s",hb);

}while(strcmp(hb,"no")==0);

}

初始化功能

流程图:

 

程序算法:

voidsave1()

{if(access("plane.dat",0))//判断文件是否存在

{input();//调用输入模块

}

else

read();//调用读取模块

}

订票(退票)功能

-8-

 

流程图:

 

 

 

程序算法:

订票:

voiddingpiao()

{intn;

chara[10];

do

-9-

{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;

s[i].ys=n;

save();

printf("\n"

"\n");

printf("Θ⊕订票成功⊕Θ!

\n\n");

}

printf("是否继续订票?

请输入yes或no以回车键结束:

\n");

scanf("%s",a);

}while(strcmp(a,"yes")==0);

getchar();

}

退票:

voidtuipiao()

{intn;

chara[10];

do

{search();

printf("请输入您要退的机票数目:

\n");

scanf("%d",&n);//输入所退票数

if(n<=0)

printf("请输入有效的机票数!

\n");

s[i].count=s[i].count+n;

s[i].ys=s[i].ys-n;

save();

printf("\n"

"⊙☉退票成功!

☉⊙\n\n"

"\n");

printf("是否继续退票?

请键入yes或no以回车键结束:

\n\n");

scanf("%s",a);

}while(strcmp(a,"yes")==0);

-10-

getchar();}

3、程序实现

3.1程序实现时应考虑的问题

3.2主要代码及说明

#include//标准输入、输出头文件

#include//包含字符串函数处理头文件

#include//包含动态存储与释放函数头文件

#include//包含access函数的头文件

#defineN10000

structplane//定义结构体数组

{intnum;

charstart[20];

charover[20];

chartime[10];

intcount;

intys;

}s[N];

inti;

-11-

intm=0;

#definePRINT"%-d%10s%10s%10s%12d%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count,s[i].ys//定义输出格式

voidinput();//输入航班信息

voidsave();//保存航班信息

voidread();//读取航班信息

voidorder();//升序输出航班信息

voidsearch();//查找航班信息

voiddingpiao();//订票信息

voidtuipiao();//退票信息

voidsave1();//

voidmain()//主函数

{intj;

save1();

do

{printf("\n");

printf("★---您好,欢迎进入自制飞机订票系统!

---★\n");

printf("\n");

printf("**********************************************************************\n");

printf("\n");

printf("--------☆1.输入航班信息☆--------\n\n"

"--------※2.浏览航班信息※--------\n\n"

"--------☆3.查找航班信息☆--------\n\n"

"--------※4.订票信息※--------\n\n"

"--------☆5.退票信息☆--------\n\n"

"--------*0.退出*--------\n\n");

printf("\n");

printf("***********************************************************************\n");

printf("\n");

printf("请在0-5中选择以回车键结束:

\n\n");

scanf("%d",&j);

switch(j)

{case1:

input();//调用输入模块

break;

case2:

order();//调用打印模块

break;

-12-

case3:

search();//调用查找模块

break;

case4:

dingpiao();//调用订票模块

break;

case5:

tuipiao();//调用退票模块

break;

case0:

;

break;

}

}while(j!

=0);//判断结束

printf("谢谢使用,再见!

\n");

}//主函数结束

voidinput()//信息录入

{inty;

{FILE*fp;//定义文件指针

if((fp=fopen("plane.txt","wb"))==NULL)//打开文件并判断是否出错

{printf("创建文件失败!

\n\n");//打印出错提示

getchar();

return;

}

printf("→→→→→→→→→→→→→→→→→\n");

printf("请依次输入航班信息\n\n"

"完成输入信息请键入0以回车键结束\n\n");//提示信息

printf("←←←←←←←←←←←←←←←←←\n");

for(i=0;i

{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",);

scanf("%d",&s[i].count);//读取机票数

m++;//统计输入的航班总数

printf("信息已经输完是否继续?

请输入任意数字键并回车继续,按0键回车结束",m);

scanf("%d",&y);

if(y==0)

-13-

{save();//将结构体信息存盘

break;

}

}

}

}

voidsave()//保存模块程序

{FILE*fp;//定义文件指针

if((fp=fopen("plane.txt","wb"))==NULL)//打开文件并判断是否出错

{printf("创建文件失败!

\n\n");//打印出错提示

getchar();

return;

}

for(i=0;i

if(fwrite(&s[i],sizeof(structplane),1,fp)==0)//写入数据判断是否出错

printf("向文件输入数据失败!

\n\n");

fclose(fp);//关闭文件

}

voidsave1()

{if(access("plane.txt",0))//判断文件是否存在

{input();//调用输入模块

}

else

save();//调用保存模块

}

voidread()//从文件读取信息模块

{FILE*fp;//定义文件指针

if((fp=fopen("plane.txt","rb"))==NULL)//打开文件,并判断是否出错

{printf("出错,请检查文件是否存在,按z键回车返回主菜单");//错误提示

getchar();

return;}

i=0;

while(!

feof(fp))

{fread(&s[i],sizeof(structplane),1,fp);//从文件中读取信息

i++;

m++;

}

m--;

-14-

fclose(fp);//关闭文件

}

voidorder()//升序排列航班信息模块

{inti,j;//冒泡法排序

structplanet;

for(i=0;i

{for(j=0;j

if(s[j].num>s[j+1].num)

{t=s[j+1];

s[j+1]=s[j];

s[j]=t;

}

}

{charw[20];

printf("航班号起始站终点站飞行时间机票总数已售票数\n");

for(i=0;i

{printf(PRINT);//打印信息

}

printf("请按z键回车键结束返回主菜单:

\n");

scanf("%s",w);

}

}

voidsearch()//查询模块

{charname1[20];

charname2[20];

charhb[10];

intn,b;

do

{printf("→→→→→→→→→→→→→→→→→\n");

printf("请选择查找方式:

\n\n");//打印查询方式菜单

printf("——1.按航班号查找——\n\n"

"——2.按起始站查找——\n\n"

"——3.终点站查找——\n\n"

"——0.返回——\n\n");

printf("←←←←←←←←←←←←←←←←←\n");

printf("请在0-3中选择:

\n\n");

scanf("%d",&n);//读取查找方式

if(n==0)

break;

-15-

switch(n)

{case1:

printf("请输入航班号:

\n");

scanf("%d",&b);//航班号

break;

case2:

printf("请输入起始站名称:

\n");

scanf("%s",name1);//读取终点站

break;

case3:

printf("请输入终点站名称:

\n");

scanf("%s",name2);//终点站

break;

}

read();//调用读取函数

for(i=0;i

{if(strcmp(s[i].start,name1)==0)//按起始站判断输出条件

{printf("\n查找航班信息成功!

\n");

printf("航班号起始站终点站飞行时间机票总数已售票数\n");

printf(PRINT);//打印信息

break;

}

if(strcmp(s[i].over,name2)==0)//按终点站判断输出条件

{printf("\n查找航班信息成功!

\n");

printf("航班号起始站终点站飞行时间机票总数已售票数\n");

printf(PRINT);//打印

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1