《学生网上选课系统的设计与实现(共34页).docx》由会员分享,可在线阅读,更多相关《学生网上选课系统的设计与实现(共34页).docx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上基于ASP.net的学生网上选课系统的设计与实现摘要:随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。针对学生选课这一环节,本系统从学生网上自主选课以及教师的课程发布两个大方面进行了设计,基本实现了学生的在线信息查询、选课功能以及教师对课程信息发布的管理等功能。本程序由SQL Server数据库支持,通过使用ASP语言实现。本文对学生网上选课系统进行了系统分析,详细讲述了系统功能,并对数据库设计等方面加以说明。关键词:选课;课程信息发布;MySQL;ASP 1绪论1.1课题背景随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋繁
2、重、复杂。如何把教务工作信息化,模块化,便捷化是现代大学发展的重点,所以迫切需要研制开发一种综合教务管理软件。在数字校园理论逐步应用的过程中,各校一方面不断投资购建各种硬件、系统软件和网络,另一方面也不断开发实施了各类教学、科研、办公管理等应用系统,形成了一定规模的信息化建设体系。但是,由于整体信息化程度相对落后,经费短缺,理论体系不健全等原因,国内各校教务管理系统在机构设置、服务范围、服务质量及人员要求上与国外高校相比都有一定的差距。目前国家的教育体制也正处在不断改革、创新的阶段,教育部门充分吸取国外优秀的教学模式,结合国内多年的办学经验,逐步探索出适合中国特色的教学形式,国家教育部面向各级
3、各类学校开展了全面学分制改革。随着无纸化办公的一步步实现,信息的自动处理以及网络式的信息交互方式越来越被人们认可和应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,同时,随着学生选课自主权的增加,网上选课有效的避免了“走关系”等不良现象,使教学更加透明,为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的基础。1.2所用软件的基本知识1.2.1MySQLMySQL有关数据库方面的操作。注意:必须首先登录到mysql中,以下操作都是在mysql的提示符下进行的,而且每个命令以分号结束。操作技巧
4、:如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。基本命令:列出数据库show databases;选择数据库use 库名;列出表格show tables;显示数据表的结构describe 表名;建库create database 库名;建表use 库名;create table 表名(字段设定列表);删库和删表drop database 库名;drop table 表名;将表中记录清空delete from 表名;显示表中的记录select * from 表名;将文本数据转到数据库中l
5、oad data local infile 文件名 into table 表名;(注意:文本数据应符合的格式:字段数据之间用tab键隔开)1.2.2ASP(Active Server Page)Active Server Pages (ASP) 是服务器端脚本编写环境,是由Server端脚本、对象以及组件拓展过的标准主页使用它可以创建和运行动态、交互的Web 页和基于 Web 的功能强大的应用程序ASP采用的工作模型是典型的B/S过程:()一个用户在浏览器的网址栏中添入Active Server Pages文件名称,并回车触发这个Active Server Pages的申请。()浏览器将这个A
6、ctive Server Pages的求发送给IIS()Web Server接收这个申请要求并由于其asp的后缀意识到这是个Active Server Pag的对象来实现服务器与客户端间的交互;可扩充服务器端功能ASP与浏览器无关,ASP可以将运行结果一HTML的格式传送到客户端浏览器,因而可以使用于各种浏览器。2系统分析2.1可行性分析可行性分析是指在当前组织内外的具体条件下,系统开发工作必须具备资源和条件,看其是否满足系统目标的要求。在系统开发过程中进行可行性分析,对于保证资源的合理使用,避免浪费和一些不必要的失败,都是十分重要的。()目标和方案的可行性:如果采用人工操作的方式,不仅操作不
7、方便,耗费人力、物力、财力,而且还容易出现错误。所以当前迫切需要一个计算机化的管理信息系统。有了这个系统,就能用较少的人力去管理完成较大的工作量,而各种管理的效率也会大大提高。开发这个系统,能更好地满足学校要求,使学校的各种信息管理实现无纸化,高效化。()技术方面的可行性:本系统是用ASP结合MySql数据库来开发的一个信息管理软件。ASP在数据库方面的特长显得尤为突出:适用于多种数据库结构,通过访问各种数据库通用组件,结合客户端能够创建出完美漂亮且高效的各种软件系统。()经济方面的可行性:系统结构采用当前流行的B/S结构,对客户的配置要求低,客户端只需要有浏览器可以上网就可以登录服务器进行各
8、种信息的管理。而服务器端也不需要太高的配置,只要有可以运行asp程序的解释器,可以说整个系统是以最少的投入完成最好的功能,这就保证了系统的经济可行性。()管理方面的可行性:作为学校教务信息管理系统之一的选课系统,对它的管理也是很方便的,只需要先将系统配置运行起来,然后分配好系统的三个主要角色,就可以投入实际使用,作为系统使用者如管理员,教师和学生基本都是会知道如何进行电脑操作的。根据以上几方面的可行性分析,可以得出结论:学生网上选课系统的开发可行。2.2功能分析本系统的使用是面向大学院校,系统的使用对象包括系统管理员,教师和学生三种身份,系统管理员登录系统后可以管理学生的信息,管理教师的信息,
9、管理每学期各个班级的必修课程信息,各个专业每个学期的选修课程信息,可以为这些课程进行排课;而教师用户登录系统后可以查询任意学生的信息,可以查询自己的授课信息,可以登记自己所教学生的成绩信息,可以修改自己的登录密码和个人信息;学生用户登录系统后可以查询任一学期自己的成绩信息,如果系统开放了选课功能,可以在指定的日期内登录系统后选修该学期的选修课,可以生成某个学期的课程上课信息表,可以修改自己的个人信息和登录密码。本系统一共有4个主模块(身份验证学生管理教师管理管理员管理),其中每个管理部分又包含了几个子模快,主要功能可概括为为浏览、查询、修改、添加。2.3系统程序流程图主界面登录界面用户权限结束
10、学生教师管理员登录验证操作图31系统程序流程图3系统总体设计3.1系统结构设计3.1.1主要功能本系统主要功能。()身份验证:通过登录才可进入选课系统,登录信息提交后检验登录者的身份是否合法,合法,则转入对应的操作界面。在本系统中,只有三种身份:学生、教师、管理员。()信息浏览:信息浏览包括已选课程浏览、已发布课程信息浏览。已选课程浏览是为学生提供的查看自己已经选择的课程信息以及删除选择课程。已发布课程信息浏览用于各代课老师查询自己已经发布的课程信息,主要用于浏览、核对。()信息查询:信息查询包括教师个人信息查询、课程查询、选课查询。课程查询即查询该课程的相关介绍,包括课程内容、开课地点等内容
11、。教师个人信息是查看及修改对应的老师个人信息。通过选课查询可以查看要选择的课程情况。()信息修改:信息修改包括密码的修改,学生信息的修改,教师信息的修改。(5)信息添加:信息添加包括学生选课、教师课程发布、管理员。学生选课即通过选择选修的课程,添加到学生已选课程中,完成选课任务。教师课程发布即教师添加新的课程信息,新信息发布后,学生可看到发布的信息。管理员添加学生、教师、课程的基本信息。3.1.2系统模块功能图学生网上选课系统登录功能学生管理功能教师管理功能管理员管理功能登录密码修改已选课程必修课程选修课程学生信息密码修改已发课程教师信息发布课程课程信息教师信息学生信息图32系统功能图3.2数
12、据库设计根据系统功能设计的要求以及功能模块的划分,可以列出以下主要数据项和数据库,主要分为6个表:表Course、表Student、表Teacher、表Admin、表Selected、表Published表3.1 课程信息表(Course)名称字段名称类别主键非空课程编码CIdintYesYes教师编号TIdvarcharNoNo课程名称CNamevarcharNoNo课程类别CTypevarcharNoNo供选学院CCollegevarcharNoNo供选专业CProfessionalvarcharNoNo学分CCreditvarcharNoNo最多人数CMaxvarcharNoNo上课地点
13、CRoomvarcharNoNo课程介绍CIntroductiontextNoNo表3.2 学生信息表(Student)名称字段名称类别主键非空学号SIdvarcharYesYes姓名SNamevarcharNoNo性别SSexcharNoNo所属学院SCollegevarcharNoNo所在专业SProfessionalvarcharNoNo班级SClassvarcharNoNo密码SKeyvarcharNoNo表3.3 教师信息表(Teacher)名称字段名称类别主键非空身份证号TIdvarcharYesYes姓名TNamevarcharNoNo性别TSexcharNoNo所属学院TCol
14、legevarcharNoNo所属专业TProfessionalvarcharNoNo密码TKeyvarcharNoNo表3.4 管理员信息表(Admin)名称字段名称类别主键非空登录号AIdvarcharYesYes密码AKeyvarcharNoNo表3.5 学生选课信息表(Selected)名称字段名称类别主键非空学号SIdvarcharNoNo课程编码CIdintNoNo表3.6 教师发布课程信息表(Published)名称字段名称类别主键非空教师证件号TIdvarcharNoNo课程编码CIdintNoNo4系统详细设计4.1身份验证4.1.1登录功能在登录页面对应的地方输入用户名(学
15、号或身份证号或其它有效证件),密码;确认后登录。在提交后,首先通过学号身份证号或其它有效证件对数据库中的Student/Teacher/Admin表进行检索,若检索到的记录集为空,则说明学号/身份证号或其它有效证件错误,从而转到相应的出错处理程序,若记录集不为空,再进行密码判断,检查密码是否相等,不相等,作出错处理,相等则转入学生老师管理员登录成功的操作页面,并将姓名,密码,学号身份证号或其它有效证件以session对象保存起来。出错及系统提示如下:()学号或身份证号或其它有效证件错误,系统这时会提醒“没有该学生!”或“没有该老师!”或“没有该系统管理员!”;()密码错误,系统提示“密码错误”
16、。4.1.2密码修改功能密码的修改的前提是用户成功登录,选择密码修改后,按照页面上的提示,在相应的文本框中输入新密码(两次),确定后提交。转入执行的asp文件后,判断两次输入的新密码是否相等,若不等,出错;否则,用新密码代替旧密码,更新数据库表Student/Teacher中的“密码”字段。本系统密码采用MD5加密。出错及系统提示:新密码两次输入不同,系统提示“两次输入密码不相符合”。4.2学生信息管理功能4.2.1选课信息查询及选课登录成功后,点击菜单“选修课程”,确定后进入浏览页面。进入页面后,可以对页面上表格内带链接的信息进行查询,例如点击“教师”可查询教师信息。要选择课程,点击“选修该
17、课程”后,该课程就会出现在“已选课程”的表格中。若已选过该课程,系统提示“您已经选了该课程!”。4.2.2必修课程信息查询点击菜单“必修课程”,可看到学生所在专业所开设的必修课程。其中查询数据库所需要的参数是学生的专业信息传递来的。专业信息的获得是通过session(SId)对数据表Student查询得到的。进入页面后,可以对页面上表格内带链接的信息进行查询,例如点击“课程名称”可查询课程信息。4.2.3已选课程信息查询点击菜单“已选课程”,在选课信息浏览页面中可以查询已经选的课程。课程信息的查询是通过条件对数据表Course,表Selected,表Teacher等进行查询,将符合条件的信息列
18、出。想要退选课程,点击“取消该课程”按钮即可。4.2.4学生个人信息点击菜单“学生信息”,进入选课信息浏览页面查询即可。学生信息的修改首先是通过条件对数据表Student进行查询,符合条件后在文本框中输入完整信息后进行覆盖写入,就可以进行信息修改。4.2.5密码修改点击菜单“学生信息”,进入选课信息浏览页面。按照页面上的提示,在相应的文本框中输入新密码(两次),确定后提交。转入执行的asp文件后,判断两次输入的新密码是否相等,若不等,出错;否则,用新密码代替旧密码,更新数据库表Student中的“SKey”字段。出错及系统提示:新密码两次输入不同,系统提示“两次输入密码不相符合”。4.3教师课
19、程信息管理功能4.3.1课程信息发布登录成功后,点击菜单“发布课程”,进入选课信息浏览页面。如果想要单独查看某专业该教师可发布课程,在查询条件“课程专业”对应的文本框内输入查询信息(不输入信息时,表中显示该教师可发布课程的所有课程信息),点击“查询”按钮,即可查询。若要发布课程,按要求输入完整信息(课程名称与课程专业不能改变),点击“开设课程”按钮。若输入信息不完整,系统会提示“请输入!”;当发布的课程的记录已经存在时,系统提示“您已经发布了该课程!”。当输入的课程名称或课程专业有误,系统提示“发布失败!”。4.3.2对已发布信息查询对数据表Course,表Published等进行检索,将其中
20、符合条件的信息全部输出;查询需要的参数是由session对象获得的身份证号来确定的,由这二者确定出的即是该老师所发布过的课程信息。想要取消发布课程,点击“取消发布课程”按钮即可。4.3.3教师个人信息点击菜单“教师信息”,进入选课信息浏览页面查询即可。教师信息的修改首先是通过条件对数据表Teacher进行查询,符合条件后在文本框中输入完整信息后进行覆盖写入,就可以进行信息修改。4.3.4密码修改点击菜单“教师信息”,进入选课信息浏览页面。按照页面上的提示,在相应的文本框中输入新密码(两次),确定后提交。转入执行的asp文件后,判断两次输入的新密码是否相等,若不等,出错;否则,用新密码代替旧密码
21、,更新数据库表Teacher中的“TKey”字段。出错及系统提示:新密码两次输入不同,系统提示“两次输入密码不相符合”。4.4系统管理员信息管理功能4.4.1管理教师功能教师信息的添加、修改、删除、查询由管理员完成,教师无权使用。()添加:对数据表“Teacher”进行添加操作,生成新记录。在管理员登录成功后,选择“教师信息”即进入教师信息添加页面,输入要添加的教师身份证号、教师姓名等教师信息后(初始密码admin),点击添加按钮即可。出错及系统提示:输入的教师的身份证号已存在,系统则提示“添加失败,请检查教师证件号是否已经存在!”。()修改:在管理员登录成功后,选择“教师信息”即进入教师信息
22、页面。对数据库中的表“Teacher”查询,在网页相应的的地方显示所要的信息。列出教师信息表后,在表中查询要修改的教师身份证号后,点击“修改”按钮,修改所要修改的教师的信息,点击“更新”按钮,若不修改,则点击“取消”按钮。()删除:在管理员登录成功后,选择“教师信息”即进入教师信息页面。查询要删除的教师身份证号,点击“删除”按钮进行删除。()查询:在教师信息页面,输入要查询专业,点击“查询”按钮即可查询该专业的教师情况。4.4.2管理学生功能学生信息的添加、修改、删除、查询功能与管理教师信息基本相同,不再赘述。4.4.3管理课程功能课程信息的添加、修改、删除查询功能与管理教师信息基本相同,不再
23、赘述。5设计过程中的问题及解决方法5.1数据库的连接MySQL与SQL server的连接方式大致相同,当MySQL与VS连接时,需要组件mysql-connector-net,通过查找及实践,完成了数据库的建立和连接。如图51:图51 mysql数据库的连接数据库连接操作类主要代码:/数据库连接字符串private const String connString =Server=localhost;Database=ChooseCourse;Uid=root;Pwd=sa;/返回select得到的数据集public static DataSet ExecuteSelectSql( strin
24、g sqlSelect ) MySqlConnection conn = new MySqlConnection(connString); MySqlDataAdapter sda = new MySqlDataAdapter(sqlSelect,conn); DataSet ds = new DataSet(); try sda.Fill(ds); catch(MySqlException e) throw new Exception(e.Message); return ds; /执行insert,update,delete等语句,返回改变的行数public static int Exec
25、uteSql( string sql ) int rows = -1; MySqlConnection conn = new MySqlConnection(connString); MySqlCommand cmd = new MySqlCommand(sql,conn); try conn.Open(); rows = cmd.ExecuteNonQuery(); catch(MySqlException e) throw new Exception(e.Message); finally cmd.Dispose(); conn.Close(); return rows; 5.2参数的传递
26、在模块的建立时,很多时候发现功能不能正常运行,在检查完程序语句的结构之后,发现并没有错误,于是在检查页面与页面交互时发现了问题,很多地方传递的参数并没有真正的执行,还有些地方没有进行参数的设置,才导致了程序的错误。5.3公共数据由于一开始没有使用session对象,致使很多功能无法实现,在学习了session的相关内容后才解决了一些具体的问题,包括网页间的参数的传递,公共信息的保存及提取等。6系统的实现6.1登录模块6.1.1登录模块简介登录模块在本系统中用于区别学生、教师、管理员。出于保密性和方便管理等方面的考虑,不同身份在登录本系统后有不同权限。例如:学生登录系统后可查询及选课,教师登录系
27、统后可发布课程。管理员登录系统后可添加教师、学生及课程信息。通过用户权限,选择正确身份,然后输入用户名(学号或身份证号或其它有效证件)、密码,登录信息提交后检验登录者的身份是否合法,合法,则转入对应的操作界面。(初始密码均为admin,管理员登录用户名admin)操作主界面登录界面选择用户类型登录验证NY输入用户名密码图61 登录模块流程图6.1.2登录模块关键代码主要代码如下:protected void btnLogin_Click(object sender, EventArgs e) / 登录代码 int type = Int32.Parse(ddlLogin.SelectedItem
28、.Value);/用户类型选择分三种,用switch (type)来区分 string user = txtUser.Text.Trim();/用户证件号,文本框内容赋值给user string inputkey = txtKey.Text.Trim();/用户密码,文本框内容赋值给inputkey string key = ; string sql = ; DataSet ds; switch (type) /选择学生,即type值为1,执行case 1;选择教师,即type值为2,执行case 2;选择系统管理员,即type值为3,执行case 3 case 1:/ 验证学生身份代码 sq
29、l = select SKey from Student where SId like + user + ;/从表Student中查询学号SId为输入证件号user的学生密码 ds = Db.ExecuteSelectSql(sql);/ 执行select类型的sql语句,返回select得到的数据集 if (ds != null & ds.Tables.Count 0 & ds.Tables0.Rows.Count 0 & !ds.Tables0.Rows0.IsNull(0)/判断select得到的数据集是否为空,若为空,执行else key = ds.Tables0.Rows00.ToS
30、tring();/将查询到的密码赋值给keyif (MyUtility.MD5(inputkey) = key)/输入密码经过MD5加密,并与key相比较 /相等,便可成功登陆学生选课管理主页面 SessionId = user;/ 内置对象Session记录用户登录学号 SessionType = type; / 内置对象Session记录用户登录类型 Response.Redirect(StudentMain.aspx);/进入学生选课管理主页面 else/密码错误 Response.Redirect(Error.aspx?code= + ErrorInfo.ERR_KEYERROR.To
31、String();/系统提示:密码错误 else/不存在该学生 Response.Redirect(Error.aspx?code= + ErrorInfo.ERR_NOSTUDENT.ToString();/系统提示:不存在该学生 break; case 2:/ 验证教师身份代码 /与验证学生身份代码类似 break; case 3:/ 验证管理员身份代码 /与验证学生身份代码类似 break; 6.1.3登录模块截图图62 登录页面图63 学生登录错误页面6.2学生选课模块6.2.1学生选课模块简介学生选课模块是系统主要模块之一,主要用于学生的网上选课,不同专业学生通过登录选课系统,选择本
32、专业的课程,完成选课任务。菜单:学生信息|必修课程|选修课程|已选课程,包括选课信息查询及选课、必修课程信息查询、已选课程信息查询、学生个人信息修改、密码修改等。6.2.2学生选课模块关键代码学生个人信息:protected void Page_Load(object sender, EventArgs e) / 显示学生信息代码 if (!IsPostBack) /表示第一次访问页面时要执行的程序,有点像初始化页面,当你点击了当前页面的一些按钮后,将不会再执行这些程序 string sql = select * from Student where SId like + SessionId.
33、ToString() + ;/从表Student查询学生的所有信息,条件是:学号SId为内置对象Session记录的用户登录学号 DataSet ds = Db.ExecuteSelectSql(sql); / 执行select类型的sql语句,返回select得到的数据集 if (ds != null & ds.Tables.Count 0 & ds.Tables0.Rows.Count 0)/判断select得到的数据集是否为空 lbSId.Text = SessionId.ToString();/将Session记录的用户登录学号在Label控件lbSId上显示出来 txtSName.T
34、ext = ds.Tables0.Rows0SName.ToString();/在TextBox控件txtSName中显示select得到的学生姓名 if (ds.Tables0.Rows0SSex.ToString() = 女) ddlSSex.SelectedIndex = 0; else ddlSSex.SelectedIndex = 1; /在DropDownList控件ddlSSex中显示select得到的学生性别 txtSCollege.Text = ds.Tables0.Rows0SCollege.ToString();/在TextBox控件txtSCollege中显示selec
35、t得到的学生学院 txtSProfessional.Text = ds.Tables0.Rows0SProfessional.ToString();/在TextBox控件txtSProfessional中显示select得到的学生专业 txtSClass.Text = ds.Tables0.Rows0SClass.ToString();/在TextBox控件txtSClass中显示select得到的学生班级 密码修改: protected void btnUpdateKey_Click(object sender, EventArgs e) /密码修改代码 if (txtKey.Text.Tr
36、im() != txtKeyOk.Text.Trim()/判断输入的新密码与密码确认输入的密码是否相等,若不相等,执行if语句;相等,不执行if语句 Response.Write(MyUtility.Alert(两次输入密码不相符合);/系统提示:两次输入密码不相符合 return; /返回密码修改页面 string sql = update Student set SKey = + MyUtility.MD5(txtKey.Text.Trim() + where SId = + SessionId + ;/将表Studen中学号SId为内置对象Session记录的用户登录学号的学生密码更新为
37、修改的密码 if (Db.ExecuteSql(sql) = 1) /判断执行update语句,改变的行数是否为1(即表Studen中只有该登录学生的那一行密码信息改变),若为1,则修改成功;否则,则修改失败 Response.Write(MyUtility.Alert(修改成功!); else Response.Write(MyUtility.Alert(修改失败!); 学生信息修改: protected void btnUpdateInfo_Click(object sender, EventArgs e) /学生信息修改代码 string sql = update Student set
38、 SName = + txtSName.Text.Trim() + + ,SSex = + ddlSSex.SelectedItem.Text + + ,SCollege = + txtSCollege.Text.Trim() + + ,SProfessional= + txtSProfessional.Text.Trim() + + ,SClass = + txtSClass.Text.Trim() + + where SId like + SessionId.ToString() + ;/将表Studen中学号SId为内置对象Session记录的用户登录学号的学生信息更新为修改后的信息 i
39、f (Db.ExecuteSql(sql) = 1)/判断执行update语句,改变的行数是否为1(即表Studen中只有该登录学生的那一行信息改变),若为1,则修改成功;否则,则修改失败 Response.Write(MyUtility.Alert(修改成功!); else Response.Write(MyUtility.Alert(修改失败!); 选课:protected void Page_Load(object sender, EventArgs e) / 可选课程显示代码 if ( ! IsPostBack ) string sql = select Course.CId,Cour
40、se.CName,Course.CProfessional, Teacher.TName, Teacher.TId,Course.CCredit, Course.CMax, Course.CRoom from Teacher inner join Course on Teacher.TId = Course.TId inner join Published on Course.CId = Published.CId inner join Student on Student.SProfessional = Course.CProfessional where CType like 选修 and Student.SId = + SessionId + ;/从表Teacher、表Course中查询要在GridView控件表格中显示的内容,要求课程类型CType为选修,课程编号CId为教师已发布课程表Published中已存在课程编号,教师编号TId为课程信息表Course中已存在的教师编号,课程专业Cprofessional为Session记录的用户登录学号的学生的专业(即GridView控件表格中显示的内容为教师已