《J2EE系統(tǒng)架構(gòu)和程序設(shè)計》課程設(shè)計項目實訓(xùn)項目——某職業(yè)技術(shù)學(xué)院學(xué)生選課系統(tǒng)_第1頁
《J2EE系統(tǒng)架構(gòu)和程序設(shè)計》課程設(shè)計項目實訓(xùn)項目——某職業(yè)技術(shù)學(xué)院學(xué)生選課系統(tǒng)_第2頁
《J2EE系統(tǒng)架構(gòu)和程序設(shè)計》課程設(shè)計項目實訓(xùn)項目——某職業(yè)技術(shù)學(xué)院學(xué)生選課系統(tǒng)_第3頁
《J2EE系統(tǒng)架構(gòu)和程序設(shè)計》課程設(shè)計項目實訓(xùn)項目——某職業(yè)技術(shù)學(xué)院學(xué)生選課系統(tǒng)_第4頁
《J2EE系統(tǒng)架構(gòu)和程序設(shè)計》課程設(shè)計項目實訓(xùn)項目——某職業(yè)技術(shù)學(xué)院學(xué)生選課系統(tǒng)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄 TOC o 1-3 h z u HYPERLINK l _Toc477549826 J2EE系統(tǒng)架構(gòu)和程序設(shè)計課程設(shè)計項目實訓(xùn)項目某職業(yè)技術(shù)學(xué)院學(xué)生選課系統(tǒng) PAGEREF _Toc477549826 h 2 HYPERLINK l _Toc477549827 系統(tǒng)業(yè)務(wù)需求說明 PAGEREF _Toc477549827 h 2 HYPERLINK l _Toc477549828 1系統(tǒng)的需求分析和系統(tǒng)建模 PAGEREF _Toc477549828 h 11 HYPERLINK l _Toc477549829 系統(tǒng)架構(gòu)設(shè)計 PAGEREF _Toc477549829 h 17 HYP

2、ERLINK l _Toc477549830 項目的數(shù)據(jù)庫系統(tǒng)設(shè)計 PAGEREF _Toc477549830 h 20 HYPERLINK l _Toc477549831 項目的系統(tǒng)功能實現(xiàn) PAGEREF _Toc477549831 h 22 HYPERLINK l _Toc477549832 項目中應(yīng)用J2EE 過濾器及Web監(jiān)聽器組件技術(shù) PAGEREF _Toc477549832 h 55 HYPERLINK l _Toc477549833 課程設(shè)計項目實訓(xùn)的個人感想 PAGEREF _Toc477549833 h 56J2EE系統(tǒng)架構(gòu)和程序設(shè)計課程設(shè)計項目實訓(xùn)項目某職業(yè)技術(shù)學(xué)院學(xué)生

3、選課系統(tǒng)系統(tǒng)業(yè)務(wù)需求說明1、項目背景說明今天,隨著信息技術(shù)的發(fā)展, 各高校的選課流程已不再是過去的手工形式了。取而代之的是各種各樣的選課電子系統(tǒng)。選課流程繁瑣復(fù)雜,而且容易出錯,如何有效的理清各項工作流程并且使整個選課過程高效的進行,一直是高校探索的課題。這次,應(yīng)客戶的需求,某高校決定開發(fā)一套職業(yè)技術(shù)學(xué)院學(xué)生選課系統(tǒng)。學(xué)生選課系統(tǒng)是利用現(xiàn)代化信息技術(shù)對選課流程進行高效管理的一款系統(tǒng)。它代替了以前的許多手工流程,層次化,條理化地解決了許多繁瑣的問題。因此,該系統(tǒng)適合應(yīng)用于高校等基于網(wǎng)絡(luò)的學(xué)生管理的環(huán)境。能夠比較簡單的維護和管理學(xué)生選課,保證高效率和低成本。如下為采用通用語言表述的系統(tǒng)主要的功能性

4、需求:(1)應(yīng)該提供對選課的學(xué)生進行基本的管理功能:包括注冊、登陸、修改和在線注銷等方面的功能(2)應(yīng)該提供對課程進行選課、查詢課程信息、統(tǒng)計所選擇的課程的總學(xué)分等基本功能(3)對部分的功能模塊中的數(shù)據(jù)應(yīng)該采用XML文件的形式作為持久化的載體,并利用Java中的XML解析技術(shù)進行讀/寫該XML文件中的數(shù)據(jù)(4)對部分的功能模塊中的頁面采用XML+XSLT的方式代替JSP頁面進行顯示(5)利用過濾器組件技術(shù)實現(xiàn)系統(tǒng)的安全身份驗證2、業(yè)務(wù)領(lǐng)域與目標(biāo)(1)業(yè)務(wù)領(lǐng)域 本系統(tǒng)面向中小型學(xué)院,用戶群體為學(xué)院的教務(wù)科,教師以及學(xué)生。(2)業(yè)務(wù)目標(biāo)根據(jù)現(xiàn)實選課流程實現(xiàn)各種操作,如:發(fā)布課程,刪除課程,查詢課程

5、,瀏覽所選課程,提交課程以及其他查詢教師和教室等相關(guān)操作。(3)項目提交產(chǎn)品運行程序所需要的所有文件(頁面文件、源代碼、數(shù)據(jù)庫文件以及其它的配置文件)。 系統(tǒng)的主要功能操作的說明書(運行過程中代表系統(tǒng)的主要功能實現(xiàn)的頁面,進行屏幕拷貝截圖放到Word 文檔中以便進行功能檢查)。3、參與選課系統(tǒng)的組織機構(gòu)與人員分工(1)教學(xué)科管理員管理員對課程信息、學(xué)生信息、教師信息及系統(tǒng)進行維護。并且可獲得下學(xué)期課程信息后,發(fā)布課程信息,若信息有誤,可修改信息。課程選課人數(shù)不足,可以停開該課程。如果過了選課期限,可以禁止學(xué)生選課。(2)教師提交課程信息給教學(xué)科,可以查詢自己的課程。(3)學(xué)生學(xué)生可通過輸入帳號

6、、密碼登錄選課系統(tǒng),在登錄系統(tǒng)后,學(xué)生可進行選課、退課及查詢操作。學(xué)生在選課期間可以查詢下學(xué)期所要上的課程,選中課程,然后提交。一定期限內(nèi)。如果發(fā)現(xiàn)選課有誤,可以修改課程或刪除課程。提交之后,可以瀏覽自己選的課程。(4)系統(tǒng)管理員主要執(zhí)行的操作包含添加、修改、刪除、系統(tǒng)故障解決等系統(tǒng)方面的管理功能。4、業(yè)務(wù)范圍及邊界(1)選課系統(tǒng)需求描述學(xué)生課程管理系統(tǒng)的設(shè)計目的是要將學(xué)生所選的各個課程信息通過網(wǎng)絡(luò)方式進行管理,為學(xué)生、教師和教務(wù)管理人員提供便利。系統(tǒng)的用戶有3種類型,分別為系統(tǒng)管理員,學(xué)生及教師。系統(tǒng)對于一個用戶只允許以一種身份登錄。系統(tǒng)管理員登錄系統(tǒng)后可以對系統(tǒng)進行功能管理。其主要操作是維

7、護學(xué)生,教師,課程和班級的基本信息,以及維護選課系統(tǒng)的狀態(tài)。學(xué)生登錄后的主要操作是選課和個人信息的維護。教師登錄后的主要操作是管理自己的班級并為學(xué)生登錄成績。由于選課系統(tǒng)各個流程之間耦合非常緊密,操作簡單,故決定整體對待,不再進行明細(xì)劃分。下面為本選課系統(tǒng)的功能性需求描述:學(xué)生有登錄選課系統(tǒng)的帳號和密碼。學(xué)生在登錄選課系統(tǒng)后可執(zhí)行選課,退課,查詢(包括本學(xué)期課表及其它課程),修改自己信息等操作。管理員進行課程信息維護。(包含修改、刪除、故障解決)管理員進行學(xué)生信息維護。(包含修改、刪除、故障解決)管理員進行教師信息維護。(包含修改、刪除、故障解決)管理員進行系統(tǒng)維護。(2)選課系統(tǒng)數(shù)據(jù)流圖(3

8、)選課系統(tǒng)總用例圖(邊界定義)(4)與學(xué)生和教師相關(guān)的系統(tǒng)用例 (5)與系統(tǒng)管理員相關(guān)的用例(6)系統(tǒng)中的各個用例所構(gòu)成的系統(tǒng)用例圖5、識別選課系統(tǒng)的用例(1)學(xué)生登錄:本用例用于學(xué)生登錄選課系統(tǒng)選課:本用例為學(xué)生提供選課的功能。退課:本用例為學(xué)生提供退課的功能。查詢:本用例為學(xué)生提供課程查詢的功能。(包括本學(xué)期課表及其它課程)(2)管理員登錄:本用例用于管理員登錄選課系統(tǒng)課程信息維護:管理員通過本用例對課程信息進行維護。學(xué)生信息維護:管理員通過本用例對學(xué)生信息進行維護。教師信息維護:管理員通過本用例對教師信息進行維護。系統(tǒng)維護:管理員通過本用例對系統(tǒng)進行維護。6、業(yè)務(wù)活動描述(1)事件響應(yīng)與

9、用例清單(業(yè)務(wù)事件)事件觸發(fā)器來源活動/用況響應(yīng)目的地教師填寫課程信息教學(xué)需要教師填寫表單教學(xué)科教學(xué)科整理課程信息并完成表單教學(xué)需求教學(xué)科填寫表單教學(xué)科添加課程教室信息教學(xué)需要教學(xué)科填寫表單教學(xué)科學(xué)生查詢要選課程進入選課期限學(xué)生查詢信息顯示課程信息學(xué)生學(xué)生選擇課程已選好課程學(xué)生提交課程信息顯示信息學(xué)生教學(xué)科查詢學(xué)生選課信息選課借書教學(xué)科查詢信息顯示信息教學(xué)科教學(xué)科刪除課程選課人數(shù)不足教學(xué)科刪除信息信息刪除教學(xué)科教師查詢課程選擇情況選課結(jié)束教師查詢信息顯示信息教師學(xué)生查詢已選課程選課結(jié)束學(xué)生查詢信息顯示信息學(xué)生(2)各個用例的事件流用例編號:student01用例名稱:查詢用例說明: 學(xué)生登錄選

10、課系統(tǒng)后,查看所有課程參與者: 學(xué)生;前置條件:學(xué)生要先進行登錄;基本流程:登錄選課系統(tǒng),點擊查看課程,提交系統(tǒng)用例編號:student02用例名稱:選課用例說明: 學(xué)生登錄選課系統(tǒng)后,提交自己要選擇的課程參與者: 學(xué)生;前置條件:學(xué)生要先進行登錄;基本流程:登錄選課系統(tǒng),在自己想選的課程后面點擊注冊,提交系統(tǒng)用例編號:student03用例名稱:退課用例說明: 學(xué)生登錄選課系統(tǒng)后,查看自己已選的課程,根據(jù)自己的情況可以退掉一些課程參與者: 學(xué)生;前置條件:學(xué)生要先進行選課;基本流程:登錄選課系統(tǒng),在自己想退的課程后面點擊刪除,提交系統(tǒng)用例編號:student04用例名稱:修改信息用例說明:

11、學(xué)生登錄選課系統(tǒng)后,可以對自己的信息進行修改 參與者: 學(xué)生;前置條件:學(xué)生要先進行登錄;基本流程:登錄選課系統(tǒng),點擊修改信息,提交系統(tǒng)用例編號:admin01用例名稱:管理學(xué)生用例說明: 管理員登錄選課系統(tǒng)后,可以對學(xué)生的信息進行管理 參與者: 管理員前置條件:管理員要先進行登錄;基本流程:依照學(xué)生情況查看,刪除學(xué)生信息;用例編號:admin02用例名稱:管理課程用例說明: 管理員登錄選課系統(tǒng)后,可以對課程的信息進行管理參與者: 管理員前置條件:管理員要先進行登錄;基本流程:依照課程情況查看,刪除,修改課程信息;用例編號:admin03用例名稱:管理教師用例說明: 管理員登錄選課系統(tǒng)后,可以

12、對教師的信息進行管理參與者: 管理員前置條件:管理員要先進行登錄;基本流程:依照教師情況查看,刪除,修改教師信息;用例編號:admin04用例名稱:注冊用例說明: 管理員登錄選課系統(tǒng)后,可以注冊其他的管理員參與者: 管理員前置條件:管理員要先進行登錄;基本流程:依照教學(xué)安排注冊新的管理員;(3)業(yè)務(wù)過程(包括業(yè)務(wù)協(xié)作)(泳道圖)7、項目的非功能性需求(1)易用性系統(tǒng)面對的用戶包括管理人員、教師、以及在校學(xué)生等,在各個接口和設(shè)計上,應(yīng)盡量做到人性化設(shè)計,易于為各類用戶所操作。(2)安全性由于面對的用戶有明顯的權(quán)限區(qū)別,系統(tǒng)必須保證各類用戶在使用時不越出自身的權(quán)限。采取密碼驗證的方式,對不同用戶進

13、行信息和權(quán)限管設(shè)置、管理。嚴(yán)格按照權(quán)限設(shè)置限制各用戶的行為,保證系統(tǒng)的安全性和正常運行。(3)魯棒性由于系統(tǒng)面對的是整個學(xué)院的師生,需存儲各種用戶的課程信息,權(quán)限信息等,信息量巨大,同時由于選課時信息量流動性較大,系統(tǒng)在運行過程中必須保證數(shù)據(jù)的一致性和完整性等。不致出現(xiàn)由系統(tǒng)內(nèi)部因素而引起的數(shù)據(jù)信息不一致或丟失等問題。對于突發(fā)情況,如斷電,機器損壞等,都能及時的恢復(fù)事務(wù),以保證系統(tǒng)中數(shù)據(jù)的完整、正確、一致性。(4)可維護性統(tǒng)交付后將由本團隊負(fù)責(zé)維護和升級,鑒于可維護性方面考慮,要求在系統(tǒng)開發(fā)過程中編寫詳細(xì)的文檔,以供維護和升級人員查看,減少時間開銷。(5)系統(tǒng)的容錯性有一定的錯誤處理能力,如密

14、碼錯誤提示,課容量不足提示等。(6)系統(tǒng)的響應(yīng)性能允許大量用戶同時訪問及進行頁面交互,因此對系統(tǒng)的穩(wěn)健性的要求是可以支持2000人同時在線。在選課期間,系統(tǒng)應(yīng)該能夠在7*24小時內(nèi)運行,系統(tǒng)的反應(yīng)速度不超過2秒,同時要保證相關(guān)的系統(tǒng)核心數(shù)據(jù)不能丟失。8、系統(tǒng)的環(huán)境和設(shè)計約束(1)環(huán)境約束局域網(wǎng)環(huán)境.(2)設(shè)計約束必須采用Struts架構(gòu)設(shè)計和實現(xiàn)。(3)技術(shù)約束必須采用數(shù)據(jù)庫連接池和數(shù)據(jù)源方式連接數(shù)據(jù)庫。系統(tǒng)的需求分析和系統(tǒng)建模1、系統(tǒng)靜態(tài)建模有關(guān)系統(tǒng)中主要類的關(guān)鍵名詞:學(xué)生,課程,管理員,注冊,登錄,修改,注銷,課程選擇,課程退除,課程查看,課程添加,課程刪除。2、分類(1)界面有關(guān)類:輸入

15、,輸出(2)業(yè)務(wù)有關(guān)類:業(yè)務(wù)實體:學(xué)生,課程,管理員業(yè)務(wù)邏輯:注冊,登錄,修改,注銷,課程選擇,課程退除,課程查看,課程添加,課程刪除(3)系統(tǒng)調(diào)度有關(guān)類:業(yè)務(wù)調(diào)度3、系統(tǒng)的分析類圖4、系統(tǒng)的動態(tài)建模(1)管理員順序圖(2)管理員活動圖(3)學(xué)生順序圖(4)學(xué)生活動圖(5)教師順序圖(6)教師活動圖(7)學(xué)生狀態(tài)圖(8)課程狀態(tài)圖系統(tǒng)架構(gòu)設(shè)計1、開發(fā)平臺的選擇本項目采用Java平臺(由前面的設(shè)計約束已經(jīng)決定)。2、本系統(tǒng)選用B/S架構(gòu)系統(tǒng)由于需要基于大量的用戶的界面交互,同時考慮到本系統(tǒng)需要基于達到“零維護”的設(shè)計目標(biāo),因此本項目選用B/S架構(gòu)。為提高系統(tǒng)的開發(fā)質(zhì)量,本項目選擇Struts框架

16、,而業(yè)務(wù)邏輯和數(shù)據(jù)訪問等程序代碼采用J2EE JavaBean組件技術(shù)進行封裝,并應(yīng)用Tomcat服務(wù)器,開發(fā)工具使用MyEclipse和Macromedia Dreamweaver,而數(shù)據(jù)庫系統(tǒng)則選擇開源的MySQL,并使用Apache DBCP的數(shù)據(jù)庫連接池和數(shù)據(jù)源連接數(shù)據(jù)庫系統(tǒng)。下面為在本項目中配置出數(shù)據(jù)庫連接池的配置定義文件中的數(shù)據(jù)源信息: 3、系統(tǒng)的架構(gòu)包圖和部分類圖(1)系統(tǒng)包圖(2)系統(tǒng)組件圖(3)系統(tǒng)類圖項目的數(shù)據(jù)庫系統(tǒng)設(shè)計1、系統(tǒng)的ER圖2、創(chuàng)建系統(tǒng)數(shù)據(jù)庫表結(jié)構(gòu)的SQL語句代碼示例(1)建立管理員數(shù)據(jù)庫表create table admin ( adm_id int(16)

17、not null, name varchar(32) default null, password varchar(32) default null, primary key (adm_id);(2)建立學(xué)生信息數(shù)據(jù)庫表create table student ( stu_id varchar(16) not null, name varchar(32) default null, password varchar(32) default null, department varchar(32) default null, sex varchar(32) default null, mark

18、int(20) default null, tel varchar(32) default null, email varchar(32) default null, course varchar(100) default null, primary key (stu_id);(3)建立教師數(shù)據(jù)庫表create table teacher( tea_id varchar(16) not null, name varchar(32) default null, password varchar(32) default null, title varchar(32) default null, p

19、rimary key (tea_id);(4)建立課程信息數(shù)據(jù)庫表create table course( cou_id varchar(16) not null, name varchar(32) default null, mark int(20) default null, dep varchar(32) default null, room varchar(32) default null, prepare varchar(32) default null, time varchar(32) default null, teacher varchar(32) default null,

20、 primary key (cou_id);(5)建立班級數(shù)據(jù)庫表create table classes( cla_id varchar(16) not null, teacher_id varchar(32) default null, course_id varchar(32) default null, course_time varchar(32) default null, primary key (cla_id), foreign key (course_id) references course (cou_id), foreign key (teacher_id) refere

21、nces teacher (tea_id);create table coursechosen ( course_id varchar(32) default null, student_id varchar(32) default null, accept varchar(32) default null, score varchar(32) default null, foreign key (course_id) references course (cou_id), foreign key (student_id) references student (stu_id);3、數(shù)據(jù)字典字

22、段主鍵數(shù)據(jù)類型功能描述其它信息stu_id是varchar2它代表student表中的主鍵,并且與coursechosen表產(chǎn)生關(guān)聯(lián)course_id是varchar2它代表course表中的主鍵,并且與coursechosen表產(chǎn)生關(guān)聯(lián)項目的系統(tǒng)功能實現(xiàn)1、項目中的各個程序類及Web頁面的存儲結(jié)構(gòu)關(guān)系示圖本系統(tǒng)的程序代碼主要是在MyEclipse開發(fā)工具中編寫和調(diào)試,某些界面設(shè)計運用到XML+XSLT技術(shù),另外大部分界面設(shè)計和實現(xiàn)是在Dreamweaver頁面設(shè)計工具中設(shè)計完成的。本項目的基本應(yīng)用功能如下:(1)應(yīng)該提供對選課的學(xué)生進行基本的管理功能:包括注冊、登陸、修改和在線注銷等方面的功

23、能;(2)應(yīng)該提供對課程進行選課、查詢課程信息、統(tǒng)計所選擇的課程的總學(xué)分等基本功能;(3)對部分的功能模塊中的數(shù)據(jù)應(yīng)該采用XML文件的形式作為持久化的載體,并利用Java中的XML解析技術(shù)進行讀/寫該XML文件中的數(shù)據(jù);(4)對部分的功能模塊中的頁面采用XML+XSLT的方式代替JSP頁面進行顯示;(5)利用過濾器組件技術(shù)實現(xiàn)系統(tǒng)的安全身份驗證。除此之外,本項目還完成了以下新的功能:(1)用戶和管理員登錄之后,主頁可以顯示用戶或管理員的姓名(登錄時只輸入ID和Password);(2)管理員可以對已經(jīng)注冊的學(xué)生和老師進行查看和刪除;(3)管理員可以對課程進行添加、查看、修改和刪除;(4)學(xué)生可

24、以查看自己的課表;(5)教師可以查看自己所開的課程的信息;(6)教師可以查看選自己某門課程的學(xué)生的學(xué)號和姓名,并統(tǒng)計此門課共有幾個人選(7)統(tǒng)計在線人數(shù);2、學(xué)生用戶系統(tǒng)登陸在瀏覽器中輸入系統(tǒng)的首頁面URL地址后,系統(tǒng)將會出現(xiàn)如下的登錄表單頁面。然后在該登錄表單中輸入登錄的身份信息,并點擊其中的“提交”按鈕,向系統(tǒng)后臺提交登錄的身份信息,系統(tǒng)將進行數(shù)據(jù)檢查。如果登錄成功,系統(tǒng)將顯示出如下的提示信息:學(xué)生進行系統(tǒng)登錄的后臺Action程序類的代碼示例如下:import com.stuman.dao.UserManageDAOInterface;import com.stuman.dao.User

25、ManageDAOJDBCImple;import com.stuman.form.*;. . ServletRequest;import javax.servlet. . ServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import com.stuman.form.

26、userLoginForm;import com.stuman.model.*;public class userLoginAction extends Action public ActionForward execute(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) userLoginForm userLoginForm = (userLoginForm) form;String sort = userLoginForm.getSort();int logi

27、nSort = Integer.parseInt(sort);String userName = (userLoginForm.getUsername().trim(); String userPassword = (userLoginForm.getPassword().trim(); switch(loginSort)case 1: UserInfoManageInterface userInfoManageImpleBean=new UserInfoManageImple(); UserManageDAOInterface user=new UserManageDAOJDBCImple(

28、); UserInfoVO userInfoVOBean=new UserInfoVO(); if(user.SelectOneUserInfoData(userName, userPassword)=null) return (mapping.findForward(stu_idNull); request.getSession().setAttribute(stuid, user.SelectOneUserInfoData(userName, userPassword).getId(); userInfoVOBean.setName(userName); userInfoVOBean.se

29、tPassword(userPassword); boolean loginResult=userInfoManageImpleBean.doUserLogin(userInfoVOBean); if (loginResult) request.getSession().setAttribute(isLogin,true); return (mapping.findForward(stuLoginSuccess); else return (mapping.findForward(stuLoginFailure); case 2:TeacherInfoManageInterface Teach

30、erInfoManageImpleBean=new TeacherInfoManageImple(); TeacherInfoVO TeacherInfoVOBean=new TeacherInfoVO(); TeacherInfoVOBean.setName(userName); TeacherInfoVOBean.setPassword(userPassword);boolean teacherResult=TeacherInfoManageImpleBean.doTeacherLogin(TeacherInfoVOBean); if (teacherResult) return (map

31、ping.findForward(stuLoginSuccess); else return (mapping.findForward(stuLoginFailure); case 3: AdminInfoManageInterface AdminInfoManageImpleBean = new AdminInfoManageImple(); AdminInfoVO AdminInfoVOBean=new AdminInfoVO(); AdminInfoVOBean.setName(userName); AdminInfoVOBean.setPassword(userPassword); b

32、oolean AdminResult=AdminInfoManageImpleBean.doAdminLogin(AdminInfoVOBean); if (AdminResult) return (mapping.findForward(adminLoginSuccess); else return (mapping.findForward(adminLoginFailure); return null;而對應(yīng)的系統(tǒng)數(shù)據(jù)庫表數(shù)據(jù)訪問的DAO組件的程序代碼示例如下:import java.sql.*;import java.util.ArrayList;ist;import com.stuma

33、n.model.*;import javax.servlet.*;import java.io.*;import javax.servlet. .*;public class UserManageDAOJDBCImple implements UserManageDAOInterface private java.sql.Connection con=null;ConnectDBInterface connectDBBean=null;public UserManageDAOJDBCImple() connectDBBean=new ConnectDBBean();public boolean

34、 InsertOneUserInfo(UserInfoPO oneUserInfoPO) String insert_SqlStatement=null;insert_SqlStatement=insert into student(stu_id,name,password ,department,sex,tel,email) values (?,?,?,?,?,?,?);con=connectDBBean.getConnection();tryjava.sql.PreparedStatement pstmt = con.prepareStatement(insert_SqlStatement

35、,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);pstmt.setString(1, oneUserInfoPO.getId();pstmt.setString(2, oneUserInfoPO.getName();pstmt.setString(3, oneUserInfoPO.getPassword();pstmt.setString(4, oneUserInfoPO.getDepartment();pstmt.setString(5, oneUserInfoPO.getSex();Tel();pstmt.setSt

36、ring(7, oneUserInfoPO.getEmail();pstmt.executeUpdate();catch(SQLException e)System.out.println(在查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!);return false;return true;public UserInfoPO SelectOneUserInfoData(String userName, String userPassWord) ResultSet rs=null;UserInfoPO oneUserInfo=null;String select_SqlStatement=null;select_Sq

37、lStatement=select * from student where name=+ userName+ and password=+userPassWord+;con=connectDBBean.getConnection();tryjava.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = pstmt.executeQuery();if(rs.next()oneUs

38、erInfo=new UserInfoPO(); /目前只轉(zhuǎn)換下面的幾個屬性oneUserInfo.setId(rs.getString(stu_id);oneUserInfo.setName(rs.getString(name);oneUserInfo.setPassword(rs.getString(password);elseoneUserInfo=null;catch(SQLException e)System.out.println(在查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!);return oneUserInfo;public boolean UpdateOneStuInfo(UserInfoPO

39、 oneUserInfoPO)String insert_SqlStatement=null;insert_SqlStatement=update student set name=+oneUserInfoPO.getName()+,password =+oneUserInfoPO.getPassword()+,tel=+oneUserInfoPO.getTel()+,email=+oneUserInfoPO.getEmail()+where stu_id=+oneUserInfoPO.getId()+;con=connectDBBean.getConnection();tryjava.sql

40、.PreparedStatement pstmt = con.prepareStatement(insert_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); pstmt.executeUpdate();catch(SQLException e)System.out.println(在更新數(shù)據(jù)庫表時出現(xiàn)錯誤!);return false;return true;public boolean InsertCourseOneStuInfo(String stuid,String couid)Strin

41、g insert_SqlStatement=null;ResultSet rs=null;String select_SqlStatement=null;String stucourse=;String newcourse=;select_SqlStatement=select course from student where stu_id= +stuid+;con=connectDBBean.getConnection();tryjava.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,Resul

42、tSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = pstmt.executeQuery();if(rs.next()stucourse=rs.getString(course);catch(SQLException e)System.out.println(在插入課程到學(xué)生數(shù)據(jù)庫表時出現(xiàn)錯誤!); if(stucourse=null) insert_SqlStatement=update student set course=+couid+ where stu_id=+stuid+;con=connectDBBean.get

43、Connection();tryjava.sql.PreparedStatement pstmt = con.prepareStatement(insert_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); pstmt.executeUpdate();catch(SQLException e)System.out.println(在插入數(shù)據(jù)庫表時出現(xiàn)錯誤!);return false;return true; con=connectDBBean.getConnection();tryjava.sq

44、l.PreparedStatement pstmt = con.prepareStatement(insert_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); pstmt.executeUpdate();catch(SQLException e)System.out.println(在插入數(shù)據(jù)庫表時出現(xiàn)錯誤!);return false;return true;public List SelectAllUserInfoData()ArrayList results = new ArrayList

45、();try con=connectDBBean.getConnection();Statement sql = con.createStatement();ResultSet rs =sql.executeQuery(select stu_id,name,password,department,sex,tel,email from student);while (rs.next() UserInfoVO student = new UserInfoVO();student.setId(rs.getString(1);student.setName(rs.getString(2);studen

46、t.setPassword(rs.getString(3);student.setDepartment(rs.getString(4);student.setSex(rs.getString(5);student.setTel(rs.getString(6);student.setEmail(rs.getString(7);results.add(student); if (results != null & results.size() 0) return results; catch (SQLException e) System.out.println(在選擇學(xué)生時查詢數(shù)據(jù)庫表時出現(xiàn)錯誤

47、!);return null;public boolean DeleteOneStudent(String stuid)try con=connectDBBean.getConnection();Statement sql = con.createStatement();sql.executeUpdate(delete from student where stu_id = +stuid+);catch(SQLException e) System.out.println(在刪除學(xué)生時查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!); return false;return true;public List Sel

48、ectOneStudent(String stuid)ArrayList results = new ArrayList();try con=connectDBBean.getConnection();Statement sql = con.createStatement();ResultSet rs = sql.executeQuery(select stu_id,name,password,department,sex,tel,email from student where stu_id = +stuid+);while (rs.next() UserInfoVO student = n

49、ew UserInfoVO();student.setId(rs.getString(1);student.setName(rs.getString(2);student.setPassword(rs.getString(3);student.setDepartment(rs.getString(4);student.setSex(rs.getString(5);Tel(rs.getString(6);student.setEmail(rs.getString(7);results.add(student); if (results != null & results.size() 0) re

50、turn results; catch (SQLException e) System.out.println(在選擇一個學(xué)生時查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!);return null; public boolean DeleteOneStudentCourse(String stuid,String couid) String insert_SqlStatement=null;ResultSet rs=null;String select_SqlStatement=null;String stucourse=;String newcourse=;select_SqlStatement=select

51、 course from student where stu_id= +stuid+;con=connectDBBean.getConnection();tryjava.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = pstmt.executeQuery();if(rs.next()stucourse=rs.getString(course);catch(SQLExcept

52、ion e)System.out.println(在插入課程到學(xué)生數(shù)據(jù)庫表時出現(xiàn)錯誤!);String subString=null;int i=0;while(i 0) return results; catch (SQLException e) System.out.println(在查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!);return null;public List getAllCourse()ArrayList results = new ArrayList();try ection();Statement sql = con.createStatement();(select cou_id,n

53、ame , mark , dep ,room ,prepare , time ,teacher from course);while (rs.next() Course courForStu = new Course();courForStu.setCouid(rs.getString(1);courForStu.setName(rs.getString(2);courForStu.setMark(rs.getInt(3);courForStu.setDep(rs.getString(4);courForStu.setRoom(rs.getString(5);courForStu.setPre

54、pare(rs.getString(6);g(7);courForStu.setTeacher(rs.getString(8);results.add(courForStu);if (results != null & results.size() 0) return results; catch (SQLException e) System.out.println(在查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!);return null; public boolean deleteOneCourse(String couid)try con=connectDBBean.getConnection();Stat

55、ement sql = con.createStatement();sql.executeUpdate(delete from course where cou_id = +couid+);catch(SQLException e)ut.println(在刪除課程時查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!); return false;return true;public List getOneCourse(String couid)ArrayList results = new ArrayList();try con=connectDBBean.getConnection();Statement sql =

56、 con.createStatement();ResultS(select cou_id,name , mark , dep ,room ,prepare , time ,teacher from course where cou_id = +couid+);while (rs.next() Course courForStu = new Course();courForStu.setCouid(rs.getString(1);courForStu.setName(rs.getString(2);courForStu.setMark(rs.getInt(3);courForStu.setDep

57、(rs.getString(4);courForStu.setRoom(rs.getString(5);courForStu.setPrepare(rs.getString(6);courForStu.setTime(rs.getString(7);courForStu.setTeacher(rs.getString(8);results.add(courForStu);if (results != null & results.size() 0) return results; catch (SQLException e) System.out.println(在得到某個課程信息查詢數(shù)據(jù)庫表

58、時出現(xiàn)錯誤!);return null; public List getOneStuCourse(String stuid) ArrayList results = new ArrayList(); ArrayList courseresults = new ArrayList(); String sel_SqlStatement=null;ResultSet rs=null; String select_SqlStatement=null;String stucourse=;String course=;int i=0;String subString=;select_SqlStatemen

59、t=select course from student where stu_id= +stuid+;con=connectDBBean.getConnection();tryjava.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = pstmt.executeQuery();if(rs.next()course=rs.getString(course);while(icou

60、rse.length()subString=course.substring(i,i+4);results.add(subString);i=i+4;catch(SQLException e)System.out.println(在選擇學(xué)生課程時查詢數(shù)據(jù)庫表時出現(xiàn)錯誤!);i=0;while(i 0) return courseresults; return null;4、查看某學(xué)生所有的已選課程信息當(dāng)某學(xué)生對自己的各個課程選擇完畢后,系統(tǒng)將會匯總出該學(xué)生的各個已選課列表信息。對應(yīng)此功能的系統(tǒng)后臺Action程序類的代碼示例如下:import com.stuman.form.*;import

溫馨提示

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

評論

0/150

提交評論