版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 . . . JAVA課程管理系統(tǒng)設(shè)計(jì)與測試摘 要高校學(xué)生課程管理工作是高等教育中的一個(gè)極為重要的環(huán)節(jié),是院校學(xué)生管理的基礎(chǔ)。面對(duì)種類繁多的數(shù)據(jù)和報(bào)表,手工處理方式已經(jīng)很難跟上現(xiàn)代化管理的步伐,傳統(tǒng)的文件管理方式進(jìn)行成績管理,效率很低,耗時(shí)費(fèi)力,容易出錯(cuò),安全性也存在問題。特別是在查詢上,由于文件過多,帶來很多不便。隨著計(jì)算機(jī)與通訊技術(shù)的飛速發(fā)展,高等教育對(duì)教務(wù)管理工作提出了更高的要求。盡快改變傳統(tǒng)的管理模式,運(yùn)用現(xiàn)代化手段進(jìn)行科學(xué)管理。本設(shè)計(jì)研究的是基于J2EE的高校課程管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。本系統(tǒng)是基于J2EE開發(fā)的成績管理系統(tǒng),彌補(bǔ)了人工管理的不足,提高了一定的效率。主要功能包括管理員對(duì)
2、教師、學(xué)生。課程的管理,教師提交開課申請(qǐng)、查看選課情況、錄入成績。學(xué)生查詢相關(guān)的課程信息、選課、退課、查看課表。該系統(tǒng)為教務(wù)處人員提供了強(qiáng)大的課程管理功能,為教師提供了對(duì)平時(shí)成績和期末成績方便的管理,為學(xué)生提供了一個(gè)方便快捷的查詢功能。本設(shè)計(jì)的開發(fā)工具使用MyEclipse,數(shù)據(jù)庫使用的MySQL,框架是struts整合hibernate。關(guān)鍵詞:J2EE;課程管理;MySQL;MyEclipseCourse Management System Design and ImplementationAbstractCollege course management is a very import
3、ant aspect of higher education,is the foundation of college students management. Faced with a wide variety of data and statements, the manual processing methods have been difficult to keep up with the pace of modern management, the traditional document management about grade management, is inefficie
4、nt, time-consuming effort, error-prone, and also existing security issues. Because too many documents, it brings a lot of inconvenience in the query. With the computer and the rapid development of communication technology, higher education must meet a higher demand. We should change the traditional
5、mode of management and use modern means of scientific management as soon as possible. The design based on J2EE technology mainly research about Implementation of course management system of universities. The system is based on J2EE platform, cover the deficiencies of manual management, and improve t
6、he efficiency of management. Main features including: teachers record the grade of students in the term examines, generate the report card to examine. Students can query their information at any time with this system. Administrator can manage the students, teachers, curriculum, classes together. The
7、 system for the Registry staff with a powerful performance management capabilities, provide teachers with the usual results and final results for the management, provide students with a convenient and efficient enquiry function. The development tools is MyEclipse, database is MySQL, integrated frame
8、work is struts and hibernate.Key words: J2EE; Grade Management; MySql; MyEclipse目 錄第一章緒論51.1系統(tǒng)開發(fā)背景51.2課題研究的容合意義51.3本文的組織結(jié)構(gòu)6第二章J2EE平臺(tái)與其支撐技術(shù)72.1 J2EE平臺(tái)72.2 MVC模式72.3 struts92.4 hibernate10第三章需求分析133.1管理員功能133.2學(xué)生功能133.3教師功能13第四章總體設(shè)計(jì)144.1系統(tǒng)設(shè)計(jì)基礎(chǔ)144.2系統(tǒng)模塊劃分144.3主要模塊設(shè)計(jì)154.3.1管理模塊154.3.2學(xué)生模塊154.3.3教師模塊15第五
9、章詳細(xì)設(shè)計(jì)165.1系統(tǒng)體系結(jié)構(gòu)165.2登陸模塊設(shè)計(jì)165.3教師開課申請(qǐng)165.4錄入成績175.5學(xué)生選課、退課17第六章數(shù)據(jù)庫設(shè)計(jì)196.1數(shù)據(jù)庫概念模型設(shè)計(jì)196.2數(shù)據(jù)庫邏輯模型設(shè)計(jì)20第七章實(shí)現(xiàn)237.1登陸模塊的實(shí)現(xiàn)237.2開課申請(qǐng)247.3學(xué)生選課26第八章系統(tǒng)測試298.1測試環(huán)境的搭建298.2系統(tǒng)可能出現(xiàn)的問題與不足298.3采用的測試類型298.4采用的測試用列308.5測試結(jié)果30致32參考文獻(xiàn)33課程管理系統(tǒng)設(shè)計(jì)與測試第一章緒論1.1系統(tǒng)開發(fā)背景高校學(xué)生成績管理工作是高等教育中的一個(gè)極為重要的環(huán)節(jié),是院校學(xué)生管理的基礎(chǔ)。面對(duì)種類繁多的數(shù)據(jù)和報(bào)表,手工處理方式和傳
10、統(tǒng)的文件管理方式已經(jīng)很難跟上現(xiàn)代化管理的步伐,主要表現(xiàn)在以下幾個(gè)方面:1.易于出錯(cuò),效率較低大學(xué)有學(xué)院19個(gè),本科專業(yè)66個(gè),在校本科生多達(dá)2萬以上,各專業(yè)四年所上課程總數(shù)多達(dá)數(shù)千,由于采用學(xué)分制,在管理這些課程與學(xué)生信息的同時(shí),還得統(tǒng)計(jì)各個(gè)學(xué)生選修情況,學(xué)分獲取情況,仍然采用文件管理形式,手工填表,這種方式的可靠性不高,因?yàn)槭止ぬ畋硪徊恍⌒木蜁?huì)造成數(shù)據(jù)遺漏,同時(shí)由于學(xué)生的檔案、學(xué)籍?dāng)?shù)量繁多,手工處理工作量極大,效率低下,進(jìn)行數(shù)據(jù)的維護(hù)和檢索都非常的不便,不能滿足日常的管理工作的要求。2. 數(shù)據(jù)更新不夠與時(shí)以前由于沒有采用Web結(jié)構(gòu)的網(wǎng)絡(luò)傳送方式,所以在數(shù)據(jù)的更新上,仍采用各系部或各班級(jí)將數(shù)據(jù)
11、上報(bào),并由專門的數(shù)據(jù)錄入人員進(jìn)行手工錄入。這種方式不僅加大了學(xué)生信息管理的工作量,而且很容易遺漏信息,并且造成信息的更新不與時(shí)。3.信息共享度低,數(shù)據(jù)冗余大由于沒有一個(gè)完善的系統(tǒng),各個(gè)部門之間的數(shù)據(jù)共享度低,數(shù)據(jù)分散存放,定義的格式往往會(huì)各不一樣。如表示的字段在這里取名為“name,",到了另一個(gè)表中就變成了“xm",這種不一致的數(shù)據(jù)格式在數(shù)據(jù)處理時(shí)往往需要進(jìn)行轉(zhuǎn)換,給工作帶來很大的不方便,增大了錯(cuò)誤發(fā)生的機(jī)會(huì)。1.2課題研究的容合意義大學(xué)最近幾年花費(fèi)十幾萬元引入一套教務(wù)管理系統(tǒng),我們學(xué)生經(jīng)常接觸的便是課程管理系統(tǒng),該系統(tǒng)采用技術(shù)實(shí)現(xiàn),通過幾年的使用,我們切實(shí)感受到了它的方
12、便性,該系統(tǒng)實(shí)現(xiàn)了學(xué)生,教師,課程等信息的管理工作,學(xué)生可以方便地進(jìn)行選課,退課,查看學(xué)分等等。教師可以進(jìn)行成績錄入,提交調(diào)課申請(qǐng),查看選課學(xué)生的操作。但該系統(tǒng)也存在一些問題,首先是可移植性差,運(yùn)行平臺(tái)只能是windows操作系統(tǒng),而該系統(tǒng)作為服務(wù)器系統(tǒng)并不被看好。其次是系統(tǒng)穩(wěn)定性和安全性不夠好,在該系統(tǒng)的使用期間曾頻繁發(fā)生自動(dòng)退課情況,導(dǎo)致選修該課程的學(xué)生成績無法錄入,本人就遇到這種情況。本系統(tǒng)在功能和界面風(fēng)格上模仿現(xiàn)有系統(tǒng),是對(duì)現(xiàn)有系統(tǒng)的肯定。但采用了不同的實(shí)現(xiàn)技術(shù)。系統(tǒng)的運(yùn)行平臺(tái)是J2EE+Tomcat,采用了strut+hibernate框架,該系統(tǒng)具有很好的移植性。同時(shí)由于所采用的技
13、術(shù)框架都是開源的,這使得系統(tǒng)的穩(wěn)定性和安全性有了很大的提高,也便于以后的擴(kuò)展和維護(hù)工作。1.3本文的組織結(jié)構(gòu)本文共分八章,各章的主要容如下第一章緒論,主要說明系統(tǒng)開發(fā)背景,課題研究的容和意義。第二章J2EE平臺(tái)與其支撐技術(shù),介紹本系統(tǒng)的運(yùn)行平臺(tái)并簡要介紹開發(fā)本系統(tǒng)所用到的相關(guān)技術(shù)。第三章需求分析,從系統(tǒng)的不同用戶出發(fā)分析系統(tǒng)的功能需求。第四章總體設(shè)計(jì),介紹系統(tǒng)設(shè)計(jì)基礎(chǔ),對(duì)系統(tǒng)進(jìn)行模塊劃分,并設(shè)計(jì)各個(gè)模塊的層次圖。第五章詳細(xì)設(shè)計(jì),介紹系統(tǒng)體系結(jié)構(gòu),設(shè)計(jì)各個(gè)功能模塊的系統(tǒng)流程圖。第六五章數(shù)據(jù)庫設(shè)計(jì) 重點(diǎn)介紹數(shù)據(jù)庫概念模型設(shè)計(jì)和邏輯模型設(shè)計(jì),給出了數(shù)據(jù)庫的E-R圖第七章實(shí)現(xiàn) 主要介紹系統(tǒng)運(yùn)行時(shí)的界面
14、截圖和核心代碼。第八章系統(tǒng)測試,首先是介紹測試環(huán)境的搭建,然后介紹系統(tǒng)采用的測試技術(shù),最后列出測試用列。第二章J2EE平臺(tái)與其支撐技術(shù)2.1 J2EE平臺(tái)J2EE是一個(gè)開放的、基于標(biāo)準(zhǔn)的開發(fā)和部署的平臺(tái),用于構(gòu)建N層的、基于Web的、以服務(wù)端計(jì)算為核心的、模塊化的企業(yè)應(yīng)用。J2EE同時(shí)也是所有兼容J2EE標(biāo)準(zhǔn)的應(yīng)用服務(wù)器產(chǎn)品的統(tǒng)一標(biāo)識(shí)。Sun公司領(lǐng)導(dǎo)著J2EE規(guī)和標(biāo)準(zhǔn)的制定,但同時(shí)很多公司如IBM、BEA也為該標(biāo)準(zhǔn)的制定貢獻(xiàn)了很多力量,所以J2EE每一個(gè)新規(guī)的推出,都體現(xiàn)著整個(gè)業(yè)界對(duì)技術(shù)的共同認(rèn)同。大家都遵守著“在標(biāo)準(zhǔn)上進(jìn)行合作,在產(chǎn)品上進(jìn)行競爭”的原則,從而使J2EE在技術(shù)規(guī)上日臻完善和進(jìn)步
15、,同時(shí)又有各廠家實(shí)現(xiàn)J2EE規(guī)的應(yīng)用服務(wù)器產(chǎn)品在市場上推出,在性能上、價(jià)格上互相競爭,為最終用戶提供多樣化的選擇。圖1 Ja2EEa平臺(tái)體系架構(gòu)從圖1中可以看出,J2EE技術(shù)是在J2SE的基礎(chǔ)之上,提供了企業(yè)計(jì)算所必須的服務(wù)如事務(wù)、安全性、消息服務(wù)等。J2SE平臺(tái)提供Java運(yùn)行時(shí)環(huán)境的標(biāo)準(zhǔn)功能,如對(duì)跨平臺(tái)開發(fā)的支持和存管理等。J2EE應(yīng)用的組件如企業(yè)JavaBean(E)、JSP和Servlet運(yùn)行于J2EE容器之中,通過連接器訪問企業(yè)信息系統(tǒng),如數(shù)據(jù)庫系統(tǒng)、ERP系統(tǒng)和其他應(yīng)用程序系統(tǒng)。J2EE應(yīng)用可以集成一系列的客戶端,包括獨(dú)立運(yùn)行的臺(tái)式客戶端、無線客戶端,以與基于Web瀏覽器的客戶端等
16、。J2EE平臺(tái)為開發(fā)企業(yè)應(yīng)用提供了高性能、高可靠性和可伸縮性的運(yùn)行支撐環(huán)境。2.2 MVC模式MVC模式是"Model-View-Controller"的縮寫,中文翻譯為"模式-視圖-控制器"。MVC應(yīng)用程序總是由這三個(gè)部分組成。Event(事件)導(dǎo)致Controller改變Model或View,或者同時(shí)改變兩者。只要Controller改變了Models的數(shù)據(jù)或者屬性,所有依賴的View都會(huì)自動(dòng)更新。類似的,只要Controller改變了View,View會(huì)從潛在的Model中獲取數(shù)據(jù)來刷新自己。MVC模式最早是smalltalk語言研究團(tuán)提出的,應(yīng)用
17、于用戶交互應(yīng)用程序中。smalltalk語言和java語言有很多相似性,都是面向?qū)ο笳Z言,很自然的SUN在petstore(寵物店)事例應(yīng)用程序中就推薦MVC模式作為開發(fā)Web應(yīng)用的架構(gòu)模式。MVC模式是一種架構(gòu)模式,其實(shí)需要其他模式協(xié)作完成。在J2EE模式目錄中,通常采用service to worker模式實(shí)現(xiàn),而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式組成。而Struts只實(shí)現(xiàn)了MVC的View和Controller兩個(gè)部分,Model部分需要開發(fā)者自己來實(shí)現(xiàn),Struts提供了抽象類Action使開發(fā)者能將Model應(yīng)用于Stru
18、ts框架中。MVC模式是一個(gè)復(fù)雜的架構(gòu)模式,其實(shí)現(xiàn)也顯得非常復(fù)雜。但是,我們已經(jīng)總結(jié)出了很多可靠的設(shè)計(jì)模式,多種設(shè)計(jì)模式結(jié)合在一起,使MVC模式的實(shí)現(xiàn)變得相對(duì)簡單易行。Views可以看作一棵樹,顯然可以用Composite Pattern來實(shí)現(xiàn)。Views和Models之間的關(guān)系可以用Observer Pattern體現(xiàn)。Controller控制Views的顯示,可以用Strategy Pattern實(shí)現(xiàn)。Model通常是一個(gè)調(diào)停者,可采用Mediator Pattern來實(shí)現(xiàn)?,F(xiàn)在讓我們來了解一下MVC三個(gè)部分在J2EE架構(gòu)中處于什么位置,這樣有助于我們理解MVC模式的實(shí)現(xiàn)。MVC與J2EE
19、架構(gòu)的對(duì)應(yīng)關(guān)系是:View處于Web Tier或者說是Client Tier,通常是JSP/Servlet,即頁面顯示部分。Controller也處于Web Tier,通常用Servlet來實(shí)現(xiàn),即頁面顯示的邏輯部分實(shí)現(xiàn)。Model處于Middle Tier,通常用服務(wù)端的javaBean或者E實(shí)現(xiàn),即業(yè)務(wù)邏輯部分的實(shí)現(xiàn)。2.3 struts一、為什么要使用Struts Struts是一個(gè)WEB開發(fā)框架。WEB從一開始的靜態(tài)HTML開發(fā),到后來的動(dòng)態(tài)頁面。從繁瑣的、代碼與其混亂的Model1,逐步到MVC模式。在技術(shù)上和結(jié)構(gòu)上都發(fā)生了極大的變化。MVC模式結(jié)
20、構(gòu)清晰,現(xiàn)今已被大量運(yùn)用。Struts 通過提供一個(gè)控制器Servlet 實(shí)現(xiàn)了Sun 的 Model 2 架構(gòu),這個(gè)控制器可以用來管理JSP 頁面和其他表現(xiàn)設(shè)備之間的流程。Struts 通過使用ActionForward和ActionMapping來保證表現(xiàn)層之外的控制流決策來實(shí)現(xiàn) MVC層 模式。同時(shí)通過xml配置文件實(shí)現(xiàn)幾個(gè)層次間的關(guān)系,大大簡化了開發(fā)人員的工作量。二、Struts是怎么工作的 我們用一個(gè)圖示來描述Struts的工作情況 上圖以UML以次序圖的方式展示了Struts 請(qǐng)求-響應(yīng)
21、流程。我們來按這個(gè)請(qǐng)求-響應(yīng)流程走一遍。 1、客戶請(qǐng)求匹配Action URI 樣式的路徑 2、容器將請(qǐng)求傳遞給ActionServlet. 3、如果這個(gè)是模塊化應(yīng)用,ActionServlet 選擇響應(yīng)的模塊。 4、ActionServlet 查詢路徑的映射。(來自于配置文件) 5、如果映射標(biāo)明了一個(gè)form bean,ActionServlet 看是否已經(jīng)有一個(gè)實(shí)例,或者創(chuàng)建一個(gè)新的實(shí)例。如果已經(jīng)有一個(gè)form bean,ActionServlet 重設(shè)它,并根據(jù) 請(qǐng)求重新組裝它。 6、如果 mapping 的 va
22、lidate 屬性設(shè)置為 true, 它將調(diào)用 form bean 的validate 方法 7、如果失敗,Servlet 將控制轉(zhuǎn)發(fā)到input 屬性標(biāo)明的路徑,控制流終止。 8、如果mapping 標(biāo)明一個(gè)Action 類型,如果它已經(jīng)存在或已經(jīng)實(shí)例化,它將被重用 9、Action 的perform 或 execute 方法被調(diào)用,并傳遞一個(gè)實(shí)例化的form bean(或者 null)。 10、Action 組裝form bean, 調(diào)用業(yè)務(wù)對(duì)象,以與其他需要做的事情。 11、Action 返回一個(gè)ActionForward 給A
23、ctionServlet 12、如果ActionForward 指向另一個(gè) Action URI,重新開始; 否則,顯示頁面或者其他資源,流程結(jié)束。通常,結(jié)果是一個(gè)JSP 頁面,或者Jasper, 或其它類似技術(shù) (非Struts)渲染的頁面。 13、如果JSP 中使用了Struts HTML 標(biāo)記, 并且在請(qǐng)求中看到正確的ActionForm,他們會(huì)從ActionForm 中組裝HTML 控件。否則, <html:form> 標(biāo)記將創(chuàng)建一個(gè)。從Struts 1.1 開始, 如果form 標(biāo)記自行創(chuàng)建一個(gè)ActionForm ,它將調(diào)用ActionForm
24、的Reset 方法。如果你只是想創(chuàng)建一個(gè)空白的表單,你可以使用標(biāo)準(zhǔn)的ForwardAction來通過Action 傳遞控制,然后離開頁面2.4 hibernate一 Hibernate定義Hibernate是一種Java語言下的對(duì)象關(guān)系映射解決方案。 它是一種自由、開源的軟件。它用來把對(duì)象模型表示的對(duì)象映射到基于SQL 的關(guān)系模型結(jié)構(gòu)中去,為面向?qū)ο蟮念I(lǐng)域模型到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的映射,提供了一個(gè)使用方便的框架。 二 Hibernate的作用Hibernate 不僅管理Java 類到數(shù)據(jù)庫表的映射(包括從Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以
25、大幅度減少開發(fā)時(shí)人工使用SQL 和JDBC 處理數(shù)據(jù)的時(shí)間。它的設(shè)計(jì)目標(biāo)是將軟件開發(fā)人員從大量一樣的數(shù)據(jù)持久層相關(guān)編程工作中解放出來。無論是從設(shè)計(jì)草案還是從一個(gè)遺留數(shù)據(jù)庫開始,開發(fā)人員都可以采用Hibernate。 三 Hibernate的應(yīng)用Hibernate對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場合,它既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用。最具革命意義的是,Hibernate可以在應(yīng)用E(Enterprise JavaBean
26、s是Java應(yīng)用于企業(yè)計(jì)算的框架)的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。四 Hibernate API簡介 1 Hibernate API中的接口可以分為以下幾類:(1) 提供訪問數(shù)據(jù)庫的操作的接口,包括session、Transaction、Query接口;(2) 用于配置Hibernate的接口,Configuration;(3) 間接接口,使應(yīng)用程序接受Hibernate部發(fā)生的事件,并作出相關(guān)的回應(yīng),包括:Interceptor、Lifecycle、Validatable;(4) 用于擴(kuò)展Hibernate功能的接口,如UserType、C
27、ompositeUserType、IdentifierGenerator接口。Hibernate部還封裝了JDBC、JTA(Java Transaction API)和JNDI(Java Naming And Directory Interface)。其中,JDBC提供底層的數(shù)據(jù)訪問操作,只要用戶提供了相應(yīng)的JDBC驅(qū)動(dòng)程序,Hibernate可以訪問任何一個(gè)數(shù)據(jù)庫系統(tǒng)。JTA和JNDI使Hibernate能夠和J2EE應(yīng)用服務(wù)器集成。2 Hibernate的核心接口框圖五 Hibernate的優(yōu)缺點(diǎn)(1)優(yōu)點(diǎn):a.Hibernate 使用 Java 反射機(jī)制 而不是字節(jié)碼
28、增強(qiáng)程序來實(shí)現(xiàn)透明性。b.Hibernate 的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。映射的靈活性很出色。c. 它支持各種關(guān)系數(shù)據(jù)庫,從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。 (2)缺點(diǎn): Hibernate限制您所使用的對(duì)象模型。例如,一個(gè)持久性類不能映射到多個(gè)表。第三章需求分析高校課程管理系統(tǒng)角色是管理員、學(xué)生和教師,管理員對(duì)學(xué)生、教師、課程、學(xué)研、專業(yè)和班級(jí)信息進(jìn)行維護(hù),學(xué)生選擇想要上的課程,查看所選的學(xué)分以與修改個(gè)人信息,教師開課申請(qǐng)查看選課情況以與給學(xué)生打?qū)W分。根據(jù)以上操作,所作需求分析如下:3.1管理員功能登錄:登錄學(xué)生管理:列表、增加、修改、刪除。教師管理:列表、增加、
29、修改、刪除。課程管理:列表、增加、修改、刪除。學(xué)院管理:列表、增加、修改、刪除。專業(yè)管理:列表、增加、修改、刪除。班級(jí)管理:列表、增加、修改、刪除。3.2學(xué)生功能登錄:登錄。選課:選課、退課、查看個(gè)人課表。學(xué)分:查看。個(gè)人信息:修改。3.3教師功能登錄:登錄。開課申請(qǐng):課程列表、選擇上課時(shí)間、選擇上課教室公布成績:課程列表、學(xué)生列表、成績。第四章總體設(shè)計(jì)4.1系統(tǒng)設(shè)計(jì)基礎(chǔ)系統(tǒng)功能實(shí)現(xiàn)應(yīng)遵循的基本準(zhǔn)則是:易于維護(hù)合擴(kuò)展。本課題研究中采用了以下技術(shù)方案。系統(tǒng)體系結(jié)構(gòu):采用Java語言開發(fā),基于J2EE Struts框架的多層B/S應(yīng)用系統(tǒng)架構(gòu)。J2EE是個(gè)開放的、基于標(biāo)準(zhǔn)的平臺(tái),可以開發(fā)、部署和管
30、理的N層結(jié)構(gòu)的、面向Web的,以服務(wù)器為中心的企業(yè)級(jí)應(yīng)用,它是利用JAVA2平臺(tái)來簡化多級(jí)企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的諸多復(fù)雜問題的應(yīng)用體系結(jié)構(gòu),J2EE包括JSP、Servlet、E、Web Service等多項(xiàng)技術(shù)。Struts框架就是基于Model2的框架,也是基于MVC模式的框架技術(shù)4.2系統(tǒng)模塊劃分系統(tǒng)主要?jiǎng)澐譃槿竽K:管理員模塊,面向?qū)W校管理人員。教師模塊,面向在校教師。學(xué)生模塊,面向在校學(xué)生。系統(tǒng)層次圖如下:系統(tǒng)包結(jié)構(gòu)圖如下:.ahu.hibernate.beans 中存放數(shù)據(jù)庫中表映射的java對(duì)象.ahu.struts.actions 中存放actionservle
31、t的子類.ahu.struts.forms 封裝用戶提交的數(shù)據(jù)的類.ahu.struts.resources 存放配置文件.ahu.util 存放常量,公用數(shù)據(jù)結(jié)構(gòu)和方法4.3主要模塊設(shè)計(jì)4.3.1管理模塊該模塊的主要功能是維護(hù)系統(tǒng)常用信息,確保系統(tǒng)能正常運(yùn)行。當(dāng)新生注冊(cè)是,管理員需要插入新生信息,老生畢業(yè),則需注銷這些學(xué)生的信息,教師的去留,新學(xué)院專業(yè)的成立,也要涉與數(shù)據(jù)的增刪修改,以保證數(shù)據(jù)的與時(shí)和準(zhǔn)確性。該模塊的層次圖如下所示:4.3.2學(xué)生模塊學(xué)生模塊的主要功能是查看課程列表,獲知可選課程,選課,退課,查看個(gè)人課表,查看學(xué)分等功能。該模塊的層次圖如下所示:4.3.3教師模塊該模塊的功能
32、主要是查看課程信息,提交開課申請(qǐng),查看選課情況,錄入成績。該模塊的層次圖如下所示:第五章 詳細(xì)設(shè)計(jì)5.1系統(tǒng)體系結(jié)構(gòu)5.2登陸模塊設(shè)計(jì)系統(tǒng)的用戶包括:學(xué)院領(lǐng)導(dǎo)(管理人員)、教師、學(xué)生。這些用戶既是系統(tǒng)的參與者,又是系統(tǒng)的管理對(duì)象,還要控制用戶對(duì)系統(tǒng)的行為。當(dāng)用戶每次進(jìn)入系統(tǒng)時(shí),首先要驗(yàn)證用戶的合法性。根據(jù)用戶的類型轉(zhuǎn)向不同的功能頁面。系統(tǒng)流程圖如下:5.3教師開課申請(qǐng)教師開課是教師模塊這要功能之一,教師首先填寫開課申請(qǐng)表,輸入檢查合法過后,申請(qǐng)表處于待審核狀態(tài),審核通過,學(xué)生則可以選修該課程,同時(shí)向教師發(fā)送審核合格通知,否則發(fā)送不通過通知,學(xué)生在課程列表中不可見該開課記錄,系統(tǒng)流程圖如下:5.
33、4錄入成績錄入成績是教師模塊另一重要功能,教師首先選擇相關(guān)課程,系統(tǒng)列出選修該課程的學(xué)生,教師再選擇學(xué)生,輸入成績,單擊提交按鈕,進(jìn)行輸入合法性檢查,檢查通過則成績錄入成功,否則報(bào)錯(cuò)。系統(tǒng)流程圖如下:5.5學(xué)生選課、退課該功能是學(xué)生端的主要功能,學(xué)生首先選擇開課學(xué)院,專業(yè),系統(tǒng)列出可選課程,學(xué)生選擇課程,系統(tǒng)列出上該課的教師,學(xué)生選擇自己喜歡的教師,點(diǎn)擊選課按鈕,系統(tǒng)進(jìn)行合法性檢查,檢查通過則選課成功,否則報(bào)錯(cuò)。退課和選課類似。第六章 數(shù)據(jù)庫設(shè)計(jì)該系統(tǒng)保存的主要信息有學(xué)生信息,教師信息,學(xué)院、專業(yè)、班級(jí)信息以與課程信息,教師開課信息,學(xué)生選課信息。6.1數(shù)據(jù)庫概念模型設(shè)計(jì)6.1.1系統(tǒng)管理數(shù)據(jù)
34、庫概念模型設(shè)計(jì)系統(tǒng)管理即對(duì)用戶的管理,包括教師和學(xué)生,學(xué)院,專業(yè)以與班級(jí),課程的管理。系統(tǒng)管理對(duì)應(yīng)的實(shí)體有教師,學(xué)生,學(xué)院,專業(yè),班級(jí),課程。其概念數(shù)據(jù)模型如下圖所示:6.1.2教師開課信息管理數(shù)據(jù)庫概念模型設(shè)計(jì)需要記錄的信息有課程號(hào),教師號(hào),上課時(shí)間,上課教室。其概念數(shù)據(jù)模型如下圖所示:6.1.3學(xué)生選課信息管理數(shù)據(jù)庫概念模型設(shè)計(jì)需要記錄的數(shù)據(jù)有學(xué)號(hào),開課號(hào),平時(shí)成績,考試成績其概念數(shù)據(jù)模型如下圖所示:6.2數(shù)據(jù)庫邏輯模型設(shè)計(jì)學(xué)生表字段名數(shù)據(jù)類型長度是否允許空說明xueHhaoVarchar20否學(xué)號(hào)(主鍵)xingMingvarchar20否真實(shí)miMavarchar20否密碼xingBi
35、evarchar2否性別csnyDate否出生年月zcrqDate否入學(xué)日期banJiInt11否所屬班級(jí)教師表字段名數(shù)據(jù)類型長度是否允許空說明jghvarchar20否教工號(hào)xingMingvarcha20否真實(shí)miMavarchar20否密碼xingBievarchar2否性別csnyDate否出生年月zhiChengvarchar20否職稱ssxyint11否所屬學(xué)院課程表字段名數(shù)據(jù)類型長度是否允許空說明kcdmInt11否課程代碼KcmcVarchar100否課程名稱KcxzVarchar20否課程性質(zhì)Kcxfint11否課程學(xué)分KcxqInt11否開課學(xué)期KcxyInt11否開課學(xué)院
36、學(xué)院表字段名數(shù)據(jù)類型長度是否允許空說明XyhInt11否學(xué)院號(hào)XymcVarchar100否學(xué)院名稱XyjjVarchar10000是學(xué)院簡介專業(yè)表字段名數(shù)據(jù)類型長度是否允許空說明ZyhInt11否專業(yè)號(hào)ZXymcVarchar100否專業(yè)名稱ZXyjjVarchar10000是專業(yè)簡介SsxyInt11否所屬學(xué)院班級(jí)字段名數(shù)據(jù)類型長度是否允許空說明BjhInt11否班級(jí)號(hào)BjmcVarchar100否班級(jí)名稱BjjjVarchar10000是班級(jí)簡介SszyInt11否所屬專業(yè)教室表字段名數(shù)據(jù)類型長度是否允許空說明JshInt11否教室號(hào)JsmcVarchar100否教室名稱syqkVarc
37、har1000是使用情況開課記錄表字段名數(shù)據(jù)類型長度是否允許空說明KkhInt11否開課號(hào)JghVarchar20否教工號(hào)KcdmInt11否課程代碼SksjVarchar50否上課時(shí)間SkjsInt11否上課教室選課記錄字段名數(shù)據(jù)類型長度是否允許空說明XuehaoVarchar20否學(xué)號(hào)KkhInt11否開課號(hào)PscjInt11是平時(shí)成績KscjInt11是考試成績第七章實(shí)現(xiàn)7.1登陸模塊的實(shí)現(xiàn)界面核心代碼:public class LoginAction extends DispatchAction public ActionForward execute(ActionMapping ma
38、pping, ActionForm form, ServletRequest request, ServletResponse response) LoginForm loginForm = (LoginForm) form;request.getSession().setAttribute("ID", loginForm.getUsername();if(loginForm.getType().equals("student")/學(xué)生用戶,轉(zhuǎn)向?qū)W生界面XueShengDAO xsDAO = new XueShengDAO();XueSheng xs =
39、 xsDAO.findById(loginForm.getUsername();List list = xsDAO.findAll();if(xs!=null&&xs.getMiMa().equals(loginForm.getPassword()return mapping.findForward("student");elsereturn mapping.findForward("failure");else if(loginForm.getType().equals("teacher")/教師用戶,轉(zhuǎn)向教師界面J
40、iaoGongDAO jgDAO = new JiaoGongDAO();JiaoGong jg = jgDAO.findById(loginForm.getUsername();if(jg!=null&&jg.getMiMa().equals(loginForm.getPassword()return mapping.findForward("teacher");elsereturn mapping.findForward("failure");return mapping.findForward("failure"
41、);7.2開課申請(qǐng)界面核心代碼:public class KkxxAction extends DispatchAction public ActionForward execute(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) KkxxForm kkxxForm = (KkxxForm)form;if(kkxxForm.getTarget().equals("xueyuan")/返回學(xué)院信息request.getSession().setA
42、ttribute("xueyuan", kkxxForm.getXueyuan();return mapping.findForward("continue");else if(kkxxForm.getTarget().equals("zhuanye")/返回專業(yè)信息request.getSession().setAttribute("zhuanye",kkxxForm.getZhuanye();return mapping.findForward("continue");else if(kkx
43、xForm.getTarget().equals("kch")/返回課程信息request.getSession().setAttribute("kch",kkxxForm.getKch();return mapping.findForward("continue");else if(kkxxForm.getTarget().equals("louhao")/返回教室信息request.getSession().setAttribute("bjh", kkxxForm.getBanji();re
44、quest.getSession().setAttribute("louhao", kkxxForm.getLouhao();request.getSession().setAttribute("zhou0", kkxxForm.getZhou0();request.getSession().setAttribute("node0",kkxxForm.getNode0();request.getSession().setAttribute("zhou1", kkxxForm.getZhou1();request.g
45、etSession().setAttribute("node1",kkxxForm.getNode1();/檢測在該時(shí)間段可用教室return mapping.findForward("continue");else if(kkxxForm.getTarget().equals("submit")/提交開課申請(qǐng)KkjiluDAO kkjlDAO = new KkjiluDAO();KeChengDAO kcDAO = new KeChengDAO();KeCheng kc = kcDAO.findById(kkxxForm.getKc
46、h();int zks = kc.getZks();if(zks%3=0)zks = 3;elsezks = 2;Kkjilu kkjl = new Kkjilu();kkjl.setJgh(String)request.getSession().getAttribute("ID");kkjl.setKch(kkxxForm.getKch();kkjl.setSkjs(kkxxForm.getJshao();String sksj = ""if(kkxxForm.getZhou0()!=null)sksj = sksj+kkxxForm.getZhou0
47、()+"_"+kkxxForm.getNode0()+"_"+zks;if(kkxxForm.getZhou1()!=null)sksj = sksj+" "+kkxxForm.getZhou1()+"_"+kkxxForm.getNode1()+"_"+zks;kkjl.setSksj(sksj);kkjl.setYuliang(new Integer(kkxxForm.getMaxcount();if(kkxxForm.getKch()!=null&&!kkxxForm.ge
48、tKch().equals("0")&&kkxxForm.getBanji()!=null&&!kkxxForm.getBanji().equals("0")kkjlDAO.save(kkjl);request.getSession().setAttribute("msg", "開課成功!");request.getSession().setAttribute("xueyuan",null);request.getSession().setAttribute(&q
49、uot;zhuanye",null);request.getSession().setAttribute("zhuanye",null);request.getSession().setAttribute("kch",null);request.getSession().setAttribute("louhao",null);request.getSession().setAttribute("zhou",null);request.getSession().setAttribute("node
50、",null);request.getSession().setAttribute("bjh",null);request.getSession().setAttribute("jshao",null);elserequest.getSession().setAttribute("msg", "請(qǐng)將信息填充完整!");request.getSession().setAttribute("jshao",kkxxForm.getJshao();return mapping.findForw
51、ard("continue");return null;7.3學(xué)生選課界面核心代碼:public class AddCourseAction extends DispatchAction public ActionForward execute(ActionMapping mapping, ActionForm form, ServletRequest request, ServletResponse response) AddCourseForm addCourseForm = (AddCourseForm) form;String xh = (String) reque
52、st.getSession().getAttribute("ID");String kkh = addCourseForm.getKkh();String kch = addCourseForm.getKch();if(kkh=null|kch=null)return null;if(addCourseForm.getBtnSubmit().equals("提交")/進(jìn)行選課操作XuekeJiluDAO xkjlDAO = new XuekeJiluDAO();XuekeJilu xkjl = new XuekeJilu();xkjl.setXueHao
53、(xh);xkjl.setKkh(new Integer(kkh);xkjl.setKch(kch);if(xkjlDAO.find("from XuekeJilu where xueHao='"+xh+"' and kch='"+kch+"'").size() = 0)xkjlDAO.save(xkjl );KkjiluDAO kkjlDAO = new KkjiluDAO();Kkjilu kkjl = kkjlDAO.findById(new Integer(kkh);kkjl.setYulian
54、g(kkjl.getYuliang()-1);kkjlDAO.update(kkjl);XueShengDAO xsDAO = new XueShengDAO();XueSheng xs = xsDAO.findById(xh);String kcb = xs.getKcb1();StringTokenizer st = new StringTokenizer(kkjl.getSksj();while(st.hasMoreTokens()kcb = kcb+" "+st.nextToken()+"_"+kkh;xs.setKcb1(kcb);xsDAO.
55、update(xs);request.getSession().setAttribute("msg", "選課成功!");elserequest.getSession().setAttribute("msg", "你已經(jīng)選了該課程!");else if(addCourseForm.getBtnSubmit().equals("退選")/進(jìn)行退課操作XuekeJiluDAO xkjlDAO = new XuekeJiluDAO();List list = xkjlDAO.find("from XuekeJilu where xueHao='"+xh+"' and kch='"+kch+"'");if(list!=null&&list.size()!=0)XuekeJilu xkjl = (XuekeJilu) list.get(0);xkjlDAO.delete(xkjl);KkjiluDAO kkjlDAO = new KkjiluDAO();Kkjilu kkjl = kkjlDAO.find
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航空航天采購合同協(xié)議書
- 沈陽理工大學(xué)《C++程序設(shè)計(jì)》2022-2023學(xué)年期末試卷
- 2024居間合同樣本
- 2024試用期內(nèi)是否要簽合同
- 2024中外合資經(jīng)營企業(yè)合同制造廠
- 2024家裝裝修的合同范本
- 糖尿病蛋白質(zhì)的攝入
- 4人合伙人協(xié)議書(2篇)
- 租賃協(xié)議書(2篇)
- 關(guān)于銀行實(shí)習(xí)日記模板匯編六篇
- 江蘇省徐州市銅山區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期中英語試卷(含答案解析)
- 大數(shù)據(jù)處理服務(wù)合同
- 天津市河西區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期中英語試題
- 8.3 法治社會(huì) 課件高中政治統(tǒng)編版必修三政治與法治
- 河北省唐山市灤南縣2024-2025學(xué)年七年級(jí)上學(xué)期10月期中數(shù)學(xué)試題
- GB/T 44653-2024六氟化硫(SF6)氣體的現(xiàn)場循環(huán)再利用導(dǎo)則
- GB/T 44540-2024精細(xì)陶瓷陶瓷管材或環(huán)材彈性模量和彎曲強(qiáng)度的測定缺口環(huán)法
- 道路交通安全法律法規(guī)
- 2024年新北師大版數(shù)學(xué)一年級(jí)上冊(cè) 第4單元 10以內(nèi)數(shù)加與減 第9課時(shí) 可愛的企鵝 教學(xué)課件
- 外研版(2019) 選擇性必修第四冊(cè) Unit 5 Into the Unknown Understanding ideas教案
- 中班健康課件《認(rèn)識(shí)五官》
評(píng)論
0/150
提交評(píng)論