基于JAVA的航空票務系統的設計與實現畢業設計論文_第1頁
基于JAVA的航空票務系統的設計與實現畢業設計論文_第2頁
基于JAVA的航空票務系統的設計與實現畢業設計論文_第3頁
基于JAVA的航空票務系統的設計與實現畢業設計論文_第4頁
基于JAVA的航空票務系統的設計與實現畢業設計論文_第5頁
已閱讀5頁,還剩39頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

合肥師范學院2015屆本科生畢業論文(設計)合肥師范學院2015屆本科生畢業論文(設計)本科生畢業論文(設計)題目:基于JAVA的航空票務系統的設計與實現學院計算機學院學科門類工科專業計算機科學與技術學號姓名指導教師2015年5月22日PAGEIPAGE摘要現如今的航空售票業務是一個高度依賴信息的行業。互聯網信息技術的飛速發展不僅使航空售票工作者逐漸擺脫了繁重的手工勞動、提高了工作效率,而且推著航空事業向現代化管理邁進。所以航空票務系統的實現在現實生活中尤為重要。基于JAVA的航空票務系統就是使用JAVA實現在網頁上進行航空機票的交易和管理。通過本系統不僅可以進行售票工作,用戶還可進行改簽和退票等功能,系統的后臺管理還可以對旅客情況和航班和機票的信息進行查詢,并可根據不同的情況隨時進行進行增加,修改,刪除等工作,使售票人員能夠有效的對機票進行控制和管理。極大程度的節約了成本,并為用戶提供更加快捷、簡便的服務。關鍵詞:航空票務;管理系統;JAVAIIAbstractThe

airline

ticketing

is

nowadays

a

career

highly

relied

on

information.

The

rapid

development

of

internet

information

technology

gradually

getting

the

heavy

missions

off,

improving

the

work

efficiency

and

making

steps

towards

modern

management.

Soitisveryimportantrealizeairlineticketingsysteminourlife.The

Java-based

airline

ticketing

system

realized

the

airline

tickets

trade

and

management

online

in

Web.

Not

only

the

ticket

selling

service

can

be

achieved

by

the

system,

but

the

tickets

rescheduling

and

canceling

service.

The

back-stage

management

realized

the

inquire

function

for

passenger,

flight

and

ticket

information.

Add,

delete

and

change

function

can

also

be

realized

in

necessary,

which

makes

tickets

seller

have

a

efficient

control

and

management

to

air

ticket.

Saved

cost

in

a

big

extent

and

proved

users

with

better

service.KeyWords:AirTicketing;ManagementSystem;JAVA目錄TOC\o"1-3"\h\u28798摘要 I18659Abstract II145001.引言 1233621.1開發背景及意義 1183551.2開發工具和環境配置 1183531.2.1開發工具 1289841.2.2環境配置 2194081.3可行性研究 4316002.需求分析 580652.1功能需求 517742.2性能需求 5206023.系統設計 6174843.1數據庫設計 6183403.1.1數據庫表 6288373.1.2數據庫的概念結構設計 658043.1.3數據庫的邏輯結構設計 8227753.2功能模塊概要設計 10167883.2.1模塊設計 10209773.2.2系統流程圖 10307634.詳細設計 1176074.1登錄模塊 11189004.2航班管理模塊 13324944.3機票預訂模塊 17174724.4我的訂單模塊 18213994.5修改密碼模塊 1882224.6用戶注冊模塊 19167834.7用戶管理模塊 2092435.系統測試 21215205.1系統測試的概念 21309355.2測試策略及結果 21312935.2.1功能的測試 21158235.2.2其他測試 2358816.結語 2428233參考文獻 255279附錄 2624246致謝 38PAGEPAGE21.引言1.1開發背景及意義隨著科技的發展,人們生活水平的提高,飛機這種交通工具逐漸的得到人們的青睞,它方便了人們的出行。民航服務業的發展,也推動著各種機票經營企業的快速發展,用戶需要實時的管理航班信息,能夠對客戶定票、退票、產生定單進行管理。面對各種不同種類的信息,需要合理的數據庫結構來保存數據信息以及有效的程序結構支持各種數據操作的執行。因此,航空票務系統的設計與實現是必須的。它不但能滿足各種機票經營企業的需求,也大大方便了乘客的查詢航班、購買機票、退票等活動。管理信息系統的開發需要語言的支持,現在主流的語言有JAVA、C、IOS、Android等。這里比較適合的是JAVA語言,它是面向對象的、B/S(瀏覽器/服務器)結構。面向對象的開發是將所需開發的管理信息系統要解決的問題抽象成若干對象,再研究這些對象之間的關系,構建這些對象之間的聯系,最終反映在開發的管理信息系統中。B/S結構是瀏覽器、服務器的結構,客戶之間通過瀏覽器就可以訪問票務系統,不需要下載客戶端。更加方便的為用戶通過服務[1]。本系統的開發使用的JAVA中的SERVLET和JSP技術。前臺頁面時動態的JSP頁面,在通過SERVLET交互式地瀏覽和修改數據,生成動態Web內容。整個項目使用MVC設計模式,層次結構分明便于開發和維護。1.2開發工具和環境配置1.2.1開發工具本系統開發主要使用的開發工具是MyEclipse9.0和MySQL數據庫,同時還在MyEclipse中配置了Tomcat服務器以及使用火狐瀏覽器進行運行測試。1、MyEclipse:是在Eclipse基礎上加上自己的插件開發而成的功能強大的企業級集成開發環境,主要用于JAVA、JAVAEE以及移動應用的開發。MyEclipse的功能非常強大,支持也十分廣泛,尤其是對各種開源產品的支持相當不錯[2]。2、MySQL:是一個關系型數據庫管理系統,其所使用的SQL語言是用于訪問數據庫的最常用標準化語言。MySQL由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇MySQL作為網站數據庫[3]。3、Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬于輕量級應用服務PAGEPAGE39器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。4、火狐瀏覽器:可以用來運行顯示系統開發編寫的JSP頁面,尤其是火狐下的一款插件Firebug更是方便進行查錯。它集HTML查看和編輯、JavaScript控制臺、網絡狀況監視器于一體,是開發JavaScript、CSS、HTML和Ajax的得力助手[4]。Firebug能從各個不同的角度剖析Web頁面內部的細節層面,給Web開發者帶來很大的便利。1.2.2環境配置1、配置JDK:首先下載安裝JDK軟件,安裝好后配置系統環境變量,右擊計算機-屬性-高級系統設置-環境變量-,然后就可以對環境變量進行設置。找到系統變量中的path值。如下圖所示:圖1-1環境變量配置選中“path”-點擊編輯-把安裝JDK的路徑粘貼到變量值的后面。注意,復制進去的路徑一定要與前面的數據用分號隔開。圖1-2系統變量編輯2、配置Tomcat:首先下載Tomcat文件,我是把文件放在E盤下。然后啟動MyEclipse,點擊Windows-preferences-搜索tomcat。如下圖操作:圖1-3Tomcat配置3、使用第三方工具連接數據庫:下載、安裝MySQL客戶端軟件NavicatforMysql,雙擊打開工具-點擊“Connection”彈出如圖示窗口,填寫服務器的IP以及端口號、數據庫的用戶名和密碼連接數據庫。圖1-4連接數據庫1.3可行性研究航空票務系統是使用JAVA語言開發,使用SERVLET和JSP技術進行實現。為了更加方便用戶進行訂票、退票、查詢等功能,系統使用JAVAWEB技術,直接將系統發布到萬維網上,用戶直接通過瀏覽器訪問該系統,不需要下載客戶端。在技術上使用MVC設計模式,將顯示層、業務邏輯層以及控制層分開,結構清晰便于開發、易維護[5]。2.需求分析2.1功能需求本航空票務系統主要實現的功能有:(1)實現不同權限的登錄。主要有三種用戶權限:管理員權限、登錄用戶、未登錄用戶。管理員可進行用戶管理、航班管理、機票管理以及系統維護。登錄用戶可進行航班查詢,機票查詢、預定、退票改簽以及個人信息管理。未登錄用戶能對航班和機票進行查詢以及注冊、登錄等[6]。(2)訂票功能,能夠按照顧客提供的信息提供訂票服務,例如按給定的起飛城市、到達城市、起飛日期、艙位類型等訂票。

(3)航班管理,管理員能夠對航班信息進行增、刪、改、查。保持航班信息的更新及維護。(4)機票管理,管理員客戶操作反饋的信息,對機票信息進行增、刪、改、查等操作。(5)提供各種查詢功能。例如航班時刻查詢,包括起飛時間,到達時間;航班的其他基本信息查詢,以及對機票的查詢。

(6)我的訂單。用戶登錄后通過我的訂單可以查看個人的訂單詳情,還可進行退票功能以及機票改簽,并且打印改簽前后機票的價格信息。

(7)公司簡介,通過公司簡介可以查看公司的介紹。用戶登錄進入航空票務系統的主界面,在上方有六個菜單按鈕:系統主頁、公司簡介、航班查詢、機票預訂、我的訂單及修改密碼。各個界面簡潔,操作方便,容易上手,用戶可以對航班進行詳細的信息查詢,在機票查詢中進行機票的查詢和預定,在我的訂單中進行機票退訂和改簽。2.2性能需求為了保證系統能夠長期、安全、穩定、可靠、高效的運行,系統應該滿足以下的性能需求:系統處理的準確性和及時性是系統的必要性能,系統在后期的維護下以及可擴展性,要求系統提供足夠的手段進行功能的調整和擴充。3.系統設計3.1數據庫設計對于航空票務系統,它的數據庫設計是通過對航空公司管理業務過程的數據流程分析和用戶的基本信息以及用戶的處理業務的數據分析后進行設計。可以確定岀系統中一些實體對象及以及它們之間的關系,這些實體包含各種具體信息,通過相互之間的作用形成數據的流動[7]。3.1.1數據庫表航空票務系統中的實體對象包括航班信息表(flightinfo),用戶和管理員信息表(userinfo),機票信息表(ticketinfo),訂單信息表(user_ticketinfo)這些實體模型的含義如下所述。(1)flightinfo:代表一個航班信息實體:包括航班號(id)、航空公司(airfirm)、起飛地(start)、到達地(end)、起飛時間(leaveTime)、到達時間(arriveTime)。(2)userinfo:代表一個用戶或管理員的信息實體:包括用戶編號(id)、用戶名(name),密碼(password),性別(sex),手機號碼(tel),身份證號(idcard),用戶權限(level)。(3)ticketinfo:代表每一張機票的信息實體:機票編號(id)、起飛地(start)、到達地(end)、起飛時間(leaveTime)、到達時間(arriveTime),日期(time),座位等級(seatLeval),票價(fare),discount(折扣),航班號(flight_id)、機票剩余數量(ticketNum)。(4)user_ticketinfo:代表一個用戶購買機票的信息實體:機票編號(id)、起飛地(start)、到達地(end)、起飛時間(leaveTime)、到達時間(arriveTime),日期(time),座位等級(seatLeval),票價(fare),用戶名(name)、身份證號(idcard)。3.1.2數據庫的概念結構設計概念結構設計將反映現實世界中的實體、屬性和它們之間的關系,建立原始數據形式。概念結構設計的目標是產生反映系統信息需求的整體數據庫概念結構[8],描述工具主要有實體圖: 圖3-1航班信息實體圖3-2用戶信息實體圖3-3機票信息實體圖3-4訂單信息實體圖3-5ER圖3.1.3數據庫的邏輯結構設計數據庫邏輯結構設計是描述數據庫的組織結構、生成數據庫模式。數據庫模式定義以下內容:存儲什么信息、數據的組織、需要的表、列的定義[9]。本課題使用的是MySQL數據庫,根據上述建立的E-R圖,經設計得到如下的數據表:flightinfo(航班信息表)航班信息表用來保存航班的信息,如圖3-5所示。userinfo(用戶信息表)用戶信息表用于記錄用戶的信息情況,如圖3-6所示。ticketinfo(機票信息表)機票信息表用來保存機票的信息,如圖3-7所示。user_ticketinfo(訂單信息表)訂單信息表用于記錄每個用戶訂購機票的信息,如圖3-8所示。圖3-6flightinfo(航班信息表)圖3-7userinfo(用戶信息表)圖3-8ticketinfo(機票信息表)圖3-9user_ticketinfo(訂單信息表)3.2功能模塊概要設計3.2.1模塊設計[用戶登錄模塊]實現了對用戶使用系統的檢驗工作。用戶又分為不同的權限,管理員登陸,用戶登錄和不進行登錄直接進入。對不同用戶進入系統所賦予的權限也不同,增加了系統的安全性。[用戶管理模塊]管理員登陸的權限,對系統登錄用戶的查看和刪除操作。[航班管理模塊]包含對航班信息的查詢,所有用戶都擁有的權限。對航班信息的添加、修改和刪除這是系統管理員的操作權限。[機票管理模塊]包含對機票信息的查詢,所有用戶都擁有的權限。對機票信息的添加、修改和刪除這是系統管理員的操作權限。對機票的預定這是登錄用戶的權限。[我的訂單模塊]包含對用戶訂單信息的查詢,并且包含對機票的退訂以及改簽權限,改簽后會提示改簽前后機票價格信息。[修改密碼模塊]對于已登錄用戶可進行密碼修改。[登錄和注冊模塊]這是對進入系統沒有登錄的用戶的權限。用戶點擊登錄按鈕跳轉到登陸界面。點擊注冊進行注冊,用戶注冊包含對用戶信息的驗證。3.2.2系統流程圖圖3-10系統走向圖4.詳細設計本系統使用的是JAVA的SERVLET和JSP技術,所以系統的設計又分為前端JSP頁面設計和后端業務邏輯處理。下面的模塊設計主要從前端JSP頁面和后端中的SERVLET控制層兩部部分進行講解。4.1登錄模塊登錄模塊進行登錄用戶的用戶名和密碼進行驗證,點擊“快速注冊”還能跳轉到注冊界面進行用戶注冊。登錄用戶登錄后,傳遞用戶填寫的用戶名和密碼進入到UserServlet中的loginStu方法進行用戶身份驗證,如果用戶名和密碼輸入錯誤則跳轉到登錄頁面。用戶登錄正確則跳轉到系統主界面。實現代碼如下: /** *用戶登錄 */ publicvoidloginStu(HttpServletRequestrequest,HttpServletResponseresponsethrowsSQLException,ServletException,IOException{ Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password"); Stringsql="select*fromuserinfowherename=?andpassword=?"; Objectparames[]=newObject[]{username,password}; System.out.println(username+""+password); //一般用戶登錄(不需要用戶名、密碼) if((username==null||username=="")&&(password==""||password==null)){ response.sendRedirect("main1.jsp"); }else{ //管理員或用戶登錄 List<Map<String,String>>list=fun.login(sql,parames); if(list!=null){ Map<String,String>map=list.get(0); if(username.equals(map.get("name"))&&password.equals(map.get("password"))){ System.out.println("登錄成功~~~"); //判斷是管理員還是用戶登錄 if(map.get("level").equals("1")){ System.out.println("管理員登錄成功!!!~~~"); HttpSessionsession=request.getSession(); session.setAttribute("username",username); request.getRequestDispatcher("main2.jsp").forward(request,response); }else{ System.out.println("用戶登錄成功!!!~~~"); HttpSessionsession=request.getSession(); session.setAttribute("username",username); session.setAttribute("psw",password); request.getRequestDispatcher("main3.jsp").forward(request,response); } }else{ System.out.println("登錄失敗~~~~~"); response.sendRedirect("/login.html"); } } else{ System.out.println("list為空,用戶名或密碼錯誤!"); response.sendRedirect("login.html"); } } }登錄成功跳轉到系統主界面:圖4-1主界面登錄失敗跳轉到登錄界面:圖4-2登錄界面4.2航班管理模塊航班管理包含對航班信息系的查詢、添加、修改和刪除。在航班信息查詢中又分為按航班號和起飛地進行查詢。航班按航班號條件查詢通過調用selectByhangbanhao方法,把按查詢的條件選擇航班號和查詢的條件值航班值作為參數傳遞給selectByhangbanhao方法進行查詢。圖4-3按航班號查詢 /** *根據航班號查詢 */ publicvoidselectByhangbanhao(HttpServletRequestrequest, HttpServletResponseresponse)throwsSQLException,ServletException,IOException{ Stringchaxun=request.getParameter("chaxun"); Stringsql="select*fromflightinfowhereid=?"; if(chaxun==null||chaxun==""){ Objectparames[]=newObject[]{chaxun}; List<Map<String,String>>list=fun.selectFlight(sql,parames); if(list!=null){ System.out.println("根據航班號查詢成功~~~"); request.setAttribute("flightList",list); request.getRequestDispatcher("user_adminlogin/selectFlight.jsp").forward(request,response); } } }航班按起飛地條件查詢通過調用selectByqifeidi方法,把按查詢的條件選擇起飛地和查詢的條件值起飛地值作為參數傳遞給selectByqifeidi方法進行查詢。圖4-4按航班號查詢 /** *根據起飛地查詢 */ publicvoidselectByqifeidi(HttpServletRequestrequest, HttpServletResponseresponse)throwsServletException,IOException,SQLException{ request.setCharacterEncoding("utf-8"); response.setContentType("txt/html;charset=utf-8"); //轉換編碼格式,將前臺輸入數據的編碼改為UTF-8; Stringchaxun=request.getParameter("chaxun"); System.out.println("按照起飛地【"+chaxun+"】查詢"); Stringsql="select*fromflightinfowherestart=?"; if(chaxun==null||chaxun==""){ //查詢全部記錄 request.getRequestDispatcher("adminServlet?caozuo=flightSelect").forward(request,response); }else{ Objectparames[]=newObject[]{chaxun}; List<Map<String,String>>list=fun.selectFlight(sql,parames); if(list!=null){ System.out.println("根據起飛地查詢成功~~~"); request.setAttribute("flightList",list); request.getRequestDispatcher("user_adminlogin/selectFlight.jsp").forward(request,response); } } }把添加航班的信息通過放在要跳轉的URL之后傳遞到Servlet中,在Servlet中進行判斷選擇調用flightInsert方法,通過INSERT語句向數據庫中插入數據,實現添加航班。圖4-5添加航班 /** *航班添加 */ publicvoidflightInsert(HttpServletRequestrequest, HttpServletResponseresponse)throwsSQLException,ServletException,IOException{ Stringid=request.getParameter("id"); Stringstart=request.getParameter("start"); Stringend=request.getParameter("end"); StringleaveTime=request.getParameter("leaveTime"); Stringsql="insertintoflightinfovalue(?,?,?,?,?,?)"; Objectparames[]=newObject[]{id,airfirm,start,end,leaveTime,arriveTime}; inti=fun.insert(sql,parames); response.sendRedirect("user_adminlogin/newWin.jsp?winValue="+winValue); }}圖4-6刪除航班刪除航班是通過傳遞航班的id號,來確定這條航班記錄。在調用flightDelete方法通過DELETE語句刪除記錄,實現航班刪除。/** *航班刪除 */ publicvoidflightDelete(HttpServletRequestrequest, HttpServletResponseresponse)throwsSQLException,IOException{ Stringid=request.getParameter("id"); Stringsql="deletefromflightinfowhereid=?"; inti=fun.delete(sql,parames); if(i!=-1){ System.out.println("刪除航班成功~~~"); response.sendRedirect("adminServlet?caozuo=flightSelect"); } }圖4-7修改航班 /** *航班修改 */ privatevoidflightUpdate(HttpServletRequestrequest, HttpServletResponseresponse)throwsSQLException,IOException{ Stringid1=request.getParameter("id1"); Stringid=request.getParameter("id"); Stringairfirm=request.getParameter("airfirm"); Stringstart=request.getParameter("start"); Stringend=request.getParameter("end"); StringleaveTime=request.getParameter("leaveTime"); StringarriveTime=request.getParameter("arriveTime"); Stringsql="updateflightinfosetid=?,airfirm=?,start=?,end=?,leaveTime=?,arriveTime=?whereid=?"; Objectparames[]=newObject[]{id,airfirm,start,end,leaveTime,arriveTime,id1}; inti=fun.update(sql,parames); response.sendRedirect("user_adminlogin/newWin.jsp?winValue="+winValue); } }4.3機票預訂模塊用戶點擊“機票預訂”菜單,會進入到機票預訂界面。頁面中會顯示所以機票的信息,用戶可以根據起飛地、到達地和日期,進行查詢篩選出所需機票。用戶點擊“訂票”按鈕完成交易。完成訂票后會把機票的票數修改為原來的值減一,然后在用戶訂單表中插入一條記錄。圖4-8機票預訂圖4-9機票售完提示4.4我的訂單模塊我的訂單是根據用戶預訂機票產生的訂單信息,用戶可以對訂單進行“改簽”和“退票”操作。改簽完成后會彈出改簽前后票價信息的提示。改簽調用gaiQian方法,在這個方法中把原記錄刪除再添加一條新紀錄。圖4-10我的訂單圖4-11改簽后價格提示4.5修改密碼模塊點擊“修改密碼”菜單,會彈出窗口修改密碼。用戶需要輸入原密碼和兩次新密碼。通過調用updatePsw方法,在這個方法中用UPDATE語句對密碼信息進行修改。圖4-12修改用戶密碼 /** *修改密碼 */ publicvoidupdatePsw(HttpServletRequestrequest, HttpServletResponseresponse)throwsSQLException,ServletException,IOException{ StringoldPsw=request.getParameter("oldPsw");//獲得原密碼 StringnewPsw=request.getParameter("newPsw"); //獲得新密碼 HttpSessionsession=request.getSession(); Stringname=(String)session.getAttribute("username"); Stringsql="updateuserinfosetpassword=?wherepassword=?andname=?"; Objectparames[]=newObject[]{newPsw,oldPsw,name}; inti=fun.update(sql,parames); response.sendRedirect("user_userlogin/newWin.jsp?"); }4.6用戶注冊模塊用戶注冊可以在登錄界面點擊“快速注冊”進行注冊或者在直接進入系統化點擊菜單里的“注冊”按鈕注冊用戶。實現原理就是調用zhuCe方法,把注冊的信息傳遞到zhuCe方法,然后INSERT到數據庫中。圖4-13修改用戶密碼 /** *用戶注冊 */ publicvoidzhuCe(HttpServletRequestrequest,HttpServletResponseresponse)throwsSQLException,ServletException,IOException{ Stringid=request.getParameter("id"); Stringname=request.getParameter("name"); Stringpassword=request.getParameter("password"); Stringtel=request.getParameter("tel"); Stringidcard=request.getParameter("idcard"); Stringsql="insertintouserinfo(id,name,password,sex,tel,idcard)value(?,?,?,?,?,?)"; Objectparames[]=newObject[]{id,name,password,sex,tel,idcard}; inti=fun.insert(sql,parames); request.getRequestDispatcher("login.html").forward(request,response); } }4.7用戶管理模塊用戶管理員登錄后,可進行用戶信息查詢以及用戶信息的刪除。圖4-14用戶信息管理 /** *用戶刪除 */ publicvoiduserDelete(HttpServletRequestrequest,HttpServletResponseresponse)throwsSQLException,ServletException,IOException{ Stringid=request.getParameter("id"); Stringsql="deletefromuserinfowhereid=?"; Objectparames[]=newObject[]{id}; inti=fun.delete(sql,parames); if(i!=-1){request.getRequestDispatcher("adminServlet?caozuo=userSelect").forward(request,response); } }5.系統測試5.1系統測試的概念軟件測試不僅僅包括程序測試,而是貫穿于整個軟件開發的全過程,也就是說其對象除了包括需求分析所獲得的開發成果、還包括概要設計所獲得的開發成果、以及包括詳細設計所獲得的開發成果、和包括編碼實現所獲得的開發成果[10]。系統測試是針對整個產品系統進行的測試,目的是驗證系統是否滿足了需求規格的定義,找出與需求規格不符或與之矛盾的地方,從而提出更加完善的方案。系統測試發現問題之后要經過調試找出錯誤原因和位置,然后進行改正。是基于系統整體需求說明書的黑盒類測試,應覆蓋系統所有聯合的部件。對象不僅僅包括需測試的軟件,還要包含軟件所依賴的硬件、外設甚至包括某些數據、某些支持軟件及其接口等比較常見的、典型的系統測試包括恢復測試、安全測試、壓力測試[11]。下面對這幾種測試進行一一介紹:1)恢復測試恢復測試作為一種系統測試,主要關注導致軟件運行失敗的各種條件,并驗證其恢復過程能否正確執行。在特定情況下,系統需具備容錯能力。另外,系統失效必須在規定時間段內被更正,否則將會導致嚴重的經濟損失。2)安全測試安全測試用來驗證系統內部的保護機制,以防止非法侵入。在安全測試中,測試人員扮演試圖侵入系統的角色,采用各種辦法試圖突破防線。因此系統安全設計的準則是要想方設法使侵入系統所需的代價更加昂貴。3)壓力測試壓力測試是指在正常資源下使用異常的訪問量、頻率或數據量來執行系統。139845.2測試策略及結果5.2.1功能的測試概述:功能測試也稱為黑盒測試,就是運行整個系統測試各模塊功能與預期的功能效果對比是否相同,在測試過程中把整個程序看成一個打不開的黑盒,在完全不考慮程序內部結構和內部特性的情況下,在程序接口進行測試。就是按照開發的功能分析和各個模塊的功能設計進行測試,主要針對軟件界面和軟件功能進行測試。功能測試既是測試的重點,也是測試的難點[12]。目標:功能測試的目標或者說過程就是分別使用有效的和無效的數據測試各個功能模塊,測試輸入為有效數據時,能否得到與預期結果相符的結果,測試輸入為無效數據時,能否得到與預期相符的提示信息或者警告信息。結果:測試各模塊,結果達到目標。下面以機票預訂和我的訂單功能模塊的測試為例,該模塊測試用例、測試結果如下:表4-1機票預訂和我的訂單功能測試用例用例機票預訂,我的訂單測試類名稱dingPiao、ticketSelecttuiPiao、gaiQian測試目的驗證該模塊的功能測試環境Windows7、火狐瀏覽器、IE瀏覽器、360瀏覽器測試環境MyEclipse9.0、MySQL數據庫、測試用例標號測試項目輸入描述預期結果實際結果1查詢機票輸入正確的機票信息查詢出對應條件的機票信息一致2查詢機票點擊“機票預訂”菜單按鈕查詢出所有機票信息的記錄一致3查詢機票起飛地錯誤結果為空一致4查詢機票目的地錯誤結果為空一致5查詢機票日期錯誤結果為空一致6查詢機票所有條件為空結果為空一致7機票預訂票數為0提示機票已賣完一致8機票預訂機票有剩余訂票成功,票數減1一致9機票預訂重復購買提示機票不能重復購買一致10退票點擊退票退票成功一致11退票飛機起飛前三十分點擊退票退票失敗一致12改簽點擊改簽后選擇預定的機票改簽成功一致13改簽完成改簽顯示改簽前后機票價格一致14改簽點擊改簽后不選擇預定的機票改簽失敗一致15改簽點擊改簽后進行其他操作改簽失敗一致16改簽點擊改簽后點擊退出系統按鈕退出當前系統成功,改簽失敗一致5.2.2其他測試1、性能的測試概述:性能的測試是為了獲得系統的最大負載和最大處理能力等等數據,其主要是通過評測和評估非功能性需求來獲得的,包括評測和評估系統處理速度、系統響應時間以及其他與時間相關的數據[13]。目標:性能的測試的目標是測試在正常負荷下運行的系統的預期工作量。結果:經過測試,得出系統平均響應時間、處理速度、最大負載等性能達到目標。2、壓力的測試概述:壓力的測試也就是系統承受壓力的測試,既有高壓測試又有負載測試。目標:壓力的測試主要就是要掌握系統的安全運行性能,這就需要了解系統在長時間處理多個用戶相同的且性能最壞的業務的情況下的安全運行邊界條件,這就需要測試系統在給定時間內能夠持續處理的最大工作量或最大負載。結果:經過測試,系統在所需最大負荷兩倍的條件下,仍能夠正常運轉。5、配置的測試概述:配置的測試主要是確認系統的使用范圍,這需要測試系統在不同的軟件配置中的運行情況以及在不同的硬件配置中的運行情況[14];目標:配置的測試的目標就是測試系統在不同條件下是否能夠正常運行,這就包括測試系統在所需的軟件配置以及所需的硬件配置中,也就是說在正常配置下,運行是否正常。測試系統的兼容性,也就是測試在其他版本的瀏覽器操作或者在其他系統平臺的異常情況下,系統是否兼容,也就是說系統是否能夠正常運行[15]。結果:系統在主流操作系統WindowsXP、Windows7,火狐瀏覽器,IE瀏覽器,360瀏覽器以及其他操作系統和瀏覽器上都可以正常運行。6.結語經過兩個月的忙碌整個畢業設計和論文已全部完成,總結這兩個月的經歷感覺真的學到了很多。從最開始的不知從何下手到最后的全部完成,這中間我付出了很多努力同時也收獲了很多。這次的畢業設計不僅僅是對我大學四年所學的總結,還是對我能力的一個考驗。因為想要完成一個優秀的畢業設計僅依靠大學中所學習到知識是完全不夠的,但我經過四年的學習也具備了自學的能力,我通過查找相關的資料書籍以及用過網絡資源獲取來幫助我完成畢業設計。拿到這個畢業設計題目,首先我們從系統的需求分析入手,我們將系統要實現的功能和估計要用到的相關技術及相關技術難點進行分析。接下來就是進行系統的總體設計,首先將系統的結構進行分析,分析這個系統需要完成哪些功能,將這些功能劃分為多個模塊,這樣在設計上我們就將軟件分成一個立體的,低偶合的一個一個的小模塊。我先從簡單的模塊開始著手編寫代碼,然后一點點的完成整個項目的開發。

本次系統設計中我也遇到了很到問題,主要是缺少項目經驗。有些只是可能會但是在實際項目開發中一不小心就會出錯。還有在做系統時不能把以前學過的知識都綜合到一起。每當遇到這樣或那樣的問題時,我都通過網上查閱相關資料,一些沒有接觸過的知識也是從頭開始學起,在這個過程中讓我的進步非常大通過解決這一個個難點不僅是對我知識的積累也是對我學習能力的提高,這一點對我今后的工作有很大的幫助。另外在這次做系統的過程中,我認為軟件最難的是設計,設計有了,實現是很簡單的,所以也為我指明了以后學習的方向。

系統中難免有不盡人意之處,如系統的安全性能有待提高,系統的通用性也需要完善。由于本人的知識水平和能力有限,本文的疏漏和不當之處在所難免,敬請指正。我也會努力盡量完善所有編寫的功能模塊,完美的完成這個畢業設計,為我的大學劃上一個圓滿的句號。參考文獻[1]良葛格.Java學習筆記(第一版)[M].北京:清華大學出版社,2006.[2]孫衛琴.精通Hibernate:Java面向持久化技術詳解[M].北京:電子工業出版社,2007.[3]盧曉慶.基于Web的交通旅游訂票系統的設計與實現[D].大連:大連理工大學,2004.[4]薩師煊,王珊.數據庫系統概論[M].北京:高等教育出版社,2003.[5]張水平.數據庫應用技術[M].西安:西北工業大學出版社,2005.[6]楊小平.VisualC++項目案例導航[M].北京:科學出版社,2005.[7]李閩溟,吳繼剛.數據庫系統開發實例[M].北京:人民郵電出版社,2002.[8]鄭阿奇,丁有和.VisualC++教程[M].北京:機械工業出版社,2004.[9]蔡學鏞.Java程序員的心聲第2版[M].北京:電子工業出版社,2004.[10]姜志強.Java語言程序設計[M].北京:電子工業出版社,2007.[11]田苗苗.基于面向對象技術開發[J].面向對象研究,2004,(02):134-139.[12]BruceEckel.《ThinkinginJava4》[M].American:PrenticeHallPTR,2007.[13]A.Parasan.《marketingresearch》[M].American:HoughtonCompany,2007.[14]MichaclHammer.《ReengineeringtheCorporation》[M].American:HarperBusiness,1993.附錄ADO層JDBC建立數據庫的連接:packagecom.nite.dao;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importorg.junit.Test;/***@author:劉賢龍*@功能:JDBC*@時間:2015.3*/publicclassDao{ Connectioncon=null; PreparedStatementps=null; ResultSetrs=null;publicDao(){} static{ try{ Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } } /** *數據庫連接 *@throwsSQLException */ @Test publicvoidgetConnect()throwsSQLException{ Stringurl="jdbc:mysql://localhost:3306/ticketsystem"; Stringuser="root"; Stringpassword="liu"; con=DriverManager.getConnection(url,user,password); if(con!=null){ System.out.println("連接數據庫成功"); }else{ System.out.println("連接數據庫失敗"); } } /** *執行sql *return:影響行數 *@throwsSQLException */ publicintdoSql(Stringsql,Objectparames[])throwsSQLException{ getConnect(); ps=con.prepareStatement(sql); for(inti=0;i<parames.length;i++){ ps.setObject(i+1,parames[i]); } ps.execute(); inti=ps.getUpdateCount(); returni; } /** *獲得結果集 *@throwsSQLException *return:結果集 */ publicResultSetgetRs()throwsSQLException{ rs=ps.getResultSet(); returnrs; } /** *關閉資源 *@throwsSQLException */ publicvoidgetClose()throwsSQLException{ if(rs!=null) rs.close(); if(ps!=null) ps.close(); if(con!=null) con.close(); }}2、SERVICE(業務邏輯層)層處理業務邏輯:packagecom.nite.service;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.nite.dao.Dao;publicclassFunction{ privateDaodao=newDao(); /** *查詢航班 *@paramsql *@paramparames *@return *@throwsSQLException */ publicList<Map<String,String>>selectFlight(Stringsql,Object[]parames)throwsSQLException{ List<Map<String,String>>list=newArrayList<Map<String,String>>(); dao.doSql(sql,parames); ResultSetrs=dao.getRs(); rs.last(); inti=rs.getRow(); System.out.println("結果集中有"+i+"條記錄"); if(i>0){ rs.beforeFirst(); while(rs.next()){ Stringid=rs.getString("id"); Stringairfirm=rs.getString(2); Stringstart=rs.getString(3); Stringend=rs.getString(4); StringleaveTime=rs.getString(5); StringarriveTime=rs.getString(6); Map<String,String>map=newHashMap<String,String>(); map.put("id",id); map.put("airfirm",airfirm); map.put("start",start); map.put("end",end); map.put("leaveTime",leaveTime); map.put("arriveTime",arriveTime); list.add(map); } }else{ list=null; } dao.getClose(); returnlist; } /** *查詢機票 *@throwsSQLException */ publicList<Map<String,String>>selectTicket(Stringsql,Object[]parames)throwsSQLException{ List<Map<String,String>>list=newArrayList<Map<String,String>>(); dao.doSql(sql,parames); ResultSetrs=dao.getRs(); rs.last(); inti=rs.getRow(); System.out.println("結果集中有"+i+"條記錄"); if(i>0){ rs.beforeFirst(); while(rs.next()){ Stringid=rs.getString("id"); Stringstart=rs.getString(2); Stringend=rs.getString(3); StringleaveTime=rs.getString(4); StringarriveTime=rs.getString(5); Stringtime=rs.getString(6); StringseatLevel=rs.getString(7); Stringfare=rs.getString(8); Stringdiscount=rs.getString(9); Stringflight_id=rs.getString(10); StringticketNum=rs.getString(11); Map<String,String>map=newHashMap<String,String>(); map.put("id",id); map.put("start",start); map.put("end",end); map.put("leaveTime",leaveTime); map.put("arriveTime",arriveTime); map.put("time",time); map.put("seatLevel",seatLevel); map.put("fare",fare); map.put("discount",discount); map.put("flight_id",flight_id); map.put("ticketNum",ticketNum); list.add(map); } }else{ list=null; } dao.getClose(); returnlist; } /** *添加 *@paramsql *@paramparames *@return *@throwsSQLException */ publicintinsert(Stringsql,Object[]parames)throwsSQLException{ inti=dao.doSql(sql,parames); System.out.println("影響行數"+i); dao.getClose(); returni; } /** *刪除 *@paramsql *@paramparames *@throwsSQLException */ publicintdelete(Stringsql,Object[]parames)throwsSQLException{ inti=dao.doSql(sql,parames); System.out.println("影響行數:"+i); dao.getClose(); returni; } /** *修改 *@paramsql *@paramparames *@throwsSQLException */ publicintupdate(Stringsql,Object[]parames)throwsSQLException{ inti=dao.doSql(sql,parames); System.out.println("影響行數:"+i); dao.getClose(); returni; } /** *登錄 *@throwsSQLException */ publicList<Map<String,String>>login(Stringsql,Objectparames[])throwsSQLException{ dao.doSql(sql,parames); ResultSetrs=dao.getRs(); List<Map<String,String>>list=newArrayList<Map<String,String>>(); rs.last(); inti=rs.getRow(); if(i>0){ rs.beforeFirst(); while(rs.next()){ Stringname=rs.getString("name"); Stringpassword=rs.getString("password"); Stringlevel=rs.getString("level"); Map<String,String>map=newHashMap<String,String>(); map.put("name",name); map.put("password",password); map.put("level",level); list.add(map); } }else{ list=null; } returnlist; } /** *用戶查詢 *@paramsql *@paramparames *@throwsSQLException */ publicList<Map<String,String>>selectUser(Stringsql,Object[]parames)throwsSQLException{ List<Map<String,String>>list=newArrayList<Map<String,String>>(); dao.doSql(sql,parames); ResultSetrs=dao.getRs(); rs.last(); inti=rs.getRow(); if(i>0){ rs.beforeFirst(); while(rs.next()){ Stringid=rs.getString("id"); Stringname=rs.getString(2); Stringpassword=rs.getString("password"); Stringsex=rs.getString(4); Stringtel=rs.getString(5); Stringidcard=rs.getString(6); Stringlevel=rs.getString("level"); Map<String,String>map=newHashMap<String,String>(); map.put("id",id); map.put("name",name); map.put("password",password); map.put("sex",sex); map.put("tel",tel); map.put("idcard",idcard); map.put("level",level); list.add(map); } }else{ list=null; } returnlist; } /** *查詢訂單 *@throwsSQLException */ publicList<Map<String,String>>selectMyTicket(Stringsql,Object[]parames)throwsSQLException{ List<Map<String,String>>list=newArrayList<Map<String,String>>(); dao.doSql(sql,parames); ResultSetrs=dao.getRs(); rs.last(); inti=rs.getRow(); System.out.println("結果集中有"+i+"條記錄"); if(i>0){ rs.beforeFirst(); while(rs.next()){ Stringid=rs.getString("id"); Stringstart=rs.getString(2); Stringend=rs.getString(3); StringleaveTime=rs.getString(4); StringarriveTime=rs.getString(5); Stringtime=rs.getString(6); StringseatLevel=rs.getString(7); Stringfare=rs.getString(8); Stringname=rs.getString(9); Stringidcard=rs.getString(10); Stringflight_id=rs.getString(11); Map<String,String>map=newHashMap<String,String>(); map.put("id",id); map.put("start",start); map.put("end",end); map.put("leaveTime",leaveTime); map.put("arriveTime",arriveTime); map.put("time",time); map.put("seatLevel",seatLevel); map.put("fare",fare); map.put("name",name); map

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論