飞机订票管理系统C语言课程设计.docx
《飞机订票管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《飞机订票管理系统C语言课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
飞机订票管理系统C语言课程设计
飞机订票管理系统-C语言课程设计
设计报告
题目:
飞机订票管理系统
学院:
工商管理学院
专业:
信息管理与信息系统专业
班级:
050507
姓名:
赵伟宏
指导教师:
张守伟
设计日期:
2006年12月14日——12月17日
题目:
飞机订票管理系统
一、选题背景:
问题提出:
在以往的机订票系统过程中~由于订票系统过于复杂~往往给订票工作人员带来了很多的不便~工作人员要知道是否还有多余的空座以及航班都十分困难~依次也给乘客带来了很多的麻烦~飞机订票系统提供的功能过于烦琐~而且有些程序并不提供订票的功能。
为此,这里用C语言编制了几个函数,用于程序中时,可达到让工作人员准确订票的目的.
二、设计思路:
飞机订票系统是对中国民航订票系统的管理~即对为的方便乘客~对工作人员输入和删除航班信息~乘客浏览和查找航班信息以及订票和退票的系统管理。
本程序是通过简单的C语言的基本函数来管理运行的~来实现飞机订票系统管理的基本功能。
在实现过程中~应用循环来判断运行相应的函数~即可达到方便查找和管理的功能。
三:
设计分析:
应用技术点及主要解决问题阐述
通过飞机订票系统管理函数~来实现对飞机订票的管理~通过调用输入模块~调用打印模块~调用修改模块~调用查找模块~调用删除模块~调用订票模块~调用退票模块~来输出飞机订票系统的程序~从而来是工作人员和乘客方便的打印和查询飞机航班的系统。
技术关键
飞机订票系统管理主要运用了调用函数~其中包括输入函数,voidinput()),输出函数,voidprint()),保存函数,voidsave()),读取函数,voidread()),查找函数,void
search()),删除函数,voidshanchu()),订票函数,voiddingpiao()),退票函数~voidtuipiao(),
修改(voidxiugai())。
四:
程序流程图
主函数
输入函数修改函数函数函数函数函数输出查找订票删除
voidinput()voidprint()xiugai()search()dingpiao()shuanch()
((()
shanchu()vo
idshanchu()
退票函数tuipiao()
开始
do
while
输出管理的
程序(1-7)
关于调用函数
I
输入j的计算值
选择
j=7j=5j=6j=1j=2j=3j=4
dingpiao()input()print()xiugai()search()Shunchu()dingpiao()tuipiao()
dingpiao()breakbreakbreakbreakbreakbreakbreak
五、程序清单:
一,
二(
#include/*标准输入、输出头文件*/#include/*包含字符串函数处理头文件*/#include/*包含动态存储与释放函数头文件*/
#defineN1000
structair/*定义结构体数组*/{
intnum;
charstart[20];
charover[20];
chartime[10];
intcount;
}s[N];
inti;
intm=0;
#definePRINT"%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count
/*定义输出格式*/
voidinput();/*输入航班信息*/
voidprint();/*输出航班信息*/
voidsave();/*保存航班信息*/
voidread();/*读取航班信息*/
voidsearch();/*查找航班信息*/
voidshanchu();/*删除航班信息*/
voiddingpiao();/*订票信息*/
voidtuipiao();/*退票信息*/
voidxiugai();/*修改信息*/
voidmain()
{
intj;
printf("?
---您好,欢迎进入中国民航管理系统~---?
\n");
printf("================================================================
================\n");
do
{
printf("--------?
1.输入航班信息?
--------\n\n"
"--------?
2.浏览航班信息?
--------\n\n"
"--------?
3.修改航班信息?
--------\n\n"
"--------?
4.查找航班信息?
--------\n\n"
"--------?
5.删除航班信息?
--------\n\n"
"--------?
6.订票信息?
--------\n\n"
"--------?
7.退票信息?
--------\n\n"
"--------?
0.退出?
--------\n\n");
printf("================================================================
================\n");
printf("请在0-7中选择以回车键结束:
\n\n");
scanf("%d",&j);
switch(j)
{
case1:
input();/*调用输入模块*/
break;
case2:
print();/*调用打印模块*/
break;
case3:
xiugai();/*调用修改模块*/
break;
case4:
search();/*调用查找模块*/
break;
case5:
shanchu();/*调用删除模块*/
break;
case6:
dingpiao();/*调用订票模块*/
break;
case7:
tuipiao();/*调用退票模块*/
break;
case0:
;
break;
}
}while(j!
=0);/*判断结束*/
printf("谢谢使用,再见~\n");
}/*主函数结束*/
voidinput()/*打印模块程序*/
{
charf[]="2008china";/*设置密码*/
inty;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f);/*读取密码*/
if(strcmp(f,"2008china")==0)
{
printf("请依次输入航班信息(机票数位0结束输入):
\n\n"
"完成输入信息请键入w以回车键结束\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",m);
scanf("%d",&s[i].count);/*读取机票数*/
m++;
printf("第%d个信息已经输完是否继续?
按任意键继续,按0结束",m);
scanf("%d",&y);
if(y==0)
{
save();/*将结构体信息存盘*/
print();/*输出输入的航班信息*/
break;
}
}
}
else
printf("输入密码错误!
请检查您的密码是否正确!
谢谢!
再见!
\n\n");
}
voidsave()/*保存模块程序*/
{
FILE*fp,*fp1;/*定义文件指针*/
if((fp=fopen("chen.dat","wb"))==NULL)/*打开文件并判断是否出错*/
{
printf("创建文件失败!
\n\n");/*打印出错提示*/
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)/*打开文件并判断是否出错*/
{
printf("创建文件失败!
\n\n");/*打印出错提示*/
getchar();
return;
}
for(i=0;iif(fwrite(&s[i],sizeof(structair),1,fp)==0)/*向文件写入数据,并判断是否出错*/
printf("向文件输入数据失败!
\n\n");
fprintf(fp1,"%d",m);
fclose(fp);/*关闭文件*/
fclose(fp1);/*关闭文件*/
}
voidread()/*从文件读取信息模块*/
{
FILE*fp,*fp1;/*定义文件指针*/
if((fp=fopen("chen.dat","rb"))==NULL)/*打开文件,并判断是否出错*/
{
printf("出错,请检查文件是否存在,按任意键返回住菜单");/*打印出错提示*/
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)/*打开文件并判断是否出错*/
{
printf("创建文件失败!
\n\n");/*打印出错提示*/
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);/*关闭文件*/
for(i=0;i{
fread(&s[i],sizeof('air'),1,fp);/*从文件中读取信息*/
}
fclose(fp);/*关闭文件*/
}
voidprint()/*打印模块*/
{
charw[10];
read();/*调用读取文件函数*/
printf("航班号起始站终点站时间机票数\n");
for(i=0;i{
printf(PRINT);/*打印信息*/
}
printf("请按任意键回车键结束返回上层菜单以:
\n");
scanf("%s",w);}
voidsearch()/*查询模块*/
{
charname1[20];
charname2[20];
charii[10];
intn,no;
do
{
printf("请选择查找方式:
\n\n");/*打印查询方式菜单*/
printf("1.按航班号查找\n\n"
"2.按终点站查找\n\n"
"3.按航线查找\n\n"
"0.返回\n\n");
printf("请在0-3中选择:
\n\n"
"按其他键以回车键结束返回主菜单:
\n\n");
scanf("%d",&n);/*读取查找方式*/
if(n==0)
break;
switch(n)
{
case1:
printf("请输入航班号:
\n");
scanf("%d",&no);/*航班号*/
break;
case2:
printf("请输入终点站名称:
\n");
scanf("%s",name2);/*读取终点站*/
break;
case3:
printf("请输入起始站名称:
\n");
scanf("%s",name1);/*读取起始站*/
printf("请输入终点站名称:
\n");
scanf("%s",name2);/*终点站*/
break;
}
read();/*用读取函数*/
for(i=0;i{
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)/*终点站起始站判断输出条件*/
{
printf("\n查找航班信息成功!
\n");
printf("航班号起始站终点站时间机票数\n");
printf(PRINT);/*印信息*/
break;
}
if(s[i].num==no)/*按航班号判断输出条件*/
{
printf("\n查找航班信息成功!
\n");
printf("航班号起始站终点站时间机票数\n");
printf(PRINT);/*打印信息*/
break;
}
}
no=0;/*将航班号赋值为0*/
printf("没有您需要的信息或查找完毕:
\n\n"
"是否继续查找?
请键入yes或no以回车键结束\n");
scanf("%s",ii);}while(strcmp(ii,"yes")==0);/*判断结束*/}
voidshanchu()/*删除模块*/
{
charname1[20];
charname2[20];
charii[10];
charf[]="2008china";/*设置密码*/
intno,n;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f);/*读取密码*/
if(strcmp(f,"2008china")==0)/*判断密码是否正确*/
{
do
{
printf("请选择删除以方式回车键结束:
\n\n");/*打印删除方式菜单*/
printf("*1.按航班号删除\n\n"
"*2.按航线删除\n\n"
"*0.返回\n\n");
printf("请在0-2中选择以回车键结束:
\n");
scanf("%d",&n);/*读取删除方式*/
if(n==0)
break;/*跳出循环*/
switch(n)
{
case1:
printf("请输入航班号:
\n");
scanf("%d",&no);/*读取航班号*/
read();/*调用读取函数*/
break;/*跳出循环*/
case2:
printf("请输入起始站名称:
\n");
scanf("%s",name1);/*读取起始站*/
printf("请输入终点站名称:
\n");
scanf("%s",name2);/*读取终点站*/
read();/*调用读取函数*/
break;/*跳出循环*/
}
for(i=0;i{
if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)/*判断输入信
息是否存在*/
{
s[i]=s[m-1];
m--;
}
}
printf("查找完毕或没有这个信息\n\n");
printf("是否继续删除\n");
printf("请键入yes或no以回车键结束\n");
scanf("%s",ii);/*读取是否继续信息*/
save();/*调用读取函数*/
if(!
strcmp(ii,"yes"))/*判断是否继续删除*/
printf("请按任意键以回车键结束返回上层菜单:
\n");
break;
}while(n!
=1&&n!
=2&&n!
=3&&n!
=4&&n!
=0);/*判断结束*/
}
else
printf("对不起密码错误!
您不是管理员,不能使用此项功能!
谢谢!
再见!
\n\n");
}
voiddingpiao()/*订票模块*/
{
intn;
chara[10];
do
{
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;
save();/*调用保存函数*/
printf("订票成功!
\n\n");
break;
}
if(s[i].count{
printf("请输入有效的机票数:
\n");
break;
}
printf("是否继续,请输入yes或no以回车键结束:
\n");/*判断是否继续订票*/
scanf("%s",a);
}while(!
strcmp(a,"yes"));/*判断结束*/
}
voidtuipiao()/*退票模块*/
{
intn;
chara[10];
do
{
search();/*调用查询模块*/
printf("请输入您要退的机票数目:
\n");
scanf("%d",&n);/*输入所退票数*/
if(n<0)/*判断票数是否有效*/
printf("请输入有效的机票数~\n");
s[i].count=s[i].count+n;
save();/*调用保存模块*/
printf("退票成功!
\n\n");
printf("是否继续,请键入yes或no以回车键结束:
\n\n");/*判断是否继续退票*/
scanf("%s",a);
}while(!
strcmp(a,"yes"));/*判断并跳出循环*/
getchar();
}
voidxiugai()/*修改模块*/
{
structxiu/*定义结构体*/
{
intno;
charname1[20];
charname2[20];
chartime[20];
intcount;
}x[1];
charj[10];
charf[]="2008china";/*设置密码*/
intn;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f);/*读取密码*/
if(strcmp(f,"2008china")==0)/*判断是否出错*/
{
read();/*调用读取模块*/
do
{
printf("请选择修改方式:
\n\n"
"*1,按航班号修改:
\n\n"
"*2,按航线修改:
\n\n");
printf("请在1---2中修改以回车键结束:
\n\n");
scanf("%d",&n);/*读取修改方式*/
switch(n)
{
case1:
printf("请输入航班号:
\n");
scanf("%d",&x[0].no);/*读取航班号*/
break;
case2:
printf("请输入起始站:
\n");
scanf("%s",x[0].name1);/*读取起始站*/
printf("请输入终点站:
\n");
scanf("%s",x[0].name2);/*读取终点站*/
break;
}
for(i=0;i{
if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)/*判断输出条件*/
{
printf("航班号起始站终点站时间机票数\n");
printf(PRINT);
break;
}
if(s[i].num==x[0].no)/*判断输出条件*/
{
printf("航班号起始站终点站时间机票数\n");
printf(PRINT);
break;
}
}
x[0].no=0;/*将结构体中的号为零*/
printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:
\n");
scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);/*定义输入格式*/
s[i].num=x[0].no;/*替换航班号*/
strcpy(s[i].start,x[0].name1);/*替换其始站*/
strcpy(s[i].over,x[0].name2);/*替换终点站*/
strcpy(s[i].time,x[0].time);/*替换时间*/
s[i].count=x[0].count;/*替换机票数*/
save();/*调用保存模块*/
printf("是否继续,请键入yes或no以回车键结束:
\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0);/*判断结束*/
}
else
printf("对不起密码错误!
您不是管理员,不能使用此项功能!
谢谢!
再见!
\n\n");}
六、设计自评:
1~设计优点:
该程序的最大特点是设计思路简单~语言简练、通俗易懂。
全篇没有较难的C语言语句~而且操作简单~实用性强~可以对任意一组输入的数据信息进行分析统计。
程序中每个函数在实现同一功能时~都尽量用不相近的方法来实现~而在一些用到重复功能的地方~这里仅用一种较具代表性的方式来一代
而过。
因此~用户可以根据需要~任意拓展每个函数的功能~进而完善本程序增强实用性~这里为读者留下了足够的自我构思的思维空间。
2~设计缺点:
函数利用单一~没有利用不同形式的占据空间较小的函数实现不同功能~所以占据的空间较大。