方夢婷 周玲 張程斐 張燕 徐煥
摘要:對畢業設計當中的關鍵環節進行分析,對關鍵問題的實現進行了研究,實現了答辯過程中的分組算法、在線評語拆分以及報表打印等功能。
關鍵詞:iText;DWR;畢業設計管理系統
1.分組算法的實現
在畢業設計答辯過程中,每個學生都會對應一個答辯組,該生的導師所在的組不能成為學生的答辯組,同時每個答辯組的學生數目應保持基本均衡不能相差懸殊。
為了滿足實際需要,設計了分組算法,該算法實現了分組平均分配,排除重復的效果,圖1是學生分組的分組算法程序結構圖,程序是具體的代碼實現。
2.評分自動拆分技術實現
程序2.評分自動拆分代碼:
function tjZdByDx()//當分數項失去焦點的時候調用
{document.getElementById('hj').value = document.getElementById('wx').value
+ document.getElementById('sj').value + document.getElementById('bx').value
+ document.getElementById('qt').value; }
function tjZdByZf()//當總分失去焦點的時候調用
{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.評語級聯及填寫技術實現
畢業設計結束階段,指導教師、評閱教師、答辯組要對學生進行書寫評語,由于評閱學生數量較多,同類型同成績的論文評語相對類似,為了減少教師在錄入評語時候的工作量,提高工作效率,采用pdf表單與自動評語模板相結合的方式進行評語錄入,又充分利用ajax技術,全面提高評語填寫的客戶體驗。通過該技術實現了當用戶選擇評語類別時自動取得該類型的評語列表,當用戶選擇評語后,頁面無刷新顯示該評語的內容,用戶點擊填充自動填充到頁面的評語文本域內。程序3是評語級聯及填寫技術代碼實現。
程序3.評語級聯及填寫技術代碼:
function searchComment(){//評語類型列表的onchange事件觸發
PingYuDwr.searchComment(
$("commentType").value,
function(data){
dwr.util.removeAllOptions("comment");
dwr.util.addOptions("comment",data,"commentId","commentName");
});}
function getComment(){//評語列表的onchange事件觸發
PingYuDwr.getComment(
$("comment").value,
function(data){
$(commentContent).innerHTML = data; }
); }
function fill(){ //填充按鈕的onclick事件觸發
PingYuDwr.getComment(
$("comment").value,
function(data){
$(pingyu).value = data;
});}
4.評語表PDF表單技術的實現
一般畢業設計的評語表都有具體的格式要求,為了符合該格式要求并且方便學生打印,系統通過iText開源組件包結合PDF的表單填充技術,實現評語表的PDF輸出。PingYuUtil就是該技術的具體實現,該類將完成評語模板的輸入和評語結果的輸出,該類的關鍵實現技術是iText組件對PDF表單的填充實現。程序4 評語表PDF表單技術的具體代碼實現
程序4.評語級聯及填寫技術代碼:
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);//取得評語模板
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);//設置漢字編碼的輸入和顯示
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.開發工具、開發環境和開發語言
本系統采用開源的開發工具和開發語言進行開發,并在開發不停的進行版本的提交和遷出,表1是此次畢業設計所使用有關工具、環境、語言。
6.結束語
本文主要介紹了畢業設計管理系統實現的關鍵算法,主要技術,包括學生分組算發,評分自動拆分填充,AJAX級聯,模板填寫技術,PDF表單技術的展示和系統開發關工具、開發環境和開發語言。
參考文獻
[1]iText官方站 http://www.itextpdf.com/
[2]DWR官方站http://directwebremoting.org/dwr/index.html
[3]整合SSH-DWR等技術過程分析http://developer.51cto.com/art/201103/246694.htm