丁莉
(西安醫(yī)學院 衛(wèi)生管理系,陜西 西安 710021)
基于RMI的學生成績查詢系統設計與實現
丁莉
(西安醫(yī)學院 衛(wèi)生管理系,陜西 西安 710021)
文中就學生成績查詢系統,提出了一個基于RMI技術的系統模型,以解決學校對學生成績管理及學生對成績查詢的問題。文中采用分布式對象J2EE/RMI技術,完成了服務器程序和客戶機程序的設計,實現了遠程對象之間的無縫調用。管理員可以對數據庫里的教師,學生信息進行修改,老師可以及時地填寫學生成績,學生在客戶端查看自己的成績等功能,提高了學校教務管理效率,減少了工作量,具有實用意義。
JAVA;RMI;數據庫;成績管理
一直以來人們管理檔案的方式都采用人工管理,這種管理方式不僅效率低、保密性差,而且因為檔案數據量大,所以查找、更新和維護都十分困難。本文采用分布式對象J2EE/ RMI技術,設計實現了學生成績查詢系統,將成績管理等工作系統化,網絡化,使得大規(guī)模的成績錄入等工作簡潔化,成績管理更加快捷有效。

圖1 RMI體系結構圖
Java遠程方法調用,即 Java RMI(JavaRemote Method Invocation)是Java編程語言里,一種用于實現遠程過程調用的應用程序編程接口[1]。RMI機制實現程序組件在不同操作系統之間的通信,它大大增強了Java開發(fā)分布式應用的能力[2]。RMI體系結構采用典型的層次設計風格,從上至下分別由樁/框架層、遠程引用層和傳輸層共3個層次組成,各層之間明確定義了接口與協議,如圖1所示。
RMI系統采用類似 CORBA的對象請求代理機制,樁(stub)是遠程對象在客服端的代理,客服程序中是遠程對象引用其實是對本地樁的引用。樁負責將遠程調用請求通過遠程引用層和傳輸層轉發(fā)給服務端的框架(skeleton),再由框架將請求分派給服務程序中的對象實現[3]。在與遠程對象的通信過程中,RMI將使用標準機制 (用于 RPC系統):stub與skeleton[4]。stub擔當遠程對象的客戶本地代表或代理人角色。在遠程虛擬機中,每個遠程對象都可以有相應的skeleton,負責將調用分配給實際的遠程對象實現。RMI是一個分布式對象模式。它使得使用Java開發(fā)分布式程序更加容易。由于不需要設計協議(這基本是一個錯誤的任務)使得使用RMI開發(fā)分布式程序比使用socket更加容易。在RMI里面設計者就象在調用一個本地的類的方法一樣,而實際上是在調用的時候相應的參數被發(fā)送到遠端的對象和然后被解釋。最后結果返回給調用者。一個RMI應用的流程,使用RMI開發(fā)一個分布式應用包括如下幾個步驟:
1)定義一個遠端的接口;
2)實現這個遠端的接口;
3)開發(fā)一個服務端;
4)開發(fā)一個客戶端;
5)生成Stubs和Skeletons,運行RMI注冊器,服務端 和客戶端。
1)系統總體設計
系統采用三層體系結構,遵從一般的分布式系統結構的設計,分為“用戶層”、“業(yè)務邏輯層”和“數據層”。在RMI體系結構里:
用戶層即用戶的圖形操作界面,只需要具有一定的圖形能力和簡單的數據處理能力。用戶界面用SWING來設計,依照Java語言中的GUI設計規(guī)范。最終是界面形式是標準Windows窗口形式。管理員主要通過鼠標操作,來進行系統管理,學生信息,教師信息,班級信息等一系列活動。
程序流程圖如圖2所示:

圖2 系統總流程圖
2)數據庫設計
在MySQL里新建一個名為student的數據庫,實現數據的存儲需要。數據庫一共包含7張表,分別是:管理員信息表dt_admin,學生表dt_student,教師信息表dt_teacher,課程信息表dt_course,班級信息表di_class,成績表dt_score,授課表dt_teacher_course。各表之間的關系如圖3的E-R所示。

圖3 E-R圖
1)對象接口定義
在系統需求分析里我們已經分析了軟件的基本功能,定義了“用戶”和“管理員”兩個基本對象,并分析了兩者的基本功能和操作。因此,只要按照這個功能來定義不同對象的操作,再按照數據結構里分析的不同類型的數據結構,為系統定義所需要的數據結構。


學生類對外提供數據訪問接口,隱藏內部具體細節(jié)的實現,服務層只需要調用學生的接口即可,修改內部實現細節(jié)的時候不需要更改服務層,這也符合面向對象類的設計原則。
2)編譯*.class文件生成樁與框架
編譯后的Java類名,含有遠程對象的實現,rmic編譯器根據此類名,為實現java.rmi.Remote接口的對象即遠程對象,生成stub和skeleton。rmic命令中所給類,都是經過javac命令成功編譯且經過完全包限定的類。例如,按如下所示對類文件名HelloImpl運行rmic:rmic hello.HelloImpl,這將創(chuàng)建HelloImpl_Skel.class和HelloImpl_Stub.class文件。
遠程對象的 skeleton是服務器端實體,它包含一個方法,該方法將調用分配給實際的遠程對象實現[5]。stub是遠程對象的代理,其主要作用是將遠程對象的方法調用轉發(fā)給實際遠程對象所在的服務器,客戶機對遠程對象的引用實際上是對stub的引用。stub只實現遠程接口,而并不實現任何的本地接口,遠程對象則可以將兩者都實現。因為stub與遠程對象本身實現的是同一個遠程接口集,所以客戶機可以用 Java語言的內置操作符進行強制類型轉換和類型檢查。用rmic命令,編譯所有的服務層.class文件,得到相應的Stub文件。
3)編寫對象實現和服務程序
①對象實現
服務層對外提供業(yè)務接口,客戶端實際調用的是用rmic指令編譯后生成的Stub.class,通過http協議,傳遞給服務器端,調用相應的實現類。調用程序將調用本地stub的方法,而本地stub將負責執(zhí)行對遠程對象的方法調用[6]。在RMI中,遠程對象的stub與該遠程對象所實現的遠程接口集相同。調用stub的方法時將執(zhí)行下列操作:
初始化與包含遠程對象的遠程虛擬機的連接;
對遠程虛擬機的參數進行編組(寫入并傳輸);
等待方法調用結果;
解編(讀取)返回值或返回的異常;
將值返回給調用程序。
為了避免調用機制看起來過于復雜,參數的序列化和網絡級通信等細節(jié)都在stub中進行了隱藏處理。在遠程虛擬機中,每個遠程對象都可以有相應的skeleton。Skeleton負責將調用分配給實際的遠程對象實現。它在接收方法調用時首先讀取遠程方法的參數,調用實際遠程對象實現上的方法進行處理,最終將結果寫入并傳輸給調用程序。
上述的stub和skeleton由rmic編譯器生成。以Teacher接口為例,繼承UnicastRemoteObject并實現,TeacherServiceDao接口。向數據庫中添加教師信息,服務層調用Teacher的數據訪問層add(Teacher teacher)方法,實現對教師信息的增加功能,
②服務程序:
對象實現僅僅是定義了一種類型而已,真正執(zhí)行服務的對象實例(即伺服對象)必須在一個服務進程中創(chuàng)建。然后在客戶程序里對其進行調用,完成客戶端的相應請求。
4)客戶程序的編寫
客戶程序必須獲得遠程對象的引用才可調用遠程對象的方法,一般情況下,遠程對象引用可通過其他遠程方法調用的參數或返回值獲取,但第一個遠程對象引用則必須借助基于URL的RMI注冊表,將服務程序發(fā)布的對象標識解析為遠程對象的引用[7]。
例如在客戶端(視圖界面)調用服務層的方法,首先就是要用lookUp()方法,獲得遠程服務對象。初始化學生信息窗口,在客戶端程序啟動時,init()方法獲取遠端班級服務接口(ClassesServiceDao)和學生服務接口(StudentServiceDao),因為在初始化學生信息窗口的時候,要從數據庫中獲取該學生所在班級,姓名等基本信息,在查詢學生成績時,要通過這些接口來獲取該學生的各科成績。
文中采用Java RMI服務器框架設計實現了學生成績查詢系統,完成了管理員管理、教師錄入成績以及學生查詢成績等基本功能。通過從系統設計、數據庫設計、操作界面設計到系統功能模塊的實現以及系統測試,進行了一個完整的系統設計,這是一個較完整的系統設計的開發(fā)流程。
[1]劉暉,沈鈞毅,林欣.用CORBA創(chuàng)建電子商務系統[M].北京:北京希望電子出版社,2000.
[2]高雅俠,鄒海榮.基于Java的RMI技術的研究與應用[J].計算機與數字工程,2011(8):174-177.
[3]譚昊勛,龍海洋,鄭娟.基于Java RMI的分布式計算[J].湘潭大學自然科學學報,2005(2):59-61.
[4]肖統民.基于設計模式的可重用Web數據庫應用軟件的研究[J].計算機與現代化,2006(7):42-44.
[5]佘科華,李杰.基于Java-RMI的移動代理技術的研究[J].微計算機信息,2009(3):247-248.
[6]張晞,用RMI進行分布式Java編程[J].職大學報,2004(2): 35-38.
[7]楊曉梅,于長云,張冬梅.Java RMI與CORBA在分布式系統開發(fā)中的研究[J].天津理工大學學報,2005(4):4-8.
The design and implementation of student performance management system based on RMI
DING Li
(Health Services Administration,Xi`an Medical University,Xi'an 710021,China)
In this paper,came up with a model of system based on RMI technology for student performance management system,in order to solve the problem of student performance management and the scores query.Based on the distributed object J2EE/RMI technology,completed the design of the server program and client program,realized the remote objects seamlessly between calls.Administrators can change information of teacher and student,the teacher can fill in student achievement in a timely manner,student check their grades in client,The system improve the efficiency of the school,educational administration management,reduce the workload,it has practical significance.
JAVA;RMI;database;performance management
TN02
A
1674-6236(2016)16-0035-03
2015-10-29稿件編號:201510222
丁 莉(1987—),女,山西運城人,碩士研究生,助教。研究方向:物聯網技術,傳感器網絡,系統分析。