机票预订系统说明书.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2011秋季学期
面向对象课程设计
题目:机票预定系统
专业班级:10级计算机(1)班
姓名:张凯
学号:10240114
指导教师:年福忠
成绩:
目录
摘要 (1)
前言 (2)
基本算法的实现(正文) (3)
1.采用类c语言定义相关的数据类型 (3)
2.各模块的伪码算法 (3)
3.函数的调用关系图 (5)
4.调试分析 (6)
5.测试结果 (7)
6.源程序(带注释) (10)
总结 (17)
参考文献 (18)
致谢 (19)
附件Ⅰ部分源程序代码 (20)
摘要
该设计要求对飞机航班信息进行排序和查找。

可按航班的班号、起点站、到达站、起飞时间以及到达时间等信息时行查询。

对于本设计,主要是通过线性表的逻辑结构、存储结构,线性表及队列上基本运算实现的。

可以让我们学会如何把学到的知识用于解决实际问题。

关键词:航班信息,客户信息,类C语言
前言
飞机在现今的社会中已是越来越重要了,人们在旅游、工作、学习等生活中对飞机几乎是不可缺少了。

而由乘坐飞机所引起的问题也深入到了计算机领域,飞机订票系统就是解决这种问题的一种途径。

如人们常常在订票前要对问很多信息(飞机的起落时间,机票的价格,乘坐的人数以及是否有票等等)。

这个系统主要是由线性表的链式存储结构以及队列的存储结构来存储航班信息与客户信息的。

它的主要功能:
1、是录入航班信息,其调用函数为—insert_airline;
2、查询航线(航班号,飞机号,日期,航班容量,余票数),其调用函数为:search_air;
3、订票(根据客户提供的情况,办理订票手续),其调用函数为:book_air;
4、承办退票业务(根据客户提供的情况,办理退票手续),其调用函数为:
del_cus;
5、删除已有航班信息,其调用函数为:del_airline .
设计这样的一个系统可以很快的查出人们所需要的信息,能省去很多的步骤,而且还非常的准确。

基本算法的实现(正文)
1.采用类c语言定义相关的数据类型
定义航班信息:
typedef struct airline
{
char air_num[8];
char plane_num[8];
char end_place[20];
char time_plane[16];
int total;
int left;
struct airline *next;
}airline;
定义客户信息:
typedef struct customer
{
char name[8];
char air_num[8];
int seat_num;
struct customer *next;
}customer;
2.各模块的伪码算法
1.添加元素:
Status listInsert_L(LinkList&L,int I,ElemTyple)
{ p=L; j=0;
While(p&&j<i-1)
{ p=p->next; j++;}
If(!p11j>i-1)
Return Error;
s=(Linklist)malloc(sizeof(LNode));
s->data=e; s->next=p-next;
return ok;
}
2.删除元素:
Status ListDelete_(LinkList&L,inti,ElemType&e) { p=L; j=0;
While (p->next&&j<i-1)
{ p=p->next; ++j;
}
If(!(p->next)||j>i-1)
Return Error;
q=p->next; p-next=q->next;
e=q->data; free(q);
return ok;
}
3 查找元素:
Status GetElem_L(LilkList L,int i,ElemType&e)
{p=L_>next; j=1;
While(p&&j<i)
{p=p->next; ++j;
}
If(!p||j>i)
Return error;
E=p->data;
Return ok;
}
3.函数的调用关系图
图一函数的调用关系图
4.调试分析
调试中遇到的问题及对问题的解决方法
1、输出的运行界面不整齐,例如“*”在编写程序的时候输入不整齐,运行出
来的界面就不好看。

2、在使用解释符号时应该注意“//”,不适合于TC的环境,要用“/* */”。

3、函数的调用不正确。

解决方法:当在一个函数中要调用另一个函数时,必须在调用函数的函数块中对被调用函数进行类型的声明
5.测试结果
定票:
退票:
查询航线“
添加航线:
删除已有航班信息:
6.源程序(带注释)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef struct airline //飞机编号结构体//
{ char air_num[8];
char plane_num[8];
char end_place[20];
int total;
int left;
struct airline *next;
}airline;
typedef struct customer //乘客编号结构体//
{ char name[8];
char air_num[8];
int seat_num;
struct customer *next;
}customer;
airline *start_air() //1号函数//
{
airline *a;
a=(airline*)malloc(sizeof(airline));
if(a!=NULL)
a->next=NULL;
return a;
}
customer *start_cus()//2号函数//
{
customer *c;
c=(customer*)malloc(sizeof(customer));
if(c!=NULL)
c->next=NULL;
return c;
}
airline *modefy_airline(airline *l,char *air_num) //3号函数// {
airline *p;
p=l->next;
for(;p!=NULL;p=p->next)
{
if(strcmp(air_num,p->air_num)==0)
{
p->left++;
return l;
}
}
printf("没有该航班!");
return 0;
}
int insert_air(airline **p,char *air_num,char *plane_num,char *end_place,int total,int left) //4号函数//
{
airline *q;
q=(airline*)malloc(sizeof(airline));
strcpy(q->air_num,air_num);
strcpy(q->plane_num,plane_num);
strcpy(q->end_place,end_place);
q->total=total;
q->left=left;
q->next=NULL;
(*p)->next=q;
(*p)=(*p)->next;
printf("添加航线成功!");
return OK;
}
airline *add_air(airline *p,char *air_num,char *plane_num,char *end_place,int total,int left) {
airline *q,*pt;
q=(airline*)malloc(sizeof(airline));
strcpy(q->air_num,air_num);
strcpy(q->plane_num,plane_num);
strcpy(q->end_place,end_place);
q->total=total;
q->left=left;
q->next=NULL;
pt=p;
while((p)!=NULL)
{
p=p->next;
}
p->next=q;
//(p)=(p)->next;
printf("添加航线成功!");
return pt;
}
int insert_cus(customer **p,char *name,char *air_num,int seat_num) //5号函数// {
customer *q;
q=(customer*)malloc(sizeof(customer));
strcpy(q->name,name);
strcpy(q->air_num,air_num);
q->seat_num=seat_num;
q->next=NULL;
(*p)->next=q;
(*p)=(*p)->next;
return OK;
printf("添加客户成功!");
}
int book(airline *a,char *air_num,customer *c,char *name) //6号函数//
{ airline *p=a;
customer *q=c->next;
p=a->next;
for(;q->next!=NULL;q=q->next)
{
for(;p->next!=NULL;p=p->next)
{
if(strcmp(air_num,p->air_num)==0)
{
if(p->left>0)
{ printf("你的座位号是:%d",(p->total-p->left+1));
insert_cus(&q,name,air_num,p->total-p->left+1);
p->left--;
return OK;
}
else if(p->left==0)
{
printf("座位已满!");
return 0;
break;
}
}
else
{ printf("没有该航班!");
}
}
}
return 1;
}
int del_cus(customer *c,airline *l,char *name) //7号函数//
{ customer *p,*pr;
char air_num[8];
pr=c;
p=pr->next;
while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
strcpy(air_num,p->air_num);
l=modefy_airline(l,air_num);
pr->next=p->next;
p=pr->next;
printf("完成!");
return OK;
}
pr=pr->next;
p=pr->next;
}
printf("没有该顾客!");
return ERROR;
}
int del_airline(airline *l,customer *m,char *air_n) //8号函数//
{ airline *pt,*ptr;
customer *p,*pr;
ptr=l;
pr=m;
p=pr->next;
pt=ptr->next;
while(pt!=NULL)
{
if(strcmp(pt->air_num,air_n)==0)
{
ptr->next=pt->next;
while(p!=NULL)
{
if(strcmp(p->air_num,pt->air_num)==0)
{ pr->next=p->next;
printf("乘坐该航班的顾客%s已删除!",p->name);
p=pr->next;
}
pr=pr->next;
p=pr->next;
}
free(pt);
pt=ptr->next;
printf("删除该航班成功!");
return OK;
}
ptr=ptr->next;
pt=ptr->next;
}
printf("没有该航班!");
return ERROR;
}
int search_air(airline *head) //9号函数//
{ airline *p=head->next;
printf("air_num plane_num end_place total left\n");
for(;p!=NULL;p=p->next)
{ printf("%s %-10s %-8s% -8d% -8d\n",p->air_num,p->plane_num,p->end_place,p->total,p->left);
}
return OK;
}
int search_cus(customer *head)
{ struct customer *q=head->next;
printf("name air_num seat_num\n");
for(;q!=NULL;q=q->next)
{ printf("%-8s%-12s%-d\n",q->name,q->air_num,q->seat_num);
}
return OK;
}
int creat_air(airline **l)
{ airline *p=*l;
int i=0;
char *air_num[3]={"007af","008af","009af"};
char *plane_num[3]={"plane1","plane2","plane3"};
char *end_place[3]={"Beijing","Shanghai","Tianjin"};
int total[3]={100,100,100};
int left[3]={52,54,0};
for(i=0;i<3;i++)
insert_air(&p,air_num[i],plane_num[i],end_place[i],total[i],left[i]);
}
int creat_cus(customer **l)
{ customer *p=*l;
int i=0;
char *name[3]={"zhsan","lisi","wangwu"};
char *air_num[3]={"007af","008af","010ll"};
int seat_num[3]={2,5,7};
for(i=0;i<3;i++)
insert_cus(&p,name[i],air_num[i],seat_num[i]);
return OK;
}
void main()
{
int t=1;
customer *cus=start_cus();
airline *air=start_air();
char name[8],air_num[8],plane_num[8],end_place[20],ch;
int left1,total1;
creat_air(&air);
creat_cus(&cus);
printf("\n");
//clrscr();
printf("******************************************************\n");
printf("* W elcome to air firm! *\n");
printf("* 定票-----------------1 *\n");
printf("* 退定-----------------2 *\n");
printf("* 查询-----------------3 *\n");
printf("* 新建航班 ------------4 *\n");
printf("* 删除已有航班---------5 *\n");
printf("* 退出-----------------6 *\n");
printf("******************************************************\n");
printf("\n请选择1-6:");
do
{ ch=getchar();
switch (ch)
{ case '1':
printf("Please input a airline number:");
scanf("%s",&air_num);
printf("Please input a name:");
scanf("%s",&name);
book(air,air_num,cus,name);break;
case'2':
printf("Please input the cancel name:");
scanf("%s",&name);
del_cus(cus,air,name);break;
case'3':
search_air(air);
printf("\n");
search_cus(cus);break;
case'4':
printf("请输入想插入的航班号的air_num:");
scanf("%s",&air_num);
printf("请输入飞机编号的plane_num:");
scanf("%s",&plane_num);
printf("请输入飞机目的地end_place:");
scanf("%s",&end_place);
printf("请输入飞机总座位数的total:");
scanf("%d",&total1);
printf("请输入飞机剩余座位数的left:");
scanf("%d",&left1);
add_air(air,air_num,plane_num,end_place,total1,left1);
break;
case'5':
printf("请输入想的删除航班号的air_num:");
scanf("%s",&air_num);
del_airline(air,cus,air_num);break;
default:
exit(0);
}
if(ch=='6')
{ break;
}
}while(t=1);
}
总结
在这三周的面向对象技术课程设计学习中,我通过我的课题:机票预定系统,加深了我对面向对象技术的认识,对课本中所学的各种数据结构进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。

我在程序运行中发现了很多的错误,这说明我在C++课程的学习中还存在很多的问题,这些问题我以前从未发现过,这次的课程设计不仅解决了这些问题,而且让我认识到了动手能力的重要性。

如果不是自己做了这次设计,我也不可能发现这么多问题,我在老师和同学的帮助下顺利的完成了课设,我真是很高兴,在感谢老师和同学的同时,我也对自己有了很大的信心。

三周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各课知识融会,组织,来配合学习,三周中我收益很大,学到很多。

参考文献
[1]初小璐.完全掌握SQL Server 2000 [M] 机械工业出版社,2004
[2]Jeraod V.Post.数据库管理系统(英文版.第三版)[美]清华大学出版社,2006.1
[3]张海藩.软件工程导论[M].北京:清华大学出版社,1998.1
[4]谢希仁.计算机网络(第二版)[M].北京:电子工业出版社,2003.6
[5]戴志诚,赵国峰.JSP信息化系统建设案例[M].北京:人民邮电出版社,2006.12
[6]成晓静,毕靖.网页设计三剑客完全学习手册[M].北京:中国电力出版社,2004.11
[7]赵强.精通JSP编程[M].北京:电子工业出版社,2006.3
[8]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2002.2
[9]张海藩,李劲,谢兆阳.SQL Server2000数据库设计与系统管理[M].北京:清华大学出版社,2000.9
[10]刘禾,蔡锋.Web数据库假设技巧[M].北京:科技技术出版社,1999.4
[11]徐建波. Internet与Web设计教程[M].北京:中国矿业大学出版社,2000.12
[12]于书举,许向众.数据库设计与开发教程[M].北京:电子工业出版社,2003.11
[13]安海忠,李文斌,林旭新.商业网站建设与管理[M].北京:人民交通出版社,2006.8
[14]T.Umeda and S.Hagiwara.web-based database for EPR centers in semiconductors[J].BPhysica B:Condensed Matter,3(7),249-252,2006.3
[15]Yih-Ling Hedley,Muhammad Younas.Sampling,information extraction and summarisation of Hidden Web databases[J].Data & Knowledge Engineering,In Press,Uncorrected Proof,Available online 10 March 2006.2
致谢
首先感谢我的指导老师李明老师,他在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。

感谢我的C++面向对象技术老师年福忠老师在以往的基础课学习中为我打下良好的基础,这是我这次课程设计能够顺利完成的前提。

我的同学在设计完成后对程序的测试,没有他们,也许就难以发现一些潜在的错误,在此一并表示感谢。

附件Ⅰ部分源程序代码
#include<stdio.h>
typedef int KeyType;
typedef struct
{
KeyType key;
}ElemType;
int SeqSearch(ElemType s[],KeyType key,int n);
main()
{
int key;
KeyType Key;
ElemType s[6]={15,25,89,40,55,10};
int n=6,i;
printf("请输入要查找的关键字:");
scanf("%d",&key);
i=SeqSearch(s,key,n);
if(i!=-1)
printf("\n查找成功!%d是第%d个元素",key,i); else
printf("\n查找失败!%d不在集合中",key);
}
int SeqSearch(ElemType s[],KeyType key,int n)
{/*在s[1]~s[n]中顺序查找关键字为key的元素*/
/*查找成功时返回元素下标序号;失败时返回0*/ int i=0;
while(i<n-1&&s[i].key!=key) i++;
if(s[i].key==key)
return(i+1); else
return(-1); }
运行结果:。

相关文档
最新文档