基于java的航空查询系统设计(含源文件)
- 格式:doc
- 大小:1.44 MB
- 文档页数:27
一、设计题目设计一个航班信息查询与检索系统。
二、基本要求1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。
2、要有输入模块3、对航班信息进行排序与查找。
三、运行环境CPU:奔腾3;操作系统:Windows 98;编程工具:TC2.0。
四、算法设计思想1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。
程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。
在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。
2、流程图3、各函数说明(1)、一趟数字字符分配函数void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)(2)、一趟数字字符收集函数void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)(3)、一趟字母字符分配函数void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e)(4)、一趟字母字符收集函数void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)(5)、链式基数排序函数void radixsort(sllist &l)(6)、按指针链重新整理静态链表void arrange(sllist &l)//重新整理(7)、二分查找函数int binsearch(sllist l,keytype key[]) (8)、顺序查找函数void seqsearch(sllist l,keytype key[],int i) (9)、查询检索菜单控制程序void searchcon(sllist l)(10)、录入航班数据函数void inputdata(sllist &l)(11)、主函数void main()五、源代码#include "stdafx.h"#include <stdio.h>#include <string.h>#define maxspace 100#define keylen 7#define radix_n 10#define radix_c 26typedef char keytype;typedef struct{char start[6];char end[6];char sche[10];char time1[5];char time2[5];char model[4];int price;}infotype;typedef struct{keytype keys[keylen];infotype others;int next;}slnode;typedef struct{slnode sl[maxspace];int keynum;int length;}sllist;typedef int arrtype_n[radix_n];typedef int arrtype_c[radix_c];void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) {int j,p;for(j=0;j<radix_n;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%48;if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;}}void collect(slnode *sl,int i,arrtype_n f,arrtype_n e) {int j,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(j<radix_n-1){for(j=j+1;j<radix_n-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {int j,p;for(j=0;j<radix_c;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%65;if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;}}void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {int j,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(j<radix_c-1){for(j=j+1;j<radix_c-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}void radixsort(sllist &l)//链式{int i;arrtype_n fn,en;arrtype_c fc,ec;for(i=0;i<l.length;i++)l.sl[i].next=i+1;l.sl[l.length].next=0;for(i=l.keynum-1;i>=2;i--){distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);}for(i=1;i>=0;i--){distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);}}void arrange(sllist &l) //重新整理{int p,q,i;slnode temp;p=l.sl[0].next;for(i=1;i<l.length;i++){while(p<i)p=l.sl[p].next;q=l.sl[p].next;if(p!=i){temp=l.sl[p];l.sl[p]=l.sl[i];l.sl[i]=temp;l.sl[i].next=p;}p=q;}}int binsearch(sllist l,keytype key[]){int low,high,mid;low=1;high=l.length;while(low<=high){mid=(low+high)/2;if(strcmp(key,l.sl[mid].keys)==0)return mid;else if(strcmp(key,l.sl[mid].keys)<0)high=mid-1;elselow=mid+1;}return 0;}void seqsearch(sllist l,keytype key[],int i){int j,k,m=0;printf("*************************************************************\n"); printf("* 航班号起点站终点站航班期起飞时间到达时间机型票价*\n"); for(j=1;j<=l.length;j++){switch(i){case 2:k=strcmp(key,l.sl[j].others.start);break;case 3:k=strcmp(key,l.sl[j].others.end);break;case 4:k=strcmp(key,l.sl[j].others.time1);break;case 5:k=strcmp(key,l.sl[j].others.time2);break;}if(k==0){m=1;printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[j].keys,l.sl[j].others.start,l.sl [j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl[j].others.model,l.sl[j].others.price);}}if(m==0)printf("* 无此航班信息,可能是输入错误!*\n");printf("*************************************************************\n"); }void searchcon(sllist l){keytype key[keylen];int i=1,k;while(i>=1&&i<=5){printf("\********************\n");printf(" * 航班信息查询系统*\n");printf(" ********************\n");printf(" * 1.航班号*\n");printf(" * 2.起点站*\n");printf(" * 3.终点站*\n");printf(" * 4.起飞时间*\n");printf(" * 5.到达时间*\n");printf(" * 0.退出系统*\n");printf(" ********************\n");printf(" 请选择(0-5):");scanf("%d",&i);printf("\n");switch(i){case 1:printf("输入要查询的航班号(字母要大写):");scanf("%s",key);k=binsearch(l,key);printf("*************************************************************\n"); if(k==0)printf("* 无此航班信息,可能是输入错误!*\n");else{printf("* 航班号起点站终点站航班期起飞时间到达时间机型票价*\n"); printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl[k].others.model,l.sl[k].others.price);}printf("*************************************************************\n"); break;case 2:printf("输入要查询的航班起点站名:");scanf("%s",key);seqsearch(l,key,i);break;case 3:printf("输入要查询的航班终点站名:");scanf("%s",key);seqsearch(l,key,i);break;case 4:printf("输入要查询的航班起飞时间:");scanf("%s",key);seqsearch(l,key,i);break;case 5:printf("输入要查询的航班到达时间:");scanf("%s",key);seqsearch(l,key,i);break;case 0:printf("\n\n\n 再见\n\n\n");}}}void inputdata(sllist &l){int i=++l.length;char yn='y';while(yn=='y'||yn=='Y'){printf("航班号起点站终点站航班期起飞时间到达时间机型票价\n"); scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i].others.price);++i; getchar();radixsort(l);arrange(l);printf("继续输入吗?y/n:");scanf("%c",&yn);}l.length=i-1;}void main(){sllist l;l.keynum=6;l.length=0;inputdata(l);searchcon(l);}六、运行结果1、录入航班信息编译后运行,显示:航班号起点站终点站航班期起飞时间到达时间机型票价录入:MU4594昆明西安 1.3.5.6 10151140 3281160↙显示:继续输入吗?y/n:录入:y↙显示:航班号起点站终点站航班期起飞时间到达时间机型票价录入:SC7425青岛海口 1.3.6 19202120 DH41630↙显示:继续输入吗?y/n:录入:n↙2、航班信息查询录入航班信息后,屏幕显示:********************* 航班信息查询系统********************** 1.航班号** 2.起点站** 3.终点站** 4.起飞时间** 5.到达时间** 0.退出系统*********************请选择(0-5):录入:1↙显示:输入要查询的航班号(字母要大写):录入:MU4594↙显示:航班号起点站终点站航班期起飞时间到达时间机型票价MU4594-昆明-西安-1.3.5.6 -1015 -1140 -328 -1160 录入:2↙显示:输入要查询的航班起点站名:录入:青岛↙显示:航班号起点站终点站航班期起飞时间到达时间机型票价SC7425-青岛-海口-1.3.6 -1920-2120 -DH4-1630↙录入:2↙显示:输入要查询的航班起点站名:录入:广州↙显示:* 无此航班信息,可能是输入错误!*七、收获与体会本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,用到了二分查找和顺序查找等知识,还有建立静态链表等。
存档编号基于JAVAEE的航空订票系统的设计与实现教案学院数学与计算机科学学院届别 2013届专业学号姓名指导教师完成日期 2013年5月6日目录内容摘要 (4)关键字 (4)Abstract (4)Keywords (5)1前言 (6)1.1背景 (6)1.2航空订票系统的特点 (7)2系统分析 (8)2.1可行性分析 (8)2.2需求分析 (9)2.3软件需求 (9)3概要分析 (11)3.1总体功能分析 (11)3.2系统功能结构图 (12)3.3数据库设计 (15)4详细设计 (17)4.1前台设计 (17)4.2会员模块 (19)4.3管理员模块 (32)5系统测试 (39)6总结 (42)参考文献 (43)内容摘要:随着经济的快速发展,基于互联网上的交易需求量越来越多,网民不仅可以在网上浏览网页,而且可以在网上买东西, 交易,开网店,订票等等。
航空订票系统是航空部门机票管理系统的一部分,其作用是对所有待售机票和已售机票进行有效的管理。
该系统解决了网民买票的不便,帮网民省下好多宝贵的时间,实现网上订票的简单方便。
本系统使用JSP进行网页界面的设计,使用JSP+Servlet设计模式,具有快速、设计灵活、生成的软件界面友好美观等特点。
数据库使用MYSQL,具有较高的完整性,一致性和安全性。
关键字:航空订票 JSP+Servlet Java EEAbstract: With the rapid development of economy, more and more Internet transactions demand based on the Internet, not only can browse webpage on the Internet, but also can buy things, in online transactions, online booking, etc..Air booking system is a part of the ticket management system for the aviation sector, its role isto carry on the effective management of sale of all tickets sold tickets and. The system solves the inconvenience of Internet users buy, help users save alot of valuable time, the realization is simple and convenient online booking.The design of this system use JSP webpage interface, using the JSP+Servlet design pattern, with a friendly software interface appearance characteristics such as fast, flexible design, production. The use of MYSQL database, have high integrity, consistency and safety.Keywords: Air Booking JSP+Servlet Java EE1前言1.1背景21世纪是一个以信息化、数字化和网络化为特征的新时代。
基于Java和数据库系统设计的航空售票系统
航空售票系统是一个基于Java和数据库系统设计的系统,旨在为机票购买和管理提供便捷的服务。
本文将介绍系统的设计目标、功能模块和技术实现。
设计目标:
1. 提供用户注册和登录功能,方便用户查询和购买机票;
2. 提供航班查询功能,用户可以通过输入起始地、目的地和日期来查询符合条件的航班;
3. 提供机票购买功能,用户可以选择符合条件的航班,并进行机票购买;
4. 提供订单管理功能,用户可以查看自己的订单、取消订单或申请退款;
5. 提供系统管理功能,管理员可以管理航班、用户和订单等信息。
技术实现:
1. 前端界面使用Java Swing或JavaFX实现,包括用户登录、航班查询、机票购买和订单管理等页面;
2. 后端使用Java编写,通过与前端交互处理用户请求,包括用户注册、登录验证、航班查询和订单管理等功能;
3. 数据库采用关系型数据库(如MySQL)存储用户信息、航班信息和订单信息等数据;
4. 使用JDBC或ORM框架(如Hibernate)进行数据库访问,实现对数据库的增删改查操作;
5. 使用Java的网络编程实现与支付接口的交互,包括提交订单、支付和退款等操作;
6. 使用加密算法保证用户密码和敏感数据的安全性;
7. 使用版本控制工具(如Git)管理代码的开发和迭代。
基于Java和数据库系统设计的航空售票系统可以方便用户查询和购买机票,并提供订单管理和系统管理功能,实现了用户和管理员的交互操作,并通过技术手段保证数据的安全性。
算法与数据结构实验报告航班查询与检索题目:航班查询与检索指导老师:组长:成员:一:航班信息的查询与检索按时间查询:二分法查询:二:算法分析:程序主要采用结构体链表顺序表队列主要算法:/*航班信息的查询与检索*/三:/*航班信息的查询与检索*/#include<iostream.h>#include<string.h>#include<stdio.h>#define N 6 //航班数//航班信息typedef struct flight{char flight_number[10]; //航班号char start_address[10]; //起飞站char arrived_address[10]; //终点站char work_date[10]; //班期char start_time[6]; //起飞时间char arrived_time[6]; //到达时间char FlightType[4]; //机型int fare; //票价}DataType;struct flight Flight[N];//-----------按航班号进行基数排序-----------typedef char KeyType;#define D 7 // D为排序码的最大位数#define R 'a' // R为基数,这里为小于字母'a'代表的整型值struct Node; //单链表结点类型typedef struct Node RadixNode;struct Node{KeyType key[D]; //关键字DataType info; //数据信息RadixNode *next;};typedef RadixNode * RadixList;typedef struct QueueNode{RadixNode *f; //对列的头指针RadixNode *e; //对列的尾指针}Queue;Queue queue[R];//用队列表示桶void radixSort(RadixList * plist, int d, int r){int i,j,k;RadixNode *p, *head;head=(*plist)->next;for(j=d-1; j>=0; j--) //进行d次分配和收集{p=head;for(i=0; i<r; i++){queue[i].f=NULL; queue[i].e=NULL; //清队列}while(p!=NULL){k=p->key[j]; //按排序码的第j个分量进行分配if(queue[k].f==NULL) queue[k].f=p; // 若第k个堆为空,则当前记录为队头else (queue[k].e)->next=p; // 否则当前记录链接到第k队的队尾queue[k].e=p;p=p->next;}i=0;while(queue[i].f==NULL) i++; // 从r个队列中找出第一个非空的队列p=queue[i].e; head=queue[i].f; //head为收集链表的头指针for(i++; i<r; i++)if(queue[i].f!=NULL){ p->next=queue[i].f; p=queue[i].e; } // 收集非空队列p->next=NULL;}(*plist)->next=head;}//初始化航班信息struct Node element[N+1]={" "," "," "," "," "," "," "," ",0,NULL,//表头"CA1544","CA1544","合肥","北京","1245 ","10:55","12:40","733",960,NULL,"MU5341","MU5341","上海","广州","每日","14:20","16:15","M90",1280,NULL, "CZ3869","CZ3869","重庆","深圳","246 ","08:55","10:35","733",1010,NULL, "MU3682","MU3682","桂林","南京","23467","20:50","22:15","M90",1380,NULL,"HU1836","HU1836","上海","北京","每日","09:40","11:20","738",1250,NULL,"CZ3528","CZ3528","成都","厦门","13457","15:10","16:50","CRJ",1060,NULL,};//------------信息显示------------//按表的格式输出某个航班信息//显示头部信息void Cout_info1(){cout<<" ****************************************\n"<<endl;cout<<" * 欢迎您使用*\n"<<endl;cout<<" * 航班信息表*\n"<<endl;cout<<" ****************************************\n"<<endl;cout<<" 航班号起飞时间到达时间起飞站终点站班期机型票价\n"<<endl;}//显示主体信息void Cout_info2_1(Node p[])//方式一{cout<<" "<<p->info.flight_number;cout<<" "<<p->info.start_time;cout<<" "<<p->info.arrived_time;cout<<" "<<p->info.start_address;cout<<" "<<p->info.arrived_address;cout<<" "<<p->info.work_date;cout<<" "<<p->info.FlightType;cout<<" "<<p->info.fare<<"元"<<endl;}void Cout_info2_2(flight F[],int i)//方式二{cout<<" "<<F[i].flight_number;cout<<" "<<F[i].start_time;cout<<" "<<F[i].arrived_time;cout<<" "<<F[i].start_address;cout<<" "<<F[i].arrived_address;cout<<" "<<F[i].work_date;cout<<" "<<F[i].FlightType;cout<<" "<<F[i].fare<<"元"<<endl;}//显示所有航班信息void output_ALL_info1(Node element[]) //方式一{RadixList p=element;Cout_info1();p=p->next;while(p!=NULL){Cout_info2_1(p);p=p->next;}cout<<endl;}void output_ALL_info2(flight F[]) //方式二{Cout_info1();for(int i=0;i<N;i++){Cout_info2_2(F,i);}cout<<endl;}//--------------信息复制----------------//将排好的序列(链表)转化成顺序表存储形式void copy(flight F[],Node element[]){RadixList p=element;p=p->next;int i;for(i=0;i<N && p!=NULL;i++){strcpy(F[i].flight_number,p->info.flight_number);strcpy(F[i].start_time,p->info.start_time);strcpy(F[i].arrived_time,p->info.arrived_time);strcpy(F[i].start_address,p->info.start_address);strcpy(F[i].arrived_address,p->info.arrived_address);strcpy(F[i].work_date,p->info.work_date);strcpy(F[i].FlightType,p->info.FlightType);F[i].fare=p->info.fare;p=p->next;}}//---------------服务菜单--------------void F_By_Time(flight F[],int);void F_By_Address(flight F[],int);void F_By_fare(flight F[]);void F_By_FN(flight F[]);//主菜单void mainmenu(){char ch;int y;cout<<" 主菜单\n"<<endl;cout<<"===========================================================\n"<<endl;cout<<" Please choose: (input the number)(输入查询/排序命令)\n"<<endl; cout<<" 0. show the mainmenu (显示主菜单)\n"<<endl;cout<<" 1. Find by flight number(按航班号查询)\n"<<endl;cout<<" 2. Find by start time(按起飞时间查询)\n"<<endl;cout<<" 3. Find by arrived time(按到达时间查询)\n"<<endl;cout<<" 4. Find by start address(按起飞地点查询)\n"<<endl;cout<<" 5. Find by arrived address(按目的地点查询)\n"<<endl;cout<<" 6. Find by the fare(按票价范围查询)\n"<<endl;cout<<" ----其他键退出"<<endl;cout<<"===========================================================\n"<<endl;while(1){cout<<"请输入服务命令:";cin>>y;switch(y){case 0: mainmenu();break;case 1:F_By_FN(Flight);break;case 2:F_By_Time(Flight,1);break;case 3:F_By_Time(Flight,2);break;case 4:F_By_Address(Flight,1);break;case 5:F_By_Address(Flight,2);break;case 6:F_By_fare(Flight);break;default :cout<<" 谢谢惠顾!"<<endl;break;}cout<<"是否退出?(Y/N):";cin>>ch;if(ch=='Y'||ch=='y') break;}}//--------------查询系统--------------//通过航班号实现二分查找法查找void F_By_FN(flight F[]){int low=0,high=N,mid;char Num[10];cout<<"请输入您要查询的航班号:";cin>>Num;Cout_info1();//显示头部信息while(low<=high){mid=(low+high)/2;if(strcmp(Num,F[mid].flight_number)==0) {Cout_info2_2(F,mid);break;}else if(strcmp(Num,F[mid].flight_number)<0) high=mid-1;else low=mid+1;}cout<<" *************对不起,没有您要查找的航班号********** "<<endl; }//通过起飞/到达时间查询void F_By_Time(flight F[],int Time){int i;char T[6];cout<<"请输入您要查询的航班的起飞/抵达时间:";cin>>T;Cout_info1();//显示头部信息for(i=0;i<N;i++){if(Time==1) //按起飞时间查询{if(strcmp(T,F[i].start_time)==0) Cout_info2_2(F,i);}if(Time==2) //按抵达时间查询{if(strcmp(T,F[i].arrived_time)==0) Cout_info2_2(F,i);}}cout<<" *******对不起,该时间没有航班******* "<<endl;}//通过站点查询void F_By_Address(flight F[],int AD){char str[10];cout<<"请输入您要查询的航班的起飞/抵达地址:";cin>>str;Cout_info1();for(int i=0;i<N;i++){if(AD==1) //按起点站查询{if(strcmp(str,F[i].start_address)==0) Cout_info2_2(F,i);}if(AD==2) //按目的站查询{if(strcmp(str,F[i].arrived_address)==0) Cout_info2_2(F,i);}}cout<<" ********对不起,该站点不存在******** "<<endl; }//通过票价范围查询void F_By_fare(flight F[]){int T1,T2,i;cout<<"请输入您要查询的航班的最低票价(单位:元):";cin>>T1;cout<<"请输入您要查询的航班的最高票价(单位:元):";cin>>T2;Cout_info1();for(i=0;i<N;i++){if(T1<=F[i].fare && T2>=F[i].fare) Cout_info2_2(F,i);}cout<<" *******对不起,没有适合您的航班,请修改您的票价范围********" <<endl; }//--------------主函数----------------int main(){RadixList p=element;for(int i=0;i<N;i++)element[i].next=&element[i+1];element[10].next=NULL;radixSort(&p, D, R); //基数排序output_ALL_info1(element); //输出排序后的有序序列(航班信息)copy(Flight,element); //另存储排序后的航班信息mainmenu(); //给出主菜单return 0;}测试数据及测试结果:、边界值处理:四:遇到的问题及解决策略:首先是要实现所要的功能需用什么数据结构的问题,比如排序问题究竟用那一种,在组员的商量下和上网搜寻资料,采用对排序最符合,其次是在时间的查询过程中,比如输入时间16:40开始只能实现输入1640,最后通过改时间的数据类型实现了时间的输入,最后是在各个模块的组合过程中由于各个成员编程所起的名字或者其他原因,程序无法运行,最后在大家的努力下一起修改错误使得程序可以正常运行。
题目:手机号码所属区域查询一.语言和环境1. 实现语言Java2. 环境要求JDK1.6、MyEclipse5.5、Tomcat5.5、SQL Server 2005二.数据库设计数据库名称:flight三.要求航班查询系统提供根据航班号查询航班信息的功能。
现要求使用JavaScript+JSP+JDBC 技术实现该功能,数据库使用SQL Server 2005 。
要求如下:1. 初始页面为查询页面,用户在该页面的文本输入框输入要查询的航班号,如图1所示:2. 用户输入航班号后,点击“搜索航班”按钮后,系统将校验用户输入内容,当用户没有输入航班号直接点击“搜索航班”按钮时,将给出提示信息,如图2:3. 用户输入了航班号并点击“搜索航班”按钮后,系统提交该查询请求,并在查询结果页面上显示满足条件的航班信息,如图3所示:当系统没有找到航班的信息时,在查询结果页面上显示提示信息,如图4所示:在查询结果页面上,用户点击“返回”按钮时,页面回到查询页面。
四.推荐实现步骤1. 创建数据库、数据库表,并录入测试记录,见下表:2. 创建Web工程flight,导入数据库驱动包,在源文件夹中创建dao包用于存放数据访问类3. 创建DAO基类:BaseDao.javaA. 包含基本数据库资源的获取、释放操作;4. 创建DAO类:FlightDao.javaA. 编写方法search(String flightid),查询满足条件的航班,将航班信息封装到对象并返回该对象5. 创建JSP五.注意事项1. 请注意在程序中进行异常处理;2. 请注意代码的书写、命名符合规范3. 注意中文的处理。
.引言1.1 项目的名称飞机航班信息管理系统1.2 项目背景和目标飞机航班信息管理系统主要能够查询飞机的航班情况,飞行线路,票价,折扣等等情况,并能够在数据库中更新维护飞机航班的信息,对飞机航班数据库进行管理,如航班的增加,删除和修改等。
我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设计。
1.3 项目的可行性研究设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。
根据目前所开设的课程,学生已经具备这样的知识,有能力综合java 编程知识和数据库应用知识做出一个这样的飞机航班信息管理系统。
需求分析2. 1系统概述此系统提供给系统管理员和用户。
系统管理员登陆后可以对飞机航班信息进行管理,如:添加飞机航班信息,删除飞机航班信息,修改飞机航班属性。
用户登陆后能进行飞机航班信息查询,订票以及退订。
2. 2系统运行环境Java运行在eclipse软件上,数据库用mysql数据库2. 3功能需求描述用户选择相关的服务项目可以查看相关航班基本信息,并且可以根据自己需求选择相应服务,系统的信息更新时,相关的信息经过相应处理后,会存入到飞机航班数据库中的航班信息记录表中;系统管理员根据航空公司实际情况可以更新航班信息,并通过修改信息处理后被保存到飞机航班表中。
三、系统设计3.1开发与设计的总体思想飞机航班信息管理系统主要分为用户和系统管理员2类,因此也将该系统分为2个相应的大的功能模块。
用户可以通过服务项目选择查询相关航班情况,进行订票,退订等服务项目。
系统会将数据库中相应信息反馈给顾客。
系统管理员负责管系统信息的及时更新,可以根据航空公司航班的具体的情况更新数据库3.2系统模块结构图3. 3数据库结构设计为了支持此飞机航班信息管理系统,创建数据库airpla ne man age,在这个数据库里包含三个表:flight information 表,passenger 表,managerlogin 表,禾口passengerlogin 表,它们的截图如下:▼ airplane manage►flight information1 亠■■■■.»■■■■•>■■■ IBUJ ■■■■.UIBIIUHI►j^mdnogeilogirii►pn 洱unq&ikpiri►informat»on_schemak mys 甲►怡琳在flight in formation (飞机航班信息)表中,有8个属性列,分别为id (序列),stime (飞机起飞时间),etime (飞机到达时间),sadd (飞机起始点),eadd (飞机终点),znum (总票数),snum (剩余票数)。
数据结构课程设计——《订票系统》目录一、设计任务与要求 (2)1。
1 总体目标与任务要求 (2)1。
2 题目选择与目的意义 (2)1.3 所选题目的主要工作 (2)二、需求分析 (3)2.1 用户需求分析 (3)2.2 功能需求分析 (3)2。
3 系统需求分析 (3)三、概要设计 (4)3.1 各模块的算法设计说明 (4)3.2 存储结构设计说明 (9)四、详细设计 (11)五、源代码 (12)六、运行结果分析 (23)七、收获与体会 (30)八、主要参考资料 (30)一、设计任务与要求1。
1 总体目标与任务要求制作一个订票系统,通过此系统可以实现如下功能:1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定).2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况。
3)订票:可以订票,如果该航班已经无票,可以提供相关可选择航班(订票情况可以存在一个数据文件中,结构自己设定)。
4)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)修改航班信息:当航班信息改变可以修改航班数据文件。
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
1.2 题目选择与目的意义选择这个题目的原因是,订票系统在现实生活中应用很广泛,通过这个系统可以使订票、退票等变得简便。
与传统的人工用纸、笔来记录办理订票、退票等相比,使用这个系统也会增加工作效率。
这个题目做出来的系统还是比较实用的,所以我选择了订票系统这个题目.完成此系统,需要综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
基于Java和数据库系统设计的航空售票系统随着人们出行频率的增加,航空售票系统的重要性也越来越受到关注。
基于Java和数据库系统设计的航空售票系统可以满足用户乘机预订、机票查询、航班管理等需求,为用户提供更加便捷和高效的服务。
一、系统架构设计基于Java语言,我们可以采用MVC(Model-View-Controller)模式设计系统架构,将系统分为数据业务逻辑层(Model),界面层(View)和控制层(Controller)。
1.数据业务逻辑层(Model)数据业务逻辑层主要负责处理与数据库相关的操作,包括数据存储、更新、查询、删除等,为系统提供了基础数据支持。
在该层中,我们可以定义一些Java类,用于操作数据库。
可以使用JDBC等技术,连接数据库,并通过SQL语句实现数据库操作。
数据业务逻辑层还可以包含一些业务逻辑处理类,用于实现一些复杂的业务逻辑处理。
2.界面层(View)界面层主要负责用户界面的设计和展示。
在该层中,我们可以使用Swing或者javafx 等技术,实现界面设计。
在设计界面时,需要充分考虑用户的使用习惯和行为模式,提供友好的用户界面和良好的用户交互体验。
同时,也需要对用户输入的数据进行验证,确保输入数据的合法性,避免出现错误情况。
3.控制层(Controller)控制层主要负责协调界面层和数据业务逻辑层之间的交互行为,控制用户界面的展示和数据的操作。
该层中包含一些操作类,用于控制用户的行为,处理用户输入的数据,实现不同的业务逻辑。
二、数据模型设计在设计航空售票系统的数据模型时,需要考虑数据的实体和关系。
航空售票系统的数据实体包括航班、乘客、机场、座位、订单等。
1.航班航班是系统中最重要的实体之一,包括航班号、出发时间、起飞机场、到达机场、舱位等信息。
在数据库中,我们可以通过航班号来唯一标识一条航班信息。
2.乘客乘客是一种重要的数据实体,包括乘客姓名、证件号码、联系方式等信息。
基于Java和数据库系统设计的航空售票系统航空售票系统是一个复杂的软件系统,涉及到用户预订机票、航班信息管理、座位管理、票务管理、支付系统等多个模块。
本文将着重介绍基于Java和数据库系统设计的航空售票系统的整体架构和关键功能模块。
一、系统架构1.1 系统整体架构航空售票系统的整体架构可以分为三层:表示层、业务逻辑层和数据访问层。
- 表示层:负责与用户交互,包括用户界面展示、用户输入接收和响应等。
通常采用Web或移动应用作为表示层。
- 业务逻辑层:处理用户的请求,进行业务逻辑的处理,包括航班查询、订票、支付等。
- 数据访问层:负责与数据库进行交互,包括数据的读取、更新和删除等操作。
1.2 技术选型基于Java的航空售票系统可以采用Spring框架作为整体框架,通过Spring MVC实现表示层的功能,Spring IOC实现业务逻辑层的功能,MyBatis或Hibernate实现数据访问层的功能。
Java语言本身具有平台无关性和较好的跨平台兼容性,能够满足航空售票系统在不同平台上的部署需求。
二、系统功能模块2.1 用户模块用户模块包括用户注册、登录、个人信息管理等功能。
注册时需要验证用户输入的信息,并将用户信息存储到数据库中;登录时需要验证用户的身份信息,确保用户登录后能够进行相关操作;个人信息管理包括用户的个人资料和订单信息的展示和管理等。
2.2 航班查询模块航班查询模块允许用户根据出发地、目的地、日期等条件查询符合条件的航班信息。
系统需要从数据库中读取航班信息,并将符合条件的航班信息展示给用户。
2.3 订票模块订票模块允许用户选择符合条件的航班进行订票操作。
用户需要输入乘客信息、选择座位以及支付方式等。
系统需要对用户输入的信息进行验证,确保订单的合法性;在用户订票成功后,需要更新数据库中的座位信息和订单信息。
2.4 支付模块支付模块是航空售票系统中非常重要的一个模块。
用户在订票成功后需要进行支付操作,系统需要与第三方支付平台进行交互,完成支付流程。
飞机航班管理系统一.引言1.1项目背景和目标飞机航班信息管理系统主要是对已登记乘客的个人信息以及航班信息进行管理,对已登记乘客提供查询航班号、时间、目的地功能;对管理员用户提供查询已登记用户的个人信息简介、查询航班信息、添加乘客个人信息、删除乘客个人信息、添加航班信息、删除航班信息等功能。
我们的目标就是为该系统提供后台连接MYSQL 数据库程序设计以及前台用户界面设计。
1.2项目的可行性研究设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。
根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的信息管理系统二.需求分析2.1系统概述此系统提供给乘客用户和管理者,乘客登陆后可以对能自己航班基本信息进行查看,管理员登陆后能对航班的基本信息和将要进行登记的乘客信息进行增删改操作。
2.2系统运行环境Java程序运行在Myeclipse软件上编译并且运行,数据库用MYSQL数据库三.系统设计3.1开发与设计的总体思想乘客方面:已登记的乘客通过自己的用户名和密码登录后,进入乘客主界面,在这个主界面里,可以进行查询信息操作。
管理员方面:管理员通过自己的密码登入后可以选择:查询功能、文件功能、修改功能。
在查询功能里面,可以选择是查询乘客简介基本信息,还是航班信息。
在查询航班信息时,可以从依据不同字段,即简介表中的不同属性进行查找。
在查找航班信息时,只能依据姓名进行查找。
在修改功能里面,包括对航班信息表和乘客表进行增加和删除记录3.2系统模块结构图3.3数据库结构设计为了支持此管理系统,创建数据库plane,在这个数据库里包含四个表:flight 表,passenger 表,passengerlogin 表和managerlogin 表,它们的截图如下:在flight 表中,有四个属性列,分别为:Pname(姓名),planenum(航班号),time(时间),place(目的地)。
摘要在现实生活中,人们往往要处理大量繁杂的数据。
在这种情况下,利用日趋成熟的计算机技术和数据库查询技术来进行数据处理非常方便。
各种信息查询软件也就随之出现了。
当今的航空客运服务业发展十分迅速,它是现代生活高节奏的一个有力体现。
在航空服务业中,飞机订票业务是一项重要内容,它大大方便了人们的旅行。
当前中国民航市场扩大迅速,随着生活水平的提高,越来越多的人选择飞机出行,对航空公司的服务要求的越来越高,为了适应快速发展的需求,查询大量数据,有效地稳定的查询航空公司,在此将开发一个航空公司信息查询系统,要求能通过该系统为旅客提供方便的航空路线查询。
【关键词】:航空信息查询;软件工程;Java目录一、系统设计概述 (3)(一)系统的开发的目的与意义 (3)(二)系统的开发背景 (3)二、可行性研究与需求分析 (5)(一)可行性研究 (5)(二)需求分析 (6)三、总体设计 (7)(一)总体设计原理 (7)(二)系统功能分析 (8)(三)系统模块设计 (8)(四)系统结构图 (8)(五)系统的数据库设计 (9)四、详细设计 (11)(一)设计概述 (11)(二)系统登录界面设计 (15)(三)系统首界面设计和查询设计 (15)(四)系统维护设计 (18)五、系统测试、编译与发行 (19)(一)程序功能测试 (19)(二) 测试bug: (20)结束语 (21)参考文献 (22)一、系统设计概述(一)系统的开发的目的与意义随着科学技术的不断的进步和发展,计算机已经应用到各个领域。
在科学研究、军事领域、计算机图形学、以及小到我们的日常生活中计算机无处不在,尤其是目前,计算机软件技术的发展已达到了相当高的水平,它含盖了我们生活的方方面面,例如:大型超市查询系统、公司查询系统、教学查询系统、酒店查询系统等都是现在的热点开发项目。
目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作。
因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统更现紧迫。
机票预定系统应克服存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,这关系到航班和乘客的安全及准确,本系统因面向广大机票预定网点,因此要能在售票网点中普及,则需要开发一个功能全,价格能被顾客所接受的系统。
在系统开发中包括很多环节,例如旅客信息的输入、机票信息的传递及接收、取票通知及帐单的生成和打印、机票销售情况的核算等等。
其中较为重要的一个环节是旅客信息查询系统,同时在此系统中也是一个比较繁杂的环节。
(二)系统的开发背景随着科学技术的发展,新颖的图形用户界面、卓越的多任务操作系统性能、高层次的软件开发平台风靡全球。
人们要求的不断提高,可视化的图形用户界面对比原来的结构化程序设计语言更为简单易用,且编程系统采用面向对象、事件驱动的编程机制,提供了一种所见即所得的可视界面设计方法。
在众多的编程语言中,VB可以快速地创建多媒体、图形界面等应用程序。
VB6.0企业版除了具有专业版的全部功能外,还包括BackOffice。
目前在大多数机票预订系统中,各种操作工作主要还是完全依赖于人工完成,例如:在机票的预订中每天的销售额统计,通过人工进行计算,这需要查询人员的很好的记忆力及计算能力,但工作中的数据量一旦增加,人工计算就会显示工作效率低,计算不准确等因素,还可能受到外在因素的影响。
人工查询还存在许多弊端,由不可避免的人为因素引起,造成数据错误、遗失等。
而计算机查询存储量大,运算速度快等许多诸多优点,给我们提供了处理信息及时、快捷,因此我们可以利用计算机,实现系统的查询。
二、可行性研究与需求分析(一)可行性研究新系统目标应充分为机票预定查询服务,同时,新系统目标应该和现行系统的各项基本功能密切相关,并且可以分期分批实现。
需要指出的是,新系统目标不可能在总体规划阶段就提得非常具体,它还将在开发过程中逐步明确和定量化。
新系统目标的提法不尽相同。
1.技术可行性随着计算机科学技术的不断进步,查询信息系统在各个领域上广泛应用。
我国虽处在发展中,但商品经济的热潮已经不断增长,且人们对于科技的投资正在不断的加大,在现代的网络与信息技术的高速发展人们对生活质量的要求不断的提高,及信息技术的依赖,为了适应当前的发展形势,跟上现代科技的发展所以我们有必要为当前数量较多的酒店、旅行社及机票预售点设计更为方便快捷的系统,从而更有利于经济的发展。
该机票预定系统是以数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加工整序和查询维护。
2.经济可行性该系统的目标是以最低的成本,最低的投入,在较短的时间内参阅大量的资料开发出具有用户登录、存储,查询,核对,打印机票等基本功能,预期系统设计期间所投入的资金较小,从经济角度考虑,此系统开发可行。
3.操作可行性目前,市场经济已经覆盖了全国各个地区,大中小型发达城市,从而满足了人们日益增长的物质需求。
人们物质文化水平的不断提高和科学技术的不断进步以及人们对快速高效的工作效率要求不断的提高,为我们开发使用机票预订系统打下了坚实的基础。
4.社会因素可行性从安全角度考虑,所有技术参考资料都经授权,所有软件都选用正版和免费。
(二)需求分析1.系统功能及用户需求分析该系统主要分为五大功能:系统查询、新增、修改、查询和系统维护。
机票预定系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。
2。
数据描述机票预定系统的数据需求包括如下几点:数据录入和处理的准确性和实时性数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。
数据的输入来源是手工输入。
手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。
在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
三、总体设计(一)总体设计原理典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。
三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。
客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。
表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。
中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。
Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。
Service层(就是业务逻辑层),负责实现业务逻辑。
业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。
DAO层,负责与持久化对象交互。
该层封装了数据的增、删、查、改的操作。
PO,持久化对象。
通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。
Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。
使开发者能更深入的了解其内部实现机制。
在传统的Model 1的程序结构中,只要有一点小的需求发生改变,将意味着放弃整个页面。
或者改写。
虽然前期的开发速度快,除非可以保证以后永远不会改变应用的结构,否则不要采用Model 1的结构。
采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。
DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类。
用Spring容器代替DAO工厂通常情况下,引入接口就不可避免需要引入工厂来负责DAO组件的生成。
Spring实现了两种基本模式:单态模式和工厂模式。
而使用Spring可以完全避免使用工厂模式,因为Spring就是个功能非常强大的工厂。
因此,完全可以让Spring充当DAO工厂由Spring充当DAO工厂时,无须程序员自己实现工厂模式,只需要将DAO组件配置在Spring容器中,由ApplicationContext 负责查询DAO组件的创建即可。
借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用DAO实例。
(二)系统功能分析该系统从功能实现了对航空信息的查询,修改,删除,添加功能。
在该系统中主要是对航空信息的操作和查询,修改,删除,添加功能都是为查询做基础,在整个系统中作为用户只对查询功能做操作,通过删除,修改,添加功能来及时更新航空信息,以保证用户在查询航空信息的时候能得到更全面更及时的信息。
这样使得该系统的实用性更强。
(三)系统模块设计该系统从模块划分可以分为两大模块:用户查询模块,查询员对航空信息的维护模块。
1.用户查询模块的设计机制就是用户和服务器的交流,通过用户给定的条件提交给服务器,服务器返回给用户需要的信息。
2.查询员维护模块通过查询,修改,删除,添加功能及时的维护服务器的数据和信息,保证航空信息的真实,及时,全面性。
(四)系统结构图从功能和模块结合,系统结构和流程图如下(图3-1):图3-1 系统流程图(五)系统的数据库设计本系统建有两张数据表:用户信息表(tb_user)和航空信息表(tb_ ticket)。
1.用户信息表(tb_user)(表3-1)用于保存用户的信息表3-1 用户信息表2.航空信息表(tb_ ticket)(表3-2)用于保存航空信息。
表3-2 航空信息表四、详细设计(一)设计概述从设计上概述,该系统使用了MVC模式设计,MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。