c语言程序设计报告飞机票预订系统_第1页
c语言程序设计报告飞机票预订系统_第2页
c语言程序设计报告飞机票预订系统_第3页
c语言程序设计报告飞机票预订系统_第4页
c语言程序设计报告飞机票预订系统_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录目录i1课程设计的目的12需求分析12.1设计一个飞机订票系统,完成以下功能12.2该系统中用到的数据结构13概要设计23.1总体功能模块23.1.1 基本设计23.1.2开发平台23.1.3系统功能图23.2详细设计33.2.1主函数的实现33.2.2打印模块程序43.2.3保存模块程序53.2.4从文件读取信息模块63.2.5打印模块73.2.8订票模块113.2.9退票模块133.2.10修改模块133.2.11头文件及结构体数组164 调试与测试结果分析174.1系统主界面174.2输入航班信息界面184.3浏览航班信息界面194.4修改航班信息界面194.5查找航班信息界面214

2、.6删除航班信息界面224.7订票信息界面234.8退票信息界面244.9退出系统255 使用说明266总结26参考文献.28附录.29i德州学院 信息管理学院 2014级 计科(外包) 自主学习能力飞机票预订系统的设计与实现1课程设计的目的(1)学会怎样用c语言做一个完整的系统。(2)掌握c语言的编辑,链接,运行等环节。(3)掌握c语言中链表的建立,插入,删除,保存节点。熟练掌握for while 、do-while循环语句的使用。(4)通过程序设计的课程设计,掌握并熟悉一个简单项目的开发过程,本项目利用程序设计中最基础和最重要的部分:单链表。(5)在整个开发设计过程中掌握程序设计的思想,以

3、及各种操作和实际应用。并可以将其运用于具体问题的解决之中。加深对程序设计课程中理论和实践相结合的认识。(6)掌握并熟练单链表的创建、插入、删除、查找等各种常用算法。最终设计完成飞机票预订及查询系统 ,将各种算法综合运用于具体的设计任务中。(7)C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,上机实习可以帮助我们更好地理解这种结构式的中级语言以及其各式各样的数据类型和高效率的运算程序,为我们进一步学习打下坚实的基础。2需

4、求分析2.1设计一个飞机订票系统,完成以下功能 (1)可为此系统增加任意多部的飞机票,飞机票按添加先后顺序依次编号排列;(2)允许乘客按飞机票名订票订票;(3)订过票的乘客,可以退票;(4)允许查询现有飞机票的售票处号及剩余座位数。(5)允许查询已售出机票的信息。2.2该系统中用到的数据结构 (1)所有飞机票构成一个单链表,且每部飞机票为一个结构体,其成员包括:飞机票序号(int型)、飞机票名称(char20,字符数组型)、飞机票剩余票数座位数10(int型)、next指针; (2)所有乘客构成一个单链表,且每个乘客为一个结构体,其成员包括:飞机票序号(int型)、乘客姓名(char10,字符

5、数组型)、飞机票名(char20,字符型数组)、乘客持有票数(int型)、next指针; 3概要设计3.1总体功能模块 3.1.1 基本设计此飞机票预订系统是由菜单的选择来实现人机交互的,进入预定页面以后就可以根据自己的需求选择不同的数字来进入不同的界面,进入不同的界面可以实现对飞机票的建立、插入、删除、查询等信息。 3.1.2开发平台系统: Windows 7 旗舰版(64位)处理器: Intel(R)Core(TM)i5-4210M CPU 2.6Ghz内存: 4.00 GB程序开发软件: Microsoft Visual C+ 6.0文档编写: WPS 2013抢鲜版 3.1.3系统功能

6、图进入飞机票预订系统之后,便可以根据自己的需求对飞机票预订进行增、删、改、查等操作,总流程图如图1所示:3.2详细设计 3.2.1主函数的实现void main()int j; printf(" -您好,欢迎进入机票预订系统!-n"); printf("=n"); do printf(" - 1.输入航班信息 - nn" " - 2.浏览航班信息 - nn" " - 3.修改航班信息 - nn" " - 4.查找航班信息 - nn" " - 5.删除航班信息 - n

7、n" " - 6.订票信息 - nn" " - 7.退票信息 - nn" " - 0.退出 - nn"); printf("=n"); printf("请在0-7中选择以回车键结束:nn"); scanf("%d",&j); switch(j) case 1: input();/调用输入模块 break; case 2:print();/调用打印模块 break; case 3:xiugai();/调用修改模块 break; case 4:search();

8、/调用查找模块 break; case 5:shanchu(); /调用删除模块 break; case 6:dingpiao();/调用订票模块 break; case 7:tuipiao();/调用退票模块 break; case 0:; break; while(j!=0); /判断结束 printf("谢谢使用,再见!n"); 3.2.2打印模块程序void input()char f="tanbowen" /设置密码 int y; printf("请输入密码并以回车键结束:nn"); scanf("%s"

9、,f); /读取密码 if(strcmp(f,"tanbowen")=0) printf("请依次输入航班信息(机票数位0结束输入):nn" "完成输入信息请键入w以回车键结束nn"); /打印提示信息 printf("-n"); for(i=0;i<N;i+) printf("请输入航班号:n"); scanf("%d",&si.num); /读取航班号 printf("请输入起始站:n"); scanf("%s",si

10、.start);/读取起始站 printf("请输入终点站:n"); scanf("%s",si.over);/读取终点站 printf("请输入时间:n"); scanf("%s",si.time);/读取时间 printf("请输入机票数(机票数为0结束输入):n",m); scanf("%d",&si.count);/读取机票数 m+; printf("第%d个信息已经输完是否继续?按任意键继续,按 0结束",m); scanf("

11、%d",&y); if(y=0) save();/将结构体信息存盘 print();/输出输入的航班信息 break; else printf("输入密码错误!请检查您的密码是否正确!谢谢!再见!nn"); 3.2.3保存模块程序void save()FILE *fp,*fp1;/定义文件指针 if(fp=fopen("chen.dat","wb")=NULL)/打开文件并判断是否出错 printf("创建文件失败!nn");/打印出错提示 getchar(); return;if(fp1=fop

12、en("hao.dat","wb")=NULL)/打开文件并判断是否出错printf("创建文件失败!nn");/打印出错提示 getchar(); return;for(i=0;i<m;i+) if(fwrite(&si,sizeof(struct air),1,fp)=0)/向文件写入数据,并判断是否出错 printf("向文件输入数据失败!nn"); fprintf(fp1,"%d",m); fclose(fp);/关闭文件 fclose(fp1);/关闭文件 3.2.4从文

13、件读取信息模块void read()FILE *fp,*fp1;/定义文件指针 if(fp=fopen("chen.dat","rb")=NULL)/打开文件,并判断是否出错printf("出错,请检查文件是否存在,按任意键返回住菜单");/打印出错提示 getchar();if(fp1=fopen("hao.dat","rb")=NULL)/打开文件并判断是否出错printf("创建文件失败!nn");/打印出错提示 getchar(); return; fscanf(fp

14、1,"%d",&m); fclose(fp1);/关闭文件 for(i=0;i<m;i+) fread(&si,sizeof(struct air),1,fp);/从文件中读取信息fclose(fp);/关闭文件 3.2.5打印模块void print()char w10; read();/调用读取文件函数 printf("航班号 起始站 终点站 时间 机票数n"); for(i=0;i<m;i+) printf(PRINT);/打印信息printf("请按任意键回车键结束返回上层菜单以:n"); scan

15、f("%s",w); 3.2.6查询模块void search()/查询模块char name120; char name220; char ii10; int n,no; doprintf("请选择查找方式:nn");/打印查询方式菜单 printf("1.按航班号查找nn" "2.按终点站查找nn" "3.按航线查找nn" "0.返回nn"); printf("请在0-3中选择:nn" "按其他键以回车键结束返回主菜单:nn");

16、scanf("%d",&n);/读取查找方式 if(n=0)break;switch(n)case 1:printf("请输入航班号:n"); scanf("%d",&no);/航班号break;case 2:printf("请输入终点站名称:n"); scanf("%s",name2);/读取终点站 break;case 3:printf("请输入起始站名称:n"); scanf("%s",name1);/读取起始站 printf(&qu

17、ot;请输入终点站名称:n"); scanf("%s",name2);/终点站 break;read();/调用读取函数for(i=0;i<m;i+)if(strcmp(si.over,name1)=0|strcmp(si.over,name2)=0)/按终点站起始站判断输出条件printf("n查找航班信息成功!n"); printf("航班号 起始站 终点站 时间 机票数n"); printf(PRINT);/打印信息break;if(si.num=no)/按航班号判断输出条件printf("n查找航班信

18、息成功!n"); printf("航班号 起始站 终点站 时间 机票数n"); printf(PRINT);/打印信息break;no=0;/将航班号赋值为0printf("没有您需要的信息或查找完毕:nn" "是否继续查找?请键入yes或no以回车键结束n");scanf("%s",ii);while(strcmp(ii,"yes")=0);/判断结束 3.2.7删除模块void shanchu()char name120; char name220; char ii10; char

19、 f="tanbowen"/设置密码 int no,n; printf("请输入密码并以回车键结束:nn"); scanf("%s",f);/读取密码if(strcmp(f,"tanbowen")=0) /判断密码是否正确doprintf("请选择删除以方式回车键结束:nn");/打印删除方式菜单 printf("*1.按航班号删除nn" "*2.按航线删除nn" "*0.返回nn");printf("请在0-2中选择以回车键

20、结束:n");scanf("%d",&n);/读取删除方式if(n=0)break; /跳出循环switch(n)case 1: printf("请输入航班号:n");scanf("%d",&no);/读取航班号 read();/调用读取函数 break;/跳出循环case 2: printf("请输入起始站 名称:n"); scanf("%s",name1);/读取起始站 printf("请输入终点站名称:n"); scanf("%s&q

21、uot;,name2);/读取终点站 read();/调用读取函数break;/跳出循环for(i=0;i<m;i+)if(si.num=no|strcmp(si.start,name1)=0&&strcmp(si.over,name2)=0)/判断输入信息是否存在si=sm-1;m-;printf("查找完毕或没有这个信息nn");printf("是否继续删除n"); printf("请键入yes或no以回车键结束n"); scanf("%s",ii); /读取是否继续信息 save();

22、/调用读取函数if(!strcmp(ii,"yes") /判断是否继续删除printf("请按任意键以回车键结束返回上层菜单:n");break;while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); /判断结束elseprintf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!nn"); 3.2.8订票模块void dingpiao()int n;char a10;dosearch();/调用查询模块 printf("请输入您

23、要订的机票数以回车键结束:n"); scanf("%d",&n);/读取所订机票数if(n<0)printf("请输入有效的机票数!n");/判断机票数是否出错 break;if(si.count!=0&&si.count>=n)/判断是否出错si.count=si.count-n; save();/调用保存函数 printf("订票成功!nn"); break;if(si.count<n)/判断是否出错printf("请输入有效的机票数:n"); break;

24、printf("是否继续? 请输入yes或no以回车键结束:n");/判断是否继续订票scanf("%s",a);while(!strcmp(a,"yes");/判断结束 3.2.9退票模块void tuipiao()int n; char a10; dosearch();/调用查询模块 printf("请输入您要退的机票数目:n"); scanf("%d",&n);/输入所退票数if(n<0) /判断票数是否有效printf("请输入有效的机票数!n");si

25、.count=si.count+n;save(); /调用保存模块 printf("退票成功!nn"); printf("是否继续? 请键入yes或no以回车键结束:nn");/判断是否继续退票scanf("%s",a);while(!strcmp(a,"yes");/判断并跳出循环getchar(); 3.2.10修改模块void xiugai() /修改模块struct xiu /定义结构体 int no; char name120; char name220; char time20;int count;x1

26、;char j10; char f="tanbowen"/设置密码int n; printf("请输入密码并以回车键结束:nn");scanf("%s",f);/读取密码if(strcmp(f,"tanbowen")=0)/判断是否出错read();/调用读取模块doprintf( "请选择修改方式:nn" "*1,按航班号修改:nn" "*2,按航线修改: nn");printf("请在1-2中修改以回车键结束:nn");scanf(

27、"%d",&n);/读取修改方式switch(n)case 1:printf("请输入航班号:n");scanf("%d",&x0.no);/读取航班号break;case 2:printf("请输入起始站:n");scanf("%s",1);/读取起始站printf("请输入终点站:n");scanf("%s",2);/读取终点站break;for(i=0;i<m;i+) if(strcmp(si.ove

28、r,1)=0&&strcmp(si.over,2)=0)/判断输出条件printf("航班号 起始站 终点站 时间 机票数n");printf(PRINT);break;if(si.num=x0.no)/判断输出条件printf("航班号 起始站 终点站 时间 机票数n");printf(PRINT);break;x0.no=0; /将结构体中的号为零printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:n");scanf("%d%s%s%s%d",&a

29、mp;x0.no,1,2,x0.time,&x0.count);/定义输入格式 si.num=x0.no;/替换航班号 strcpy(si.start,1);/替换其始站strcpy(si.over,2);/替换终点站strcpy(si.time,x0.time);/替换时间si.count=x0.count;/替换机票数save();/调用保存模块printf("是否继续?请键入yes或no以回车键结束:nn");scanf("%s",j);while(strcmp(j,"yes

30、")=0); /判断结束elseprintf("对不起密码错误!您不是管理员,不能使用此项功能!谢谢!再见!nn"); 3.2.11头文件及结构体数组#include<stdio.h> /标准输入、输出头文件#include<string.h> /包含字符串函数处理头文件#include<stdlib.h> /包含动态存储与释放函数头文件#define N 10000 struct air /定义结构体数组int num;char start20;char over20;char time10;int count;sN;int

31、i;int m=0;#define PRINT "%-d%12s%12s%10s%12dn",si.num,si.start,si.over,si.time,si.count /定义输出格式void input(); /输入航班信息void print(); /输出航班信息void save(); /保存航班信息 void read(); /读取航班信息void search(); /查找航班信息void shanchu(); /删除航班信息void dingpiao(); /订票信息void tuipiao(); /退票信息void xiugai(); /修改信息4 调试

32、与测试结果分析4.1系统主界面进入系统之后,首先出现的是欢迎进入机票预定系统界面,一共有8个选项,分别是:1、输入航班信息。 2、浏览航班信息。 3、修改航班信息。 4、查找航班信息 5、删除航班信息。 6、订票信息。 7、退票信息。 8、退出。然后根据需要选择对应数字,之后点击回车就会进入飞机票预定系统界面。如图2所示:图2机票预订系统界面4.2输入航班信息界面输入1之后点击回车键就可以进入输入密码界面,然后输入密码(tanbowen)再点击回车进入输入航班信息界面,建立航班信息表,根据提示输入航班号、航班号、起始站、终点站、时间、机票数(机票数为零结束输入),输入完一个后系统会提示你是否要

33、继续输入(按任意键继续输入,按0键结束输入),之后点击回车键返回主页面,极大的节省了管理员的操作时间。如图3、4所示:图3输入密码界面 图4建立航班信息界面4.3浏览航班信息界面输入2之后就可以在系统中查询出你要查找的学生的基本信息。如图5所示:图5浏览航班信息界面4.4修改航班信息界面本功能可以方便的修改航班的详细信息,输入3就可以进入修改航班信息界面,但为了不让任何人都可以随便修改航班信息,要求管理员输入密码进入修改航班信息界面,然后选择修改方式:*1、按航班号修改,*2、按航线修改,此处以“*1、按航班号修改”为例,如果本来没有航班信息系统就会提示你先建立,然后到建立界面。否则请输入航班

34、号,进入后按要求修改即可。如图6、7、8、9所示: 图6修改航班信息界面 图7修改航班信息界面 图8修改航班信息界面 图9修改航班信息界面4.5查找航班信息界面输入4之后就可以在系统中查询出你要查找的航班的基本信息。查询航班信息的方式有三种分别是:1、按航班号查找,2、按终点站查找,3、按航线查找。下面以“1、按航班号查找”为例进行查找。如图10、11所示: 图10查找航班信息界面 图11查找航班信息界面4.6删除航班信息界面本功能可以方便的删除航班信息,输入5就可以进入修改航班信息界面,但为了不让任何人都可以随便删除航班信息,要求管理员输入密码进入删除航班信息界面,然后选择修改方式:*1、按

35、航班号修改,*2、按航线修改,此处以“*1、按航班号修改”为例,如果本来没有航班信息系统就会提示你先建立,然后到建立界面。否则请输入航班号,进入后按要求删除即可。如图12、13所示: 图12删除航班信息界面 图13删除航班信息界面4.7订票信息界面输入6之后就可以在系统中查询出你要查找的航班的基本信息。查询航班信息的方式有三种分别是:1、按航班号查找,2、按终点站查找,3、按航线查找。下面以“1、按航班号查找”为例进行查找。如图14、15所示: 图14订票信息界面 图15订票信息界面4.8退票信息界面输入7之后就可以在系统中查询出你要退订的航班的基本信息。退订航班信息的方式有三种分别是:1、按

36、航班号查找,2、按终点站查找,3、按航线查找。下面以“1、按航班号查找”为例进行查找。如图16、17、18所示: 图16退票信息界面 图17退票信息界面 图18退票信息界面4.9退出系统输入8之后提示请在0-7之间选择数字,此时可以退出系统。5 使用说明(1) 乘客订票后,对应飞机票的剩余座位数自动减去乘客所定票数。(2) 若乘客所定飞机票票已售完,应给出相应的提示信息,并且订票失败。(3) 在订票前,应先创建飞机票链表;(4) 乘客链表的初始值为空,在有乘客订票时,才把乘客结点插入乘客链表;(5) 如乘客退票,则将对应的乘客结点从乘客链表中删除,且其所购票飞机票的剩余座位数自动增加乘客所退票

37、数。6总结 整个课程设计终于完成了,虽然过程有些曲折,路途有些艰辛,但还是顺利的完成了。我们付出了很多,但我认为我们得到的更多。通过这次的程序编写让我对C语言产生更大的兴趣了,明白了光书本的知识的确不行,还是要理论联系实践才行。因此不断的练习是必要的,上机实践更重要。有时理论是对的,但是实践起来就不行了啊。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能力。如果没有同学们的互相帮助,这次课程设计就不会这么顺利,这对我毕业以后将所学知识充分应用

38、于工作起到了很好的启发与激励作用。实训中存在的问题:首先,做事要认真,不能马马虎虎的,可能因为你的一点疏忽,就可能整个程序不能运行。在以后的学习过程中加强对教学理论的学习及思考。特别是理论与实际案冽的结合分析,等.应该合理安排作息时间,作好轻重缓急之分。加强自我管理,改正一些不良习惯。比如“如果我认为”这样的话,就不应该出现,应该尽量的从客观出发,要客观的证明自己专注。我们换句话说,也就是往往人都会给自己找一个合适的理由解脱,但是失败只有一个理由,就是你做得不好!加强自我监督,不给自己找偷懒的理由,把一切事情在第一时间内解决。还有在文中叙述存在严重的问题。一是你文章层次不分明。二是逻辑思维混乱

39、。如果改正,我就会觉得生活十分充实、高效、有意义,并且可以出色的完成任何自己力所能及的任务,成为一个个人领域成功的人。那正是我现在所需要的。实训改进建议及创新方案:还要增加程序的功能,使程序更加完整,更有实践性。比如删除机票已售完飞机票的删除,增加飞机票的发售时间等。 用不同方法实现该程序,如按日期查询订购机票。增加程序的出错处理能力,如输入错误的处理。尝试用不同的方法完成,巧妙的运用自己所学的知识,把理论运用到实践中。参考文献1 周启海.C语言程序设计教程M.北京:机械工业出版社,2004.2谭浩强.程序设计(第三版)M.北京:清华大学出版社,2005.9.3张志航,王珊珊等.课程设计语言C

40、M.北京:清华大学出版社,2007.4何钦铭,颜辉.C语言程序设计M.北京:高等教育出版社,2008.5张建勋,纪纲.C语言程序设计教程M.北京:清华大学出版社,2008.6冉崇善.C语言程序设计教程M.北京:机械工业出版社,2009.7徐士良.C语言程序设计教程M.北京:北京邮电大学出版社,2009.8杨文君,杨柳.C语言程序设计教程M.北京:清华大学出版社,2010.9谢延红,王付山 .C语言程序设计教程M. 北京:国防工业出版社2010.8.10 薄文娟.  C语言程序设计在线考试系统的设计与开发D. 电子科技大学,2011.附录:一、主函数的实现void main(

41、)int j; printf(" -您好,欢迎进入机票预订系统!-n"); printf("=n"); do printf(" - 1.输入航班信息 - nn" " - 2.浏览航班信息 - nn" " - 3.修改航班信息 - nn" " - 4.查找航班信息 - nn" " - 5.删除航班信息 - nn" " - 6.订票信息 - nn" " - 7.退票信息 - nn" " - 0.退出 - nn&

42、quot;); printf("=n"); printf("请在0-7中选择以回车键结束:nn"); scanf("%d",&j); switch(j) case 1: input();/调用输入模块 break; case 2:print();/调用打印模块 break; case 3:xiugai();/调用修改模块 break; case 4:search();/调用查找模块 break; case 5:shanchu(); /调用删除模块 break; case 6:dingpiao();/调用订票模块 break;

43、case 7:tuipiao();/调用退票模块 break; case 0:; break; while(j!=0); /判断结束 printf("谢谢使用,再见!n");二、打印模块程序void input()char f="tanbowen" /设置密码 int y; printf("请输入密码并以回车键结束:nn"); scanf("%s",f); /读取密码 if(strcmp(f,"tanbowen")=0) printf("请依次输入航班信息(机票数位0结束输入):nn&

44、quot; "完成输入信息请键入w以回车键结束nn"); /打印提示信息 printf("-n"); for(i=0;i<N;i+) printf("请输入航班号:n"); scanf("%d",&si.num); /读取航班号 printf("请输入起始站:n"); scanf("%s",si.start);/读取起始站 printf("请输入终点站:n"); scanf("%s",si.over);/读取终点站 pri

45、ntf("请输入时间:n"); scanf("%s",si.time);/读取时间 printf("请输入机票数(机票数为0结束输入):n",m); scanf("%d",&si.count);/读取机票数 m+; printf("第%d个信息已经输完是否继续?按任意键继续,按 0结束",m); scanf("%d",&y); if(y=0) save();/将结构体信息存盘 print();/输出输入的航班信息 break; else printf("输入密码错误!请检查您的密码是否正确!谢谢!再见!nn");三、保存模块程序void save()FILE *fp,*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论