飞机订票系统C语言课设.docx

上传人:b****6 文档编号:5386839 上传时间:2022-12-15 格式:DOCX 页数:18 大小:96.26KB
下载 相关 举报
飞机订票系统C语言课设.docx_第1页
第1页 / 共18页
飞机订票系统C语言课设.docx_第2页
第2页 / 共18页
飞机订票系统C语言课设.docx_第3页
第3页 / 共18页
飞机订票系统C语言课设.docx_第4页
第4页 / 共18页
飞机订票系统C语言课设.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

飞机订票系统C语言课设.docx

《飞机订票系统C语言课设.docx》由会员分享,可在线阅读,更多相关《飞机订票系统C语言课设.docx(18页珍藏版)》请在冰豆网上搜索。

飞机订票系统C语言课设.docx

飞机订票系统C语言课设

C语言程序设计课程设计

评语:

考勤(10)

纪律(10)

过程(40)

设计报告(30)

答辩(10)

总成绩(100)

专业:

电气工程及其自动化(卓越)

班级:

电气1301

姓名:

王思远

学号:

指导教师:

王黎

兰州交通大学自动化与电气工程学院

2014年7月12日

综合题

3.1引言

设计目的是解决如下实际问题:

3.1.1问题描述:

假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。

通过该系统来实现机票的订购问题。

3.1.2功能要求:

本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:

起飞地、目的地航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。

本系统显示这样的菜单:

1)输入航班信息

2)输出航班信息

3)查找航班信息

a.显示空座的数量

b.显示空座的信息

c.显示已订座的信息

d.起飞时间

4)订票预约

5)删除定票预约

6)退出系统

本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。

查找航班信息既可按线路查,也可按目的地查。

在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据.

3.1.3算法提示:

数据结构:

结构体类型数组数据库结构:

下表构成该系统的基本数据库。

航班号

起飞时

目的

座次

座次订出与否

的标记

订票者姓

订票者身份证号码

int

char

char

int

Char

char

char

3.1.4测试数据:

每架飞机的座位N=12,M=5

3.1.5其它:

对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。

选择的设计方法是使用C语言利用计算机解决问题。

3.2设计

设计思路:

对于这种大型的程序,必须现有一个整体的规划,生成出一个流程图,流程图负责规划总体,而程序最主要的就是飞机航班订票各个功能,每个功能都作为一个模块,每一个模块划分任务,每个功能都作为一个模块,并且还得按照题目要求,将信息保存在文件中,而且信息都将被输入到事先定义的结构体数组中,实现在内存单元中的信息的分类存放,之后将其输出。

主函数流程图如5所示(合):

 

开始

调用读取文件功能

输入选择功能序号

图5

输入信息函数流程图如图6所示:

 

 

开始输入航班信息

输入航班号

输入起飞地

输入终点站

输入终点站

输入余量

返回主程序

 

 

输出信息函数流程图如图7所示:

 

查找航班信息的流程图如图8所示:

 

输入航班号

输出航班信息

返回主函数

订票预约的流程图如图9所示:

开始订票预约

输入航班号

输入订票者信息

系统分配座位

返回主函数

删除订票预约的流程图如图10:

开始删除订票功能

输入航班号

输入座位号

返回主函数

图10

 

源代码:

#include

#include

structzuoci

{

inthaoma;//座次数

intbiaoji;//座位订出的标记

charxingming[20];〃订座者姓名

charzhengjian[30];〃订座者的身份证号码

};

structplane

{

intno;//航班号

charqidian[30];//起飞地

charzhongdian[30];//目的地

chartime[30];〃起飞时间

intleft;//余票

structzuocizuowei[12];〃座位订出信息

}plane[888];//888个航班容量

intnum=0,i,j,t;//定义外部变量(全局变量)

voidread()〃读取文件的功能

{

FILE*fp;

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

//rb打开二进制文件

{

printf("出错");

getchar();

}

i=0;

while(!

feof(fp))//文件是否结尾位置,不是结尾就继续{

fread(&plane[i],sizeof(structplane),1,fp);

//二进制读入

i++;

num++;

}

num--;

fclose(fp);

}

voidsave()//保存到文件的功能

{

FILE*fp;

if((fp=fopen("file.dat","wb"))==NULL)

//第一次运行无指定,就会建立新文件file.dat

{

printf("出错");getchar();

}

for(i=0;i

fwrite(&plane[i],sizeof(structplane),1,fp);//二进制输出

fclose(fp);

}

voidshuru()//输入航班的功能

{charc;

printf("请输入您要增加的航班信息:

\n");

printf("请输入航班号:

\n");

scanf("%d",&plane[num].no);

printf("请输入起飞地\n");

scanf("%s",plane[num].qidian);

printf("请输入目的地\n");

scanf("%s",plane[num].zhongdian);

printf("请输入起飞时间\n");

scanf("%s",plane[num].time);

printf("请输入航班余量\n");

scanf("%d",&plane[num].left);

for(i=0;i

{

plane[num].zuowei[i].biaoji=0;

}

num++;

getchar();/启继续

}

voidshuchu()//输出航班信息的功能

{

printf("目前航班:

\n");

printf("航班号\t\t起飞地\t\t目的地\t\t起飞时间\t\t票数\n");

for(i=0;i

getchar();//继续

}

voidchazhao()//查找航班信息的功能

{

printf("请输入您要查询的航班号:

");

scanf("%d",&t);

for(i=0;i

//先查找航班

{

if(t==plane[i].no)

{

printf("航班的空座数量为:

%d\n",plane[i].left);

printf("空座号:

");

for(j=0;j<12;j++)

{

if(plane[i].zuowei[j].biaoji!

=1)

printf("%d号",j+1);

}//输出航班号

printf("\n");

printf("已订座位的信息:

\n");

for(j=0;j<12;j++)

{

if(plane[i].zuowei[j].biaoji==1)

{

printf("座位号:

%d\n",j+1);

printf("订座者姓名:

");puts(plane[i].zuowei[j].xingming);

printf("订座者身份证号码:

");puts(plane[i].zuowei[j].zhengjian);}//12个座位查询范围

}

printf("航班起飞时间:

");puts(plane[i].time);

}

}

getchar();/继续

}

voiddingpiao()//订票的功能

{

intn;

printf("请输入订票的航班号:

\n");scanf("%d",&n);

for(i=0;i

if(plane[i].no==n)break;printf("余票:

%d\n",plane[i].left);for(j=0;plane[i].zuowei[j].biaoji==1;j++);printf("请输入姓名拼音:

");

scanf("%s",plane[i].zuowei[j].xingming);printf("请输入身份证号码:

");

scanf("%s",plane[i].zuowei[j].zhengjian);printf("分配给座位是:

%d号\n",j+1);

plane[i].zuowei[j].biaoji=1;

plane[i].left--;

getchar();//继续

}

voidcancel()//删除订票的功能

{

intn,m;

charjudge;

printf("请输入删除的订票航班号:

");scanf("%d",&n);

for(i=0;i

printf("请输入删除的座位号:

");scanf("%d",&m);

plane[i].zuowei[m-1].biaoji=0;

plane[i].left++;

getchar();//继续

}

voidmain()//主函数

{

intmenu;

read();//首先读入数据do

{

menu=0;

printf("—

—欢迎使用飞机订票系统

——\n");

printf("[

请选择需要的功能

]\n");

printf("||

1、输入航班信息

||\n");

printf("||

2、输出航班信息

||\n");

printf("||

3、查找航班信息

||\n");

printf("||

4、订票预约

||\n");

printf("||

5、删除订票预约

||\n");

printf("||

6、退出系统

||\n");

printf(">>>>>>>>>>>>>><<<<<<<<<<<<<\n");

printf("输入选择功能序号:

");scanf("%d",&menu);

switch(menu)

{

case1:

shuru();break;

case2:

shuchu();break;

case3:

chazhao();break;

case4:

dingpiao();break;

case5:

cancel();break;

case6:

save();break;

}//如果没有符合的序号,则不执行,流转下一条

getchar();〃子函数配合输入继续

}//循环体位置

while(menu!

=6);//判断条件

}

实现注释:

程序的要求进行了实现,在基础要求之外没有完成其他功能

3.3调试报告

在读取二进制文件,没有创建,但在写入时,写入,保存了数据:

在进行输出时,制表位与数据位不对齐,于是检查了制表符;因为定义的座位数组为12所以只能查找12个座位的信息。

3.4运行及结果测试如图11所示

图11-1

图11-2

图11-3

图11-4

图11-5

图11-6

3.5总结

本程序实现了题中飞机订票系统的所有功能,完成了题中所给的要求。

大程序的编写,让我们基本了解的程序软件的编写过程。

在一开始,利用流程图,可以对程序规划,而使用功能模块,可以对程序进行任务的细分。

在流程图的规划下,程序做的还是比较顺畅,一开始较好的规划,减少了不必要的错误的产生,在以前的C语言学习和实践中,只用到了运行数据从终端的输入输出和内存单元的存取,这个程序则需要实现内存的单元到硬盘文件的的输入输出,这是时下流行的

软件都采用的方式。

我认为这些应该就是实践和实习的意义。

参考文献

[1]谭浩强著.C程序设计(第四版)•北京:

清华大学出版社,2010.

附录源程序代码:

#include

#include

structzuoci

{

inthaoma;//座次数

intbiaoji;//座位订出的标记

charxingming[20];〃订座者姓名

charzhengjian[30];〃订座者的身份证号码

};

structplane

{

intno;//航班号

charqidian[30];//起飞地

charzhongdian[30];//目的地

chartime[30];〃起飞时间intleft;//余票

structzuocizuowei[12];〃座位订出信息

}plane[888];//888个航班容量

intnum=0,i,j,t;//定义外部变量(全局变量)

voidread()〃读取文件的功能

{

FILE*fp;

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

//rb打开二进制文件

{

printf("出错");

getchar();

}

i=0;

while(!

feof(fp))//文件是否结尾位置,不是结尾就继续{

fread(&plane[i],sizeof(structplane),1,fp);

//二进制读入

i++;

num++;

}

num--;

fclose(fp);

}

voidsave()//保存到文件的功能

{

FILE*fp;

if((fp=fopen("file.dat","wb"))==NULL)

//第一次运行无指定,就会建立新文件file.dat

{

printf("出错");getchar();

}

for(i=0;i

fwrite(&plane[i],sizeof(structplane),1,fp);//二进制输出

fclose(fp);

}

voidshuru()//输入航班的功能

{charc;

printf("请输入您要增加的航班信息:

\n");

printf("请输入航班号:

\n");

scanf("%d",&plane[num].no);

printf("请输入起飞地\n");

scanf("%s",plane[num].qidian);

printf("请输入目的地\n");

scanf("%s",plane[num].zhongdian);

printf("请输入起飞时间\n");

scanf("%s",plane[num].time);

printf("请输入航班余量\n");

scanf("%d",&plane[num].left);

for(i=0;i

{

plane[num].zuowei[i].biaoji=0;

}num++;

getchar();/启继续

}

voidshuchu()//输出航班信息的功能

{

printf("目前航班:

\n");

printf("航班号\t\t起飞地\t\t目的地\t\t起飞时间\t\t票数\n");for(i=0;i

printf("%d\t\t%s\t\t%s\t\t%s\t\t\t%d\n",plane[i].no,plane[i].qidian,plane[i].zhongdian,plane[i].time,plane[i].left);

getchar();//继续

}

voidchazhao()//查找航班信息的功能

{

printf("请输入您要查询的航班号:

");scanf("%d",&t);

for(i=0;i

{

if(t==plane[i].no)

{

printf("航班的空座数量为:

%d\n",plane[i].left);

printf("空座号:

");

for(j=0;j<12;j++)

{

if(plane[i].zuowei[j].biaoji!

=1)

printf("%d号",j+1);

}//输出航班号

printf("\n");

printf("已订座位的信息:

\n");for(j=0;j<12;j++)

{if(plane[i].zuowei[j].biaoji==1){

printf("座位号:

%d\n",j+1);

printf("订座者姓名:

");puts(plane[i].zuowei[j].xingming);

printf("订座者身份证号码:

");puts(plane[i].zuowei[j].zhengjian);}//12个座位查询范围

}

printf("航班起飞时间:

");puts(plane[i].time);

}

}

getchar();/继续

}

voiddingpiao()//订票的功能

{

intn;

printf("请输入订票的航班号:

\n");scanf("%d",&n);

for(i=0;i

if(plane[i].no==n)break;printf("余票:

%d\n",plane[i].left);for(j=0;plane[i].zuowei[j].biaoji==1;j++);printf("请输入姓名拼音:

");

scanf("%s",plane[i].zuowei[j].xingming);printf("请输入身份证号码:

");

scanf("%s",plane[i].zuowei[j].zhengjian);printf("分配给座位是:

%d号\n",j+1);

plane[i].zuowei[j].biaoji=1;

plane[i].left--;

getchar();//继续

}

voidcancel()//删除订票的功能

{

intn,m;

charjudge;

printf("请输入删除的订票航班号:

");scanf("%d",&n);

for(i=0;i

printf("请输入删除的座位号:

");scanf("%d",&m);

plane[i].zuowei[m-1].biaoji=0;

plane[i].left++;

getchar();//继续

}

voidmain()//主函数

{

intmenu;

read();//首先读入数据do

{

menu=0;

printf("—

—欢迎使用飞机订票系统

——\n");

printf("[

请选择需要的功能

]\n");

printf("||

1、输入航班信息

||\n");

printf("||

2、输出航班信息

||\n");

printf("||

3、查找航班信息

||\n");

printf("||

4、订票预约

||\n");

printf("||

5、删除订票预约

||\n");

printf("||

6、退出系统

||\n");

printf(">>>>>>>>>>>>>><<<<<<<<<<<<<\n");

printf("输入选择功能序号:

");scanf("%d",&menu);

switch(menu)

{

case1:

shuru();break;

case2:

shuchu();break;

case3:

chazhao();break;

case4:

dingpiao();break;

case5:

cancel();break;

case6:

save();break;

}//如果没有符合的序号,则不执行,流转下一条

getchar();〃子函数配合输入继续

}//循环体位置

while(menu!

=6);//判断条件

}

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

当前位置:首页 > 求职职场 > 简历

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

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