visual集合库开发实战案例考试系统_第1页
visual集合库开发实战案例考试系统_第2页
visual集合库开发实战案例考试系统_第3页
visual集合库开发实战案例考试系统_第4页
visual集合库开发实战案例考试系统_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

近年来,计算机技术、Internet技术的迅猛发展,给传统的办学提出了新的模式。绝大部分大学和信息化、网络化、现代化的目标迈进。开发的无纸化考试系统,目的在于探索一种以互联网为基在我国,虽然教育已经蓬勃地发展起来,但是目前学校与社会上的各种考试大都采用传统的5个步骤,即人工出题、考生考试、人工阅卷、成为了保障整个系统的安全性,考试系统实现了分类验证的登录模块,通过此模块,可以对不同的登录用户进行验证,确保了不同的用户操作系统。在抽取试题上,系统使用随机抽取试现系统的高效性。在管理上,分管理员管理模块和试题管理模块。其分别适应不同的用户,·了防止这些弊端,学院现需要委托软件开发公司开发一个考试系统,项目名称为考试系统。试题产生试卷、限制考生时间、交卷后自动评分,同时需为学院管理人员提供试卷管理及管理员根据用户的要求,项目主要以考试为主,因此对于考生答题的结果能够准确地评分,并且能够对考试试题信息进行修改、删除等功能。此外,出于安全和国家法律方面的考虑,考试系统在到时,应在10分种内进行恢复;对于考试系统中涉及国家法律、的内容应6个·展工作,现以的形式将项目开发生命周期中的项目任务范围、项目团队组织结构、团队成员的工成绩。项目周期为3个月。项目背景规划如表9.1所示。9.1XXX项目目标应当符合SMART原则,把项目要完成的工作用清晰的语言描述出来。考试系统的考试系统主要针对3类人群,分别是教师、管理员和学生。对于教师,考试系统需要提供试题管理、考试结果查询等服务。对于管理员,考试系统需要提供试题信息管理、教师信息管理、考生信息管理、考试科目信息管理以及考试结果管理等服务。而对于学生,考试系统只需提供答题与自动评分即可。整个项目需要在3个月的时间内交付用户使用。当前社会,信息就是资本,信息就是。一方面考试系统能够节省大量人力资源,学校不再需要大量的教师组织学生考试,从而间接地为学校节约了人力和时间。另一方面,考试系统能考试系统可以在WindowsXP(SP2)/Windows2000(SP4)/WindowsServer2003(SP1)下运行,使用VisualStudio2005开发,利用SQLServer2000数据库所有数据。·

9.19.2 ·····图9.2考试系统前台功能结构 图9.3考试系统功能结构 图9.4考试界面(光盘 图9.5管理员界面(光盘9.6试题管理界面(光盘\…\teacher\TeacherManage.aspx)9.7考试评分界面(光盘\…\student系统开发平台:VisualStudio2005数据库管理系统软件:SQLServer2000图9.8考试系统的业务流程在开发考试系统之前,分析了系统的数据量,由于考试系统中试题及考生信息的数据量会很大,因此选择SQLServer2000数据库数据信息,数据库命名为db_ExamOnline,在数据库中创建了6个数据表用于不同的信息,如图9.9所示。图9.9考试系统中用到的数据说明 开发考试系统时,为了灵活地系统,设计了管理员模块,通过管理员模块可以方便地对整个考试系统进行。这时,必须建立一个数据表用于所有的管理员信息。管理员信息实体E-R图如图9.10所示。当考生成功登录考试系统后,可以根据需要选择考试的科目,考生不同可能选择的考试科目会不同,系统必须提供一些参加考试的科目,供考生选择。这时,在数据库中应该建立一个所有参加考试科目的数据表。考试科目信息实体E-R图如图9.11所示。图9.10管理员信息实体E-R 图9.11考试科目信息实体E-R考生选择考试科目,开始考试。在规定时间内必须完成考试,否则系统会自动提交试卷,并得分。考试记录信息实体E-R图如图9.12所示。在数据库中建立一个用于考生各项信息的数据表。其中包括考生登录时账号(考生编号或考生学号)及。若某个考生参加了考试,系统会将考生答卷的最后得分保存到此数据表中,以便教师或考生对考试历史记录进行查询。考生信息实体E-R图如图9.13所示。图9.12考试记录信息实体E-R 图9.13考生信息实体E-R为了方便教师对考试试题及考生考试结果进行管理,在数据库中必须建立一个数据表用于所有的教师信息,其中包括教师登录管理系统时需要的账号及,以及教师负责的科目名称。息实体E-R9.14考试系统中考试试题是通过对数据库中的所有试题随机抽取产生的,所以必须在数据库中建立一个数据表用于所有参与考试的试题信息,其中包括试题题目、试题的4个备选答案、正确答案以及所属的科目。试题信息实体E-R图如图9.15所示。试题答案试题答案试题答案试题答案图9.14教师信息实体E-R 图9.15试题信息实体E-R9.3字段 4是否否否9.4字段 4是否8否9.5字段 4是否否4否否否否9.6字段 4是否否否否9.7字段 4是否否否否9.8字段 4是否否否否否····publicpublicclass{publicstaticSqlConnection{returnnew}publicstaticvoidBindDG(GridViewdg,stringid,stringstrSql,string{字段 否4否否每个都会有相应的文件夹组织结构,如果中网页数量很多,可以将所有的网页及资源放在不同的文件夹中。如果中网页不是很多,可以将、公共类或者程序资源文件放在相应的文件夹中,而网页可以直接放在根下。考试系统就是按照前者的文件夹组织结构排列的,如图9.16所示。图 在开发项目中以类的形式来组织、封装一些常用的方法和,不仅可以提高代码的重用率,也BaseClassDBCon方法、BindDG方法、OperateData方法、CheckStudent方法、CheckTeacherCheckAdmin方法,分别用于连接GridViewSQL语句、判断考生登录、判断教师登录和判断管理员登录。具例程01代码位置:光盘TM09\ExamOnLineApp_CodeSqlConnectionSqlConnectionconn=DataSetds=newDataSet();dg.DataKeyNames=newstring[]{id};} publicstaticvoidOperateData(string {SqlConnectionconn mandcmd=new } publicstaticboolCheckStudent(stringstudentNum,string {SqlConnectionconn mandcmd=new mand("selectcount(*)fromtb_StudentwhereStudentNum='"+studentNum+"'andStudentPwd='"+studentPwd+"'",conn);if(i>0){return}{return}} publicstaticboolCheckTeacher(stringteacherNum,string {= mandcmd= mand("selectcount(*)fromtb_TeacherwhereTeacherNum='"++"'andTeacherPwd='"+teacherPwd+"'",if(i>0){return}{return}}publicstaticboolCheckAdmin(stringadminNum,string{SqlConnectionconn=mandcmd= mand("selectcount(*)fromtb_AdminwhereAdminNum='"+adminNum+andadminPwd='"+adminPwd+"'",if(i>0){return}{return}}}BindDGGridViewGridView控件名称、数据表主键、SQL并不是任何人都可以参加考试,默认是不允许登录的,只有经过管理员分配的编号和密码才能登录考试系统参加考试,这时就需要通过登录模块录用户的。登录模块是在线考试系统的第一道安全屏障,登录模块运行结果如图9.17所示。9.17中的主要是通过Random类实现的,为了更好地理解其用法,下面进行详细讲解。Random类:表示伪随机数,一种能够产生满足某些随机性统计要求的数字序列的设备Random类中最常用的是Random.Next publicvirtualintNext(intminValue,int maxValue:返回随机数的上界,maxValue必须大于或等于minValue。stringMaxNum="";stringMinNum="";for(inti=0;istringMaxNum="";stringMinNum="";for(inti=0;i<5;i++){MaxNum=MaxNum+}Randomrd=newreturn件如表9.9所示。9.9 无TextModed属性设置为ifif(txtCode.Text.Trim()!={ }{=="{{Session["ID"]=txtNum.Text.Trim();}{ }}=="{{Session["teacher"]=txtNum.Text;}{ }}=="{{ 无ImageUrl属性设置为是否正确,如果正确,则根据选择的登录调用公共类中相应的方法验证账号和是否正确,如果登录的账号和正确,则会转向与登录相符的页面。关键代码如下:例程03代码位置:光盘TM\09\ExamOnLine·· }{ }}}录录录录protectedvoidbtnconcel_Click(objectsender,EventArgs{protectedvoidbtnconcel_Click(objectsender,EventArgs{}开发考试系统过程中,需要考虑的一点是如何将试题显示在页面上,如何将试题从数据库中出来。比较合理的做法是将所有试题信息在数据库中,然后随机抽取若干道试题,动态地显示在页面当中。为了实现此功能,设计出随机抽取试题模块,运行结果如图9.18所示。实现随机抽取试题模块的关键技术是SQLServer中的newid()函数,通过此函数可以动态创建uniqueidentifier类型的值,即随机数。实现起来非常简单,有关newid()函数的详细说明如下。uniqueidentifier类型的唯一值。 NEWID(

9.18例如,对变量使用newid函数,使用newid对为uniqueidentifier数据类型的变量赋值。在测试该值前,将先打印uniqueidentifier数据类型变量的值。CreatingalocalvariablewithDECLARE/SETsyntax.DECLARE@myiduniqueidentifierSET@myid=PRINT'Valueof@myidis:'+CONVERT(varchar(255), Valueof@myidis:6F9619FF-8B86-D011-B42D- Selecttop10*fromtb_Testorderby 9.19所示。·····9.19protectedvoidButton2_Click(objectsender,EventArgs{stringStuID=Session["ID"].ToString();protectedvoidButton2_Click(objectsender,EventArgs{stringStuID=Session["ID"].ToString();SqlConnectionconn=mandcmd= mand("selectcount(*)fromtb_ScorewhereStudentID='"+StuID+"'LessonNameStuKC inti if(i {}{cmd=new mand("selectcount(*)fromtb_testwheretestCourse='"+StuKCconn);intN=Convert.ToInt32(cmd.ExecuteScalar()); if(N {cmd= mand("insertintotb_Score(StudentID,LessonName,StudentName)values('"+"','"+tuKC+"','"+lblName.Text+"')",Session["KM"]=}{ }}}的主要控件如表9.10所示。9.10 无无无无无无无无例程06代码位置:光盘TM09\ExamOnLinestudent\publicstringAns= publicint protectedvoidPage_Load(objectsender,EventArgs{lblEndtime.Text="考试时间为10分钟,每小题2分,考试已用时:";//显示考试提示lblStuNum.Text= //显示考生编lblStuName.Text .Text=Session[" lblStuKM.Text="["+Session["KM"].ToString()+"]"+"考试试题"; inti=1; SqlConnectionconn mandcmd= mand("selecttop10*fromtbtestwheretestCourse='"++"'orderbynewid()",SqlDataReadersdr=cmd.ExecuteReader(); while(sdr.Read()){ llittxt=new llitti=new RadioButtonListcbk=newRadioButtonList(); cbk.ID="cbk"+i.ToString();littxt.Texti.ToString、Server.HtmlEncode(sdr["testContent"].ToStringbr>ckquote>";litti.Text="</Blockquote>";cbk.Items.Add("A."+Server.HtmlEncode(sdr["testAns1"].ToString()));//添加选项Acbk.Items.Add("B."+Server.HtmlEncode(sdr["testAns2"].ToString()));//添加选项Bcbk.Items.Add("C."+Server.HtmlEncode(sdr["testAns3"].ToString()));//添加选项Ccbk.Items.Add("D."+Server.HtmlEncode(sdr["testAns4"].ToString()));//添加选项Dcbk.Font.Size=11; for(intj=1;j<=4;{····cbk.Items[jcbk.Items[j-1].Value=}Ans+=if(Session["a"]=={}}conn. Session["a"]=}protectedvoidbtnsubmit_Click(objectsender,EventArgs{stringmscprotectedvoidbtnsubmit_Click(objectsender,EventArgs{stringmsc=for(inti=1;i<=10;{ RadioButtonListlist=(RadioButtonList)Panel1.FindControl("cbk"+i.ToString());if(list!=null){msc msc }} stringsql="updatetb_scoresetRigthAns='"+Ans+"'whereStudentID='"+lblStuNum.Text+"'";stringstrsql="updatetb_scoresetStudentAns='"+msc+"'whereStudentID='"+lblStuNum.Text+"'";}stringStuID=Session["ID"].ToString();stringStuKC=ddlKm.SelectedItem.Text;mandcmdstringStuID=Session["ID"].ToString();stringStuKC=ddlKm.SelectedItem.Text;mandcmd= mand("selectcount(*)fromtbScorewhereStudentID='"+StuID+"'LessonName='"+StuKC+"'",inti=if(i>{}{cmd=new mand("selectcount(*)fromtbtestwheretestCourse='"+StuKCconn);intN=Convert.ToInt32(cmd.ExecuteScalar()); ifN {cmd= mand("insertintotbScore(StudentID,LessonName,StudentName)values('"++"','"+lblName.Text+"')", Session["KM"]=}{ }}要,考试系统中加入了自动评分模块,当考生答题完毕提交试卷时,系统会根据考生选择的答案与正确答案进行比较,最后进行评分,运行结果如图9.20所示。9.20publicpublicstringSubstring(intstartIndex,intstringstringstr新青年功能:Equals方法用于确定两个String对象是否具有相同的值。publicboolEquals(string例如,判断字符串stra和字符串strb是否相等。代码如下:strapublicboolEquals(string····页面中用到的主要控件如表9.11所示。9.11 无无无无无添加到数据表tb_score中。关键代码如下:protectedvoidPageLoad(objectsender,EventArgs{stringprotectedvoidPageLoad(objectsender,EventArgs{stringRans=stringSans=intStuScore=for(inti=0;i<j;{{StuScore+=}}this.lblResult.Text=StuScore.ToString();this.lblkm.Text=Session["KM"].ToString();this.lblnum.Text=Session["ID"].ToString();stringstrsql="updatetbscoresetscore='"+StuScore.ToString()+"'whereStudentID='"+ToString()+"'andLessonName='"+Session["KM"].ToString()+"'";} 9.21以使查询更为灵活。模糊查询通常使用LIKE关键字来指定模式查询条件。LIKE关键字 match_expression[NOT]LIKEpattern[ESCAPEescape_character match_expression:任何字符串数据类型的有效SQLServerescape_character:字符串数据类型分类中的所有数据类型的任何有效SQLServerLIKE查询条件需要使用通配符在字符串内查找指定的模式,LIKE关键字中的通配符如表9.12LIKE通配 %由0个或字符组成的任意字符_[[^[在模式查询中可以使用“[]”符号来查询一定范围内的数据。“[]”符号用于表示一定范围内的protectedprotectedvoidPage_Load(objectsender,EventArgs{stringstrSql="select*fromtb_Studentwhere学生 like'王%'";SqlDataAdapteradapter=newSqlDataAdapter(strSql,myConn);DataSetds=newDataSet();for(inti=0;i<=this.GridView1.Rows.Count-1;{}}protectedvoidPage_Load(objectsender,EventArgs{if(Session["teacher"]protectedvoidPage_Load(objectsender,EventArgs{if(Session["teacher"]=={}{SqlConnectionconn=mandcmd= mand("select*fromtb_TeacherwhereTeacherNum='"+lblwz.Text+"'",lblname.Text=intid=cmd= mand("selectLessonNamefromtb_LessonwhereID="+id,lblkc.Text=}}的主要控件如表9.13所示。9.13 无protectedvoidPageLoad(objectsender,EventArgs{ifprotectedvoidPageLoad(objectsender,EventArgs{if(Session["teacher"]=={}{if{stringstrsql="select*fromtbtestwheretestCourse='"+Session["KCname"].ToString()+}}}{intid=(int)gvExaminationInfo.DataKeys[e.RowIndex].Value; {intid=(int)gvExaminationInfo.DataKeys[e.RowIndex].Value; stringsql="deletefromtb_testwhereID="+id; stringstrsql="select*fromtb_testwheretestCourse='"+Session["KCname"].ToString()+"'";BaseClass.BindDG(gvExaminationInfo,"ID",strsql,"ExaminationInfo");}protectedvoidgvExaminationInfo_PageIndexChanging(objectsender, {protectedvoidgvExaminationInfo_PageIndexChanging(objectsender, { stringstrsql="select*fromtb_testwheretestCourse='"+Session["KCname"].ToString()+"'";BaseClass.BindDG(gvExaminationInfo,"ID",strsql,"ExaminationInfo");}protectedvoidbtnserch_Click(objectsender,EventArgs{stringstrsqlprotectedvoidbtnserch_Click(objectsender,EventArgs{stringstrsql="select*fromtb_testwheretestContentlike'%"+txtstkey.Text.Trim()+"%'";BaseClass.BindDG(gvExaminationInfo,"ID",strsql,"ExaminationInfo");}控件如表9.14所示。9.14 无protectedvoidbtnconfirm_Click(objectsender,EventArgs{ifprotectedvoidbtnconfirm_Click(objectsender,EventArgs{if(txtsubject.Text==""||txtAnsA.Text==""||txtAnsB.Text==""||txtAnsC.Text==""||txtAnsD.Text==""{ }{stringisfb=isfb="1";isfb=stringstr="insertintotbtestContent,testAns1,testAns2,testAns3,testAns4,rightAns,pub,testCourse)values('"+txtsubject.Text.Trim()+"','"+nsA.Text.Trim()+"','"+txtAnsB.Text.Trim()+"','"+txtAnsC.Text.Trim()+"','"txtAnsD.Text.Trim()+"','"+rblRigs.SelectedValue.ToString()+"','"+isfb+"','"+Session["KCname"].ToString()+ }}用到的主要控件如表9.15所示。····例程例程17代码位置:光盘TM09\ExamOnLineteacher{stringstrsql="deletefromtb_scorewhereID="+id;{stringresultstr="select*fromtb_scorewhereStudentIDlike'%"+txtkey.Text.Trim()+"%'LessonName='"+Session["KCname"].ToString()+,""," }{stringresultstr="select*fromtb_scorewhereStudentNamelike'%"+txtkey.Text.Trim()+"%'andLessonName='"+Session["KCname"].ToString()+"'";9.15 无protectedvoidbtnserch_Click(objectsender,EventArgs{protectedvoidbtnserch_Click(objectsender,EventArgs{if(type=="学号"){stringresultstr="select*fromtb_scorewhereStudentIDlike'%"+txtkey.Text.Trim()+"%'and='"+Session["KCname"].ToString()+BaseClass.BindDG(gvExaminationresult"IDresultstr, Session["num学号}if(type=={ stringresultstr="select*fromtb_scorewhereStudentNamelike'%"+txtkey.Text.Trim()+"%'andLessonName='"+Session["KCname"].ToString()+"'"; }}例程例程19代码位置:光盘TM\09\ExamOnLineteacherprotectedvoidbtnchange_Click(objectsender,EventArgs{if(txtNewPwd.Text==""||txtNewPwdA.Text==""||txtOldPwd.Text=={}{,""," }}GridViewPageIndexChanging中添加如下代码:protectedvoidgvExaminationresult_PageIndexChanging(objectsender,{=="protectedvoidgvExaminationresult_PageIndexChanging(objectsender,{=="{ stringresultstr="select*fromtb_scorewhereStudentIDlike'%"+txtkey.Text.Trim()+"%'andLessonName='"+Session["KCname"].ToString()+"'";,""," }{ stringresultstr="select*fromtb_scorewhereStudentNamelike'%"+txtkey.Text.Trim()+"%'andLessonName='"+Session["KCname"].ToString()+"'";,""," }}修改新建一个网页,命名为TeacherChangePwd.aspx,主要用于实现教师修改。该页面中用到的主要控件如表9.16所示。表9.16修改页面中用到的主要控 无无无protectedprotectedvoidPage_Load(objectsender,EventArgs{if(Session["teacher"]=={}{SqlConnectionconn=BaseClass.DBCon(); {if(txtNewPwd.Text.Trim()!={}{stringstrsql="updatetb_TeachersetTeacherPwd='"+txtNewPwdA.Text.Trim()+"'whereTeacherNum='"+Session["teacher"].ToString()+"'"; txtNewPwd.Text="";txtNewPwdA.Text="";txtOldPwd.Text="";}}{}}}例程20代码位置:光盘TM\09\ExamOnLineteachermandmandcmd=mand("select*fromtb_TeacherwhereTeacherNum='"+lblwz.Text+"'",SqlDataReadersdr=cmd.ExecuteReader();lblname.Text intid=Convert.ToInt32(sdr["TeacherCourse"].ToString()); cmd= mand("selectLessonNamefromtb_LessonwhereID="+id,lblkc.Text=}}if{stringstrsql="select*fromif{stringstrsql="select*fromtb_testwheretestCourse='"+Session["KCname"].ToString()+"'";BaseClass.BindDG(gvExaminationInfo,"ID",strsql,"ExaminationInfo");} 考试系统中,管理员模块具有最高权限,管理员通过登录模块成功登录管理员模块之后,可以对试题信息、教师信息、考生信息、考试科目信息以及考试结果进行管理,使起来更方便、快捷。管理员模块运行结果如图9.22所示。图9.22管理员模块运行结例程例程22代码位置:光盘TM09\ExamOnLineadminprotectedvoidPage_Load(objectsender,EventArgs{ 在开发管理员模块过程中,使用比较频繁的是使用Eval方法绑定数据。Eval方法是一个静态方法,只能绑定到模板中的子控件的公共属性上,下面详细介绍Eval方法。Eval publicstaticObjectEval(Objectcontainer,string <%#DataBinder.Eval(Container.DataItem,"Price") 教师信息、试题基本信息管理、添加试题信息、考试科目设置、查询考试结果以及管理员信息。StudentInfo.aspx,主要用于实现对学生基本信息的查询、修改和删除。该页面中用到的主要控件如表9.17所示。9.17 无····ifif(Session["admin"]=={}if{stringstrsql="select*fromtb_StudentorderbyID}}protectedvoidbtnserch_Click(objectsender,EventArgs{if(txtKey.Textprotectedvoidbtnserch_Click(objectsender,EventArgs{if(txtKey.Text=={stringstrsql="select*fromtb_StudentorderbyIDdesc";BaseClass.BindDG(gvStuInfo,"ID",strsql,"stuinfo");}{stringstrsql="";{case学号strsql="select*fromtb_StudentwhereStudentNumlike'%"+txtKey.Text.Trim()+"%'";BaseClass.BindDG(gvStuInfo,"ID",strsql,"stuinfo");;case strsql="select*fromtb_StudentwhereStudentNamelike'%"+txtKey.Text.Trim()+"%'";BaseClass.BindDG(gvStuInfo,"ID",strsql,"stuinfo");}}}AddStudentInfo.aspx,主要用于添加学生信息。该页面中用到的主要控件如表9.18所示。9.18 无无 无protectedvoidbtnSubmitClick(objectsender,EventArgs{ifprotectedvoidbtnSubmitClick(objectsender,EventArgs{if(txtName.Text==""||txtNum.Text==""||txtPwd.Text=={}{SqlConnectionconn=mandcmd= mand("selectcount(*)fromtbStudentwhereStudentNum='"+txtNuxt+"'",if(i>0){}{cmd= mand("insertintotb values('"+txtNum.Text.Trim()+"','"+txtName.Text.Trim()+"','"+rblTrim()+"')",conn);btnConcelClick(sender,e);}}}.SelectedValue.ToString()+"','"+//GridView控件,这里不作具体介绍,只给出关键代码。protectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]protectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]=={}if{stringstrsql="select*fromtb_TeacherorderbyIDdesc";}}修改。该页面中用到的主要控件如表9.19所示。9.19 无无无无privatestaticintprotectedvoidPage_Load(objectsender,privatestaticintprotectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]=={}if{=SqlConnectionconn=BaseClass.DBCon(); //打开数据mandcmd= mand("select*fromtb_TeacherwhereID="+id,txtTName.Text txtTNum.Text=sdr["TeacherNum"].ToString(); txtTPwd.Text=sdr["TeacherPwd"].ToString(); cmd=new mand("selectLessonNamefromtb_LessonwhereIDkmid,conn);stringKmName=cmd.ExecuteScalar().ToString();//显示科目名称cmd=new mand("select*fromtb_Lesson",conn);sdr=cmd.ExecuteReader();= ddlTKm.DataTextField="LessonName"; ddlTKm.DataValueField="ID";}}protectedvoidbtnSavaClick(objectsender,EventArgs{ifprotectedvoidbtnSavaClick(objectsender,EventArgs{if(txtTName.Text==""||txtTPwd.Text=={}{stringstrsql="updatetb_TeachersetTeacherName='"+txtTName.Text.Trim()+"',TeacherPwd='"+Trim()+"',TeacherCourse='"+ddlTKm.SelectedValue.ToString()+"'whereID="+id; }}要控件如表9.20所示。9.20 无无无···· 无protectedvoidbtnAdd_Click(objectsender,EventArgs{ifprotectedvoidbtnAdd_Click(objectsender,EventArgs{if(txtTeacherName.Text==""||txtTeacherNum.Text==""||txtTeacherPwd.Text=={ }{SqlConnectionconn //mandcmd= mand("selectcount(*)fromtb_Teacherwhere Text.Trim()+"'",if(t>0){}{stringstr="insertintotb_Teacher(TeacherNum,TeacherName,TeacherPwd,TeacherCourse)values('"+txtTerNum.Text.Trim()+"','"+txtTeacherName.Text.Trim()+"','"+txtTeacherPwd.Text.Trim()+"','"+ddlTeKm.SelectedValue.ToString()+"')"; btnconcel_Click(sender,e);}}}进行删除和修改。该页面中用到的主要控件如表9.21所示。9.21 无所有的科目名称绑定到DropDownList控件上。关键代码如下:protectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]protectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]=={}if{stringstrsql="select*fromtb_testorderbyIDdesc";SqlConnectionconn=BaseClass.DBCon();mandcmd=new mand("select*fromtb_Lesson",conn);SqlDataReadersdr=cmd.ExecuteReader();this.ddlEkm.DataSource=sdr;this.ddlEkm.DataValueField="ID";this.ddlEkm.SelectedIndex=0;}}息。该页面中用到的主要控件如表9.22所示。9.22 ···· 无privatestaticintprotectedvoidPage_Load(objectsender,privatestaticintprotectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]=={}if{SqlConnectionconn=BaseClass.DBCon();mandcmd= mand("select*fromtb_testwhereID="+id,SqlDataReadersdr=cmd.ExecuteReader();txtsubject.Text=sdr["testContent"].ToString();txtAnsA.Text=sdr["testAns1"].ToString();txtAnsB.Text=sdr["testAns2"].ToString();txtAnsC.Text=sdr["testAns3"].ToString();txtAnsD.Text=sdr["testAns4"].ToString();stringfb=sdr["pub"].ToString();if(fb==}}protectedvoidbtnconfirmClick(objectsender,EventArgs{protectedvoidbtnconfirmClick(objectsender,EventArgs{if(txtsubject.Text==""||txtAnsA.Text==""||txtAnsB.Text==""||txtAnsC.Text==""||txtAnsD.Text==""{ }{stringisfb=ifcbFB.Checked isfb=isfb=stringstr="updatetbtestsettestContent='"+txtsubject.Text.Trim()+"',testAns1='"+txtAnsA.Text.Trim()+"'SelectedValue.ToString()+"',pub='"+isfb+"'whereID="+id; }}protectedvoidbtnconfirmClick(objectsender,EventArgs{protectedvoidbtnconfirmClick(objectsender,EventArgs{if(txtsubject.Text==""||txtAnsA.Text==""||txtAnsB.Text==""||txtAnsC.Text==""||txtAnsD.Text=={ }{stringisfb=ifcbFB.Checked isfb=isfb=····例程例程34代码位置:光盘TM09\ExamOnLineadminprotectedvoidbtnAdd_Click(objectsender,EventArgs{if{ame.Text==stringstr="insertintotb_test(testContent,testAns1,testAns2,testAns3,testAns4,rightAns,pub,testCourse)values('"+txtsubject.Text.Trim()+"','"+txtAnsA.Text.Trim()+"','"+txtAnsB.Text.Trim()+"','"+txtAnsC.Text.Trim()+"','"+txtAnsD.Text.Trim()+"','"+rblRightAns.SelectedValue.ToString()+"','"+isfb+"','"+ddlkm.SelectedItem.Text+"')";stringstr="insertintotb_test(testContent,testAns1,testAns2,testAns3,testAns4,rightAns,pub,testCourse)values('"+txtsubject.Text.Trim()+"','"+txtAnsA.Text.Trim()+"','"+txtAnsB.Text.Trim()+"','"+txtAnsC.Text.Trim()+"','"+txtAnsD.Text.Trim()+"','"+rblRightAns.SelectedValue.ToString()+"','"+isfb+"','"+ddlkm.SelectedItem.Text+"')"; }}主要控件如表9.23所示。9.23 无无protectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]protectedvoidPage_Load(objectsender,EventArgs{if(Session["admin"]=={}if{SqlConnectionconn=mandcmd=new mand("select*fromtb_Lesson",conn);SqlDataReadersdr=cmd.ExecuteReader();while{ }}}}{stringsystemTime=stringstrsql="insertintotb_Lesson(LessonName,LessonDataTime)values('" ame.Text.Trim()++smTime+ame.Text=}}protectedvoidbtnDelete_Click(objectsender,EventArgs{protectedvoidbtnDelete_Click(objectsender,EventArgs{{}{stringstrsqldeletefromtb_LessonwhereLessonNameListBox1.SelectedItem.Text }}GridView控件,此处不作详细介绍,只给出关键代码。protectedvoidPageLoad(objectsender,EventArgs{ifprotectedvoidPageLoad(objectsender,EventArgs{if(Session["admin"]=={}if{stringstrsql="select*fromtb_scoreorderbyID····例程例程38代码位置:光盘TM09\ExamOnLineadminprotectedvoidbtnchange_Click(objectsender,EventArgs{if(txtNewPwd.Text==""||txtNewPwdA.Text==""||txtOldPwd.Text=={}{ {if(txtNewPwd.Text.Trim() {}}}{intid=(int)gvExaminationresult.DataKeys[e.RowIndex].Value; {intid=(int)gvExaminationresult.DataKeys[e.RowIndex].Value

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论