天天看點

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

 相關資源:JAVA+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書).zip-網際網路文檔類資源-CSDN下載下傳

一、效果圖

1、資料庫通路子產品的實作

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

 2、用戶端子產品實作

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文
Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

3、成績上傳子產品

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

 4、密碼修改子產品

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

 5、查詢子產品

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文
Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

6、成績比例圖顯示子產品

Java+access綜合測評系統畢業設計(源代碼+論文+開題報告+任務書)一、效果圖二、畢業論文

二、畢業論文

目    錄

摘要 

Abstract 

1 引言 

2 綜合測評系統開發工具簡介 

2.1  ACCESS資料庫 

2.2 Java及Java Applet簡介 

3 綜合測評系統分析設計 

3.1需求分析 

3.2系統整體架構 

3.3子產品功能說明 

4 綜合測評系統實作 

4.1系統資料庫設計 

4.2資料庫通路子產品的實作 

4.3用戶端各個子產品的實作 

4.4開發過程中遇到的問題及解決 

5 系統運作和調試 

5.1測試目的 

5.2測試環境 

5.3測試方法與測試過程 

5.4運作和調試結果 

結束語 

緻 謝 

參考文獻 

附錄 

1 引言

在大學期間,同學們計算過多次綜合測評,深刻體會到綜合測評計算是一件既繁瑣且準确率又低的事情。同時,班委每學期都要将同學們上交的書面形式的綜合測評得分情況進行核對并輸入到電腦裡面,制成電子文檔,友善全年段同學的成績排名,并且也要将電子文檔上交給院系相關部門留檔。每次要完成這個任務,全班的班委都必須參與,可謂興師動衆,一旦不能很好的協調,出錯率就很高,造成工作量加大。在資訊化時代,這種手工計算綜合測評的模式必将被以計算機為基礎的資訊化系統所取代。是以,設計一個功能完善的綜合測評系統,已成為大家迫切的願望。通過這個系統,每個同學可以準确計算自己的綜合測評成績并将得分情況上傳到班委的機子上,這樣就可以省去班委統一輸入成績這一繁瑣的過程,既友善了同學們,準确率也得到了保證。

該綜合測評系統的開發采用了Java Applet技術,是因為Java Applet與ASP等制作動态網頁的工具相比,具有得天獨厚的優勢:ASP等隻是腳本語言,而Java是一種面向對象的語言,其提供内容豐富的類庫,能滿足使用者更多的互動需求;Java是一種與平台無關的語言,開發的系統具有良好的可移植性 ,且安全性高;ASP等腳本語言是在伺服器端運作的,而Java Applet是運作在用戶端浏覽器上的小應用程式,這一特性更使得Applet能同時擁C/S及B/S兩種軟體體系結構的優勢。

同時,本系統的開發采用了面向對象的方法,将系統劃分子產品時,盡量做到高内聚低耦合,提高子產品獨立性[1],給子產品功能的增加與修改帶來了友善。前台采用可移植性良好,健壯,安全性高的Java語言開發,背景采用微軟的ACCESS資料庫,作為開發平台,強大的開發工具與穩定的背景資料庫,保證了系統的健壯性。在系統的開發過程中,也遇到了一些問題(如:資料的表格顯示等),但通過自己的努力以及指導老師的幫助,這些問題都得到了圓滿的解決。

2 綜合測評系統開發工具簡介

2.1  ACCESS資料庫

Microsoft Access是一種基于Windows圖形使用者界面的關系型資料庫管理系統。1995年Access成為Office 95套件産品之一。作為Microsoft office套件産品之一的Access已經賣出了近700萬份,成為世界上最流行的桌面資料庫系統。Access與許多優秀的關系資料庫一樣,可以很容易地連接配接相關的資訊而且還對其他的資料庫系統有所補充。它能操作其它來源的資料,包括許多流行的PC資料庫程式(如dBASE,Paradox,Microsoft FoxPro)和伺服器、小型及大型機上的許多SQL資料庫。Access還完全支援Microsoft的OLE技術[2]。

Access還提供Windows作業系統的進階應用程式開發系統。Access與其它資料庫軟體相比,它具有上手快、易操作等優點。同時利用内置的UBA語言,既可以開發出常用的資料處理工具,也能設計出功能全面的一整套資料庫管理資訊系統[3]。Access還提供了強大的管理模型,它以圖形化使用者界面和向導為基礎。Access的結構可以适應子產品化增長、自動化配制、維護比較小規模的伺服器程式開發的需要。

2.2 Java及Java Applet簡介

Java最早大概可追溯至1991年四月份,Sun的綠色計劃(Green Project)開始着手于發展消費性電子産品(Consumer Electronics),所使用的語言是C、C++、及Oak (為Java語言的前身),後因語言本身和市場的問題,使得消費性電子産品的發展無法達到當初預期的目标,再加上網絡的興起,綠色計劃也是以而改變發展的方向,最終導緻Java的産生[4]。Java是一種簡單的、面向對象的、健壯的、安全的、解釋的、與平台無關的、多線程的、動态的語言。

Java Applet是用Java語言編寫的一些小應用程式,這些程式直接嵌入到頁面中,由支援Java的浏覽器(IE或Nescape)解釋執行能夠産生特殊效果。它可以大大提高Web頁面的互動能力和動态執行能力。包含Applet的網頁稱為Java-powered頁,可以稱其為Java支援的網頁[5]。

當使用者通路這樣的網頁時,Applet被下載下傳到使用者的計算機上執行,但前提是使用者使用的是支援Java的網絡浏覽器。由于Applet是在使用者的計算機上執行的,是以它的執行速度不受網絡帶寬或者Modem存取速度的限制,使用者可以更好地欣賞網頁上Applet産生的多媒體效果。

Applet小應用程式的實作主要依靠java.applet包中的Applet類。與一般的應用程式不同,Applet應用程式必須嵌入在HTML頁面中,才能得到解釋執行;同時Applet可以從Web頁面中獲得參數,并和Web頁面進行互動。

含有Applet的網頁的HTML檔案代碼中必須帶有<APPLET>和</APPLET>這樣一對标記,當支援Java的網絡浏覽器遇到這對标記時,就将下載下傳相應的小程式代碼并在本地計算機上執行該Applet小程式。

Applet小程式也可以通過Java開發工具的appletviewer來運作。Applet程式離不開使用它的HTML檔案。這個HTML檔案中關于Applet的資訊至少應包含以下三點:1)位元組碼檔案名(編譯後的java檔案,以.class為字尾);2)位元組碼檔案的位址;3)在網頁上顯示Applet的方式。

由于用HTML(超文本标志語言)編寫的網頁是靜态的且不具備與使用者互動的能力,Java Applet廣泛用于在網頁上添加動态、互動成份[6]。

因為Applet是從遠端伺服器上下載下傳并且在本地執行,是以安全性就顯得格外重要。通過限制Applet在沙箱(Applet的運作環境)中運作,進而保證了對本地系統而言Applet是安全的。Applet在沙箱中運作時:

1)不能運作任何本地可執行程式;

2)除了存放下載下傳的Applet的伺服器外,Applet不能和其它主機進行通信;

3)不能對本地檔案系統進行讀寫。(信任的Applet放寬這一限制);

4)除了本地機使用的Java版本号、作業系統名稱及版本号、檔案名分隔符(‘/’或‘\’)和路徑以外,Applet無法獲得有關本地機的其他資訊。Applet也無法獲得使用者的名字和E-mail位址等[7]。

3 綜合測評系統分析設計

3.1需求分析

根據計算機科學與工程系綜合測評評分細則以及廣大同學計算綜合測評的經曆,整理得到該系統的功能需求為:

  1. 使用者隻要根據列出的得分項進行選擇,以及少量的資料輸入就可以計算出自己的綜合測評成績。
  2. 使用者将自己計算好并核對過的綜合測評成績上傳,為防止惡意使用者随意修改合法使用者的成績,成績上傳前必須進行使用者合法性的驗證,合法使用者方能将自己的綜合測評成績上傳至伺服器端的資料庫。同時,合法使用者也可以随時修改自己的密碼。
  3. 使用者可以根據自己的需要進行查詢:
    1. 輸入學号,就可以精确得到該位同學的綜合測評的得分、排名等情況
    2. 查詢所有學生的綜合測評得分情況,并按學号順序排列顯示
    3. 查詢業務學習成績大于等于或小于某一值的所有學生的綜合測評得分情況,并按業務學習成績從高到低排列顯示
    4. 查詢綜合測評成績大于等于或小于某一值的所有學生的綜合測評得分情況,并按綜合測評成績從高到低排列顯示
    5. 查詢業務學習成績大于或小于某一值且綜合測評成績大于等于或小于某一值的所有學生的綜合測評得分情況,并按學号的順序排列顯示。

4、使用者可以檢視全班同學的業務學習成績及綜合測評成績各個得分段的比例,更好地了解班級的綜合測評情況。

3.2系統整體架構

根據系統的功能需求,分析出系統的架構為:

圖1  綜合測評系統總體架構圖

圖2  綜合測評計算架構圖

圖3  綜合測評查詢架構圖

3.3子產品功能說明

1、政治素質

該子產品能夠将所有的政治素質方面的得分項列出來,供使用者選擇自己的得分情況,然後計算出政治素質的得分。法紀觀念、學習态度、品德修養、勞動實踐、獎懲得分與政治素質子產品的功能相似,都是計算各自的得分,是以在此不一一闡述。

2、政治思想素質

   該子產品則将政治素質、法紀觀念、學習态度、品德修養、勞動實踐、獎懲分各個子產品組合,以整體的方式顯示給使用者,并能将各個小子產品的得分情況相加,得出政治思想素質的實際得分(100分制)及總得分(實際得分×20%)

3、業務學習得分

   該子產品能夠處理使用者輸入各門課程的得分情況,計算業務學習實際得分(100分制,業務學習實際得分=各門課程的學分成績總和÷各門課程學分總和+公共選修課的成績)及總得分(業務學習實際得分×60%)。

4、智能素質得分

   該子產品則将科研能力、社會工作能力、師範生技能、文藝活動能力各個小子產品的得分相加得到智能素質的實際得分(100分制)及總得分(實際得分×10%)。

5、體育素質得分

   該子產品能夠處理使用者體育課成績的輸入,計算體育素質的實際得分(體育課成績×60% + 課外體育活動成績)及總得分(實際得分×10%)。

6、精确查詢

   該子產品能夠接受使用者輸入學号,查詢該同學綜合測評的相關情況。

7、模糊查詢

   該子產品能夠接受使用者的輸入,根據使用者的需要,以業務學習得分和綜合測評得分為條件進行查詢。

8、綜合測評成績比例顯示

該子產品能夠根據全部上傳的綜合測評,統計總人數,某一分數段的人數,然後按比例圖顯示給使用者。

9、綜合測評成績上傳

   該子產品能夠驗證使用者的合法性并将合法使用者計算出的綜合測評得分情況上傳至伺服器端的資料庫上,作為留檔材料,也作為成績核對的依據。

10、使用者密碼修改

該子產品能夠驗證使用者的合法性并能實作合法使用者對自己密碼的修改。

4 綜合測評系統實作

4.1系統資料庫設計

1、資料庫需求分析:

本系統資料庫的設計總體需求是:學号、使用者密碼、課程名稱、課程學分、成績類型、政治思想素質、業務學習、智能素質、體育素質、綜合測評得分、備注。

2、本系統采用ACCESS作為資料庫。在本系統中,要求資料庫名為:綜合測評資料庫.mdf,并在裡面建立系統設計時需要用到的資料表,各表設計如下所示:

表1  使用者資訊表

字段名稱 資料類型 字段大小 允許空
學号 文本 15
姓名 文本 15
密碼 文本 20

其中:學号為主鍵

表2  綜合測評成績表

字段名稱 資料類型 字段大小 允許空 小數位數
學号 文本 50
政治思想素質 數字 單精度型 允許 2
業務學習 數字 單精度型 允許 2
智能素質 數字 單精度型 允許 2
體育素質 數字 單精度型 允許 2
綜合測評得分 數字 單精度型 允許 2
備注 備注 允許

其中:學号為主鍵

表3  課程資訊表:

字段名稱 資料類型 字段大小 允許空
課程名稱 文本 20
學分 文本 10
成績類型 文本 10

其中:課程名稱為主鍵

表4:業務學習成績表:

字段名稱 資料類型 字段大小 允許空
學号 文本 20
備注 備注

說明:其中學号為主鍵,本表的各個字段除了學号與備注這兩個固定字段以外,其他字段都是在程式運作過程中動态生成的。

4.2資料庫通路子產品的實作

    本項目與資料庫的連接配接采用JDBC-ODBC橋連接配接[8],其連接配接成功後将出現提示,如圖4所示界面:

圖4  資料庫連接配接成功提示圖

其核心代碼如下:

boolean  success=true;   //定義一個标志變量标志連接配接資料庫是否成功

try

{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");     //加載驅動程式     con=DriverManager.getConnection("jdbc:odbc:zonghecepingshujuku");

                                           //與資料庫的連接配接

stmt=con.createStatement();          //執行通路資料庫的SQL語句

 }

catch(Exception e)

{

JOptionPane.showMessageDialog(this, "資料庫連接配接失敗!");

success=false;  

}

if(success)

{    JOptionPane.showMessageDialog(this,"資料庫連接配接成功");   }
           

4.3用戶端各個子產品的實作

1、政治思想素質子產品的實作:本子產品的界面主要是利用Java的awt包及swing包開發的,界面實作如圖5

所示:

圖5  政治思想素質計算界面

本子產品是由政治素質、法紀觀念、學習态度、品德修養、勞動實踐、獎懲得分,其他得分共七個小子產品夠成的,各小子產品的容器面闆都是繼承自swing包的Jpanel,而且其中的各個元素,如:複選框、文本框等采用GridLayout布局管理。各個小子產品作為一個類來設計,其中包含構造函數,getscore()方法及getbeizhu()方法,分别取得本小子產品的得分,及得分的原因。選取其中的政治素質子產品描述其實作過程(其他子產品類似)如下:

class Zhengzhisuzhi extends Zuhemianban    //政治素質類,詳見源代碼

{         ……                        //類内部成員的聲明

     public Zhengzhisuzhi(){ …… }         //構造函數,實作界面的布局

     public float getscore()                 //擷取政治素質得分

     { 
          beizhu="";                      //用于存放得分理由
          float score=18;                   //基本分18分

          if(this.malie.getState())             //如果“馬列理論學習優”有選中
          {  
              score+=1;                    //加上該項的得分
              beizhu+=this.malie.getLabel()+";"; //得分理由加入備注字元串中
          }
          ……                           //其他得分項類似處理
          return score;                     //将得分值傳回
     }

    public String getbeizhu()               //擷取備注内容
    {  
         return beizhu;    
    }
}
           

2、業務學習成績計算子產品

   業務學習成績的界面如圖6所示:

圖6  業務學習成績計算界面圖

其中一個科目就是一個小子產品,而且這些科目的資訊是從伺服器端的“課程資訊表”中擷取的,這些科目組合就夠成了業務學習成績計算的主要部分。但由于這些科目是動态生成的,而不是設計時給定的,是以必須用一個數組連結清單存儲這些動态生成的科目類執行個體,才可能在計算出業務學習得分的過程中得到必須的資料。也因其是動态生成的,是以實作過程相對比較複雜,其核心代碼如下:

public Yewuxuexi (InetAddress ip)       //構造函數傳入伺服器的IP位址

{     
     ……      //建立與伺服器通信的資料輸入輸出流,并送出初始化請求

     xinxis=datain.readUTF().split(":");   //讀取初始化資料
     for(int i=1;i<xinxis.length;i++)
     {  
          String[] kechengxinxi=xinxis[i].split(",");
          Xuexichengji xuexichengji=new Xuexichengji(kechengxinxi[0],
          Float.parseFloat(kechengxinxi[1].trim()),kechengxinxi[2]);
          //執行個體化一門科目,并将其加入面闆中
          this.add(xuexichengji);
          //将其加入數組連結清單中,為下面計算課程的學分成績提供資料
        this.arraylist.add(xuexichengji);   
      }  //for

} //Yewuxuexi

public float getscore()         //擷取各門課程的學分成績總和

{  
     float sum=0;             //初始化成績為0
     for(int i=0;i<this.arraylist.size();i++) 
     {   //周遊連結清單中的每個元素,并将得分累加
         sum=sum+((Xuexichengji)(arraylist.get(i))).getscore();
     }
      return sum;             //将得分作為該方法的傳回值傳回
}
           

3、智能素質子產品

智能素質的子產品實作界面如圖7所示:

圖7  智能素質計算界面圖

該子產品是由科研能力、社會工作能力、師範生技能、文藝活動能力、其他得分5個小子產品組合成的,其實作過程與政治思想素質的實作過程類似,這裡不再贅述。

4、體育素質子產品

體育素質子產品實作界面如圖8所示:

圖8  體育素質計算界面圖

本子產品實作過程與政治思想素質的實作過程也類似,這裡不再贅述。

5、成績上傳子產品

成績上傳子產品的實作界面如圖9所示:

圖9  成績上傳界面圖

該子產品類繼承自java.awt包中的Frame類,當使用者輸入的學号與密碼正确時,才能将成績上傳,其實作的核心代碼如下:

    //綜合測評得分情況插入資料庫的SQL語句

strshangchuan=strshangchuan + "insert into 綜合測評成績表 values('"

+this.xuehao.getText().trim()+"'," + this.sqlzongheceping + ")";

String[] temps=this.yewuxuexi.split(":");

   //業務學習得分情況插入資料庫的SQL語句

String  temp=":insert into 業務學習成績表(學号,備注" +temps[0] +")

        values('" +this.xuehao.getText().trim()+"','"+temps[2] +"'" + temps[1]+ ")";

strshangchuan+=temp;
           

6、使用者密碼修改子產品

  使用者密碼修改子產品的實作界面如圖10所示:

圖10  密碼修改界面圖

該子產品類也是繼承自java.awt包中的的Frame類。首先将進行“新密碼”與“确認新密碼”的核對,如果兩者相同,将進行使用者合法性檢查。如果是合法使用者,可進行密碼修改,資料庫資訊修改成功後,将回報一個“密碼修改成功”的消息給使用者。否則,不能進行密碼的修改,将回報一個“密碼修改失敗”的資訊給使用者。其中,使用者合法性的檢查與成績上傳時使用者的合法性檢查一緻,這裡不再贅述,隻取其中部分核心代碼說明如下:

if(datain.readUTF().trim().equals("密碼修改合法使用者")) //若是合法使用者
{   //密碼修改SQL語句

    String xinmimashangchuan="update  使用者資訊表 set 密碼='"
    +this.xinkouling.getText().trim()+"'where 學号='"
    +this.xuehao.getText().trim()+"'";
    dataout.writeUTF(xinmimashangchuan); //更新資料庫請求上傳
}
else //非法使用者
{……} 
           

7、查詢子產品

查詢子產品實作界面如圖11所示:

圖11  查詢界面圖

其分為精确查詢與模糊查詢兩塊,精确查詢是将輸入的學号作為查詢條件,而模糊查詢則根據業務學習成績與綜合測評成績的組合作為查詢條件進行查詢。精确查詢的結果将傳回個人的各個得分情況及綜合測評與業務學習成績的排名情況。模糊查詢傳回結果的界面圖12所示:

圖12  模糊查詢結果顯示圖

當業務學習成績與綜合測評成績選項數值都為0時,或者兩個選項的值都不為0時,将傳回所有結果集,并按學号順序排列。當業務學習選項的數值為0但綜合測評成績選項數值不為0時,或者相反時,将以非0的一項作為排列顯示的依據。其核心代碼如下:

1)精确查詢

resultset= stmt.executeQuery("select * from 綜合測評成績表 order by 綜合測評得分 desc");    //成績由高到低排列
while(this.resultset.next())                    //檢索該生的綜合測評記錄
{  
     i++;    //i标記該學生綜合測評成績的排名
     if(this.resultset.getString(1).equals(xinxis[1].trim()))
     //若是該學生的綜合測評成績記錄則提取其所有的得分情況及排名
     {   jieguo+=","+this.resultset.getFloat(2) + "," + this.resultset.getFloat(3)+","
         +this.resultset.getFloat(4) + "," + this.resultset.getFloat(5)+","
         +this.resultset.getFloat(6) + "," + i;
         break;   //跳出檢索    }
}
           

2)模糊查詢

String mohuchaxunjieguo=datain.readUTF(); //讀取模糊查詢結果
     //以下是資料在JTable中的顯示
this.vector.removeAllElements();          //将存放顯示資料的向量清空
this.tm.fireTableStructureChanged();       //通知所有偵聽器表結構已更改。
String[] strmohuxianshis=mohuchaxunjieguo.split(":");
//将從伺服器端傳回的資料字元串按行分割
for(int i=1;i<strmohuxianshis.length;i++)
{
    Vector rowvector=new Vector();
    String[] strs=strmohuxianshis[i].split(",");
    for(int j=0;j<strs.length;j++)
    {  
         rowvector.addElement(strs[j]);  
    }  //添加一個顯示資料項
    this.vector.addElement(rowvector);    //添加一行顯示資料項
}
this.tm.fireTableStructureChanged();
           

模糊查詢的部分SQL語句如下:

s="select 使用者資訊表.學号,姓名,政治素質,業務學習,智能素質,體育素質,綜合測評得分 from 綜合測評成績表,使用者資訊表  where 業務學習 >=" + this.yewu.getfloat()+ "and綜合測評得分 >=" + this.zonghe.getfloat()
+" and 綜合測評成績表.學号=使用者資訊表.學号";
           

8、成績比例圖顯示子產品

該子產品實作界面如圖13所示:

圖13  成績比例圖

其中,左右兩塊為同一類的兩個不同執行個體化對象。該子產品的實作過程是:

先查詢資料庫,統計總人數以及各個成績段的人數,然後在用戶端計算各個成績段人數所占總人數的比例,最後将比例圖通過Graphics類的fillArc()方法畫出,資料通過文本框顯示出來,其核心代碼如下:

public void paint(Graphics g)
{

    int int_red=(int)(bili[0]*360);   //計算紅色扇形圓心角的度數
    int int_green=(int)(bili[1]*360);     //計算綠色扇形圓心角的度數
    int int_blue=(int)(bili[2]*360);      //計算藍色扇形圓心角的度數
    int int_yellow=360-int_red-int_green-int_blue;
       //計算黃色扇形圓心角的度數,下面畫出比例圖
    g.setColor(Color.red);             //繪制紅色扇形
    g.fillArc(startx,starty,endlen,endlen,0,int_red);
    g.setColor(Color.green);           //繪制綠色扇形
    g.fillArc(startx,starty,endlen,endlen,int_red,int_green);
    g.setColor(Color.blue);            //繪制藍色扇形
    g.fillArc(startx,starty,endlen,endlen,int_red+int_green,int_blue);
    g.setColor(Color.yellow);          //繪制黃色扇形
    g.fillArc(startx,starty,endlen,endlen,int_red+int_green+int_blue,int_yellow);
}
           

4.4開發過程中遇到的問題及解決

在整個項目的開發過程中遇到了各種各樣的問題,但在老師的指導下,都得到了解決。

1、剛開始的界面問題

   由于綜合測評計算各個得分項相對來說很繁雜,開發本系統就是為了避免因為計算繁雜帶來的不便,是以界面如何有序明了很重要。剛開始設計的時候,将全部得分項在一個頁面裡面全部展現。結果,給人以雜亂的感覺。在指導老師的建議下,最終決定将“政治思想素質”、“業務學習”、“智能素質”、“體育素質”四大部分分開顯示。于是采用了CardLayout布局管理器來實作界面的布局,該布局管理器能夠幫助使用者處理兩個以至更多的成員共享同一顯示空間[9],終于使界面問題得到了解決。

2、Applet通路資料庫的問題

   Java Applet為了安全性得到保證,在各方面做了嚴格的限制,是以通路伺服器端的資料庫顯得複雜。我通過查找資料,知道了Applet通路伺服器端的資料庫可以有以下幾種方式:

   1)Java Applet 直接通路伺服器端的資料庫,但是需要配置政策檔案[10]。這種方式友善了我們開發者,但卻麻煩了使用者,與設計的初衷:方面使用者使用相沖突。

2)在伺服器端編寫代理軟體,其使用ASP的ADO元件和VBscript腳本語言編寫。它首先使用Request對象接收來自用戶端(Applet)的輸入資料流,此處為資料查詢參數(也可以為其它資料)用以滿足使用者具體的查詢要求,然後用ADO元件的Connection對象建立與Web資料庫的連接配接,按照查詢參數的要求将查詢得到的資料儲存在Recordset對象中,再用ASP的Response對象的Write方法把資料放入資料輸出流緩沖區中等待與用戶端Applet的通信[11]。用戶端(Applet)則通過URLConnection對象提供的輸入輸出流與代理軟體進行通信。如果采用這種方式,伺服器端的資料庫的初始化工作則要手動的進行配置,也不能友善使用者的使用。

3)在伺服器端編寫代理軟體,但其也用Java來編寫。本項目采用的就是這種方式。代理軟體與Applet的通信是通過Java的Socket對象提供的輸入輸出流來進行通信。首先,Applet通過Dataoutputstream将對資料庫的通路請求傳給代理軟體,代理軟體通過DataInputStream讀取Applet的通路請求,然後通路資料庫将結果通過DataOutputStream傳送給Applet,Applet再通過DataInputStream讀取通路資料庫的結果。而且用Java編寫的代理軟體可以有應用程式的界面,實作對資料庫的初始化配置工作。

3、查詢結果的顯示問題

   最初設計的時候,顯示結果是呈現在文本區上面的,不美觀。資料查詢結果若用表格顯示,給人整齊,明了的視覺效果。由于SUN公司提供的JDK開發工具包不是可視化的內建開發環境(IDE),不能像Delphi、VB那樣友善地把查詢結果在DBGrid等表格中顯示出來,是以隻能靠自己編寫代碼來實作。在實際應用中,可利用Vector、JTable、AbstractTableModel三個類較好地解決這一問題[12]。

4、比例圖的顯示問題

最初設計比例圖顯示子產品的時候,希望用Panel 類執行個體的getGraphics()方法得到Graphics類的執行個體,然後調用該執行個體的fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)方法來實作對比例圖的繪制。但在運作的過程中總是出現NULLPointException異常,真讓人費解。通過上網查找大量的資料才知道:用控件的getGraphics()方法擷取Graphics類的執行個體時必須是在控件已經顯示出來後才能通過該方法獲得。最終選用重寫Panel類的paint(Graphics g)方法來實作,從這裡擷取的Graphics對象必定是一個已經存在的對象,在運作過程中就不會出現異常。最終也使得比例圖的顯示問題得到了完美的解決。

5 系統運作和調試

5.1測試目的

為了保證系統的正常運作,發現潛在的錯誤和缺陷,根據資訊系統測試的基本原則,結合軟體測試的方法對本系統進行了測試與調試。

5.2測試環境

   機器配置: AMD Sempron(tm) processor 2500+ 1.4GHz   256MB的記憶體

   作業系統:WINDOWS XP

軟體運作環境:JRE 1.5.0;IIS 5.1

5.3測試方法與測試過程

本次測試主要采用黑盒測試法,對軟體從功能方面進行測試。主要運作了系統的功能。主要包括以下幾個子產品的測試:

1、政治思想素質子產品:

   檢查點:是否能進行各個得分項的計算以及取得得分說明的字元串。此子產品檢測通過。

2、業務學習計算子產品:

   檢查點:在Applet初始化的時候能否從伺服器端提取課程資訊,得到業務學習計算的界面;當代理軟體未啟動或無課程初始化資訊時,能否出現提示對話框;能否進行業務學習的正确計算。此子產品測試通過。

3、智能素質子產品:

   檢查點:是否能進行各個得分項的計算以及取得得分說明的字元串。 此子產品檢測通過。

4、體育素質子產品:

   檢查點:能否進行體育素質得分的正确的計算;能否正确擷取其他得分情況說明的字元串。此子產品測試通過。

5、綜合測評成績上傳子產品:

   檢查點:是否能進行使用者合法性的檢查;是否能将合法使用者計算所得的綜合測評得分情況及業務學習成績上傳到伺服器端的資料庫,當成績上傳成功或者失敗時,能否出現相應的資訊提示框。此子產品測試通過。

6、使用者密碼修改子產品:

   檢查點:能否進行新密碼與确認密碼的核對;能否進行使用者合法性的檢查;若是合法使用者能否進行對資料庫密碼的修改;修改成功與否是否出現資訊提示對話框。此子產品測試通過。

7、查詢子產品的測試:

     檢查點:輸入學号能否精确查詢該位同學的資訊,若資料庫無此資訊能否出現資訊提示對話框;模糊查詢能否按查詢條件進行正确查詢。此子產品測試通過。

8、比例圖子產品測試:

   檢查點:能否從伺服器端得到總人數、各個成績段人數的準确的資料;能否計算各個成績段人數的比例;比例圖能否按比例準确的繪制。此子產品測試通過。

5.4運作和調試結果

   系統的各個功能子產品均通過了測試,這在一定程度上保證了系統正常穩定的運作。但在系統的運作測試過程中,也發現了一些潛在的缺陷,通過對這些缺陷的修改,進一步完善了系統。

結束語

本系統采用了面向對象技術進行開發,并按照軟體工程的方法進行測試調試,保證了系統正常穩定的運作,實作了綜合測評的資訊化處理。對于有綜合測評計算經驗的同學,容易使用該系統;對于從未計算過綜合測評的新生,本系統相當于起到綜合測評計算的引導作用。而且可以進行相關資訊的查詢,各個成績段比例圖的檢視,這對同學們了解全體同學的綜合測評情況有很大的幫助。但随着應用的拓廣,該系統的功能還需進一步完善。

通過對這個項目的開發,我對Java及Applet有了更深的認識,在大學期間所學的理論知識得到了更好的實踐。在系統開發過程中也遇到了各種各樣的問題,通過對這些問題的解決使我的知識面得到了拓廣,更重要的是解決問題的能力的提高。