• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Java Web的高??荚嚺抛到y(tǒng)

      2018-07-28 07:12:14胡秀梅章宇琦吳迪吳海峰
      科技視界 2018年12期
      關(guān)鍵詞:考試

      胡秀梅 章宇琦 吳迪 吳海峰

      【摘 要】本文基于spring+ struts2+ Hibernate框架,設(shè)計實現(xiàn)了一套用于高??荚嚨呐抛到y(tǒng),以替代目前考試過程中的人工排座。該系統(tǒng)具有自動、快速、穩(wěn)定的特點,既避免了當前人工排座過程中由人工操作失誤而引起的各類問題,又大大減輕了教務(wù)工作者的工作量,提高了高校信息化水平。

      【關(guān)鍵詞】Java Web;考試;排座

      中圖分類號: TP391.13 文獻標識碼: A 文章編號: 2095-2457(2018)12-0120-003

      DOI:10.19694/j.cnki.issn2095-2457.2018.12.052

      0 引言

      考試是高校教學過程中不可或缺的一環(huán),每學期末在考試前教務(wù)工作人員都要結(jié)合當前班級、科目、教室使用情況進行考試座位的編排。以筆者所在學校為例,全校有超過200個班級,按每個班級考10門課程計算,需要安排的場次就超過2000次。由此可見該項工作需要耗費大量的人力和時間。

      目前有一些學者對考試的自動排座展開了研究。婁清[1]利用VBA在Excel中開發(fā)了普通高中的考試排座系統(tǒng),給出了詳細的模塊設(shè)計和代碼參考;李正慧[2]簡要的從排課系統(tǒng)數(shù)據(jù)庫中關(guān)鍵性數(shù)據(jù)表的設(shè)計和排課界面功能的實現(xiàn)等方面介紹了整個排課數(shù)據(jù)庫的設(shè)計思路;周玉芬[3]等針對高校考試的特點,用VC++編寫了一個考場隨機排座系統(tǒng),實現(xiàn)了考場人員座次的隨機排序、顯示和打印等功能;徐欣[4]等利用Microsoft Visual FoxPro6.0開發(fā)了一套考試隨機排位系統(tǒng),實現(xiàn)了考場的分配、學生座位的隨機排座、考試時間、場次安排、打印考試座位表等功能,并進行了測試和應用。

      由以上調(diào)研可以看出,考試的排座問題是每個學校都面臨的重要問題,如何使其自動化實現(xiàn)已經(jīng)得到了學者們的關(guān)注,并產(chǎn)生了一些相關(guān)研究成果。然而當前對排座系統(tǒng)的研究和應用還不夠深入和全面,沒有與高??荚嚢才澎`活性高、變化性大的特點相結(jié)合,研發(fā)的系統(tǒng)也主要以本地測試或者普通桌面軟件為主,無法適用于多人集中辦公的場景。

      針對這個現(xiàn)狀,我們利用目前主流的Spring+Struts2+Hibernate三層框架技術(shù),采取面向?qū)ο蟮乃枷?,結(jié)合MVC模式實現(xiàn)了一套適用于高??荚嚨淖詣优抛到y(tǒng)。

      1 關(guān)鍵技術(shù)

      1.1 MySQL數(shù)據(jù)庫

      MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。

      1.2 三層框架

      Spring框架

      Spring是一個輕量級控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。Spring框架是由于軟件開發(fā)的復雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合性角度而言,絕大部分Java應用都可以從Spring中受益。

      Struts2框架

      Struts2是一個基于MVC設(shè)計模式的Web應用框架,它本質(zhì)上相當于一個servlet,在MVC設(shè)計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數(shù)據(jù)交互。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設(shè)計也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。

      Hibernate框架

      Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關(guān)系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執(zhí)行。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用。

      2 設(shè)計與實現(xiàn)

      本系統(tǒng)分為三大模塊,即超級管理員、教務(wù)處和輔導員。超級管理員管理學院表、班級表、課程表、教室詳情表、用戶表。對這些表中的數(shù)據(jù)具有增加、修改、刪除、查看的權(quán)限。這些表都是屬于學校固定信息。同時還有對教務(wù)處、輔導員的權(quán)限的配置功能。教務(wù)處管理時間表、考試安排表。主要功能為對考試時間的安排,對全校班級對應課程考試安排的增、刪、改、查。輔導員可以查看考試安排表,安排考試排座。

      整個系統(tǒng)結(jié)構(gòu)如圖1 所示。

      2.1 數(shù)據(jù)庫表的設(shè)計

      如圖2為系統(tǒng)的數(shù)據(jù)庫表設(shè)計結(jié)構(gòu)圖。每一個方塊為一個表結(jié)構(gòu),方塊上面一層為表名,下面為表的字段。表與表之間的連線代表表之間的關(guān)系。

      表關(guān)系介紹:

      (1)學院表關(guān)聯(lián)班級表,有了學院才會有班級,為一對多的關(guān)系;

      (2)考試信息表關(guān)聯(lián)班級表、考試時間地點表、課程表,而考試時間地點表是課程和班級表聯(lián)合主鍵生成,所以班級與課程是這兩者表的主要部分,構(gòu)成上面的四角關(guān)系;

      (3)班級課程表則是課程表與班級表映射出來的一張表,因為兩者為多對多的關(guān)系;

      (4)用戶表是一張單獨的表;

      (5)考試時間地點表則從教室表獲取教室信息。

      表主要字段介紹:

      (1)教室詳情表中的座位詳情:(n1*m1+n2*m2+n3*m3),其中n代表有幾排,m表示每排有幾個座位,其中m =k1+k2+k3,代表每隔k個有一個過道;

      (2)用戶表中的標志位:1代表超級管理員,2代表教務(wù)處,3代表輔導員;

      (3)排座表的設(shè)計:學院、班級、課程、教室、人數(shù)、座次表。座次表在數(shù)據(jù)庫中以字符串的形式顯示,字符串中的書寫以鍵值對的形式書寫。例如:“01=學生A ,02=學生B…”。

      (2)排座算法

      智能排座算法是該系統(tǒng)的核心,該算法利用后端的動態(tài)數(shù)據(jù),排出最優(yōu)化的座位方案,算法包含沖突檢測功能。算法流程如圖3所示。

      上述算法思路清晰,結(jié)構(gòu)較為簡單,實現(xiàn)起來比較容易,其大致流程為:

      第一步,系統(tǒng)讀取后端數(shù)據(jù)庫的考試計劃、教室信息、班級信息和課程信息,并將這些數(shù)據(jù)加載到內(nèi)存;

      第二步,將考試計劃按照班級人數(shù)從小到大順序排列,教室容納人數(shù)按照從小到大順序排列,先安排人數(shù)少的班級,再安排人數(shù)多的班級。

      第三步,遍歷考試計劃中的每一項,找到合理的教室,記錄并鎖定該時間段的對應教室使用,防止出現(xiàn)一教室多用。

      第四步,將排好的每一項考試座次表寫入到Excel文件并存儲,供后期各學院打印下載。

      (3)主要代碼

      系統(tǒng)的核心代碼及相關(guān)注釋如下所示。

      //班級的dao 層

      StudentClassDao dao;

      public void setDao(StudentClassDao dao) {

      this.dao = dao;

      }

      //教室的dao 層

      ClassroomDao dao;

      public void setDao(ClassroomDao dao) {

      this.dao = dao;

      }

      //排座功能的實現(xiàn),兩個參數(shù),一個是班級對象,一個是教室對象

      public void arraySets(StudentClass studentC,Classroom classroom){

      //查詢數(shù)據(jù)庫,獲取班級人數(shù)

      StudentClass studentC2=dao.queryStudentClassById(studentC.id);

      Integer studentClassNum=studentC2.getNum();

      //查詢數(shù)據(jù)庫,獲取教室容量

      Classroom classroom2=dao.queryClassroomById(classroom.id);

      Integer roomNum=classroom2.getNum();

      //定義一個數(shù)組,數(shù)組的長度為班級人數(shù),此數(shù)組作為班級學生,進行編號

      int sR[]=new int[studentClassNum];

      for (int i = 0; i < sR.length; i++) {

      sR[i]=i+1;

      }

      //定義一個數(shù)組,數(shù)組的長度為教室容量,此數(shù)組做為教室座位號,進行編號

      int cR[] = new int[roomNum];

      for (int i = 0; i < cR.length; i++) {

      cR[i]=i+1;

      }

      Random random = new Random();

      //定義一個字符串數(shù)組,用來存放教室與學生的對應關(guān)系,長度為學生數(shù)量

      String[] classToStu=new String[studentClassNum];

      //遍歷教室

      for (int i = 0,j=0; i < sR.length && j

      //產(chǎn)生一個隨機編號,編號不大于學生最大編號

      int z = random.nextInt(studentClassNum);

      for (int k = 0; k < sR.length; k++) {

      if(z==sR[k]){

      classToStu[j]=i+":"+z;

      sR[k]=0;

      }else{

      //是參數(shù)回歸,也就是重新這一次操作

      i=i-2;

      j=j-1;

      //跳出for循環(huán)

      break;

      }}}}

      3 結(jié)果測試

      經(jīng)過測試,系統(tǒng)可以正常運行,部分測試頁面截圖如下。

      4 結(jié)語

      本系統(tǒng)是根據(jù)高校教務(wù)管理人員的需求,結(jié)合高校學生信息管理的特點開發(fā)的,整個系統(tǒng)具有良好的實用性和可擴充性,已經(jīng)考試應用于考試安排中,能滿足院系環(huán)境下的考試管理需求。后續(xù)研究將從界面的美觀性、功能的完整性等方面加以改進,提高系統(tǒng)易用性和普適性,更好的服務(wù)于高校信息化工作。

      圖4 系統(tǒng)主界面

      圖5 座次表

      【參考文獻】

      [1]婁青.利用VBA在Excel中開發(fā)普通高中考試排座系[J].中國教育信息化,2012.

      [2]李正慧.排課系統(tǒng)數(shù)據(jù)表的設(shè)計與功能的實現(xiàn)[J].數(shù)字技術(shù)與應用,2011.

      [3]周玉芬,杜猛,宋明慧.使用VC++開發(fā)考場隨機排座系統(tǒng)[J].電腦編程技巧與維護,2008.

      [4]徐欣,陸陽,金紅.考試排位系統(tǒng)[J].電子科技大學學報, 2003.

      猜你喜歡
      考試
      三本書
      考試后
      Japanese Artificial Intelligence Robotto Take Entrance Examinations
      中學科技(2017年5期)2017-06-07 13:01:01
      你考試焦慮嗎?
      中學科技(2015年6期)2015-08-08 05:35:38
      準備考試
      五原县| 永修县| 尚志市| 集贤县| 长寿区| 故城县| 泰宁县| 仪陇县| 富顺县| 剑河县| 罗平县| 从江县| 临夏县| 龙陵县| 金阳县| 堆龙德庆县| 桦甸市| 邢台县| 武乡县| 大名县| 陈巴尔虎旗| 灵璧县| 肥西县| 泊头市| 嘉峪关市| 江北区| 徐汇区| 晋中市| 伊通| 云梦县| 深州市| 兴仁县| 吉隆县| 青浦区| 永济市| 昌宁县| 白朗县| 保亭| 乳山市| 玉树县| 绥芬河市|