飞机管理系统.docx
《飞机管理系统.docx》由会员分享,可在线阅读,更多相关《飞机管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
飞机管理系统
中国地质大学
C课程设计报告
姓名
学号
专业
所在院系
教师姓名
日期:
2014年12月25日
目录
一、课程设计题目及要求计……………………………………………1
二、系统设计方案………………………………………………………1
(一)、总体框架………………………………………………1
(二)、流程图………………………………………………1
三、源程序清单…………………………………………………………4
四、调试过程……………………………………………………………12
五、程序有待改进的地方………………………………………………17
六、本次实习的收获和建议……………………………………………17
评语…………………………………………………………………18
一、课程设计题目及要求
题目飞机订票系统
任务:
二、系统设计方案
(一)、总体框架
飞机订票系统:
首先是主菜单,在该处选择进入管理员界面或者是客户界面,如需进入管理员界面需要输入密码,客户菜单可直接进入。
管理员界面:
1.添加航班信息
2.显示航班信息
3.查询航班信息
4.退出航班信息
客户界面:
1.显示航班信息
2.查询航班信息
3.预定机票
4.返退机票
5.退出订票系统
管理员界面和客户界面公用显示和查询航班信息模块,管理员界面独自拥有添加航班信息模块,客户界面可提供订票和退票功能。
添加航班信息:
能录入新数据,但对于文件中已有的航班号进行限制输入,所以文件中所有航班号都是唯一的。
显示航班信息:
输出所有的航班信息。
查询航班信息:
可以按航班号,终点站,起始站,航行时间四种方式查询。
对于通讯录中没有的航班显示没有该航班信息,并返回主菜单。
预定机票:
按航班号查找到航班信息,再进行订票操作,订票后已售机票会相应增加。
返退机票:
按航班号查找到航班信息,再进行退票操作,退票后已售机票会相应减少。
(二)、流程图
1)系统功能模块结构图:
2)模块流程图
a添加航班信息流程图
b查询模块
Yn
c订票和退票
d查询模块
Yn
三、源程序清单
#include/*头文件包含命令*/
#include
#include
#include
#defineSIZE15
structflight/*结构体存放航班信息的结构*/
{
charflight_no[20];
charstartstation[20];
charendstation[20];
charflytime[10];
intplan_ticket;
intsell_ticket;
}fly[SIZE];/*定义结构体变量*/
voidBrowse();
voidmenu();
voidfn1();/*函数声明*/
voidfn2();/*函数声明*/
voiddingpiao();
voidtuipiao();//退票
voidmenu1();
voidchoice();
/*********************************************************************************************/
voidinput()/*把航班信息输入到文件*/
{
inti,n,j=0;
FILE*fp;
chars[21];
printf("请输入要添加的信息:
\n");
while
(1)
{
if((fp=fopen("flydata1.txt","w+"))==NULL)
{
printf("\n文件不存在.\n");
return;
}
lable:
printf("\n航班号\n");scanf("%s",s);
for(i=0;i{
fscanf(fp,"%10s%10s%10s%20s%10d%10d\n",&fly[i].flight_no,&fly[i].startstation,&fly[i].endstation,&fly[i].flytime,&fly[i].plan_ticket,&fly[i].sell_ticket);
if(strcmp(fly[i].flight_no,s)==0)
{
printf("该航班号已存在!
请重新输入。
\n");
gotolable;
}
}
printf("请再次输入航班号:
\n");
scanf("%s",&fly[j].flight_no);
printf("\n起始站\n");
scanf("%s",&fly[j].startstation);
printf("\n终点站\n");
scanf("%s",&fly[j].endstation);
printf("\n飞行时间\n");
scanf("%s",&fly[j].flytime);
printf("\n预售机票\n");
scanf("%d",&fly[j].plan_ticket);
printf("\n已售机票\n");
scanf("%d",&fly[j].sell_ticket);
printf("是否继续添加?
继续请按1,返回主菜单0\n");
scanf("%d",&n);
if(n==0)break;
elsej++;}
if((fp=fopen("flydata.txt","a"))==NULL)
{
printf("\n文件不存在.\n");
return;
}
fprintf(fp,"\n%8s%10s%10s%13s%15d%15d\n",fly[j].flight_no,fly[j].startstation,fly[j].endstation,fly[j].flytime,fly[j].plan_ticket,fly[j].sell_ticket);
fclose(fp);
}
/***************************************************************************************/
/*********************************************************************************************/
voidprintf_back()/*返回退出函数实现程序退出、返回*/
{
intw,i;
printf("请选择您想进入的界面!
\n\n\t1).管理员界面\t2).客户界面:
[]\b\b");
scanf("%d",&w);
if(w==1)
{printf("请输入密码并以回车键结束:
");
scanf("%d",&i);
if(i!
=12345)
{
printf("密码错误!
\n请重新选择:
");
printf_back();
}
fn1();
}
elsefn2();
}
/*********************************************************************************************/
/*********************************************************************************************/
voidBrowse()/*显示*/
{
inti;
FILE*fp;
if((fp=fopen("flydata.txt","r"))==NULL)
{
printf("\n文件不存在.\n");
return;
}
printf("═════════════════════════════════════\n");
printf("\n航班号起始站终点站飞行时间预售机票已售机票\n");
for(i=0;i{
fscanf(fp,"%10s%10s%10s%20s%10d%10d\n",&fly[i].flight_no,&fly[i].startstation,&fly[i].endstation,&fly[i].flytime,&fly[i].plan_ticket,&fly[i].sell_ticket);
if(fly[i].plan_ticket==0)
break;
printf("%8s%10s%10s%13s%15d%15d\n",fly[i].flight_no,fly[i].startstation,fly[i].endstation,fly[i].flytime,fly[i].plan_ticket,fly[i].sell_ticket);
}
menu();
fclose(fp);
system("pause");
}
/*********************************************************************************************/
voidSearch()/*查询*/
{
inti,item,flag;
chars1[21];
FILE*fp;
if((fp=fopen("flydata.txt","r"))==NULL)
{
printf("\n文件不存在.\n");
return;
}
printf("═══════════════════════════════════════\n");
printf("\n航班号起始站终点站飞行时间预售机票已售机票\n");
for(i=0;ifscanf(fp,"%8s%10s%10s%13s%15d%15d",&fly[i].flight_no,&fly[i].startstation,&fly[i].endstation,&fly[i].flytime,&fly[i].plan_ticket,&fly[i].sell_ticket);
while
(1)
{
printf("**************************************************************************\n");
printf("请选择查找方式:
\n\n");//打印查询方式菜单
printf("--------------------------------------------------------------------------\n");
printf("1.按航班号查找\n\n"
"2.按终点站查找\n\n"
"3.按起始站查找\n\n"
"4.按航行时间查找\n\n"
"0.返回\n\n");
printf("**************************************************************************\n");
printf("请选择子菜单编号:
");
scanf("%d",&item);
switch(item)
{case1:
printf("请输入航班号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(fly[i].flight_no,s1)==0)
{
flag=1;
printf("═══════════════════════════════════════\n");
printf("\n航班号起始站终点站飞行时间预售机票已售机票\n");
printf("\n%8s%10s%10s%13s%15d%15d\n",fly[i].flight_no,fly[i].startstation,fly[i].endstation,fly[i].flytime,fly[i].plan_ticket,fly[i].sell_ticket);
printf("═══════════════════════════════════════\n");
}
if(flag==0)
{
printf("═══════════════════════════════════════\n");
printf("************************无该航班信息,请重新输入*******************************\n");
printf("═══════════════════════════════════════\n");
}
system("pause");
break;
case2:
printf("请输入终点站:
\n");
scanf("%s",s1);
printf("═══════════════════════════════════════\n");
printf("\n航班号起始站终点站飞行时间预售机票已售机票\n");
for(i=0;iif(strcmp(fly[i].startstation,s1)==0)/*比较两个字符串*/
{
flag=1;
printf("\n%8s%10s%10s%13s%15d%15d\n",fly[i].flight_no,fly[i].startstation,fly[i].endstation,fly[i].flytime,fly[i].plan_ticket,fly[i].sell_ticket);
printf("═══════════════════════════════════════\n");
}
if(flag==0)
{
printf("═══════════════════════════════════════\n");
printf("************************无该航班信息,请重新输入*******************************\n");
printf("═══════════════════════════════════════\n");
}
system("pause");
break;
case3:
printf("请输入起始站:
\n");
scanf("%s",s1);
printf("═══════════════════════════════════════\n");
printf("\n航班号起始站终点站飞行时间预售机票已售机票\n");
for(i=0;iif(strcmp(fly[i].endstation,s1)==0)/*比较两个字符串*/
{
flag=1;
printf("\n%8s%10s%10s%13s%15d%15d\n",fly[i].flight_no,fly[i].startstation,fly[i].endstation,fly[i].flytime,fly[i].plan_ticket,fly[i].sell_ticket);
printf("═══════════════════════════════════════\n");
}
if(flag==0)
{
printf("═══════════════════════════════════════\n");
printf("************************无该航班信息,请重新输入*******************************\n");
printf("═══════════════════════════════════════\n");
}
system("pause");
break;
case4:
printf("请输入飞行时间:
\n");
scanf("%s",s1);
printf("═══════════════════════════════════════\n");
printf("\n航班号起始站终点站飞行时间预售机票已售机票\n");
for(i=0;iif(strcmp(fly[i].flytime,s1)==0)/*比较两个字符串*/
{
flag=1;
printf("\n%8s%10s%10s%13s%15d%15d\n",fly[i].flight_no,fly[i].startstation,fly[i].endstation,fly[i].flytime,fly[i].plan_ticket,fly[i].sell_ticket);
printf("═══════════════════════════════════════\n");
}
if(flag==0)
{
printf("═══════════════════════════════════════\n");
printf("************************无该航班信息,请重新输入*******************************\n");
printf("═══════════════════════════════════════\n");
}
system("pause");
break;
case0:
printf_back();
default:
printf("请在0-4之间选择\n");
}
}
system("pause");
menu();
fclose(fp);
}
/*********************************************************************************************/
voidfn1()
{while
(1)
{
menu1();
printf("请在0-3中选择:
[]\b\b");
choice();
}
}
voidmenu1()
{
puts("*********************************************************************\n");
puts("----------------------------主菜单-----------------------------------\n");
puts("\t\t1.添加航班信息");
puts("\t\t2.显示航班信息");
puts("\t\t3.查询航班信息");
puts("\t\t0.退出航班信息");
puts("*********************************************************************\n");
}
voidchoice()
{
intn;
scanf("%d",&n);
getchar();
switch(n)
{
case1:
input();break;
case2:
Browse();break;
case3:
Search();break;
case0:
exit(0);break;
}
getchar();
}
/*********************************************************************************************/
voidfn2()
{
intn,w;
do
{
puts("***************************************************************\n");
puts("----------------------------主菜单------------------------------\n");
puts("\t\t1.显示航班信息");
puts("\t\t2.查询航班信息");
puts("\t\t3.预定机票");
puts("\t\t4.返退机票");
puts("\t\t0.退出订票系统");
puts("*******************************************************\n");
printf("请在0-4中选择:
[]\b\b");
scanf("%d",&n);
if(n<0||n>4)
{
w=1;
getchar();
}
elsew=0;
}
while(w==1);
switch(n)
{
case1:
Browse();break;
case2:
Search();break;
case3:
dingpiao();break;
case4:
tuipiao();break;
case0:
exit(0);
}
}
/*********************************************************************************************/
voidmenu()
{inta,i;
printf("\n\n\n\n****************************************************************\n");
printf("\n");
printf("****欢迎进入飞机订票系统****\n");
printf("****制作人:
徐海容****\n");
printf("\n");
printf("****************************************************************\n\n");
printf("=============管理员进入请按==1==,客户进入请按==2==:
");
scanf("%d",&a);
while
(1)
{if(a!
=1&&a!
=2)
{