1、 ASP.NET 程序设计课程实训 学号: 126072015251 姓名: 李 洪 光 专业: 计算机应用技术 班级: 2012 级 1 班 2014 年 1 月 3 日 目录: 1、设计题目 1 2、背景与目的 1 3、开发环境与开发工具 1 4、主要功能 1 5、数据库设计与实现 1 6、系统的详细设计 2 6.1、登陆页面 2 6.2、考试页面 4 6.3、评阅页面 9 6.4、管理页面 13 7、总结 15 ACM 国际学院入学考试系统 第 1 页 共 15 页 1、设计题目 ACM 国际学院入学考试系统。 2、背景与目的 ASP.NET Web 课程设计是本学期的一本很重要的专业课
2、,本次课程设计就是为了检测本学期对这本书的掌握情况。本次课程设计也将 作为期末考评。 “ ACM 国际学院入学考试系统”主要针对大一新生的入学考试。 3、开发环境与开发工具 网站开发环境: Microsoft Visual Studio 2008 集成开发环境。 网站开发语言: C#。 数据库: Microsoft SQL Server 2005 数据库。 开发环境运行平台: Windows Server 2008。 测试软件: Windows Installer Explorer 9、 360 极速浏览器。 4、主要功能 主要实现了在线考试,在线阅卷,以及简单的登录功能、注册功能和基本的增删
3、 查改的功能。 5、数据库设计 数据库( ksxt)表: 学生表( ksxt_student) 教师表( ksxt_teacher) 管理员表( ksxt_ad) 题库表 试卷表 成绩表 ACM 国际学院入学考试系统 第 2 页 共 15 页 其他表:网站表,用来存储页面属性,如 title 6、系统的详细设计 6.1、登陆页面 登陆页面功能:用户输入账号密码并选择类型后点击登陆,若密码正确,则跳转对应页面。本系统一个三种用户:学生,主要实现考试功能;教师,主要实现评阅试卷和查询学生成绩的功能;管理员,主要实现用户注册,用户管理和对 试卷的更新,添加和删除功能。 登陆页面特色:页面采用 CSS
4、+DIV 布局,可实现登陆框的垂直水平居中,页面标题可以在数据库中修改。未采用 MultiView 控件,通过代码验证用户类型。 核心代码: /布局 bodymargin: 0px; #bjtposition: absolute;width: 100%;height: 212px;top: 50%;margin-top: -106px;border: solid 0px red;background-color: #FFF;/背景条 #dlkposition: absolute; width: 500px; height: 200px; left: 50%; margin-left: -250
5、px; border: 3px dashed #630; padding: 3px;/登录框 ACM 国际学院入学考试系统 第 3 页 共 15 页 protected void Page_Load(object sender, EventArgs e) this.MaintainScrollPositionOnPostBack = true; if (!IsPostBack) SqlConnection con = new SqlConnection(); con.ConnectionString = System.Web.Configuration.WebConfigurationMana
6、ger.ConnectionStrings“loc“. ToString(); con.Open(); SqlCommand com = new SqlCommand(“select 内容 from 网站 where 元素 =title“, con); SqlDataReader dr = com.ExecuteReader(); if (dr.Read() Session“xt“ = Convert.ToString(dr“内容 “).Replace(“ “, “);/给标题赋值 Session“bt“ = t.Text = Convert.ToString(dr“内容 “); Label1
7、.Text = Convert.ToString(dr“内容 “).Replace(“ “, “); con.Close(); t.Text = Convert.ToString(Session“bt“);/给标题赋值 protected void denglu_Click(object sender, EventArgs e)/登陆按钮 string yhlxsv = yhlx.SelectedValue; SqlConnection con = new SqlConnection(); con.ConnectionString = System.Web.Configuration.WebC
8、onfigurationManager.ConnectionStrings“loc“. ToString(); con.Open(); SqlCommand com = null; switch (yhlxsv)/验证用户类型,调用对应查询语句 case “学生 “: com = new SqlCommand(“select 姓名 from ksxt_student where 学号 =“ + yhzh.Text.Trim() + “and 密码=“ + yhmm.Text.Trim() + “, con); break; case “教师 “: com = new SqlCommand(“s
9、elect 姓名 from ksxt_teacher where 教号 =“ + yhzh.Text.Trim() + “and 密码=“ + yhmm.Text.Trim() + “, con); break; case “管理员 “: com = new SqlCommand(“select 姓名 from ksxt_ad where 管号 =“ + yhzh.Text.Trim() + “and 密码=“ + yhmm.Text.Trim() + “, con); break; SqlDataReader dr = com.ExecuteReader(); if (dr.Read() S
10、ession“xm“ = dr“姓名 “; Session“lx“ = yhlxsv; Session“xh“ = yhzh.Text.Trim(); switch (yhlxsv)/验证用户类型, 跳转 对应 页面 case “学生 “: Response.Redirect(“/ksxt/studentpages/kaoshi.aspx“); break; case “教师 “: ACM 国际学院入学考试系统 第 4 页 共 15 页 Response.Redirect(“/ksxt/teacherpages/pingyue.aspx“); break; case “管理员 “: Respo
11、nse.Redirect(“/ksxt/adpages/guanli.aspx“); break; else Page.RegisterStartupScript(“, “alert(账号或密码错误! )“); con.Close(); 6.2、考试页面 考试页面功能:学生用户进入页面,会显示用户“类型”、“姓名”和“时间”;当用户点击“开始考试”后会出现“题型”、“重置”、“交卷”按钮和通过“题库表”动态生成的试题,在动态生成的试题前会删除该用户上次的试卷,然后把新试题存入“试卷表”中,每题限时 2 分钟。点击“交卷”弹出话框,只有完全答题后点“是”才能把答案更新到“试卷表”的“学生答案”字
12、段中。 考试页面特色:页面采用 CSS+DIV 布局,可实现登陆框的垂直水平居中,页面标题可以在数据库中修改;随机出题,随机打乱选项;并对 Wizard 控件重新编辑,可实现Wizard、 View 和 RadioButtonList 联动,有时间限制。 核心代码: /背景条 /显示 代码 document.write(“) /日期容器 setInterval(“labTime.innerText=new Date().toLocaleString()“,1000)/每 1000毫秒执行一 次 =0) minutes = Math.floor(maxtime/60); seconds = Ma
13、th.floor(maxtime%60); msg = minutes+“分 “+seconds+“秒 “; document.all“timer“.innerHTML=msg; if(maxtime = 1*10) alert(注意,还有 10秒, 10秒后退出系统 !); -maxtime; else ClearInterval(timer); alert(“时间到,考试结束,将返回登陆页面 !“); location.href=/ksxt/index.aspx; timer = setInterval(“CountDown()“,1000); protected void Page_Lo
14、ad(object sender, EventArgs e) this.MaintainScrollPositionOnPostBack = true; if (!IsPostBack) Page.RegisterStartupScript(“, “alert(如果你已经考试过了,会清空原有记录! )“); xh = Convert.ToString(Session“xh“); Label1.Text = Convert.ToString(Session“xm“); if (Label1.Text.Trim() = “)/如果没登陆,则 Label1无值,页面会跳转首页 Response.Wr
15、ite(“alert(请登录! );location.href=/ksxt/index.aspx;“); Label2.Text = Convert.ToString(Session“lx“); Label3.Text = , + Convert.ToString(Session“xt“); t.Text = Convert.ToString(Session“bt“);/给标题赋值 ACM 国际学院入学考试系统 第 6 页 共 15 页 protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e
16、) MultiView1.ActiveViewIndex = RadioButtonList1.SelectedIndex;/RadioButtonList与 MultiView的联动 protected void Button1_Click(object sender, EventArgs e)/开始考试按钮 Response.Write(“alert(每道题限时 30秒,超出后考试结束! );“); SqlConnection con = new SqlConnection(); con.ConnectionString = System.Web.Configuration.WebConf
17、igurationManager.ConnectionStrings“loc“. ToString(); con.Open(); SqlCommand SC = new SqlCommand(“delete from 试卷 where 学号 = “ + xh + “, con);/删除该用户做的题 SqlCommand XZT1 = new SqlCommand(“insert into 试卷 select top 5 “ + xh + “,编号 ,类型 ,题目 ,选项 1,选项 2,选项3,选项 4,答案 ,from 题库 where 类型 = 选择 1order by newid()“,
18、con); /随机出选择题 1, 其他题略 int t1 = SC.ExecuteNonQuery(); if (t1 0 /保存随机出题后的编号 Panel1.Visible = true;/显示一些控件 jiaojuan2.Visible = true; chongzhi.Visible = true; MultiView1.ActiveViewIndex = RadioButtonList1.SelectedIndex = 0; SqlCommand XZT = new SqlCommand(“select 编号 ,题目 ,选项 1,选项 2,选项 3,选项 4 from 试卷 wher
19、e 学号 = “ + Convert.ToString(Session“xh“) + “, con);/查询该生的试卷 SqlDataReader dr = XZT.ExecuteReader(); int i = 1; while (dr.Read() string xx = new string4; bhi - 1 = Convert.ToString(dr“编号 “); switch (i)/从数据库读取的试卷给题目和选项赋值 case 1:/1-10为选择题 11-18为选择填空 XZTM1.Text = i.ToString() + 、 + dr“题目 “.ToString(); f
20、or (int j = 0; j alert(出题错误 !)“); con.Close(); else Page.RegisterStartupScript(“, “alert(出题错误 !)“); public void xzpx(string xx)/打乱选项方法 Random ra = new Random(); int sjs1 = ra.Next(0, 4); for (int i = 0; i 0 location.href=/ksxt/index.aspx; “); else Page.RegisterStartupScript(“, “alert(提交失败 ,请联系管理员 !)
21、“); con.Close(); catch (Exception ex)/出现未选择选项,会出现异常的解决 Page.RegisterStartupScript(“, “alert(提交失败 ,部分选择题未选择 !)“); ACM 国际学院入学考试系统 第 8 页 共 15 页 while (dr.Read()/简化 从数据库读取的试卷给题目和选项赋值 见考试系统 2 THi - 1 = Convert.ToString(dr“题号 “); LXi - 1 = Convert.ToString(dr“类型 “); Control La = FindControl(“Label“ + (i +
22、 10); if (La != null) Label Lab = (Label)La; Lab.Text = i.ToString() + 、 + dr“题目 “.ToString(); if (i alert(有未做的题! );“); return; else daani = Radio.SelectedItem.Text; else Control Te = FindControl(“TextBox“ + (i - 9); if (Te != null) TextBox Text = (TextBox)Te; if (Text.Text = “) Response.Write(“alert(有未做的题! );“); return; else daani = Text.Text;