c语言程序设计报告飞机票预订系统.docx
- 文档编号:8155803
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:41
- 大小:1.33MB
c语言程序设计报告飞机票预订系统.docx
《c语言程序设计报告飞机票预订系统.docx》由会员分享,可在线阅读,更多相关《c语言程序设计报告飞机票预订系统.docx(41页珍藏版)》请在冰豆网上搜索。
c语言程序设计报告飞机票预订系统
参考文献......................................................................................................................28
附录..............................................................................................................................29
飞机票预订系统的设计与实现
1课程设计的目的
(1)学会怎样用c语言做一个完整的系统。
(2)掌握c语言的编辑,链接,运行等环节。
(3)掌握c语言中链表的建立,插入,删除,保存节点。
熟练掌握forwhile、do-while循环语句的使用。
(4)通过程序设计的课程设计,掌握并熟悉一个简单项目的开发过程,本项目利用程序设计中最基础和最重要的部分:
单链表。
(5)在整个开发设计过程中掌握程序设计的思想,以及各种操作和实际应用。
并可以将其运用于具体问题的解决之中。
加深对程序设计课程中理论和实践相结合的认识。
(6)掌握并熟练单链表的创建、插入、删除、查找等各种常用算法。
最终设计完成《飞机票预订及查询系统》,将各种算法综合运用于具体的设计任务中。
(7)C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
它的应用范围广泛,具备很强的数据处理能力,上机实习可以帮助我们更好地理解这种结构式的中级语言以及其各式各样的数据类型和高效率的运算程序,为我们进一步学习打下坚实的基础。
2需求分析
2.1设计一个飞机订票系统,完成以下功能
(1)可为此系统增加任意多部的飞机票,飞机票按添加先后顺序依次编号排列;
(2)允许乘客按飞机票名订票订票;
(3)订过票的乘客,可以退票;
(4)允许查询现有飞机票的售票处号及剩余座位数。
(5)允许查询已售出机票的信息。
2.2该系统中用到的数据结构
(1)所有飞机票构成一个单链表,且每部飞机票为一个结构体,其成员包括:
飞机票序号(int型)、飞机票名称(char[20],字符数组型)、飞机票剩余票数座位数10(int型)、next指针;
(2)所有乘客构成一个单链表,且每个乘客为一个结构体,其成员包括:
飞机票序号(int型)、乘客姓名(char[10],字符数组型)、飞机票名(char[20],字符型数组)、乘客持有票数(int型)、next指针;
3概要设计
3.1总体功能模块
3.1.1基本设计
此飞机票预订系统是由菜单的选择来实现人机交互的,进入预定页面以后就可以根据自己的需求选择不同的数字来进入不同的界面,进入不同的界面可以实现对飞机票的建立、插入、删除、查询等信息。
3.1.2开发平台
系统:
Windows7旗舰版(64位)
处理器:
Intel(R)Core(TM)i5-4210MCPU@2.6Ghz
内存:
4.00GB
程序开发软件:
MicrosoftVisualC++6.0
文档编写:
WPS2013抢鲜版
3.1.3系统功能图
进入飞机票预订系统之后,便可以根据自己的需求对飞机票预订进行增、删、改、查等操作,总流程图如图1所示:
3.2详细设计
3.2.1主函数的实现
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");
}
3.2.2打印模块程序
voidinput()
{
charf[]="tanbowen";//设置密码
inty;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f);//读取密码
if(strcmp(f,"tanbowen")==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"); } 3.2.3保存模块程序 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;i if(fwrite(&s[i],sizeof(structair),1,fp)==0)//向文件写入数据,并判断是否出错 printf("向文件输入数据失败! \n\n"); fprintf(fp1,"%d",m); fclose(fp);//关闭文件 fclose(fp1);//关闭文件 } 3.2.4从文件读取信息模块 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(structair),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件 } 3.2.5打印模块 voidprint() { charw[10]; read();//调用读取文件函数 printf("航班号起始站终点站时间机票数\n"); for(i=0;i { printf(PRINT);//打印信息 } printf("请按任意键回车键结束返回上层菜单以: \n"); scanf("%s",w); } 3.2.6查询模块 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);//判断结束 } 3.2.7删除模块 voidshanchu() { charname1[20]; charname2[20]; charii[10]; charf[]="tanbowen";//设置密码 intno,n; printf("请输入密码并以回车键结束: \n\n"); scanf("%s",f);//读取密码 if(strcmp(f,"tanbowen")==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"); } 3.2.8订票模块 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"));//判断结束 } 3.2.9退票模块 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(); } 3.2.10修改模块 voidxiugai()//修改模块 { structxiu//定义结构体 { intno; charname1[20]; charname2[20]; chartime[20]; intcount; }x[1]; charj[10]; charf[]="tanbowen";//设置密码 intn; printf("请输入密码并以回车键结束: \n\n"); scanf("%s",f);//读取密码 if(strcmp(f,"tanbowen")==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"); } 3.2.11头文件及结构体数组 #include #include #include #defineN10000 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();//修改信息 4调试与测试结果分析 4.1系统主界面 进入系统之后,首先出现的是欢迎进入机票预定系统界面,一共有8个选项,分别是: 1、输入航班信息。 2、浏览航班信息。 3、修改航班信息。 4、查找航班信息 5、删除航班信息。 6、订票信息。 7、退票信息。 8、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 报告 飞机票 预订 系统