張寶全+周楓+黃祖源+張少泉+陳先富
摘要:根據(jù)教育部的要求,博士研究生錄取名單需要按照標(biāo)準(zhǔn)的DBF表結(jié)構(gòu)上報導(dǎo)入研招網(wǎng)。本系統(tǒng)的主要功能是導(dǎo)出“報考庫”、“錄取庫(中國考生)”“錄取庫(留學(xué)生)”,每個庫都導(dǎo)出Excel文件(用于學(xué)校核對)和DBF文件(用于上報導(dǎo)入中國研招網(wǎng))。本系統(tǒng)使用Java、JavaScript及ExtjS4作為編程語言,數(shù)據(jù)庫為OraclelOg,Web服務(wù)器為Tomcat7.0。本系統(tǒng)基于J2EE技術(shù)和Struts框架技術(shù)。從管理模式來看,極大改變了高校對博士錄取名單上報數(shù)據(jù)的管理模式,切實提高了工作效率。
關(guān)鍵詞:軟件工程;軟件開發(fā);數(shù)據(jù)庫;DBF;ExtjS;Java
O 引言
博士研究生的招生從啟動到結(jié)束時間緊,業(yè)務(wù)工作量大,需要進(jìn)行大量的工作,到了最后需要將擬錄取的學(xué)生詳細(xì)名單制作成DBF文件上報到中國研招網(wǎng)(中國研究生招生信息網(wǎng))。上報數(shù)據(jù)包含“報考庫”、“錄取庫(中國考生)”、“錄取庫(留學(xué)生)”,其中報考庫有86個字段,錄取庫(中國學(xué)生)有70個字段,錄取庫(留學(xué)生)有49個字段;三張表一共205個字段,數(shù)據(jù)量非常之大。而且其中一些字段比如“家庭成員”、“獎勵處分”、“發(fā)表論文專著”、“學(xué)習(xí)工作經(jīng)歷”要求“定義在一個字段里,TAB間隔用'/'表示;換行用'#'表示”,這就要將學(xué)校系統(tǒng)中存儲的每個考生的X*X的二維數(shù)據(jù)表里面的若干記錄值合并成一個很長的字段記錄,并注意TAB和換行的符號轉(zhuǎn)換。如果人工編輯合成這二百多個字段,可想而知,工作量是多么大,而且還容易出錯。
所以,本系統(tǒng)的功能就是按照中國研招網(wǎng)對字段名稱、類型、長度和說明的要求導(dǎo)出“報考庫”和“錄取庫”,其中留學(xué)生的錄取庫和中國學(xué)生的不同,所以系統(tǒng)需要導(dǎo)出3張表“報考庫”、“錄取庫(中國考生)”、“錄取庫(留學(xué)生)”的DBF文件,并按照相關(guān)要求對最后導(dǎo)出的文件重命名。
考慮到學(xué)??赡芤獙ο鄳?yīng)的信息進(jìn)行人工核對、查詢、編輯和比較,所以同時也需要導(dǎo)出這3個庫的Excel表格,以便核對。
1 相關(guān)開發(fā)環(huán)境搭建和軟硬件要求
相關(guān)的開發(fā)環(huán)境部署包含JDK、MyEclipse、Oracle、Apache、Tomcat和Weblogic的安裝配置以及部署應(yīng)用程序。由于這部分不是本文的重點,就不再贅述。
在開發(fā)過程中,軟件版本主要采用:
操作系統(tǒng):Windows 7;數(shù)據(jù)庫服務(wù)器:OraclelOg; Web服務(wù)器:Tomcat 7.0; JDK版本:JDKl.6;CPU:主頻2.6GHz以上;內(nèi)存:1G以上;硬盤:200G以上。
2 軟件系統(tǒng)需求分析
每學(xué)年高校博士招生錄取結(jié)束后,都需要按要求上報“報考庫”和“錄取庫”到中國研招網(wǎng)系統(tǒng)。招生單位必須嚴(yán)格按照全國高等學(xué)校學(xué)生信息咨詢與就業(yè)指導(dǎo)中心制定的《博士報名錄取庫上報系統(tǒng)說明文檔(招生單位版)》要求上報。
學(xué)校研究生院在第一次上傳前從研招網(wǎng)“數(shù)據(jù)分類下載”中下載“報考庫則為上傳標(biāo)準(zhǔn)表結(jié)構(gòu)”和“錄取庫則為上傳標(biāo)準(zhǔn)表結(jié)構(gòu)”,用標(biāo)準(zhǔn)表結(jié)構(gòu)進(jìn)行參考對比和調(diào)整。
該系統(tǒng)的主要功能是導(dǎo)出需要格式和字段的相關(guān)信息表,所以首先應(yīng)該對最終需要的表的結(jié)構(gòu)進(jìn)行分析,下面對以表為基本單位對最終需要的數(shù)據(jù)進(jìn)行分析:
(1)報考庫,表名:招生單位代碼+BBK.DBF。該表有86個字段,對各字段名稱、漢字解釋、類型、長度和字段說明均做了嚴(yán)格的要求。比如字段CSRQ(出生日期)要求格式為YYYYMMDD的八位純數(shù)字;JTCY(家庭主要成員)長度最大為220字節(jié),定義在一個字段里,TAB間隔用'/'表示;換行用'#'.表示。
(2)錄取庫(中國學(xué)生),表名:招生單位代碼+BLQ.DBF。該表有70個字段,也同樣對各字段名稱、漢字解釋、類型、長度和字段說明做了嚴(yán)格的要求。比如學(xué)制長度最大為3字節(jié),非空,取值范圍集合f2,2.5,3,3.5,4,4.5,5.5.5,6,6.5,7.
7.5.
8}。
(3)錄取庫(留學(xué)生),表名:招生單位代碼+GATLQK.DBF。該表有49個字段,由于港澳臺情況與大陸不太一樣,故需要單獨制錄取庫表。
從上我們可以看到,三張表一共205個字段,數(shù)據(jù)量非常之大。而且其中一些字段有規(guī)定的特殊要求。對最后的文件要求是DBF文件而不是我們熟悉的Excel文件,如果人工在Excel里編輯合成這二百多個字段然后復(fù)制到DBF文件中,可想而知,工作量是多么大,而且還容易出錯,所以本系統(tǒng)以業(yè)務(wù)需求為基本設(shè)計原則,最終完美的解決上述問題。
3 系統(tǒng)設(shè)計說明
系統(tǒng)整體功能框圖如圖1所示,系統(tǒng)的功能是導(dǎo)出需要的6個文件。系統(tǒng)的用戶對象是學(xué)校研究生招生管理部門——研究生院研招辦,由研究生院負(fù)責(zé)本年度學(xué)校錄取博士信息的上報工作。院校代碼為五位數(shù)字,比如10674是昆明理工大學(xué)的院校代碼。
其中,報考庫:導(dǎo)i'報考庫需要的DBF文件和Excel表格。錄取庫f中國考生):導(dǎo)出錄取庫(中國考生)需要的DBF文件和Excel表格。錄取庫(留學(xué)生):導(dǎo)出錄取庫(留學(xué)生)需要的DBF文件和Excel表格。錄取管理模塊:對博士研究生錄取進(jìn)行管理,包含查看,檢索和編輯錄取信息等功能。
4 系統(tǒng)功能的實現(xiàn)
4.1 查看錄取信息
①在考生列表顯示界面,顯示的內(nèi)容很多,其中序號、姓名和操作是鎖定的,一直在頁面顯示,通過添加屬性locked: true語句來實現(xiàn),ortable: true表示姓名字段支持排序功能。而報考學(xué)院、報考專業(yè)、報考導(dǎo)師、錄取學(xué)院、錄取專業(yè)、錄取導(dǎo)師、考試方式、外語成績、業(yè)務(wù)課一、業(yè)務(wù)課二、初試總成績、復(fù)試總成績、折合成績、排名、學(xué)院擬錄取意見、學(xué)院擬錄取備注、學(xué)校最終錄取意見、學(xué)校最終錄取備注是可以拖動橫向滾動條查看的,沒有l(wèi)ocked: true語句。這樣做的好處是當(dāng)屬性字段數(shù)目過于多的時候,向右拉動滾動條,部分關(guān)鍵信息一直顯示在網(wǎng)頁上,方便查看,部分代碼如下。錄取名單管理主界面考生名單列表如圖2所示。endprint
{header:”姓名”,datalndex: "xm", width:100, align:"center",
locked:true, sortable: true, tdCls: "gridheight"}
②對報考學(xué)院和錄取學(xué)院、報考專業(yè)和錄取專業(yè)、報考導(dǎo)師和錄取導(dǎo)師做了對比處理,一旦兩者不同,錄取學(xué)院、錄取專業(yè)或錄取導(dǎo)師將紅色顯示,一目了然。以下代碼對比lqzymc(錄取專業(yè)名稱)和bkzymc(報考專業(yè)名稱),如果兩者值相同,returnvalue;就直接返回默認(rèn)黑色字體的值,否則return"”+value+"”;返回標(biāo)紅字體的值。其他幾項代碼原理也基本如此。
fheader:”錄取專業(yè)”,
datalndex:”lqzymc”, align:”center”, width:150,sortable:true, tdCls:"gridheight”,
renderer:function(value,meta, record){
if(record.get('lqzymc')=record.get('bkzymc')){
return value;
}else{
return""+value+"":
}
}}
③對學(xué)院擬錄取意見和學(xué)校最終錄取意見顯示進(jìn)行了優(yōu)化,“錄取”藍(lán)色顯示,“不錄取”紅色顯示,用戶界面良好。如下代碼,錄取則return”
{header:”學(xué)校最終錄取意見”,
datalndex:"lqmc", width: 120, align:"center",sortable:true, tdCls:"gridheight",
renderer:function(value,meta, record){
if(value='錄取'){
return""+value+"":
}else{
return ""+ value+””;
}
}
},
④學(xué)院擬錄取備注和學(xué)校最終錄取備注是可以缺省的,如果不為空則系統(tǒng)中綠色顯示,以便和其他不可為空的值區(qū)分。同時備注信息的字?jǐn)?shù)不是那么固定,大多數(shù)時候是空值,少部分時候字?jǐn)?shù)會很多,如果備注信息太多,則在此單元格顯示滾動條,通過meta.style屬性設(shè)置。{header:”學(xué)院擬錄取備注”,datalndex:”nlqbzxx”,width:200,align:”center”, sortable:true, tdCls:”gridheight”,renderer:function(value,meta, record){
meta.style='overflo':auto;padding: 3px 6px;
text-overflow:ellipsis;white-space:nowrap;
line-height:20px;';
if(record.get('nlqbzxx')==null){
return value;
}else{
return ""+value+"":
}
}},
⑤成績顯示中前端頁面增加了“缺考”的顯示,將后臺數(shù)據(jù)庫的qkdm(缺考代碼)數(shù)字“一l”轉(zhuǎn)換為qkmc(缺考名稱)“缺考”,方便用戶查看和管理。通過定義一個CjckStore,實現(xiàn)上述功能,部分代碼如下:
var CjckStore=Ext.create(”Ext.data.Store”,{
fields:["qkdm","qkmc"],
data:[
{"qkdm":"-1";"qkmc":"缺考"}
]
});
4.2 編輯錄取信息
點擊操作按鈕圖標(biāo)-將會出現(xiàn)【編輯學(xué)校最終錄取信息】彈窗,在彈窗中可以編輯和修改錄取信息,包括錄取學(xué)院、錄取專業(yè)、錄取導(dǎo)師、錄取意見和錄取備注。編輯完成之后點擊【保存】按鈕即可修改,保存時系統(tǒng)對數(shù)據(jù)完整性進(jìn)行校驗,除了備注之外其他項必須從下拉列表中選擇一個值,否則無法保存,如果不需要修改,點擊【取消】按鈕關(guān)閉彈窗即可。編輯學(xué)校最終錄取意見如圖3所示。
在【編輯學(xué)校最終錄取信息】彈窗中,錄取專業(yè)和錄取學(xué)院進(jìn)行了級聯(lián),一旦選中了一個學(xué)院,點擊錄取專業(yè)的時候只會出現(xiàn)該學(xué)院的博士招生專業(yè)。錄取導(dǎo)師可以拖動滾動條逐個查找,你可以輸入若干漢字匹配,比如在錄取導(dǎo)師欄中輸入了“張”,列表中就檢索了學(xué)校所有姓名第一個字是“張”的博導(dǎo),如果繼續(xù)輸入第二、三個字,就能更加精確的匹配,如圖3所示。這個功能實現(xiàn)起來相對麻煩,前臺將請求信息傳遞給.xml配置文件,在配置文件中找到處理請求的class文件和Action方法,配置文件相應(yīng)代碼如下:<!--張寶全:獲取博士導(dǎo)師信息加載下拉列表·一>
執(zhí)行相應(yīng)的Action方法時,需要調(diào)用對應(yīng)的Dao數(shù)據(jù)數(shù)理文件,其中Dao文件部分代碼如下,此處注意返回類型是JSONArray,并且代碼執(zhí)行過程中可能發(fā)生異常,用throws Exception拋出異常給被調(diào)用函數(shù)處理。Dao文件處理后返回JSONArray然后層層返回到前端頁面,然后前端頁面顯示。由于篇幅原因,部分代碼用省略號表示。
public JSONArray GetBsds(String xm) throwsException{
try{if(xm==null){
sql= "select distinct dsbh,dsxm,yxsmc fromzs_zyml order by dsbh";
}else{
sql="select distinct dsbh,dsxm,yxsmcfromzs_zyml where dsxm like '%"+xm+"%' order bydsbh";
)
) catch(Exception e){…………)finally{……)
return jsonarray;
)
4.3檢索功能
可以按照多個篩選條件(考號、姓名、報考學(xué)院、報考專業(yè)、導(dǎo)師姓名、擬錄取意見、學(xué)校錄取意見)進(jìn)行檢索,用戶在選擇相關(guān)的一個或者多條檢索字段之后點擊【檢索】,就能夠檢索出用戶需要的學(xué)生名單,滿足用戶對不同條件篩選的需求。在檢索中,MVC中Controller接受View視圖頁面的檢索條件輸入和檢索按鈕點擊,將檢索要求作為SQL的一部分傳遞給后臺拼接成完整的SQL語句執(zhí)行。在后臺需要對前端頁面?zhèn)鬟f來的特殊符號進(jìn)行過濾,防止SQL注入,部分代碼如下[8-10]。 現(xiàn)在,需要的文件完全導(dǎo)出了,其中Excel文件Efj于學(xué)校核對信息,如果有誤就修改系統(tǒng)中的數(shù)據(jù),而DBF文件則用于上報到中國研招網(wǎng)。
導(dǎo)出文件的默認(rèn)命名規(guī)則是標(biāo)準(zhǔn)名+時間信息,如“10674BBK 2017-08-20 08-00-00.dbf'將最終導(dǎo)出的確認(rèn)無誤的DBF文件重命名,把文件名中時間信息刪除即可滿足中國研招網(wǎng)對文件名的要求。這就是最終高校上報到中國研招網(wǎng)系統(tǒng)所需要的文件。在導(dǎo)出DBF文件的時候,尤為重要的一點就是表結(jié)構(gòu),這需要嚴(yán)格按照中國研招網(wǎng)的要求來,如下if(lb.equals(”bkk”))實現(xiàn)了代碼復(fù)用,導(dǎo)出DBF文件和Excel文件執(zhí)行同一冗長的SQL語句,部分代碼如下:f(lb.equals(”bkk”)) {//lb=bkk,表示按照研招網(wǎng)的格式要求導(dǎo)出DBF報考名單
JSONArray jsonarray—new JSONArray();
//獲取導(dǎo)出數(shù)據(jù)//過濾通過頁面表單提交的字符private static String[] FilterChars={{<","&"},{">,">;"},
{" ","&11bsp;"}, {"\',"";"}, {"&","&;"),
{ "/","/;"},{"\\",";"},{"\n","
"}};//過濾通過javascript腳本處理并提交的字符private static String[][] FilterScriptChars={{"\n","\'+\'\\'n\+'\'"},
{"\r"," "}{"\\","\'+\'\\\\\"+\'"},{"\'","\'+\'\\\'\'+\'"}};
4.4導(dǎo)出上報數(shù)據(jù)
點擊圖4中【導(dǎo)出上報數(shù)據(jù)(Excel)】按鈕,系統(tǒng)會彈出一個小窗口,在彈窗中,研究生院可以導(dǎo)出需要的報考庫或者錄取庫Excel表格,導(dǎo)出之后研究生院可以用于核對數(shù)據(jù)(如果有需要的話,研究生院可以在Excel表中把各個學(xué)院的信息篩選后分發(fā)至各學(xué)院核對),如果數(shù)據(jù)出錯,那么研究生院可以在系統(tǒng)中對錯誤信息修正,反復(fù)幾次,確保學(xué)校系統(tǒng)數(shù)據(jù)的正確性。
在Excel表格中核對完成并修改了系統(tǒng)中的信息之后,研究生院就可以導(dǎo)出最終要上報到中國研招網(wǎng)的DBF文件,依次點擊圖4所示的3個按鈕【報名庫DBF導(dǎo)出】、【錄取庫DBF導(dǎo)出(中國考生)】、【錄取庫DBF導(dǎo)出留學(xué)生)】就可依次導(dǎo)出研究生院上報中國研招網(wǎng)所需要的文件。
j sonarrayResultSetTo Json.ResultSetTojsonArray(rs);
//設(shè)置表頭,格式:"Name","Type","Width"," Decimal","NULL"
String[][] fields一{
{ "xm","Character","40","0","FALSE"},
{ "xmpy","Character","80","O","FALSE"},
{”zjlx"," Character","2”,”O(jiān)","FALSE”},
{ "zjhm","Character","18 ","O","FALSE"},
{ "Ihpydw","Character"," 100 ","O","FALSE”}
};if(DbfUtil.DbfExport(fields,j sonarray,”博士報考名單”))return true; SQL語句如下,由于表單字段眾多,所以select元素很多,其中表zs bsbm xsxx_ view是我們從多張表拼接來的視圖,使用視圖在操作的時候會更加簡單方便。由于我們系統(tǒng)的部分字段名稱和中國研招網(wǎng)的命名規(guī)則不太一致,在導(dǎo)出的時候需要重命名,命名規(guī)則很簡單“原名稱新名稱”中間用空格或者as隔開都行,這里用的是空格。由于系統(tǒng)中的部分字段所有人記錄值都一樣,比如DWMC(單位名稱)都是“昆明理工大學(xué)”,系統(tǒng)就沒有浪費空間存儲這一重復(fù)記錄,導(dǎo)出SQL語句設(shè)置為統(tǒng)一值即可“'昆明理工大學(xué)'DWMC”注意中間的空格以及SQL中字符串用單引號,還有就是一些本軟件系統(tǒng)中用不到的信息,比如“BYXX3”我們導(dǎo)出時設(shè)置為空即可,“”BYXX3”,注意前面是兩個單引號而非一個雙引號,兩個單引號里面什么符號(包括空格)都沒有,代表空值。
sql=select xm XM, xmpy XMPY, zjlxZJLX, zjhm
ZJHM, ksbh
KSBH, csrq
CSRQ, mzmMZM, xbm XBM, hfm HFM, zzmmm ZZMMM,xyjrm XYJRM, csdm CSDM, _jgdm JGDM,HKSZDM, DASZDM, DASZDW, DASZDWDZ,DASZDWYZBM, KSLYM, XXGZDWXZ, XXGZDW,XXGZJL, JLCF, JTCY, FBLWZZ, XSXWDWM,XSXWDW, XSXWZYDM, XSXWZYMC, XSXWNY,XSXWZSBH, BKBYDWM, BKBYDW, BKBYZYDM,BKBYZYMC, BKBYNY, BKBYZSBH, BKXXXS,SSXWDWM, SSXWDW, SSXWZYDM, SSXWZYMC,SSXWNY, SSXWZSBH, SSXWFS, SSBYDWM,SSBYDW, SSBYZYDM, SSBYZYMC, SSBYNY,SSBYZSBH, XWM, XLM, ZCXH, '10674'
DWDM,。昆明理工大學(xué)' DWMC, BKYXSM, BKYXSMC,BKZYDM, zymc BKZYMC, lqyjfxm BKYJFXM,lqyj fxmc
BKYJFXMC, dsxm
BKBDXM, dsbhBKBDBH, BKBDSX, KSFSM, bklbdm BKLBM,ZXJH, DXWPDWSZDM, DXWPDW, kskmdmlWGYM, kskmmcl WGYMC, kskmdm2 YWKIM,kskmmc2 YWKIMC,kskmdm3 YWK2M,kskmmc3YWK2MC, TXDZ, YZBM, LXDH, YDDH, DZXX,”BYXX,” BYXXl,” BYXX2,” BYXX3,”LHPYDWM," LHPYDW
from zs bsbm xsxx view
order by bkyxsm,bkzydm;
4.5 上傳數(shù)據(jù)到中國研招網(wǎng)
這一步已經(jīng)不是本軟件系統(tǒng)的功能了,本系統(tǒng)主要就是導(dǎo)出需要的3個文件,用于這一步操作。 學(xué)校研究生院登錄中國研招網(wǎng)( http://yz.chsi.cn)后臺。點擊左側(cè)導(dǎo)航欄博士報名錄取庫上報博士報名錄取庫上報,進(jìn)入博士報名錄取庫上報系統(tǒng)。 研招網(wǎng)博士報名錄取庫上報系統(tǒng)用于博士報考庫和錄取庫的上報工作。采取教育部、省級招辦、招生單位三級管理制度,即招生單位上傳數(shù)據(jù)成功后上報給上級省級招辦,省級招辦審核后上報給教育部。
5 結(jié)論
根據(jù)教育部的要求,博士研究生錄取名單需要按照標(biāo)準(zhǔn)的DBF表結(jié)構(gòu)上報導(dǎo)人中國研招網(wǎng)(http://yz.chsi.com.cn或http://yz.chsi.cn),其中包括“報考庫”、“錄取庫(中國考生)”、“錄取庫(留學(xué)生)”,每個表都有好幾十個字段,傳統(tǒng)手T編輯合成這些表費時費力。本系統(tǒng)從學(xué)校錄取信息中導(dǎo)出這3張表,只需要簡單的人工核對就可以上報導(dǎo)人中國研招網(wǎng)系統(tǒng)。所以本系統(tǒng)的主要功能是導(dǎo)出“報考庫”、“錄取庫(中國考生)”、”錄取庫(留學(xué)生)”,每個庫都分別需要導(dǎo)jI}{ Excel文件(用于學(xué)校核對)和DBF文件f用于上報導(dǎo)人中國研招網(wǎng)),一共6個文件。
技術(shù)特點:
1.本系統(tǒng)使用Java、JavaScript及Extj s4作為編程語言,數(shù)據(jù)庫為OraclelOg,Web服務(wù)器為Tomcat7.0。
2.本系統(tǒng)基于J2EE技術(shù),采用Struts技術(shù)框架;
3.本系統(tǒng)采用基于組件開發(fā)方式,實現(xiàn)各種業(yè)務(wù)邏輯重組,有效的進(jìn)行了軟件復(fù)用,提高程序開發(fā)效率;
4.從管理模式來看,極大改變了高校對博士研究生錄取名單上報數(shù)據(jù)的管理模式,由手T拼接變成系統(tǒng)合成,很大程度的減小錯誤發(fā)生概率,切實提高了工作效率。endprint