火車票預(yù)訂軟件工程課程設(shè)計(共20頁)_第1頁
火車票預(yù)訂軟件工程課程設(shè)計(共20頁)_第2頁
火車票預(yù)訂軟件工程課程設(shè)計(共20頁)_第3頁
火車票預(yù)訂軟件工程課程設(shè)計(共20頁)_第4頁
火車票預(yù)訂軟件工程課程設(shè)計(共20頁)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上軟件工程實驗說明書院 系: 計算機科學(xué)與工程學(xué)院 專業(yè)班級: 計算機科學(xué)與技術(shù) 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 年 月 日摘 要出行一直是人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。在科技發(fā)達的今天,人們希望足不出戶就可以方便、快捷地查詢到出行所需的信息,預(yù)訂出行所需的車票,為自己的行程進行合理的安排。開發(fā)一套火車車次查詢系統(tǒng)既能方便廣大乘客出行,節(jié)省時間,提供便利,省去不必要的麻煩,也能為車站工作人員帶來工作便利,提高工作效率,節(jié)省人力資源。本軟件工程系統(tǒng)利用JSP實現(xiàn)了“火車票查詢訂購系統(tǒng)”功能:火車車次的查詢功能和火車車票的預(yù)訂功能等。本文對系統(tǒng)的需求分析、總體設(shè)計及詳細

2、設(shè)計進行了詳細地闡述,主要實現(xiàn)了以下功能:用戶注冊、用戶登錄、車次查詢、車票預(yù)訂、車票退訂、車次信息管理、修改密碼、訂票管理等功能。最終實現(xiàn)完成了該系統(tǒng)。關(guān)鍵詞:火車票預(yù)訂;查詢車次;預(yù)訂車票;軟件工程專心-專注-專業(yè)目 錄1 需求分析需求分析是軟件開發(fā)和設(shè)計過程中的一個重要環(huán)節(jié)。本階段,主要是相關(guān)技術(shù)人員對火車票訂購系統(tǒng)的應(yīng)用情況作全面調(diào)查,以確定系統(tǒng)目標,并對系統(tǒng)所需要的基礎(chǔ)數(shù)據(jù)以及數(shù)據(jù)處理要求進行分析,從而確定管理人員的操作模式和用戶的需求。線上預(yù)訂火車票系統(tǒng)是一款功能強大、操作簡便、易維護的、具有良好人機交互界面的線上訂票系統(tǒng),它包括用戶管理模塊、系統(tǒng)參數(shù)設(shè)置模塊、票務(wù)信息模塊(提供票

3、價、列車的實時信息)、訂票管理模塊(提供訂票和退訂功能)、實時信息提示模塊(提供車況、路況、列車晚點等實時信息)、數(shù)據(jù)管理模塊(提供數(shù)據(jù)備份、數(shù)據(jù)操作功能)。實現(xiàn)火車票線上預(yù)定的自動化的計算機系統(tǒng),為旅客提供準確、精細、迅速的火車票銷售信息和方便、簡單的訂票功能。 線上預(yù)訂火車票系統(tǒng)主要是對于訂票信息的統(tǒng)一管理,滿足了中小型線上訂票網(wǎng)站對于用戶的管理,訂票信息的收集和處理方面的要求。用現(xiàn)代化的方式取代以前的傳統(tǒng)模式,更有利于信息的流通,資源的宏觀管理。具有體積小,代碼簡潔,易維護、易修改 的優(yōu)點。功能需求 網(wǎng)上火車訂購系統(tǒng)是一個融合火車票的訂購、列車路線的添加、管理員管理、列車信息及售票信息查

4、詢?yōu)橐簧淼木C合系統(tǒng)。功能需求從用戶與管理員兩個方面的進行分析。從用戶的角度看,用戶需要訂購自己所需要的火車票,所以本系統(tǒng)的使用者應(yīng)該有注冊賬戶功能、登陸功能、站點、車次查詢功能、訂票、退票功能、查看自己的訂票信息功能同時還有修改自己的注冊信息功能。從管理員的角度看,管理員可以通過登錄權(quán)限進入管理員模式。管理員可以進行路線、車次的添加、刪除以及修改并且可以通過系統(tǒng)查看用戶的訂購票務(wù)信息。性能需求為了保證系統(tǒng)能夠長期、安全、穩(wěn)定、可靠、高效的運行,本系統(tǒng)應(yīng)該滿足以下的性能需求。準確性和及時性系統(tǒng)處理的準確性和及時性是系統(tǒng)的必要性能。系統(tǒng)應(yīng)能及時而且準確的根據(jù)用戶權(quán)限及所輸入的信息做出響應(yīng)。由于本系

5、統(tǒng)的查詢功能對于整個系統(tǒng)的功能和性能完成舉足輕重。作為系統(tǒng)的很多數(shù)據(jù)來源,車票的數(shù)量和時間又影響用戶的決策活動,其準確性和及時性很大程度上決定了系統(tǒng)的成敗。在系統(tǒng)開發(fā)過程中,必須采用一定的方法保證系統(tǒng)的準確性和及時性。易用性本系統(tǒng)是直接面對用戶的,而用戶往往對計算機并不是很熟悉。這就是要求系統(tǒng)能夠提供良好的用戶接口,易用的人機交互界面。要實現(xiàn)這一點,就是要求系統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語和中文信息的界面,從而保證系統(tǒng)的易用性。安全性網(wǎng)上訂票系統(tǒng)中涉及到相當(dāng)重要的信息數(shù)據(jù),系統(tǒng)要保證用戶的權(quán)限,對于車次等信息用戶只有享有查詢服務(wù),不得更改;系統(tǒng)還要提供方便的手段供系統(tǒng)維護人員進行數(shù)據(jù)備份、日常安

6、全管理、以及系統(tǒng)意外崩潰時數(shù)據(jù)的恢復(fù)等工作。同時系統(tǒng)還要保證對數(shù)據(jù)庫進行及時更新,保證數(shù)據(jù)的一致性。3.可行性研究可行性分析的主要任務(wù)是了解用戶的要求及現(xiàn)實環(huán)境,從技術(shù)、經(jīng)濟和管理等三方面研究。(1)技術(shù)可行性技術(shù)可行性是根據(jù)現(xiàn)有的技術(shù)條件,能否達到所提出的要求當(dāng)前的軟硬件技術(shù)能否滿足對系統(tǒng)提出的要求?,F(xiàn)在地鐵已經(jīng)實行了自動驗票,火車票也已經(jīng)有人工售票機了,而且現(xiàn)在動畫應(yīng)用也多不勝數(shù),所以將他們?nèi)吆显谝黄?,是可行的。?) 經(jīng)濟可行性經(jīng)濟可行性主要是對項目預(yù)估費用支出和取得的收益進行評價?;疖嚻毕鄬τ谄渌\輸工具是比較便宜的,所以現(xiàn)在采用火車為交通工具的人群越來越多。對于此產(chǎn)生的經(jīng)濟效益是不

7、可估量的,還為社會做出了巨大貢獻。所以系統(tǒng)的更新是勢在必得的。(3)管理可行性管理可行性是指管理方面的條件和管理人員對開發(fā)應(yīng)用項目的態(tài)度。2 課題總體設(shè)計2.1 模塊描述本系統(tǒng)是面向鐵道部門的管理人員和用戶,主要方便管理人員對火車票管理操作以及用戶對火車票的訂購等操作。系統(tǒng)主要分為管理員端和用戶端兩個模塊,管理人員和用戶可以在自己的權(quán)限范圍內(nèi)進行不同的功能操作。其主要功能有:管理人員對火車和車票信息的添加、查詢、修改、刪除及修改密碼等;用戶對車票的查詢、訂購,查看個人信息、修改密碼及退票等。系統(tǒng)總體功能結(jié)構(gòu)圖如圖2.1所示。注冊信息修改密碼查詢火車信息訂購車票查詢訂票退還車票查看通知查看注冊信

8、息修改密碼查詢火車信息添加火車信息添加路線信息刪除火車信息修改火車信息更改提示火車票訂購身份鑒定管理員用 戶圖2.1 系統(tǒng)總功能結(jié)構(gòu)圖1管理員模塊功能本模塊功能包括:添加、修改、刪除和查詢火車、線路和火車票信息以及修改個人密碼等。(1)添加火車、線路和火車票信息:主要是管理人員對火車自身信息、線路上存在的火車信息以及相應(yīng)的火車票信息的添加。(2)修改火車、線路和火車票信息:主要是管理人員對由于某些原因?qū)е鲁霈F(xiàn)不合法火車信息和車票信息的更改、修訂。(3)刪除火車、線路和火車票信息:主要是管理人員對一些不存在現(xiàn)實價值意義的火車和車票信息的刪除。(4)查詢火車、線路和火車票信息:主要是管理人員對火車

9、、線路和車票信息的查詢。(5)修改密碼:管理人員修改自己的登錄密碼。2用戶模塊功能本模塊功能包括:用戶注冊信息,修改個人密碼,查詢個人信息,查詢火車和線路信息,訂購車票和退換車票以及查看通知等。(1)注冊信息:主要是用戶在使用此系統(tǒng)之前向系統(tǒng)數(shù)據(jù)庫中注冊個人信息,便于系統(tǒng)以后的管理和保障系統(tǒng)的安全。(2)修改個人密碼:主要是為了保障用戶信息安全,用戶可以對自己密碼進行替換和重新設(shè)置。(3)查詢個人信息:主要是用戶對自己的信息查詢。(4)查詢火車和線路信息:主要是用戶根據(jù)自己所想要訂購的車票,查詢其相應(yīng)的火車及其線路的相關(guān)信息。(5)訂購車票:用戶訂購自己所需要的車票。(6)退換撤銷:主要是用戶

10、在特定的時間和權(quán)限范圍內(nèi)對自己購買的車票給予退還和更換,從而買到自己真正尋求的車票。(7)查詢通知:主要是用戶查詢鐵道部門的最新通知,以便為購買車票作相應(yīng)的準備。3數(shù)據(jù)需求輸入信息信息處理信息輸出輸入車次搜索系統(tǒng)數(shù)據(jù)庫符合用戶需求的車次以及相關(guān)信息用戶輸入個人信息以及需訂購的車票信息更新系統(tǒng)中的訂票信息。將新的信息存入系統(tǒng)數(shù)據(jù)庫訂票用戶輸入身份證號或交易的訂單號檢索系統(tǒng)數(shù)據(jù)庫符合用戶需求的訂票信息用戶輸入自己的身份證號碼檢索系統(tǒng)數(shù)據(jù)庫以得到訂票記錄,刪除用戶請求的訂票記錄,已更新系統(tǒng)數(shù)據(jù)庫退票2.2 結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)設(shè)計針對火車站網(wǎng)上訂票系統(tǒng),通過對網(wǎng)上訂票工作的過程、內(nèi)容以及數(shù)據(jù)流程分析,設(shè)

11、計如下所示的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):車次信息:車號、出發(fā)地、目的地、發(fā)車日期、開出時刻、剩余座位數(shù)票價、座位類型。訂票記錄:訂單號、身份證號、車號、訂購日期、訂購票數(shù)、總價。用戶信息:用戶名、身份證號、性別、電話圖2.2車次信息(E-R圖)圖2.3用戶信息(E-R圖)圖2.4訂單信息(E-R圖)圖2.5訂票方式(E-R圖)圖2.6總體聯(lián)系圖( E-R圖) 圖2.7 “火車票預(yù)售系統(tǒng)”關(guān)聯(lián)圖3 課題詳細設(shè)計3.1 程序代碼package servlet;import java.io.*;import java.sql.*;import javax.servlet.*;import javax.serv

12、let.http.*;import bean.user;public class usersvlt extends HttpServlet public usersvlt() super();public void destroy() super.destroy(); / Just puts "destroy" string in log/ Put your code hereboolean flag;public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletExcept

13、ion, IOException req.setCharacterEncoding("UTF-8"); String userid =req.getParameter("userid"); int success = 0; String action = req.getParameter("action"); user u = null; String message="" /* if ("update".equalsIgnoreCase(action) flag=true; u = doUpd

14、ate(req,res, userid); if(flag)sendBean(req,res,u,"/userinfo.jsp"); */ if ("delete".equalsIgnoreCase(action) try success = doDelete(userid); catch(SQLException e) if (success != 1) doError(req, res, "usersvlt: Delete unsuccessful. Rows affected: " + success); else res.se

15、ndRedirect("userinfo.jsp"); /* public user doNew(HttpServletRequest req,HttpServletResponse res ) throws ServletException,IOException user stu= new u(); String userid=req.getParameter("useid"); String name=req.getParameter("name"); String password= req.getParameter(&quo

16、t;password"); String dep=req.getParameter("dep"); String sex = req.getParameter("sex"); String jiguan = req.getParameter("jiguan"); if(isTrue(req,res,stu_id1,name,password)&& hasLogin(req,res,stu_id1) stu.setId(stu_id1); stu.setName(name); stu.setPassword(p

17、assword); stu.setDep(dep); stu.setSex(sex); stu.setJiguan(jiguan); stu.addStudent(); return stu; public user doUpdate(HttpServletRequest req,HttpServletResponse res ,String userid) throws ServletException,IOException user u = new user(); String username=new String(req.getParameter("username&quo

18、t;).getBytes("gbk"); String email = req.getParameter("email"); String id=req.getParameter("id"); String sex = req.getParameter("sex"); String phone=req.getParameter("phone"); String address=req.getParameter("address"); if(isTrue(req,res,use

19、rname,email,id,phone,address) u.setuserId(userid); u.setuserName(username); u.setEmail(email); u.setAddress(address); u.setPhone(phone); u.setId(id); u.setSex(sex); u.updateUser(); return u; */ public int doDelete(String userid) throws SQLException int num=0; user u=new user(); num=u.deleteUser(user

20、id); return num; public void sendBean(HttpServletRequest req, HttpServletResponse res, user uu, String target) throws ServletException, IOException req.setAttribute("user", uu); RequestDispatcher rd = getServletContext().getRequestDispatcher(target); rd.forward(req, res); public void doErr

21、or(HttpServletRequest req, HttpServletResponse res, String str) throws ServletException, IOException flag=false; req.setAttribute("problem", str); RequestDispatcher rd = getServletContext().getRequestDispatcher("/errorpage.jsp"); rd.forward(req, res); public boolean hasLogin(Http

22、ServletRequest req, HttpServletResponse res,String userid) throws ServletException, IOException boolean f=true; String message="對不起,該用戶已經(jīng)被注冊過了!" user u= new user(); f= u.hasLogin(userid); if(f=false) doError(req,res,message); return f; public boolean isTrue(HttpServletRequest req, HttpServ

23、letResponse res, String name,String email,String id,String phone,String address) throws ServletException, IOException boolean f=true; String message ="" if(name=null | name.equals("") f=false; message="姓名不能為空,請重新填寫!" if(flag)doError(req,res,message); if(email=null | ema

24、il.equals("") f=false; message="電子郵箱不能為空,請重新填寫!" if(flag) doError(req,res,message); if(id=null | id.equals("") f=false; message="身份證號不能為空,請重新填寫!" if(flag) doError(req,res,message); if(phone=null | phone.equals("") f=false; message="電話不能為空,請重新填寫!

25、" if(flag) doError(req,res,message); if(address=null | address.equals("") f=false; message="聯(lián)系地址不能為空,請重新填寫!" if(flag) doError(req,res,message); return f; public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException doGet(req, res);

26、 package bean;import java.io.*; import java.sql.*; public class sqlBean public Connection conn=null; public ResultSet rs=null; private String DatabaseDriver="com.mysql.jdbc.Driver" /DataSource 數(shù)據(jù)源名稱DSN private String DatabaseConnStr="jdbc:mysql:/localhost:3306/ordering?useUnicode=true

27、&characterEncoding=utf-8"+",root,sa"/定義方法 /*setXxx用于設(shè)置屬?;getXxx用于得到屬?*/ public void setDatabaseDriver(String Driver) this.DatabaseDriver=Driver; public String getDatabaseDriver() return (this.DatabaseDriver); public void setDatabaseConnStr(String ConnStr) this.DatabaseConnStr=Conn

28、Str; public String getDatabaseConnStr() return (this.DatabaseConnStr); public sqlBean()/構(gòu)?函? try Class.forName(DatabaseDriver); catch(java.lang.ClassNotFoundException e) System.err.println("加載驅(qū)動器有錯誤:"+e.getMessage( ); System.out.print("執(zhí)行插入有錯?:"+e.getMessage();/輸出到客戶端 public int

29、executeInsert(String sql) int num=0;try conn = DriverManager.getConnection("jdbc:mysql:/localhost:3306/ordering?useUnicode=true&characterEncoding=utf-8","root","sa");Statement stmt=conn.createStatement( ); num=stmt.executeUpdate(sql); catch(SQLException ex) System.e

30、rr.println("執(zhí)行插入有錯?:"+ex.getMessage() ); System.out.print("執(zhí)行插入有錯?:"+ex.getMessage();/輸出到客戶端 CloseDataBase();return num; / display data public ResultSet executeQuery(String sql) rs=null; try conn = DriverManager.getConnection("jdbc:mysql:/localhost:3306/ordering?useUnicode=t

31、rue&characterEncoding=utf-8", "root","sa");Statement stmt=conn.createStatement( ); rs=stmt.executeQuery(sql); catch(SQLException ex) System.err.println("執(zhí)行查詢有錯?:"+ex.getMessage() ); System.out.print("執(zhí)行查詢有錯?:"+ex.getMessage(); /輸出到客戶端 return rs; / delete data public int executeDelete(String sql) int num=0;try conn = DriverManager.getConne

溫馨提示

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

評論

0/150

提交評論