蔡平昕
1、引言
在很多大學(xué)都有了自己的學(xué)生系統(tǒng),成績(jī)系統(tǒng)。畢業(yè)的時(shí)候需要對(duì)學(xué)分進(jìn)行審查,來(lái)確認(rèn)學(xué)生是否能夠畢業(yè)。由于學(xué)生眾多,分析與計(jì)算的工作量很大,錯(cuò)誤也比較多,需要花大量的工作進(jìn)行重復(fù)的審查核對(duì)工作。如何提高效率、如何保證正確率,減輕教師工作的強(qiáng)度,另外對(duì)于學(xué)生也能提前給予一些預(yù)警。
本文旨在通過(guò)對(duì)學(xué)校的畢業(yè)審查規(guī)則的分析,利用java語(yǔ)言進(jìn)行設(shè)計(jì)開(kāi)發(fā)一個(gè)自動(dòng)計(jì)算的審查系統(tǒng)。主要內(nèi)容如下:對(duì)畢業(yè)學(xué)生進(jìn)行審查,得出可以畢業(yè)的學(xué)生審查通過(guò)和審查不通過(guò)的信息以及未通過(guò)原因。并對(duì)java語(yǔ)言和oracle技術(shù)特點(diǎn)進(jìn)行介紹。另外對(duì)畢業(yè)審查系統(tǒng)結(jié)構(gòu)進(jìn)行說(shuō)明。最后對(duì)本文做出一些結(jié)論。
2、相關(guān)技術(shù)簡(jiǎn)介
學(xué)分畢業(yè)審查系統(tǒng)需要對(duì)學(xué)生的信息進(jìn)行維護(hù),對(duì)學(xué)生的課程和課組信息分別做出審查。此系統(tǒng)使用的是軟件行業(yè)比較流行的java語(yǔ)言進(jìn)行編寫(xiě),并利用sql技術(shù)進(jìn)行實(shí)現(xiàn),由于學(xué)籍系統(tǒng)使用的是oracle數(shù)據(jù)庫(kù),所以這個(gè)系統(tǒng)也沿用了oracle數(shù)據(jù)庫(kù)。我們對(duì)此進(jìn)行簡(jiǎn)單的介紹。
2.1 JAVA簡(jiǎn)介與特點(diǎn)
Java是一種可以編寫(xiě)跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,是由SunMicrosystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)(即JavaSE,JavaEE,JavaME)的總稱。Java技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全陛。在全球移動(dòng)互聯(lián)網(wǎng)的技術(shù)環(huán)境下,Java更具備了明顯優(yōu)勢(shì)和恢弘前景。
2.1.1 編寫(xiě)簡(jiǎn)單
Java語(yǔ)言是一種簡(jiǎn)單的語(yǔ)言。Java語(yǔ)言的語(yǔ)法與c和c++的語(yǔ)言很相近,有許多相同的特性,但同時(shí)也取消了C++中很少使用的、繁瑣的、難以理解的、不安全的內(nèi)容,如指針、重載、多繼承等。它還提供了自動(dòng)垃圾回收機(jī)制(gc)以及豐富的基礎(chǔ)類庫(kù),具有大多數(shù)有經(jīng)驗(yàn)的程序員都會(huì)容易學(xué)習(xí)和使用java。
2.1.2 面向?qū)ο?/p>
Java語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言。面向?qū)ο蟮恼Z(yǔ)言支持的概念包括:類與對(duì)象、繼承、多態(tài)。
2.1.3 可移植
Java語(yǔ)言是可移植的。這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,Java依賴于Java虛擬機(jī)(JavaVirtualMachine,JVM)虛擬機(jī),只要系統(tǒng)支持JVM虛擬機(jī),那么Java代碼就可以平滑遷移。另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長(zhǎng)度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSIC實(shí)現(xiàn)的。
2.1.4 高效解釋執(zhí)行
Java為一種高效解釋執(zhí)行的語(yǔ)言。很多高級(jí)語(yǔ)言程序必須轉(zhuǎn)換為機(jī)器語(yǔ)言程序才能執(zhí)行,但這種語(yǔ)言需要在不同的計(jì)算機(jī)系統(tǒng)所使用的機(jī)器語(yǔ)言不同,所以要在不同的環(huán)境進(jìn)行編譯。Java為了實(shí)現(xiàn)“一次編譯,隨處運(yùn)行”的目標(biāo),Java的源程序在編譯時(shí),并不直接編譯成特定的機(jī)器語(yǔ)言程序,而是編譯成與系統(tǒng)無(wú)關(guān)的“字節(jié)碼(Byte codes)”,由Java虛擬機(jī)(JavaVirtualMachine,JVM)來(lái)執(zhí)行。JVM使得Java程序可以“一次編譯,隨處運(yùn)行”。任何系統(tǒng)只有安裝了Java虛擬機(jī)后,才可以執(zhí)行Java程序。JVM能直接在絕大多數(shù)機(jī)器上執(zhí)行,為字節(jié)碼提供運(yùn)行環(huán)境。當(dāng)JVM解釋執(zhí)行Java程序時(shí),Java實(shí)時(shí)編譯器(Just-In-Time,JIT)會(huì)將字節(jié)碼譯成目標(biāo)平臺(tái)對(duì)應(yīng)的機(jī)器語(yǔ)言的指令代碼。早先的許多嘗試解決跨平臺(tái)的方案對(duì)性能要求都很高。其他解釋執(zhí)行的語(yǔ)言系統(tǒng),如BASIC、TCL、PERL都有無(wú)法克服的性能缺陷。然而,Java卻可以在非常低檔的CPU上順暢運(yùn)行,這是因?yàn)镴ava字節(jié)碼是經(jīng)過(guò)精心設(shè)計(jì)的,能夠直接使用JIT編譯技術(shù)將字節(jié)碼轉(zhuǎn)換成畝性能的本機(jī)代碼。事實(shí)上,Java的運(yùn)行速度隨著JIT編譯器技術(shù)的發(fā)展已接近于C++。因而“高效且跨平臺(tái)”對(duì)Java來(lái)說(shuō)已不再矛盾。
2.1.5 多線程
Java是支持多線程的語(yǔ)言。多線程是一種應(yīng)用程序設(shè)計(jì)方法。線程,可以被稱為輕量級(jí)進(jìn)程(Lightweight Process,LWP),其是程序執(zhí)行的最小工作單元。線程是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)調(diào)度和分派的單位,線程本身不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源,但它可與同屬一個(gè)進(jìn)程中的其它線程共享進(jìn)程所擁有的全部資源。多線程使得一個(gè)程序里可同時(shí)執(zhí)行多個(gè)任務(wù)。多線程帶來(lái)的好處是具有更好的交互性能和實(shí)時(shí)控制性能。但采用傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言(如:C/C++)實(shí)現(xiàn)多線程程序并非易事。Java實(shí)現(xiàn)了多線程技術(shù),提供了簡(jiǎn)便的實(shí)現(xiàn)多線程的方法,并擁有一組高復(fù)雜性的同步機(jī)制。
2.2 oracle的特點(diǎn)
oracle是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它連接的是客戶端和服務(wù)器結(jié)構(gòu),是oracle公司為支持高容量的數(shù)據(jù)而推出的。其可以在個(gè)人電腦或者大型的服務(wù)器等多個(gè)平臺(tái)使用。有單機(jī)模式和集群模式。它有以下優(yōu)點(diǎn):
2.2.1 性能優(yōu)越
oracle數(shù)據(jù)庫(kù)軟件在性能上有著很大的優(yōu)勢(shì),大量的企業(yè)和商業(yè)應(yīng)用跑在該數(shù)據(jù)庫(kù)上。能達(dá)到很好的使用效果。國(guó)際上專業(yè)的測(cè)評(píng)數(shù)據(jù)顯示其陛能很突出。
2.2.2 跨平臺(tái)性
oracle數(shù)據(jù)庫(kù)在各種平臺(tái)上均可運(yùn)行,數(shù)據(jù)也能完美的進(jìn)行遷移。
2.2.3 擴(kuò)展性強(qiáng)
oracle具有良好的擴(kuò)展性和可靠性,它還具有開(kāi)發(fā)新的因特網(wǎng)系統(tǒng)的功能,并可以直接存儲(chǔ)XML數(shù)據(jù),并可以獎(jiǎng)搜索結(jié)果以XML形式輸出。其RAC模式可以無(wú)限的擴(kuò)展節(jié)點(diǎn)提升集群的性能,當(dāng)然在這種模式下我們的開(kāi)發(fā)也要對(duì)應(yīng)進(jìn)行一定的適配才能達(dá)到線性的性能提升。
2.2.4 數(shù)據(jù)容災(zāi)
oracle可以其免費(fèi)軟件DataGard或oracle公司的收費(fèi)軟件GlodenGate可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)復(fù)制到異地機(jī)器上,來(lái)保證數(shù)據(jù)的安全性。
3、學(xué)生畢業(yè)審查管理系統(tǒng)框架
學(xué)生畢業(yè)審查系統(tǒng)主要業(yè)務(wù)流程描述:
1.基礎(chǔ)設(shè)置:設(shè)置一些基礎(chǔ)信息,初始化信息。
2.數(shù)據(jù)采集:要對(duì)學(xué)籍、課程、選課、成績(jī)、課程計(jì)劃等信息進(jìn)行采集。
3.審核:對(duì)專業(yè)對(duì)課程計(jì)劃與考試成績(jī)進(jìn)行判斷,然后計(jì)算出學(xué)生課程計(jì)劃和課組計(jì)劃中所有及格的課程的學(xué)分。把課組或必修課程不及格的要求的記錄下來(lái)。根據(jù)學(xué)生學(xué)分進(jìn)行比較,找出必修、選修、限選學(xué)分不滿足要求的學(xué)生為審核不通過(guò)。
4.審核結(jié)果查詢:把審核通過(guò)的學(xué)生記錄下來(lái),把審核不通過(guò)的學(xué)生以及審核不過(guò)的原因記錄下來(lái)。
學(xué)生畢業(yè)審查系統(tǒng)主要功能是通過(guò)以下幾個(gè)功能模塊來(lái)實(shí)現(xiàn)的。具體過(guò)程如下:
1)系統(tǒng)管理:數(shù)據(jù)源配置、用戶管理、權(quán)限配置。實(shí)現(xiàn)用戶管理以及權(quán)限管理,可以根據(jù)專業(yè)設(shè)置權(quán)限,保證數(shù)據(jù)的安全。數(shù)據(jù)源的配置可以界面修改數(shù)據(jù)源信息,也可以后臺(tái)參數(shù)文件修改。
2)信息管理:包括學(xué)籍信息抽取、課程信息抽取、課組信息抽取、成績(jī)信息抽取。該功能是數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)抽取部分,以便下一步進(jìn)行畢業(yè)審核的計(jì)算工作。
3)信息查詢:學(xué)籍信息查詢:根據(jù)專業(yè)和入學(xué)年級(jí)進(jìn)行查詢,查詢功能來(lái)確保信息采集過(guò)程的數(shù)據(jù)的信息完整和準(zhǔn)確。審核結(jié)果查詢:記錄畢業(yè)審核和畢業(yè)預(yù)警審核的結(jié)果,以及審查失敗的原因。
4)畢業(yè)審核管理:根據(jù)輸入的選修學(xué)分、限選學(xué)分已經(jīng)總學(xué)分進(jìn)行畢業(yè)審核。學(xué)年的畢業(yè)審查,審查結(jié)果可以在審查結(jié)果中查看,根據(jù)專業(yè)方向確認(rèn)課程課組信息,然后分析該學(xué)生的成績(jī)是否完成了課程計(jì)劃,如果未完成則審核結(jié)果為失敗。然后進(jìn)行學(xué)分審核工作,如果學(xué)分沒(méi)達(dá)到則審核結(jié)果為失敗。
5)畢業(yè)預(yù)警審核管理:根據(jù)輸入的選修學(xué)分、限選學(xué)分已經(jīng)總學(xué)分以及學(xué)年學(xué)期范圍針對(duì)未畢業(yè)的學(xué)生提前進(jìn)行畢業(yè)審核。根據(jù)選擇的學(xué)年學(xué)期范圍確認(rèn)課程與學(xué)分,如果有無(wú)法畢業(yè)的危險(xiǎn)給予提示。
6)定時(shí)計(jì)算:可以配置一個(gè)任務(wù),夜間把各個(gè)院系的畢業(yè)生信息均計(jì)算出來(lái),以備白天查詢。
7)初始化工具:創(chuàng)建數(shù)據(jù)庫(kù)表索引以及視圖,并插入基本的業(yè)務(wù)數(shù)據(jù)。
4、結(jié)論
通過(guò)利用Java語(yǔ)言和oracle技術(shù)對(duì)大學(xué)中的學(xué)生畢業(yè)進(jìn)行學(xué)分和課程課組的畢業(yè)審查內(nèi)容進(jìn)行邏輯計(jì)算,實(shí)現(xiàn)了對(duì)畢業(yè)審查的高效、精準(zhǔn),在上線后還對(duì)系統(tǒng)做了專項(xiàng)的性能優(yōu)化系統(tǒng)調(diào)優(yōu),使得軟件速度非常迅速,為大學(xué)畢業(yè)審查工作節(jié)省了大量的人力和物力并且提高了準(zhǔn)確度,從功能上也達(dá)到了校方的預(yù)期的目標(biāo),得到了校方的一致好評(píng)。