一直以来,凭着对C#的兴趣在实践着C#带来的便捷~也是在实践中学习着原理。但是最近感到原理匮乏,所以正在恶补基础理论部分。对于我们主攻嵌入式的学生来说,C#都显得那么微不足道,更何况其高深的原理呢,但是既然打算深入的学习这样一种语言(可能因为VC带给我的除了占用资源少以外体会不到别的),就要学习的稍微透彻一点。
毕业论文设计的时候,针对我们学校的实际情况,帮同学做了winform的“宿舍管理系统”,一直也想做一款手机“空余教室查询”系统,但是JAR的知识不太懂,所以只能后面慢慢探索,目前可以直接上手的,而且针对我们身边的情况,做出了这样一个小小的网页“论文选题系统”。我们上个学期论文选题采取的是抓阄的形式,一方面有人幕后选题,一方面班委也不好统计信息,所以网络随机抽题会很便捷。
开发环境:VS2008+SQL2005
数据库:
用户及权限:
学生----填写个人的信息,以方便老师与其联系。抽取题目,设置仅有一次抽取题目的机会,之后只能进入页面查看抽取结果和指导老师的联系方式
老师----填写个人联系方式,录入个人需要指导的题目和限定专业,只有特定专业的学习可以参与写作。下载汇总表,包括个人指导学生的信息,专业,院系和全校学生的论文指导信息
算法:
随机抽题:为了保持高效的效率,已经被抽取的题目不参与下次随机数的计算。已经抽取的题目,会在数据库中对应学生的姓名,姓名为NULL的说明该题目可以被抽取,所以只要在SQL加上这个限定条件,再保证限定专业和学生专业一致即可。
导出excel表格:首先需要绑定一个GridView控件,然后利用GridView控件的RenderControl()来输出数据
StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); HtmlTextWriter htw = new HtmlTextWriter(sw); Page page = new Page(); HtmlForm form = new HtmlForm(); GridView1.EnableViewState = false; page.EnableEventValidation = false; diseñadores RAD. page.DesignerInitialize(); page.Controls.Add(form); form.Controls.Add(GridView1); page.RenderControl(htw); Response.Clear(); Response.Buffer = true; Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-Disposition", "attachment;filename=data.xls"); Response.Charset = "UTF-8"; Response.ContentEncoding = Encoding.Default; Response.Write(sb.ToString()); Response.End();
注意要点:页面之间传递数据,不要使用静态成员变量,即便语法上合适,实际中总会出现找不到类名的错误,建议使用session,cookie等
SQL语句判断字段是否为NULL,不能直接使用NULL或者"",常用做法是使用ISNULL函数
语法 ISNULL ( check_expression , replacement_value ) 备注 如果 check_expression 不为 NULL,则返回它的值;否则,在将 replacement_value 隐式转换为 check_expression 的类型(如果这两个类型不同)后,则返回前者。 参数 check_expression 将被检查是否为 NULL 的表达式。check_expression 可以为任何类型。 replacement_value 当 check_expression 为 NULL 时要返回的表达式。replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型。 返回类型 返回与 check_expression 相同的类型。 示例 A. 将 ISNULL 与 AVG 一起使用 以下示例查找所有产品的重量平均值。它用值 50 替换 Product 表的 Weight 列中的所有 NULL 项。 USE AdventureWorks; GO SELECT AVG(ISNULL(Weight, 50)) FROM Production.Product; GO
页面实例图片: