考试系统调试优化总结

        首先来说说我负责这部分,主要是在配置手动试卷这一块。功能:手动配置各学院试卷,提供预览,下载;根据用户的需求不同,需要纸质化考试。这块东西基本上都是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上都有相应的例子和解释。


总结

          之上仅仅是系统中冰山一角,仅仅总结了我在维护过程中的一小块。通过ksxtslgs的对比,还是能看到很多不一样的东西。ksxt主要是.net的东西涉及的比较多,slgs则是可能更接近bs的一些常用技术,jseasyui的框架、json的一些东西。还有就是在学习别人的代码过程中,总有这些的体会。往往很多实现功能很复杂的东西,核心的代码只有一两行,因为其他的一些代码还是能够写出来的。每每抓住这些必要核心几句简单的代码,效率上还是不错的。

原文地址:https://www.cnblogs.com/guziming/p/4232698.html