考试系统调试优化总结
首先来说说我负责这部分,主要是在配置手动试卷这一块。功能:手动配置各学院试卷,提供预览,下载;根据用户的需求不同,需要纸质化考试。这块东西基本上都是CS的,因为界面用的是ASP的,所以基本上很少涉及到前台界面上的数据。前期主要是调试错误,优化。主要来谈谈这次维护。
1.后端控制页面
其实要是html页面的话,就不存在这个问题了。所以很多地方相对在善良公社里面都是不一样的,数据的处理方面更接近牛腩。
usingSystem.Web.UI.HtmlControls; privateSystem.Web.UI.HtmlControls.HtmlGenericControl isExaming; Lable labelcontent=newLable(); Labelcontent.text="测试"; isExaming.Controls.Add(labelcontent);
这样就能够在页面上显示我们需要显示的内容了。
实际运用:
//利用循环取出答案-陈方林-2014.2.16 for (int i = 0; i <arrAllQuestion.Count; i++) { //将arraylist转换为datarow-陈方林-2014.2.16 DataRow dranswer =(DataRow)(arrAllQuestion[i]); //取出答案的字段-陈方林-2014.2.16 string answer =dranswer["CorrectAnswer"].ToString(); //将答案显示在界面上-陈方林-2014.2.16 Label answerlbl = new Label(); answerlbl.Text = answer; Label answerTitle = newLabel(); int countTest = i + 1; Label answerTitleFirst = newLabel(); answerTitleFirst.Text = "计算选择题答案" +" "; isExaming.Controls.Add(answerTitleFirst); answerTitle.Text = "第" +countTest.ToString() + "题 答案是:" + " "; isExaming.Controls.Add(answerTitle); //添加一行 AddOneRow(); isExaming.Controls.Add(answerlbl); AddOneRow(); }
这段就是用来显示答案的代码。主要是循环遍历arralist并转换为datarow来拿出答案。其实大可不必来用一个方法来添加一行,+"&nbsb"就可以解决。
2.导出页面Word文件
public void ExpertControl(System.Web.UI.Control source, DocumentType type) { //设置Http的头信息,编码格式 if (type == DocumentType.Word) { //添加文件的名字,result.doc Response.AppendHeader("Content-Disposition", "attachment;filename=result.doc"); //输出的文件类型,程序调用系统自带的微软的word Response.ContentType = "application/ms-word"; } //utf-8是网页默认格式,word出现乱码是因为它的默认格式不是utf-8是gb2312 Response.Charset = "utf-8"; //将源文件的格式加密为utf-8 Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); //关闭控件的视图状态 source.Page.EnableViewState = false; //初始化HtmlWriter System.IO.StringWriter writer = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer); source.RenderControl(htmlWriter); //输出 Response.Write(writer.ToString()); Response.End(); }
这里主要用到的是web.UI.Control类和Response对象的的输入,输出。说的很官方,其实也就是一些方法。MSDN上都有相应的例子和解释。
总结
之上仅仅是系统中冰山一角,仅仅总结了我在维护过程中的一小块。通过ksxt和slgs的对比,还是能看到很多不一样的东西。ksxt主要是.net的东西涉及的比较多,slgs则是可能更接近bs的一些常用技术,js和easyui的框架、json的一些东西。还有就是在学习别人的代码过程中,总有这些的体会。往往很多实现功能很复杂的东西,核心的代码只有一两行,因为其他的一些代码还是能够写出来的。每每抓住这些必要核心几句简单的代码,效率上还是不错的。