软件课程设计报告飞机票售票系统.docx

上传人:b****0 文档编号:301859 上传时间:2022-10-08 格式:DOCX 页数:27 大小:873.69KB
下载 相关 举报
软件课程设计报告飞机票售票系统.docx_第1页
第1页 / 共27页
软件课程设计报告飞机票售票系统.docx_第2页
第2页 / 共27页
软件课程设计报告飞机票售票系统.docx_第3页
第3页 / 共27页
软件课程设计报告飞机票售票系统.docx_第4页
第4页 / 共27页
软件课程设计报告飞机票售票系统.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

软件课程设计报告飞机票售票系统.docx

《软件课程设计报告飞机票售票系统.docx》由会员分享,可在线阅读,更多相关《软件课程设计报告飞机票售票系统.docx(27页珍藏版)》请在冰豆网上搜索。

软件课程设计报告飞机票售票系统.docx

软件课程设计报告飞机票售票系统

软件课程设计报告

 

 

 

1软件设计1

1.1设计题目1

1.2设计要求1

1.3设计思想1

1.4流程图2

2软件测试7

2.1航班查询模块测试7

2.2订票模块测试11

2.3退票模块测试13

2.4管理员更改航班信息模块测试14

3开发体会15

附录:

源代码清单17

 

1软件设计

1.1设计题目

飞机票销售系统。

1.2设计要求

运用C语言基本知识,结合相关算法思想和数据结构,编写一个单微机系统下运行的飞机票销售系统。

飞机票销售系统应实现航班信息查询、机票购买、机票信息查询、机票退购等功能。

1.3设计思想

程序包括管理员创建模块,输出模块,保存模块,读取模块,查询模块,订票模块,退票模块,菜单模块,以及初始化引入指针等9个模块。

定义了一个结构体是储存航班信息的,建立的分别是航班信息文件plane和Num。

管理员创建模块是voidcreat(),输出模块由voidprint()实现,保存模块由voidsave()实现,读取模块是intread,查询模块是PLANES*search(),订票信息是intbook_tickets(),退票是intbounce。

其中订票和退票都多次用到了查询模块。

而输出、保存和读取都是公用模块。

这样子设计更能够方便地调用减少程序的长度。

1.4流程图

主函数与printfmenu函数流程图

主函数很短,直接调用printfmenu.这样子功能不受限于主函数,跟有利于模块化.

 

Creat是管理员输入航班函数:

search()为航班查找函数,后面的订票和退票都用到了它:

 

订购机票函数intbook_tickets()流程图

退票函数intbounce()流程图

2软件测试

2.1航班信息查询模块测试

运行程序,首先进入主菜单界面。

选择1,进入航班信息查询模块。

显示子菜单界面

选择1,按航班号查询航班信息。

输入航班号“1111”。

 

查找到相应航班信息如下:

若在子菜单中选择2,按目的地查询航班信息,输入目的地“beijing”。

查找到相应航班信息如下:

若在子菜单中选择3,按飞行路线查找航班信息。

输入起点站“wuhan”,输入终点站”beijing”。

查找到相应航班信息如下:

2.2订票模块测试

在主菜单中选择2,进行机票购买。

显示购票界面。

通过查询来买满足自己要求的票

:

输入目的地beijing,确定后会询问是否输错重新输

入:

然后选择机票数量,确定:

 

2.3退票模块测试

在主菜单中选择3,进入退票模块。

选择要退的票数:

屏幕上显示“退票成功”字样,则表示旅客已成功退票。

2.4管理员输入航班信息

在主菜单选择4,进入管理员输入航班信息.首先输入密码:

然后管理员输入航班数量,信息等:

最后保存

这样就输入了航班信息,可以于航班查询中查阅以及订票.

 

3开发体会

在开发飞机票信息管理系统的过程中,我遇到了许许多多的挫折,但也因此进行了反反复复的思考,从中得到了不少体会。

最先我是直接用的四个模块:

查询航班,订票,退票以及界面模块。

可是这样子写发现每一个模块中都要重复利用到输入输出等大量重复语句,真正区分这几个模块的只有switch选择。

于是我干脆把输入输出读取这几个提出来作为单独的模块函数,而把选择如何查询航班(比如按航班号查询或者按目的地查询)的方法直接整合在一个函数中。

这样子程序变短了很多;再者在编写购票函数时,先开始还在重新写查询函数。

后来发现整个查询函数实际上可以直接调用过来,因为和之前考虑的四个模块不同,我这个是把所有的搜索方式都写在一个search函数里,所以调用更方便更全面了(所有的查找航班的方式全都可以用于购票的索引中)。

然后我觉得编程最需要的就是细致。

粗心大意地不仅不会编译通过无法实现功能,而且耗时耗力不讨好;更为繁琐的是,有些错误并不是语法错误,程序无法识别,但是实际运行时程序就会崩溃。

比如我在程序中定义了一个全局指针,但是却不知道引入的方法就直接用了,程序编译器通过了但是一旦用到它就会失去响应。

后来我的表哥告诉我之后我才恍然大悟。

另外一些细节地方,比如变量的定义必须放在最前面、循环时事<还是<=等,这些都是需要注意的最基础东西,但是常常会被忘记或说忽略。

这种细致的习惯是一定要养成的。

 

4.源代码清单

#include

#include

#include

typedefstructflightPLANES//定义航班结构体数组

{

intnum;//航班号

charstart[20];//起始站

charover[20];//终点站

chartime[10];//时间按

intcount;//机票数

structflightPLANES*next;

}PLANES;//这个貌似必须用大写字母,不然会出错...

#definePRINT"%3d%17s%12s%10s%9d|\n",p->next->num,p->next->start,p->next->over,p->next->time,p->next->count//定义输出格式

voidprintfmenu();//菜单

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

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

voidprint();//输出航班信息

PLANES*search();//查找航班信息

intbook_tickets();//订票信息

intbounce();//退票信息

PLANES*h=NULL;//建立全局变量,存链表头指针

intm=0;//航班数量

voidmain()

{

printfmenu();

}//主函数结束

voidinitlist(PLANES**h)

{

*h=(PLANES*)malloc(sizeof(PLANES));

(*h)->next=NULL;

}

voidsave()//保存模块程序

{

PLANES*p=NULL;

FILE*fp,*fp1;//定义文件指针

p=h;

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

{

printf("创建文件失败!

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

fflush(stdin);

getchar();

return;

}

if((fp1=fopen("Num.dat","wb"))==NULL)//打开文件并判断是否出错

{

printf("创建文件失败!

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

fflush(stdin);

getchar();

return;

}

while(p->next!

=NULL)

{

if(fwrite(p->next,sizeof(PLANES),1,fp)==0)//向文件写入数据,并判断是否出错

{

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

\n\n\n");

break;

}

elsep=p->next;

}

fprintf(fp1,"%d",m);

fclose(fp);//关闭文件

fclose(fp1);//关闭文件

}

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

{

FILE*fp,*fp1;//定义文件指针

PLANES*p=NULL;

inti;

initlist(&h);

p=h;

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

{

printf("出错,请检查信息文件是否存在,按任意键后回车返回住菜单\n\n\n");//打印出错提示

fflush(stdin);

getchar();

system("cls");

return0;

}

if((fp1=fopen("Num.dat","rb"))==NULL)//打开文件并判断是否出错

{

printf("创建文件失败!

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

fflush(stdin);

getchar();

system("cls");

return0;

}

fscanf(fp1,"%d",&m);

fclose(fp1);//关闭文件

printf("\n总共%d个航班信息\n",m);

for(i=0;i

{

p->next=(PLANES*)malloc(sizeof(PLANES));

p->next->next=NULL;

fread(p->next,sizeof(PLANES),1,fp);//从文件中读取信息

p=p->next;

}

fclose(fp);//关闭文件

return1;

}

voidprint()//打印模块

{

PLANES*p=NULL;

if(read()==0)

return;//调用读取文件函数,并判断是否文件存在。

p=h;

printf("════════════════════════════\n");

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

printf("════════════════════════════\n");

while(p->next!

=NULL)

{

printf(PRINT);//打印信息

p=p->next;

}

printf("════════════════════════════");

printf("\n\n\n\n\n\n请按任意键后回车结束返回上层菜单:

\n");

fflush(stdin);

getchar();

system("cls");

}

PLANES*search()//查询模块

{

PLANES*p=NULL;

PLANES*x=NULL;//用于记录查询到的记录

charname1[20];

charname2[20];

charii[10];

intn,no;

intflag=0;

if(read()==0)//调用读取文件函数,并判断是否文件存在。

return0;

p=h;

do

{

printf("请选择查找方式:

\n");

printf("--------------------------------------------\n");

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

"|2.按终点站查找|\n"

"|3.按航线查找|\n"

"|0.返回|\n"

"|请在0-3中选择:

|\n"

"|按其他键后回车返回主菜单:

|\n\n");

fflush(stdin);

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

if(n==0)

break;

switch(n)

{

case1:

printf("请输入航班号:

\n");

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

当前位置:首页 > 初中教育

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

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