Java课程设计飞机航班管理系统.docx
《Java课程设计飞机航班管理系统.docx》由会员分享,可在线阅读,更多相关《Java课程设计飞机航班管理系统.docx(46页珍藏版)》请在冰豆网上搜索。
Java课程设计飞机航班管理系统
一.引言
1.1项目的名称
飞机航班信息管理系统
1.2项目背景和目标
飞机航班信息管理系统主要能够查询飞机的航班情况,飞行线路,票价,折扣等等情况,并能够在数据库中更新维护飞机航班的信息,对飞机航班数据库进行管理,如航班的增加,删除和修改等。
我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设计。
1.3项目的可行性研究
设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。
根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的飞机航班信息管理系统。
二、需求分析
2.1系统概述
此系统提供给系统管理员和用户。
系统管理员登陆后可以对飞机航班信息进行管理,如:
添加飞机航班信息,删除飞机航班信息,修改飞机航班属性。
用户登陆后能进行飞机航班信息查询,订票以及退订。
2.2系统运行环境
Java运行在eclipse软件上,数据库用mysql数据库
2.3功能需求描述
用户选择相关的服务项目可以查看相关航班基本信息,并且可以根据自己需求选择相应服务,系统的信息更新时,相关的信息经过相应处理后,会存入到飞机航班数据库中的航班信息记录表中;系统管理员根据航空公司实际情况可以更新航班信息,并通过修改信息处理后被保存到飞机航班表中。
三、系统设计
开发与设计的总体思想
飞机航班信息管理系统主要分为用户和系统管理员2类,因此也将该系统分为2个相应的大的功能模块。
用户可以通过服务项目选择查询相关航班情况,进行订票,退订等服务项目。
系统会将数据库中相应信息反馈给顾客。
系统管理员负责管系统信息的及时更新,可以根据航空公司航班的具体的情况更新数据库。
系统模块结构图
3.3数据库结构设计
为了支持此飞机航班信息管理系统,创建数据库airplanemanage,在这个数据库里包含三个表:
flightinformation表,passenger表,managerlogin表,和passengerlogin表,它们的截图如下:
在flightinformation(飞机航班信息)表中,有8个属性列,分别为id(序列),stime(飞机起飞时间),etime(飞机到达时间),sadd(飞机起始点),eadd(飞机终点),znum(总票数),snum(剩余票数)。
其基本数据类型分别为:
int,char,char,char,char,char。
当查询飞机航班基本信息时,从此表中获取数据。
截图如下:
在passenger表中,有两个属性列,分别为:
Pname(姓名),Psex(性别),Page(年龄),Pplace(籍贯),number(电话号码)其基本数据类型分别为:
char,char,int,char,int。
当管理员登录系统时从此表获取数据,其截图如下:
在managerlogin表中,有两个属性列,分别为:
Mname(管理员姓名),Mpassword(密码)其基本数据类型分别为:
char,char。
当管理员登录系统时从此表获取数据,其截图如下:
在passengerlogin表中,有两个属性列,分别为:
Pname(用户姓名),Ppassword(密码)其基本数据类型分别为:
char,char。
当教职工登录系统时从此表获取数据,其截图如下:
3.4模块设计
在整个系统主界面,可以选择登录方式,是用户登录还是系统管理员登录。
如果选择用户,则进入用户登录界面,在这个界面上要求输入用户姓名和密码。
输入后单击“确认登录”按钮,若密码正确,则转换到飞机航班信息查询页面,若密码不正确,这提示密码错误。
如果选择是系统管理员登录,则进入管理员登陆界面,在这个界面上输入管理员姓名和密码,输入后单击“飞机航班信息管理”按钮,则进入管理员主界面。
在管理员主界面可以选择添加操作,删除操作还是修改操作。
若要查询用户的简介信息,点击查询菜单项则进入用户简介信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“pname”字段时,要输入某个用户的姓名。
输入后,单击“检索”按钮,则开始对数据库中数据进行查询。
如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息,则页面列表中显示为空。
若要查询飞机航班信息,点击查询菜单项则进入飞机航班信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“飞机对应航班序号的相关信息”字段时,要键入某个飞机航班序号。
输入后,单击“检索”按钮,则开始对数据库中数据进行查询。
如果数据库检索到所需信息,则生成列表显示检索结构,如果没有所需信息,则页面列表中显示为空。
如果管理员要对数据库中进行修改操作,则在管理员主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有三项修改操作:
添加飞机航班信息,删除飞机航班信息,修改飞机航班信息。
在添加信息操作中,按照标签提示一次输入要添加的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。
在删除信息操作中,输入要删除的信息,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。
在修改信息操作中,输入要修改的信息,单击“修改”按钮,若修改成功,则提示成功,若修改失败则提示失败。
以上就是该飞机航班管理系统涉及的操作步骤。
3.5系统流程描述
NONO
YESYES
NO
NONO
NONOYES
YESYESYES
YES
四、系统实现
包中的类:
(1)DBconnection类:
此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。
若连接成功,提示:
connectionsuccess,若连接失败,提示:
connectionfailure
DBconnection类源代码
packageconnection;
importclassDBconnection{
publicstaticConnectioncon=null;
publicstaticConnectiongetConnection()
{
try{
StringdbDriver="";
(dbDriver);
"DriverSuceess");
}catch(ClassNotFoundExceptione){
"Drivernotfound");
();
}
try{
con=("jdbc:
manage","root","123");
"ConnectionSuceess");
}catch(SQLExceptione){
"Connetionfailure");
();
}
returncon;
}
publicstaticvoidcloseConnection()
{
if(con!
=null)
try{
();
"databaseclosesuccess");
}catch(SQLExceptione){
"closefailure");
();
}
}
publicstaticvoidmain(Stringargs[])
{
}
}
包中的类:
(1)FlightDao类:
在该类中有四个方法queryFlight,queryFlight1,addFlight,deleteFlight。
作用分别是为用户提供查询航班信息的功能,为管理者用户提供查询航班信息,添加航班信息,删除航班信息功能。
queryFlight()方法中,有一个参数,传给select语句中的Pname(用户姓名),利用select语句,查询航班信息表中的内容。
若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理
queryFlight1()方法中,有一个参数,传给select语句中的Pname(用户姓名),这个Pname的用户登录是输入的姓名。
即此类的作用是每个用户登陆只能查看本人的航班信息。
若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理
addFlight()方法中,有四个参数,分别传给insert语句中的id(序列),stime(飞机起飞时间),etime(飞机到达时间),sadd(飞机起始点),eadd(飞机终点),znum(总票数),snum(剩余票数)。
利用insert语句,将这些记录写入flight表中。
若插入成功返回true,否则返回false
deleteFlight()方法中,有一个参数,传给delete语句中的Pname(用户姓名),利用delete语句,把flight表中相关信息删除。
若删除成功,返回true,否则返回false。
FlightDao类源代码:
packagedao;
import;
import;
import;
import;
publicclassFlightDao{
publicArrayListqueryFlight(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="select*fromflightwherePnamelike'%"+key
+"%'";
ResultSetrs=(sql);
while()){
Flightflight=newFlight
(1),
(2),rs
.getString(3),(4),(5),getInt(6),getInt(7),getInt(8));
(flight);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicArrayListqueryFlight1(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="select*fromflightwherePnamelike'%"+
+"%'";
ResultSetrs=(sql);
while()){
Flightflight=newFlight
(1),
(2),
(3),(4),(5),getInt(6),getInt(7),getInt(8));
(flight);
}
}catch(SQLExceptione){
();
}
returnlis;
}
privateObjectgetInt(inti){
etInt(3),(4),(5));
(passenger);
}
}catch(SQLExceptione){
();
}
returnlis;
}
publicbooleandeletePassenger(Stringkey){
Connectioncon=();
Statementstm;
try{
stm=();
Stringsql="deletefrompassengerwherePnamelike'%"
+key+"%'";
intcount=(sql);
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
();
}
returnfalse;
}
}
包中的类:
(1)Passenger类:
此类中有五个成员变量,StringPname,StringPsex,intPage,StringPplace,intnumber,和五个成员方法,类中分别获取和设置了这五个变量,即为passenger表中五个属性的属性名,每个变量都对应了getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值
Passenger类源代码:
packagemodel;
publicclassPassenger{
StringPname;
StringPsex;
intnumber;
intPage;
StringPplace;
publicintgetNumber(){
returnnumber;
}
publicvoidsetNumber(intnumber){
=number;
}
publicStringgetPname(){
returnPname;
}
publicvoidsetPname(StringPname){
=Pname;
}
publicStringgetPsex(){
returnPsex;
}
publicvoidsetPsex(StringPsex){
=Psex;
}
publicintgetPage(){
returnPage;
}
publicvoidsetPage(intPage){
=Page;
}
publicStringgetPplace(){
returnPplace;
}
publicvoidsetPplace(StringPplace){
=Pplace;
}
publicPassenger(StringPname,StringPsex,intPage,StringPplace,intnumber)
{
super();
=Pname;
=Psex;
=Page;
=Pplace;
=number;
}
}
(2)Flight类:
此类中有七个成员变量,id(序列),stime(飞机起飞时间),etime(飞机到达时间),sadd(飞机起始点),eadd(飞机终点),znum(总票数),snum(剩余票数)。
,和七个成员方法,类中分别获取和设置了这七个变量,即为flight表中七个属性的属性名,每个变量都对应了getXXX(),setXXX()方法,还有一个构造方法,用于在调用其对象时对成员变量赋值
Flight类源代码:
packagemodel;
publicclassFlight{
intid;
Stringstime;
Stringetime;
Stringsadd;
Stringeadd;
intprice;
intznum;
intsnum;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
=id;
}
publicStringgetStime(){
returnstime;
}
publicvoidsetStime(Stringstime){
=stime;
}
publicStringgetEtime(){
returnetime;
}
publicvoidsetEtime(Stringetime){
=etime;
}
publicStringgetSadd(){
returnsadd;
}
publicvoidsetSadd(Stringsadd){
=sadd;
}
publicStringgetEadd(){
returneadd;
}
publicvoidsetEadd(StringEadd){
=eadd;
}
publicintgetPrice(){
returnprice;
}
publicvoidsetPrice(intPrice){
=price;
}
publicintgetZnum(){
returnznum;
}
publicvoidsetZnum(intZnum){
=znum;
}
publicintgetSnum(){
returnsnum;
}
publicvoidsetSnum(intSnum){
=snum;
}
publicFlight(intid,Stringstime,Stringetime,Stringsadd,Stringeadd,intprice,intznum,intsnum)
{
super();
=id;
=stime;
=etime;
=sadd;
=eadd;
=price;
=znum;
=snum;
}
publicFlight(intint1,Stringstring,Stringstring2,Stringstring3,Stringstring4,Objectint2,Objectint3,
Objectint4){
;
import.*;
publicclassLoginUIextendsJFrame{
JLabell1;
JButtonbt1,bt2;
Containercp;
publicLoginUI(){
l1=newJLabel("请选择用户类型");
bt1=newJButton("管理员");
bt2=newJButton("用户");
JPanelp1=newJPanel();
(null);
(150,150,120,40);
(l1);
(120,230,80,30);
(bt1);
(220,230,80,30);
(bt2);
(newManagerLoginActionListener());
;
import.*;
import;
publicclassManagerLoginUIextendsJFrame{
JLabell1,l2;
JTextFieldt1;
JPasswordFieldt2;
JButtonbt1,bt2;
Containercp;
publicManagerLoginUI(){
l1=newJLabel("管理员姓名");
l2=newJLabel("密码");
t1=newJTextField(12);
t2=newJPasswordField(12);
bt1=newJButton("登录");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(150,150,80,40);
(l1);
(250,150,80,30);
(t1);
(150,190,80,40);
(l2);
(250,190,80,30);
(t2);
(150,230,80,30);
(bt1);
(250,230,80,30);
(bt2);
(newLoginActionListener());
;
import.*;
import;;
publicclassPassengerLoginUIextendsJFrame{
JLabell1,l2;
JTextFieldt1;
JPasswordFieldt2;
JButtonbt1,bt2;
Containercp;
publicstaticStringst1;
publicStringst2;
publicPassengerLoginUI(){
l1=newJLabel("用户姓名");
l2=newJLabel("密码");
t1=newJTextField(12);
t2=newJPasswordField(12);
bt1=newJButton("航班查询");
bt2=newJButton("退出");
JPanelp1=newJPanel();
(null);
(150,150,80,40);
(l1);
(250,150,80,30);
(t1);
(150,190,80,40);
(l2);
(250,190,80,30);
(t2);
(150,230,120,30);
(bt1);
(280,230,80,30);
(bt2);
(newLoginActionListener());
;
import.*;
publicclassManagerMainUIextendsJFrame{
Containerctp;
ManagerMainUI(){
ctp=();
("欢迎进入管理系统!
");
(newBorderLayout());
JMenuBarmenuBar=newJMenuBar();
buildMainMenu(menuBar);
(me