//获取选择题数据 public static RadioHigh GetRadioQuestion(string Id, string tablename) { SQLHelper dbAccess = new SQLHelper(); //实例化一个SQLHelper类 string sql = "Select * from [" + tablename + "] where Id = @Id"; SqlParameter[] para = { new SqlParameter("@Id", Id) }; //利用参数para进行动态定义 SqlDataReader dr = dbAccess.GetDRWithPara(sql, para); //获取查询数据流 //根据查询得到的数据,对成员赋值 //数据流中是否有数据 if (dr.Read()) { //声明User对象,将数据流中的值赋给User对象 RadioHigh question = new RadioHigh(); question.Id = int.Parse(dr["Id"].ToString()); question.question = dr["question"].ToString(); question.A = dr["A"].ToString(); question.B = dr["B"].ToString(); question.C = dr["C"].ToString(); question.D = dr["D"].ToString(); question.answer = dr["answer"].ToString(); question.explain = dr["explain"].ToString(); //关闭SqlDataReader对象,此时连接同时关闭 dr.Close(); return(question); } else { dr.Close(); return(null); } }
//单选题分数计算 public static int radioScore(RadioHigh r1, RadioHigh r2, RadioHigh r3, RadioHigh r4, RadioHigh r5, RadioButtonList rdolist1, RadioButtonList rdolist2, RadioButtonList rdolist3, RadioButtonList rdolist4, RadioButtonList rdolist5) { int score = 0; if (rdolist1.SelectedValue == r1.answer) { score += 7; } if (rdolist2.SelectedValue == r2.answer) { score += 7; } if (rdolist3.SelectedValue == r3.answer) { score += 7; } if (rdolist4.SelectedValue == r4.answer) { score += 7; } if (rdolist5.SelectedValue == r5.answer) { score += 7; } return(score); }
protected void btnUpdate_Click(object sender, EventArgs e) { RadioHigh updateQuestion = new RadioHigh(); //将所用更新数据与不可更改数据存放于一个新User实例中 updateQuestion.Id = int.Parse(Id); updateQuestion.question = txtQuestion.Text; updateQuestion.answer = txtAnswer.Text; updateQuestion.explain = txtExplain.Text; updateQuestion.A = txtA.Text; updateQuestion.B = txtB.Text; updateQuestion.C = txtC.Text; updateQuestion.D = txtD.Text; updateQuestion.suggestion = Convert.ToInt32(txtSuggestion.Text); int n = QuestionChangeManager.UpdateRadioQuestion(updateQuestion, j); //提示更改的数据行数 if (n > 0) { RegisterClientScriptBlock("", string.Format("<script type = 'text/javascript'> alert('成功更新数据,有{0}行收到更新!'); </script>", n.ToString())); } //数据更改后,再次绑定并显示更新后的数据 GridView1.DataSource = Manage.ShowData(j); GridView1.DataBind(); }
/// <summary> /// 从数据库中获取高级单选题记录 /// </summary> public static RadioHigh GetRadio(int Id) { SQLHelper dbAccess = new SQLHelper(); //实例化一个SQLHelper类 string sql = "Select * from [RadioHigh] where Id = @Id"; SqlParameter[] para = { new SqlParameter("@Id", Id) }; //利用参数para进行动态定义 SqlDataReader dr = dbAccess.GetDRWithPara(sql, para); //获取查询数据流 //根据查询得到的数据,对成员赋值 //数据流中是否有数据 if (dr.Read()) { RadioHigh r = new RadioHigh(); r.Id = int.Parse(dr["Id"].ToString()); r.question = dr["question"].ToString(); r.A = dr["A"].ToString(); r.B = dr["B"].ToString(); r.C = dr["C"].ToString(); r.D = dr["D"].ToString(); r.answer = dr["answer"].ToString(); r.explain = dr["explain"].ToString(); r.suggestion = int.Parse(dr["suggestion"].ToString()); //关闭SqlDataReader对象,此时连接同时关闭 dr.Close(); return(r); } else { dr.Close(); return(null); } }
//点击增加按钮事件 protected void btnAdd_Click(object sender, EventArgs e) { //将注册信息存入数据库 string question = txtQuestion.Text; string A = txtA.Text; string B = txtB.Text; string C = txtC.Text; string D = txtD.Text; string answer = txtAnswer.Text; string explain = txtExplain.Text; int suggestion = Convert.ToInt32(txtSuggestion.Text); RadioHigh newquestion = new RadioHigh(question, A, B, C, D, answer, explain, suggestion); int n = QuestionChangeManager.AddRadioQuestion(newquestion, j); //提示添加数据行,并清空textBox if (n > 0) { RegisterClientScriptBlock("", string.Format("<script type = 'text/javascript'> alert('成功添加数据,有{0}行数据已添加!'); </script>", n.ToString())); txtQuestion.Text = ""; txtA.Text = ""; txtB.Text = ""; txtC.Text = ""; txtD.Text = ""; txtAnswer.Text = ""; txtExplain.Text = ""; txtSuggestion.Text = ""; } GridView1.DataSource = Manage.ShowData(j); GridView1.DataBind(); }
//通过RadioButtonList控件显示高级选择题题目 public static void ShowQuestionRadio(RadioHigh r, RadioButtonList rdoList, Label lbl) { rdoList.Items[0].Text = "A." + r.A; rdoList.Items[1].Text = "B." + r.B; rdoList.Items[2].Text = "C." + r.C; rdoList.Items[3].Text = "D." + r.D; rdoList.Items[0].Value = "A"; rdoList.Items[1].Value = "B"; rdoList.Items[2].Value = "C"; rdoList.Items[3].Value = "D"; lbl.Text = r.question; }
//添加选择题数据 public static int AddRadioQuestion(RadioHigh Question, string tablename) { SQLHelper dbAccess = new SQLHelper(); //实例化一个SQLHelp类 string sql = "Insert Into [" + tablename + "] Values(" + "'" + Question.question + "'," + "'" + Question.A + "'," + "'" + Question.B + "'," + "'" + Question.C + "'," + "'" + Question.D + "'," + "'" + Question.answer + "'," + "'" + Question.explain + "'," + "'" + Question.suggestion + "')"; return(dbAccess.doSql(sql)); //利用SQLHelp类的doSql方法增加用户,执行一条SQL语句,返回受影响的行数 }
//更新选择题数据 public static int UpdateRadioQuestion(RadioHigh Question, string tablename) { SQLHelper dbAccess = new SQLHelper(); //实例化一个SQLHelp类 string sql = "Update [" + tablename + "] Set question='"; sql += Question.question + "',A='"; sql += Question.A + "',B='"; sql += Question.B + "',C='"; sql += Question.C + "',D='"; sql += Question.D + "',answer='"; sql += Question.answer + "',explain='"; sql += Question.explain + "',suggestion='"; sql += Question.suggestion + "' where Id=" + Question.Id; return(dbAccess.doSql(sql)); //利用SQLHelp类的doSql方法增加用户,执行一条SQL语句,返回受影响的行数 }
//选择数据,并在textBox框中显示 protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { Id = GridView1.Rows[e.NewSelectedIndex].Cells[2].Text; RadioHigh question = new RadioHigh(); question = QuestionChangeManager.GetRadioQuestion(Id, j); //通过GetUser方法的userid索引,获取用户数据 //用户数据显示 txtQuestion.Text = question.question; txtA.Text = question.A; txtB.Text = question.B; txtC.Text = question.C; txtD.Text = question.D; txtAnswer.Text = question.answer; txtExplain.Text = question.explain; txtSuggestion.Text = Convert.ToString(question.suggestion); }
//单选题判定 public static bool JudgingRadio(RadioButtonList rdolist, RadioHigh r, Label lbl, Button btn) { bool correct = false; if (rdolist.SelectedValue == r.answer) { lbl.Text = "恭喜你答对了!"; btn.Visible = true; return(correct = true); } else { lbl.Text = "错误!正确答案:" + r.answer; btn.Visible = true; return(correct = false); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["stuId"] != null) { //随机出题 long tick = DateTime.Now.Ticks; Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)); int iDown = 1; int iUp = TestHighManager.CountRadio(); int[] n = new int[5]; while (true) { int i = 0; n[0] = ran.Next(iDown, iUp); n[1] = ran.Next(iDown, iUp); n[2] = ran.Next(iDown, iUp); n[3] = ran.Next(iDown, iUp); n[4] = ran.Next(iDown, iUp); if (n[0] != n[1] && n[0] != n[2] && n[0] != n[3] && n[0] != n[4] && n[1] != n[2] && n[1] != n[3] && n[1] != n[4] && n[2] != n[3] && n[2] != n[4] && n[3] != n[4]) { i = 4; } if (i == 4) { break; } } r1 = TestHighManager.GetRadio(n[0]); TestHighManager.ShowQuestionRadio(r1, rdolistS1, lblS1); r2 = TestHighManager.GetRadio(n[1]); TestHighManager.ShowQuestionRadio(r2, rdolistS2, lblS2); r3 = TestHighManager.GetRadio(n[2]); TestHighManager.ShowQuestionRadio(r3, rdolistS3, lblS3); r4 = TestHighManager.GetRadio(n[3]); TestHighManager.ShowQuestionRadio(r4, rdolistS4, lblS4); r5 = TestHighManager.GetRadio(n[4]); TestHighManager.ShowQuestionRadio(r5, rdolistS5, lblS5); //随机出题 int iUp1 = TestHighManager.CountJudge(); int[] j = new int[4]; while (true) { int i = 0; j[0] = ran.Next(iDown, iUp1); j[1] = ran.Next(iDown, iUp1); j[2] = ran.Next(iDown, iUp1); j[3] = ran.Next(iDown, iUp1); if (j[0] != j[1] && j[0] != j[2] && j[0] != j[3] && j[1] != j[2] && j[1] != j[3] && j[2] != j[3]) { i = 3; } if (i == 3) { break; } } j1 = TestHighManager.GetJudge(j[0]); TestHighManager.ShowQuestionJudge(j1, rdolistJ1, lblJ1); j2 = TestHighManager.GetJudge(j[1]); TestHighManager.ShowQuestionJudge(j2, rdolistJ2, lblJ2); j3 = TestHighManager.GetJudge(j[2]); TestHighManager.ShowQuestionJudge(j3, rdolistJ3, lblJ3); j4 = TestHighManager.GetJudge(j[3]); TestHighManager.ShowQuestionJudge(j4, rdolistJ4, lblJ4); //随机出题 int iUp2 = TestHighManager.CountBlank(); int[] k = new int[3]; while (true) { int i = 0; k[0] = ran.Next(iDown, iUp2); k[1] = ran.Next(iDown, iUp2); k[2] = ran.Next(iDown, iUp2); if (k[0] != k[1] && k[0] != k[2] && k[1] != k[2]) { i = 2; } if (i == 2) { break; } } b1 = TestHighManager.GetBlank(k[0]); TestHighManager.ShowQuestionBlank(b1, lblB1, lblB12); b2 = TestHighManager.GetBlank(k[1]); TestHighManager.ShowQuestionBlank(b2, lblB2, lblB22); b3 = TestHighManager.GetBlank(k[2]); TestHighManager.ShowQuestionBlank(b3, lblB3, lblB32); //随机出题 int iUp3 = TestHighManager.CountDesign(); int[] m = new int[2]; m[0] = ran.Next(iDown, iUp3); d1 = TestHighManager.GetDesign(m[0]); TestHighManager.ShowQuestionDesign2(d1, lblD1); } else { Response.Redirect("Login.aspx"); } } }
//static StudentInfo stuNew2 = new StudentInfo(); //int[] rr = new int[6]; //用于存放错题的学习建议,有1~5中类型,数字长度选6 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) //防止点保存后,页面再一次刷新,和验证码一样 { if (Session["stuId"] != null) { //String Msg; int score1 = 0; int score2 = 0; int score3 = 0; int score4 = 0; string stuId = Session["stuId"].ToString(); stuNews1 = ClassUnitManager.GetStudyingInform(stuId); score1 = stuNews1.pretest; score2 = stuNews1.low; score3 = stuNews1.mid; score4 = stuNews1.high; if (int.Parse(Request.QueryString["caid"].ToString().Trim()) == 1) //不是第一次做题,读取断点 { BreakingPointRadio bpr = new BreakingPointRadio(); bpr = BreakingPointManager.LoadBreakingPointRadio(Session["stuId"].ToString()); r1 = TestHighManager.GetRadio(bpr.r1); TestHighManager.ShowQuestionRadio(r1, rdolistS1, lblS1); r2 = TestHighManager.GetRadio(bpr.r2); TestHighManager.ShowQuestionRadio(r2, rdolistS2, lblS2); r3 = TestHighManager.GetRadio(bpr.r3); TestHighManager.ShowQuestionRadio(r3, rdolistS3, lblS3); r4 = TestHighManager.GetRadio(bpr.r4); TestHighManager.ShowQuestionRadio(r4, rdolistS4, lblS4); r5 = TestHighManager.GetRadio(bpr.r5); TestHighManager.ShowQuestionRadio(r5, rdolistS5, lblS5); BreakingPointJudge bpj = new BreakingPointJudge(); bpj = BreakingPointManager.LoadBreakingPointJudge(Session["stuId"].ToString()); j1 = TestHighManager.GetJudge(bpj.j1); TestHighManager.ShowQuestionJudge(j1, rdolistJ1, lblJ1); j2 = TestHighManager.GetJudge(bpj.j2); TestHighManager.ShowQuestionJudge(j2, rdolistJ2, lblJ2); j3 = TestHighManager.GetJudge(bpj.j3); TestHighManager.ShowQuestionJudge(j3, rdolistJ3, lblJ3); j4 = TestHighManager.GetJudge(bpj.j4); TestHighManager.ShowQuestionJudge(j4, rdolistJ4, lblJ4); BreakingPointBlank bpb = new BreakingPointBlank(); bpb = BreakingPointManager.LoadBreakingPointBlank(Session["stuId"].ToString()); b1 = TestHighManager.GetBlank(bpb.b1); TestHighManager.ShowQuestionBlank(b1, lblB1, lblB12); b2 = TestHighManager.GetBlank(bpb.b2); TestHighManager.ShowQuestionBlank(b2, lblB2, lblB22); b3 = TestHighManager.GetBlank(bpb.b3); TestHighManager.ShowQuestionBlank(b3, lblB3, lblB32); BreakingPointDesign bpd = new BreakingPointDesign(); bpd = BreakingPointManager.LoadBreakingPointDesign(Session["stuId"].ToString()); d1 = TestHighManager.GetDesign(bpd.d1); TestHighManager.ShowQuestionDesign(d1, lblD1, lblD1S1, lblD1S2, rdolistD1S1, rdolistD1S2); TestHighManager.ShowRadioBreakingpoint(bpr, rdolistS1, rdolistS2, rdolistS3, rdolistS4, rdolistS5); TestHighManager.ShowJudgeBreakingpoint(bpj, rdolistJ1, rdolistJ2, rdolistJ3, rdolistJ4); TestHighManager.ShowBlankBreakingpoint(bpb, txtB11, txtB21, txtB31); } else if (int.Parse(Request.QueryString["caid"].ToString().Trim()) == 0) { if (score1 >= 90 || score3 >= 60) { //随机出题(加入错题的权重,原先的题号不变,多余的错题作为普通题目放到最后进行随机) long tick = DateTime.Now.Ticks; Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)); int iDown = 1; int iUp = TestHighManager.CountRadio(); int[] rr = new int[iUp + 1]; for (int mn = 1; mn <= TestHighManager.CountRadio(); mn++) { rr[mn] = WrongRadioManager.WrongRadionum(Session["stuId"].ToString(), mn, "High", "WrongRadio"); iUp = iUp + rr[mn]; } int[] n = new int[5]; while (true) { int i; n[0] = ran.Next(iDown, iUp); n[1] = ran.Next(iDown, iUp); n[2] = ran.Next(iDown, iUp); n[3] = ran.Next(iDown, iUp); n[4] = ran.Next(iDown, iUp); //对随机选出的5个数重映射题号 for (i = 0; i <= 4; i++) { if (n[i] > TestHighManager.CountRadio()) { int temp; temp = n[i] - TestHighManager.CountRadio(); int p; for (p = 1; p <= TestHighManager.CountRadio(); p++) { temp = temp - rr[p]; if (temp <= 0) { break; } } n[i] = p; } } if (n[0] != n[1] && n[0] != n[2] && n[0] != n[3] && n[0] != n[4] && n[1] != n[2] && n[1] != n[3] && n[1] != n[4] && n[2] != n[3] && n[2] != n[4] && n[3] != n[4]) { i = 4; } if (i == 4) { break; } } r1 = TestHighManager.GetRadio(n[0]); TestHighManager.ShowQuestionRadio(r1, rdolistS1, lblS1); r2 = TestHighManager.GetRadio(n[1]); TestHighManager.ShowQuestionRadio(r2, rdolistS2, lblS2); r3 = TestHighManager.GetRadio(n[2]); TestHighManager.ShowQuestionRadio(r3, rdolistS3, lblS3); r4 = TestHighManager.GetRadio(n[3]); TestHighManager.ShowQuestionRadio(r4, rdolistS4, lblS4); r5 = TestHighManager.GetRadio(n[4]); TestHighManager.ShowQuestionRadio(r5, rdolistS5, lblS5); //随机出题 int iUp1 = TestHighManager.CountJudge(); int[] jj = new int[iUp1 + 1]; for (int mn = 1; mn <= TestHighManager.CountJudge(); mn++) { jj[mn] = WrongRadioManager.WrongRadionum(Session["stuId"].ToString(), mn, "High", "WrongJudge"); iUp1 = iUp1 + jj[mn]; } int[] j = new int[4]; while (true) { int i; j[0] = ran.Next(iDown, iUp1); j[1] = ran.Next(iDown, iUp1); j[2] = ran.Next(iDown, iUp1); j[3] = ran.Next(iDown, iUp1); //对随机选出的4个数重映射题号 for (i = 0; i <= 3; i++) { if (j[i] > TestHighManager.CountJudge()) { int temp; temp = j[i] - TestHighManager.CountJudge(); int p; for (p = 1; p <= TestHighManager.CountJudge(); p++) { temp = temp - jj[p]; if (temp <= 0) { break; } } j[i] = p; } } if (j[0] != j[1] && j[0] != j[2] && j[0] != j[3] && j[1] != j[2] && j[1] != j[3] && j[2] != j[3]) { i = 3; } if (i == 3) { break; } } j1 = TestHighManager.GetJudge(j[0]); TestHighManager.ShowQuestionJudge(j1, rdolistJ1, lblJ1); j2 = TestHighManager.GetJudge(j[1]); TestHighManager.ShowQuestionJudge(j2, rdolistJ2, lblJ2); j3 = TestHighManager.GetJudge(j[2]); TestHighManager.ShowQuestionJudge(j3, rdolistJ3, lblJ3); j4 = TestHighManager.GetJudge(j[3]); TestHighManager.ShowQuestionJudge(j4, rdolistJ4, lblJ4); //随机出题 int iUp2 = TestHighManager.CountBlank(); int[] kk = new int[iUp2 + 1]; for (int mn = 1; mn <= TestHighManager.CountBlank(); mn++) { kk[mn] = WrongRadioManager.WrongRadionum(Session["stuId"].ToString(), mn, "High", "WrongBlank"); iUp2 = iUp2 + kk[mn]; } int[] k = new int[3]; while (true) { int i; k[0] = ran.Next(iDown, iUp2); k[1] = ran.Next(iDown, iUp2); k[2] = ran.Next(iDown, iUp2); //对随机选出的3个数重映射题号 for (i = 0; i <= 2; i++) { if (k[i] > TestHighManager.CountBlank()) { int temp; temp = k[i] - TestHighManager.CountBlank(); int p; for (p = 1; p <= TestHighManager.CountBlank(); p++) { temp = temp - kk[p]; if (temp <= 0) { break; } } k[i] = p; } } if (k[0] != k[1] && k[0] != k[2] && k[1] != k[2]) { i = 2; } if (i == 2) { break; } } b1 = TestHighManager.GetBlank(k[0]); TestHighManager.ShowQuestionBlank(b1, lblB1, lblB12); b2 = TestHighManager.GetBlank(k[1]); TestHighManager.ShowQuestionBlank(b2, lblB2, lblB22); b3 = TestHighManager.GetBlank(k[2]); TestHighManager.ShowQuestionBlank(b3, lblB3, lblB32); //随机出题 int iUp3 = TestHighManager.CountDesign(); int[] m = new int[2]; m[0] = ran.Next(iDown, iUp3); d1 = TestHighManager.GetDesign(m[0]); TestHighManager.ShowQuestionDesign(d1, lblD1, lblD1S1, lblD1S2, rdolistD1S1, rdolistD1S2); } else { lblTitle.Visible = false; PanelAll.Visible = false; PanelDesign.Visible = false; btnSubmit.Visible = false; btnOk.Visible = false; btnSave.Visible = false; //Response.Write("<script type = 'text/javascript'> alert('你未通过低等级测试,不能进行该等级测试!'); </script>"); RegisterClientScriptBlock("", "<script>alert('你未通过前测或低等级测试,不能进行高级测试!')</script>"); } } } else { Response.Redirect("Login.aspx"); } } }