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 表名;将文本数据转到数据库中load data local infile 文件名 into table 表名;(注意:文本数据应符合格式
5、:字段数据之间用tab键隔开)1.2.2ASP(Active Server Page)Active Server Pages (ASP) 是服务器端脚本编写环境,是由Server端脚本、对象和组件拓展过标准主页使用它能够创建和运行动态、交互Web 页和基于 Web 功效强大应用程序ASP采取工作模型是经典B/S过程:()一个用户在浏览器网址栏中添入Active Server Pages文件名称,并回车触发这个Active Server Pages申请。()浏览器将这个Active Server Pages求发送给IIS()Web Server接收这个申请要求并因为其asp后缀意识到这是个Act
6、ive Server Pag对象来实现服务器和用户端间交互;可扩充服务器端功效ASP和浏览器无关,ASP能够将运行结果一HTML格式传送到用户端浏览器,所以能够使用于多种浏览器。2系统分析2.1可行性分析可行性分析是指在目前组织内外具体条件下,系统开发工作必需含有资源和条件,看其是否满足系统目标要求。在系统开发过程中进行可行性分析,对于确保资源合理使用,避免浪费和部分无须要失败,全部是十分关键。()目标和方案可行性:假如采取人工操作方法,不仅操作不方便,花费人力、物力、财力,而且还轻易出现错误。所以目前迫切需要一个计算机化管理信息系统。有了这个系统,就能用较少人力去管理完成较大工作量,而多种管
7、理效率也会大大提升。开发这个系统,能愈加好地满足学校要求,使学校多种信息管理实现无纸化,高效化。()技术方面可行性:本系统是用ASP结合MySql数据库来开发一个信息管理软件。ASP在数据库方面专长显得尤为突出:适适用于多个数据库结构,经过访问多种数据库通用组件,结适用户端能够创建出完美漂亮且高效多种软件系统。()经济方面可行性:系统结构采取目前流行B/S结构,对用户配置要求低,用户端只需要有浏览器能够上网就能够登录服务器进行多种信息管理。而服务器端也不需要太高配置,只要有能够运行asp程序解释器,能够说整个系统是以最少投入完成最好功效,这就确保了系统经济可行性。()管理方面可行性:作为学校教
8、务信息管理系统之一选课系统,对它管理也是很方便,只需要先将系统配置运行起来,然后分配好系统三个关键角色,就能够投入实际使用,作为系统使用者如管理员,老师和学生基础全部是会知道怎样进行电脑操作。依据以上几方面可行性分析,能够得出结论:学生网上选课系统开发可行。2.2功效分析本系统使用是面向大学院校,系统使用对象包含系统管理员,老师和学生三种身份,系统管理员登录系统后能够管理学生信息,管理老师信息,管理每学期各个班级必修课程信息,各个专业每个学期选修课程信息,能够为这些课程进行排课;而老师用户登录系统后能够查询任意学生信息,能够查询自己讲课信息,能够登记自己所教学生成绩信息,能够修改自己登录密码和
9、个人信息;学生用户登录系统后能够查询任一学期自己成绩信息,假如系统开放了选课功效,能够在指定日期内登录系统后选修该学期选修课,能够生成某个学期课程上课信息表,能够修改自己个人信息和登录密码。本系统一共有4个主模块(身份验证学生管理老师管理管理员管理),其中每个管理部分又包含了多个子模快,关键功效可概括为为浏览、查询、修改、添加。2.3系统程序步骤图主界面登录界面用户权限结束学生老师管理员登录验证操作图31系统程序步骤图3系统总体设计3.1系统结构设计3.1.1关键功效本系统关键功效。()身份验证:经过登录才可进入选课系统,登录信息提交后检验登录者身份是否正当,正当,则转入对应操作界面。在本系统
10、中,只有三种身份:学生、老师、管理员。()信息浏览:信息浏览包含已选课程浏览、已公布课程信息浏览。已选课程浏览是为学生提供查看自己已经选择课程信息和删除选择课程。已公布课程信息浏览用于各代课老师查询自己已经公布课程信息,关键用于浏览、查对。()信息查询:信息查询包含老师个人信息查询、课程查询、选课查询。课程查询即查询该课程相关介绍,包含课程内容、开课地点等内容。老师个人信息是查看及修改对应老师个人信息。经过选课查询能够查看要选择课程情况。()信息修改:信息修改包含密码修改,学生信息修改,老师信息修改。(5)信息添加:信息添加包含学生选课、老师课程公布、管理员。学生选课即经过选择选修课程,添加到
11、学生已选课程中,完成选课任务。老师课程公布即老师添加新课程信息,新信息公布后,学生可看到公布信息。管理员添加学生、老师、课程基础信息。3.1.2系统模块功效图学生网上选课系统登录功效学生管理功效老师管理功效管理员管理功效登录密码修改已选课程必修课程选修课程学生信息密码修改已发课程老师信息公布课程课程信息老师信息学生信息图32系统功效图3.2数据库设计依据系统功效设计要求和功效模块划分,能够列出以下关键数据项和数据库,关键分为6个表:表Course、表Student、表Teacher、表Admin、表Selected、表Published表3.1 课程信息表(Course)名称字段名称类别主键非
12、空课程编码CIdintYesYes老师编号TIdvarcharNoNo课程名称CNamevarcharNoNo课程类别CTypevarcharNoNo供选学院CCollegevarcharNoNo供选专业CProfessionalvarcharNoNo学分CCreditvarcharNoNo最多人数CMaxvarcharNoNo上课地点CRoomvarcharNoNo课程介绍CIntroductiontextNoNo表3.2 学生信息表(Student)名称字段名称类别主键非空学号SIdvarcharYesYes姓名SNamevarcharNoNo性别SSexcharNoNo所属学院SColl
13、egevarcharNoNo所在专业SProfessionalvarcharNoNo班级SClassvarcharNoNo密码SKeyvarcharNoNo表3.3 老师信息表(Teacher)名称字段名称类别主键非空身份证号TIdvarcharYesYes姓名TNamevarcharNoNo性别TSexcharNoNo所属学院TCollegevarcharNoNo所属专业TProfessionalvarcharNoNo密码TKeyvarcharNoNo表3.4 管理员信息表(Admin)名称字段名称类别主键非空登录号AIdvarcharYesYes密码AKeyvarcharNoNo表3.5
14、学生选课信息表(Selected)名称字段名称类别主键非空学号SIdvarcharNoNo课程编码CIdintNoNo表3.6 老师公布课程信息表(Published)名称字段名称类别主键非空老师证件号TIdvarcharNoNo课程编码CIdintNoNo4系统具体设计4.1身份验证4.1.1登录功效在登录页面对应地方输入用户名(学号或身份证号或其它有效证件),密码;确定后登录。在提交后,首先经过学号身份证号或其它有效证件对数据库中Student/Teacher/Admin表进行检索,若检索到统计集为空,则说明学号/身份证号或其它有效证件错误,从而转到对应犯错处理程序,若统计集不为空,再进行
15、密码判定,检验密码是否相等,不相等,作犯错处理,相等则转入学生老师管理员登录成功操作页面,并将姓名,密码,学号身份证号或其它有效证件以session对象保留起来。犯错及系统提醒以下:()学号或身份证号或其它有效证件错误,系统这时会提醒“没有该学生!”或“没有该老师!”或“没有该系统管理员!”;()密码错误,系统提醒“密码错误”。4.1.2密码修改功效密码修改前提是用户成功登录,选择密码修改后,根据页面上提醒,在对应文本框中输入新密码(两次),确定后提交。转入实施asp文件后,判定两次输入新密码是否相等,若不等,犯错;不然,用新密码替换旧密码,更新数据库表Student/Teacher中“密码”
16、字段。本系统密码采取MD5加密。犯错及系统提醒:新密码两次输入不一样,系统提醒“两次输入密码不相符合”。4.2学生信息管理功效4.2.1选课信息查询及选课登录成功后,点击菜单“选修课程”,确定后进入浏览页面。进入页面后,能够对页面上表格内带链接信息进行查询,比如点击“老师”可查询老师信息。要选择课程,点击“选修该课程”后,该课程就会出现在“已选课程”表格中。若已选过该课程,系统提醒“您已经选了该课程!”。4.2.2必修课程信息查询点击菜单“必修课程”,可看到学生所在专业所开设必修课程。其中查询数据库所需要参数是学生专业信息传输来。专业信息取得是经过session(SId)对数据表Student
17、查询得到。进入页面后,能够对页面上表格内带链接信息进行查询,比如点击“课程名称”可查询课程信息。4.2.3已选课程信息查询点击菜单“已选课程”,在选课信息浏览页面中能够查询已经选课程。课程信息查询是经过条件对数据表Course,表Selected,表Teacher等进行查询,将符合条件信息列出。想要退选课程,点击“取消该课程”按钮即可。4.2.4学生个人信息点击菜单“学生信息”,进入选课信息浏览页面查询即可。学生信息修改首先是经过条件对数据表Student进行查询,符合条件后在文本框中输入完整信息后进行覆盖写入,就能够进行信息修改。4.2.5密码修改点击菜单“学生信息”,进入选课信息浏览页面。
18、根据页面上提醒,在对应文本框中输入新密码(两次),确定后提交。转入实施asp文件后,判定两次输入新密码是否相等,若不等,犯错;不然,用新密码替换旧密码,更新数据库表Student中“SKey”字段。犯错及系统提醒:新密码两次输入不一样,系统提醒“两次输入密码不相符合”。4.3老师课程信息管理功效4.3.1课程信息公布登录成功后,点击菜单“公布课程”,进入选课信息浏览页面。假如想要单独查看某专业该老师可公布课程,在查询条件“课程专业”对应文本框内输入查询信息(不输入信息时,表中显示该老师可公布课程全部课程信息),点击“查询”按钮,即可查询。若要公布课程,按要求输入完整信息(课程名称和课程专业不能
19、改变),点击“开设课程”按钮。若输入信息不完整,系统会提醒“请输入!”;当公布课程统计已经存在时,系统提醒“您已经公布了该课程!”。当输入课程名称或课程专业有误,系统提醒“公布失败!”。4.3.2对已公布信息查询对数据表Course,表Published等进行检索,将其中符合条件信息全部输出;查询需要参数是由session对象取得身份证号来确定,由这二者确定出即是该老师所公布过课程信息。想要取消公布课程,点击“取消公布课程”按钮即可。4.3.3老师个人信息点击菜单“老师信息”,进入选课信息浏览页面查询即可。老师信息修改首先是经过条件对数据表Teacher进行查询,符合条件后在文本框中输入完整信
20、息后进行覆盖写入,就能够进行信息修改。4.3.4密码修改点击菜单“老师信息”,进入选课信息浏览页面。根据页面上提醒,在对应文本框中输入新密码(两次),确定后提交。转入实施asp文件后,判定两次输入新密码是否相等,若不等,犯错;不然,用新密码替换旧密码,更新数据库表Teacher中“TKey”字段。犯错及系统提醒:新密码两次输入不一样,系统提醒“两次输入密码不相符合”。4.4系统管理员信息管理功效4.4.1管理老师功效老师信息添加、修改、删除、查询由管理员完成,老师无权使用。()添加:对数据表“Teacher”进行添加操作,生成新统计。在管理员登录成功后,选择“老师信息”即进入老师信息添加页面,
21、输入要添加老师身份证号、老师姓名等老师信息后(初始密码admin),点击添加按钮即可。犯错及系统提醒:输入老师身份证号已存在,系统则提醒“添加失败,请检验老师证件号是否已经存在!”。()修改:在管理员登录成功后,选择“老师信息”即进入老师信息页面。对数据库中表“Teacher”查询,在网页对应地方显示所要信息。列出老师信息表后,在表中查询要修改老师身份证号后,点击“修改”按钮,修改所要修改老师信息,点击“更新”按钮,若不修改,则点击“取消”按钮。()删除:在管理员登录成功后,选择“老师信息”即进入老师信息页面。查询要删除老师身份证号,点击“删除”按钮进行删除。()查询:在老师信息页面,输入要查
22、询专业,点击“查询”按钮即可查询该专业老师情况。4.4.2管理学生功效学生信息添加、修改、删除、查询功效和管理老师信息基础相同,不再赘述。4.4.3管理课程功效课程信息添加、修改、删除查询功效和管理老师信息基础相同,不再赘述。5设计过程中问题及处理方法5.1数据库连接MySQL和SQL server连接方法大致相同,当MySQL和VS连接时,需要组件mysql-connector-net,经过查找及实践,完成了数据库建立和连接。图51:图51 mysql数据库连接数据库连接操作类关键代码:/数据库连接字符串private const String connString =Server=loca
23、lhost;Database=ChooseCourse;Uid=root;Pwd=sa;/返回select得到数据集public static DataSet ExecuteSelectSql( string sqlSelect ) MySqlConnection conn = new MySqlConnection(connString); MySqlDataAdapter sda = new MySqlDataAdapter(sqlSelect,conn); DataSet ds = new DataSet(); try sda.Fill(ds); catch(MySqlException
24、 e) throw new Exception(e.Message); return ds; /实施insert,update,delete等语句,返回改变行数public static int ExecuteSql( string sql ) int rows = -1; MySqlConnection conn = new MySqlConnection(connString); MySqlCommand cmd = new MySqlCommand(sql,conn); try conn.Open(); rows = cmd.ExecuteNonQuery(); catch(MySqlE
25、xception e) throw new Exception(e.Message); finally cmd.Dispose(); conn.Close(); return rows; 5.2参数传输在模块建立时,很多时候发觉功效不能正常运行,在检验完程序语句结构以后,发觉并没有错误,于是在检验页面和页面交互时发觉了问题,很多地方传输参数并没有真正实施,还有些地方没有进行参数设置,才造成了程序错误。5.3公共数据因为一开始没有使用session对象,致使很多功效无法实现,在学习了session相关内容后才处理了部分具体问题,包含网页间参数传输,公共信息保留及提取等。6系统实现6.1登录模块6
26、.1.1登录模块介绍登录模块在本系统中用于区分学生、老师、管理员。出于保密性和方便管理等方面考虑,不一样身份在登录本系统后有不一样权限。比如:学生登录系统后可查询及选课,老师登录系统后可公布课程。管理员登录系统后可添加老师、学生及课程信息。经过用户权限,选择正确身份,然后输入用户名(学号或身份证号或其它有效证件)、密码,登录信息提交后检验登录者身份是否正当,正当,则转入对应操作界面。(初始密码均为admin,管理员登录用户名admin)操作主界面登录界面选择用户类型登录验证NY输入用户名密码图61 登录模块步骤图6.1.2登录模块关键代码关键代码以下:protected void btnLog
27、in_Click(object sender, EventArgs e) / 登录代码 int type = Int32.Parse(ddlLogin.SelectedItem.Value);/用户类型选择分三种,用switch (type)来区分 string user = txtUser.Text.Trim();/用户证件号,文本框内容赋值给user string inputkey = txtKey.Text.Trim();/用户密码,文本框内容赋值给inputkey string key = ; string sql = ; DataSet ds; switch (type) /选择学生
28、,即type值为1,实施case 1;选择老师,即type值为2,实施case 2;选择系统管理员,即type值为3,实施case 3 case 1:/ 验证学生身份代码 sql = 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 &
29、!ds.Tables0.Rows0.IsNull(0)/判定select得到数据集是否为空,若为空,实施else key = ds.Tables0.Rows00.ToString();/将查询到密码赋值给keyif (MyUtility.MD5(inputkey) = key)/输入密码经过MD5加密,并和key相比较 /相等,便可成功登陆学生选课管理主页面 SessionId = user;/ 内置对象Session统计用户登录学号 SessionType = type; / 内置对象Session统计用户登录类型 Response.Redirect(StudentMain.aspx);/进
30、入学生选课管理主页面 else/密码错误 Response.Redirect(Error.aspx?code= + ErrorInfo.ERR_KEYERROR.ToString();/系统提醒:密码错误 else/不存在该学生 Response.Redirect(Error.aspx?code= + ErrorInfo.ERR_NOSTUDENT.ToString();/系统提醒:不存在该学生 break; case 2:/ 验证老师身份代码 /和验证学生身份代码类似 break; case 3:/ 验证管理员身份代码 /和验证学生身份代码类似 break; 6.1.3登录模块截图图62 登
31、录页面图63 学生登录错误页面6.2学生选课模块6.2.1学生选课模块介绍学生选课模块是系统关键模块之一,关键用于学生网上选课,不一样专业学生经过登录选课系统,选择本专业课程,完成选课任务。菜单:学生信息|必修课程|选修课程|已选课程,包含选课信息查询及选课、必修课程信息查询、已选课程信息查询、学生个人信息修改、密码修改等。6.2.2学生选课模块关键代码学生个人信息:protected void Page_Load(object sender, EventArgs e) / 显示学生信息代码 if (!IsPostBack) /表示第一次访问页面时要实施程序,有点像初始化页面,当你点击了目前页
32、面部分按钮后,将不会再实施这些程序 string sql = select * from Student where SId like + SessionId.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.
33、Text = SessionId.ToString();/将Session统计用户登录学号在Label控件lbSId上显示出来 txtSName.Text = ds.Tables0.Rows0SName.ToString();/在TextBox控件txtSName中显示select得到学生姓名 if (ds.Tables0.Rows0SSex.ToString() = 女) ddlSSex.SelectedIndex = 0; else ddlSSex.SelectedIndex = 1; /在DropDownList控件ddlSSex中显示select得到学生性别 txtSCollege.T
34、ext = ds.Tables0.Rows0SCollege.ToString();/在TextBox控件txtSCollege中显示select得到学生学院 txtSProfessional.Text = ds.Tables0.Rows0SProfessional.ToString();/在TextBox控件txtSProfessional中显示select得到学生专业 txtSClass.Text = ds.Tables0.Rows0SClass.ToString();/在TextBox控件txtSClass中显示select得到学生班级 密码修改: protected void btnU
35、pdateKey_Click(object sender, EventArgs e) /密码修改代码 if (txtKey.Text.Trim() != txtKeyOk.Text.Trim()/判定输入新密码和密码确定输入密码是否相等,若不相等,实施if语句;相等,不实施if语句 Response.Write(MyUtility.Alert(两次输入密码不相符合);/系统提醒:两次输入密码不相符合 return; /返回密码修改页面 string sql = update Student set SKey = + MyUtility.MD5(txtKey.Text.Trim() + wher
36、e SId = + SessionId + ;/将表Studen中学号SId为内置对象Session统计用户登录学号学生密码更新为修改密码 if (Db.ExecuteSql(sql) = 1) /判定实施update语句,改变行数是否为1(即表Studen中只有该登录学生那一行密码信息改变),若为1,则修改成功;不然,则修改失败 Response.Write(MyUtility.Alert(修改成功!); else Response.Write(MyUtility.Alert(修改失败!); 学生信息修改: protected void btnUpdateInfo_Click(object
37、sender, EventArgs e) /学生信息修改代码 string sql = update Student set SName = + txtSName.Text.Trim() + + ,SSex = + ddlSSex.SelectedItem.Text + + ,SCollege = + txtSCollege.Text.Trim() + + ,SProfessional= + txtSProfessional.Text.Trim() + + ,SClass = + txtSClass.Text.Trim() + + where SId like + SessionId.ToSt
38、ring() + ;/将表Studen中学号SId为内置对象Session统计用户登录学号学生信息更新为修改后信息 if (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) / 可选课程显示代
39、码 if ( ! IsPostBack ) string sql = select Course.CId,Course.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.SPr
40、ofessional = Course.CProfessional where CType like 选修 and Student.SId = + SessionId + ;/从表Teacher、表Course中查询要在GridView控件表格中显示内容,要求课程类型CType为选修,课程编号CId为老师已公布课程表Published中已存在课程编号,老师编号TId为课程信息表Course中已存在老师编号,课程专业Cprofessional为Session统计用户登录学号学生专业(即GridView控件表格中显示内容为老师已公布本专业选修课程) DataSet ds = Db.ExecuteSelectSql(sql); if (ds != null & ds.Tables.Count 0) gvXxCourse.DataSource = ds.Tables0; gvXxCourse.DataBind();/将查询结果绑定到