




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.高级语言程序设计课程设计报告题目: 飞机订票系统程序设计 专 业 : 班 级 : 学 号 : 姓 名 : 指导教师 : 日 期: 山东工商学院信电学院.;1、程序基本功能要求 本程序首先输入用户名、密码进入系统;从菜单中选择可以输入机票信息对机票信息进行浏览、修改、查询、退订票等功能并可以通过其内部各类方式或菜单内选项了解航班更细的信息。(1)航班信息用文件保存,因而要提供文件的输入输出操作。 (2)航班信息的录入,其中包括了航班信息中的航班号、起始站、终点站、预售机票数 、已售机票数。 (3)航班信息浏览功能且提供显示操作。(4)可以查询航线,查询方式有按航班号查询、按起点站查询、按终点站
2、查询按航线查询、按飞行时间查询五种,可从各个方面进行查询,方便快捷。(5)承办订票和退票业务,可显示剩余票数和已买票数。当票数被订或被退时票数会随之变化,统计较为灵活。(6)提供键盘式选择菜单以实现功能选择。2、总体设计.编写一个飞机订票系统的程序使该系统能够实现对航班信息的录入、浏览、修改、查询以及订票、退票的功能。根据课程设计要求和本组人员的增补,首先要通过一个用户登录界面进入系统,其次要制作一个主菜单显示出各个操作的提示可供用户选择进而一步步地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个功能均用专门编制的函数来完成。因为飞机订票系统含有各航班的各项信息如航班号、航线、飞行时
3、间、机票数目等必要信息所以就决定用刚学不久的结构体数组来存放航班的各项信息,这就是看到题目后的最初的思路。在整个程序中,含有多种类型的头文件,包括了标准输入、输出头文件、字符串函数处理头文件、动态存储与释放函数头文件;在结构体数组中也对不同类型的数组进行不同的定义,例如: int flightno、int totalticket、char start10等;在各类信息的显示操作中,本系统在执行浏览、查询和退订票是充分利用函数的调用,利用switch()语句进行,简便实用;在此系统中,函数相互嵌套,形成了一个完整的系统。 本次设计需要编制初始化、建立数据文件、数据文件保存、增加航班信息、订票、退
4、票业务等内容。首先需要设立一个初始化函数来得到航班信息。具体设计是第一次运行程序时自动生成保存航班信息的文件,并输入初始航班信息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直接使用。运用了access函数判断文件是否存在。系统初始化后,没有寻找到数据文件则进行新建数据文件。此函数的作用就是进行新建文件数据的录入,运用到了文件指针的定义FILE *fp文件的打开fopen和关闭fclose、成块读写函数中的fwrite运用for循环进行各组数据的输入,用m+记录下输入的航班数量并运用if语句判断是否输入下一条航班信息,若不继续则返回主界面。系统初始化之后若原始数据文件存在则进行文件内
5、航班信息的读取以供接下来程序中的各个函数来使用。在该函数中同样运用到了文件指针FILE *fp、文件的打开fopen和关闭fclose、成块读写函数中的fread、文件结束检测函数feof同时配合while语句控制文件的读取,m+记录下读取到的航班数量等。因为在飞机订票系统中涉及到飞机的订票和退票业务还有按航班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系统后对整个订票系统涉及到的资料的修改。为了简便程序我就准备将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时候进行一次保存将此次对文件修改的所有新信息都一次保存下来。这样就实现了整个系统运行时进行一次读取,推出时一次保存
6、的设计大大简便了文件的调用和读取。保存函数运用到的知识点与读取函数大致相同。在这个函数中首先调用了search函数查找需要订票的航班。运用if语句实现订票时的多种情况,订票数输入不正确、飞机票数不足等情况。订票成功时运用si.totalticket=si.totalticket-n,si.sellticket=si.sellticket+n将已被订的机票数减去以显示新的即时航班信息。与订票函数相类似si.totalticket=si.totalticket+n,si.sellticket=si.sellticket-n。只做稍稍修改就行退票成功是用.。将航班的剩余票数加上去以显示即时航班信息。
7、模块分工:进入系统菜单 、输出航班信息、订票信息由刘妍负责输入航班信息、保存航班信息、读取航班信息由龚媛负责查询航班信息、退票信息、修改信息部分由郭勇艳负责3、详细设计系统程序结构(流程图)建立新数据文件开始系统初始化修改航班信息航班信息浏览查找航班信息订票业务退票业务退出并保存从已有的数据文件读取按航班号、起始站、时间、航线查找输入的各类信息录入信息系统流程图利用fread(&si,sizeof(flight),1,fp)读取信息fread(&si,sizeof(flight),1,fp);文件打开否 输入信息是否继续将信息输出到磁盘结束开始输出错误信息航班信息浏览函数:流程
8、图显示信息开始文件打开查找航班信息是否查找到输入信息是否继续结束输出错误信息删除操作查询模块:流程图.路线终点站起点站开始文件打开查询方式是否继续结束输出错误信息航班号飞行时间4、程序运行结果(截图)登陆系统时需输入用户信息图1进入系统后出现菜单供选择,选择需要进入的窗口图2航班信息的录入图3浏览航班信息图4航班信息的修改图5查询菜单图6通过航班号和时间进行查询图7系统订票图8退票系统图9退出系统图105、源程序代码(代码中注明每段代码的完成人)/*用户名:dianke 密码:12345*/#include<stdio.h> /标准输入、输出头文件#include<strin
9、g.h> /包含字符串函数处理头文件#include<stdlib.h> /包含动态存储与释放函数头文件#include<conio.h> /包含字符串的输入、输出头文件#define N 10000 struct flight /定义结构体数组 int flightno; char start10; char end10; char day10; int totalticket;int sellticket;sN;int i;int m=0;#define PRINT "%-d%14s%13s%12s%12d%16dn",si.flightn
10、o,si.start,si.end,si.day,si.totalticket,si.sellticket /定义输出格式void menu(); /进入系统菜单void print(); /输出航班信息 void booking(); /订票信息void input(); /输入航班信息void save(); /保存航班信息 void read(); /读取航班信息void search(); /查询航班信息void back(); /退票信息 void correct(); /修改信息void menu() int j; printf(" 欢迎进入飞机订票管理系统!n"
11、;); printf("=n"); do printf(" 1.录入航班信息 n"); printf(" 2.浏览航班信息 n"); printf(" 3.修改航班信息 n"); printf(" 4.查询航班信息 n"); printf(" 5.订票信息 n"); printf(" 6.退票信息 n"); printf(" 0.退出航班信息管理系统 n"); printf("=n"); printf("请
12、在0-6中选择以回车键结束:n"); scanf("%d",&j); switch(j) case 1: input(); /调用输入模块 break; case 2:print(); /调用打印模块 break; case 3:correct(); /调用修改模块 break; case 4:search(); /调用查询模块 break; case 5:booking(); /调用订票模块 break; case 6:back(); /调用退票模块 break; case 0:; break; while(j!=0); /判断结束 printf(&qu
13、ot;谢谢使用,再见!n"); /主函数结束void main() /打印主函数程序信息int i,k,part1,part2; char name10="dianke",password10="0" char person10, c10="12345"printf ("tt * 欢迎进入飞机订票管理系统!*nn"); /打印提示信息printf ("tt 本系统由 、 、 编写完成 nn");printf ("tt (*_*) nn");printf ("
14、;ttt 用 户 登 录nn");for(k=0;k!=3;) /打开文件并判断printf("tttt 用户名:"); /打印用户名 gets(person); part1=strcmp(person,name); printf("tttt 密码:"); /打印密码 for(i=0;i<5;i+) ci=getch(); printf("*"); gets(c); part2=strcmp(c,password); if(part1=0 && part2=0) printf("tttt 登陆
15、成功!nn"); menu(); break; else printf ("ttt 用户名或密码错误!nn");printf ("ttt 请注意:您还剩%d次机会!nn",2-k); k+;if (k=3) printf ("对不起,由于您输入的用户名或密码3次有误,已被强制退出。n");void input() /打印模块程序 int y; printf("请依次输入航班信息:n"); /打印提示信息 printf("完成输入信息请键入w以回车键结束n"); printf("
16、;-n"); for(i=0;i<N;i+) printf("请输入航班号:n"); scanf("%d",&si.flightno); /读取航班号 printf("请输入起始站:n"); scanf("%s",si.start); /读取起始站 printf("请输入终点站:n"); scanf("%s",si.end); /读取终点站 printf("请输入时间:n"); scanf("%s",si.day
17、); /读取时间 printf("请输入预售票总数:n"); scanf("%d",&si.totalticket); /读取预售票数 printf("请输入已售票总数:n",m); scanf("%d",&si.sellticket); /读取已售票总数 m+; printf("第%d个信息已经输完是否继续?按任意数字键继续,按0结束",m); scanf("%d",&y); if(y=0) save(); /将结构体信息存盘 print(); /输
18、出输入的航班信息 break; void save() /保存模块程序 FILE *fp,*fp1; /定义文件指针 if(fp=fopen("chen.dat","wb")=NULL) /打开文件并判断是否出错 printf("创建文件失败!nn"); /打印出错提示 getchar(); return; if(fp1=fopen("hao.dat","wb")=NULL) /打开文件并判断是否出错 printf("创建文件失败!nn"); /打印出错提示 getchar(
19、); return; for(i=0;i<m;i+) if(fwrite(&si,sizeof(struct flight),1,fp)=0) /向文件写入数据,并判断是否出错 printf("向文件输入数据失败!nn"); fprintf(fp1,"%d",m); fclose(fp); /关闭文件 fclose(fp1); /关闭文件void read() /从文件读取信息模块 FILE *fp,*fp1; /定义文件指针 if(fp=fopen("chen.dat","rb")=NULL) /打
20、开文件,并判断是否出错 printf("出错,请检查文件是否存在,按任意键返回住菜单");/打印出错提示 getchar(); if(fp1=fopen("hao.dat","rb")=NULL) /打开文件并判断是否出错 printf("创建文件失败!nn"); /打印出错提示 getchar(); return; fscanf(fp1,"%d",&m); fclose(fp1); /关闭文件 for(i=0;i<m;i+) fread(&si,sizeof(flight
21、),1,fp); /从文件中读取信息 fclose(fp); /关闭文件void print() /打印模块 char w10; read(); /调用读取文件函数 printf("航班号 起始站 终点站 时间 预售票总数 已售票总数n"); for(i=0;i<m;i+) printf(PRINT); /打印信息 printf("请按任意键回车键结束返回上层菜单以:n"); scanf("%s",w); void search() /查询模块 char startname10; char endname10;char day1
22、0; char p10; int n,no; do printf("请选择查询方式:n"); /打印查询方式菜单 printf("1.按航班号查询n");printf("2.按起点站查询n"); printf("3.按终点站查询n"); printf("4.按航线查询n");printf("5.按飞行时间查询n"); printf("0.返回n"); printf("请在0-5中选择:n"); printf("按其他键以回车键
23、结束返回主菜单:n"); scanf("%d",&n); /读取查找方式 if(n=0) break; switch(n) case 1: printf("请输入航班号:n"); scanf("%d",&no); /航班号 break;case 2:printf("请输入起点站名称:n");scanf("%s",&startname);break; case 3: printf("请输入终点站名称:n"); scanf("%s&qu
24、ot;,endname); /读取终点站 break; case 4: printf("请输入起始站名称:n"); scanf("%s",startname); /读取起始站 printf("请输入终点站名称:n"); scanf("%s",endname); /终点站 break; case 5:printf("请输入飞行时间:n");scanf("%s",&day);break; read(); /调用读取函数 for(i=0;i<m;i+) if(strc
25、mp(si.end,startname)=0|strcmp(si.end,endname)=0)/按终点站起始站判断输出条件 printf("n查询航班信息成功!n"); printf("航班号 起始站 终点站 时间 预售票总数 已售票总数n"); printf(PRINT); /打印信息 break; if(si.flightno=no) /按航班号判断输出条件 printf("n查询航班信息成功!n"); printf("航班号 起始站 终点站 时间 预售票总数 已售票总数n"); printf(PRINT);
26、 /打印信息 break; if(strcmp(si.day,day)=0) printf("n查询航班信息成功!"); printf("n航班号 起始站 终点站 时间 剩余机票数 预售机票数n"); printf(PRINT);/打印信息 break; no=0; /将航班号赋值为0 printf("没有您需要的信息或查找完毕:nn" "是否继续查找?请键入yes或no以回车键结束n"); scanf("%s",p);while(strcmp(p,"yes")=0); /判
27、断结束void booking() /订票模块 int n; char f10; do search(); /调用查询模块 printf("请输入您要订的机票数以回车键结束:n"); scanf("%d",&n); /读取所订机票数 if(n<0) printf("请输入有效的机票数!n"); /判断机票数是否出错 break; if(si.totalticket!=0&&si.totalticket>=n) /判断是否出错 si.totalticket=si.totalticket-n; si.s
28、ellticket=si.sellticket+n; save(); /调用保存函数 printf("订票成功!nn"); break; if(si.totalticket<n) /判断是否出错 printf("请输入有效的机票数:n"); break; printf("是否继续? 请输入yes或no以回车键结束:n"); /判断是否继续订票 scanf("%s",f);while(!strcmp(f,"yes"); /判断结束 void back() /退票模块 int n; char
29、f10; do search(); /调用查询模块 printf("请输入您要退的机票数目:n"); scanf("%d",&n); /输入所退票数 if(n<0) /判断票数是否有效 printf("请输入有效的机票数!n"); si.totalticket=si.totalticket+n; si.sellticket=si.sellticket-n; save(); /调用保存模块 printf("退票成功!nn"); printf("是否继续? 请键入yes或no以回车键结束:nn&
30、quot;);/判断是否继续退票 scanf("%s",f);while(!strcmp(f,"yes"); /判断并跳出循环 getchar();void correct() /修改模块 struct cor /定义结构体 int no; char startname10; char endname10; char day10; int totalticket;int sellticket;x1; char j10; int n; read(); /调用读取模块 do printf( "请选择修改方式:n"); printf( &q
31、uot;*1,按航班号修改:n"); printf( "*2,按航线修改: n"); printf("请在1-2中修改以回车键结束:n"); scanf("%d",&n); /读取修改方式 switch(n) case 1:printf("请输入航班号:n"); scanf("%d",&x0.no); /读取航班号 break; case 2:printf("请输入起始站:n"); scanf("%s",x0.startname)
32、; /读取起始站 printf("请输入终点站:n"); scanf("%s",x0.endname); /读取终点站 break; for(i=0;i<m;i+) if(strcmp(si.end,x0.startname)=0&&strcmp(si.end,x0.endname)=0) /判断输出条件 printf("航班号 起始站 终点站 时间 预售票总数 已售票总数n"); printf(PRINT); break; if(si.flightno=x0.no) /判断输出条件 printf("航班号 起始站 终点站 时间 预售票总数 已售票总数n"); printf(PRINT); break; x0.no=0; /将结构体中的号为零 p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年小学教师资格考试《综合素质》教育活动设计题教师专业成长路径与答案试卷
- 2025年注册会计师《会计》政府及民间非营利组织会计模拟试题详解与答案
- 2025年成人高考《语文》古诗词鉴赏专项题库(诗词与成语、典故运用与解析试题)
- 2025年乡村医生农村常用药物使用安全指南试题汇编
- 2025年消防安全知识培训考试题库:火灾预防与逃生消防安全培训计划优化效果评估试题
- 2025国际建筑工程施工合同范本
- 2025进出口商品购销合同书
- 2025常见陷入劳动合同陷阱
- 内江师范学院《机器人机构学与动力学分析》2023-2024学年第二学期期末试卷
- 天津轻工职业技术学院《跨境电商营销推广》2023-2024学年第二学期期末试卷
- 小学音乐国测(国家义务教育质量监测)复习内容
- 清表施工方案5完整
- 肛肠科发挥中医药特色措施
- 实验六复方磺胺甲恶唑片含量测定
- 锂电池项目投资预算分析(范文模板)
- 钢丝绳理论重量计算方式
- 浒墅关镇社区家长学校工作台帐(模板)
- 基于UbD理论小说叙事视角的群文阅读设计
- (完整word版)成绩证明模板(一)(word文档良心出品)
- aci318r08混凝土结构设计规范(中文版)
- 《玉米施肥方案》ppt课件
评论
0/150
提交评论