學(xué)生成績(jī)管理系統(tǒng)畢業(yè)論文
《學(xué)生成績(jī)管理系統(tǒng)畢業(yè)論文》由會(huì)員分享,可在線閱讀,更多相關(guān)《學(xué)生成績(jī)管理系統(tǒng)畢業(yè)論文(24頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、學(xué)生成績(jī)管理系統(tǒng) 1.引言 隨著計(jì)算機(jī)技術(shù)的發(fā)展,特別是計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)與數(shù)據(jù)庫(kù)技術(shù)的發(fā)展,使用人們的生活與工作方式發(fā)生了很大的改觀。網(wǎng)絡(luò)技術(shù)的應(yīng)用使得計(jì)算機(jī)之間通信、信息共享成為可能,而數(shù)據(jù)庫(kù)技術(shù)的應(yīng)用則為人們提供了數(shù)據(jù)存儲(chǔ)、信息檢索、信息分析等功能,從而使得工作更高效地進(jìn)行。 數(shù)據(jù)庫(kù)始于20世紀(jì)60年代,經(jīng)過(guò)40多年的發(fā)展,現(xiàn)在已經(jīng)形成了理論體系,成為計(jì)算機(jī)軟件的一個(gè)重要分支。數(shù)據(jù)庫(kù)技術(shù)體現(xiàn)了當(dāng)代先進(jìn)的數(shù)據(jù)管理方法,使計(jì)算機(jī)的應(yīng)用真正滲透到國(guó)民經(jīng)濟(jì)各個(gè)部門,在數(shù)據(jù)處理領(lǐng)域發(fā)揮著越來(lái)越大的作用。 而互聯(lián)網(wǎng)技術(shù)的出現(xiàn),更是進(jìn)一步豐富的人類生活,數(shù)字化生存已經(jīng)一步步走進(jìn)我們的生活與工作
2、?;ヂ?lián)網(wǎng)技術(shù)與數(shù)據(jù)庫(kù)技術(shù)的結(jié)合為計(jì)算的在人類生活中的應(yīng)用帶來(lái)了巨大的影響。產(chǎn)業(yè)信息化,管理現(xiàn)代化,科學(xué)化已經(jīng)成為行業(yè)發(fā)展的重要課題,這不僅是企業(yè)提高自身競(jìng)爭(zhēng)力,甚至是國(guó)家提高綜合國(guó)力,走向國(guó)民富強(qiáng)的重要手段。 在我國(guó),教育是一個(gè)影響著國(guó)富民強(qiáng)的重要行業(yè),隨著改革開(kāi)放和市場(chǎng)經(jīng)濟(jì)的發(fā)展根據(jù)中國(guó)特有的國(guó)情發(fā)展,教育得到了國(guó)家的大力扶持與社會(huì)各界的高度重視,從而使教育業(yè)向規(guī)范性與現(xiàn)代化的方向高速發(fā)展,但是同發(fā)達(dá)國(guó)家相比,我國(guó)的教育行業(yè)的信息技術(shù)的應(yīng)用程度還很低,只有在大城市中發(fā)展較早、規(guī)模較大的院校中才使用計(jì)算機(jī)進(jìn)行大規(guī)模操作,從各方面提高工作效率,取得良好的社會(huì)和經(jīng)濟(jì)效益,而一些新興的、規(guī)模較小的
3、教育機(jī)構(gòu)還沒(méi)有全部具備這種功能。因此可見(jiàn),隨著我國(guó)教育的迅速發(fā)展,信息技術(shù)在其上的應(yīng)用會(huì)更加地廣泛和深入。本系統(tǒng)采用myeclipse8.5的IDE環(huán)境和WTK2.5.2 手機(jī)模擬環(huán)境開(kāi)發(fā),采用tomcat5.5的web容器。 1.1開(kāi)發(fā)工具的選用 本系統(tǒng)的開(kāi)發(fā)利用mysql為本系統(tǒng)的數(shù)據(jù)庫(kù),它是一個(gè)支持多用戶的數(shù)據(jù)庫(kù),適用于大中小規(guī)模的數(shù)據(jù)量需求。學(xué)校校園網(wǎng)的建設(shè)也為服務(wù)器/客戶端的結(jié)構(gòu)提供了硬件的支持。 使用WTK2.5.2+myeclipse8.5+tomcat5.5作為系統(tǒng)開(kāi)發(fā)的開(kāi)發(fā)環(huán)境。 WTK 的全稱是Sun J2ME Wireless Toolkit —— Sun的無(wú)線開(kāi)
4、發(fā)工具包。這一工具包的設(shè)計(jì)目的是為了幫助開(kāi)發(fā)人員簡(jiǎn)化j2me的開(kāi)發(fā)過(guò)程。使用其中的工具可以開(kāi)發(fā)與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規(guī)范兼容的設(shè)備上運(yùn)行的j2me 應(yīng)用程序。該工具箱包含了完整的生成工具、實(shí)用程序以及設(shè)備仿真器。 MyEclipse,是一個(gè)十分優(yōu)秀的用于開(kāi)發(fā)Java, J2EE的Eclipse插件集合,MyEclipse的功能非常強(qiáng)大,支持也十分廣泛,尤其是對(duì)各種開(kāi)元產(chǎn)品的支持十分不錯(cuò)。MyEclipse企業(yè)級(jí)工作平臺(tái)(MyEclipse Enterprise Workbench ,簡(jiǎn)稱MyEc
5、lipse)是對(duì)Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫(kù)和JavaEE的開(kāi)發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。Eclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。它是功能豐富的JavaEE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate,Spring。 Tomcat 是一個(gè)輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,Tomcat和I
6、IS、Apache等Web服務(wù)器一樣,具有處理HTML頁(yè)面的功能,另外它還是一個(gè)Servlet和JSP容器。 1.2 技術(shù)支持 本項(xiàng)目主要用了如下技術(shù):J2ME、GPRS、Servlet和J2EE技術(shù)。各項(xiàng)技術(shù)的簡(jiǎn)單介紹如下: 1.2.1 J2ME技術(shù) J2ME(java 2 Micro Edition)java家族中的重要的一員,它是當(dāng)前使用比較多的基于移動(dòng)設(shè)備開(kāi)發(fā)技術(shù)。J2ME構(gòu)建于MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device Configuration)或CDC(Connected De
7、vice Configuration)基礎(chǔ)之上。 目前國(guó)內(nèi)外J2ME比較多的應(yīng)用包括車載信息和計(jì)算、數(shù)字電視、電視機(jī)頂盒、Internet訪問(wèn)設(shè)備、家庭Audio/Video、無(wú)線手持設(shè)備等。 J2ME具有很多Java技術(shù)特性,主要有如下特點(diǎn): 可以在各種支持Java的設(shè)備上運(yùn)行。 代碼短小。 充分利用Java的語(yǔ)言優(yōu)勢(shì)。 安全性好。 用J2ME實(shí)現(xiàn)的應(yīng)用可以方便地升級(jí)到J2SE、J2EE 1.2.2 GPRS技術(shù) 通用分組無(wú)線服務(wù)技術(shù)(General Packet Radio Service)的簡(jiǎn)稱,它是GSM移動(dòng)電話用戶可用的一種移動(dòng)數(shù)據(jù)業(yè)務(wù)。GPRS可說(shuō)是GSM的延續(xù)。
8、GPRS和以往連續(xù)在頻道傳輸?shù)姆绞讲煌?,是以封包(Packet)式來(lái)傳輸,因此使用者所負(fù)擔(dān)的費(fèi)用是以其傳輸資料單位計(jì)算,并非使用其整個(gè)頻道,理論上較為便宜。GPRS的傳輸速率可提升至56甚至114Kbps。 1.2.3 Servlet技術(shù) Servlet是一種服務(wù)器端的Java應(yīng)用程序,具有獨(dú)立于平臺(tái)和協(xié)議的特性,可以生成動(dòng)態(tài)的Web頁(yè)面。 它擔(dān)當(dāng)客戶請(qǐng)求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序)的中間層。 Servlet是位于Web 服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的Java應(yīng)用程序不同,Servlet由Web服務(wù)
9、器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。 1.2.4 J2EE技術(shù) J2EE平臺(tái)由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成,它對(duì)開(kāi)發(fā)基于Web的多層應(yīng)用提供了功能支持,J2EE有13種技術(shù)規(guī)范:JDBC(Java Database Connectivity),JNDI(Java Name and Directory Interface),EJB(Enterprise JavaBean),RMI(Remote Method Invoke),Java IDL/CORBA,JSP(Java Server Pages),Java Servle
10、t, XML(Extensible Markup Language),JMS(Java Message Service),JTA(Java Transaction Architecture),JTS(Java Transaction Service),JavaMail,JAF(JavaBeans Activation Framework)。 2.系統(tǒng)分析 2.1 系統(tǒng)調(diào)查 在Internet飛速發(fā)展的今天,互聯(lián)網(wǎng)已成為人們快速獲取、發(fā)布和傳遞信息的重要渠道,它在人們的政治、經(jīng)濟(jì)、生活、娛樂(lè)等各個(gè)方面發(fā)揮著重要的作用,因此網(wǎng)站建設(shè)在Internet應(yīng)用上的地位越來(lái)越重要。原本的舊的管理方法
11、越來(lái)越不適應(yīng)現(xiàn)在社會(huì)的發(fā)展。許多人還停留在以前的手工操作。這大大地阻礙了人類經(jīng)濟(jì)的發(fā)展。為了適應(yīng)現(xiàn)代社會(huì)人們高度強(qiáng)烈的時(shí)間觀念,學(xué)校信息管理系統(tǒng)軟件為學(xué)校辦公室?guī)?lái)了極大的方便。 2.2 系統(tǒng)目標(biāo) 本系統(tǒng)是將現(xiàn)代化的計(jì)算機(jī)技術(shù)和傳統(tǒng)的教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)院的工作流程設(shè)計(jì)完成的。為了使系統(tǒng)在學(xué)院的管理中發(fā)揮更大的作用,實(shí)現(xiàn)工作過(guò)程的計(jì)算機(jī)化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開(kāi)發(fā)目標(biāo): 1.系統(tǒng)應(yīng)具有實(shí)用性、可靠性和適用性,同時(shí)注意到先進(jìn)性。 2.對(duì)各個(gè)數(shù)據(jù)庫(kù)進(jìn)行動(dòng)態(tài)管理,防止混亂。 3.能夠按照用戶選擇的不同的條件進(jìn)行簡(jiǎn)單查詢和復(fù)合查詢。 4.能夠?qū)Σ樵兘Y(jié)果進(jìn)行分類匯
12、總,實(shí)現(xiàn)報(bào)表打印。 5.注意數(shù)據(jù)的安全性,具有數(shù)據(jù)備份和恢復(fù)的功能。 6.方便用戶的操作,盡量減少用戶的操作。 2.3 系統(tǒng)功能需求分析 本系統(tǒng)適用于各高校,其功能主要分為4大類:各種信息的錄入功能、登錄、學(xué)生成績(jī)的查詢和各種信息的增加、刪除、修改。具體功能分析如下: 錄入功能:在服務(wù)器管理提供相應(yīng)的錄入功能。 登錄:用戶分為兩個(gè)角色,學(xué)生用戶和教師用戶。所有的用戶都必須憑唯一標(biāo)識(shí)登錄系統(tǒng),學(xué)生可以憑借學(xué)號(hào)和姓名進(jìn)入手機(jī)終端查詢成績(jī),學(xué)生用戶用手機(jī)端進(jìn)入只能查詢個(gè)人信息、成績(jī)等查詢。教師用web頁(yè)面進(jìn)入服務(wù)器端,可以進(jìn)行對(duì)學(xué)生信息、學(xué)生成績(jī)等進(jìn)行操作。 查詢功能:學(xué)生用戶在安裝
13、完成學(xué)生成績(jī)管理系統(tǒng)客戶端后,進(jìn)入手機(jī)軟件頁(yè)面后可以查詢個(gè)人信息、成績(jī)等操作,教師可以登錄服務(wù)器的網(wǎng)頁(yè)查詢學(xué)生全部信息、成績(jī)等等。 維護(hù)功能:在管理端進(jìn)行相應(yīng)的增加、修改、刪除等功能。 2.4 系統(tǒng)運(yùn)行環(huán)境 該運(yùn)行環(huán)境的規(guī)定是保證本需求說(shuō)明的功能得到實(shí)際真正體現(xiàn)的基礎(chǔ)。 (1)系統(tǒng)運(yùn)行環(huán)境支持軟件 數(shù)據(jù)庫(kù)系統(tǒng):MYSQL5.5或者更高版本 Web 服務(wù)器:Tomcat5.0或者更高版本 開(kāi)發(fā)集成環(huán)境IDE:myeclipse8.5 模擬環(huán)境:WTK2.5.2 軟件系統(tǒng)框架:Struts2.2.3++Hibernate 3.2 (2) 系統(tǒng)要求: 操作系統(tǒng):window
14、s xp CPU: Intel Pentium(R) 4 2.8CHz 內(nèi)存: 1GB 硬盤:10GB以上 瀏覽器:Internet Explorer、360瀏覽器 3. 系統(tǒng)設(shè)計(jì) 3.1 系統(tǒng)總體設(shè)計(jì) 數(shù)據(jù)庫(kù)服務(wù)器 應(yīng)用 服務(wù)器 Web服務(wù)器 客戶瀏覽器 請(qǐng)求 請(qǐng)求 請(qǐng)求 響應(yīng) 請(qǐng)求 手機(jī)終端 響應(yīng) 響應(yīng) 響應(yīng) 圖3-1系統(tǒng)構(gòu)架 本系統(tǒng)的學(xué)生成績(jī)管理系統(tǒng)采用B/S、手機(jī)終端結(jié)構(gòu)模式,該結(jié)構(gòu)由手機(jī)終端、瀏覽器和服務(wù)器組成,該結(jié)構(gòu)主要特點(diǎn)是集中管理,隨時(shí)隨地,方便快捷,軟件的程序、數(shù)據(jù)庫(kù)、發(fā)布的信息等都集中在服務(wù)器
15、,極大地簡(jiǎn)化了用戶端的工作,用戶端除了操作系統(tǒng)及瀏覽器外不需要安裝其它軟件。服務(wù)器則由Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器組成,它將擔(dān)負(fù)更多的工作,對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)和應(yīng)用程序的執(zhí)行都將在服務(wù)器上完成。 3.2 系統(tǒng)結(jié)構(gòu) 本系統(tǒng)從功能上劃分可分為以下幾大模塊:學(xué)生信息管理,課程信息管理,學(xué)生成績(jī)管理,學(xué)生信息查詢等幾大模塊。 系統(tǒng)模塊圖: 學(xué)生成績(jī)管理系統(tǒng) 課程信息管理 學(xué)生成績(jī)查詢 成績(jī)信息管理 學(xué)生信息管理 系統(tǒng)管理 手機(jī)終端成績(jī)查詢 圖 3-2 系統(tǒng)功能模塊圖 以下將對(duì)各子模塊進(jìn)行說(shuō)明。 學(xué)生信息管理模塊:包括學(xué)生信息錄入
16、和學(xué)生信息的查詢兩個(gè)子模塊。學(xué)生信息的錄入可以錄入學(xué)生的學(xué)號(hào)、姓名、性別、出生時(shí)間、在校期間所要修的總學(xué)分、一些備注信息、學(xué)生的電子照片、專業(yè)。學(xué)生信息查詢子模塊可以查詢學(xué)生的學(xué)號(hào)姓名等信息,并且分頁(yè)顯示,每頁(yè)8條,也可以查詢某一條的詳細(xì)信息,并且可以對(duì)某一條進(jìn)行刪除修改。 課程信息的管理模塊:課程信息的錄入,可以錄入課程號(hào),課程名,開(kāi)課學(xué)期,本科共需要多少學(xué)時(shí),學(xué)分是多少。課程信息的查詢模塊,可以查詢課程號(hào),課程名等信息,也可以查詢?cè)敿?xì)信息,可以修改課程信息,但是不能修改課程號(hào)。 成績(jī)信息管理模塊:學(xué)生成績(jī)信息的添加,對(duì)于已經(jīng)添加的不能再添加。學(xué)生成績(jī)查詢分頁(yè)顯示,可以查詢出每個(gè)人的所有
17、成績(jī)并且按學(xué)號(hào)先后排序。 手機(jī)終端學(xué)生成績(jī)查詢:輸入學(xué)號(hào)和姓名并且選擇學(xué)期查詢出各科成績(jī),可以查看學(xué)生個(gè)人信息,和該學(xué)生的所有成績(jī)。 3.3 數(shù)據(jù)庫(kù)設(shè)計(jì) 根據(jù)系統(tǒng)結(jié)構(gòu)的分析,我們可以總結(jié)出數(shù)據(jù)庫(kù)的基本表。根據(jù)系統(tǒng)管理我們可以得出有登錄表,學(xué)生信息管理得出我們要設(shè)計(jì)學(xué)生表,成績(jī)信息管理得出我們有成績(jī)表。其他的表也是如此推出。 3.3.1 數(shù)據(jù)庫(kù)表介紹 本系統(tǒng)定義的數(shù)據(jù)庫(kù)中包含以下6個(gè)表:學(xué)生表,成績(jī)表,課程表,專業(yè)表,登錄表,學(xué)生-課程關(guān)系表等。下面介紹這些表的結(jié)構(gòu)。 學(xué)生信息表:用于保存學(xué)生的學(xué)號(hào),姓名,性別,年齡,所在院系,班級(jí)名,入學(xué)年份等信息. 登錄表:用于
18、保存系統(tǒng)用戶及管理員信息.包括組別,登錄用戶名,密碼等. 成績(jī)表:用于保存學(xué)生成績(jī)信息,包括學(xué)號(hào),課程號(hào),成績(jī)等字段. 授課表:用于保存教師授課信息.包括教師名,課程號(hào),學(xué)時(shí)數(shù),班級(jí)名等. 專業(yè)表:用于保存專業(yè)id,專業(yè)名,人數(shù),專業(yè)負(fù)責(zé)人等。 課程表:用戶保存課程信息,包括課程名,課程號(hào),先修課等信息. 3.3.2表結(jié)構(gòu) 表3-1 學(xué)生表xsb 字段名稱 說(shuō)明 字段類型 備注 xh 學(xué)號(hào) bigint 主關(guān)鍵字 xm 姓名 varchar(50) 不可為空 xb 性別 bit 可為空 Zy_id 專業(yè)id Int 可為空 Cssj 出生
19、時(shí)間 datetime 可為空 zxf 總學(xué)分 varchar(50 可為空 Bz 備注 varchar(250) 可為空 Zp 照片 blob 可為空 xxxf 現(xiàn)修學(xué)分 Int 可為空 Rxnf 入學(xué)年份 Datetime 可為空 Id 身份證號(hào) Char(18) 不可為空 Syd 生源地 varchar(20) 可為空 addr 家庭地址 Varchar(250) 可為空 phone 個(gè)人電話 Char(11) 可為空 zzmm 政治面貌 varchar(20) 可為空 yhkh 銀行卡號(hào) char
20、(20) 可為空 zdy 指導(dǎo)員 Varchar(14) 可為空 表3-2 成績(jī)表cjb 字段名稱 說(shuō)明 字段類型 備注 Xh 學(xué)號(hào)(外鍵) bigint 不可為空 kch 課程號(hào)(外鍵) int 不可為空 cj 成績(jī) float 可為空 xf 學(xué)分 int 可為空 表3-3 課程表kcb 字段名稱 說(shuō)明 字段類型 備注 kch 課程號(hào) Char(3) 不可為空 kcm 課程名 Varchar(50) 可為空 kxxq 開(kāi)課學(xué)期 int 可為空 xf 學(xué)分 int 可為空 表3-4 專業(yè)
21、表zyb 字段名稱 說(shuō)明 字段類型 備注 id 專業(yè)ID Char(3) 不可為空,自動(dòng)增加 zym 專業(yè)名 Varchar(50) 可為空 rs 人數(shù) int 可為空 fzr 專業(yè)負(fù)責(zé)人 Varchar(20) 可為空 表3-5 學(xué)生-課程關(guān)系表xs_kcb 字段名稱 說(shuō)明 字段類型 備注 xh 學(xué)號(hào)(外鍵) bigint 不可為空 kch 課程號(hào)(外鍵) char(3) 不可為空 3.3.3各表間的聯(lián)系 圖3-3 表之間聯(lián)系 3.3.4數(shù)據(jù)庫(kù)連接代碼的實(shí)現(xiàn) 學(xué)生成績(jī)管理系統(tǒng)主要離不開(kāi)與數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行即時(shí)傳輸
22、,所以保證與數(shù)據(jù)庫(kù)的連通,是關(guān)鍵所在。實(shí)現(xiàn)連接代碼如下: public class BaseDao { private static String driver=null; private static String url=null; private static String user=null; private static String password=null; static{ driver=DBConfiger.getInstance().getProperty("DRIVER"); url=DBConfiger.getInstanc
23、e().getProperty("URL"); user=DBConfiger.getInstance().getProperty("UNAME"); password=DBConfiger.getInstance().getProperty("PWD"); } public static Connection getConnection() throws SQLException{ Connection con=null; try { //加載 Class.forName(driver); //連接
24、 con = DriverManager.getConnection(url,user,password); } catch (ClassNotFoundException e) { JOptionPane.showMessageDialog(null,"數(shù)據(jù)庫(kù)連接不正確!"); e.printStackTrace(); } return con; } 4.系統(tǒng)編碼與實(shí)現(xiàn) 4.1手機(jī)端系統(tǒng)編程 4.1.1登錄界面 在打開(kāi)手機(jī)端學(xué)生成績(jī)管理系統(tǒng)軟件時(shí),系統(tǒng)提示版權(quán)系統(tǒng),輸入學(xué)號(hào)和姓名進(jìn)入下一個(gè)頁(yè)面。登錄界面效果如圖 4-1所示: 圖 4-1登錄
25、頁(yè)面 主要代碼如下: private Display display; //聲明一個(gè)列表 private List mainList; //聲明TextField TFStuid用于客戶端輸入學(xué)號(hào) private TextField TFStuid,TFStuName; //聲明用于保存學(xué)號(hào)和學(xué)期的字符串 private String stuID,termName,stuName; //聲明發(fā)送,返回,退出,確定按鈕 private Command cmdSend,cmdBack,cmdExit,cmdOk;
26、 //inputForm用于放置TFStuid等組件;returnForm用于放置查詢結(jié)果 private Form inputForm, returnForm; //創(chuàng)建Alert放置聲明版權(quán)的圖版和文字 private Alert anAlert; //聲明一個(gè)Ticker private Ticker aTicker; //聲明一個(gè)圖片 private Image anImage; //傳送到 ServletApp的服務(wù)器程序Servlet進(jìn)行處理http://localhost:8080/xscj_chao/serv
27、let/ServletApp final static String defaultURL="http://localhost:8080/xscj_/servlet/ServletApp"; //線程運(yùn)行條件 private boolean condition=false; public MyScoreQuery(){ //版權(quán)聲明的圖片 try{ anImage=Image.createImage("/welcome.jpg"); }catch(IOException ioe){
28、 ioe.printStackTrace(); } //創(chuàng)建發(fā)送,返回,退出,確定按鈕對(duì)象 cmdSend=new Command("發(fā)送",Command.EXIT,1); cmdBack=new Command("返回",Command.EXIT,1); cmdExit=new Command("退出",Command.EXIT,1); cmdOk=new Command("確定",Command.EXIT,1)
29、; aTicker=new Ticker("歡迎使用移動(dòng)學(xué)生成績(jī)查詢系統(tǒng)"); anAlert=new Alert("版權(quán)聲明","Copyright@2010廊坊師范學(xué)院,ALL Right Reserved.",anImage,AlertType.CONFIRMATION); anAlert=new Alert("系統(tǒng)說(shuō)明","廊坊師范學(xué)院學(xué)生成績(jī)查詢系統(tǒng),Copyright@2011廊坊師范學(xué)院,ALL Right Reserved.",anImage,AlertType.CONFIRMATION)
30、; //創(chuàng)建一個(gè)TEXTFIELD獲取學(xué)生學(xué)號(hào) TFStuid=new TextField("學(xué)號(hào)","09040261010",30,TextField.ANY); TFStuName=new TextField("姓名","黃昕華",30,TextField.ANY); //輸入學(xué)號(hào)的標(biāo)題 inputForm=new Form("輸入查找信息:"); //輸出查詢結(jié)果的標(biāo)題 returnForm=new Form("查詢結(jié)
31、果:"); inputForm.append(TFStuid); inputForm.append(TFStuName); //創(chuàng)建退出和確定按鈕 inputForm.addCommand(cmdExit); inputForm.addCommand(cmdOk); //監(jiān)聽(tīng) inputForm.setCommandListener(this); } public v
32、oid startApp() throws MIDletStateChangeException { // TODO 自動(dòng)生成方法存根 anAlert.setTimeout(Alert.FOREVER); display=Display.getDisplay(this); display.setCurrent(anAlert,inputForm); inputForm.setTicker(aTicker); condition=false; CommandThread commandThread=new CommandThread(this);
33、 commandThread.start(); } public void destroyApp(boolean unconditional) { } public void pauseApp() { } } 4.1.2 訪問(wèn)網(wǎng)絡(luò)時(shí)多線程的設(shè)計(jì)與實(shí)現(xiàn) 在手機(jī)端成績(jī)查詢體統(tǒng),為了避免死鎖現(xiàn)象,將網(wǎng)絡(luò)設(shè)計(jì)成一個(gè)獨(dú)立的線程。當(dāng)應(yīng)用程序想要訪問(wèn)網(wǎng)絡(luò)時(shí),可以用notify()方法將訪問(wèn)網(wǎng)絡(luò)線程喚醒;當(dāng)訪問(wèn)網(wǎng)絡(luò)結(jié)束后,通過(guò)調(diào)用wait()方法使訪問(wèn)網(wǎng)絡(luò)線程釋放標(biāo)記鎖并且處于等待狀態(tài)。 連接網(wǎng)絡(luò)狀態(tài)圖如圖4-2所示: 圖4-2 連接網(wǎng)
34、絡(luò)狀態(tài) (1)在startApp()中寫(xiě)如下代碼: condition=false; CommandThread commandThread=new CommandThread(this); commandThread.start(); (2)建立一個(gè)線程類,實(shí)現(xiàn)同步操作并且訪問(wèn)連接,需要注意的是訪問(wèn)連接要try,catch語(yǔ)句: class CommandThread extends Thread{ MIDlet parent; boolean exit=false; public CommandThread(MIDlet
35、 parent){ this.parent=parent; } public void run() { while (true) { synchronized (parent) { while (!condition) { try { parent.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } conditi
36、on = false; } try { invokeServlet(defaultURL); } catch (Exception e) { System.out.println(e.getMessage()); } } } } (3)訪問(wèn)網(wǎng)絡(luò)方法: public void invokeServlet(String url)throws IOException{ //創(chuàng)建輸入輸出流連接 HttpConnection conn=null; Dat
37、aOutputStream dos=null; DataInputStream dis=null; try{ //用HttpConnection的openOutStream()方法獲取輸出流,它將發(fā)送請(qǐng)求到服務(wù)器端 conn=(HttpConnection)Connector.open(url, Connector.READ_WRITE); //設(shè)置請(qǐng)求方式為post,默認(rèn)的請(qǐng)求方式GET conn.setRequestMethod(HttpConnection.POST); //設(shè)置請(qǐng)求屬性
38、 conn.setRequestProperty("IF-Modified-Since", "15 Oct 2010 09:20 GMT"); conn.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0"); conn.setRequestProperty("Content-Language", "en-CA"); conn.setRequestProperty("Connection", "Keep-Alive");
39、//發(fā)送請(qǐng)求參數(shù)到servlet dos=conn.openDataOutputStream(); dos.writeUTF(termName); dos.writeUTF(stuID); dos.writeUTF(stuName); dos.flush(); dos.close(); //接受servlet響應(yīng)數(shù)據(jù) dis=new DataInputStream(conn.openInputStream()); String retur
40、nScore=dis.readUTF(); String returnXinxi=dis.readUTF(); dis.close(); String reslutstring="對(duì)不起,學(xué)號(hào)或者姓名錯(cuò)誤"; if(returnScore!=null){ System.out.println("所有成績(jī)"); } if (!returnScore.endsWith(reslutstring)) { System.out.println("mainpa
41、nl"); mainPanel=new MainPanel(this,returnScore,returnXinxi); mainPanel.showMe(); }else { returnForm=new Form("查詢結(jié)果"); returnForm.append(returnScore); returnForm.addCommand(cmdErro); returnForm.setCommandListener(this); display.setCurrent(returnFo
42、rm); } }catch(Exception e){ }finally{ if(dis!=null){ dis.close(); } if(dos!=null){ dos.close(); } if(conn!=null){ conn.close(); } } } 4.2 服務(wù)器端編碼 服務(wù)器端采用struts+hibernate框架整
43、合應(yīng)用,基于j2ee平臺(tái)開(kāi)發(fā)N層架構(gòu)模型,實(shí)現(xiàn)了表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層等多層架構(gòu)。 具體的邏輯是:jsp頁(yè)面通過(guò)response、post方法發(fā)送給web.xml,web.xml通過(guò)配置struts2訪問(wèn)struts.xml,struts.xml將消息發(fā)送給action處理并返回結(jié)果,Action繼承了ActionSupport,action調(diào)用service接口并且使用其serviceimp實(shí)現(xiàn)類,serviceimp調(diào)用dao接口并且使用daoimp實(shí)現(xiàn)類,daoimp實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)的具體的邏輯,daoimp調(diào)用model層的模型,model層建立數(shù)據(jù)庫(kù)表。具體流程如下圖4-3所
44、示: 圖 4-3 ssh框架 4.2.1 學(xué)生信息的查詢 采用表格形式展示,分別有展示的信息有學(xué)號(hào)、姓名性別、專業(yè)、出生時(shí)間、總學(xué)分等操作。學(xué)生排列順序是按學(xué)號(hào)的從小到大排的。 其界面如圖4-4所示: 圖 4-4 學(xué)生詳細(xì)信息 其主要層daoimp的代碼實(shí)現(xiàn)如下: public void delete(String xh) { Session session=null; try { session=HibernateSessionFactory.getSession(); Transaction ts = se
45、ssion.beginTransaction(); Query query=session.createQuery("from Xsb where xh="+xh+""); Xsb xs=(Xsb) query.uniqueResult(); session.delete(xs); mit(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ if(session.isOpen(
46、)) session.close(); } } public Xsb find(String xh) { Xsb xs=null; Session session=null; try { session=HibernateSessionFactory.getSession(); Query query=session.createQuery("from Xsb where xh="+xh+""); xs=(Xsb) query.uniqueResult(); } catch (Excepti
47、on e) { // TODO: handle exception e.printStackTrace(); } finally{ if(session.isOpen()) session.close(); } return xs; } public List findAll(int pageNow,int pageSize) { List list=null; Session session=null; try { session = Hibern
48、ateSessionFactory.getSession(); Query query = session.createQuery("from Xsb order by xh"); int firstResult = (pageNow - 1) * pageSize; query.setFirstResult(firstResult); query.setMaxResults(pageSize); list = query.list(); } catch (Exception e) { // TODO: handle exception
49、 e.printStackTrace(); } finally{ if(session.isOpen()) session.close(); } return list; } public int findXsSize() { int size=0; Session session=null; try { session = HibernateSessionFactory.getSession(); Query query = session.createQuery(
50、"from Xsb"); List list= query.list(); size=list.size(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ if(session.isOpen()) session.close(); } return size; } public void save(Xsb xs) { Session sessi
51、on=null; try { session=HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); session.save(xs); mit(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ if(session.isOpen())
52、session.close(); } } public void update(Xsb xs) { Session session=null; try { session=HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); session.update(xs); mit(); } catch (Exception e) { // TODO: hand
53、le exception e.printStackTrace(); } finally{ if(session.isOpen()) session.close(); } } 4.2.2課程信息錄入 課程信息是按照課程號(hào)來(lái)作為唯一標(biāo)識(shí)的,可以添加課程號(hào),課程名,開(kāi)課學(xué)期,學(xué)時(shí),學(xué)分等信息。如果課程號(hào)已經(jīng)存在,則會(huì)提示你已經(jīng)輸入某某課程號(hào)信息,如果需要修改請(qǐng)點(diǎn)擊修改課程。 圖 4-5 添加課程 其action類的動(dòng)作如下: public String addKc() throws Exception {
54、Kcb kc1=new Kcb(); String kch=kc.getKch(); if(kcService.find(kch)!=null) { return ERROR; } kc.setKch(kc.getKch()); kc1.setKcm(kc.getKcm()); kc1.setKxxq(kc.getKxxq()); kc1.setXs(kc.getXs()); kc1.setXf(kc.getXf()); kcService.save(kc); return SUCCESS; } 在daoimp實(shí)現(xiàn)如
55、下 public void save(Kcb kc) { Session session=null; try { session=HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); session.save(kc); mit(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
56、 finally{ session.close(); } } 4.2.3 學(xué)生成績(jī)的查詢 在服務(wù)器端可以查詢學(xué)生的成績(jī),根據(jù)選擇的不同科類顯示出當(dāng)前您選擇的學(xué)生成績(jī),顯示課程號(hào)、學(xué)號(hào)、成績(jī)和學(xué)分等信息。 圖 4-6 學(xué)生成績(jī)的查詢 在action類里的主要代碼的實(shí)現(xiàn)如下: public String findXscj() throws Exception { List list=cjService.getXsCjList(cj.getId().getXsb().getXh()); if(list.size()>0) { Map req
57、uest=(Map) ActionContext.getContext().get("request"); request.put("list", list); return SUCCESS; } else return ERROR; } public String findCj() throws Exception { Cjb stucj=cjService.getXsCj(cj.getId().getXsb().getXh(),cj.getId().getKcb().getKch()); Map request=(Map) Actio
58、nContext.getContext().get("request"); request.put("stucj", stucj); return SUCCESS; } 在daoimp類里的代碼主要實(shí)現(xiàn)如下: public Cjb getXsCj(String xh,String kch) { Cjb cj=null; Session session = null; try { session=HibernateSessionFactory.getSession(); Query query=sess
59、ion.createQuery("from Cjb where id.xsb.xh="+xh+""+"and id.kcb.kch="+kch+""); cj=(Cjb) query.uniqueResult(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally{ session.close(); } return cj; } 5. 結(jié) 束 語(yǔ) 經(jīng)過(guò)四個(gè)多月的設(shè)計(jì)和開(kāi)發(fā),系統(tǒng)基本開(kāi)發(fā)完畢。實(shí)現(xiàn)
60、了成績(jī)管理的最基本功能,在可以運(yùn)行的前提下,實(shí)現(xiàn)了增刪改查等功能。通過(guò)本次畢業(yè)設(shè)計(jì),我對(duì)java技術(shù)有了進(jìn)一步的了解,把書(shū)本的知識(shí)真正的轉(zhuǎn)化成為實(shí)際的東西,理解了開(kāi)發(fā)一個(gè)項(xiàng)目的一般過(guò)程。在這次設(shè)計(jì)過(guò)程中學(xué)到了很多有用的思想和技巧,特別是在設(shè)計(jì)過(guò)程中所出現(xiàn)的錯(cuò)誤的解決過(guò)程中受益匪淺。 但是由于畢業(yè)設(shè)計(jì)時(shí)間倉(cāng)促,本人能力有限,所以該系統(tǒng)還有許多不盡如人意的地方,不當(dāng)之處在所難免,比如用戶界面不夠美觀,出錯(cuò)處理不夠等多方面問(wèn)題。這些都有待進(jìn)一步改善。 參 考 文 獻(xiàn): 【1】林麗娟,J2ME無(wú)線開(kāi)發(fā)實(shí)用教程——北京:清華大學(xué)出版社 2002.09 【2】韓順平,精通J2ME無(wú)線編程——
61、北京:清華大學(xué)出版社 2007.12 【3】孫鑫 ,J2ME開(kāi)發(fā)大全——北京:清華大學(xué)出版社 2004.07 【4】馬士兵,J2ME移動(dòng)設(shè)備程序設(shè)計(jì)——北京:清華大學(xué)出版社 2007.09 【5】張麗娟,J2ME手機(jī)游戲案例精編——清華大學(xué)出版社 2007.07 【6】趙毅主編.跨平臺(tái)程序設(shè)計(jì)語(yǔ)言——Java.西安:西安電子科技大學(xué)出版社,2006 【7】飛思科技產(chǎn)品研發(fā)中心.JSP應(yīng)用開(kāi)發(fā)詳解(第二版)[M].北京:電子工業(yè)出版社,2004 【8】吳以欣,陳小寧.JavaScript 腳本程序設(shè)計(jì)[M].北京:人民郵電出版社,2005 【9】孫衛(wèi)琴、李洪成.Tomcat與Java Web開(kāi)發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2004 【10】Duc A. Tran,Kien A. Hua,Tai Do.ZIGZAG: An Efficient Peer-to-Peer Scheme for Media Streaming, 2003 24
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)圖形的運(yùn)動(dòng)(三)-1課件
- 供應(yīng)鏈管理方法
- 2019最新青島版數(shù)學(xué)一年級(jí)上冊(cè)第三單元《走進(jìn)花果山-10以內(nèi)的加減法》(信息窗6)課件
- 第四章勞動(dòng)中的心理、生理狀態(tài)對(duì)安全的影響
- 201x九年級(jí)物理上冊(cè)-雙休作業(yè)八(新版)教科版課件
- 課件:項(xiàng)目一-電子商務(wù)物流系統(tǒng)規(guī)劃
- 【人教版】2012-2013學(xué)年九年級(jí)(全一冊(cè))數(shù)學(xué)小復(fù)習(xí):第27章相似復(fù)習(xí)課件
- 消化腺(全英文)課件
- 小學(xué)語(yǔ)文資源五年級(jí)上冊(cè)課件《落花生》課件第一課時(shí)
- 納米材料的基本效應(yīng)課件
- 分析化學(xué)概論-課件
- 沉浸式光影解決方案課件
- 第六講加固Windows操作系統(tǒng)安全ppt課件
- 民主選舉投出理性一票ppt課件
- 高二數(shù)學(xué)選修正態(tài)分布推薦實(shí)用全套PPT