版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
河南工業(yè)職業(yè)技術學院畢業(yè)論文(設計) 河南工業(yè)職業(yè)技術學院軟件學院畢業(yè)設計說明書題目:城市公交查詢系統(tǒng)編號
河南工業(yè)職業(yè)技術學院軟件學院畢業(yè)設計任務書
課題名稱
城市公交查詢系統(tǒng)
負責人簽字:年月日
內容和要求:1.本系統(tǒng)要求實現(xiàn)以下功能:(1)實現(xiàn)預定功能。(2)實現(xiàn)公交管理。(3)實現(xiàn)公交資料管理。(4)實現(xiàn)多種形式的查詢、統(tǒng)計管理工作。2.操作界面友好,方便用戶使用,盡可能使用戶在使用時簡便、快捷,隨時得到操作的提示,不至于使用戶出現(xiàn)誤操作導致數(shù)據(jù)被破壞或使系統(tǒng)癱瘓。3.考慮系統(tǒng)的安全性和可維護性,要設置有不同權限的用戶。不同權限的用戶只能在不同的操作環(huán)境中進行操作,以防出現(xiàn)不良后果。4.此設計應提交的資料有:(1)管理系統(tǒng)軟件;(2)答辯使用的幻燈片;(3)畢業(yè)設計說明書。包括畢業(yè)設計任務書、前言、目錄、摘要(300-500字)、正文(含需求分析、總體設計、數(shù)據(jù)庫設計、模塊設計、軟件測試等)、程序代碼、結束語、參考文獻等,共10000字。指導教師(簽字):年月日
摘要我國城市公交乘客信息系統(tǒng)的發(fā)展處于一個較落后的水平,廣大乘客可以獲得信息的方式很少,為了解決這種問題,加快發(fā)展城市公交信息化,設計一個城市公交查詢系統(tǒng)是具有一定實際應用意義的。在此背景下,我開發(fā)了這個應用程序城市公交查詢系統(tǒng)。本次設計,首先我考慮了公交運營的實際情況和不同公交乘客的實際要求,分析了此系統(tǒng)應該具有的功能;其次對系統(tǒng)的主要功能模塊進行了詳細地描述,其中主要包括二個模塊查詢模塊(包括按線路查詢、按站點查詢和按兩站點查詢)和管理更新模塊(包括公交站點管理和公交線路管理),最后結合系統(tǒng)開發(fā)階段和調試階段發(fā)現(xiàn)的問題,提出了系統(tǒng)需要完善的地方,總結了開發(fā)此系統(tǒng)所取得的經驗。關鍵詞:公交,ASP.NET,查詢,B/S結構,數(shù)據(jù)庫
AbstractThedevelopmentofthebuspassengerinformationsystemisinalevelthatfallbehindofthecityinourcountry.Thelargepartofpassengerscanacquirefewwaysoftheinformation.Soit'spracticalforustodevelopcity'sbuspassengerinformationsysteminordertoresolvingthisproblem.Forthispurpose,Idesignthisapplicationprocedurebuscircuitsearchsystem.Fromthisdesign,First,Ianalyzedthepresentconditionofthebuspassengerinformationanddifferentpeople'sneeds,inordertoknowwhatfunctionsthisequipmentshouldcontain.Second,Idescribethesystem’smainfunctionmodulesindetail,thesefunctionscanbedividedintotwopartssearchsystem(Accordingtothelinesearch、stationsearchandbetweentwostationssearch)andmanagementupdatesystem(BusstationmanagementandBuslinemanagement).Atlastaccordingtotheproblemsthathappenedintheperiodofusing,Isummedupsomewaystoimprovethesystem,andsomeexperiencesthatIcanhavefromthisresearch.Keywords:Bus,ASP.NET,Search,StructureofB/S,Database畢業(yè)設計河南工業(yè)職業(yè)技術學院畢業(yè)論文(設計) 實體屬性關系圖車次信息實體屬性關系圖車次信息車輛序號車次號經過站點信息夏季發(fā)車時間夏季結束時間票價冬季結束時間冬季發(fā)車時間管理員信息管理員密碼備注管理員帳號管理員姓名4.聯(lián)系定義E-R模型的“聯(lián)系”用于刻畫實體之間的關聯(lián)。一種完整的方式是對局部結構中任意兩個實體類型,依據(jù)需求分析的結果,考察局部結構中任意兩個實體類型之間是否存在聯(lián)系。若有聯(lián)系,進一步確定是1:N,M:N,還是1:1等。還要考察一個實體類型內部是否存在聯(lián)系,兩個實體類型之間是否存在聯(lián)系,多個實體類型之間是否存在聯(lián)系,等等。5、設計全局E-R模式所有局部E-R模式都設計好了后,接下來就是把它們綜合成單一的全局概念結構。全局概念結構不僅要支持所有局部E-R模式,而且必須合理地表示一個完整、一致的數(shù)據(jù)庫概念結構。1)確定公共實體類型為了給多個局部E-R模式的合并提供開始合并的基礎,首先要確定各局部結構中的公共實體類型。在這一步中我們僅根據(jù)實體類型名和鍵枕認定公共實體類型。一般把同名實體類型作為公共實體類型的一類候選,把具有相同鍵的實體類型作為公共實體類型的另一類候選。2)局部E-R模式的合并合并的原則是:首先進行兩兩合并;先和合并那些現(xiàn)實世界中有聯(lián)系的局部結構;合并從公共實體類型開始,最后再加入獨立的局部結構。3)消除沖突沖突分為三類:屬性沖突、結構沖突、命名沖突。設計全局ER模式的目的不在于把若干局部E-R模式形式上合并為一個ER模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。4)全局E-R模式的優(yōu)化在得到全局E-R模式后,為了提高數(shù)據(jù)庫系統(tǒng)的效率,還應進一步依據(jù)處理需求對E-R模式進行優(yōu)化。一個好的全局E-R模式,除能準確、全面地反映用戶功能需求外,還應滿足下列條件:實體類型的個數(shù)要盡可能的少;實體類型所含屬性個數(shù)盡可能少;實體類型間聯(lián)系無冗余。本系統(tǒng)的E-R模型如圖3.3.1-2所示線路車次線路車次票價站點時間1:n1:11:11:1圖3.3.1-2ER模型圖4.1.2表設計考慮系統(tǒng)的實際需要,系統(tǒng)需要公交信息表,管理員表。1.公交信息表(Bus)公交信息表存儲公交線路的詳細信息,字段說明如表3-1所示Bus表的字段說明編號字段名稱字段類型字段說明1BusIDnvarchar車次號主鍵2Detailntext車次經過站點3A_STimentext夏季發(fā)車時間4W_STimentext冬季發(fā)車時間5A_ETimentext夏季結束時間6W_ETimentext冬季結束時間7T_Valueint票價8Sortint車序號CREATETABLEbus(BusIDnvarcharPrimarykey,DetailntextNotNull,A_STimentext,W_STimentext,A_ETimentext,W_ETimentext,T_ValueintNotNull,SortintNotNull) 其中Detail存放車次的站點信息,其格式為××××->×××->×××。2.管理員表管理員表存儲管理員的詳細信息,字段說明如表3-1所示編號字段名稱字段類型字段說明1ManagerIDnvrchar管理員編號2TrueNamenvrchar管理員姓名3Passwordnvrchar密碼4Commentnvrchar備注CREATETABLEmanager(ManagerIDnvrcharPrimarykey,TrueNamenvrcharNotNull,PasswordnvrcharNotNull,Commentnvrchar)4.2系統(tǒng)部分模塊設計無錫公交線路查詢系統(tǒng)總體上可分為普通查詢模塊(包括清晰站點查詢、清晰線路查詢、清晰換乘查詢)、高級查詢模塊(包括模糊車次查詢、模糊站點查詢、模糊線路查詢、模糊換乘查詢),后臺管理模塊(包括刪除線路、修改線路、添加線路等功能)。4.2.1普通查詢模塊1.線路查詢首先用戶準備查詢公交線路,在下拉菜單中選擇選擇公交車次號,啟動車次查詢,系統(tǒng)從數(shù)據(jù)庫中讀取公交車次信息,在新窗口中顯示車次經過的站點等詳細信息。選擇查詢的站點用戶準備查詢公交站點信息選擇查詢的站點用戶準備查詢公交站點信息啟動站點查詢顯示站點信息查詢結果從數(shù)據(jù)庫中讀取站點信息站點查詢流程圖選擇公交車次號用戶準備查詢公交線路信息啟動車次查詢顯示車次信息查詢結果從數(shù)據(jù)庫中讀取公交車次信息線路查詢流程圖 2.站點查詢首先用戶準備查詢站點信息,在下拉菜單中選擇選擇要查詢的站點,啟動站點查詢,系統(tǒng)從數(shù)據(jù)庫中讀取公交站點信息,在新窗口中顯示經過該站點的公交線路的詳細信息。3.換乘查詢首先用戶準備查詢換乘信息,在下拉菜單中選擇選擇起始站點和到達站點,啟動換乘查詢,系統(tǒng)首先判斷是否有直達車,如果有直達車直接給出換乘信息,如沒有直達車則在數(shù)據(jù)庫中查找換乘線路和中轉站,再給出換乘信息,在新窗口中顯示顯示換乘信息查詢結果。選擇起始站點選擇起始站點用戶準備查詢線路換乘信息選擇到達站點顯示換乘信息查詢結果在數(shù)據(jù)庫中查找換乘線路和中轉站啟動換乘查詢判斷是否有直達車生成換乘信息換乘查詢流程圖YN4.2.1高級查詢模塊1.車次查詢首先用戶準備查詢公交車次,在文本框中輸入公交車次號,系統(tǒng)判斷輸入車次號是否有效,如輸入錯誤,系統(tǒng)提示錯誤信息,要求重新輸入,若輸入正確啟動車次查詢,系統(tǒng)從數(shù)據(jù)庫中讀取公交車次信息,在新窗口中顯示車次經過的站點等詳細信息提示錯誤信息提示錯誤信息要求重新輸入檢驗輸入是否有效輸入查詢的車次用戶準備查詢公交車次信息啟動車次查詢顯示車次信息查詢結果從數(shù)據(jù)庫中讀取車次信息模糊車次查詢流程圖YN2.模糊站點查詢首先用戶準備查詢公交站點,在文本框中輸入查詢的站點關鍵字,系統(tǒng)判斷輸入關鍵字是否有效,如輸入錯誤,系統(tǒng)提示錯誤信息,要求重新輸入,若輸入正確啟動模糊查詢,系統(tǒng)從數(shù)據(jù)庫中讀取與站點關鍵字匹配的站點,在新窗口中顯示所有與輸入關鍵字匹配的所有站點。提示錯誤信息提示錯誤信息要求重新輸入檢驗輸入是否有效輸入查詢的站點關鍵字用戶準備查詢公交站點信息啟動模糊查詢顯示站點信息查詢結果從數(shù)據(jù)庫中讀取與站點關鍵字匹配的站點模糊站點查詢流程圖YN3.模糊線路查詢首先用戶準備查詢公交站點,在文本框中輸入查詢的站點關鍵字,系統(tǒng)判斷輸入關鍵字是否有效,如輸入錯誤,系統(tǒng)提示錯誤信息,要求重新輸入,若輸入正確啟動模糊查詢,系統(tǒng)從從數(shù)據(jù)庫中讀取經過與站點關鍵字匹配的站點的線路,在新窗口中顯示所有與輸入關鍵字匹配的所有線路,即與關鍵字相關的車次及詳細信息。提示錯誤信息提示錯誤信息要求重新輸入檢驗輸入是否有效輸入查詢的站點關鍵字用戶準備查詢公交線路信息啟動模糊查詢顯示線路信息查詢結果從數(shù)據(jù)庫中讀取經過與站點關鍵字匹配的站點的線路模糊線路查詢流程圖YN 4.模糊換乘查詢首先用戶準備查詢公交站點,在文本框中輸入查詢的站點關鍵字,系統(tǒng)判斷輸入關鍵字是否有效,如輸入錯誤,系統(tǒng)提示錯誤信息,要求重新輸入,若輸入正確啟動模糊查詢,系統(tǒng)從數(shù)據(jù)庫中讀取與關鍵字匹配的站點,然后啟動換乘查詢,系統(tǒng)先判斷是否有直達車,如果有直達車直接給出換乘信息,如沒有直達車則在數(shù)據(jù)庫中查找換乘線路和中轉站,再給出換乘信息,在新窗口中顯示顯示換乘信息查詢結果。模糊換乘查詢流程圖用戶準備查詢線路換乘信息模糊換乘查詢流程圖用戶準備查詢線路換乘信息輸入起始站點和到達站點關鍵字顯示線路信息查詢結果在數(shù)據(jù)庫中查找換乘線路和中轉站啟動換乘查詢判斷是否有直達車生成換乘信息檢驗輸入是否有效提示錯誤信息要求重新輸入YNNY4.2.3后臺管理模塊管理員維護整個系統(tǒng),管理員輸入用戶名和密碼后,登陸后臺管理系統(tǒng),在后臺管理系統(tǒng),管理員可以進行添加車次信息,修改車次信息,刪除車次信息等操作。輸入用戶名和密碼登錄后臺管理系統(tǒng)輸入用戶名和密碼登錄后臺管理系統(tǒng)管理員要進行后臺管理添加車次信息修改車次信息刪除車次信息退出后臺管理系統(tǒng)后臺管理流程圖5系統(tǒng)的實現(xiàn)5.1普通查詢模塊系統(tǒng)主頁即是普通查詢模塊,是由homepage.jsp頁面實現(xiàn),它包括了站點查詢子模塊、線路查詢子模塊和換乘查詢子模塊。如圖所示。主頁核心是把數(shù)據(jù)庫中的車次和站點取出來,在下拉列表中顯示。主要采用了ResultSet.getString()方法,首先設置兩個數(shù)據(jù)庫結果集(ResultSet)result1、result2.和兩個數(shù)組busid[]、all_station[],分別存放車次號和站點名,因為站點采用××××->×××->×××的方式存在數(shù)據(jù)庫中所以采用StringTokenizerstr=newStringTokenizer(detail,"->");方法將站點取出來存入all_station[],然后遍歷數(shù)組在下拉列表中顯示。其核心代碼如下:while(result1.next()) {busid[i]=result1.getString("BusID"); i++; } result1.close();//把車次查詢的車次號存入busid[]中。while(result2.next()) {//把每一條記錄放入臨時變量detail中 detail=result2.getString("Detail"); StringTokenizerstr1=newStringTokenizer(detail,"->"); //對每一條記錄的每一個站點進行比較 while(str1.hasMoreTokens()) {mark=0;//恢復mark的值,以便比較下一條記錄 StringTokenizerstr2=newStringTokenizer(str1.nextToken(),""); station2=str2.nextToken(); //注:count是隨著程序的執(zhí)行而不斷的增加 for(intk=0;k<count&&mark==0;k++) { //當站點相同時用mark的值來結束循環(huán), if(station2.indexOf(all_station[k])!=-1||all_station[k].indexOf(station2)!=-1) {mark=1; flag=0; } else flag=1;//如果全都不相同時,用flag值來跟蹤 } //把不重復的站點放入數(shù)組中,count加一, if(flag==1) {all_station[count]=station2; count++;}} } result2.close();Arrays.sort(all_station,cmp);//遍歷數(shù)據(jù)庫,把所有站點不重復地放入數(shù)組all_station[]數(shù)組中5.1.1車次查詢子模塊用戶進入系統(tǒng)后,可以從“請選擇車次”下拉列表中得到數(shù)據(jù)庫中的所有車次,選中要查詢的車次號,然后點擊查詢,即可顯示該車次經過的所有站點。例如查詢756路車。結果如圖所示。用戶點擊“查詢”,觸發(fā)submit事件,將得到的數(shù)據(jù)“query1”傳遞"resultquery1.jsp”進行車次查詢,"resultquery1.jsp”主要是通過StringBusID=request.getParameter("query1");得到所選中的線路,然后用statement="select*frombuswhereBusID='"+BusID+"'";result=sql.executeQuery(statement);從數(shù)據(jù)庫中查出車次經過的所有站點。最后用while(result.next()){Stringbusid=result.getString("BusID"); StringDetail=result.getString("Detail");a_startime=result.getString("A_STime"); a_endtime=result.getString("A_ETime"); w_startime=result.getString("W_STime"); w_endtime=result.getString("W_ETime");t_value=result.getInt("T_Value"); StringTokenizerstr1=newStringTokenizer(Detail,"->"); while(str1.hasMoreTokens()) {stations[count]=str1.nextToken(); count++; }在頁面中顯示該車次經過的所有站點。 5.1.2站點查詢子模塊用戶可以從“請選擇站點”下拉列表中得到數(shù)據(jù)庫中的所有站點,選中要查詢的站點,然后點擊查詢,即可顯示所有經過要查詢站點的車次號和經過的所有站點,其中要查詢的站點在結果中高亮顯示。例如,查詢南禪寺(朝陽廣場),結果如圖所示。用戶點擊“查詢”,觸發(fā)submit事件,將得到的數(shù)據(jù)“query2”傳遞"resultquery2.jsp”進行站點查詢,"resultquery2.jsp”主要是通過StringBusID=request.getParameter("query2");得到所選中的站點,然后用statement="select*frombuswhereDetailLIKE'%"+Station+"%'orderbySortASC";result=sql.executeQuery(statement);從數(shù)據(jù)庫中查出所有經過要查詢站點的車次號和經過的所有站點。最后通過while(result.next()) {StringBusID=result.getString("BusID"); StringDetail=result.getString("Detail"); StringTokenizerstr1=newStringTokenizer(Detail,"->"); count=0;while(str1.hasMoreTokens()) {stations[count]=str1.nextToken(); count++;}顯示所有經過要查詢站點的車次號和經過的所有站點5.1.3換乘查詢子模塊用戶可以從“請選擇起始站”和“請選擇到達站”下拉列表中得到數(shù)據(jù)庫中的所有站點,選中要查詢的起始站和到達站,然后點擊查詢,即可顯示所有到達的途徑,如果沒有直達車,將為你建議若干中轉站。例如南禪寺到國家軟件園有直達車,結果如圖所示。例如國家軟件園(菱湖大道)到蠡湖廣場沒有直達車,要進行換乘,結果如圖所示。用戶點擊“查詢”,觸發(fā)submit事件,將起始站點“S_query3”和到達站點“E_query3”傳遞到到"resultquery3.jsp”進行車次查詢,"resultquery3.jsp”得到要查詢的起始站和到達站后,首先判斷是否有直達車,如果有直達車直接給出換乘信息,如沒有直達車則在數(shù)據(jù)庫中查找換乘線路和中轉站,再給出換乘信息,在新窗口中顯示顯示換乘信息查詢結果。當有直達車時con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_bus","root","root"); sql1=con.createStatement();//從數(shù)據(jù)庫中找出所有含有起始站和終止站的數(shù)據(jù) Stringcondition1="select*frombuswhereDetailLIKE'%"+S_Station+"%"+E_Station+"%'ORDetailLIKE'%"+E_Station+"%"+S_Station+"%'orderbySortASC"; result1=sql1.executeQuery(condition1); //把結果放在數(shù)組Result1[i]中 while(result1.next()) { Result1[i]=result1.getString("BusID"); Detail[i]=result1.getString("Detail"); i++; } result1.close();之后輸出查詢結果。當沒有直達車需要轉車時,詢代碼如下。//查詢所有包含有起始站,而不包含終點站的車次信息 sql2=con.createStatement(); Stringcondition2="select*frombuswhereDetailLIKE'%"+S_Station+"%'ANDDetailNOTLIKE'%"+E_Station+"%'"; result2=sql2.executeQuery(condition2); while(result2.next()) { S_BusID[j]=result2.getString("BusID"); S_Detail[j]=result2.getString("Detail"); j++; } result2.close();//關閉第二個結果集 //查詢所有包含有終點站,不包含起始站的車次信息 sql3=con.createStatement(); Stringcondition3="select*frombuswhereDetailLIKE'%"+E_Station+"%'ANDDetailNOTLIKE'%"+S_Station+"%'"; result3=sql3.executeQuery(condition3); while(result3.next()) { E_BusID[h]=result3.getString("BusID"); E_Detail[h]=result3.getString("Detail"); h++; } result3.close();//關系第三個結果集 //把要轉車的信息放Result2系列的數(shù)組 for(k=0;k<j;k++) {//初始臨時變量,對S_Detail[]中的每一個元素進行比較 detail1=S_Detail[k]; //把detail1用'->'符號區(qū)分StringTokenizerstr1=newStringTokenizer(detail1,"->"); //對S_Detail[]中的每一個元素的每一個站點進行比較 while(str1.hasMoreTokens()) { station1=str1.nextToken();//初始臨時變量 //取出E_Detail[]數(shù)組中的每一個元素 for(n=0;n<h;n++) {detail2=E_Detail[n];//定義臨時變量 StringTokenizerstr2=newStringTokenizer(detail2,"->"); //取出E_Detail[]數(shù)組中的每一個元素的每一個站點 while(str2.hasMoreTokens()) {station2=str2.nextToken(); //把結果存儲到結果集中 if(station1.equals(station2)) { Result2_ID1[count]=S_BusID[k]; Result2_tan[count]=station1; Result2_ID2[count]=E_BusID[n]; count++; } } } } }之后輸出轉乘車次1,轉乘車次2,以及中轉站信息。5.2高級查詢模塊高級查詢模塊由advancequery.jsp頁面實現(xiàn),在主頁上點擊高級搜索即可進入高級查詢模塊,包括車次查詢、模糊站點查詢、模糊線路查詢、模糊換乘查詢),它與普通查詢的區(qū)別是可以模糊查詢,也就是不完全匹配,用戶只需輸入站點名稱和部分字符信息,系統(tǒng)便會給出與此相關的所有站點信息。頁面如圖所示。因為車次查詢子模塊、模糊站點查詢子模塊、模糊線路查詢子模塊之間都有聯(lián)系,所以寫在了一個文件中resultadvance1.jsp中,在resultadvance1.jsp通過Stringkeyword=request.getParameter("advance1");得到“advance1”,然后通過if(method.equals("按站點查詢")){},elseif(method.equals("按路線查詢")){},elseif(method.equals("按車次查詢")){}來區(qū)分三種查詢模塊。5.2.1車次查詢子模塊用戶進入界面后,可以輸入要查詢的車次號,然后選擇查詢方式,選擇“按車次查詢”,點擊查詢,即可顯示該車次經過的所有站點。例如查詢9路車。結果如圖所示。在車次查詢子模塊中通過statement="select*frombuswhereBusID='"+BusID+"'";result=sql.executeQuery(statement);從數(shù)據(jù)庫中查出車次經過的所有站點。遍歷后顯示出來。核心代碼如下:intid=Integer.parseInt(keyword);Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); statement="select*frombuswhereSort="+id+""; result=sql.executeQuery(statement); if(!result.next()) {response.sendRedirect("errorquery1.jsp"); } else {result.previous(); //顯示站點的詳細信息while(result.next()){ StringDetail=result.getString("Detail");a_startime=result.getString("A_STime"); a_endtime=result.getString("A_ETime"); w_startime=result.getString("W_STime"); w_endtime=result.getString("W_ETime");t_value=result.getInt("T_Value"); StringTokenizerstr1=newStringTokenizer(Detail,"->"); while(str1.hasMoreTokens()) {stations[count]=str1.nextToken(); count++; } } }5.2.2模糊站點查詢子模塊用戶進入高級查詢界面后,可以輸入要查詢站點的關鍵字,然后選擇查詢方式,選擇“按站點查詢”,點擊查詢,即可顯示包括該關鍵字的所有站點。例如輸入關鍵字“軟件園”。結果如圖所示。在站點模糊查詢子模塊首先用StringTokenizer方法得到所有站點存入all_station[],然后用for(inti=0;i<count;i++) {if(all_station[i].indexOf(keyword)!=-1) {relation[countrelation]=all_station[i]; countrelation++; } } result.close();和all_station[]中的數(shù)據(jù)匹配,匹配成功的即為要查詢的站點。5.2.3模糊線路查詢子模塊用戶進入高級查詢界面后,可以輸入要查詢站點的關鍵字,然后選擇查詢方式,選擇“按路線查詢”,點擊查詢,即可顯示經過包括該關鍵字的站點的車次信息。例如輸入關鍵字“菱湖”。結果如圖所示。在線路模糊查詢子模塊是在模糊站點查詢的基礎上,得到與關鍵字匹配的站點名,然后再進行一次站點查詢,得到經過包括該關鍵字的站點的車次信息。5.2.4模糊換乘查詢用戶可以在“起點”和“目的”文本框中輸入起始站點和目的站點的關鍵字,然后點擊查詢,即可顯示所有到達的途徑,如果沒有直達車,將為你建議若干中轉站。例如“起點”和“目的”文本框分別輸入軟件園、南禪寺,結果如圖所示。該模塊是前幾個模塊綜合起來的,首先通過模糊查詢得到起始站點和目的站點,然后判斷是否有直達車,如果有直達車直接給出換乘信息,如沒有直達車則在數(shù)據(jù)庫中查找換乘線路和中轉站,再給出換乘信息,在新窗口中顯示顯示換乘信息查詢結果。5.3后臺管理模塊系統(tǒng)管理員通過管理員登錄輸入用戶名和密碼登入管理員界面,管理員直接可以數(shù)據(jù)進行操作,如刪除線路、修改線路、添加線路。管理員登錄界面如圖所示:用戶單擊“登錄”按鈕觸發(fā)事件submit,跳轉到logincheck.jsp界面進行驗證,該事件實現(xiàn)用戶登錄的驗證過程。如果用戶輸入是正確的,用戶可以登錄到系統(tǒng)中,否則頁面彈出密碼錯誤對話框或用戶角色所屬錯誤對話框。 sql.executeQuery(condition)從數(shù)據(jù)庫獲取合法用戶的ID數(shù)據(jù),返回結果為對象.其的關鍵代碼如下:Stringtarget; StringManager=request.getParameter("username"); Stringpwd=request.getParameter("password"); Stringusr=Manager; session.setAttribute("Manager",Manager); Statementsql=null; Connectioncon=null; ResultSetre=null; try{Class.forName("com.mysql.jdbc.Driver"); } catch(ClassNotFoundExceptione){} try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_bus","root","root"); sql=con.createStatement(); Stringcondition="select*fromManagerwhereManagerID='"+usr+"'andPassword='"+pwd+"'"; re=sql.executeQuery(condition); if(re.next()){ response.sendRedirect("Update/updateSet.htm"); } else{%> <spanclass="style2"><strong>你輸入的用戶名或密碼不正確!請重新輸入</strong><ahref="javascript:history.back();"class="style1">返回修改</a></span><%} re.close(); } catch(Exceptione) {}登錄成功后的界面如圖所示:5.3.1添加車次車次的屬性比較多,如車輛序號、車次經過站點、夏季發(fā)車時間、夏季結束時間、冬季發(fā)車時間、冬季結束時間、票價、車序號等信息,所以添加車次的過程比較復雜。添加車次功能由頁面add.jsp頁面實現(xiàn),checkadd.Jsp文件為它的隱藏代碼,對添加的信息進行驗證。一條線路至少包含下面幾個屬性:車輛序號、車次經過站點、夏季發(fā)車時間、夏季結束時間、冬季發(fā)車時間、冬季結束時間、票價、車序號等。因此它的運行界面如圖所示。添加車次頁面上有一個很大的輸入框,用來輸入車次經過站點,該輸入框以多行的形式顯示數(shù)據(jù);站點的格式是“站點1->站點2->站點3”,添加站點頁面使用Javascript控件規(guī)范用戶輸入信息的格式;車次號必須是小于10個字段,票價必須是不大于三位數(shù)的數(shù)字,排序號必須是不大于五位數(shù)的數(shù)字,站點之間請以"->"符號連接,時間格式為18:30,單擊“添加”按鈕可以添加該車次Javascript代碼為:<scriptlanguage="JavaScript">functioncheckdata(){busid=document.add.busid.value; detail=document.add.detail.value; a_startime=document.add.a_startime.value; a_endtime=document.add.a_endtime.value; w_startime=document.add.w_startime.value; w_endtime=document.add.w_endtime.value;t_value=document.add.t_value.value;value=document.add.value.value; if(busid==""||busid.length>10) {alert("請正確輸入車次號,車次號必須是小于10個字段!"); returnfalse; }if(t_value==""||isNaN(t_value)||parseInt(t_value)<0) {alert("請正確輸入票價,票價必須是不大于三位數(shù)的數(shù)字!"); returnfalse; }if(value==""||isNaN(value)||parseInt(value)<0) {alert("請正確輸入排序號,排序號必須是不大于五位數(shù)的數(shù)字!"); returnfalse; } if(detail==""||(detail.indexOf('->')==-1)) {alert('請正確輸入站點信息,站點之間請以"->"符號連接!'); returnfalse; } if(a_startime==""||(a_startime.indexOf(':')==-1)) {alert("請正確輸入夏季發(fā)車時間,格式為18:30!") ; returnfalse; }if(a_endtime==""||(a_endtime.indexOf(':')==-1)) {alert("請正確輸入夏季結束時間,格式為18:30!") ; returnfalse;} if(w_startime==""||(w_startime.indexOf(':')==-1)) {alert("請正確輸入冬季發(fā)車時間,格式為18:30!") ; returnfalse;} if(w_endtime==""||(w_endtime.indexOf(':')==-1)) {alert("請正確輸入冬季結束時間,格式為18:30!") ; returnfalse;} }</script>5.3.2修改車次修改車次功能由modify.jsp頁面實現(xiàn),它的代碼隱藏文件為checkmodify.jsp文件。通過while(result.next()) {busid[i]=result.getString("BusID"); i++; }將所有車次列表顯示,點擊修改將跳轉至“display.jsp”界面,“display.jsp”顯示車次的詳細信息,與添加車次界面類似。通過con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_bus","root","root"); Statementsql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); statement="select*frombuswhereBusID='"+busid+"'"; result=sql.executeQuery(statement); if(result.next()) { detail=result.getString("Detail"); //out.println(detail); a_startime=result.getString("A_STime"); a_endtime=result.getString("A_ETime"); w_startime=result.getString("W_STime"); w_endtime=result.getString("W_ETime");value=result.getInt("Sort");t_value=result.getInt("T_Value"); i++; }讀取車次的詳細信息。用戶單擊“修改”按鈕觸發(fā)事件submit實現(xiàn)車次的修改功能,跳轉到checkmodify.jsp進行驗證,該事件和添加車次事件有很多相同之處,單擊“重置”按鈕觸發(fā)事件reset將改動的信息恢復原值。5.3.3刪除車次刪除車次功能由delete.jsp頁面實現(xiàn),刪除車次和車次修改實現(xiàn)有很多相同之處,如都是通過一個循環(huán)將所有車次列表顯示,點擊詳情將顯示車次的詳細信息,車次的刪除功能是由“刪除”按鈕實現(xiàn),用戶單擊“確認刪除”按鈕觸發(fā)事件,該事件刪除選中的車次。事件的代碼如下:con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_bus","root","root"); Statementsql=con.createStatement(); statement="delete*frombuswhereBusID='"+BusId+"'"; sql.executeUpdate(statement);、總結一個應用程序設計開發(fā)的好壞,與設計人員對開發(fā)工具的掌握程度息息相關。在本系統(tǒng)的開發(fā)設計過程中,由于本人對開發(fā)工具的掌握有限,可以說整個的開發(fā)過程是一邊摸索一邊實踐出來的。但令人高興的是,通過這樣一個邊學習邊應用的過程,本人完成了公交查詢系統(tǒng)的開發(fā)工作,并實現(xiàn)了該應用程序背景所要求的功能。但總的來說,程序仍然存在許多不足之處,在整個開發(fā)過程中本人一直本著認真、虛心、刻苦、積極的態(tài)度,堅持自己獨立完成設計,并基本達到了應用設計的功能要求。希望該系統(tǒng)在日后能夠得到不斷改進,發(fā)揮出它應有的作用。
致謝這次畢業(yè)設計得到了很多老師和同學的幫助,其中我的指導老師胡紅華老師對我的關心和支持尤為重要,在他的帶領下我才完成了這次畢業(yè)設計。非常感謝胡老師、郭老師在我大學的最后學習階段——畢業(yè)設計階段給我的指導,從最初的定題,到資料收集,到論文、修改,到論文定稿,他給了我耐心的指導和無私的幫助。為了指導我們的畢業(yè)論文,他放棄了自己的休息時間,他的這種無私奉獻的敬業(yè)精神令人欽佩,在此我向他表示我誠摯的謝意。同時,感謝所有任課老師和所有同學在這幾年來給另外,感謝校方給予我這樣一次機會,能夠獨立地完成一個課題,并在這個過程當中,給予我們各種方便,使我們在即將離校的最后一段時間里,能夠更多學習一些實踐應用知識,增強了我們實踐操作和動手應用能力,提高了獨立思考的能力。再一次對我的母校表示感謝。感謝在整個畢業(yè)設計期間和我密切合作的同學,和曾經在各個方面給予過我?guī)椭幕锇閭儯诖髮W生活即將結束的最后的日子里,我們再一次演繹了團結合作的童話,把一個龐大的,從來沒有上手的課題,圓滿地完成了。正是因為有了你們的幫助,才讓我不僅學到了本次課題所涉及的新知識,更讓我感覺到了知識以外的東西,那就是團結的力量。最后,感謝所有在這次畢業(yè)設計中給予過我?guī)椭娜?。對上述老師同學們,再一次真誠地表示感謝!
參考文獻[1]郭靜.基于JSP的通用信息發(fā)布管理系統(tǒng)[J]重慶工學院學報,2005,(11).[2]任艷,李九齡.應用JSP進行數(shù)據(jù)庫信息發(fā)布[J].計算機工程與應用,2002,(07)[3]王國輝.JavaWeb開發(fā)技術方案寶典[M]人民郵電出版社,2008.2[4]梁玉環(huán),李村合,索紅光.基于JSP的網(wǎng)站訪問統(tǒng)計系統(tǒng)的設計與實現(xiàn)[J].計算機應用研究,2004,(04)[5]鐘雁.管理信息系統(tǒng)開發(fā)案例分析[M]清華大學出版社,2006.[6]李尊朝.JAVA語言程序設計[M].中國鐵道出版社.2004.9.[7]孫衛(wèi)琴,李洪成.Tomcat與JavaWeb開發(fā)技術詳解[M]電子工業(yè)出版社,2004.4.[8]連洪武.EclipseWeb開發(fā)從入門到精通[M].清華大學出版社.2007.6.[9]高河福.一個基于J2EE架構的MIS設計與實現(xiàn)[D]暨南大學
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版門窗行業(yè)市場拓展與渠道建設合同4篇
- 2025版寵物醫(yī)院害蟲防治與寵物健康服務合同4篇
- 2025年度鎳氫電池關鍵部件研發(fā)與制造合同4篇
- 二零二五年度智慧交通管理系統(tǒng)詢價合同協(xié)議書3篇
- 二零二五年度智能交通管理系統(tǒng)采購合同樣本3篇
- 二零二五年度奶業(yè)集團奶制品品牌授權及銷售合同
- 2025年度路燈采購安裝及LED照明產品研發(fā)合同3篇
- 二零二五年度機關辦公樓物業(yè)智能化升級改造服務合同5篇
- 2025年度智能化培訓學校教師團隊聘用合同4篇
- 二零二五年度模特廣告代言聘用合同
- 數(shù)學-山東省2025年1月濟南市高三期末學習質量檢測濟南期末試題和答案
- 中儲糧黑龍江分公司社招2025年學習資料
- 河南退役軍人專升本計算機真題答案
- 湖南省長沙市2024-2025學年高一數(shù)學上學期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 駕駛證學法減分(學法免分)試題和答案(50題完整版)1650
- 2024年林地使用權轉讓協(xié)議書
- 物流有限公司安全生產專項整治三年行動實施方案全國安全生產專項整治三年行動計劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 產鉗助產護理查房
- 招聘專員轉正述職報告
評論
0/150
提交評論