方夢(mèng)婷 周玲 張程斐 張燕 徐煥
摘要:對(duì)畢業(yè)設(shè)計(jì)當(dāng)中的關(guān)鍵環(huán)節(jié)進(jìn)行分析,對(duì)關(guān)鍵問(wèn)題的實(shí)現(xiàn)進(jìn)行了研究,實(shí)現(xiàn)了答辯過(guò)程中的分組算法、在線評(píng)語(yǔ)拆分以及報(bào)表打印等功能。
關(guān)鍵詞:iText;DWR;畢業(yè)設(shè)計(jì)管理系統(tǒng)
1.分組算法的實(shí)現(xiàn)
在畢業(yè)設(shè)計(jì)答辯過(guò)程中,每個(gè)學(xué)生都會(huì)對(duì)應(yīng)一個(gè)答辯組,該生的導(dǎo)師所在的組不能成為學(xué)生的答辯組,同時(shí)每個(gè)答辯組的學(xué)生數(shù)目應(yīng)保持基本均衡不能相差懸殊。
為了滿(mǎn)足實(shí)際需要,設(shè)計(jì)了分組算法,該算法實(shí)現(xiàn)了分組平均分配,排除重復(fù)的效果,圖1是學(xué)生分組的分組算法程序結(jié)構(gòu)圖,程序是具體的代碼實(shí)現(xiàn)。
2.評(píng)分自動(dòng)拆分技術(shù)實(shí)現(xiàn)
程序2.評(píng)分自動(dòng)拆分代碼:
function tjZdByDx()//當(dāng)分?jǐn)?shù)項(xiàng)失去焦點(diǎn)的時(shí)候調(diào)用
{document.getElementById('hj').value = document.getElementById('wx').value
+ document.getElementById('sj').value + document.getElementById('bx').value
+ document.getElementById('qt').value; }
function tjZdByZf()//當(dāng)總分失去焦點(diǎn)的時(shí)候調(diào)用
{var hj =document.getElementById('hj').value ;
document.getElementById('wx').value= parseInt(10/100*hj);
document.getElementById('hj').value= parseInt(60/100*hj);
document.getElementById('bx').value= parseInt(10/100*hj);
document.getElementById('qt').value= parseInt(20/100*hj); }
3.評(píng)語(yǔ)級(jí)聯(lián)及填寫(xiě)技術(shù)實(shí)現(xiàn)
畢業(yè)設(shè)計(jì)結(jié)束階段,指導(dǎo)教師、評(píng)閱教師、答辯組要對(duì)學(xué)生進(jìn)行書(shū)寫(xiě)評(píng)語(yǔ),由于評(píng)閱學(xué)生數(shù)量較多,同類(lèi)型同成績(jī)的論文評(píng)語(yǔ)相對(duì)類(lèi)似,為了減少教師在錄入評(píng)語(yǔ)時(shí)候的工作量,提高工作效率,采用pdf表單與自動(dòng)評(píng)語(yǔ)模板相結(jié)合的方式進(jìn)行評(píng)語(yǔ)錄入,又充分利用ajax技術(shù),全面提高評(píng)語(yǔ)填寫(xiě)的客戶(hù)體驗(yàn)。通過(guò)該技術(shù)實(shí)現(xiàn)了當(dāng)用戶(hù)選擇評(píng)語(yǔ)類(lèi)別時(shí)自動(dòng)取得該類(lèi)型的評(píng)語(yǔ)列表,當(dāng)用戶(hù)選擇評(píng)語(yǔ)后,頁(yè)面無(wú)刷新顯示該評(píng)語(yǔ)的內(nèi)容,用戶(hù)點(diǎn)擊填充自動(dòng)填充到頁(yè)面的評(píng)語(yǔ)文本域內(nèi)。程序3是評(píng)語(yǔ)級(jí)聯(lián)及填寫(xiě)技術(shù)代碼實(shí)現(xiàn)。
程序3.評(píng)語(yǔ)級(jí)聯(lián)及填寫(xiě)技術(shù)代碼:
function searchComment(){//評(píng)語(yǔ)類(lèi)型列表的onchange事件觸發(fā)
PingYuDwr.searchComment(
$("commentType").value,
function(data){
dwr.util.removeAllOptions("comment");
dwr.util.addOptions("comment",data,"commentId","commentName");
});}
function getComment(){//評(píng)語(yǔ)列表的onchange事件觸發(fā)
PingYuDwr.getComment(
$("comment").value,
function(data){
$(commentContent).innerHTML = data; }
); }
function fill(){ //填充按鈕的onclick事件觸發(fā)
PingYuDwr.getComment(
$("comment").value,
function(data){
$(pingyu).value = data;
});}
4.評(píng)語(yǔ)表PDF表單技術(shù)的實(shí)現(xiàn)
一般畢業(yè)設(shè)計(jì)的評(píng)語(yǔ)表都有具體的格式要求,為了符合該格式要求并且方便學(xué)生打印,系統(tǒng)通過(guò)iText開(kāi)源組件包結(jié)合PDF的表單填充技術(shù),實(shí)現(xiàn)評(píng)語(yǔ)表的PDF輸出。PingYuUtil就是該技術(shù)的具體實(shí)現(xiàn),該類(lèi)將完成評(píng)語(yǔ)模板的輸入和評(píng)語(yǔ)結(jié)果的輸出,該類(lèi)的關(guān)鍵實(shí)現(xiàn)技術(shù)是iText組件對(duì)PDF表單的填充實(shí)現(xiàn)。程序4 評(píng)語(yǔ)表PDF表單技術(shù)的具體代碼實(shí)現(xiàn)
程序4.評(píng)語(yǔ)級(jí)聯(lián)及填寫(xiě)技術(shù)代碼:
public class PingYuUtil {
public static void pingfenbiao(String input, String output, String title,
String name, String stunum, String major, String wx, String sj,
String bx, String qt, String hj, String py) {
try {
PdfReader reader = new PdfReader(input);//取得評(píng)語(yǔ)模板
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(
output));//輸出到指定輸出流
AcroFields form = stamp.getAcroFields();//取得該模板的表單
for (Iterator it = form.getFields().keySet().iterator();
it.hasNext();) {
System.out.println(it.next()); }
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bfChinese, 12, Font.NORMAL);//設(shè)置漢字編碼的輸入和顯示
form.setFieldProperty("title", "textfont", bfChinese, null);
form.setFieldProperty("name", "textfont", bfChinese, null);
form.setFieldProperty("stunum", "textfont", bfChinese, null);
form.setFieldProperty("wx", "textfont", bfChinese, null);
form.setFieldProperty("sj", "textfont", bfChinese, null);
form.setFieldProperty("qt", "textfont", bfChinese, null);
form.setFieldProperty("hj", "textfont", bfChinese, null);
form.setFieldProperty("py", "textfont", bfChinese, null);
form = stamp.getAcroFields();
form.setField("title", title);
form.setField("name", name);
form.setField("stunum", stunum);
form.setField("wx", wx);
form.setField("sj", sj);
form.setField("qt", qt);
form.setField("hj", hj);
form.setField("py", py);
stamp.setFormFlattening(true);
stamp.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}}}
5.開(kāi)發(fā)工具、開(kāi)發(fā)環(huán)境和開(kāi)發(fā)語(yǔ)言
本系統(tǒng)采用開(kāi)源的開(kāi)發(fā)工具和開(kāi)發(fā)語(yǔ)言進(jìn)行開(kāi)發(fā),并在開(kāi)發(fā)不停的進(jìn)行版本的提交和遷出,表1是此次畢業(yè)設(shè)計(jì)所使用有關(guān)工具、環(huán)境、語(yǔ)言。
6.結(jié)束語(yǔ)
本文主要介紹了畢業(yè)設(shè)計(jì)管理系統(tǒng)實(shí)現(xiàn)的關(guān)鍵算法,主要技術(shù),包括學(xué)生分組算發(fā),評(píng)分自動(dòng)拆分填充,AJAX級(jí)聯(lián),模板填寫(xiě)技術(shù),PDF表單技術(shù)的展示和系統(tǒng)開(kāi)發(fā)關(guān)工具、開(kāi)發(fā)環(huán)境和開(kāi)發(fā)語(yǔ)言。
參考文獻(xiàn)
[1]iText官方站 http://www.itextpdf.com/
[2]DWR官方站http://directwebremoting.org/dwr/index.html
[3]整合SSH-DWR等技術(shù)過(guò)程分析http://developer.51cto.com/art/201103/246694.htm