




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于web基于web的網(wǎng)上訂餐系統(tǒng)的設(shè)計與實(shí)現(xiàn)-畢業(yè)論文基于web的網(wǎng)上訂餐系統(tǒng)的設(shè)計與實(shí)現(xiàn)摘要:由于因特網(wǎng)技術(shù)的高速發(fā)展,人們生活與網(wǎng)絡(luò)的腳步也隨之越來越緊密。同時也隨著市場化和經(jīng)濟(jì)全球化越來越多的普及,眾多國內(nèi)外企業(yè)都深刻地認(rèn)識到想要提高企業(yè)的市場競爭力,就要率先抓住網(wǎng)絡(luò)的商機(jī),走信息化的特色道路。于是基于網(wǎng)上的訂餐系統(tǒng)就在這樣的情況下應(yīng)運(yùn)而生和發(fā)展起來了。網(wǎng)上訂餐系統(tǒng)是一種針對餐飲業(yè)而設(shè)計的商務(wù)服務(wù)網(wǎng)站。通過本系統(tǒng),客戶可以迅速查找到適合自己所處位置的餐館名稱、餐館所具有的菜譜及其對應(yīng)價位,從而可以選擇送餐異或訂餐的方式來購買到自己所需的餐飲。這種方式可以顯著提高餐館的工作效率,同時也可以很大程度地節(jié)省客戶因等待而浪費(fèi)的時間。該系統(tǒng)設(shè)計主要采用采用MYSQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)表的設(shè)計,利用JSP的動態(tài)生成頁面編程技術(shù),實(shí)現(xiàn)了用網(wǎng)絡(luò)展示餐飲信息、瀏覽餐飲頁面、注冊客戶、更改客戶信息;同時,完成管理人員對餐飲信息的添加、餐飲價格的更改、訂單的管理以及用戶信息的管理等功能?;谙到y(tǒng)開發(fā)的軟件工程規(guī)范的需要,本人嚴(yán)格執(zhí)行需求分析,概要設(shè)計,詳細(xì)設(shè)計與編碼以及系統(tǒng)設(shè)計等設(shè)計步驟來完成該系統(tǒng),并且在系統(tǒng)開發(fā)過程中結(jié)合理論知識與開發(fā)技術(shù),完成了網(wǎng)上訂餐系統(tǒng)平臺的構(gòu)建,實(shí)現(xiàn)預(yù)期的網(wǎng)上訂餐的基本功能。關(guān)鍵詞:網(wǎng)上訂餐餐飲訂單電子商務(wù)MYSQL購物車TheInternetbasedonwebroscoesystemdesignandimplementationWriter:ZhoujinTeacher:LishanshanAbstract:BecauseoftherapiddevelopmentofInternettechnology,peoplelivingwithnetworkstepsalsowillmoreandmoreclosely.Alsowiththemarketizationandeconomicglobalizationmoreandmorepopular,manydomesticandforeignenterpriseareprofoundlyrealizethatwanttoenhancetheenterprisemarketcompetitiveness,firstcatchtheopportunitytonetwork,walktheroadwithinformationization.Thenbasedononlinemealsysteminsuchcasesemergedanddeveloped.Roscoesystemisakindofonlinedesignedforcateringbusinessservicewebsite.Throughthissystem,customercanquicklyfindsuitablelocationsrestaurantwiththenameoftherestaurantmenusanditscorrespondingprice,thuscanchoosedifferentorsendamealtobuyintothewayroscoetheyneedfood.Thiswaycanimprovetheworkefficiency,whilerestaurantcanalsobegreatlysavetheclientwasteoftimeforwaiting.ThissystemmainlybyusingMYSQLdatabasedesigndatatabledesign,usedynamicgenerationofJSPpageprogrammingtechniques,realizetheshowwiththenetworkfood-basedinformationbrowsingcateringpage,registeringcustomerandchangingcustomerinformation;Meanwhile,itcompletesthemanagementpersonneltoaddfoodpricesfood-basedinformation,changeofordermanagementandtheuser'sinformationmanagement,andotherfunctions.Basedonthesystematicdevelopmentofsoftwareengineeringstandardneed,Istrictlyimplementdemandanalysisandgeneraldesign,detaileddesignandcodingandsystemdesign,andotherdesignstepstocompletethesystem,andinsystemdevelopmentwiththeoreticalknowledgeandthedevelopmentoftechnology,completedtheconstructionofthesystemplatformonlineroscoe,achievethedesiredonlinethebasicroscoe.Keywords:Onlineroscoe;Repast;Order;E-commerce;MYSQL;ShoppingCartTOC\o"1-5"\h\z\o"CurrentDocument"第一章緒論 1..引言 1本文的主要內(nèi)容 2\o"CurrentDocument"第二章網(wǎng)上訂餐系統(tǒng)的需求分析 3用戶分析 3功能分析 3業(yè)務(wù)流程分析 4性能需求分析 6\o"CurrentDocument"第三章網(wǎng)上訂餐系統(tǒng)設(shè)計 7.系統(tǒng)的概要設(shè)計 73.1.1系統(tǒng)的主要功能結(jié)構(gòu) 73.1.2系統(tǒng)的結(jié)構(gòu)流程設(shè)計 93.1.3系統(tǒng)的層次結(jié)構(gòu)設(shè)計 10系統(tǒng)的數(shù)據(jù)庫設(shè)計 11數(shù)據(jù)庫的概念設(shè)計 11數(shù)據(jù)庫的邏輯設(shè)計 12數(shù)據(jù)庫的物理設(shè)計 13\o"CurrentDocument"第四章系統(tǒng)詳細(xì)設(shè)計與編碼實(shí)現(xiàn) 14客戶端模塊的設(shè)計 14頁面的搭建 14用戶登錄模塊的設(shè)計與實(shí)現(xiàn) 15用戶注冊模塊的設(shè)計和實(shí)現(xiàn) 17登錄界面的設(shè)計 19登錄驗(yàn)證功能的設(shè)計 20后臺登錄功能的設(shè)計 21訂餐模塊的設(shè)計 22餐飲列表功能的設(shè)計 22購物車部分 26用戶信息部分和購物清單部分 29訂單管理模塊的設(shè)計 314.3.1訂單列表顯示部分 314.3.2詳細(xì)訂單部分 32后臺管理功能設(shè)計 324.4.1后臺首頁設(shè)計 324.4.2后臺餐飲管理模塊設(shè)計 344.4.3餐飲查詢功能 344.4.4餐飲添加功能 354.4.5后臺訂單模塊功能 36\o"CurrentDocument"第五章網(wǎng)上訂餐系統(tǒng)的測試 3.9軟件測試的介紹 39系統(tǒng)的實(shí)例測試 405.2.1用戶的信息管理測試 405.2.2餐飲信息的查詢模塊測試 42網(wǎng)上餐飲的訂購模塊測試 43購物車模塊的測試 43餐飲訂單的測試 44管理員模塊的測試 45餐飲信息管理的測試 45訂單管理的測試 46\o"CurrentDocument"第六章結(jié)束語 4..7致謝 4..8...\o"CurrentDocument"參考文獻(xiàn) 4..9.附錄 5..1...#信息。當(dāng)點(diǎn)擊“提交訂單"這一按鈕時,便會觸發(fā)了ListOrder事件,然后調(diào)用相應(yīng)的ListOrderServlet中的doPost()方法,執(zhí)行這個Action中的操作后,通過一些相關(guān)操作,實(shí)現(xiàn)其內(nèi)部跳轉(zhuǎn)方式,從而跳轉(zhuǎn)到確認(rèn)訂單頁面中。通過Get()和Set()方法從數(shù)據(jù)庫中取得用戶的姓名、送貨地址、E-mail等一些主要的注冊信息以及用戶訂購的餐飲信息,并且返回到對應(yīng)的瀏覽器頁面。其實(shí)現(xiàn)效果圖如下圖4-15所示:%歡迎您使用“防災(zāi)來必假”網(wǎng)上訂餐系統(tǒng).祝您訂餐愉快!i"防魅馳"網(wǎng)上訂髯輟用戶膈酬限為峻朋7&A!shown醫(yī)免地址;土匚日工口”1瞬朝:310HIDO底飆話;2314356TS4]醒昉舌"送赳門克獨(dú)扶?領(lǐng)讖祗ahufi川正可由:瑞UU上信息無誤,髓圖4-15購物清單界面其實(shí)現(xiàn)的關(guān)鍵代碼如下所示:publicclassFeelbackListDao{Connectioncon;PreparedStatementps;ResultSetrs;publicListfindFeelbackList(){Listlist=newArrayList();try{con=newBaseDao().getConn();ps=con.prepareStatement("selecttop3ListId,UserId,UserName=
(selectLoginNamefromdbo.Userswheredbo.Users.UserId=dbo.FeelbackList.UserId),SendNote,SendTimefromdbo.FeelbackList");rs=ps.executeQuery();while(rs.next()){FeelbackListEntitylist=newFeelbackListEntity();msg.setListId(rs.getInt("ListId"));msg.setUserId(rs.getInt("UserId"));msg.setUserName(rs.getString("UserName"));msg.setSendNote(rs.getString("SendNote"));msg.setSendTime(rs.getDate("SendTime"));}}catch(SQLExceptione){e.printStackTrace();}returnlist;}publicvoidaddFeelbackList(FeelbackListEntitymsg){try{con=newBaseDao().getConn();ps=con.prepareStatement("insertintoFeelbackList(UserId,SendNote,SendTime)values(?,?,?)");ps.setInt(1,list.getUserId());ps.setString(2,list.getSendNote());ps.setString(3,newSimpleDateFormat("yyyy-MM-ddhh:mm:ss").format(newDate()));ps.executeUpdate();}catch(SQLExceptione){e.printStackTrace();}}}4.3訂單管理模塊的設(shè)計4.3.1訂單列表顯示部分當(dāng)用戶在餐飲列表界面上點(diǎn)擊“查看用戶訂單"鏈接時,相應(yīng)的客戶端請求就進(jìn)入訂單列表服務(wù)ListOrderServlet中,此時Action就會將此請求轉(zhuǎn)發(fā)到相應(yīng)的訂單列表頁面上,這個頁面的信息包含訂單號、訂單時間、訂單金額以及相關(guān)的一些操作信息,同時用戶也可以根據(jù)自己的餐飲需求來刪除自己不需要的訂單信息。其具體實(shí)現(xiàn)效果如下圖4-16所示:除歡迎您使用月防災(zāi)來必飽”網(wǎng)上訂餐系統(tǒng),祝您訂餐愉快!斗“防災(zāi)來必飽”訂單列表訂轉(zhuǎn)訂單皤認(rèn)麻:用湃11間10E田EODH-Eb]L:E5:30苜酢身晦LD3T6SQD1-1-2GM:,:其?nisi懈JLD4WH10H-ZE11:30.33詢成L051072ADM-2G12:10CB.二日信宜緋贊訂購圖4-16餐飲訂單列表界面圖其實(shí)現(xiàn)的關(guān)鍵代碼如下所示:publicListfindMealAll(){Listlist=newArrayList();try{con=newBaseDao().getConn();ps=con.prepareStatement("select*fromMeal");rs=ps.executeQuery();while(rs.next()){MealEntitymeal=newMealEntity();meal.setMealId(rs.getInt("MealId"));meal.setFoodId(rs.getInt("FoodId"));meal.setDishId(rs.getInt("DishId"));meal.setTasteId(rs.getInt("TasteId"));meal.setMealName(rs.getString("MealName"));meal.setMealSummarize(rs.getString("MealSummarize"));meal.setMealParticularDescription(rs.getString("MealParticularDescription"));meal.setMealPrice(Float.valueOf(rs.getFloat("MealPrice")));meal.setMemberPrice(Float.valueOf(rs.getFloat("MemberPrice")));meal.setVipPrice(Float.valueOf(rs.getFloat("VIPPrice")));meal.setIsRecommend(rs.getString("IsRecommend"));meal.setOrderCount(rs.getInt("OrderCount"));meal.setIsMeatSeries(rs.getString("IsMeatSeries"));meal.setMealImage(rs.getString("MealImage"));meal.setIsStartUp(rs.getString("IsStartUp"));list.add(meal);}catch(Exceptione){e.printStackTrace();finally{newBaseDao().closeAll(con,ps,rs);}returnlist;}4.3.2詳細(xì)訂單部分當(dāng)用戶在餐飲訂單列表界面上相對應(yīng)的每個訂單后點(diǎn)擊“詳細(xì)信息"鏈接時,相應(yīng)請求就進(jìn)入訂單信息Orderinfo中,此時系統(tǒng)就會調(diào)用訂單信息服務(wù)0£011口£050F丫10中的doPost(?法,同時通過Action將該請求轉(zhuǎn)發(fā)到Orderinfo.js頁面上,從而使該頁面跳轉(zhuǎn)進(jìn)入到餐飲訂單詳細(xì)界面中,此界面包含每一條餐飲訂單的詳細(xì)訂購信息。其實(shí)現(xiàn)效果如下圖4-17所示:晌號鋌跌起再鍵快林借6民幣二元)賴?yán)?2糠醋排骨43123菜花雞J421總計85圖4-17詳細(xì)訂單界面4.4后臺管理功能設(shè)計后臺首頁設(shè)計該網(wǎng)上訂餐系統(tǒng)的后臺主要是用于管理員維護(hù)前臺的一些數(shù)據(jù),這些數(shù)據(jù)主要包括餐飲設(shè)置、訂單設(shè)置、公告設(shè)置以及其它的一些設(shè)置。一些后臺功能操作
顯示和餐飲類別查詢等功能,并不是僅僅存在于主頁面當(dāng)中,其他功能模塊的子頁面中也同樣需要包括這些功能部分。所以可以將這幾個功能部分分別保存在獨(dú)立存在的文件中,這樣當(dāng)需要放置相應(yīng)功能時僅僅需要將這些文件包含即可。后臺首頁界面如下圖4-18所示:防災(zāi)來必飽"防災(zāi)來必修網(wǎng)H卷盎探防災(zāi)來必飽"防災(zāi)來必修網(wǎng)H卷盎探輛口KM司ISM招IS■Lfcji*a制L+M,年!C叵星咄ICCW5做口34ui小審iEWI-1-?羋Wr圖4-18后臺首頁界面其關(guān)鍵的實(shí)現(xiàn)代碼如下:publicclassAdminDao{Connectioncon;PreparedStatementps;ResultSetrs;publicAdminEntityfindAdminIsExist(Stringname,Stringpwd){AdminEntityadminEntity=null;try{con=newBaseDao().getConn();ps=con.prepareStatement("selectAdminId,LoginName,LoginPwd,PurviewfromAdminwhereLoginName=?andLoginPwd=?");ps.setString(1,name);ps.setString(2,pwd);rs=ps.executeQuery();if(rs.next()){adminEntity=newAdminEntity();adminEntity.setAdminId(rs.getInt("AdminId"));adminEntity.setAdminName(rs.getString("LoginName"));adminEntity.setAdminPwd(rs.getString("LoginPwd"));adminEntity.setPurview(rs.getString("Purview"));}}catch(Exceptione){e.printStackTrace();}returnadminEntity;}}
4.4.2后臺餐飲管理模塊設(shè)計在網(wǎng)上訂餐系統(tǒng)中,對于餐飲信息的管理尤為重要,可以說如果沒有一些必要的餐飲信息或者餐飲信息有所欠缺,那么此網(wǎng)上訂餐網(wǎng)站就顯得沒有意義的,嚴(yán)重影響餐飲的銷售。網(wǎng)上訂餐系統(tǒng)中的餐飲管理模的實(shí)現(xiàn)功能包括餐飲信息的查詢、餐飲信息的添加、餐飲信息的更改以及餐飲信息的刪除等功能。后臺餐飲管理模塊的框架如下圖4-19所示:圖4后臺餐飲管理模塊的框架如下圖4-19所示:圖4-19后臺餐飲管理模塊的功能框架圖4.4.3餐飲查詢功能在后臺管理頁面中,可以進(jìn)行對應(yīng)的餐飲信息的查詢。單擊“餐飲設(shè)置”,網(wǎng)頁會訪問對應(yīng)的URL。從該URL地址中可以知道該餐飲模塊涉及到的action的參數(shù)為0,也就是說當(dāng)action=0的時候,它會調(diào)用餐飲的查詢方法bookSelect()。在該方法中的主要功能就是對餐飲信息表中的所有數(shù)據(jù)進(jìn)行相應(yīng)的查詢,然后將所有查詢到的餐飲信息集合類型通過request對象中的setAttribute()方法存儲在request范圍內(nèi),再通過request對象中的getAttribute()方法獲取該信息。該餐飲查詢模塊的實(shí)現(xiàn)界面圖如下圖4-該餐飲查詢模塊的實(shí)現(xiàn)界面圖如下圖4-20所示:是舌汁的LO£3Q04番赧!嗚王菜品舌詳翱信息LEsaiaB瑪丁肉快烹品是謝信息附除血瞬荒飲料否年如信息圖4-20餐飲查詢模塊的實(shí)現(xiàn)界面圖其關(guān)鍵部分代碼如下所示:publicclassMealActionextendsAction{privateintaction;privateMealDaodao=null;privateSmallTypeDaosmall2null;privateHttpSessionsession2null;publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{request.setCharacterEncoding("gb2312");this.dao=newMealDao();small=newSmallTypeDao();action=Integer.parseInt(request.getParameter("action"));session=request.getSession();switch(action){…}MealFormgoodsForm=(MealForm)form;thrownewjava.1ang.UnsupportedOperationException(“Method$execute()notyetimplemented.”);}4.4.4餐飲添加功能在餐飲查詢頁中,單擊添加餐飲按鈕,就會進(jìn)入到該餐飲的相應(yīng)信息頁面。添加餐飲信息頁面主要是用于向數(shù)據(jù)庫中添加新的餐飲信息。編寫餐飲添加的Action實(shí)現(xiàn)類的方法是:單擊提交按鈕,網(wǎng)頁會訪問對應(yīng)的URL。從該URL地址中可以知道餐飲管理模塊涉及到的action參數(shù)值,即當(dāng)為某個值時,其會調(diào)用餐飲添加的方法saveMeal()。在該方法中,主要是向餐飲信息表中添加相應(yīng)的數(shù)據(jù)。該餐飲添加模塊的實(shí)現(xiàn)界面圖如下圖4-21所示:圖4-21餐飲添加模塊的實(shí)現(xiàn)界面圖4.4.5后臺訂單模塊功能單擊后臺功能顯示區(qū)中的訂單設(shè)置功能連接,從而進(jìn)入到訂單信息管理模塊。該模塊主要實(shí)現(xiàn)的功能有訂單詳細(xì)信息查詢以及訂單刪除等功能。該系統(tǒng)后臺訂單設(shè)置模塊的框架圖如下圖4-22所示:圖4-22后臺訂單設(shè)置模塊的框架圖該系統(tǒng)后臺訂單管理模塊實(shí)現(xiàn)界面圖如下圖4-23所示:圖4-23后臺訂單管理模塊實(shí)現(xiàn)界面圖以下將詳細(xì)說明該模塊所涉及到的一些技術(shù),在該模塊中涉及到的數(shù)據(jù)表示訂單信息表,該表所保存的信息有訂單編號、用戶名以及用戶居住地址等信息。根據(jù)這些信息可以得到訂單管理模塊的ActionForm類,其關(guān)鍵實(shí)現(xiàn)代碼如下所示:publicclassOrderFormextendsActionForm{privateStringaddress;privateStringname;privateStringnumber;,privateStringtelNum;publicIntegergetAddress(){returnaddress;}publicvoidsetAddress(Integeraddress){this.address=address;}publicStringgetCreaTime(){returncreaTime();}publicvoidsetCreaTime(){this.creaTime=creaTime;}}在訂單管理功能模塊的ActionForm類中,首先它需要在此類屬性中定義OrderDao類的對象、OrderDetailDao類的對象以及int型變量Action類對象。該實(shí)現(xiàn)類的主要方法是execute。,這個方法會被自動執(zhí)行,但他本身沒有具體的事物,它是根據(jù)通過HttpServletRequest的getParameter()方法獲取Action參數(shù)值來執(zhí)行相應(yīng)方法的。在后臺管理頁面中,點(diǎn)擊“訂單設(shè)置”鏈接,進(jìn)入相應(yīng)的訂單查詢頁面。以下將概要性地介紹此功能模塊所涉及到的一些技術(shù)問題。以下將通過Action類對編寫信息查詢進(jìn)行簡要地敘述:點(diǎn)擊“詳細(xì)信息”鏈接,網(wǎng)頁就會自動訪問相應(yīng)的URL。從該URL地址中可以了解到訂單管理模塊所涉及到的Action的參數(shù)值,同時它會調(diào)用訂單查詢方法selectOneOrder()。此方法主要通過訂單編號來查詢對應(yīng)的訂單信息以及此訂單所對應(yīng)的餐飲信息。其關(guān)鍵部分代碼如下所示:publicActionForwardselectOneOrder(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){Stringnumber=request.getParameter("number");request.setAttribute("orderFormr",order.selectOrderNumber(number));request.setAttribute("orderDetailList",orderDetail.selectOrderDetailNumber(number));returnmapping.findForward("selectOneOrder");}下面將要說明的是如何編寫訂單信息查詢相對應(yīng)的OrderDao類。之前說明訂單查詢使用的FoodDao類的方法是selectOrderNumber()方法。在這個方法中,通過訂單編號來查詢,從而來執(zhí)行訂單查詢的SQL語句,由于餐飲的訂單編號是唯一的,所以相應(yīng)的查詢的記錄數(shù)就僅僅只有一條。由此可知,return這個關(guān)鍵字所返回的是OrderForm類相關(guān)聯(lián)的對象。通過餐飲訂單相對應(yīng)的餐飲信息查詢來編寫OrderDetail類的方法如下:從之前所說名的內(nèi)容就可以知道FoodDao類的相對應(yīng)的方法就是selectOrderDetailNumber()方法。在此方法中,通過訂單編號來查詢相應(yīng)信息,執(zhí)行訂單中所有相關(guān)聯(lián)的餐飲信息的SQL語句,將所有餐飲的信息放在List集合之中,最后還是用return關(guān)鍵字來返回此對象。其關(guān)鍵部分代碼如下所示:publicListselectOrderDetailNumber(Stringnumber){Listlist=newArraylist();OrderDetailFormorderDetail=null;try{ps=connection.prepareStament("select*frommealorderwhereorderNumber=?");ps.setString(1.number);resultSetrs=ps.executeQuery();while(rs.next()){orderDetail=newOrderDetailForm();orderDetail.setId(Integer.paraseInt(rs.getString(5)));list.add(orderDetail);}}ps.close();}catch(SQLExceptionex){}returnlist;}第五章網(wǎng)上訂餐系統(tǒng)的測試軟件測試的介紹軟件測試就是對軟件開發(fā)過程的過程中,來進(jìn)行確認(rèn)一個程序的質(zhì)量以及性能方面與開發(fā)前的預(yù)期結(jié)果是否相符合。其目的是用來確認(rèn)軟件的質(zhì)量,盡量保證所開發(fā)的系統(tǒng)與所期望的結(jié)果一致,滿足廣大客戶的需求。它的測試方法有以下幾種:(1)黑盒測試:從字面上理解就是將被測系統(tǒng)看作一個黑盒,從黑盒外部進(jìn)行輸入,然后再把結(jié)果輸出來。整個測試是基于需求規(guī)格說明書的,檢測它能否滿足需求規(guī)格說明書中相關(guān)的要求。因此,黑盒測試就不能采用與被測系統(tǒng)內(nèi)部結(jié)構(gòu)的知識或者經(jīng)驗(yàn)來進(jìn)行測試,只能通過外部的手段來對系統(tǒng)的功能進(jìn)行測試。該測試的優(yōu)點(diǎn)為相對簡單明了,無需知道程序內(nèi)部的代碼以及相關(guān)的實(shí)現(xiàn);與系統(tǒng)的內(nèi)部實(shí)現(xiàn)并無關(guān)系;能夠從用戶角度比較容易地了解到用戶所使用到的功能以及會遇到問題;基于系統(tǒng)開發(fā)需求規(guī)格說明書,因而也能了解到軟件所實(shí)現(xiàn)的一些功能;能夠比較方便的進(jìn)行系統(tǒng)自動化測試。但該測試也有不能覆蓋住全部的代碼,覆蓋率較低以及測試復(fù)用性較低等缺點(diǎn)。(2)白盒測試:是指在測試過程中能夠知道被測對象的相關(guān)結(jié)構(gòu),還能夠查看被測代碼的相關(guān)測試工作。與黑盒測試不同,它需要知道系統(tǒng)內(nèi)部的設(shè)計結(jié)構(gòu)以及具體的代碼實(shí)現(xiàn),同時以此作為基礎(chǔ)來設(shè)計測試用例。該測試的直接好處就是知道所設(shè)計的測試用例的內(nèi)部代碼,容易找出系統(tǒng)中隱藏的缺陷,它還能使代碼的覆蓋率大大增加,使代碼的質(zhì)量得到提高。但該測試有較多缺陷:不可能測試系統(tǒng)的所有運(yùn)行路徑;通過代碼進(jìn)行測試,只能夠測試開發(fā)人員所做的正確性,卻無法得知設(shè)計的正確與否,還可能會漏掉一些系統(tǒng)需求功能;測試開銷很大程度上會受系統(tǒng)的大小影響。通過相應(yīng)地比較,黑盒測試比較符合網(wǎng)上訂餐系統(tǒng)的測試要求,因而該系統(tǒng)用黑盒的測試方法來對整個系統(tǒng)進(jìn)行了功能方面的測試。黑盒測試主要是通過輸入不同的數(shù)據(jù)對系統(tǒng)的穩(wěn)定性、可靠性和高效性來進(jìn)行測試的。黑盒測試又叫功能測試,它是用相應(yīng)地測試來實(shí)現(xiàn)檢測系統(tǒng)的每一個功能可否都能正常的使用。在測試的過程中,將系統(tǒng)內(nèi)部的程序當(dāng)作一個不可打開的黑盒子,在對程序內(nèi)部結(jié)構(gòu)及內(nèi)部特性完全不予考慮的條件下,測試相應(yīng)的程序接口,檢查程序功能是否按照需求規(guī)格說明書的要求來正常使用以及檢查程序能否適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù),從而輸出正確的信息。黑盒測試側(cè)重于程序外部功能結(jié)構(gòu),對內(nèi)部邏輯結(jié)構(gòu)不予考慮,著重測試系統(tǒng)界面以及其相關(guān)功能。黑盒測試這一方法側(cè)重于測試系統(tǒng)的功能需求,主要針對找出以下幾種錯誤:系統(tǒng)相關(guān)的功能不正確或被遺漏;系統(tǒng)界面有差錯;系統(tǒng)數(shù)據(jù)庫未能正確的訪問;系統(tǒng)性能差甚至有重大缺陷等一系列錯誤。從一般意義上來講,黑盒測試只有通過對系統(tǒng)進(jìn)行窮舉輸入測試,把盡可能多考慮測試輸入情況,這樣才可以檢查出程序當(dāng)中的所有可能錯誤。測試實(shí)際上有無窮多個可能情況,它不僅要對所有合法的輸入進(jìn)行相應(yīng)的測試,并且還要對那些可能引起系統(tǒng)出錯的輸入進(jìn)行測試,為此本人只對系統(tǒng)相關(guān)的功能做簡明扼要的測試。系統(tǒng)的實(shí)例測試5.2.1用戶的信息管理測試(1)用戶信息注冊采用黑盒測試的測試方案,在首頁界面中單擊用戶注冊這一超鏈接之后,就可進(jìn)入用戶的信息注冊界面,而后再遵照“輸入正確完整的用戶注冊信息,而后點(diǎn)擊注冊按鈕,觀察系統(tǒng)運(yùn)行后的注冊結(jié)果,注冊過程中,還需要對用戶名、密碼及確認(rèn)密碼進(jìn)行必要的填寫,并且兩次密碼需要一致”的操作步驟來進(jìn)行相應(yīng)測試,最終系統(tǒng)顯示出結(jié)果為用戶信息注冊成功,同時用戶注冊信息已經(jīng)成功地添加到了數(shù)據(jù)庫之中;如果按照“未填用戶名或者密碼以及輸入兩次密碼不相同”這一錯誤提示信息來進(jìn)行輸入用戶信息注冊,然后再點(diǎn)擊注冊按鈕,系統(tǒng)的最后顯示結(jié)果會是“用戶信息注冊失敗,請重新輸入正確信息”這一系統(tǒng)提示信息。
"歡迎您使用“防災(zāi)來必飽”網(wǎng)上訂餐系統(tǒng),祝您訂餐愉快!工“防災(zāi)來心飽”網(wǎng)上口看不裝用戶疊錄螞-卅二二,登錄前電蚯!受耨叫闞不靛為空I身份證號凄L苑如i£73:l]2圖5-1用戶信息注冊失?。ㄎ摧斎氲卿浢Q或登錄密碼)%"歡迎您使用“防災(zāi)來必飽”網(wǎng)上訂餐系統(tǒng),祝您訂餐愉快!工“防災(zāi)來心飽”網(wǎng)上口看不裝用戶疊錄螞-卅二二,登錄前電蚯!受耨叫闞不靛為空I身份證號凄L苑如i£73:l]2圖5-1用戶信息注冊失敗(未輸入登錄名稱或登錄密碼)%歡迎您使后“防災(zāi)來必飽”網(wǎng)上訂餐系統(tǒng),祝您訂餐愉快!%事認(rèn)彝語明認(rèn)受天密碼330fiSI198B0707237fi電話號狎:]53326-16129如;EdmL&Le?i亙迫1名:月海電存冊£廿nwy崽163”比奧1T.F上通訥R網(wǎng)上叮男系M用戶要”均寫由冊信電髀聯(lián)登錄都;豳金郵兩崗4叼三彳犯百實(shí)姓名:呢?.壯1二二k4,■證號:3300011908DIDI23?i3電話號田二15G32Q4Q729in:<5nj]2電子都沖;工twujrJ&】63*??趍.如!IT-DdI C-3H:主冊 取消圖5-2用戶信息注冊失?。▋纱屋斎氲卿浢艽a不相同)由此可知,在該系統(tǒng)中,用戶進(jìn)行信息注冊時需要輸入完整的用戶名與密碼,并且兩次所輸入的密碼必須相一致。經(jīng)過以上一系列的測試,就可說明該系統(tǒng)功能模塊能夠有效的運(yùn)行。(2)注冊后的用戶登錄通過用黑盒測試的方法,對首頁界面上的用戶登錄超鏈接進(jìn)行點(diǎn)擊之后,便進(jìn)入對應(yīng)的用戶登錄界面,而后再遵照下面的測試步驟來進(jìn)行操作:首先用戶需要在對應(yīng)的文本框中輸入自己正確的用戶登錄信息,而后再進(jìn)行點(diǎn)擊登錄按鈕的操作,在輸入用戶信息過程中,用戶必須正確輸入自己的用戶名和密碼,也就是說該用戶需要用已存在于數(shù)據(jù)庫表中信息來進(jìn)行填入,若用戶正確操作,最終結(jié)果會顯示用戶登錄成功,同時系統(tǒng)會自動跳轉(zhuǎn)到登錄成功后的后主界面當(dāng)中;其次用戶應(yīng)按照“用戶名或密碼未進(jìn)行輸入”以及“用戶名或密碼錯誤輸入(即數(shù)據(jù)庫中事先未注冊該用戶信息)”等一系列的錯誤提示信息來輸入相關(guān)的用戶登錄信息,然后在點(diǎn)擊登錄按鈕,觀察系統(tǒng)相應(yīng)的運(yùn)行結(jié)果。最后系統(tǒng)結(jié)果顯示用
戶登錄失敗,系統(tǒng)會進(jìn)行相應(yīng)的錯誤信息提示。如下圖5-3用戶登錄失敗圖所示:“防災(zāi)來必飽”網(wǎng)上訂餐系統(tǒng)用戶登錄zhow.m登錄柒畋,請輸入正確的用戶名和密碼!圖5-3用戶登錄失敗圖由上可知,在該系統(tǒng)中,用戶進(jìn)行登錄時需要輸入正確的用戶名與密碼,即所輸入的用戶信息必須與事先注冊的信息相一致。經(jīng)過以上一系列的測試,就可說明該系統(tǒng)功能模塊能夠有效的運(yùn)行。(3)用戶的注冊信息修改通過黑盒測試的測試方法,在首頁界面的相應(yīng)位置上點(diǎn)擊用戶信息這一超鏈接之后,就可以進(jìn)入用戶注冊信息這一頁面,而后在此頁面中點(diǎn)擊修改鏈接,從而進(jìn)入用戶信息修改這一頁面。此模塊測試方法與之前用戶注冊部分測試方法類似,對此我就不做再次說明了。5.2.2餐飲信息的查詢模塊測試通過黑盒測試的測試方法,將用戶想要訂購的餐飲信息輸入到首頁界面中的餐飲查詢文本框中,從而達(dá)到檢索餐飲信息的目的。然后再按照如下具體操作步驟來進(jìn)行測試:在信息檢索的對應(yīng)文本框中輸入正確的某一餐飲的大致信息內(nèi)容,而后再點(diǎn)擊查詢按鈕,觀察系統(tǒng)的運(yùn)行結(jié)果,如果最終結(jié)果顯示為餐飲信息檢索成功,則系統(tǒng)會自動地跳轉(zhuǎn)到餐飲信息的顯示界面;相反,若在信息檢索的對應(yīng)文本框中輸入錯誤的餐飲信息(即所輸入放入餐飲名稱不存在于系統(tǒng)之中),其后再點(diǎn)擊查詢按鈕,觀察系統(tǒng)的運(yùn)行結(jié)果,如果最終結(jié)果顯示為餐飲信息檢索失敗,則系統(tǒng)會自動的跳出“所輸入餐飲不存在”這一提示信息。由此可得結(jié)論為在該系統(tǒng)中,只有當(dāng)用戶輸入的餐飲信息已存在于數(shù)據(jù)庫之中時,用戶才能對餐飲信息檢索成功。經(jīng)過以上一系列的測試,就可說明該系統(tǒng)功能模塊能夠有效的運(yùn)行。5.2.3網(wǎng)上餐飲的訂購模塊測試通過黑盒測試的測試方法,對首頁界面的相應(yīng)位置中的餐飲名稱或餐飲圖片鏈接進(jìn)行點(diǎn)擊,就會進(jìn)入對應(yīng)的餐飲訂購頁面之中。先進(jìn)行如下操作:首先在線訂購一種餐飲,點(diǎn)擊對應(yīng)的訂購鏈接后系統(tǒng)就會自動地跳轉(zhuǎn)到填寫訂購數(shù)量的頁面當(dāng)中,在這個頁面中進(jìn)行正確書寫訂購餐飲的數(shù)量,而后再點(diǎn)擊提交按鈕,觀察訂餐系統(tǒng)的運(yùn)行顯示結(jié)果,若該餐飲訂購的信息己顯示成功添加到購物車中,那么此次餐飲訂購成功完成;相反在線訂購一種餐飲,點(diǎn)擊訂購鏈接后系統(tǒng)自動跳轉(zhuǎn)到書寫訂購餐飲數(shù)量的頁面中,并且在此頁面中輸入錯誤的餐飲訂購數(shù)量,而后點(diǎn)擊提交按鈕,再觀察系統(tǒng)的運(yùn)行結(jié)果,若最終結(jié)果顯示該餐飲的訂購信息未成功地添加到購物車中,那么系統(tǒng)會顯示訂購餐飲數(shù)量輸入錯誤的信息。由此可得結(jié)論為在該系統(tǒng)中,只有當(dāng)用戶在網(wǎng)上訂購餐飲時輸入的訂購數(shù)量為整型時,才可以順利通過該模塊的測試,從而驗(yàn)證其有效運(yùn)行。5.2.4購物車模塊的測試通過黑盒測試的測試方法,對首頁界面的相應(yīng)位置中點(diǎn)擊購物車這一超鏈接之后,就可以進(jìn)入相應(yīng)的購物車管理界面,而后對該模塊進(jìn)行對應(yīng)的測試:首先在此界面中點(diǎn)擊對應(yīng)的刪除鏈接,然后觀察該系統(tǒng)的運(yùn)行結(jié)果,若最終結(jié)果顯示出剛才刪除的餐飲信息在此購物車中消失不見,則系統(tǒng)就會返回購物車的當(dāng)前顯示界面;而后再點(diǎn)擊清空購物車,將所有顯示在此界面中的餐飲信息都進(jìn)行刪除操作,最后再點(diǎn)擊提交購物車鏈接,檢查觀看此系統(tǒng)的運(yùn)行結(jié)果,若最終顯示結(jié)果為購物車提交失敗,并且該系統(tǒng)提示購物車已清空。效果顯示圖如下圖5-5:,歡迎您使用“防災(zāi)來必飽”科上訂餐系統(tǒng),祝您訂餐愉快!“防災(zāi)未必館L購物車J榕游中有山?陶對不起.您的陶物車已落空,不笛提交!圖5-5購物車提交失敗示意圖由此可得結(jié)論為在該系統(tǒng)中,當(dāng)用戶用購物車進(jìn)行網(wǎng)上訂購餐飲時必須對它操作正確,才可以順利通過該模塊的測試,從而驗(yàn)證其有效運(yùn)行,否則將會有系統(tǒng)提示錯誤。5.2.5餐飲訂單的測試通過黑盒測試的測試方法,當(dāng)用戶成功地提交購物車之后,系統(tǒng)就會自動地跳轉(zhuǎn)到相應(yīng)的界面,即填寫用戶信息的餐飲訂單的界面,而后按照正確的步驟來進(jìn)行相應(yīng)的測試:首先正確地填寫用戶的信息,然后再點(diǎn)擊提交按鈕,接著再檢查看看此系統(tǒng)的運(yùn)行結(jié)果,若收貨人的姓名,地址,聯(lián)系電話及支付方式都進(jìn)行了正確地填寫,則最終結(jié)果就會顯示此餐飲訂單成功生成,系統(tǒng)就會自動地跳轉(zhuǎn)到對應(yīng)的訂單生成界面;相反錯誤填寫用戶信息,而后點(diǎn)擊提交按鈕之后,檢查觀看該系統(tǒng)的運(yùn)行結(jié)果,若收貨人的姓名,地址,聯(lián)系電話及支付方式全部未填寫或部分未填寫,則結(jié)果就會顯示此餐飲訂單未成功生成,系統(tǒng)就會顯示出相應(yīng)的錯誤提示信息。歡迎您哽用“防災(zāi)來必飽"網(wǎng)上訂餐系統(tǒng),祝您訂餐愉快! *“防災(zāi)來必飽”眼上訂餐系統(tǒng)用戶登袤ifi群k收貨大回法信息訂崔人:周武在生地址:I I不^為空坪的編碼:10DQL6聯(lián)系電話: 不能為空廣大文優(yōu)質(zhì)談發(fā)堀和.訂單附言:魂乳捉空圖5-6接貨客戶信息輸入錯誤由此可得結(jié)論為在該系統(tǒng)中,當(dāng)用戶用輸入自身信息時必須,,收貨人姓名,地址,聯(lián)系電話及付款方式等信息必須填寫,才可以順利通過該模塊的測試,從而驗(yàn)證其有效運(yùn)行,否則將會有系統(tǒng)提示錯誤。管理員模塊的測試通過黑盒測試的測試方法,在首頁界面上點(diǎn)擊管理員登錄的鏈接后,系統(tǒng)就會自動地跳轉(zhuǎn)到管理員登錄界面,該模塊測試過程與之前所述的用戶登錄模塊測試完全一致,此處就不再重復(fù)敘述了。除此之外,當(dāng)管理員在成功地登錄此模塊系統(tǒng)進(jìn)入該管理界面之后,點(diǎn)擊用戶信息管理這一鏈接后就會進(jìn)入用戶信息管理界面,而后對此界面上的刪除鏈接進(jìn)行點(diǎn)擊,再檢查觀看此系統(tǒng)的運(yùn)行結(jié)果,最后顯示該系統(tǒng)跳轉(zhuǎn)到相應(yīng)的用戶信息管理界面,之前清除的相關(guān)用戶信息就會在此界面中消失不見。由此可得結(jié)論為在該系統(tǒng)中,通過以上相關(guān)測試,就可驗(yàn)證該系統(tǒng)模塊能夠正確有效的運(yùn)行。餐飲信息管理的測試通過黑盒測試的測試方法,當(dāng)系統(tǒng)管理員登錄該系統(tǒng)進(jìn)入相應(yīng)的管理界面之后,而后再點(diǎn)擊餐飲信息管理鏈接,就可以進(jìn)入對應(yīng)的餐飲信息管理界面,同時按照以下的方法來進(jìn)行測試:點(diǎn)擊添加餐飲鏈接后,就可以進(jìn)入餐飲添加這一頁面,并且在此頁面中輸入正確的新添餐飲信息,然后再單擊添加鏈接,檢查系統(tǒng)最后的運(yùn)行結(jié)果,規(guī)定必須填入餐飲的名稱,訂購數(shù)量和訂價等信息,若最終結(jié)果顯示出此餐飲信息已添加到數(shù)據(jù)庫成功,則此次填寫信息完成;相反當(dāng)管理員在系統(tǒng)管理界面上輸入錯誤的餐飲信息,而后單擊添加鏈接,再檢查這個系統(tǒng)的最終運(yùn)行結(jié)果,若餐飲名稱,訂購單位,訂價全部都未輸入或者部分未輸入,則最終結(jié)果的顯示出此餐飲信息添加失敗這一系統(tǒng)提示錯誤信息;而后在餐飲信息管理頁面中單擊此界面上的相應(yīng)修改鏈接,從而就能進(jìn)入對應(yīng)的餐飲修改頁面,此處測試的過程與之前的餐飲添加測試部分的方法完全一致,此處就不再重復(fù)敘述了;最后對此餐飲信息管理頁面中的刪除鏈接進(jìn)行測試,然后再檢查觀看此系統(tǒng)的運(yùn)行結(jié)果,若最后該管理界面中并無顯示刪除之后的相應(yīng)餐飲信息,則此次操作正確的完成。由此可得結(jié)論為在該系統(tǒng)中,當(dāng)系統(tǒng)管理員對餐飲信息進(jìn)行正確的添加,修改以及刪除等操作后,再通過一系列相關(guān)測試,就可有效地驗(yàn)證該模塊的運(yùn)行。5.2.8訂單管理的測試通過黑盒測試的測試方法,當(dāng)系統(tǒng)管理員成功地登錄系統(tǒng)并且進(jìn)入管理界面之后,單擊訂單信息管理這一鏈接后就可進(jìn)入相應(yīng)的訂單信息管理界面,然后再按照以下的方法來進(jìn)行測試:在訂單管理界面中的相應(yīng)位置單查看餐飲信息詳情這一鏈接后,就能夠進(jìn)入對應(yīng)的餐飲訂單詳情顯示頁面,然后在此界面中修改這一訂單,最后再檢查觀看該系統(tǒng)的最終運(yùn)行結(jié)果,若該結(jié)果顯示出系統(tǒng)的訂單管理頁面,則此次修改訂單成功;之后在訂單管理頁面中單擊相應(yīng)的刪除鏈接,而后再觀察該系統(tǒng)的運(yùn)行結(jié)果,若最后該管理界面中并無顯示刪除之后的相應(yīng)餐飲信息,則此次操作正確的完成。由此可得結(jié)論為在該系統(tǒng)中,通過以上相關(guān)測試,就可驗(yàn)證該系統(tǒng)模塊能夠正確有效的運(yùn)行。第六章結(jié)束語網(wǎng)上訂餐系統(tǒng)是當(dāng)今世界信息化高度發(fā)展的產(chǎn)物,也是人們適應(yīng)高節(jié)奏生活的必然要求。它不僅為世界餐飲企業(yè)帶來了餐飲文化的變革,為企業(yè)顯著的提高了工作效率,節(jié)約了大量成本開支,同時也為忙于工作而無暇做飯的人們提供了便利,為他們節(jié)省了大量的時間和精力。如今積極利用信息化技術(shù)來加快經(jīng)濟(jì)信息化建設(shè)的發(fā)展,已成為我國經(jīng)濟(jì)發(fā)展的迫切要求。對于當(dāng)今就業(yè)問題而言,合理利用因特網(wǎng)技術(shù)來發(fā)展電子商務(wù),開發(fā)就業(yè)新渠道,擴(kuò)展信息化就業(yè)道路,已成為當(dāng)代發(fā)展的重要課題。該系統(tǒng)就是這樣的背景下不斷發(fā)展起來的,它以系統(tǒng)科學(xué)的角度出發(fā),應(yīng)用JSP以及MYSQL數(shù)據(jù)庫管理系統(tǒng)等相關(guān)技術(shù),開發(fā)出具有前臺餐飲顯示、后臺信息管理的網(wǎng)上訂餐系統(tǒng)。本文是對該系統(tǒng)開發(fā)與設(shè)計過程的描述,由于本人在系統(tǒng)開發(fā)方面上的不足,因此該系統(tǒng)還存在的一些技術(shù)性缺陷,這是在所難免的,這些都有待在今后的學(xué)習(xí)過程中不斷地完善。隨著電子商務(wù)網(wǎng)站的普及,網(wǎng)上購物的理念也漸漸深入人心,成為了一種人們?nèi)粘Y徫锏奶厥獾姆绞?。該系統(tǒng)的研究將會與時俱進(jìn),向更加完善的層次發(fā)展,從而為我國餐飲信息化的建設(shè)提供更加有效發(fā)展機(jī)遇。致謝經(jīng)過將近半年時間的努力,基于web的網(wǎng)上訂餐系統(tǒng)的設(shè)計與實(shí)現(xiàn)這一課題的論文終于順利完成了,這一切都要?dú)w功于學(xué)校與老師的全面支持和耐心的指導(dǎo)。在開發(fā)該系統(tǒng)的過程中,我深刻感受到自己在網(wǎng)頁開發(fā)方面的理論知識的嚴(yán)重不足,從而使我在系統(tǒng)開發(fā)與論文寫作方面遇到很多麻煩。但是指導(dǎo)老師仍然不厭其煩地幫我解答技術(shù)上的疑難問題,幫我豐富了自己所缺欠的理論知識,這使我在做畢業(yè)設(shè)計過程中少走了許多彎路,同時在論文寫作方面也給予了我很大的啟示,為此我向指導(dǎo)老師表達(dá)最真摯的感謝。感謝防災(zāi)科技學(xué)院為我提供了這次開發(fā)網(wǎng)上訂餐系統(tǒng)的機(jī)會,給我提供了良好的學(xué)習(xí)環(huán)境。同時也感謝防災(zāi)科技學(xué)院的老師們,感謝他們在大學(xué)期間的課堂上教授了我完成畢業(yè)設(shè)計所需的知識以及在最后論文上的仔細(xì)審閱。最后我還要感謝我的同學(xué)對我在學(xué)習(xí)上的關(guān)心和幫助,是他們在我開發(fā)系統(tǒng)過程中給予了必要的幫助,他們的幫助使我獲益匪淺。參考文獻(xiàn)[1]殷兆麟,張永平,姜淑娟:Java網(wǎng)絡(luò)高級編程[M].北京:清華大學(xué)出版社,2005.[2]汪大樂:JavaWeb開發(fā)技術(shù)詳解.北京:北京科海電子出版社,2008(8).[3]申吉紅、廖學(xué)峰、余?。篔SP課程設(shè)計案例精編.北京:清華大學(xué)出版社,2007(2).[4]張銀鶴、劉治國、張豪:JSP動態(tài)網(wǎng)站開發(fā)實(shí)踐教程.北京:清華大學(xué)出版社,2007(1).金清苗:畢業(yè)論文設(shè)計寫作.陜西:西北農(nóng)林科技大學(xué)出版社,2007(8).徐孝凱:計算機(jī)專業(yè)畢業(yè)設(shè)計寶典.北京:中央廣播電視大學(xué)出版,2005(4).鄭玲:計算機(jī)畢業(yè)設(shè)計指導(dǎo).北京:清華大學(xué)出版社,2007(4).[8]禹奇才:廣州大學(xué)2006屆優(yōu)秀畢業(yè)論文.廣東:華南理工大學(xué)出版社,2006(11).禹奇才:廣州大學(xué)2005屆優(yōu)秀畢業(yè)論文.廣東:華南理工大學(xué)出版社,2005(5).肖基毅:高等學(xué)校計算機(jī)科學(xué)與技術(shù)專業(yè)畢業(yè)設(shè)計(論文)指導(dǎo).北京:國防科大出版社,2003(11).[11]孫衛(wèi)琴:精通Struts:基于MVC的JavaWeb設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004.JaysonFalkner.JSPWeb編程指南[M].北京:電子工業(yè)出版社,2002.[13]申莉莉:數(shù)據(jù)庫系統(tǒng)與ACCESS教程.北京:清華大學(xué)出版社,2003.趙杰:畢業(yè)設(shè)計指導(dǎo)及案例剖析:數(shù)據(jù)庫應(yīng)用方向.北京:清華大學(xué)出版社,2005(3).[15]方睿,刁仁宏,吳四九:網(wǎng)絡(luò)數(shù)據(jù)庫原理及應(yīng)用[M].成都:四川大學(xué)出版社,2005.[16]葉寒,管賢平:SQLServer2005編程入門經(jīng)典(第2版)[M].北京:清華大學(xué)出版社,2007.[17]鄒永貴:Access數(shù)據(jù)庫原理與應(yīng)用[M].北京:北京郵電大學(xué)出版社,2008.[18]蔡琴:餐飲管理系統(tǒng)的設(shè)計與開發(fā)[D].成都:電子科技大學(xué),2007.[19]蔣春蕾:酒店管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2006.[20]志艷,張亮,馬建紅:JSP實(shí)用簡明教程.北京:清華大學(xué)出版社,2006.[21]周影.網(wǎng)絡(luò)編程語言JSP實(shí)例教程[M].北京:電子工業(yè)出版社,2003.[22]孫衛(wèi)琴,李洪成:Tomcat與Java.Web開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2004.[23]王夕寧、王曉平:JSP通用模塊及典型系統(tǒng)開發(fā)實(shí)例導(dǎo)航.北京:人民郵電出版社,2006(2).[24]胡虛懷,楊志,李煥:J2ME移動設(shè)備程序設(shè)計[M].北京:清華大學(xué)出版社.2005.[25]杜軒華,袁方:web開發(fā)技術(shù).上海:上海大學(xué)出版社.2005(4):22-38[26]陳駿:網(wǎng)上飛機(jī)票預(yù)訂系統(tǒng)設(shè)計與實(shí)現(xiàn).四川:西南科技大學(xué)出版社,2010(5).[27]李勇平,陳峰波:ASP基礎(chǔ)教程,北京:清華大學(xué)出版社,2006(2).[28]胡百敬,姚巧玫:ACCESS2003數(shù)據(jù)庫開發(fā)詳解,北京:電子工業(yè)出版社,2007(8).[29]陳建偉,李美軍,施建強(qiáng):ASP動態(tài)網(wǎng)站開發(fā)教程.北京:清華大學(xué)出社,2005(4).[30]郭建平:基于ASP網(wǎng)上購物系統(tǒng)的開發(fā)與設(shè)計[J].福建:龍巖市科技情報研究所,2010(19).[31]王明華:用ASP技術(shù)實(shí)現(xiàn)網(wǎng)上購物系統(tǒng).福建:閩江學(xué)院現(xiàn)代教育技術(shù)中心,2009(25).附錄代碼1:<%@pagecontentType="text/html;charset=gb2312"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Frameset//EN""/TR/xhtml1/DTD/xhtml1-frameset.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>代五卜>防災(zāi)來必飽網(wǎng)上訂餐系統(tǒng)首頁</title></head><framesetcols="2%,*,2%"frameborder="no"border="0"framespacing="0"><framesrc=left1.jspname=left1Framescrolling=nonoresize=noresizeid="left1Frame"title="left1Frame"/><framesetrows="18%,*,8%"frameborder="no"border="0"framespacing="0"><framesrc="top.jsp"name="topFrame"scrolling="no"noresize="noresize"id="topFrame"title="topFrame"/><framesetcols="20%,*"framespacing="0"frameborder="no"border="0"><framesrc=left.jspname=leftFramescrolling=nonoresize=noresizeid="leftFrame“title="leftFrame”/><framesrc—main.jspname—mainFramescrolling—nonoresize—noresizeid="mainFrame“title—"mainFrame"/></frameset><framesrc—“foot.jsp“name—“footFrame“scrolling—“no“id—“foodFrame“title—“foodFrame“/></frameset><framesrc—“right1.jsp“name—“right1Frame“scrolling—“no“noresize—“noresize“id—“right1Frame“title—“right1Frame“/></frameset><noframes><body></body></noframes></html>代碼2:publicclassLoginServletextendsHttpServlet{protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{Stringtype—req.getParameter(“type“);if(“userlogin“.equals(type)){Stringusername—req.getParameter(“username“);Stringuserpwd—req.getParameter(“userpwd“);UserEntityuser—newUserDao().findUserIsExist(username,userpwd);if(user——null){req.getSession().setAttribute("errormsg","對不起,該用戶不存在,請確認(rèn)用戶名和密碼輸入正確!");res.sendRedirect("login.jsp?role=user");}else{if(username.equals(user.getLoginName())&&userpwd.equals(user.getLoginPwd())){//修改用戶最后登錄時間newUserDao().modifyUserLastLoginTime(user.getUserId());req.getSession().setAttribute("loginuser",user);req.getRequestDispatcher("MealServlet?type=findpart").forward(req,res);}}}elseif("adminlogin".equals(type)){Stringadminname=req.getParameter("adminname");Stringadminpwd=req.getParameter("adminpwd");AdminEntityadmin=newAdminDao().findAdminIsExist(adminname,adminpwd);if(admin==null){req.getSession().setAttribute("errormsg","對不起,該用戶不存在,請確認(rèn)登錄名和密碼輸入正確!");res.sendRedirect("login.jsp?role=admin");}else{if(adminname.equals(admin.getAdminName())&&adminpwd.equals(admin.getAdminPwd())){req.getSession().setAttribute("loginadmin",admin);req.getRequestDispatcher("UserServlet?type=findusers").forward(req,res);}}}}}代碼3:Stringtype=req.getParameter("type");if("reg".equals(type)){Stringloginname=req.getParameter("loginname");Stringloginpwd=req.getParameter("loginpwd");Stringtruename=req.getParameter("truename");Stringidcard=req.getParameter("idcard");Stringtelephone=req.getParameter("telephone");Stringemail=req.getParameter("email");UserEntityu=newUserEntity();u.setLoginName(loginname);u.setLoginPwd(loginpwd);u.setTrueName(truename);u.setIdCard(idcard);u.setTelephone(telephone);u.setEmail(email);u.setDefaultAddress(req.getParameter("defaultaddress"));try{newUserDao().addUser(u);}catch(Exceptione){e.printStackTrace();}req.getRequestDispatcher("/login.jsp").forward(req,res);}代碼5:publicclassUserServletextendsHttpServlet{protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{Stringtype=req.getParameter("type");if("findusers".equals(type)){Listlist=newUserDao().findUserAll();req.setAttribute("userlist",list);req.getRequestDispatcher("allUsers.jsp").forward(req,res);}}}代碼6:publicclassShoppingCartServletextendsHttpServlet{protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{Stringtype=req.getParameter("type");if("add".equals(type)){if(req.getParameter("mid")!=null){intmealId=newInteger(req.getParameter("mid")).intValue();MealEntitymeal=newMealDao().findMealById(mealId);this.makeShoppingCart(req).addMeal(meal);}}elseif("clearcart".equals(type)){this.makeShoppingCart(req).clearShopCart();}res.sendRedirect("shoppingCart.jsp");}protectedShoppingCartUtilmakeShoppingCart(HttpServletRequestreq){ShoppingCartUtilshoppingcart=(ShoppingCartUtil)req.getSession().getAttribute("cart");if(shoppingcart==null){shoppingcart=newShoppingCartUtil();req.getSession().setAttribute("cart",shoppingcart);returnshoppingcart;}else{returnshoppingcart;}}}代碼7:publicintgetAllOrderCount(){returnallOrderCount;}publicvoidsetAllOrderCount(intallOrderCount){this.allOrderCount=allOrderCount;}publicDategetCreateTime(){returncreateTime;}publicvoidsetCreateTime(DatecreateTime){this.createTime=createTime;}publicStringgetIdCard(){returnidCard;}publicvoidsetIdCard(StringidCard){this.idCard=idCard;}publicStringgetIsVIP(){returnisVIP;}publicvoidsetIsVIP(StringisVIP){this.isVIP=isVIP;publicDategetLastLoginTime(){returnlastLoginTime;}publicvoidsetLastLoginTime(DatelastLoginTime){this.lastLoginTime=lastLoginTime;}publicStringgetLoginName(){returnloginName;}publicvoidsetLoginName(StringloginName){this.loginName=loginName;}publicStringgetLoginPwd(){returnloginPwd;}publicvoidsetLoginPwd(StringloginPwd){this.loginPwd=loginPwd;}publicStringgetStartUpState(){returnstartUpState;}publicvoidsetStartUpState(StringstartUpState){this.startUpState=startUpState;}publicStringgetTrueName(){returntrueName;}publicvoidsetTrueName(StringtrueName){this.trueName=trueName;}publicintgetUserId(){returnuserId;}publicvoidsetUserId(intuserId){this.userId=userId;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.email=email;}publicStringgetTelephone(){returntelephone;}publicvoidsetTelephone(Stringtelephone){this.telephone=telephone;}publicStringgetDefaultAddress(){returndefaultAddress;}publicvoidsetDefaultAddress(StringdefaultAddress){this.defaultAddress=defaultAddress;}}代碼8:publicclassAdminEntity{privateintadminld;privateStringadminName;privateStringadminPwd;privateStringpurview;publicAdminEntity(){super();}publicAdminEntity(intadminId,StringadminName,StringadminPwd,Stringpurview){super();this.adminId=adminId;this.adminName=adminName;this.adminPwd=adminPwd;this.purview=purview;}publicintgetAdminId(){returnadminId;}publicvoidsetAdminId(intadminId){this.adminId=adminId;}publicStringgetAdminName(){returnadminName;}publicvoidsetAdminName(StringadminName){this.adminName=adminName;}publicStringgetAdminPwd(){returnadminPwd;}publicvoidsetAdminPwd(StringadminPwd){this.adminPwd=adminPwd;}publicStringgetPurview(){returnpurview;}publicvoidsetPurview(Stringpurview){this.purview=purview;}}代碼9:publicclassAdminDao{Connectioncon;PreparedStatementps;ResultSetrs;publicAdminEntityfindAdminIsExist(Stringaname,Stringapwd){AdminEntityadminEntity=null;try{con=newBaseDao().getConn();ps=con.prepareStatement("selectAdminId,LoginName,LoginPwd,PurviewfromAdminwhereLoginName=?andLoginPwd=?");ps.setString(1,aname);ps.setString(2,apwd);rs=ps.executeQuery();if(rs.next()){adminEntity=newAdminEntity();adminEntity.setAdminId(rs.getInt("AdminId"));adminEntity.setAdminName(rs.getString("LoginName"));adminEntity.setAdminPwd(rs.getString("LoginPwd"));adminEntity.setPurview(rs.getString("Purview"));}}catch(Exceptione){e.printStackTrace();}returnadminEntity;}}代碼10:/***查詢所有的用戶信息*/
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政府在外商投資中的角色與責(zé)任
- 改善外商投資的金融支持環(huán)境分析
- 變電站無人機(jī)巡檢的數(shù)據(jù)分析與異常檢測
- 高考數(shù)學(xué)(人教A版文科)一輪復(fù)習(xí)考點(diǎn)規(guī)范練53
- 2017-2018學(xué)年物理人教版必修2講義第5章曲線運(yùn)動第5節(jié)
- 論技工院校計算機(jī)應(yīng)用課程的開放式教學(xué)
- 精神病強(qiáng)制醫(yī)療程序的救濟(jì)機(jī)制研究
- 小兒不同病理分型闌尾炎臨床特點(diǎn)研究
- 養(yǎng)陰益氣活血法減少糖尿病GK大鼠血糖波動的機(jī)制探索
- DB11T-鋼筋套筒灌漿連接技術(shù)規(guī)程編制說明
- 魯教版八年級美術(shù)下冊《自己設(shè)計動漫形象》教學(xué)課件
- 急性胰腺炎評分表大全
- 文件、檔案借閱申請表
- PPP項(xiàng)目從建設(shè)期進(jìn)入運(yùn)營期需要梳理哪些程序
- 四川大學(xué)教案-《高級語言程序設(shè)計I》
- DBJ50T 135-2012 綠色建筑設(shè)計規(guī)范
- 幼兒園大班數(shù)學(xué):《10以內(nèi)的相鄰數(shù)》課件
- 304不銹鋼圓管檢驗(yàn)報告
- “師徒結(jié)對”工作實(shí)施方案
- 少兒美術(shù)-五彩的蛋殼參考PPT1
- 小學(xué)勞動教育 一年級 活動六《餐前準(zhǔn)備我?guī)兔Α?PPT 課件
評論
0/150
提交評論