軟件工程機(jī)票預(yù)訂系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
軟件工程機(jī)票預(yù)訂系統(tǒng)課程設(shè)計(jì)_第2頁(yè)
軟件工程機(jī)票預(yù)訂系統(tǒng)課程設(shè)計(jì)_第3頁(yè)
軟件工程機(jī)票預(yù)訂系統(tǒng)課程設(shè)計(jì)_第4頁(yè)
軟件工程機(jī)票預(yù)訂系統(tǒng)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程機(jī)票預(yù)訂系統(tǒng)課程設(shè)計(jì)?一、課程設(shè)計(jì)目的本次軟件工程機(jī)票預(yù)訂系統(tǒng)課程設(shè)計(jì)旨在通過(guò)實(shí)際項(xiàng)目開(kāi)發(fā),讓學(xué)生深入理解軟件工程的基本概念、原理和方法,掌握軟件開(kāi)發(fā)的全過(guò)程,包括需求分析、系統(tǒng)設(shè)計(jì)、編碼實(shí)現(xiàn)、測(cè)試調(diào)試以及軟件維護(hù)等環(huán)節(jié)。培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作能力、問(wèn)題解決能力和軟件工程項(xiàng)目管理能力,提高學(xué)生運(yùn)用所學(xué)知識(shí)解決實(shí)際問(wèn)題的綜合能力,為今后從事軟件開(kāi)發(fā)相關(guān)工作打下堅(jiān)實(shí)的基礎(chǔ)。

二、需求分析2.1功能需求1.用戶(hù)注冊(cè)與登錄:新用戶(hù)能夠在線(xiàn)注冊(cè),提供必要的個(gè)人信息(如姓名、身份證號(hào)、聯(lián)系方式等),并設(shè)置登錄密碼。已注冊(cè)用戶(hù)可以使用用戶(hù)名和密碼登錄系統(tǒng)。2.航班查詢(xún):用戶(hù)可以根據(jù)出發(fā)地、目的地、出發(fā)日期等條件查詢(xún)符合要求的航班信息,包括航班號(hào)、航空公司、出發(fā)時(shí)間、到達(dá)時(shí)間、票價(jià)等。3.機(jī)票預(yù)訂:用戶(hù)在選定航班后,可以進(jìn)行機(jī)票預(yù)訂操作。系統(tǒng)應(yīng)記錄預(yù)訂信息,包括乘客姓名、身份證號(hào)、聯(lián)系方式、預(yù)訂航班信息等,并生成預(yù)訂訂單號(hào)。4.訂單管理:用戶(hù)可以查看自己的預(yù)訂訂單,包括訂單狀態(tài)(已預(yù)訂、已支付、已出票、已取消等)、訂單詳情(航班信息、乘客信息等)。同時(shí),支持對(duì)已預(yù)訂訂單進(jìn)行取消操作。5.支付功能:與第三方支付平臺(tái)集成,支持用戶(hù)在線(xiàn)支付機(jī)票費(fèi)用。支付成功后,訂單狀態(tài)更新為已支付。6.后臺(tái)管理:管理員能夠登錄系統(tǒng),對(duì)航班信息進(jìn)行管理(添加、修改、刪除航班),查看用戶(hù)訂單信息,處理用戶(hù)投訴等。

2.2性能需求1.響應(yīng)時(shí)間:系統(tǒng)在接收到用戶(hù)請(qǐng)求后,應(yīng)在短時(shí)間內(nèi)(如3秒以?xún)?nèi))給出響應(yīng),提供查詢(xún)結(jié)果或處理預(yù)訂請(qǐng)求等操作。2.并發(fā)處理能力:支持多個(gè)用戶(hù)同時(shí)進(jìn)行查詢(xún)、預(yù)訂等操作,確保系統(tǒng)在高并發(fā)情況下的穩(wěn)定性和可靠性,不出現(xiàn)數(shù)據(jù)混亂或系統(tǒng)崩潰現(xiàn)象。3.數(shù)據(jù)準(zhǔn)確性:確保航班信息、用戶(hù)訂單信息等數(shù)據(jù)的準(zhǔn)確性,避免出現(xiàn)錯(cuò)誤的票價(jià)、航班時(shí)間等信息。

2.3安全性需求1.用戶(hù)認(rèn)證:采用安全的加密算法對(duì)用戶(hù)登錄密碼進(jìn)行加密存儲(chǔ),防止密碼泄露。在用戶(hù)登錄和敏感操作時(shí),進(jìn)行身份驗(yàn)證,確保只有合法用戶(hù)能夠進(jìn)行相應(yīng)操作。2.數(shù)據(jù)傳輸安全:在用戶(hù)與系統(tǒng)之間進(jìn)行數(shù)據(jù)傳輸時(shí),采用HTTPS協(xié)議,保證數(shù)據(jù)傳輸過(guò)程中的保密性和完整性,防止數(shù)據(jù)被竊取或篡改。3.支付安全:與可靠的第三方支付平臺(tái)合作,遵循支付平臺(tái)的安全規(guī)范,確保支付過(guò)程的安全性,防止用戶(hù)資金損失。

三、系統(tǒng)設(shè)計(jì)3.1總體設(shè)計(jì)1.系統(tǒng)架構(gòu):采用分層架構(gòu),包括表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層。表示層負(fù)責(zé)與用戶(hù)進(jìn)行交互,展示系統(tǒng)界面;業(yè)務(wù)邏輯層處理具體的業(yè)務(wù)邏輯,如航班查詢(xún)、機(jī)票預(yù)訂等;數(shù)據(jù)訪(fǎng)問(wèn)層負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行交互,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和讀取。2.模塊劃分:根據(jù)功能需求,將系統(tǒng)劃分為用戶(hù)注冊(cè)登錄模塊、航班查詢(xún)模塊、機(jī)票預(yù)訂模塊、訂單管理模塊、支付模塊和后臺(tái)管理模塊。每個(gè)模塊負(fù)責(zé)特定的功能,相互協(xié)作完成整個(gè)系統(tǒng)的功能。

3.2數(shù)據(jù)庫(kù)設(shè)計(jì)1.數(shù)據(jù)庫(kù)ER圖用戶(hù)表(User):包含用戶(hù)的基本信息,如用戶(hù)名、密碼、姓名、身份證號(hào)、聯(lián)系方式等。航班表(Flight):存儲(chǔ)航班的詳細(xì)信息,包括航班號(hào)、航空公司、出發(fā)地、目的地、出發(fā)時(shí)間、到達(dá)時(shí)間、票價(jià)等。訂單表(Order):記錄用戶(hù)的預(yù)訂訂單信息,關(guān)聯(lián)用戶(hù)表和航班表,包括訂單號(hào)、用戶(hù)ID、航班ID、訂單狀態(tài)、預(yù)訂時(shí)間等。乘客表(Passenger):存儲(chǔ)訂單中的乘客信息,關(guān)聯(lián)訂單表,包括乘客姓名、身份證號(hào)、聯(lián)系方式等。管理員表(Admin):用于存儲(chǔ)管理員的登錄信息,如用戶(hù)名、密碼等。2.數(shù)據(jù)庫(kù)表結(jié)構(gòu)用戶(hù)表(User)|字段名|類(lèi)型|描述||||||id|int|用戶(hù)ID(主鍵,自增)||username|varchar(50)|用戶(hù)名||password|varchar(255)|加密后的密碼||name|varchar(50)|姓名||id_card|varchar(20)|身份證號(hào)||phone|varchar(11)|聯(lián)系方式|航班表(Flight)|字段名|類(lèi)型|描述||||||id|int|航班ID(主鍵,自增)||flight_number|varchar(20)|航班號(hào)||airline|varchar(50)|航空公司||departure_city|varchar(50)|出發(fā)地||arrival_city|varchar(50)|目的地||departure_time|datetime|出發(fā)時(shí)間||arrival_time|datetime|到達(dá)時(shí)間||price|decimal(10,2)|票價(jià)|訂單表(Order)|字段名|類(lèi)型|描述||||||id|int|訂單ID(主鍵,自增)||user_id|int|用戶(hù)ID(外鍵,關(guān)聯(lián)User表)||flight_id|int|航班ID(外鍵,關(guān)聯(lián)Flight表)||status|varchar(20)|訂單狀態(tài)(如已預(yù)訂、已支付、已出票、已取消等)||booking_time|datetime|預(yù)訂時(shí)間|乘客表(Passenger)|字段名|類(lèi)型|描述||||||id|int|乘客ID(主鍵,自增)||order_id|int|訂單ID(外鍵,關(guān)聯(lián)Order表)||name|varchar(50)|乘客姓名||id_card|varchar(20)|乘客身份證號(hào)||phone|varchar(11)|乘客聯(lián)系方式|管理員表(Admin)|字段名|類(lèi)型|描述||||||id|int|管理員ID(主鍵,自增)||username|varchar(50)|用戶(hù)名||password|varchar(255)|加密后的密碼|

3.3詳細(xì)設(shè)計(jì)1.用戶(hù)注冊(cè)登錄模塊注冊(cè)功能:用戶(hù)輸入注冊(cè)信息,系統(tǒng)進(jìn)行格式校驗(yàn)(如密碼強(qiáng)度校驗(yàn)、身份證號(hào)格式校驗(yàn)等),校驗(yàn)通過(guò)后將用戶(hù)信息插入到用戶(hù)表中。登錄功能:用戶(hù)輸入用戶(hù)名和密碼,系統(tǒng)查詢(xún)用戶(hù)表進(jìn)行身份驗(yàn)證,驗(yàn)證成功后生成用戶(hù)會(huì)話(huà)(如使用JSESSIONID),用于后續(xù)操作的身份標(biāo)識(shí)。2.航班查詢(xún)模塊根據(jù)用戶(hù)輸入的出發(fā)地、目的地、出發(fā)日期等條件,在航班表中進(jìn)行查詢(xún),將符合條件的航班信息展示給用戶(hù)??梢詫?shí)現(xiàn)模糊查詢(xún)、多條件組合查詢(xún)等功能。3.機(jī)票預(yù)訂模塊用戶(hù)選定航班后,系統(tǒng)獲取用戶(hù)會(huì)話(huà)信息,判斷用戶(hù)是否已登錄。若已登錄,系統(tǒng)檢查航班余票情況,若有余票,則生成訂單記錄,同時(shí)在訂單表和乘客表中插入相應(yīng)信息。訂單狀態(tài)初始化為已預(yù)訂。4.訂單管理模塊用戶(hù)登錄后,可以查看自己的訂單列表,根據(jù)訂單ID查看訂單詳情,包括航班信息、乘客信息、訂單狀態(tài)等。支持對(duì)已預(yù)訂訂單進(jìn)行取消操作,取消后訂單狀態(tài)更新為已取消。5.支付模塊當(dāng)用戶(hù)進(jìn)行支付操作時(shí),系統(tǒng)調(diào)用第三方支付平臺(tái)接口,將訂單金額等信息傳遞給支付平臺(tái)。支付平臺(tái)返回支付結(jié)果,系統(tǒng)根據(jù)支付結(jié)果更新訂單狀態(tài)為已支付或支付失敗等。6.后臺(tái)管理模塊管理員登錄系統(tǒng)后,可以對(duì)航班信息進(jìn)行增刪改查操作。查看用戶(hù)訂單列表,處理用戶(hù)投訴等。例如,管理員可以添加新的航班信息,修改現(xiàn)有航班的票價(jià)、時(shí)間等信息,刪除無(wú)效航班等。

四、編碼實(shí)現(xiàn)4.1開(kāi)發(fā)環(huán)境1.編程語(yǔ)言:選擇Java作為開(kāi)發(fā)語(yǔ)言,因?yàn)镴ava具有跨平臺(tái)性、面向?qū)ο?、安全可靠等?yōu)點(diǎn),適合開(kāi)發(fā)企業(yè)級(jí)應(yīng)用。2.開(kāi)發(fā)工具:使用Eclipse作為集成開(kāi)發(fā)環(huán)境(IDE),Eclipse具有豐富的插件資源,方便進(jìn)行代碼編寫(xiě)、調(diào)試和項(xiàng)目管理。3.應(yīng)用服務(wù)器:采用Tomcat作為應(yīng)用服務(wù)器,Tomcat是一個(gè)開(kāi)源的Servlet容器,具有輕量級(jí)、高效等特點(diǎn),能夠穩(wěn)定運(yùn)行JavaWeb應(yīng)用。4.數(shù)據(jù)庫(kù):選用MySQL數(shù)據(jù)庫(kù),MySQL是一種常用的關(guān)系型數(shù)據(jù)庫(kù),具有性能高、成本低、可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),適合存儲(chǔ)和管理機(jī)票預(yù)訂系統(tǒng)的數(shù)據(jù)。

4.2關(guān)鍵代碼實(shí)現(xiàn)1.用戶(hù)注冊(cè)Servlet```java@WebServlet("/register")publicclassRegisterServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");Stringname=request.getParameter("name");StringidCard=request.getParameter("idCard");Stringphone=request.getParameter("phone");

Useruser=newUser();user.setUsername(username);user.setPassword(EncryptionUtil.encryptPassword(password));user.setName(name);user.setIdCard(idCard);user.setPhone(phone);

UserServiceuserService=newUserService();booleanresult=userService.registerUser(user);

if(result){response.sendRedirect("login.jsp");}else{request.setAttribute("error","注冊(cè)失敗,請(qǐng)重試");request.getRequestDispatcher("register.jsp").forward(request,response);}}}```2.用戶(hù)登錄Servlet```java@WebServlet("/login")publicclassLoginServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");

UserServiceuserService=newUserService();Useruser=userService.loginUser(username,EncryptionUtil.encryptPassword(password));

if(user!=null){HttpSessionsession=request.getSession();session.setAttribute("user",user);response.sendRedirect("index.jsp");}else{request.setAttribute("error","用戶(hù)名或密碼錯(cuò)誤,請(qǐng)重試");request.getRequestDispatcher("login.jsp").forward(request,response);}}}```3.航班查詢(xún)Servlet```java@WebServlet("/flightSearch")publicclassFlightSearchServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{StringdepartureCity=request.getParameter("departureCity");StringarrivalCity=request.getParameter("arrivalCity");StringdepartureDateStr=request.getParameter("departureDate");

SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMdd");DatedepartureDate=null;if(departureDateStr!=null&&!departureDateStr.isEmpty()){try{departureDate=sdf.parse(departureDateStr);}catch(ParseExceptione){e.printStackTrace();}}

FlightServiceflightService=newFlightService();List<Flight>flights=flightService.searchFlights(departureCity,arrivalCity,departureDate);

request.setAttribute("flights",flights);request.getRequestDispatcher("flightList.jsp").forward(request,response);}}```4.機(jī)票預(yù)訂Servlet```java@WebServlet("/bookTicket")publicclassBookTicketServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{intflightId=Integer.parseInt(request.getParameter("flightId"));

HttpSessionsession=request.getSession();Useruser=(User)session.getAttribute("user");

if(user!=null){FlightServiceflightService=newFlightService();Flightflight=flightService.getFlightById(flightId);

if(flight!=null&&flight.getAvailableSeats()>0){Orderorder=newOrder();order.setUser(user);order.setFlight(flight);order.setStatus("已預(yù)訂");order.setBookingTime(newDate());

OrderServiceorderService=newOrderService();intorderId=orderService.createOrder(order);

Passengerpassenger=newPassenger();passenger.setOrder(order);passenger.setName(user.getName());passenger.setIdCard(user.getIdCard());passenger.setPhone(user.getPhone());

PassengerServicepassengerService=newPassengerService();passengerService.addPassenger(passenger);

flight.setAvailableSeats(flight.getAvailableSeats()1);flightService.updateFlight(flight);

response.sendRedirect("orderList.jsp");}else{request.setAttribute("error","該航班已無(wú)余票,請(qǐng)選擇其他航班");request.getRequestDispatcher("flightDetails.jsp?flightId="+flightId).forward(request,response);}}else{response.sendRedirect("login.jsp");}}}```

五、測(cè)試調(diào)試5.1測(cè)試計(jì)劃1.測(cè)試目標(biāo):驗(yàn)證機(jī)票預(yù)訂系統(tǒng)的各項(xiàng)功能是否符合需求規(guī)格說(shuō)明書(shū)的要求,檢查系統(tǒng)在不同情況下的穩(wěn)定性、可靠性和性能表現(xiàn),確保系統(tǒng)能夠正常運(yùn)行,滿(mǎn)足用戶(hù)的使用需求。2.測(cè)試范圍:包括用戶(hù)注冊(cè)登錄、航班查詢(xún)、機(jī)票預(yù)訂、訂單管理、支付功能以及后臺(tái)管理等功能模塊。3.測(cè)試方法:采用黑盒測(cè)試方法,通過(guò)設(shè)計(jì)測(cè)試用例來(lái)驗(yàn)證系統(tǒng)功能。同時(shí),進(jìn)行部分白盒測(cè)試,對(duì)關(guān)鍵代碼邏輯進(jìn)行覆蓋測(cè)試,確保代碼的正確性。4.測(cè)試人員安排:由課程設(shè)計(jì)小組的成員共同參與測(cè)試,每人負(fù)責(zé)不同功能模塊的測(cè)試工作,確保全面覆蓋系統(tǒng)功能。

5.2測(cè)試用例1.用戶(hù)注冊(cè)測(cè)試用例|用例編號(hào)|測(cè)試用例描述|輸入數(shù)據(jù)|預(yù)期輸出|||||||1|正常注冊(cè)|用戶(hù)名:testuser,密碼:Test123456,姓名:張三,身份證號(hào)聯(lián)系方式注冊(cè)成功,跳轉(zhuǎn)到登錄頁(yè)面||2|用戶(hù)名已存在|用戶(hù)名:已注冊(cè)的用戶(hù)名,密碼:Test123456,姓名:張三,身份證號(hào)聯(lián)系方式提示用

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論