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

下載本文檔

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

文檔簡介

..軟件工程實驗說明書院系:計算機(jī)科學(xué)與工程學(xué)院專業(yè)__計算機(jī)科學(xué)與技術(shù)學(xué)號:學(xué)生__指導(dǎo)年月日摘要出行一直是人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。在科技發(fā)達(dá)的今天,人們希望足不出戶就可以方便、快捷地查詢到出行所需的信息,預(yù)訂出行所需的車票,為自己的行程進(jìn)行合理的安排。開發(fā)一套火車車次查詢系統(tǒng)既能方便廣大乘客出行,節(jié)省時間,提供便利,省去不必要的麻煩,也能為車站工作人員帶來工作便利,提高工作效率,節(jié)省人力資源。本軟件工程系統(tǒng)利用JSP實現(xiàn)了"火車票查詢訂購系統(tǒng)"功能:火車車次的查詢功能和火車車票的預(yù)訂功能等。本文對系統(tǒng)的需求分析、總體設(shè)計及詳細(xì)設(shè)計進(jìn)行了詳細(xì)地闡述,主要實現(xiàn)了以下功能:用戶注冊、用戶登錄、車次查詢、車票預(yù)訂、車票退訂、車次信息管理、修改密碼、訂票管理等功能。最終實現(xiàn)完成了該系統(tǒng)。關(guān)鍵詞:火車票預(yù)訂;查詢車次;預(yù)訂車票;軟件工程..目錄1需求分析12課題總體設(shè)計32.1模塊描述32.2結(jié)構(gòu)設(shè)計43課題詳細(xì)設(shè)計83.1程序代碼83.2程序調(diào)試144總結(jié)16參考文獻(xiàn)17..1需求分析需求分析是軟件開發(fā)和設(shè)計過程中的一個重要環(huán)節(jié)。本階段,主要是相關(guān)技術(shù)人員對火車票訂購系統(tǒng)的應(yīng)用情況作全面調(diào)查,以確定系統(tǒng)目標(biāo),并對系統(tǒng)所需要的基礎(chǔ)數(shù)據(jù)以及數(shù)據(jù)處理要求進(jìn)行分析,從而確定管理人員的操作模式和用戶的需求。線上預(yù)訂火車票系統(tǒng)是一款功能強(qiáng)大、操作簡便、易維護(hù)的、具有良好人機(jī)交互界面的線上訂票系統(tǒng),它包括用戶管理模塊、系統(tǒng)參數(shù)設(shè)置模塊、票務(wù)信息模塊〔提供票價、列車的實時信息、訂票管理模塊〔提供訂票和退訂功能、實時信息提示模塊〔提供車況、路況、列車晚點等實時信息、數(shù)據(jù)管理模塊〔提供數(shù)據(jù)備份、數(shù)據(jù)操作功能。實現(xiàn)火車票線上預(yù)定的自動化的計算機(jī)系統(tǒng),為旅客提供準(zhǔn)確、精細(xì)、迅速的火車票銷售信息和方便、簡單的訂票功能。線上預(yù)訂火車票系統(tǒng)主要是對于訂票信息的統(tǒng)一管理,滿足了中小型線上訂票網(wǎng)站對于用戶的管理,訂票信息的收集和處理方面的要求。用現(xiàn)代化的方式取代以前的傳統(tǒng)模式,更有利于信息的流通,資源的宏觀管理。具有體積小,代碼簡潔,易維護(hù)、易修改的優(yōu)點。=1\*GB1⒈功能需求網(wǎng)上火車訂購系統(tǒng)是一個融合火車票的訂購、列車路線的添加、管理員管理、列車信息及售票信息查詢?yōu)橐簧淼木C合系統(tǒng)。功能需求從用戶與管理員兩個方面的進(jìn)行分析。=1\*GB2⑴從用戶的角度看,用戶需要訂購自己所需要的火車票,所以本系統(tǒng)的使用者應(yīng)該有注冊賬戶功能、登陸功能、站點、車次查詢功能、訂票、退票功能、查看自己的訂票信息功能同時還有修改自己的注冊信息功能。=2\*GB2⑵從管理員的角度看,管理員可以通過登錄權(quán)限進(jìn)入管理員模式。管理員可以進(jìn)行路線、車次的添加、刪除以及修改并且可以通過系統(tǒng)查看用戶的訂購票務(wù)信息。=2\*GB1⒉性能需求為了保證系統(tǒng)能夠長期、安全、穩(wěn)定、可靠、高效的運行,本系統(tǒng)應(yīng)該滿足以下的性能需求。=1\*GB2⑴準(zhǔn)確性和及時性系統(tǒng)處理的準(zhǔn)確性和及時性是系統(tǒng)的必要性能。系統(tǒng)應(yīng)能及時而且準(zhǔn)確的根據(jù)用戶權(quán)限及所輸入的信息做出響應(yīng)。由于本系統(tǒng)的查詢功能對于整個系統(tǒng)的功能和性能完成舉足輕重。作為系統(tǒng)的很多數(shù)據(jù)來源,車票的數(shù)量和時間又影響用戶的決策活動,其準(zhǔn)確性和及時性很大程度上決定了系統(tǒng)的成敗。在系統(tǒng)開發(fā)過程中,必須采用一定的方法保證系統(tǒng)的準(zhǔn)確性和及時性。=2\*GB2⑵易用性本系統(tǒng)是直接面對用戶的,而用戶往往對計算機(jī)并不是很熟悉。這就是要求系統(tǒng)能夠提供良好的用戶接口,易用的人機(jī)交互界面。要實現(xiàn)這一點,就是要求系統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語和中文信息的界面,從而保證系統(tǒng)的易用性。=3\*GB2⑶安全性網(wǎng)上訂票系統(tǒng)中涉及到相當(dāng)重要的信息數(shù)據(jù),系統(tǒng)要保證用戶的權(quán)限,對于車次等信息用戶只有享有查詢服務(wù),不得更改;系統(tǒng)還要提供方便的手段供系統(tǒng)維護(hù)人員進(jìn)行數(shù)據(jù)備份、日常安全管理、以及系統(tǒng)意外崩潰時數(shù)據(jù)的恢復(fù)等工作。同時系統(tǒng)還要保證對數(shù)據(jù)庫進(jìn)行及時更新,保證數(shù)據(jù)的一致性。3.可行性研究可行性分析的主要任務(wù)是了解用戶的要求及現(xiàn)實環(huán)境,從技術(shù)、經(jīng)濟(jì)和管理等三方面研究?!?技術(shù)可行性技術(shù)可行性是根據(jù)現(xiàn)有的技術(shù)條件,能否達(dá)到所提出的要求當(dāng)前的軟硬件技術(shù)能否滿足對系統(tǒng)提出的要求?,F(xiàn)在地鐵已經(jīng)實行了自動驗票,火車票也已經(jīng)有人工售票機(jī)了,而且現(xiàn)在動畫應(yīng)用也多不勝數(shù),所以將他們?nèi)吆显谝黄?是可行的?!?經(jīng)濟(jì)可行性經(jīng)濟(jì)可行性主要是對項目預(yù)估費用支出和取得的收益進(jìn)行評價。火車票相對于其他運輸工具是比較便宜的,所以現(xiàn)在采用火車為交通工具的人群越來越多。對于此產(chǎn)生的經(jīng)濟(jì)效益是不可估量的,還為社會做出了巨大貢獻(xiàn)。所以系統(tǒng)的更新是勢在必得的?!?管理可行性管理可行性是指管理方面的條件和管理人員對開發(fā)應(yīng)用項目的態(tài)度。2課題總體設(shè)計2.1模塊描述本系統(tǒng)是面向鐵道部門的管理人員和用戶,主要方便管理人員對火車票管理操作以及用戶對火車票的訂購等操作。系統(tǒng)主要分為管理員端和用戶端兩個模塊,管理人員和用戶可以在自己的權(quán)限范圍內(nèi)進(jìn)行不同的功能操作。其主要功能有:管理人員對火車和車票信息的添加、查詢、修改、刪除及修改密碼等;用戶對車票的查詢、訂購,查看個人信息、修改密碼及退票等。系統(tǒng)總體功能結(jié)構(gòu)圖如圖2.1所示。注冊信息注冊信息修改密碼查詢火車信息訂購車票查詢訂票退還車票查看通知查看注冊信息修改密碼查詢火車信息添加火車信息添加路線信息刪除火車信息修改火車信息更改提示火車票訂購身份鑒定管理員用戶圖2.1系統(tǒng)總功能結(jié)構(gòu)圖1管理員模塊功能本模塊功能包括:添加、修改、刪除和查詢火車、線路和火車票信息以及修改個人密碼等?!?添加火車、線路和火車票信息:主要是管理人員對火車自身信息、線路上存在的火車信息以及相應(yīng)的火車票信息的添加?!?修改火車、線路和火車票信息:主要是管理人員對由于某些原因?qū)е鲁霈F(xiàn)不合法火車信息和車票信息的更改、修訂?!?刪除火車、線路和火車票信息:主要是管理人員對一些不存在現(xiàn)實價值意義的火車和車票信息的刪除。<4>查詢火車、線路和火車票信息:主要是管理人員對火車、線路和車票信息的查詢。<5>修改密碼:管理人員修改自己的登錄密碼。2用戶模塊功能本模塊功能包括:用戶注冊信息,修改個人密碼,查詢個人信息,查詢火車和線路信息,訂購車票和退換車票以及查看通知等。<1>注冊信息:主要是用戶在使用此系統(tǒng)之前向系統(tǒng)數(shù)據(jù)庫中注冊個人信息,便于系統(tǒng)以后的管理和保障系統(tǒng)的安全。<2>修改個人密碼:主要是為了保障用戶信息安全,用戶可以對自己密碼進(jìn)行替換和重新設(shè)置。<3>查詢個人信息:主要是用戶對自己的信息查詢。<4>查詢火車和線路信息:主要是用戶根據(jù)自己所想要訂購的車票,查詢其相應(yīng)的火車及其線路的相關(guān)信息。<5>訂購車票:用戶訂購自己所需要的車票。<6>退換撤銷:主要是用戶在特定的時間和權(quán)限范圍內(nèi)對自己購買的車票給予退還和更換,從而買到自己真正尋求的車票。<7>查詢通知:主要是用戶查詢鐵道部門的最新通知,以便為購買車票作相應(yīng)的準(zhǔn)備。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è)計如下所示的數(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課題詳細(xì)設(shè)計3.1程序代碼packageservlet;importjava.io.*;importjava.sql.*;importjavax.servlet.*;importjavax.servlet..*;importbean.user;publicclassusersvltextendsServlet{ publicusersvlt<>{ super<>; } publicvoiddestroy<>{ super.destroy<>;//Justputs"destroy"stringinlog //Putyourcodehere } booleanflag; publicvoiddoGet<ServletRequestreq,ServletResponseres> throwsServletException,IOException{ req.setCharacterEncoding<"UTF-8">; Stringuserid=req.getParameter<"userid">; intsuccess=0; Stringaction=req.getParameter<"action">; useru=null; Stringmessage=""; /*if<"update".equalsIgnoreCase<action>>{ flag=true; u=doUpdate<req,res,userid>; if<flag>sendBean<req,res,u,"/userinfo.jsp">; }*/ if<"delete".equalsIgnoreCase<action>>{ try{ success=doDelete<userid>; } catch<SQLExceptione>{} if<success!=1>{ doError<req,res,"usersvlt:Deleteunsuccessful.Rowsaffected:"+success>; }else{ res.sendRedirect<"userinfo.jsp">; } } } /*publicuserdoNew<ServletRequestreq,ServletResponseres> throwsServletException,IOException{ userstu=newu<>; Stringuserid=req.getParameter<"useid">; Stringname=req.getParameter<"name">; Stringpassword=req.getParameter<"password">; Stringdep=req.getParameter<"dep">; Stringsex=req.getParameter<"sex">; Stringjiguan=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<password>; stu.setDep<dep>; stu.setSex<sex>; stu.setJiguan<jiguan>; stu.addStudent<>;} returnstu; } publicuserdoUpdate<ServletRequestreq,ServletResponseres,Stringuserid> throwsServletException,IOException{ useru=newuser<>; Stringusername=newString<req.getParameter<"username">.getBytes<"gbk">>; Stringemail=req.getParameter<"email">; Stringid=req.getParameter<"id">; Stringsex=req.getParameter<"sex">; Stringphone=req.getParameter<"phone">; Stringaddress=req.getParameter<"address">; if<isTrue<req,res,username,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<>;} returnu; }*/ publicintdoDelete<Stringuserid>throwsSQLException{ intnum=0; useru=newuser<>; num=u.deleteUser<userid>; returnnum; } publicvoidsendBean<ServletRequestreq,ServletResponseres, useruu,Stringtarget> throwsServletException,IOException{ req.setAttribute<"user",uu>; RequestDispatcherrd=getServletContext<>.getRequestDispatcher<target>; rd.forward<req,res>; } publicvoiddoError<ServletRequestreq, ServletResponseres, Stringstr> throwsServletException,IOException{ flag=false; req.setAttribute<"problem",str>; RequestDispatcherrd=getServletContext<>.getRequestDispatcher<"/errorpage.jsp">; rd.forward<req,res>; } publicbooleanhasLogin<ServletRequestreq,ServletResponseres,Stringuserid> throwsServletException,IOException{ booleanf=true; Stringmessage="對不起,該用戶已經(jīng)被注冊過了!"; useru=newuser<>; f=u.hasLogin<userid>; if<f==false>{ doError<req,res,message>; } returnf; } publicbooleanisTrue<ServletRequestreq,ServletResponseres, Stringname,Stringemail,Stringid,Stringphone,Stringaddress> throwsServletException,IOException{ booleanf=true; Stringmessage=""; if<name==null||name.equals<"">>{ f=false; message="姓名不能為空,請重新填寫!"; if<flag>doError<req,res,message>; } if<email==null||email.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="不能為空,請重新填寫!"; if<flag>doError<req,res,message>; } if<address==null||address.equals<"">>{ f=false; message="不能為空,請重新填寫!"; if<flag>doError<req,res,message>; } returnf; } publicvoiddoPost<ServletRequestreq,ServletResponseres> throwsServletException,IOException{ doGet<req,res>; }}packagebean;importjava.io.*;importjava.sql.*;publicclasssqlBean{ publicConnectionconn=null; publicResultSetrs=null; privateStringDatabaseDriver="com.mysql.jdbc.Driver"; //DataSource數(shù)據(jù)源名稱DSN privateStringDatabaseConnStr="jdbc:mysql://localhost:3306/ordering?useUnicode=true&characterEncoding=utf-8"+",root,sa"; //定義方法 /*setXxx用于設(shè)置屬??????;getXxx用于得到屬??????*/ publicvoidsetDatabaseDriver<StringDriver>{ this.DatabaseDriver=Driver; } publicStringgetDatabaseDriver<>{ return<this.DatabaseDriver>; } publicvoidsetDatabaseConnStr<StringConnStr>{ this.DatabaseConnStr=ConnStr; } publicStringgetDatabaseConnStr<>{ return<this.DatabaseConnStr>; } publicsqlBean<>{/////構(gòu)???函?? try{ Class.forName<DatabaseDriver>; } catch<java.lang.ClassNotFoundExceptione>{ System.err.println<"加載驅(qū)動器有錯誤:"+e.getMessage<>>; System.out.print<"執(zhí)行插入有錯??:"+e.getMessage<>>;//輸出到客戶端 } } publicintexecuteInsert<Stringsql>{ intnum=0; try{ conn=DriverManager.getConnection<"jdbc:mysql://localhost:3306/ordering?useUnicode=true&characterEncoding=utf-8","root","sa">; Statementstmt=conn.createStatement<>; num=stmt.executeUpdate<sql>; } catch<SQLExceptionex>{ System.err.println<"執(zhí)行插入有錯??:"+ex.getMessage<>>; System.out.print<"執(zhí)行插入有錯??:"+ex.getMessage<>>;//輸出到客戶端 } CloseDataBase<>; returnnum; } //displaydata publicResultSetexecuteQuery<Stringsql>{ rs=null; try{ conn=DriverManager.getConnection<"jdbc:mysql://localhost:3306/ordering?useUnicode=true&characterEncoding=utf-8", "root","sa">; Statementstmt=conn.createStatement<>; rs=stmt.executeQuery<sql>; } catch<SQLExceptionex>{ System.err.println<"執(zhí)行查詢有錯??:"+ex.getMessage<>>; System.out.print<"執(zhí)行查詢有錯??:"+ex.getMessage<>>;//輸出到客戶端 }

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論