|
题 目:基于WEB的选课系统设计与实现
内容摘要
本文对当前网上选课系统的国内外现状进行了分析,阐述了B/S架构、.NET平台及ASp.NET等相关技术。结合网络上现有的该类系统及本学院的要求进行了需求分析和系统的可行性分析。对系统中的管理员、教师模块部分、学生模块部分和数据库进行了概要和详细的设计。最后从系统实现的公共部分开始,对系统中管理员和教师模块的功能实现和采用的关键性技术及难点的解决办法等方面进行了描述。
通过本课题的研究,目的在于解决网络环境下选修课程过程中存在的典型问题,充分提高教务管理工作的质量与效率,对计算机应用技术尤其是网络技术的应用与研究起到积极的推动作用,从而全面提高选修课程的管理质量,使学分制的选课实施与管理更加科学化、规范化。经过实际检测,该系统能够为全校师生准确的提供选课、成绩录入、成绩查询等教务类服务。
关键词:选课系统;B/S;.NET;ASP.NET
目 录
内容摘要 I
1 概述 3
1.1 课题背景 3
1.2 系统设计思想 3
1.3 论文结构 4
2 需求分析 5
2.1 业务流程分析 5
2.2 数据流分析 7
3 系统设计 9
3.1 系统总体功能结构 9
3.2 系统数据模型设计 10
3.2.1 数据库分析 10
3.2.2 数据库逻辑设计与实现 11
3.3 用户界面设计 13
3.4 流程设计 13
4 系统实现 14
4.1 学生管理系统 14
4.2 系统管理说明 19
4.3 教师管理说明 23
5 结论 28
参考文献 30
1 概述
1.1 课题背景
计算机的广泛应用在于为人类社会的发展提供更加快捷的服务,降低重复性工作比重。将人工的冗余工作交给计算机来完成。并且,由于计算机能够提供的计算量远高于人脑,将大规模的计算交给计算机来完成也是一个重要的方面。在教育系统中,这种将人脑工作交付给计算机来完成的方法也在不断完善,教育管理系统就是其中的一个方面[1]。
网络的应用在校园系统中尤其重要,随着高等教育的逐渐普及,高校学生人数也在逐渐增加。传统的选课方法已经越来越不能满足学生选课的需要。而且随着掌握初步计算机知识的人员越来越多,微型计算机系统在教师及学生之间逐渐普及,网络选课系统的出现也不会给教师以及学生带来不便。教学管理平台能够分布式地在各个有校园网联系的客户端同时进行选课,同时对选课人员的课程设置进行约束,避免学生选课的误操作,同时减轻了教务管理人员的工作量。
传统的选课方法由教务工作人员公布本学期的教室情况、教师情况、课程设置情况、附加的限制条件等。由教师选择开课时间和课程内容,然后由学生选择准备选择的课程,回复到教务处[2]。再由教务管理人员根据实际情况分班,制作名册,联系教师、安排教室和教学资源等。
这种选课方式的选课周期较长,且各环节的漏洞较多。尤其高校教育改革后,各高校用学分制对学生进行课程管理。这样每个学生的计划几乎不同,这样更增加了人工选课的难度[3]。且完全自由的选课方式可能会对学生学习的循序渐进产生一定影响。因此采用带有约束的选课系统出现,并且对这种情况能够得到相应的解决。
本文提出并且设计了一个依托于校园网络的网上选课系统。集合教育资源管理,教室管理,教师开课平台、学生选课平台于一体。和计算机较高的计算功能,对学生选课,教师排课等常规的工作进行处理,有效地避免了重复性工作,并且能够准确排课,约束选课的合理性[4]。
根据校园网络选课的特点和使用功能,系统的主要模块可以分为如下四个模块:学生选课子系统、教师排课模块、管理员处理模块、公共查询模块[5]。下文将对系统的上述四个模块的协作、独立处理进行阐述。
1.2 系统设计思想
对于网络选课系统来说,其核心的问题就是对于Web数据库的设计、数据库的操作和管理。本系统是基于ASP.NET技术,以SQLServer2005为系统数据库,采用的结构模型是一个三层结构模型:UI层、业务逻辑层和数据层。UI层负责与用户交互,接收用户的输入并且将服务器端传来的数据返回给客户端浏览器;业务逻辑层负责接收浏览器传来的请求并且将请求传给数据层。从系统目标设计上看,从系统控制、学生选课以及教师查看授课信息层面进行系统设计[6]。
1、系统控制层面:为教务处管理人员设计,用于完成对于整个选课系统的控制和管理,其中包括:教学任务信息管理(教师基本信息、课程信息、学生基本信息等)、选课信息管理(选课情况录取、选课结果的发布等)。
2、学生选课层面:为学生查询和选修课程设计,提供方便学生选课和查询课程所需要的各种操作,如查询课程、选修课程和查询选课结果等。
3、教师查看授课信息层面:教师在课程信息确定以后,在网上就可以查看到自己本学期的授课信息,并且可以查看到选此课程的学生名单。
1.3 论文结构
文章分为五章:
第1章介绍了选课系统的相关背景,系统设计思想。
第2章介绍了该系统平台的框架、模块组成及功能需求。
第3章介绍了该系统组成各部分的性能及实现方法。
第4章介绍了该系统的实现过程。
第5章是对该系统平台的总结和展望。
2 需求分析
需求分析的过程是整个系统开发的重要组成阶段,需求分析的成功与否,决定着整个系统功能的完善性以及系统的稳定性[7]。在该阶段需求分析人员需要确定整个产品的功能要求,并且将现实事务抽象成对象并建模[8]。
本系统是在对我院实际选课的工作业务流程进行实地调研之后,在此基础上进行地分析和总结,并且形成了本系统的分析和运行流程。该系统属于B/S结构模式,外网可以通过Web页面来访问本系统,内网可以通过页面访问后台数据库,对数据库进行数据的更新和000。数据库可以单独地存放在一个服务器上。本系统在需求分析过程中需要达到以下几种目标。
1、了解我院选修课选修手工----流程。
2、了解我院选修课各个业务手工----的各个环节的输入输出表单和数据来源。
3、对选课系统功能进行划分。
4、对选课系统中各个业务----流程图。
5、对选课系统中各个业务----各个环节数据、数据采集方式以及数据间的内在联系分析。
6、对选课系统中用户界面图、系统逻辑模型图加以说明。
7、目标明确以后,后续系统就可以进行更加有效的实施开发的过程了。
2.1 业务流程分析
选课系统的流程为:首先根据教学计划来制定每学期的执行计划,再由执行计划产生出教学任务书,全校进行统一选课,即排出该门课程的任课教师、上课时间、上课地点和教室,产生任课教师课程表,然后根据排定的课程,最终产生出学生课程表[9]。
根据我院的具体情况,业务可以分为三类,第一类是教务处所发布选修课的业务,第二类是学生的选课业务,第三类是教师查看授课信息业务。
1、教务处发布选修课业务流程描述如下:
(l)学期阶段设置:整个学期分为七个阶段,其中包括发布课程阶段、选课阶段、课程调整阶段、改选退选阶段、上课阶段、期末阶段、查看000阶段,整个选课流程是跟据这七个阶段控制的,这七个阶段是整个学期的控制条件。
(2)年级设置:在新学期开始之前教务处设置了每个年级的学生是相应的哪一届的学生,这是学生在选课阶段中判定选课年级限制的至关重要的约束条件。
(3)发布选修课:发布本学期所有的选修课内容,其中包括课程的名称,课程约束以及授课教师等等,学生可以跟据教务处发布的选修课的课程介绍和自己的兴趣爱好来进行选课。
(4)选课年级控制:制定本学期需要有年级限制的选修课的年级限制规则,学生可以依据这些规则来选择适合自己的课程。
(5)选课系控制:制定本年度需要有系限制的选修课的系限制规则,在整个选课阶段中系控制是非常重要的约束条件。
(6)改选退选约束:教务处发布选修课改选退选约束后,学生在改选退选阶段中如果有想改选或退选某门课程的需求就要看此门课程是否允许被改选或退选。
(7)查看选修课:教师和学生在进入网站后查看与选修课相关的信息,学生能够查看相应课程的授课教师信息。教师在登录之后可以查看到自己所授课程的课程信息,如上课时间和上课地点等。
2、学生选课业务描述如下:
(1)在线选课:如果时间处在选课期阶段,学生在正确登录之后,可以看到教务处管理人员所发布的全部课程信息,学生可以根据个人的兴趣和爱好进行课程的选择。
(2)课程调整:在选课完毕之后,也许有的课程会因为选的人数过少而不能开课,这时候选择了这些课程的同学就需要重新选课,并做出新的调整。
(3)改选退选:选课和调整课程结束之后,有的同学会对最初选择的某一门课程想要进行改选或退选,这时可以在改选退选时期完成改选或退选操作,但是前提是需要改选或退选的课程允许该同学进行改选或退选操作。
(4)学生们查看己选课程:在选课结束之后,学生可以查看到自己已经选择的课程的信息,比如上课的时间和上课地点,上课开始周和结束周,以及授课教师的信息等。
(5)查看选课学生信息:教师在登录之后可以查看已选择了自己课程的学生名单与每名选课同学的信息,如学生的姓名,学生所在院系等等。
(6)课程选课结果:选择课程完毕之后,教务处会得到学生的选课结果表,从而针对学生的选课结果进行批处理,在确定了学生的选课结果之后,学生就可以查看到自己本学期最终的选课信息了。
3、教师查看授课信息:在教务处进行了课程确认之后,教师可以登录到系统进行本学期的课程信息查看,不仅可以看到课程的上课时间、上课地点等信息,教师还可以查看并保存选择课程的学生名单。
新系统的目标确定之后,可以从经济可行性、技术可行性和运行可行性三个方面对能否实现新系统目标而进行可行性分析。
本系统的系统流程图如图2.1所示。
图2.1系统流程图
2.2 数据流分析
数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生很大的影响,在开始设计数据库系统的时候应该尽量考虑地全面细致,尤其是应该仔细考虑到用户的各种各样的需求[10]。
数据流图是表示系统逻辑模型的常用工具,图中不存在任何具体的物理元素,只表示信息在系统中流动和处理的情况,它是和用户进行交流的极好工具[11]。
本系统的数据流图描述:
1、教务处人员在登录之后可以对后台信息进行管理,比如:学生信息、教师信息、新闻信息以及选修课程信息等。
2、学生在登录之后可以查看和000个人资料和密码,查看授课教师的信息,查看课程信息以及查看新闻消息等等。
3、教师在登录之后可以查看和000个人资料和密码,可以查看选择了自己课程的学生名单以及学生资料,包括学生的姓名、所在的院系等等。
由于系统的选课功能比较复杂,所以将选课数据流分层给出。
数据流图的第二层是对于学生选课数据流的描述。学生查看教务处发布的课程信息,进行志愿的填报并且生成志愿信息表。教务处根据学生填报的志愿信息表和课程表的人数约束条件,进行学生的课程志愿录取,生成选课结果表。
3 系统设计
3.1 系统总体功能结构
本文在研究上述介绍的理论基础上。采用B/S模式下的平台架构,以Windows2000作为操作系统,数据库服务器是SQLServer2000,用ASP.NET开发动态网页,中间组件用.com开发[12]。下面分别从系统的功能、数据库的设计、数据库连接、安全性设计几个方面来进行介绍。
系统的总体结构如下图3.1所示:
图3.1系统的总体结构
我们这个选课系统具有4个特点:
(1)安全性:通过采用多项安全措施来保护本系统。如:设置口令,采用Session记录用户的操作信息,设置用户权限,,避免了选课的高峰访问,对选课算法进行优化等。
(2)简便、快捷性:用户可以在任何一个能连上校园网的机器上选课。成功登陆后,可以进行所需要的操作,使选课操作可以不受时间,地点等限制。
(3)准确性:为了保护准确性,不同的用户拥有不同权限,使其数据安全有保障。
(4)公平性:保证选课操作在有先后次序情况下,都有相等的选课概率,最大限度的保证每个学生的利益,因此采用公平算法。
3.2 系统数据模型设计
3.2.1 数据库分析
对于数据库的设计,也就是数据的内容和组织方式,考虑在设计数据库时,首先应该关注数据库的设计目标。一个完善成熟的数据库应该是没有冗余的数据或者冗余数据较少的数据库,并且它能够快速的定位数据节点,便于其进行维护[13]。
但是数据库是不断完善和更新的。经过与老师和同学、还有管理员的讨论,通过分析学生的选课流程,管理员的维护需要,我们得到数据库的实现包含了如下条件:
首先,学生的数据信息的获取。学校的学生管理部门直接提供学生个人基本信息,学院的教师可以对其进行000,有些选课需要的信息可能并不存在,所以需要预留出相关的空字段便于以后添加。
其次,选课规则的信息。由于各个培养单位对于学生课程有不同的要求,这就造成选课的时候需要有不同的选课规则,这就需要我们在数据库中添加各个培养单位的规则以在系统中实现这些逻辑规则。比如,文理科的学生对学分有不同要求,不同学院学生对公共必修课、选修课,专业课的范围等要求
3)课程信息。课程信息主要包括:各个校部,各个培养单位提交的课程名、学时、学分等信息。
4)选课的信息。选课操作包括学生表和课程表,由于他的操作最多,所以他的好坏关系到整个系统的好坏,因此我们不应该存在冗余信息,尽量只包含重要的字段,例如:编号,学号,成绩,备注等。
选课平台的数据库用下图3.2就可以表示:
图3.2选课平台的数据库E-R图
3.2.2 数据库逻辑设计与实现
SQL Server 2000是本选课平台系统的数据库管理系统,所用的数据库是Elect Class,主要包含了5个数据表,Student表存放学生信息,Cource表存放课程信息,Teacher表存放教师信息,Users表存放系统管理员信息,Elect表存放选课信息,Depart表存放院系信息。各个表字段的定义如下:
(1)Student表。学生个人基本信息的存储,主键是学号,如上表所示,其共分为:列名、数据类型、长度和是否允许为空四个类型。
表3.1 Student基本信息表
(2)Teacher表。教师的个人基本信息的存储,教师编号作为其主键,因为是学校分配的,所以没有重复的发生,如表3.2所示,其共分为:列名、数据类型、长度和是否允许为空四个类型:
表3.2教师基本信息表
(3)Course表。Course表是用来存储课程信息的,其共分为:列名、数据类型、长度和是否允许为空四个类型。Course表主键是课程编号,在甚至课程编号是可以自动增加,每次增加1(在建表的时候对属性列设置为“标识”,同时设置“标识地增量”加1)。Id的外间是开课教师,“TId”的必须和Teacher表中“TId”一一对应,设置外键通过建立表的窗口中单击右键,选择关系选项,在其中设置外键关系。如表3.3
表3.3课程基本信息表
(4)Elect表。学生的选课基本信息存储于Elect表,在Elect表中学号和课程编号同时是主键和外键。其共分为:列名、数据类型、长度和是否允许为空四个类型。如表3.4所示的表字段。
表3.4选课表的数据截图
3.3 用户界面设计
界面设计是为了满足软件专业化和标准化的需求而产生的对软件的使用界面进行美化、优化和规范化的设计分支[14]。首先要确定网站的整体风格,本系统采用大方得体的风格,网页色彩柔和清新,以蓝色为主调搭配,系统整体蓝白相间。
刚进入主界面,在登录以后,不同的身份可以对应不同的界面。
学生用户登录的主界面,左侧的导航菜单是学生用户独有的功能,其中包括选课、查看选课结果、查看教师信息等。整体结构干净整洁,排版布局清晰明了。
3.4 流程设计
网上选修课选课及教学管理系统主要针对学生、教务处和教师三种用户。教务处发布选修课信息,学生查看选修课信息然后根据自己的兴趣爱好选课[15-16]。在课程调整期间如果有些课程因为选课人数过少就不能开课,而选择了这些课程的同学则要重新调整课程。在改选退选阶段同学根据自身情况可以改选和退选课程,最后生成最终的选修课名单,教师和教务处可以随时地查看这些选课名单。考试完毕之后,教师可以在线录入学生的成绩,学生们也可以查看到自己的成绩,教务处也可以查看到学生的成绩并且保存。
4 系统实现
4.1 学生管理系统
界面如下图4.1所示:
图4.1选课系统登陆界面
在用户名和密码处输入用户名和密码,在“用户类型”下拉列表框中选择“学生”,单击“登录”按钮,登录选课系统。
主要代码如下:
private void btnLogin_Click(object sender, System.EventArgs e)
{
int type = Int32.Parse(ddlType.SelectedItem.Value);
string user = txtUser.Text.Trim();
string inputkey = txtKey.Text.Trim();
string key = "";
string sql = "";
DataSet ds;
switch( type )
{
case 1://学生
//验证学生身份代码
break;
case 2://教师
//验证教师身份代码
break;
case 3://系统管理员
//验证管理员身份代码
break;
default;
break;
}
}
查看必修课程列表页面,如图4.2:
图4.2查看必修课程列表页面
登录成功后,进入学生主页,点击“必修课程”链接,得到所有必修课程的列表,在列表中可以看到所有必修课程及课程的简单信息,如授课教师姓名、课程所占学分等。
在列表中可以点课程名称,如“计算机应用基础”链接,查看课程详细信息;点教师姓名,如“李萍”链接,查看教师的详细信息;点击“查看上课时间地点”链接,查看对应课程的上课时间和地点。
在页面加载的时候从数据库读取所有必修课信息,代码如下:
string sql = "select Course.*,TName from Course,Teacher where CType like '必修' and Course.TId like Teacher.TId";//查询处所有必修课程信息
DataSet ds = Db.ExecuteSelectSql(sql);
if ( ds != null && ds.Tables.Count > 0 )
{
dgCourse.DataSource = ds.Tables[0];
dgCourse.DataBind();//将查询结果绑定到DataGrid中
}
查看选修课程列表页面,如图4.3:
图4.3查看选修课程列表页面
单击“选修课程”链接,查看所有选修课程列表,在列表中给出了比必修课程更多的信息,比如多了对应选修课程的前导课程、最大人数、当前已选人数等,对每个选修课程均有一个“选修该课程”的按钮,单击此按钮方可选择对应课程。
主要代码如下:
string sql = "select x.*,TName,(select CName from Course as y where y.CId = x.CPreCId) as CPreCName from Course as x,Teacher where x.CType like '选修' and x.TId like Teacher.TId";
//查询该学生已选修的课程
DataSet ds = Db.ExecuteSelectSql(sql);
if ( ds != null && ds.Tables.Count > 0 )
{
dgCourse.DataSource = ds.Tables[0];
dgCourse.DataBind();
for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ )
{
sql = "select count(*) from SC where CId = "+ds.Tables[0].Rows[i]["CId"].ToString();
DataSet ds1 = Db.ExecuteSelectSql(sql);
if ( ds1 != null && ds1.Tables.Count > 0 && ds1.Tables[0].Rows.Count > 0 )
dgCourse.Items[i].Cells[6].Text = ds1.Tables[0].Rows[0][0].ToString();
}
}
bool locked= bool.Parse(Session["Locked"].ToString());
if ( ! locked )
{
lbLock.Text = "您尚未锁定选课信息!";
}
else
{
lbLock.Text = "选课信息已被锁定!";
dgCourse.Columns[9].Visible = false;
}
查看已选课程页面,如图4.4:
图4.4查看已选课程页面
在上一步查看选修课程的列表中,选择“计算机密码学”、“计算机图形学”、“线性代数”三门课程后,点击“已选课程”链接查看已经选择的课程列表,在列表中除了可以看到与上一步中相同的信息外,还可以查看到课程成绩。刚才选择的三门课程的成绩均为0,当课程结束后,教师登录本系统给所有学生评分,学生再次浏览此页面可查看到课程的成绩,若成绩合格,学生可获得对应课程的学分。
锁定课程代码如下:
string sql = "select count(*) from SC where SId like '"+Session["Id"].ToString()+"'";
DataSet ds = Db.ExecuteSelectSql(sql);
int nCourse=0;
if ( ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 )
{
nCourse = Int32.Parse(ds.Tables[0].Rows[0][0].ToString());
}
if ( nCourse < 2 )
{
Response.Write(MyUtility.Alert("您必须选择至少两门选修课程!"));
return;
}
else
{
//先将所有必修课程加入到选课表中再锁定
sql = "select CId from Course where CType = '必修'";
DataSet ds2 = Db.ExecuteSelectSql(sql);
if ( ds2 != null && ds2.Tables.Count > 0 )
{
for ( int i = 0; i < ds2.Tables[0].Rows.Count; i++ )
{
string cid = ds2.Tables[0].Rows[i][0].ToString();
sql = "insert into SC(SId,CId,Score) values('"+Session["Id"].ToString()+"',"+cid+",0)";
Db.ExecuteSql(sql);
}
}
sql = "update Student set SLocked = 1 where SId like '"+Session["Id"].ToString()+"'";
if ( Db.ExecuteSql(sql) == 1 )
{
lbLock.Text = "选课信息已被锁定!";
Session["Locked"] = "true";
Response.Redirect("Selectedcourse.aspx");
}
}
4.2 系统管理说明
系统管理员主要有三个功能需要实现:设置选课时间段、录入学生和教师信息、录入教学楼教室信息。
设置开始选课时间段:选课时间段存储在项目目录下的time.txt文件中。文件中第一行表示开始时间,第二行表示结束时间。如图4.5:
如图4.5 管理员登陆管理系统设置界面
设置时间代码如下:
DateTime dtStart,dtEnd;
try
{
dtStart = DateTime.Parse(txttimeStart.Text);
dtEnd = DateTime.Parse(txtTimeEnd.Text);
}
catch
{
Response.Write(MyUtility.Alert("输入错误"));
return;
}
StreamWriter sw = new StreamWriter("http://localhost/sc/login.aspx",false);
sw.WriteLine(dtStart.ToString());//写入开始时间
sw.WriteLine(dtEnd.ToString());//写入结束时间
sw.Close();
lbTime.Text = "选课时间为:"+dtStart.ToString()+"到"+dtEnd.ToString(); //更新选课时间段显示
录入学生和教师信息:在AdminUser.Aspx中,用与录入学生和教师信息。如图5.6:
图4.6 录入学生与教师信息界面
添加教师代码如下:
private void btnAddTearcher_Click(object sender, System.EventArgs e)
{
string sql = "insert into Teacher(TId,TKey,TName) values('"+txtTId.Text.Trim()
+"','"+MyUtility.MD5(txtTId.Text.Trim())+"','"+txtTName.Text.Trim()+"')";
try
{
if ( Db.ExecuteSql(sql) == 1 )
{
sql = "select * from Teacher";
DataSet ds1 = Db.ExecuteSelectSql(sql);
if ( ds1 != null && ds1.Tables.Count > 0 )
{
dgViewT.DataSource = ds1.Tables[0];
dgViewT.DataBind();
}
}
else
{
Response.Write( MyUtility.Alert("添加失败._-,请检查编号是否已经存在!") );
return;
}
}
catch
{
Response.Write( MyUtility.Alert("添加失败-_-,请检查编号是否已经存在!") );
return;
}
}
录入教学楼教室信息:在AdminRoom.Aspx中,教学楼和教室的管理主要包括添加和删除操作,添加一个教室必须指定其所属的教学楼。如图4.7:
图4.7 添加教学设施的界面
添加教学楼代码如下:
private void btnAddBuilding_Click(object sender, System.EventArgs e)
{
if ( txtBuilding.Text.Trim() == "" )
{
Response.Write(MyUtility.Alert("请输入教学楼名称!"));
return;
}
string sql = "insert into Building(BuildingName) values('"+txtBuilding.Text.Trim()+"')";
Db.ExecuteSql(sql);
}
4.3 教师管理说明
教师用户的功能需求有个人信息的管理、开设课程、课程时间地点编辑、设置学生成绩。
教师个人信息:在Teacher.Aspx中,在这里可以000密码和添写教师个人信息。如图4.10:
图4.10 教师个人信息界面
从数据库中读取教师个人信息显示代码如下:
string sql = "select * from Teacher where TId like '"+lbTId.Text.Trim()+"'";
DataSet ds = Db.ExecuteSelectSql(sql);
if ( ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 )
{
txtTName.Text = ds.Tables[0].Rows[0]["TName"].ToString();
txtTAge.Text = ds.Tables[0].Rows[0]["TAge"].ToString();
txtTPhone.Text = ds.Tables[0].Rows[0]["TPhone"].ToString();
txtTMail.Text = ds.Tables[0].Rows[0]["TMail"].ToString();
if ( ds.Tables[0].Rows[0]["TSex"].ToString() == "男" )
ddlTSex.SelectedIndex = 0;
else
ddlTSex.SelectedIndex = 1;
}
000信息代码如下:
string sql = "update Teacher set TName = '"+txtTName.Text.Trim()+
"',TAge = "+txtTAge.Text.Trim()+
",TSex = '"+ddlTSex.SelectedItem.Text+
"',TPhone = '"+txtTPhone.Text.Trim()+
"',TMail = '"+txtTMail.Text.Trim()+
"' where TId = '"+Session["Id"].ToString()+"'";
if ( Db.ExecuteSql(sql) == 1 )
Response.Write(MyUtility.Alert("000成功!"));
000密码代码如下:
if ( txtKey.Text.Trim() != txtKeyConfirm.Text.Trim() )
{
Response.Write(MyUtility.Alert("两次输入密码不相符合"));
return;
}
string sql = "update Teacher set TKey = '"+MyUtility.MD5(txtKey.Text.Trim())+"' where TId = '"+Session["Id"].ToString()+"'";
if ( Db.ExecuteSql(sql) == 1 )
Response.Write(MyUtility.Alert("000成功!"));
else
Response.Write(MyUtility.Alert("000失败!"));
开设课程:在NewCourse.Aspx中,在这里可以添加新课程,其中包括课程名称、课程类型、学分、前导课程、最大人数、课程介绍。如图4.11:
图4.11 教师所开设的课程界面
从数据库读取所有课程编号和课程名称代码如下:
ddlCPreCId.Items.Clear();
ddlCPreCId.Items.Add("请选择");
string sql = "select CId,CName from Course";
DataSet ds = Db.ExecuteSelectSql(sql);
if ( ds != null && ds.Tables.Count > 0 )
{
for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ )
ddlCPreCId.Items.Add( new ListItem( ds.Tables[0].Rows[i]["CName"].ToString(), ds.Tables[0].Rows[i]["CId"].ToString() ) );
}
ddlCPreCId.SelectedIndex = 0;
课程时间地点编辑:在TeacherMain.Aspx中,在这里可以编辑课程时间和地点。如图4.12:
图4.12 教师上课地点和时间编辑界面
设置学生成绩:在SC.Aspx中,可以添写学生考试成绩。
从数据库中读取教师开设的课程代码如下:
string sql = "select x.*,(select CName from Course as y where y.CId = x.CPreCId) as CPreCName from Course as x where x.TId like '"+Session["Id"].ToString()+"'";
DataSet ds = Db.ExecuteSelectSql(sql);
if ( ds != null && ds.Tables.Count > 0 )
{
if ( ds.Tables[0].Rows.Count > 0 )
{
lbCount.Text = "您一共开设有 "+ds.Tables[0].Rows.Count.ToString()+" 门课程!";
dgCourse.DataSource = ds.Tables[0];
dgCourse.DataBind();
for ( int i = 0; i < ds.Tables[0].Rows.Count; i++ )
{
if ( dgCourse.Items[i].Cells[3].Text == "必修" )
dgCourse.Items[i].Cells[8].Text = "必修";
else
{
sql = "select count(*) from SC where CId = "+ds.Tables[0].Rows[i]["CId"].ToString();
DataSet ds1 = Db.ExecuteSelectSql(sql);
if ( ds1 != null && ds1.Tables.Count > 0 && ds1.Tables[0].Rows.Count > 0 )
dgCourse.Items[i].Cells[8].Text= ds1.Tables[0].Rows[0][0].ToString();
}
}
}
else
{
lbCount.Text = "您暂时还没有开设课程!";
}
}
5 结论
本论文详细阐述了基于.NET平台的网上选课系统的工作原理、运行机制。分析了ASP.NET动态网页技术、ADO.NET数据库访问原理。
整个系统大致可划分为三大功能模块:学生选课模块、教师成绩管理模块及教务管理模块。各个模块都要对用户的身份进行验证,以保证只对相应身份的登录用户开放。系统功能完备实用,用户权限划分合理,能满足高校公共选修课的选课需求。
系统主要技术特点:
系统前台采用了ASP.NET动态网页技术。ASP.NET有着其它如ASP、PHP、JSP等动态网页技术不具备的优势:运行速度快、一次编译多次运行、页面和代码分离、稳定性好、可靠性强及开发效率高等。后台采用SQLserver2000数据库。
系统基本上基于.NET平台的选课系统的研究与实现能满足我校公选课的选课需要,但还有一些功能待日后完善,也在不断地努力,尽最大可能使系统功能更加完善,运行更加稳定、可靠。为了提高系统的性能,满足高校教学改革和发展的需要,需考虑以下几个方面的优化调整。
(l)更新服务器硬件,使用专用服务器为系统提供web服务
本系统采用的是Windows2003Server作为Web服务器,服务器是一台兼容机,不是专用的Web服务器,所以系统性能肯定会受点影响。为了进一步提高服务质量,可以采用Den或者工BM公司的专用Web服务器,多CPU架构,甚至可考虑配置服务器集群。
(2)数据访问层可考虑全部使用SQLserver的存储过程
本系统的数据访问层大部分不是采用存储过程来访问后台数据库的,所以运行速度会受到一点影响。
(3)考虑选课进行二级管理
随着高校规模的不断扩大,所设的院系会越来越多,学生数量达几万人。如果整个学校的选课教务管理全部由教务处来完成的话,势必给教务处的教务管理人员带来很大的压力。所以,为了避免这种情况发生,教务处可以将权力适当下放,让各个院系自己进行本院系学生和教师的选课管理,各个院系的教学秘书只能管理自己的学生,而不能跨院系。但教务处的教务管理员可以对全校的选课操作进行管理。这项功能准备在日后再补充完成。
(4)加入高校教务管理系统
选课系统是高校教务管理系统的部分之一,我校目前还没有完全实现教务管理无纸化,如没有开发和使用学生学籍管理系统、排课系统、在线考试系统等。为了满足高校教学改革和管理的需要,高校教学教务管理网络化势在必行,所以一定要实现各教务管理子系统的对接以实现教学教务资源的共享。如:将排课信息和学生学籍信息导入选课系统,本系统需要的学生学籍信息和课程排课信息是教务管理工作人员通过手工的方法导入的,这样不利于高校教学管理发展。另外,学生每学期的选课信息没有做永久保存,给已毕业的学生进行成绩查询带来了不便。由于我校目前还没有建立学生学籍管理系统、排课系统,所以本人在开发本选课系统时也没有过多地考虑实现几个系统资源共享的问题,这有待日后完善。
参考文献
[1] 吴晨,《ASP.NET+SQL Server-数据库开发与实例》,清华大学出版社,出版2006年7月
[2](美)内格尔,《C#高级编程(第4版)》,清华大学出版社,出版2006年10月
[3](美)solid,《SQLServer2005从入门与精通(应用技术基础)》,清华大学出版社,出版2006年09月
[4](美)保罗《ASP.NET 2.0经典教程C#篇》人民邮电出版社,出版2007年5月
[5] 陈一文.高校教务管理信息化建设现状及对策思考[J].当代教育论坛,2009:97-99
[6] 董传良,蒋磊宏,张增泰.上海交通大学教学管理信息系统的设计[J].教育信息化,2000:51
[7] 陈越.基于Web服务的高校教务管理系统的设计和实现.硕士学位论文.苏州大学计算机系,2003
[8] 李晓吉,张晓辉,李祥胜,SQL Server2000管理及应用系统开发[M],北京:人民邮电出版社,2002
[9] 丁锂,孙元,Java语言SQI接口JDBC编程技术[M],北京:清华人学出版社,1997:175-224
[10] 周达仁,张昱,用UML和Rational Prcss实现面向对象的三层结构设计[J],
计算机工程,2003
[11] 梁罩宁,沈清,网上选课系统的设计与实现[J],暨南大学学报,2002,39-42
[12] 齐爱朋.C/S、B/S体系架构研究.硅谷.2009.11
[13] 罗敏超,高校选课系统的设计与开发[硕士论文],华中科技大学,2006,11
[14] 朱静丽,基于WEB的选课系统的设计与实现[硕士论文],华南理工大学,2007
[15] 黄曙荣,高校选修课网上选课系统的设计与实现[J],盐碱工学院学报(自然科学版),20099,15(4):49-50
[16] 李冰颖,夏利民,学分制模式下网上选课的算法探究[J],江西科学,2009,22(5):359-360
|
|