关于毕业设计管理系统实现的关键问题研究
2011-10-21方梦婷周玲张程斐张燕徐焕
方梦婷 周玲 张程斐 张燕 徐焕
摘要:对毕业设计当中的关键环节进行分析,对关键问题的实现进行了研究,实现了答辩过程中的分组算法、在线评语拆分以及报表打印等功能。
关键词: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