学生网上选课系统的设计与实现_第1页
学生网上选课系统的设计与实现_第2页
学生网上选课系统的设计与实现_第3页
学生网上选课系统的设计与实现_第4页
学生网上选课系统的设计与实现_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

基于ASP.net的学生网上选课系统的设计与实现摘要:随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。针对学生选课这一环节,本系统从学生网上自主选课以及教师的课程发布两个大方面进行了设计,根本实现了学生的在线信息查询、选课功能以及教师对课程信息发布的管理等功能。本程序由SQLServer数据库支持,通过使用ASP语言实现。本文对学生网上选课系统进行了系统分析,详细讲述了系统功能,并对数据库设计等方面加以说明。关键词:选课;课程信息发布;MySQL;ASP1绪论1.1课题背景随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋繁重、复杂。如何把教务工作信息化,模块化,便捷化是现代大学开展的重点,所以迫切需要研制开发一种综合教务管理软件。在数字校园理论逐步应用的过程中,各校一方面不断投资购建各种硬件、系统软件和网络,另一方面也不断开发实施了各类教学、科研、办公管理等应用系统,形成了一定规模的信息化建设体系。但是,由于整体信息化程度相对落后,经费短缺,理论体系不健全等原因,国内各校教务管理系统在机构设置、效劳范围、效劳质量及人员要求上与国外高校相比都有一定的差距。目前国家的教育体制也正处在不断改革、创新的阶段,教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出适合中国特色的教学形式,国家教育部面向各级各类学校开展了全面学分制改革。随着无纸化办公的一步步实现,信息的自动处理以及网络式的信息交互方式越来越被人们认可和应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,同时,随着学生选课自主权的增加,网上选课有效的防止了“走关系〞等不良现象,使教学更加透明,为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的根底。1.2所用软件的根本知识MySQLMySQL有关数据库方面的操作。注意:必须首先登录到mysql中,以下操作都是在mysql的提示符下进行的,而且每个命令以分号结束。操作技巧:如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。根本命令:列出数据库showdatabases;选择数据库use库名;列出表格showtables;显示数据表的结构describe表名;建库createdatabase库名;建表use库名;createtable表名(字段设定列表);删库和删表dropdatabase库名;droptable表名;将表中记录清空deletefrom表名;显示表中的记录select*from表名;将文本数据转到数据库中loaddatalocalinfile"文件名"intotable表名;〔注意:文本数据应符合的格式:字段数据之间用tab键隔开〕ASP(ActiveServerPage)ActiveServerPages(ASP)是效劳器端脚本编写环境,是由Server端脚本、对象以及组件拓展过的标准主页使用它可以创立和运行动态、交互的Web页和基于Web的功能强大的应用程序.ASP采用的工作模型是典型的B/S过程:〔1〕一个用户在浏览器的网址栏中添入ActiveServerPages文件名称,并回车触发这个ActiveServerPages的申请。〔2〕浏览器将这个ActiveServerPages的求发送给IIS〔3〕WebServer接收这个申请要求并由于其.asp的后缀意识到这是个ActiveServerPag的对象来实现效劳器与客户端间的交互;可扩充效劳器端功能.ASP与浏览器无关,ASP可以将运行结果一HTML的格式传送到客户端浏览器,因而可以使用于各种浏览器。2系统分析2.1可行性分析可行性分析是指在当前组织内外的具体条件下,系统开发工作必须具备资源和条件,看其是否满足系统目标的要求。在系统开发过程中进行可行性分析,对于保证资源的合理使用,防止浪费和一些不必要的失败,都是十分重要的。〔1〕目标和方案的可行性:如果采用人工操作的方式,不仅操作不方便,消耗人力、物力、财力,而且还容易出现错误。所以当前迫切需要一个计算机化的管理信息系统。有了这个系统,就能用较少的人力去管理完成较大的工作量,而各种管理的效率也会大大提高。开发这个系统,能更好地满足学校要求,使学校的各种信息管理实现无纸化,高效化。〔2〕技术方面的可行性:本系统是用ASP结合MySql数据库来开发的一个信息管理软件。ASP在数据库方面的特长显得尤为突出:适用于多种数据库结构,通过访问各种数据库通用组件,结合客户端能够创立出完美漂亮且高效的各种软件系统。〔3〕经济方面的可行性:系统结构采用当前流行的B/S结构,对客户的配置要求低,客户端只需要有浏览器可以上网就可以登录效劳器进行各种信息的管理。而效劳器端也不需要太高的配置,只要有可以运行asp程序的解释器,可以说整个系统是以最少的投入完成最好的功能,这就保证了系统的经济可行性。〔4〕管理方面的可行性:作为学校教务信息管理系统之一的选课系统,对它的管理也是很方便的,只需要先将系统配置运行起来,然后分配好系统的三个主要角色,就可以投入实际使用,作为系统使用者如管理员,教师和学生根本都是会知道如何进行电脑操作的。根据以上几方面的可行性分析,可以得出结论:学生网上选课系统的开发可行。2.2功能分析本系统的使用是面向大学院校,系统的使用对象包括系统管理员,教师和学生三种身份,系统管理员登录系统后可以管理学生的信息,管理教师的信息,管理每学期各个班级的必修课程信息,各个专业每个学期的选修课程信息,可以为这些课程进行排课;而教师用户登录系统后可以查询任意学生的信息,可以查询自己的授课信息,可以登记自己所教学生的成绩信息,可以修改自己的登录密码和个人信息;学生用户登录系统后可以查询任一学期自己的成绩信息,如果系统开放了选课功能,可以在指定的日期内登录系统后选修该学期的选修课,可以生成某个学期的课程上课信息表,可以修改自己的个人信息和登录密码。本系统一共有4个主模块〔身份验证|学生管理|教师管理|管理员管理〕,其中每个管理局部又包含了几个子模快,主要功能可概括为为浏览、查询、修改、添加。2.3系统程序流程图主界面主界面登录界面用户权限结束学生教师管理员登录验证操作YN图3-1系统程序流程图3系统总体设计3.1系统结构设计3.1.1主要功能本系统主要功能。〔1〕身份验证:通过登录才可进入选课系统,登录信息提交后检验登录者的身份是否合法,合法,那么转入对应的操作界面。在本系统中,只有三种身份:学生、教师、管理员。〔2〕信息浏览:信息浏览包括已选课程浏览、已发布课程信息浏览。已选课程浏览是为学生提供的查看自己已经选择的课程信息以及删除选择课程。已发布课程信息浏览用于各代课老师查询自己已经发布的课程信息,主要用于浏览、核对。〔3〕信息查询:信息查询包括教师个人信息查询、课程查询、选课查询。课程查询即查询该课程的相关介绍,包括课程内容、开课地点等内容。教师个人信息是查看及修改对应的老师个人信息。通过选课查询可以查看要选择的课程情况。〔4〕信息修改:信息修改包括密码的修改,学生信息的修改,教师信息的修改。〔5〕信息添加:信息添加包括学生选课、教师课程发布、管理员。学生选课即通过选择选修的课程,添加到学生已选课程中,完成选课任务。教师课程发布即教师添加新的课程信息,新信息发布后,学生可看到发布的信息。管理员添加学生、教师、课程的根本信息。3.1.2系统模块功能图学生网上选课系统学生网上选课系统登录功能学生管理功能教师管理功能管理员管理功能登录密码修改已选课程必修课程选修课程学生信息密码修改已发课程教师信息发布课程课程信息教师信息学生信息图3-2系统功能图3.2数据库设计根据系统功能设计的要求以及功能模块的划分,可以列出以下主要数据项和数据库,主要分为6个表:表Course、表Student、表Teacher、表Admin、表Selected、表Published表3.1课程信息表〔Course〕名称字段名称类别主键非空课程编码CIdintYesYes教师编号TIdvarcharNoNo课程名称CNamevarcharNoNo课程类别CTypevarcharNoNo供选学院CCollegevarcharNoNo供选专业CProfessionalvarcharNoNo学分CCreditvarcharNoNo最多人数CMaxvarcharNoNo上课地点CRoomvarcharNoNo课程介绍CIntroductiontextNoNo表3.2学生信息表〔Student〕名称字段名称类别主键非空学号SIdvarcharYesYes姓名SNamevarcharNoNo性别SSexcharNoNo所属学院SCollegevarcharNoNo所在专业SProfessionalvarcharNoNo班级SClassvarcharNoNo密码SKeyvarcharNoNo表3.3教师信息表〔Teacher〕名称字段名称类别主键非空身份证号TIdvarcharYesYes姓名TNamevarcharNoNo性别TSexcharNoNo所属学院TCollegevarcharNoNo所属专业TProfessionalvarcharNoNo密码TKeyvarcharNoNo表3.4管理员信息表〔Admin〕名称字段名称类别主键非空登录号AIdvarcharYesYes密码AKeyvarcharNoNo表3.5学生选课信息表〔Selected〕名称字段名称类别主键非空学号SIdvarcharNoNo课程编码CIdintNoNo表3.6教师发布课程信息表〔Published〕名称字段名称类别主键非空教师证件号TIdvarcharNoNo课程编码CIdintNoNo4系统详细设计4.1身份验证4.1.1登录功能在登录页面对应的地方输入用户名〔学号或身份证号或其它有效证件〕,密码;确认后登录。在提交后,首先通过学号\身份证号或其它有效证件对数据库中的Student/Teacher/Admin表进行检索,假设检索到的记录集为空,那么说明学号/身份证号或其它有效证件错误,从而转到相应的出错处理程序,假设记录集不为空,再进行密码判断,检查密码是否相等,不相等,作出错处理,相等那么转入学生\老师\管理员登录成功的操作页面,并将姓名,密码,学号\身份证号或其它有效证件以session对象保存起来。出错及系统提示如下:〔1〕学号或身份证号或其它有效证件错误,系统这时会提醒“没有该学生!〞或“没有该老师!〞或“没有该系统管理员!〞;〔2〕密码错误,系统提示“密码错误〞。4.1.2密码修改功能密码的修改的前提是用户成功登录,选择密码修改后,按照页面上的提示,在相应的文本框中输入新密码〔两次〕,确定后提交。转入执行的asp文件后,判断两次输入的新密码是否相等,假设不等,出错;否那么,用新密码代替旧密码,更新数据库表Student/Teacher中的“密码〞字段。本系统密码采用MD5加密。出错及系统提示:新密码两次输入不同,系统提示“两次输入密码不相符合〞。4.2学生信息管理功能4.2.1选课信息查询及选课登录成功后,点击菜单“选修课程〞,确定后进入浏览页面。进入页面后,可以对页面上表格内带链接的信息进行查询,例如点击“教师〞可查询教师信息。要选择课程,点击“选修该课程〞后,该课程就会出现在“已选课程〞的表格中。假设已选过该课程,系统提示“您已经选了该课程!〞。4.2.2必修课程信息查询点击菜单“必修课程〞,可看到学生所在专业所开设的必修课程。其中查询数据库所需要的参数是学生的专业信息传递来的。专业信息的获得是通过session(SId)对数据表Student查询得到的。进入页面后,可以对页面上表格内带链接的信息进行查询,例如点击“课程名称〞可查询课程信息。4.2.3已选课程信息查询点击菜单“已选课程〞,在选课信息浏览页面中可以查询已经选的课程。课程信息的查询是通过条件对数据表Course,表Selected,表Teacher等进行查询,将符合条件的信息列出。想要退选课程,点击“取消该课程〞按钮即可。4.2.4学生个人信息点击菜单“学生信息〞,进入选课信息浏览页面查询即可。学生信息的修改首先是通过条件对数据表Student进行查询,符合条件后在文本框中输入完整信息后进行覆盖写入,就可以进行信息修改。4.2.5密码修改点击菜单“学生信息〞,进入选课信息浏览页面。按照页面上的提示,在相应的文本框中输入新密码〔两次〕,确定后提交。转入执行的asp文件后,判断两次输入的新密码是否相等,假设不等,出错;否那么,用新密码代替旧密码,更新数据库表Student中的“SKey〞字段。出错及系统提示:新密码两次输入不同,系统提示“两次输入密码不相符合〞。4.3教师课程信息管理功能4.3.1课程信息发布登录成功后,点击菜单“发布课程〞,进入选课信息浏览页面。如果想要单独查看某专业该教师可发布课程,在查询条件“课程专业〞对应的文本框内输入查询信息〔不输入信息时,表中显示该教师可发布课程的所有课程信息〕,点击“查询〞按钮,即可查询。假设要发布课程,按要求输入完整信息〔课程名称与课程专业不能改变〕,点击“开设课程〞按钮。假设输入信息不完整,系统会提示“请输入……!〞;当发布的课程的记录已经存在时,系统提示“您已经发布了该课程!〞。当输入的课程名称或课程专业有误,系统提示“发布失败!〞。4.3.2对已发布信息查询对数据表Course,表Published等进行检索,将其中符合条件的信息全部输出;查询需要的参数是由session对象获得的身份证号来确定的,由这二者确定出的即是该老师所发布过的课程信息。想要取消发布课程,点击“取消发布课程〞按钮即可。4.3.3教师个人信息点击菜单“教师信息〞,进入选课信息浏览页面查询即可。教师信息的修改首先是通过条件对数据表Teacher进行查询,符合条件后在文本框中输入完整信息后进行覆盖写入,就可以进行信息修改。4.3.4密码修改点击菜单“教师信息〞,进入选课信息浏览页面。按照页面上的提示,在相应的文本框中输入新密码〔两次〕,确定后提交。转入执行的asp文件后,判断两次输入的新密码是否相等,假设不等,出错;否那么,用新密码代替旧密码,更新数据库表Teacher中的“TKey〞字段。出错及系统提示:新密码两次输入不同,系统提示“两次输入密码不相符合〞。4.4系统管理员信息管理功能4.4.1管理教师功能教师信息的添加、修改、删除、查询由管理员完成,教师无权使用。〔1〕添加:对数据表“Teacher〞进行添加操作,生成新记录。在管理员登录成功后,选择“教师信息〞即进入教师信息添加页面,输入要添加的教师身份证号、教师姓名等教师信息后〔初始密码admin〕,点击添加按钮即可。出错及系统提示:输入的教师的身份证号已存在,系统那么提示“添加失败,请检查教师证件号是否已经存在!〞。〔2〕修改:在管理员登录成功后,选择“教师信息〞即进入教师信息页面。对数据库中的表“Teacher〞查询,在网页相应的的地方显示所要的信息。列出教师信息表后,在表中查询要修改的教师身份证号后,点击“修改〞按钮,修改所要修改的教师的信息,点击“更新〞按钮,假设不修改,那么点击“取消〞按钮。〔3〕删除:在管理员登录成功后,选择“教师信息〞即进入教师信息页面。查询要删除的教师身份证号,点击“删除〞按钮进行删除。〔4〕查询:在教师信息页面,输入要查询专业,点击“查询〞按钮即可查询该专业的教师情况。4.4.2管理学生功能学生信息的添加、修改、删除、查询功能与管理教师信息根本相同,不再赘述。4.4.3管理课程功能课程信息的添加、修改、删除查询功能与管理教师信息根本相同,不再赘述。5设计过程中的问题及解决方法5.1数据库的连接MySQL与SQLserver的连接方式大致相同,当MySQL与VS连接时,需要组件mysql-connector-net,通过查找及实践,完成了数据库的建立和连接。如图5-1:图5-1mysql数据库的连接数据库连接操作类主要代码://数据库连接字符串privateconstStringconnString=@"Server=localhost;Database=ChooseCourse;Uid=root;Pwd=sa";//返回select得到的数据集publicstaticDataSetExecuteSelectSql(stringsqlSelect){MySqlConnectionconn=newMySqlConnection(connString);MySqlDataAdaptersda=newMySqlDataAdapter(sqlSelect,conn);DataSetds=newDataSet();try{sda.Fill(ds);}catch(MySqlExceptione){thrownewException(e.Message);}returnds;}//执行insert,update,delete等语句,返回改变的行数publicstaticintExecuteSql(stringsql){introws=-1;MySqlConnectionconn=newMySqlConnection(connString);MySqlCommandcmd=newMySqlCommand(sql,conn);try{conn.Open();rows=cmd.ExecuteNonQuery();}catch(MySqlExceptione){thrownewException(e.Message);}finally{cmd.Dispose();conn.Close();}returnrows;}5.2参数的传递在模块的建立时,很多时候发现功能不能正常运行,在检查完程序语句的结构之后,发现并没有错误,于是在检查页面与页面交互时发现了问题,很多地方传递的参数并没有真正的执行,还有些地方没有进行参数的设置,才导致了程序的错误。5.3公共数据由于一开始没有使用session对象,致使很多功能无法实现,在学习了session的相关内容后才解决了一些具体的问题,包括网页间的参数的传递,公共信息的保存及提取等。6系统的实现6.1登录模块6.1.1登录模块简介登录模块在本系统中用于区别学生、教师、管理员。出于保密性和方便管理等方面的考虑,不同身份在登录本系统后有不同权限。例如:学生登录系统后可查询及选课,教师登录系统后可发布课程。管理员登录系统后可添加教师、学生及课程信息。通过用户权限,选择正确身份,然后输入用户名〔学号或身份证号或其它有效证件〕、密码,登录信息提交后检验登录者的身份是否合法,合法,那么转入对应的操作界面。〔初始密码均为admin,管理员登录用户名admin〕操作操作主界面登录界面选择用户类型登录验证NY输入用户名+密码图6-1登录模块流程图6.1.2登录模块关键代码主要代码如下:protectedvoidbtnLogin_Click(objectsender,EventArgse){//登录代码inttype=Int32.Parse(ddlLogin.SelectedItem.Value);//用户类型选择分三种,用switch(type)来区分stringuser=txtUser.Text.Trim();//用户证件号,文本框内容赋值给userstringinputkey=txtKey.Text.Trim();//用户密码,文本框内容赋值给inputkeystringkey="";stringsql="";DataSetds;switch(type){//选择学生,即type值为1,执行case1;选择教师,即type值为2,执行case2;选择系统管理员,即type值为3,执行case3case1://验证学生身份代码sql="selectSKeyfromStudentwhereSIdlike'"+user+"'";//从表Student中查询学号SId为输入证件号"user"的学生密码ds=Db.ExecuteSelectSql(sql);//执行select类型的sql语句,返回select得到的数据集if(ds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0&&!ds.Tables[0].Rows[0].IsNull(0))//判断select得到的数据集是否为空,假设为空,执行else{key=ds.Tables[0].Rows[0][0].ToString();//将查询到的密码赋值给keyif(MyUtility.MD5(inputkey)==key)//输入密码经过MD5加密,并与key相比拟{//相等,便可成功登陆学生选课管理主页面Session["Id"]=user;//内置对象Session记录用户登录学号Session["Type"]=type;//内置对象Session记录用户登录类型Response.Redirect("StudentMain.aspx");//进入学生选课管理主页面}else//密码错误{Response.Redirect("Error.aspx?code="+ErrorInfo.ERR_KEYERROR.ToString());}//系统提示:密码错误}else//不存在该学生{Response.Redirect("Error.aspx?code="+ErrorInfo.ERR_NOSTUDENT.ToString());//系统提示:不存在该学生}break;case2://验证教师身份代码…//与验证学生身份代码类似break;case3://验证管理员身份代码…//与验证学生身份代码类似break;}}6.1.3登录模块截图图6-2登录页面图6-3学生登录错误页面6.2学生选课模块6.2.1学生选课模块简介学生选课模块是系统主要模块之一,主要用于学生的网上选课,不同专业学生通过登录选课系统,选择本专业的课程,完成选课任务。菜单:学生信息|必修课程|选修课程|已选课程,包括选课信息查询及选课、必修课程信息查询、已选课程信息查询、学生个人信息修改、密码修改等。6.2.2学生选课模块关键代码学生个人信息:protectedvoidPage_Load(objectsender,EventArgse){//显示学生信息代码if(!IsPostBack)//表示第一次访问页面时要执行的程序,有点像初始化页面,当你点击了当前页面的一些按钮后,将不会再执行这些程序{stringsql="select*fromStudentwhereSIdlike'"+Session["Id"].ToString()+"'";//从表Student查询学生的所有信息,条件是:学号SId为内置对象Session记录的用户登录学号DataSetds=Db.ExecuteSelectSql(sql);//执行select类型的sql语句,返回select得到的数据集if(ds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0)//判断select得到的数据集是否为空{lbSId.Text=Session["Id"].ToString();//将Session记录的用户登录学号在Label控件lbSId上显示出来txtSName.Text=ds.Tables[0].Rows[0]["SName"].ToString();//在TextBox控件txtSName中显示select得到的学生姓名if(ds.Tables[0].Rows[0]["SSex"].ToString()=="女")ddlSSex.SelectedIndex=0;elseddlSSex.SelectedIndex=1;//在DropDownList控件ddlSSex中显示select得到的学生性别txtSCollege.Text=ds.Tables[0].Rows[0]["SCollege"].ToString();//在TextBox控件txtSCollege中显示select得到的学生学院txtSProfessional.Text=ds.Tables[0].Rows[0]["SProfessional"].ToString();//在TextBox控件txtSProfessional中显示select得到的学生专业txtSClass.Text=ds.Tables[0].Rows[0]["SClass"].ToString();//在TextBox控件txtSClass中显示select得到的学生班级}}}密码修改:protectedvoidbtnUpdateKey_Click(objectsender,EventArgse){//密码修改代码if(txtKey.Text.Trim()!=txtKeyOk.Text.Trim())//判断输入的新密码与密码确认输入的密码是否相等,假设不相等,执行if语句;相等,不执行if语句{Response.Write(MyUtility.Alert("两次输入密码不相符合"));//系统提示:两次输入密码不相符合return;//返回密码修改页面}stringsql="updateStudentsetSKey='"+MyUtility.MD5(txtKey.Text.Trim())+"'whereSId='"+Session["Id"]+"'";//将表Studen中学号SId为内置对象Session记录的用户登录学号的学生密码更新为修改的密码if(Db.ExecuteSql(sql)==1)//判断执行update语句,改变的行数是否为1〔即表Studen中只有该登录学生的那一行密码信息改变〕,假设为1,那么修改成功;否那么,那么修改失败Response.Write(MyUtility.Alert("修改成功!"));elseResponse.Write(MyUtility.Alert("修改失败!"));}学生信息修改:protectedvoidbtnUpdateInfo_Click(objectsender,EventArgse){//学生信息修改代码stringsql="updateStudentsetSName='"+txtSName.Text.Trim()+"'"+",SSex='"+ddlSSex.SelectedItem.Text+"'"+",SCollege='"+txtSCollege.Text.Trim()+"'"+",SProfessional='"+txtSProfessional.Text.Trim()+"'"+",SClass='"+txtSClass.Text.Trim()+"'"+"whereSIdlike'"+Session["Id"].ToString()+"'";//将表Studen中学号SId为内置对象Session记录的用户登录学号的学生信息更新为修改后的信息if(Db.ExecuteSql(sql)==1)//判断执行update语句,改变的行数是否为1〔即表Studen中只有该登录学生的那一行信息改变〕,假设为1,那么修改成功;否那么,那么修改失败Response.Write(MyUtility.Alert("修改成功!"));elseResponse.Write(MyUtility.Alert("修改失败!"));}选课:protectedvoidPage_Load(objectsender,EventArgse){//可选课程显示代码if(!IsPostBack){stringsql="selectCourse.CId,Course.CName,Course.CProfessional,Teacher.TName,Teacher.TId,Course.CCredit,Course.CMax,Course.CRoomfromTeacherinnerjoinCourseonTeacher.TId=Course.TIdinnerjoinPublishedonCourse.CId=Published.CIdinnerjoinStudentonStudent.SProfessional=Course.CProfessionalwhereCTypelike'选修'andStudent.SId='"+Session["Id"]+"'";//从表Teacher、表Course中查询要在GridView控件表格中显示的内容,要求课程类型CType为选修,课程编号CId为教师已发布课程表Published中已存在课程编号,教师编号TId为课程信息表Course中已存在的教师编号,课程专业Cprofessional为Session记录的用户登录学号的学生的专业〔即GridView控件表格中显示的内容为教师已发布的本专业的选修课程〕DataSetds=Db.ExecuteSelectSql(sql);if(ds!=null&&ds.Tables.Count>0){gvXxCourse.DataSource=ds.Tables[0];gvXxCourse.DataBind();//将查询结果绑定到GridView控件gvXxCourse〔选修课程表〕中for(inti=0;i<ds.Tables[0].Rows.Count;i++)//循环条件:查询所得的表〔选修课程表〕的数据总行数{sql="selectcount(*)fromSelectedwhereCId="+ds.Tables[0].Rows[i]["CId"].ToString();//查询表Selected中的记录数,条件:课程编号CId等于GridView控件gvXxCourse中第i+1行的课程编号DataSetds1=Db.ExecuteSelectSql(sql);if(ds1!=null&&ds1.Tables.Count>0&&ds1.Tables[0].Rows.Count>0){gvXxCourse.Rows[i].Cells[6].Text=ds1.Tables[0].Rows[0][0].ToString();//将从表Selected中返回的记录数〔即已选该课程人数〕在gvXxCourse中第i+1行、第7列〔即已选人数那一列〕显示}}}}}protectedvoidgvXxCourse_RowCommand(objectsender,GridViewCommandEventArgse){//判断是否已选课代码if(e.CommandName=="Select")//控件的CommandName属性{gvXxCourse.DataKeyNames=newstring[]{"CId"};//主键intindex=Convert.ToInt32(e.CommandArgument);stringcid=gvXxCourse.DataKeys[index].Values[0].ToString();//获取要选择的课程的课程编号cidstringsql="select*fromSelectedwhereCId="+cid+"andSIdlike'"+Session["Id"].ToString()+"'";//从表Selected中查询登录学生的学号及选择的课程的课程编号Db.ExecuteSelectSql(sql);DataSetds=Db.ExecuteSelectSql(sql);boolflag=false;//选修课程判断标志if(ds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0)flag=true;if(flag)//已选修过{Response.Write(MyUtility.Alert("您已经选了该课程了!"));return;}else//未选修过{SelectCourse(Int32.Parse(cid));//选课}}}privatevoidSelectCourse(intcid){//选课代码intmax=0,current=0;stringsql="selectCMaxfromCoursewhereCId="+cid;//查询所选课程允许的最大人数DataSetds=Db.ExecuteSelectSql(sql);if(ds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0){max=Int32.Parse(ds.Tables[0].Rows[0][0].ToString());//最大人数赋值给max}elsereturn;sql="selectcount(*)fromSelectedwhereCId="+cid;//查询表Selected中所选择课程的课程编号的记录数〔即已选该课程人数〕DataSetds1=Db.ExecuteSelectSql(sql);if(ds1!=null&&ds1.Tables.Count>0&&ds1.Tables[0].Rows.Count>0){current=Int32.Parse(ds1.Tables[0].Rows[0][0].ToString());//将记录数赋值给current}elsereturn;if(current>max)//判断已选该课程人数是否超出允许的最大人数{//超出Response.Write(MyUtility.Alert("人数已满!"));return;}sql="insertintoSelectedvalues('"+Session["Id"].ToString()+"',"+cid+")";//符合条件,将登录学生学号及所选课程插入表Selected中if(Db.ExecuteSql(sql)==1)//判断执行insert语句,改变的行数是否为1〔即表Selected中只有该登录学生的所选的课程的课程编号那一行信息改变〕,假设为1,那么选课成功;否那么,那么选课失败{Response.Write(MyUtility.Alert("选课成功"));sql="selectcount(*)fromSelectedwhereCId="+cid;DataSetds2=Db.ExecuteSelectSql(sql);if(ds2!=null&&ds2.Tables.Count>0&&ds2.Tables[0].Rows.Count>0)gvXxCourse.Rows[index].Cells[6].Text=ds2.Tables[0].Rows[0][0].ToString();//更新已选人数}elseResponse.Write(MyUtility.Alert("选课失败"));}6.2.3学生选课模块截图图6-4学生信息修改页面图6-5选课页面图6-6课程信息查询页面6.3教师课程管理模块6.3.1教师课程管理模块简介教师课程管理模块主要用于教师发布新的课程信息,新信息发布后,不同专业的学生可看到发布的关于本专业的课程信息。菜单:教师信息|发布课程|已发课程,包括课程信息发布、对已发布信息查询、教师个人信息、密码修改等。6.3.2教师课程管理模块关键代码开设课程:protectedvoidPage_Load(objectsender,EventArgse){//在此处放置用户代码以初始化页面,显示登录教师可以发布的课程if(!IsPostBack){stringsql="select*fromCoursewhereTIdlike'"+Session["Id"].ToString()+"'orTIdlike'0'";//从表Course中查询教师证件号TId为登录教师证件号或为'0'(管理员设置的教师证件号初始值,表示没有教师发布该课程)的所有信息DataSetds=Db.ExecuteSelectSql(sql);if(ds!=null&&ds.Tables.Count>0){gvNewCourse.DataSource=ds.Tables[0];gvNewCourse.DataBind();}//课程类别分为选修和必修ddlCType.Items.Clear();ddlCType.Items.Add("请选择");ddlCType.Items.Add("必修");ddlCType.Items.Add("选修");ddlCType.SelectedIndex=0;//课程学分从1-6共分为12种ddlCCredit.Items.Clear();ddlCCredit.Items.Add("请选择");ddlCCredit.Items.Add("1");ddlCCredit.Items.Add("1.5");…ddlCCredit.Items.Add("6");ddlCType.SelectedIndex=0;//课程最大人数分为4种:50、100、150、200ddlCMax.Items.Clear();ddlCMax.Items.Add("请选择");ddlCMax.Items.Add("50");…ddlCMax.Items.Add("200");ddlCMax.SelectedIndex=0;}}protectedvoidbtnAddCourse_Click(objectsender,EventArgse){//发布课程代码if(txtCName.Text.Trim()==""){Response.Write(MyUtility.Alert("请输入课程名称!"));return;}…if(ddlCMax.SelectedIndex<=0){Response.Write(MyUtility.Alert("请选择课程最大人数!"));return;}stringsql="selectPublished.CIdfromPublishedinnerjoinCourseonPublished.CId=Course.CIdwherePublished.TIdlike'"+Session["Id"].ToString()+"'andCNamelike'"+txtCName.Text.Trim()+"'andCProfessionallike'"+txtCProfessional.Text.Trim()+"'";//按输入的课程名称、课程专业及登录教师号查询表Published中课程编号,看是否已存在Db.ExecuteSelectSql(sql);DataSetds=Db.ExecuteSelectSql(sql);boolflag=false;//发布课程判断标志if(ds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0){flag=true;//表Published中已存在该发布课程,true赋给flag}if(flag)//是否已经发布过了{//已经发布过了Response.Write(MyUtility.Alert("您已经发布了该课程!"));return;}else{//未发布stringsql1="updateCoursesetTId='"+Session["Id"].ToString()+"'"+",CType='"+ddlCType.SelectedItem.Text+"'"+",CProfessional='"+txtCProfessional.Text.Trim()+"'"+",CCredit='"+ddlCCredit.SelectedItem.Text+"'"+",CMax='"+ddlCMax.SelectedItem.Text+"'"+",CIntroduction='"+MyUtility.Encode(txtCIntroduction.Text)+"'"+"where(TIdlike'"+Session["Id"].ToString()+"'orTIdlike'0')andCNamelike'"+txtCName.Text.Trim()+"'andCProfessionallike'"+txtCProfessional.Text.Trim()+"'";//所发布课程的课程名称CName及课程专业CProfessional不变,教师证件号更新为Session记录的登录教师证件号,其余按发布内容在表Course中更新DataSetds1=Db.ExecuteSelectSql(sql1);…//数据绑定到GridView中stringsql2="insertintoPublished(TId,CId)selectTId,CIdfromCoursewhereTIdlike'"+Session["Id"].ToString()+"'andCNamelike'"+txtCName.Text.Trim()+"'andCProfessionallike'"+txtCProfessional.Text.Trim()+"'";//将登录教师证件号TId及所发布课程的课程编号CId插入表Publishedif(Db.ExecuteSql(sql2)==1){Response.Write(MyUtility.Alert("发课成功"));return;}else{Response.Write(MyUtility.Alert("发课失败"));return;}}}protectedvoidbtntview_Click(objectsender,EventArgse){//教师通过输入搜索条件“课程专业“来查询该专业该教师可发布课程if(txtViewCProfessional.Text.Trim()!="")//判断搜索条件是否为空{//不为空,按所输入专业显示课表stringsql="select*fromCoursewhere(TIdlike'"+Session["Id"].ToString()+"'orTIdlike'0')andCProfessionallike'"+txtViewCProfessional.Text.Trim()+"'";…//数据绑定到GridView中}else{//为空,显示教师可发布的所有课程stringsql="select*fromCoursewhereTIdlike'"+Session["Id"].ToString()+"'orTIdlike'0'";…//数据绑定到GridView中}6.3.3教师课程管理模块截图图6-7教师信息修改页面图6-8课程发布页面图6-9已发布课程页面6.4系统管理员管理模块6.4.1系统管理员管理模块简介系统管理模块主要用于学生、教师及课程信息的查询〔按专业〕、添加、修改、删除等。菜单:教师信息|学生信息|课程信息,包括管理教师功能、管理学生功能、管理课程功能等。6.4.2系统管理员管理模块关键代码添加学生〔教师、课程与之类似〕:protectedvoidPage_Load(objectsender,EventArgse){//在此处放置用户代码以初始化页面,从表Student查询信息并绑定到GridView中if(!IsPostBack){stringsql="select*fromStudent";DataSetds=Db.ExecuteSelectSql(sql);…//数据绑定到GridView中}}protectedvoidbtnAddStudent_Click(objectsender,EventArgse){//添加学生代码if(txtSId.Text.Trim()==""){Response.Write(MyUtility.Alert("请输入学生学号!"));return;}…if(txtSKey.Text.Trim()==""){Response.Write(MyUtility.Alert("请输入初始密码!"));return;}stringsql="insertintoStudent(SId,SName,SSex,SCollege,SProfessional,SClass,SKey)values('"+txtSId.Text.Trim()+"','"+txtSName.Text.Trim()+"','"+txtSSex.Text.Trim()+"','"+txtSCollege.Text.Trim()+"','"+txtSProfessional.Text.Trim()+"','"+txtSClass.Text.Trim()+"','"+MyUtility.MD5(txtSKey.Text.Trim())+"')";//向表Student添加学生try//捕捉异常:学生是否已存在{if(Db.ExecuteSql(sql)==1)//该学生不存在{sql="select*fromStudent";DataSetds=Db.ExecuteSelectSql(sql);if(ds!=null&&ds.Tables.Count>0){gvStudentIn.DataSource=ds.Tables[0];gvStudentIn.DataBind();}}else//该学生已存在{Response.Write(MyUtility.Alert("添加失败,请检查学号是否已经存在!"));return;}}catch//学生已存在异常{Response.Write(MyUtility.Alert("添加失败,请检查学号是否已经存在!"));return;}}GridView控件中的分页、编辑〔更新及取消〕、删除操作:protectedvoidDataBind()//数据绑定{//管理员通过输入搜索条件“学生专业“来查询该专业的学生if(txtViewSProfessional.Text.Trim()!=""){//输入搜索条件不为空,按专业显示学生stringsql="select*fromStudentwhereSProfessionallike'"+txtViewSProfessional.Text.Trim()+"'";DataSetds=Db.ExecuteSelectSql(sql);

温馨提示

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

评论

0/150

提交评论