學(xué)生成績管理系統(tǒng)畢業(yè)論文
《學(xué)生成績管理系統(tǒng)畢業(yè)論文》由會員分享,可在線閱讀,更多相關(guān)《學(xué)生成績管理系統(tǒng)畢業(yè)論文(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、學(xué)生成績管理系統(tǒng) 1.引言 隨著計算機(jī)技術(shù)的發(fā)展,特別是計算機(jī)網(wǎng)絡(luò)技術(shù)與數(shù)據(jù)庫技術(shù)的發(fā)展,使用人們的生活與工作方式發(fā)生了很大的改觀。網(wǎng)絡(luò)技術(shù)的應(yīng)用使得計算機(jī)之間通信、信息共享成為可能,而數(shù)據(jù)庫技術(shù)的應(yīng)用則為人們提供了數(shù)據(jù)存儲、信息檢索、信息分析等功能,從而使得工作更高效地進(jìn)行。 數(shù)據(jù)庫始于20世紀(jì)60年代,經(jīng)過40多年的發(fā)展,現(xiàn)在已經(jīng)形成了理論體系,成為計算機(jī)軟件的一個重要分支。數(shù)據(jù)庫技術(shù)體現(xiàn)了當(dāng)代先進(jìn)的數(shù)據(jù)管理方法,使計算機(jī)的應(yīng)用真正滲透到國民經(jīng)濟(jì)各個部門,在數(shù)據(jù)處理領(lǐng)域發(fā)揮著越來越大的作用。 而互聯(lián)網(wǎng)技術(shù)的出現(xiàn),更是進(jìn)一步豐富的人類生活,數(shù)字化生存已經(jīng)一步步走進(jìn)我們的生活與工作
2、?;ヂ?lián)網(wǎng)技術(shù)與數(shù)據(jù)庫技術(shù)的結(jié)合為計算的在人類生活中的應(yīng)用帶來了巨大的影響。產(chǎn)業(yè)信息化,管理現(xiàn)代化,科學(xué)化已經(jīng)成為行業(yè)發(fā)展的重要課題,這不僅是企業(yè)提高自身競爭力,甚至是國家提高綜合國力,走向國民富強(qiáng)的重要手段。 在我國,教育是一個影響著國富民強(qiáng)的重要行業(yè),隨著改革開放和市場經(jīng)濟(jì)的發(fā)展根據(jù)中國特有的國情發(fā)展,教育得到了國家的大力扶持與社會各界的高度重視,從而使教育業(yè)向規(guī)范性與現(xiàn)代化的方向高速發(fā)展,但是同發(fā)達(dá)國家相比,我國的教育行業(yè)的信息技術(shù)的應(yīng)用程度還很低,只有在大城市中發(fā)展較早、規(guī)模較大的院校中才使用計算機(jī)進(jìn)行大規(guī)模操作,從各方面提高工作效率,取得良好的社會和經(jīng)濟(jì)效益,而一些新興的、規(guī)模較小的
3、教育機(jī)構(gòu)還沒有全部具備這種功能。因此可見,隨著我國教育的迅速發(fā)展,信息技術(shù)在其上的應(yīng)用會更加地廣泛和深入。本系統(tǒng)采用myeclipse8.5的IDE環(huán)境和WTK2.5.2 手機(jī)模擬環(huán)境開發(fā),采用tomcat5.5的web容器。 1.1開發(fā)工具的選用 本系統(tǒng)的開發(fā)利用mysql為本系統(tǒng)的數(shù)據(jù)庫,它是一個支持多用戶的數(shù)據(jù)庫,適用于大中小規(guī)模的數(shù)據(jù)量需求。學(xué)校校園網(wǎng)的建設(shè)也為服務(wù)器/客戶端的結(jié)構(gòu)提供了硬件的支持。 使用WTK2.5.2+myeclipse8.5+tomcat5.5作為系統(tǒng)開發(fā)的開發(fā)環(huán)境。 WTK 的全稱是Sun J2ME Wireless Toolkit —— Sun的無線開
4、發(fā)工具包。這一工具包的設(shè)計目的是為了幫助開發(fā)人員簡化j2me的開發(fā)過程。使用其中的工具可以開發(fā)與 Java Technology for the Wireless Industry (JTWI, JSR 185) 規(guī)范兼容的設(shè)備上運(yùn)行的j2me 應(yīng)用程序。該工具箱包含了完整的生成工具、實(shí)用程序以及設(shè)備仿真器。 MyEclipse,是一個十分優(yōu)秀的用于開發(fā)Java, J2EE的Eclipse插件集合,MyEclipse的功能非常強(qiáng)大,支持也十分廣泛,尤其是對各種開元產(chǎn)品的支持十分不錯。MyEclipse企業(yè)級工作平臺(MyEclipse Enterprise Workbench ,簡稱MyEc
5、lipse)是對Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。Eclipse 是一個開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate,Spring。 Tomcat 是一個輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,Tomcat和I
6、IS、Apache等Web服務(wù)器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器。 1.2 技術(shù)支持 本項目主要用了如下技術(shù):J2ME、GPRS、Servlet和J2EE技術(shù)。各項技術(shù)的簡單介紹如下: 1.2.1 J2ME技術(shù) J2ME(java 2 Micro Edition)java家族中的重要的一員,它是當(dāng)前使用比較多的基于移動設(shè)備開發(fā)技術(shù)。J2ME構(gòu)建于MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device Configuration)或CDC(Connected De
7、vice Configuration)基礎(chǔ)之上。 目前國內(nèi)外J2ME比較多的應(yīng)用包括車載信息和計算、數(shù)字電視、電視機(jī)頂盒、Internet訪問設(shè)備、家庭Audio/Video、無線手持設(shè)備等。 J2ME具有很多Java技術(shù)特性,主要有如下特點(diǎn): 可以在各種支持Java的設(shè)備上運(yùn)行。 代碼短小。 充分利用Java的語言優(yōu)勢。 安全性好。 用J2ME實(shí)現(xiàn)的應(yīng)用可以方便地升級到J2SE、J2EE 1.2.2 GPRS技術(shù) 通用分組無線服務(wù)技術(shù)(General Packet Radio Service)的簡稱,它是GSM移動電話用戶可用的一種移動數(shù)據(jù)業(yè)務(wù)。GPRS可說是GSM的延續(xù)。
8、GPRS和以往連續(xù)在頻道傳輸?shù)姆绞讲煌?,是以封包(Packet)式來傳輸,因此使用者所負(fù)擔(dān)的費(fèi)用是以其傳輸資料單位計算,并非使用其整個頻道,理論上較為便宜。GPRS的傳輸速率可提升至56甚至114Kbps。 1.2.3 Servlet技術(shù) Servlet是一種服務(wù)器端的Java應(yīng)用程序,具有獨(dú)立于平臺和協(xié)議的特性,可以生成動態(tài)的Web頁面。 它擔(dān)當(dāng)客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序)的中間層。 Servlet是位于Web 服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動的Java應(yīng)用程序不同,Servlet由Web服務(wù)
9、器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。 1.2.4 J2EE技術(shù) J2EE平臺由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成,它對開發(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ì)、生活、娛樂等各個方面發(fā)揮著重要的作用,因此網(wǎng)站建設(shè)在Internet應(yīng)用上的地位越來越重要。原本的舊的管理方法
11、越來越不適應(yīng)現(xiàn)在社會的發(fā)展。許多人還停留在以前的手工操作。這大大地阻礙了人類經(jīng)濟(jì)的發(fā)展。為了適應(yīng)現(xiàn)代社會人們高度強(qiáng)烈的時間觀念,學(xué)校信息管理系統(tǒng)軟件為學(xué)校辦公室?guī)砹藰O大的方便。 2.2 系統(tǒng)目標(biāo) 本系統(tǒng)是將現(xiàn)代化的計算機(jī)技術(shù)和傳統(tǒng)的教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)院的工作流程設(shè)計完成的。為了使系統(tǒng)在學(xué)院的管理中發(fā)揮更大的作用,實(shí)現(xiàn)工作過程的計算機(jī)化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標(biāo): 1.系統(tǒng)應(yīng)具有實(shí)用性、可靠性和適用性,同時注意到先進(jìn)性。 2.對各個數(shù)據(jù)庫進(jìn)行動態(tài)管理,防止混亂。 3.能夠按照用戶選擇的不同的條件進(jìn)行簡單查詢和復(fù)合查詢。 4.能夠?qū)Σ樵兘Y(jié)果進(jìn)行分類匯
12、總,實(shí)現(xiàn)報表打印。 5.注意數(shù)據(jù)的安全性,具有數(shù)據(jù)備份和恢復(fù)的功能。 6.方便用戶的操作,盡量減少用戶的操作。 2.3 系統(tǒng)功能需求分析 本系統(tǒng)適用于各高校,其功能主要分為4大類:各種信息的錄入功能、登錄、學(xué)生成績的查詢和各種信息的增加、刪除、修改。具體功能分析如下: 錄入功能:在服務(wù)器管理提供相應(yīng)的錄入功能。 登錄:用戶分為兩個角色,學(xué)生用戶和教師用戶。所有的用戶都必須憑唯一標(biāo)識登錄系統(tǒng),學(xué)生可以憑借學(xué)號和姓名進(jìn)入手機(jī)終端查詢成績,學(xué)生用戶用手機(jī)端進(jìn)入只能查詢個人信息、成績等查詢。教師用web頁面進(jìn)入服務(wù)器端,可以進(jìn)行對學(xué)生信息、學(xué)生成績等進(jìn)行操作。 查詢功能:學(xué)生用戶在安裝
13、完成學(xué)生成績管理系統(tǒng)客戶端后,進(jìn)入手機(jī)軟件頁面后可以查詢個人信息、成績等操作,教師可以登錄服務(wù)器的網(wǎng)頁查詢學(xué)生全部信息、成績等等。 維護(hù)功能:在管理端進(jìn)行相應(yīng)的增加、修改、刪除等功能。 2.4 系統(tǒng)運(yùn)行環(huán)境 該運(yùn)行環(huán)境的規(guī)定是保證本需求說明的功能得到實(shí)際真正體現(xiàn)的基礎(chǔ)。 (1)系統(tǒng)運(yùn)行環(huán)境支持軟件 數(shù)據(jù)庫系統(tǒng):MYSQL5.5或者更高版本 Web 服務(wù)器:Tomcat5.0或者更高版本 開發(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è)計 3.1 系統(tǒng)總體設(shè)計 數(shù)據(jù)庫服務(wù)器 應(yīng)用 服務(wù)器 Web服務(wù)器 客戶瀏覽器 請求 請求 請求 響應(yīng) 請求 手機(jī)終端 響應(yīng) 響應(yīng) 響應(yīng) 圖3-1系統(tǒng)構(gòu)架 本系統(tǒng)的學(xué)生成績管理系統(tǒng)采用B/S、手機(jī)終端結(jié)構(gòu)模式,該結(jié)構(gòu)由手機(jī)終端、瀏覽器和服務(wù)器組成,該結(jié)構(gòu)主要特點(diǎn)是集中管理,隨時隨地,方便快捷,軟件的程序、數(shù)據(jù)庫、發(fā)布的信息等都集中在服務(wù)器
15、,極大地簡化了用戶端的工作,用戶端除了操作系統(tǒng)及瀏覽器外不需要安裝其它軟件。服務(wù)器則由Web服務(wù)器和數(shù)據(jù)庫服務(wù)器組成,它將擔(dān)負(fù)更多的工作,對數(shù)據(jù)庫的訪問和應(yīng)用程序的執(zhí)行都將在服務(wù)器上完成。 3.2 系統(tǒng)結(jié)構(gòu) 本系統(tǒng)從功能上劃分可分為以下幾大模塊:學(xué)生信息管理,課程信息管理,學(xué)生成績管理,學(xué)生信息查詢等幾大模塊。 系統(tǒng)模塊圖: 學(xué)生成績管理系統(tǒng) 課程信息管理 學(xué)生成績查詢 成績信息管理 學(xué)生信息管理 系統(tǒng)管理 手機(jī)終端成績查詢 圖 3-2 系統(tǒng)功能模塊圖 以下將對各子模塊進(jìn)行說明。 學(xué)生信息管理模塊:包括學(xué)生信息錄入
16、和學(xué)生信息的查詢兩個子模塊。學(xué)生信息的錄入可以錄入學(xué)生的學(xué)號、姓名、性別、出生時間、在校期間所要修的總學(xué)分、一些備注信息、學(xué)生的電子照片、專業(yè)。學(xué)生信息查詢子模塊可以查詢學(xué)生的學(xué)號姓名等信息,并且分頁顯示,每頁8條,也可以查詢某一條的詳細(xì)信息,并且可以對某一條進(jìn)行刪除修改。 課程信息的管理模塊:課程信息的錄入,可以錄入課程號,課程名,開課學(xué)期,本科共需要多少學(xué)時,學(xué)分是多少。課程信息的查詢模塊,可以查詢課程號,課程名等信息,也可以查詢詳細(xì)信息,可以修改課程信息,但是不能修改課程號。 成績信息管理模塊:學(xué)生成績信息的添加,對于已經(jīng)添加的不能再添加。學(xué)生成績查詢分頁顯示,可以查詢出每個人的所有
17、成績并且按學(xué)號先后排序。 手機(jī)終端學(xué)生成績查詢:輸入學(xué)號和姓名并且選擇學(xué)期查詢出各科成績,可以查看學(xué)生個人信息,和該學(xué)生的所有成績。 3.3 數(shù)據(jù)庫設(shè)計 根據(jù)系統(tǒng)結(jié)構(gòu)的分析,我們可以總結(jié)出數(shù)據(jù)庫的基本表。根據(jù)系統(tǒng)管理我們可以得出有登錄表,學(xué)生信息管理得出我們要設(shè)計學(xué)生表,成績信息管理得出我們有成績表。其他的表也是如此推出。 3.3.1 數(shù)據(jù)庫表介紹 本系統(tǒng)定義的數(shù)據(jù)庫中包含以下6個表:學(xué)生表,成績表,課程表,專業(yè)表,登錄表,學(xué)生-課程關(guān)系表等。下面介紹這些表的結(jié)構(gòu)。 學(xué)生信息表:用于保存學(xué)生的學(xué)號,姓名,性別,年齡,所在院系,班級名,入學(xué)年份等信息. 登錄表:用于
18、保存系統(tǒng)用戶及管理員信息.包括組別,登錄用戶名,密碼等. 成績表:用于保存學(xué)生成績信息,包括學(xué)號,課程號,成績等字段. 授課表:用于保存教師授課信息.包括教師名,課程號,學(xué)時數(shù),班級名等. 專業(yè)表:用于保存專業(yè)id,專業(yè)名,人數(shù),專業(yè)負(fù)責(zé)人等。 課程表:用戶保存課程信息,包括課程名,課程號,先修課等信息. 3.3.2表結(jié)構(gòu) 表3-1 學(xué)生表xsb 字段名稱 說明 字段類型 備注 xh 學(xué)號 bigint 主關(guān)鍵字 xm 姓名 varchar(50) 不可為空 xb 性別 bit 可為空 Zy_id 專業(yè)id Int 可為空 Cssj 出生
19、時間 datetime 可為空 zxf 總學(xué)分 varchar(50 可為空 Bz 備注 varchar(250) 可為空 Zp 照片 blob 可為空 xxxf 現(xiàn)修學(xué)分 Int 可為空 Rxnf 入學(xué)年份 Datetime 可為空 Id 身份證號 Char(18) 不可為空 Syd 生源地 varchar(20) 可為空 addr 家庭地址 Varchar(250) 可為空 phone 個人電話 Char(11) 可為空 zzmm 政治面貌 varchar(20) 可為空 yhkh 銀行卡號 char
20、(20) 可為空 zdy 指導(dǎo)員 Varchar(14) 可為空 表3-2 成績表cjb 字段名稱 說明 字段類型 備注 Xh 學(xué)號(外鍵) bigint 不可為空 kch 課程號(外鍵) int 不可為空 cj 成績 float 可為空 xf 學(xué)分 int 可為空 表3-3 課程表kcb 字段名稱 說明 字段類型 備注 kch 課程號 Char(3) 不可為空 kcm 課程名 Varchar(50) 可為空 kxxq 開課學(xué)期 int 可為空 xf 學(xué)分 int 可為空 表3-4 專業(yè)
21、表zyb 字段名稱 說明 字段類型 備注 id 專業(yè)ID Char(3) 不可為空,自動增加 zym 專業(yè)名 Varchar(50) 可為空 rs 人數(shù) int 可為空 fzr 專業(yè)負(fù)責(zé)人 Varchar(20) 可為空 表3-5 學(xué)生-課程關(guān)系表xs_kcb 字段名稱 說明 字段類型 備注 xh 學(xué)號(外鍵) bigint 不可為空 kch 課程號(外鍵) char(3) 不可為空 3.3.3各表間的聯(lián)系 圖3-3 表之間聯(lián)系 3.3.4數(shù)據(jù)庫連接代碼的實(shí)現(xiàn) 學(xué)生成績管理系統(tǒng)主要離不開與數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行即時傳輸
22、,所以保證與數(shù)據(jù)庫的連通,是關(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ù)庫連接不正確!"); e.printStackTrace(); } return con; } 4.系統(tǒng)編碼與實(shí)現(xiàn) 4.1手機(jī)端系統(tǒng)編程 4.1.1登錄界面 在打開手機(jī)端學(xué)生成績管理系統(tǒng)軟件時,系統(tǒng)提示版權(quán)系統(tǒng),輸入學(xué)號和姓名進(jìn)入下一個頁面。登錄界面效果如圖 4-1所示: 圖 4-1登錄
25、頁面 主要代碼如下: private Display display; //聲明一個列表 private List mainList; //聲明TextField TFStuid用于客戶端輸入學(xué)號 private TextField TFStuid,TFStuName; //聲明用于保存學(xué)號和學(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; //聲明一個Ticker private Ticker aTicker; //聲明一個圖片 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ā)送,返回,退出,確定按鈕對象 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("歡迎使用移動學(xué)生成績查詢系統(tǒng)"); anAlert=new Alert("版權(quán)聲明","Copyright@2010廊坊師范學(xué)院,ALL Right Reserved.",anImage,AlertType.CONFIRMATION); anAlert=new Alert("系統(tǒng)說明","廊坊師范學(xué)院學(xué)生成績查詢系統(tǒng),Copyright@2011廊坊師范學(xué)院,ALL Right Reserved.",anImage,AlertType.CONFIRMATION)
30、; //創(chuàng)建一個TEXTFIELD獲取學(xué)生學(xué)號 TFStuid=new TextField("學(xué)號","09040261010",30,TextField.ANY); TFStuName=new TextField("姓名","黃昕華",30,TextField.ANY); //輸入學(xué)號的標(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)聽 inputForm.setCommandListener(this); } public v
32、oid startApp() throws MIDletStateChangeException { // TODO 自動生成方法存根 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ǎng)絡(luò)時多線程的設(shè)計與實(shí)現(xiàn) 在手機(jī)端成績查詢體統(tǒng),為了避免死鎖現(xiàn)象,將網(wǎng)絡(luò)設(shè)計成一個獨(dú)立的線程。當(dāng)應(yīng)用程序想要訪問網(wǎng)絡(luò)時,可以用notify()方法將訪問網(wǎng)絡(luò)線程喚醒;當(dāng)訪問網(wǎng)絡(luò)結(jié)束后,通過調(diào)用wait()方法使訪問網(wǎng)絡(luò)線程釋放標(biāo)記鎖并且處于等待狀態(tài)。 連接網(wǎng)絡(luò)狀態(tài)圖如圖4-2所示: 圖4-2 連接網(wǎng)
34、絡(luò)狀態(tài) (1)在startApp()中寫如下代碼: condition=false; CommandThread commandThread=new CommandThread(this); commandThread.start(); (2)建立一個線程類,實(shí)現(xiàn)同步操作并且訪問連接,需要注意的是訪問連接要try,catch語句: 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ǎ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ā)送請求到服務(wù)器端 conn=(HttpConnection)Connector.open(url, Connector.READ_WRITE); //設(shè)置請求方式為post,默認(rèn)的請求方式GET conn.setRequestMethod(HttpConnection.POST); //設(shè)置請求屬性
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ā)送請求參數(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="對不起,學(xué)號或者姓名錯誤"; if(returnScore!=null){ System.out.println("所有成績"); } 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平臺開發(fā)N層架構(gòu)模型,實(shí)現(xiàn)了表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層等多層架構(gòu)。 具體的邏輯是:jsp頁面通過response、post方法發(fā)送給web.xml,web.xml通過配置struts2訪問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ù)庫的具體的邏輯,daoimp調(diào)用model層的模型,model層建立數(shù)據(jù)庫表。具體流程如下圖4-3所
44、示: 圖 4-3 ssh框架 4.2.1 學(xué)生信息的查詢 采用表格形式展示,分別有展示的信息有學(xué)號、姓名性別、專業(yè)、出生時間、總學(xué)分等操作。學(xué)生排列順序是按學(xué)號的從小到大排的。 其界面如圖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課程信息錄入 課程信息是按照課程號來作為唯一標(biāo)識的,可以添加課程號,課程名,開課學(xué)期,學(xué)時,學(xué)分等信息。如果課程號已經(jīng)存在,則會提示你已經(jīng)輸入某某課程號信息,如果需要修改請點(diǎn)擊修改課程。 圖 4-5 添加課程 其action類的動作如下: 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é)生成績的查詢 在服務(wù)器端可以查詢學(xué)生的成績,根據(jù)選擇的不同科類顯示出當(dāng)前您選擇的學(xué)生成績,顯示課程號、學(xué)號、成績和學(xué)分等信息。 圖 4-6 學(xué)生成績的查詢 在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é) 束 語 經(jīng)過四個多月的設(shè)計和開發(fā),系統(tǒng)基本開發(fā)完畢。實(shí)現(xiàn)
60、了成績管理的最基本功能,在可以運(yùn)行的前提下,實(shí)現(xiàn)了增刪改查等功能。通過本次畢業(yè)設(shè)計,我對java技術(shù)有了進(jìn)一步的了解,把書本的知識真正的轉(zhuǎn)化成為實(shí)際的東西,理解了開發(fā)一個項目的一般過程。在這次設(shè)計過程中學(xué)到了很多有用的思想和技巧,特別是在設(shè)計過程中所出現(xiàn)的錯誤的解決過程中受益匪淺。 但是由于畢業(yè)設(shè)計時間倉促,本人能力有限,所以該系統(tǒng)還有許多不盡如人意的地方,不當(dāng)之處在所難免,比如用戶界面不夠美觀,出錯處理不夠等多方面問題。這些都有待進(jìn)一步改善。 參 考 文 獻(xiàn): 【1】林麗娟,J2ME無線開發(fā)實(shí)用教程——北京:清華大學(xué)出版社 2002.09 【2】韓順平,精通J2ME無線編程——
61、北京:清華大學(xué)出版社 2007.12 【3】孫鑫 ,J2ME開發(fā)大全——北京:清華大學(xué)出版社 2004.07 【4】馬士兵,J2ME移動設(shè)備程序設(shè)計——北京:清華大學(xué)出版社 2007.09 【5】張麗娟,J2ME手機(jī)游戲案例精編——清華大學(xué)出版社 2007.07 【6】趙毅主編.跨平臺程序設(shè)計語言——Java.西安:西安電子科技大學(xué)出版社,2006 【7】飛思科技產(chǎn)品研發(fā)中心.JSP應(yīng)用開發(fā)詳解(第二版)[M].北京:電子工業(yè)出版社,2004 【8】吳以欣,陳小寧.JavaScript 腳本程序設(shè)計[M].北京:人民郵電出版社,2005 【9】孫衛(wèi)琴、李洪成.Tomcat與Java Web開發(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: 本站所有資源如無特殊說明,都需要本地電腦安裝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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公有云業(yè)務(wù)能力和應(yīng)用場景課件
- 第二章教育與人發(fā)展總結(jié)課件
- 2020年各平臺品牌藍(lán)V“成長”指南ppt課件
- 全能型生產(chǎn)主管資料
- 【人教版音樂】小學(xué)2二年級上冊:小貓釣魚-ppt課件
- 三叉神經(jīng)痛的治療護(hù)理常識課件
- 滿分作文:家有寵物(第二課時)課件
- 莫言文學(xué)小說《檀香刑》讀書分享會
- 《小毛蟲》完整ppt課件
- 五年級下冊語文第一單元語文園地人教部編版課件
- 人教新課標(biāo)版五年級下語文同步備課資料包(ppt課件)-第七組:24.金錢的魔力
- 人教版五年級數(shù)學(xué)下冊5.1旋轉(zhuǎn)ppt課件
- 精算基礎(chǔ)知識課件
- 第七章--寶石的分類及命名課件
- 詠懷八十二首課件