課程設計實驗報告-綜合軟件設計_第1頁
課程設計實驗報告-綜合軟件設計_第2頁
課程設計實驗報告-綜合軟件設計_第3頁
課程設計實驗報告-綜合軟件設計_第4頁
課程設計實驗報告-綜合軟件設計_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

課程設計實驗報告 模塊名稱綜合軟件設計專業(yè)信息工程設計題目1.基于WEB的在線考試系統(tǒng)2.基于WEB的網(wǎng)上商城系統(tǒng)3.五子棋小游戲任務要求1.實驗報告要求寫出實驗目的、實驗內容、實驗過程及結果。2.對環(huán)境安裝的要求寫出工具選擇、使用,寫出安裝步驟;3.分析與實驗體會、實驗中遇到的問題及改進的設想。4.實驗報告要書寫規(guī)范、文字簡練、語句通順、圖表清晰。實驗設備及軟件WINDOW7+JDK1.8.0+Myeclipse+MySQLServer+Mysql-Front+Tomcat同組人員學號及姓名參考文獻[1]孫印杰等編著.Java編程案例精解.北京:

電子工業(yè)出版社,

2005[2]向學哲,柳慶勇,王桂娟編著.JSP程序設計教程.北京:

人民郵電出版社,

2006

目錄1.基于WEB的在線考試系統(tǒng)一.設計要求1.1…設計要求1.2…原理說明二.需求分析2.1…功能需求2.2…性能需求三.流程圖設計3.1…系統(tǒng)用例圖3.2…系統(tǒng)總結構圖四.程序設計4.1…數(shù)據(jù)庫結構設計4.2…系統(tǒng)功能設計與實現(xiàn)五.設計小結

1.基于WEB的在線考試系統(tǒng)一.設計要求1.1…設計要求編輯生成試題庫,隨機生成本次考試試題,同時提供在先評分并保存結果。1.2…原理說明運用編程工具開發(fā),采用C/S結構,設計數(shù)據(jù)庫模型。二.需求分析2.1…功能需求首先,因為考試是面向特定的某些對象的,所以考試者進入系統(tǒng)應該進行身份驗證。考試者進入考試系統(tǒng)后,可以查詢到需要參加的考試項目。在線考試于一般的單機考試是不同的。鑒于考試環(huán)境一般為機房,考試者之間的距離很近,為了在線考試做到規(guī)范,對于每個應試者來說,試卷的題型和題量都應是相同的,但試題并不相同。在線考試基于網(wǎng)絡環(huán)境,試卷應該從服務器的數(shù)據(jù)庫隨機抽取試題后動態(tài)生成的,不過也能手工生成試卷。此外,應該能夠方便、快捷的對在線考試系統(tǒng)進行管理,用戶只有在試卷結束后才能查詢到自己的成績。綜上所述。在線考試系統(tǒng)需要有如下的綜合需求:1.適合的用戶權限綜合考慮各種因素后,我只設了二種合法用戶:管理員、學生,合法用戶要經(jīng)過有效的身份驗證方可登錄。這二種用戶必須在被授權以后才能使用本系統(tǒng)的資源。合法用戶可以使用的系統(tǒng)資源根據(jù)用戶身份的不同而定,管理員主要負責系統(tǒng)后臺的管理,包括題庫管理、試卷管理、課程管理、學生信息管理、成績統(tǒng)計等。學生可以進行登錄、參加考試、查詢成績等操作。2.適合的網(wǎng)絡環(huán)境在線考試系統(tǒng)能夠方便地運行在網(wǎng)絡環(huán)境下,用戶使用客戶機可以方便簡捷地訪問考試系統(tǒng)。管理員用戶可以通過網(wǎng)絡來管理題庫、管理學生用戶、安排考試、查詢考試成績和查看試卷分析結果等,學生用戶可以通過網(wǎng)絡來參加網(wǎng)上考試和查詢考試成績等。3.完備的考試功能在線考試系統(tǒng)應該具有和在線考試密切相關的基本功能,用戶可以方便的完成在線考試的常規(guī)基本操作。參加考試:在學生登錄系統(tǒng)以后,可以查詢到需要參加的考試項目,選擇參加考試后即進入考試中??荚嚨念}目按格式列出,完成答卷后,學生可以提交答卷。學生管理:管理員登錄后,可以對學生的信息進行維護。課程管理:管理課程的一些信息,包括課程錄入、刪除等操作。題庫管理:管理員登錄后對題庫進行維護,可以進行題目的添加,修改和刪除操作。試卷管理:從題庫中抽取題目,形成試卷??季碓u分:對考試完畢的考生的考卷進行自動評分操作。2.2…性能需求對于一個系統(tǒng)來說,要注意以下幾個很關鍵的因素:實用性:對于在線考試系統(tǒng)的開發(fā),實用性應該放在首位。能夠滿足一般客觀題型的要求,比如:單項選擇題,多項選擇題,填空題,問答題等題型。在詳細了解一組基本的需求定義后,我們可以快速地建立起一個目標系統(tǒng)的初級版本,再根據(jù)各種用戶使用和評價的結果,經(jīng)過修改補充后,形成改進的版本,反復以上的過程,直至達到用戶滿意為止,最終得到的完善的版本??煽啃?服務質量的一個重要方面就是能夠在期望的響應時間內訪問信息。對需要通過Internet的應用程序或信息的單位用戶來說,還意味著必須在用戶期望的時間內為用戶提供其需要的信息。試想一個同時有幾百甚至幾千人訪問的考試系統(tǒng),一旦服務器發(fā)生阻塞或者崩潰,會帶來怎樣的不可想象的麻煩。另外太長的延遲時間也會給考生帶來不便??蓴U展性:可擴展性是指系統(tǒng)能保證可持續(xù)增長以滿足用戶需求和業(yè)務復雜性要求,Web系統(tǒng)為動態(tài)變化的模型,它們通常一開始很小,但隨著需求的增長而呈指數(shù)級增長。這種增長非常迅速,不僅表現(xiàn)在支持的用戶的數(shù)量上,而且表現(xiàn)在提供的用戶服務的復雜性和集成性方面。對于考試系統(tǒng)而言,這種擴展性就顯得尤為重要,因為考試系統(tǒng)的功能完善是一個漸進的過程,我們目前開發(fā)的這個系統(tǒng)需要隨著考生的要求和技術的發(fā)展而需要不斷改進。所以可擴展性是非常必要的。安全性:安全性是指系統(tǒng)能夠保護數(shù)據(jù)或基礎結構避免受惡意攻擊或者盜用。安全性是通過為信息的機密性,完整性和可靠性提供充分的保護來預防風險,保障系統(tǒng)安全,是任何系統(tǒng)成功的基本要素??晒芾硇?可管理性是指可以很方便地對系統(tǒng)進行管理,確保系統(tǒng)的正常運行管理和運作涉及以下幾個因素:維護系統(tǒng)服務及其服務正常工作所需的基礎結構,工具以及管理員和技術人員。考試系統(tǒng)的主機是放在學校的遠程教育學院機房中,但是對考試教務的管理員也許并不在遠程教育學院中,因此,系統(tǒng)的管理和監(jiān)控必須能夠遠程完成。三.流程圖設計3.1…系統(tǒng)用例圖根據(jù)需求分析,系統(tǒng)的用例圖如下:3.2…系統(tǒng)總結構圖同樣由上章得需求分析,可以設計出本系統(tǒng)的總體結構包括二個子系統(tǒng):管理員模塊、學生模塊。系統(tǒng)結構如圖所示。四.程序設計4.1…數(shù)據(jù)庫結構設計根據(jù)在線考試系統(tǒng)的需求,設計對應的數(shù)據(jù)表及功能如下:學生信息表:存放與學生信息相關的信息數(shù)據(jù)。題庫信息表:存放系統(tǒng)所有的題目的基礎信息數(shù)據(jù)。試卷信息表:存放系統(tǒng)所生成的試卷的信息數(shù)據(jù)。管理員信息表:存放管理員的賬號、密碼等數(shù)據(jù)。課程信息表:存放課程的相關信息數(shù)據(jù)。交卷信息表:存放考生考試完畢后的交卷相關信息數(shù)據(jù)。分數(shù)信息表:存放考生分數(shù)的相關信息數(shù)據(jù)。數(shù)據(jù)庫的物理設計(1)學生信息表(t_stu):記錄學生的相關信息,如表4.1所示。表4.1學生信息表列名數(shù)據(jù)類型長度允許空是否主鍵說明stu_idint20否是IDstu_xuehaovarchar50否否學號stu_realnamevarchar50否否姓名stu_sexvarchar50否否性別stu_agevarchar50否否年齡login_namevarchar50否否登錄賬號login_pwvarchar50否否登錄密碼(2)課程信息表(t_kecheng):記錄課程的相關信息,如表4.2所示。表4.2課程信息表列名數(shù)據(jù)類型長度允許空是否主鍵說明kecheng_idint20否是IDkecheng_namevarchar50否否課程名稱(3)題庫信息表(t_timu):記錄考試題目的相關信息,如表4.3所示。表4.3題目信息表列名數(shù)據(jù)類型長度允許空是否主鍵說明timu_idint20否是IDtimu_namevarchar50否否題目名稱timu_leixingvarchar50否否題目類型timu_xuanxiangavarchar50否否選項Atimu_xuanxiangbvarchar50否否選項Btimu_xuanxiangcvarchar50否否選項Ctimu_xuanxiangdvarchar50否否選項Dtimu_daanvarchar50否否題目答案timu_fenshuvarchar50否否題目分數(shù)kecheng_idvarchar50否否課程ID(4)試題信息表(t_shiti):記錄試卷的相關信息,如表4.4所示。表4.4試卷信息表列名數(shù)據(jù)類型長度允許空是否主鍵說明shiti_idint20否是IDshiti_namevarchar50否否試題名稱shiti_jieshaovarchar50否否試題介紹timuIdListvarchar50否否題目ID列表shiti_shijianvarchar50否否發(fā)布時間(5)交卷信息表(t_jiaojuan):記錄試卷的相關信息,如表4.5所示。表4.5交卷信息表列名數(shù)據(jù)類型長度允許空是否主鍵說明jiaojuan_idint20否是IDstu_idint20否否學生IDshiti_idint20否否試題IDtimu_idint20否否題目IDtimu_daanvarchar50否否考試答案(6)分數(shù)信息表(t_fenshu):記錄考試分數(shù)的相關信息,如表4.6所示。表4.6分數(shù)信息表列名數(shù)據(jù)類型長度允許空是否主鍵說明fenshu_idint20否是IDstu_idint20否否學生IDshiti_idint20否否試題IDfenshuint20否否分數(shù)(7)管理員信息表主要記錄的管理員的賬號信息,包括用戶名和密碼,表結構如表4.7所示。表4.7管理員信息表(t_admin)列名數(shù)據(jù)類型長度允許空是否主鍵說明userIdint4否是編號userNamevarchar50否否用戶名userPwvarchar50否否密碼4.2…系統(tǒng)功能設計與實現(xiàn)4.2.1登陸頁面實現(xiàn)1.描述:為了保證系統(tǒng)的安全性,要先使用本系統(tǒng)必須先登陸到系統(tǒng)中,用戶需要正確的賬號和密碼登錄本系統(tǒng)。2.程序運行效果圖如圖4.8所示:圖4.8系統(tǒng)登陸頁面設計3.在登陸頁面輸入用戶名和密碼以,點擊提交按鈕,跳轉到登陸的service中,在該service中會對用戶名,密碼,驗證碼進行判斷,驗證通過進入對應的頁面,loginservice關鍵代碼:publicStringlogin(StringuserName,StringuserPw,intuserType){ Stringresult="no"; if(userType==0)//系統(tǒng)管理員登陸 { Stringsql="fromTAdminwhereuserName=?anduserPw=?"; Object[]con={userName,userPw}; ListadminList=adminDAO.getHibernateTemplate().find(sql,con); if(adminList.size()==0) { result="no"; } else { WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); TAdminadmin=(TAdmin)adminList.get(0); session.setAttribute("userType",0); session.setAttribute("admin",admin); result="yes"; } } if(userType==1) { } if(userType==2)//學生登陸 { Stringsql="fromTStuwhereloginName=?andloginPw=?"; Object[]con={userName.trim(),userPw.trim()}; ListadminList=adminDAO.getHibernateTemplate().find(sql,con); if(adminList.size()==0) { result="no"; } else { WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); TStustu=(TStu)adminList.get(0); session.setAttribute("userType",2); session.setAttribute("stu",stu); result="yes"; } } returnresult; } 4.2.2功能模塊介紹1.描述:系統(tǒng)主頁面:左方頁面展示了管理員可操作的幾大功能,進入相關的管理頁面可以鏈接到子菜單,并且高亮顯示,每個管理模塊下面都有相應的子菜單。2.程序運行效果圖如圖4.9所示:圖4.9管理員主頁面在每個J2EE頁面將會對相關用戶進行攔截操作,這樣可以提高安全性,防止用戶不經(jīng)過登陸頁面而進入任何子菜單頁面:if(session.getAttribute("user")==null){out.print("<script>alert('請先登錄!');window.open('../index.J2EE','_self')</script>"); }4.2.3課程信息管理課程信息添加1.描述:管理員輸入課程信息后點擊錄入按鈕,如果是沒有輸入完整的課程信息,都會給出相應的錯誤提示,不能錄入成功。輸入數(shù)據(jù)都通過form表單中定義的方法onsubmit="returncheckForm()"來檢查,checkForm()函數(shù)中是各種的校驗輸入數(shù)據(jù)的方式。2.程序效果圖如下圖4.10所示圖4.10課程信息添加課程信息管理1.描述:管理員點擊左側的菜單“課程信息管理”,頁面跳轉到課程信息管理界面,調用后臺的action類查詢出所有的課程信息,并把這些信息封轉到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉到相應的JSP,顯示出課程信息。2.程序效果圖如下圖4.11所示圖4.11課程信息管理課程信息管理關鍵代碼:publicStringkechengAdd(){ TKechengkecheng=newTKecheng(); kecheng.setKechengName(kechengName); kecheng.setDel("no"); kechengDAO.save(kecheng); this.setMessage("操作成功"); this.setPath("kechengMana.action"); return"succeed"; } publicStringkechengMana() { Stringsql="fromTKechengwheredel='no'"; ListkechengList=kechengDAO.getHibernateTemplate().find(sql); Maprequest=(Map)ServletActionContext.getContext().get("request"); request.put("kechengList",kechengList); returnActionSupport.SUCCESS; } publicStringkechengDel() { TKechengkecheng=kechengDAO.findById(kechengId); kecheng.setDel("yes"); kechengDAO.attachDirty(kecheng); this.setMessage("操作成功"); this.setPath("kechengMana.action"); return"succeed"; }4.2.4題庫信息管理題目添加1.描述:管理員輸入題目信息后點擊錄入按鈕,如果是沒有輸入完整的題目信息,都會給出相應的錯誤提示,不能錄入成功。輸入數(shù)據(jù)都通過form表單中定義的方法onsubmit="returncheckForm()"來檢查,checkForm()函數(shù)中是各種的校驗輸入數(shù)據(jù)的方式。2.程序效果圖如下圖4.12所示:圖4.12題目信息添加題目信息管理1.描述:點擊左側的菜單“題目信息管理”,頁面跳轉到題庫信息管理界面,調用后臺的action類查詢出所有的題目信息,并把這些信息封轉到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉到相應的JSP,顯示出題目信息。點擊題目標題,系統(tǒng)彈出窗口顯示題目的詳細信息2.程序效果圖如下圖4.12所示圖4.12題庫管理界面設計題目管理關鍵代碼:publicStringtimu_danxuan_Add() { TTimutimu=newTTimu(); timu.setTimuName(timuName); timu.setTimuXuanxianga(timuXuanxianga); timu.setTimuXuanxiangb(timuXuanxiangb); timu.setTimuXuanxiangc(timuXuanxiangc); timu.setTimuXuanxiangd(timuXuanxiangd); timu.setTimuDaan(timuDaan.trim()); timu.setTimuFenshu(timuFenshu); timu.setTimuLeixing(timuLeixing); timu.setKechengId(kechengId); timu.setDel("no"); timuDAO.save(timu); this.setMessage("操作成功"); this.setPath("admin/timu/timuLeixing.jsp"); return"succeed"; } publicStringtimu_duoxuan_Add() { HttpServletRequestrequest=ServletActionContext.getRequest(); StringdaAn=""; String[]timuDaan=request.getParameterValues("timuDaan"); for(intj=0;j<timuDaan.length;j++) { daAn=daAn+timuDaan[j]; } TTimutimu=newTTimu(); timu.setTimuName(timuName); timu.setTimuXuanxianga(timuXuanxianga); timu.setTimuXuanxiangb(timuXuanxiangb); timu.setTimuXuanxiangc(timuXuanxiangc); timu.setTimuXuanxiangd(timuXuanxiangd); timu.setTimuDaan(daAn); timu.setTimuFenshu(timuFenshu); timu.setTimuLeixing(timuLeixing); timu.setKechengId(kechengId); timu.setDel("no"); timuDAO.save(timu); this.setMessage("操作成功"); this.setPath("admin/timu/timuLeixing.jsp"); return"succeed"; } publicStringtimu_jianda_Add() { TTimutimu=newTTimu(); timu.setTimuName(timuName); timu.setTimuDaan(timuDaan.trim()); timu.setTimuFenshu(timuFenshu); timu.setTimuLeixing(timuLeixing); timu.setKechengId(kechengId); timu.setDel("no"); timuDAO.save(timu); this.setMessage("操作成功"); this.setPath("admin/timu/timuLeixing.jsp"); return"succeed"; } publicStringtimuMana() { Stringsql="fromTTimuwheredel='no'orderbykechengId,timuLeixing"; ListtimuList=timuDAO.getHibernateTemplate().find(sql); for(inti=0;i<timuList.size();i++) { TTimutimu=(TTimu)timuList.get(i); timu.setKecheng(kechengDAO.findById(timu.getKechengId())); } Maprequest=(Map)ServletActionContext.getContext().get("request"); request.put("timuList",timuList); returnActionSupport.SUCCESS; } publicStringtimuDel() { TTimutimu=timuDAO.findById(timuId); timu.setDel("yes"); timuDAO.attachDirty(timu); this.setMessage("操作成功"); System.out.println(timu.getKechengId()+"&&&"); this.setPath("timuMana.action"); return"succeed"; }4.2.5試卷信息管理試卷信息添加1.描述:管理員輸入試卷信息后點擊錄入按鈕,如果是沒有輸入完整的試卷信息,都會給出相應的錯誤提示,不能錄入成功。輸入數(shù)據(jù)都通過form表單中定義的方法onsubmit="returncheckForm()"來檢查,checkForm()函數(shù)中是各種的校驗輸入數(shù)據(jù)的方式。2.程序效果圖如下圖4.13所示圖4.13試卷信息添加試卷信息管理1.描述:擊左側的菜單“試卷信息管理”,頁面跳轉到試卷信息管理界面,調用后臺的action類查詢出所有的試卷信息,并把這些信息封轉到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉到相應的JSP,顯示出試卷信息。點擊“題目瀏覽”超練級,系統(tǒng)彈出頁面顯示改試卷所有的題目信息。2.程序效果圖如下圖4.14所示圖4.14試卷信息管理試卷信息管理關鍵代碼:publicStringshitiAdd(){ TShitishiti=newTShiti(); shiti.setShitiName(shitiName); shiti.setShitiJieshao(shitiJieshao); shiti.setTimuIdList(""); shiti.setShitiShijian(newSimpleDateFormat("yyyy-MM-dd").format(newDate())); shiti.setDel("no"); shitiDAO.save(shiti); this.setMessage("操作成功"); this.setPath("shitiMana.action"); return"succeed"; } publicStringshitiMana() { Stringsql="fromTShitiwheredel='no'"; ListshitiList=shitiDAO.getHibernateTemplate().find(sql); Maprequest=(Map)ServletActionContext.getContext().get("request"); request.put("shitiList",shitiList); returnActionSupport.SUCCESS; } publicStringshitiDel() { TShitishiti=shitiDAO.findById(shitiId); shiti.setDel("yes"); shitiDAO.attachDirty(shiti); this.setMessage("刪除成功"); this.setPath("shitiMana.action"); return"succeed"; }4.2.6學生信息管理學生信息管理實現(xiàn)思路和課程管理基本類似,在此就不多作介紹。4.2.7修改個人密碼1.描述:輸入用戶名和用戶的原有密碼,輸入新密碼以后點擊修改按鈕即可修改密碼成功。2.程序效果圖如圖4.15所示:圖4.15修改密碼4.2.8安全退出系統(tǒng)1.描述:點此按鈕回到系統(tǒng)的主頁面。2.關鍵代碼:主要是通過javascript語句來實現(xiàn),item_word[8][4]="退出系統(tǒng)";item_link[8][4]="javascript:window.open('../index.J2EE','_self')";4.2.9學生在線考試1.描述:學生憑借管理員分配的賬號和密碼,登錄系統(tǒng)后,點擊左側的菜單“在線考試”,頁面跳轉到所有的試題信息,然后點擊“開始考試”超連接,進入到考試界面。2.程序運行效果圖如圖4.16所示:考試題目關鍵代碼:<formaction="<%=path%>/shiti_jiaojuan.action"name="form1"method="post"> <tablecellspacing="2"cellpadding="2"> <tr><td><fontcolor="red"style="font-size:12px;">注意:每道題目都有默認值。請不要被默認值所誤導</font></td></tr> </table> <c:forEachitems="${requestScope.timuList}"varStatus="sta"var="timu"> <tablecellspacing="2"cellpadding="2"> <tr> <tdcolspan="2"> ${sta.index+1}:${timu.timuName} ( <c:iftest="${timu.timuLeixing=='danxuan'}">單選題</c:if> <c:iftest="${timu.timuLeixing=='duoxuan'}">多選題</c:if> <c:iftest="${timu.timuLeixing=='panduan'}">判斷題</c:if> <c:iftest="${timu.timuLeixing=='tiankong'}">填空題</c:if> , 本題${timu.timuFenshu}分 ) </td> </tr> <tr> <td> <c:iftest="${timu.timuLeixing=='danxuan'}"> A:<inputtype="radio"name="${timu.timuId}"value="A"style="border:0"checked="checked"/>${timu.timuXuanxianga}<br/> B:<inputtype="radio"name="${timu.timuId}"value="B"style="border:0"/>${timu.timuXuanxiangb}<br/> C:<inputtype="radio"name="${timu.timuId}"value="C"style="border:0"/>${timu.timuXuanxiangc}<br/> D:<inputtype="radio"name="${timu.timuId}"value="D"style="border:0"/>${timu.timuXuanxiangd}<br/> </c:if> <c:iftest="${timu.timuLeixing=='duoxuan'}"> A:<inputtype="checkbox"name="${timu.timuId}"value="A"style="border:0"checked="checked"/>${timu.timuXuanxianga}<br/> B:<inputtype="checkbox"name="${timu.timuId}"value="B"style="border:0"/>${timu.timuXuanxiangb}<br/> C:<inputtype="checkbox"name="${timu.timuId}"value="C"style="border:0"/>${timu.timuXuanxiangc}<br/> D:<inputtype="checkbox"name="${timu.timuId}"value="D"style="border:0"/>${timu.timuXuanxiangd}<br/> </c:if> <c:iftest="${timu.timuLeixing=='panduan'}"> A:<inputtype="radio"name="${timu.timuId}"value="A"style="border:0"checked="checked"/>${timu.timuXuanxianga}<br/> B:<inputtype="radio"name="${timu.timuId}"value="B"style="border:0"/>${timu.timuXuanxiangb}<br/> </c:if> <c:iftest="${timu.timuLeixing=='jianda'}"> <inputname="${timu.timuId}"type="text"style="width:300px;"/> </c:if> </td> </tr> </table> <br/> </c:forEach> <tablecellspacing="2"cellpadding="2"> <tr> <td> <inputtype="hidden"name="shitiId"value="${requestScope.shitiId}"/> <inputtype="submit"value="交卷"style="width:120px;"/> </td> </tr> </table> </form>五.設計小結本系統(tǒng)的目標是建立一個高效,安全,可靠的無紙化在線考試系統(tǒng),本系統(tǒng)采用的是B/S三層體系結構,開發(fā)語言是JSP,使用的數(shù)據(jù)庫是Mysql,以Windows7作為操作系統(tǒng),以tomcat作為web服務器。從最開始的方案選擇,到后來的需求分析、概要設計,詳細設計以及最后的系統(tǒng)實現(xiàn)與開發(fā),我從中學到了不少知識,積累了寶貴的經(jīng)驗。

目錄2.基于WEB的網(wǎng)上商城系統(tǒng)一.設計要求1.1…設計要求1.2…原理說明二.需求分析2.1…業(yè)務需求分析2.2…用戶需求分析2.2…功能需求分析三.流程圖設計3.1…前臺用戶界面實現(xiàn)流程圖3.2…后臺管理員對系統(tǒng)的管理流程圖四.程序設計4.1…系統(tǒng)部分主要代碼五.設計小結

2.基于WEB的網(wǎng)上商城系統(tǒng)一.設計要求1.1…設計要求根據(jù)一個網(wǎng)上商城系統(tǒng)的應用,從需求出發(fā),分析實際系統(tǒng)的數(shù)據(jù)模型,進行數(shù)據(jù)庫系統(tǒng)設計及基于WEB的開發(fā),功能包括在線購物、支付、商品信息發(fā)布、登錄、在線評價等。經(jīng)過測試、調整,實現(xiàn)數(shù)據(jù)庫相關編程及基于WEB的實現(xiàn)技術,以理解掌握如何應用相關的編程技術來實現(xiàn)與數(shù)據(jù)庫系統(tǒng)的連接及操作。1.2…原理說明設計網(wǎng)上商城系統(tǒng)的基本功能并實現(xiàn);設計數(shù)據(jù)模型并在Oracle中建立表。二.需求分析2.1…業(yè)務需求分析網(wǎng)站的制作已經(jīng)不單單是把企業(yè)想要表達的內容擺放在網(wǎng)站上那么簡單,當今的網(wǎng)站設計包含了更多的設計元素,給予瀏覽者更多的視覺享受。現(xiàn)在企業(yè)營銷商需要用一些更新穎更有效的方式增強競爭力。建設一個宣傳自身商品形象的電子商務營銷模式的網(wǎng)站是一種有效的方法。另外,通過電子商務網(wǎng)站,廣闊自己的營銷方式和市場,能夠幫助企業(yè)營銷商從魚龍混雜的市場中脫穎而出,完善企業(yè)銷售與服務的環(huán)節(jié),最終提升企業(yè)的價值與經(jīng)濟效益。2.2…用戶需求分析這個網(wǎng)站以上面的業(yè)務需求為基礎,進一步提出網(wǎng)站需要完成的以下任務:網(wǎng)站需要讓供應商、客戶以及瀏覽者能看到商城的信息及動態(tài),另一個重要的內容就是能夠顯示出該商城現(xiàn)有的各類型商品及其詳細信息;由于消費者的需求在增長和變化,商城在面對面銷售的基礎上也要隨之發(fā)展出相應的服務,如在線訂購等技術。另外,企業(yè)營銷商除了能與普通客戶一樣瀏覽網(wǎng)站之外,還需要對網(wǎng)站進行管理。企業(yè)需要定期更新現(xiàn)有商品的詳細信息、商城動態(tài)和聯(lián)系方式,必要時還要對企業(yè)的介紹做更改。對于消費者通過網(wǎng)站提交的各種訂單能夠進行處理以方便銷售。2.2…功能需求分析根據(jù)上面的需求分析,需要設計出網(wǎng)站的前臺與后臺。用戶在前臺所瀏覽的內容,網(wǎng)站的后臺需要能相應的做出更新或修改。根據(jù)以上的想法,設計出網(wǎng)站的功能:⑴前臺用戶相關功能主要包括:用戶注冊、登錄;購物車;訂單查詢;個人資料修改;發(fā)布留言。⑵后臺管理相關功能主要包括:添加商品;處理訂單;查詢用戶信息;添加連接;管理公告信息。將以上這些功能制作成網(wǎng)頁以后,在其中分別互相建立連接,基本完成商城及用戶對網(wǎng)站的要求。三.流程圖設計3.1…前臺用戶界面實現(xiàn)流程圖3.2…后臺管理員對系統(tǒng)的管理流程圖四.程序設計4.1…系統(tǒng)部分主要代碼主界面代碼<%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;StringapplicationPath=basePath+"/"+"application";%><html> <head> <title>NBA官方旗艦店后臺管理系統(tǒng)</title> </head><framesetrows="59,*"cols="*"frameborder="no"border="0"framespacing="0"><framesrc="top.jsp"name="topFrame"scrolling="No"noresize="noresize"id="topFrame"title="topFrame"/><framesetcols="213,*"frameborder="no"border="0"framespacing="0"><framesrc="left.jsp"name="leftFrame"scrolling="No"noresize="noresize"id="leftFrame"title="leftFrame"/><framesrc="main.jsp"name="mainFrame"id="mainFrame"title="mainFrame"/></frameset></frameset><noframes><body></body></noframes></html>界面效果如圖:連接數(shù)據(jù)庫代碼packagecom.dao;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassDB{ privateConnectioncon; privatePreparedStatementpstm; privateStringuser="root"; privateStringpassword="8888"; privateStringclassName="com.mysql.jdbc.Driver"; PrivateStringurl="jdbc:mysql://localhost:3306/cosplay?useUnicode=true&characterEncoding=UTF-8"; publicDB() { try { Class.forName(className); }catch(ClassNotFoundExceptione) { System.out.println("加載數(shù)據(jù)庫驅動失??!"); e.printStackTrace(); } } /**創(chuàng)建數(shù)據(jù)庫連接*/ publicConnectiongetCon() { try { con=DriverManager.getConnection(url,user,password); }catch(SQLExceptione) { System.out.println("創(chuàng)建數(shù)據(jù)庫連接失敗!"); con=null; e.printStackTrace(); } returncon; } publicvoiddoPstm(Stringsql,Object[]params) { if(sql!=null&&!sql.equals("")) { if(params==null) params=newObject[0]; getCon(); if(con!=null) { try { System.out.println(sql); pstm=con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); for(inti=0;i<params.length;i++) { pstm.setObject(i+1,params[i]); } pstm.execute(); }catch(SQLExceptione) { System.out.println("doPstm()方法出錯!"); e.printStackTrace(); } } } } publicResultSetgetRs()throwsSQLException { returnpstm.getResultSet(); } publicintgetCount()throwsSQLException { returnpstm.getUpdateCount(); } publicvoidclosed() { try { if(pstm!=null) pstm.close(); }catch(SQLExceptione) { System.out.println("關閉pstm對象失??!"); e.printStackTrace(); } try { if(con!=null) { con.close(); } }catch(SQLExceptione) { System.out.println("關閉con對象失??!"); e.printStackTrace(); } }}系統(tǒng)管理員登陸代碼packagecom.service;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importjavax.servlet.http.HttpSession;importorg.directwebremoting.WebContext;importorg.directwebremoting.WebContextFactory;importcom.dao.DB;importcom.orm.TAdmin;importcom.orm.Tcatelog;importcom.orm.Tuser;importcom.util.Cart;publicclassloginService{ publicStringlogin(StringuserName,StringuserPw,intuserType) { try { Thread.sleep(700); }catch(InterruptedExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } Stringresult="no"; if(userType==0)//系統(tǒng)管理員登陸 { Stringsql="select*fromt_adminwhereuserName=?anduserPw=?"; Object[]params={userName,userPw}; DBmydb=newDB(); mydb.doPstm(sql,params); try { ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } else { result="yes"; TAdminadmin=newTAdmin(); admin.setUserId(rs.getInt("userId")); admin.setUserName(rs.getString("userName")); admin.setUserPw(rs.getString("userPw")); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",0); session.setAttribute("admin",admin); session.setAttribute("currentuser",admin.getUserName()); } rs.close(); } catch(SQLExceptione) { System.out.println("登錄失??!"); e.printStackTrace(); } finally { mydb.closed(); } } if(userType==1) { Stringsql="select*fromt_userwhereloginname=?andloginpw=?anddel='no'"; Object[]params={userName,userPw}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); booleanmark=(rs==null||!rs.next()?false:true); if(mark==false) { result="no"; } if(mark==true) { result="yes"; Tuseruser=newTuser(); user.setId(rs.getString("id")); user.setLoginname(rs.getString("loginname")); user.setLoginpw(rs.getString("loginpw")); user.setLoginpw(rs.getString("loginpw")); user.setName(rs.getString("name")); user.setSex(rs.getString("sex")); user.setAge(rs.getString("age")); user.setAddress(rs.getString("address")); user.setTel(rs.getString("tel")); user.setEmail(rs.getString("email")); user.setQq(rs.getString("qq")); WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); session.setAttribute("userType",1); session.setAttribute("user",user); Cartcart=newCart(); session.setAttribute("cart",cart); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); } if(userType==2){ } returnresult; }publicStringadminPwEdit(StringuserPwNew){ System.out.println("DDDD"); try { Thread.sleep(700); } catch(InterruptedExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } WebContextctx=WebContextFactory.get(); HttpSessionsession=ctx.getSession(); TAdminadmin=(TAdmin)session.getAttribute("admin"); Stringsql="updatet_adminsetuserPw=?whereuserId=?"; Object[]params={userPwNew,admin.getUserId()}; DBmydb=newDB(); mydb.doPstm(sql,params); return"yes";}publicListcatelogAll(){ try { Thread.sleep(700); }catch(InterruptedExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } ListcatelogList=newArrayList(); Stringsql="select*fromt_catelogwheredel='no'"; Object[]params={}; DBmydb=newDB(); try { mydb.doPstm(sql,params); ResultSetrs=mydb.getRs(); while(rs.next()) { Tcatelogcatelog=newTcatelog(); catelog.setId(rs.getInt("id")); catelog.setName(rs.getString("name")); catelogList.add(catelog); } rs.close(); } catch(Exceptione) { e.printStackTrace(); } mydb.closed(); returncatelogList;}}登錄界面如圖:五.設計小結實踐體會:明白了總體的搭建web開發(fā)環(huán)境和步驟,以及總體的配置方案,可以做一個簡單的web工程,小小的課設能夠成功,給我們很大鼓勵,前期的學習使用新工具難度十分大,另外,java編程的基礎知識也還需要加強。目錄3.五子棋小游戲一.設計要求1.1…設計要求1.2…原理說明二.需求分析2.1…性能需求三.流程圖設計3.1…功能實現(xiàn)流程圖3.2…主界面效果圖四.程序設計4.1…主要環(huán)節(jié)代碼五.設計小結

3.五子棋小游戲一.設計要求1.1…設計要求實現(xiàn)五子棋游戲,要求:使用圖形用戶界面,實現(xiàn)人人對戰(zhàn),人機對戰(zhàn)。能夠判斷輸贏,有“開始”按鈕,當出現(xiàn)棋盤后,按此按鈕進入對戰(zhàn)狀態(tài)。當有勝利者(垂直、水平、對角線連續(xù)5子),顯示對話框,提示誰(黑還是白)勝利了。1.2…原理說明通過此次課程設計,鞏固所學Java語言基本知識,增進Java語言編輯基本功,掌握JDK、MyEclipse等開發(fā)工具的運用,拓寬常用類庫的應用。使我們通過該教學環(huán)節(jié)與手段,把所學課程及相關知識加以融會貫通,全面掌握Java語言的編程思想及面向對象程序設計的方法,為今后從事實際工作打下堅實的基礎。二.需求分析2.1…性能需求一款小游戲的確立是建立在各種各樣的需求上面的,這種需求往往來自于玩家的實際需求,其中玩家的實際需求最為重要.面對游戲擁有不同知識和理解層面的玩家,游戲制作人對玩家需求的理解程度,在很

溫馨提示

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

評論

0/150

提交評論