网上选课系统的设计与实现
摘 要
随着教育改革的不断深化,建立一套能够适应这些改变的行政管理方案也就显得尤为重要。在高等院校的日常工作中,每个学期都要面临学生的选课工作。以往在选课工作的各个阶段都是手工操作,不但效率低下、工作繁琐,而且容易出错,于是开发一套适合校情的网上选课系统便成为了教务处的迫切需求。
本文设计是根据部分学校的实际情况,在Visual Studio 2005环境中,利用ASP.NET、SQL Server数据库等技术开发了基于B/S模式的网上在线选课系统。在设计中完成了院系、专业、课程、教师、学生信息的管理功能及在线选课、查看选课学生、权限限制等功能。经测试,此系统满足教务系统用户需求,能够促进当前高校教务工作的管理水平,有一定的实际应用价值。
关键词:选课;SQL Server;ASP.NET;教务管理
The Design and Implementation of an Online Course-Choosing System
Abstract
With the continuous deepening of the educational reform, the construction and development of universities play an increasingly important role to raise the overall quality. For this, to establish an administration solution to adapt these changes is particularly important. In the day-to-day work, each student is faced with the course-choosing. For the past, in each stage, the work has done not only inefficient, cumbersome, but also prone to error. So an Online Course-Choosing System which is suitable for the school conditions becomes a exigent demand.
This project is based on some university’s basic needs and developed by Visual Studio 2005 and ASP.NET, SQL Server. This system completed the function of department management, major management, course management, teacher management, student management and online-course-choosing and so on. When the B/S system in working, the Users only need a personal computer can access the site for completing course-choosing and relating information management. This system can meet the current college's needs.
Key words: Course-Choosing; SQL Server; ASP.NET; Education Manage
目 录
论文总页数:24页
“选课”是现在高校行政管理工作中一项很重要的课题。而且是每个学期都必须要面对的问题。选课工作做不好,学生不知道自己将要学习的课程,老师也不知道自己将要讲授的课程,教务处的排课计划、教室安排等其他调度工作也无从做起。因此,如何解决高校教务管理中的选课工作便成为了如今各大高校面临的很实际的问题。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。应用计算机对高校教务信息工作进行辅助,具有人工管理所无法比拟的优点。例如:检索迅速,查找方便,可靠性强,存储量大,保密性能好等。这些优点能够极大地提高教务工作的质量和效率,也是高校教务工作科学化,规范化,信息化管理的重要条件。因此,开发在线选课系统很有必要。
计算机在线系统在现代社会已经深入到各行各业,由于计算机技术的迅速发展和普及,在线选课系统其开发主要包括后台数据库的建立和维护以及前端WEB应用程序两个方面。本文是在Microsoft.NET框架的集成环境中使用Windows.NET平台,C#语言,SQL Server数据库进行开发的。完成了对选课相关信息的计算机管理,以及对信息的添加,修改,删除等计算机管理工作。在文中对相关的技术进行了描述,对系统的各个子系统的功能,设计思路及设计方法都作了详细的描述。
随着进几年高校的持续扩招,学生人数逐年增加。为了满足广大学生的求学需要,各个高校的师资力量、硬件配置也随之增强。这样一来,日常行政部门的工作也就越来越繁重,这一点在选课这块显得尤为突出。而传统的手工操作,即费时又费力,而且容易出错,工作效率较低。因此,拥有一套实用、高效、完善的在线选课系统就显得尤为重要了,它可以提升高校的教育质量和教学管理质量,提高工作效率,降低行政成本。
设计并实现一套完整统一、技术先进、高效稳定、安全可靠的基于B/S架构的网上选课系统。
通过网上在线选课系统的实现,不仅可以提高自己的开发经验,也解决了实际的问题,提高了学校的办公管理的效率,减少了工作出错的几率,节约了资金成本。
ASP.NET 是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的 Web 应用程序。与以前的 Web 开发模型相比,ASP.NET 提供了数个重要的优点:
- 增强的性能。
ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。
- 世界级的工具支持。
ASP.NET 框架补充了 Visual Studio 集成开发环境中的大量工具箱和设计器。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。
- 威力和灵活性。
由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的威力和灵活性。.NET 框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET 也与语言无关,所以可以选择最适合应用程序的语言,或跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资。
- 简易性。
ASP.NET 使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET 页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。
- 可管理性。
ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于服务器环境和 Web 应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了 ASP.NET 框架应用程序的部署。只需将必要的文件复制到服务器,即可将 ASP.NET 框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。
- 可缩放性和可用性。
ASP.NET 在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。
- 自定义性和扩展性。
ASP.NET 随附了一个设计周到的结构,它使开发人员可以在适当的级别“插入”代码。实际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务一直没有变得更容易。
- 安全性。
借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。
随着计算机技术的不断发展,信息化管理成都的不断提高,数据库技术在信息管理中的作用日益重要。Microsoft SQL Server是目前使用最广泛的数据库之一,它与Windows网络操作系统的无缝集成,智能化的内容管理,强大的功能,使它得到大量用户的喜爱。
数据库是数据管理的最新技术,是计算机科学的重要分支。多年来,数据库管理系统已从专用的应用程序包发展成为通用系统软件。由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。
在SQL Server中,使用的是T-SQL语言,T-SQL是ANSI SQL的加强版语言,它提供了标准的SQL 命令,由于SQL语言功能丰富、语言简洁,使用方法灵活,倍受用户和计算机业界的青睐,被众多的计算机公司和软件公司采用。经过多年的发展,SQL语言已成为关系数据库的标准语言。
SQL语言主要有数据定义语言、数据操纵语言、数据控制语言和其他类语言要素组成。T-SQL的分类也有类似于SQL语言的分类,不过做了许多扩充。T-SQL语言的分类如下:变量说明语句、数据定义语言(用来建立数据库、数据库对象和定义其列,大部分是以CREATE 开头的命令)、数据操纵语言(用来操纵数据库中的数据的命令,如:SELECT、INSERT、DELETE等)、数据控制语言(用来控制数据库组件的存取许可、存取权限等的命令,如:GRANT 等)、流程控制语言(用于设计应用程序的语句 ,如:If …While和Case等)、内嵌函数(说明变量的命令)、其他命令(嵌于命令中使用的标准函数)。
在数据库中,数据查询是通过SELECT语句来完成的。SELECT语句可以从数据库中按用户要求检索数据,并将查询结果以表格的形式返回。当然用户在查询数据库时往往并不需要了解全部信息,而只需要其中一部分满足某些条件的信息。在这种情况下就需要在SELECT语句中加入条件以选择数据行,这时,就用到WHERE子句 。WHERE 子句中的条件是由表达式以及逻辑联结词AND、OR和NOT等组成。用户在进行查询时,会出现重复结果,这时就需要使用DISTINCT关键字来取消重复部分。在WHERE子句中,可以使用谓词LIKE来进行字符串的匹配检查。当用户要对查询结果进行排序时,就需要在SELECT语句中加入ORDER BY子句。在ORDER BY子句中,可以使用一个或多个排序,要求其优先级次序从左到右。
一个数据库能否保持信息的正确性、及时性、很大程度上依赖数据库的更新功能的强弱与数据库的实时更新能力,这些操作包括插入、删除、修改,也成为更新3种操作。
SQL Server是Microsoft公司推出的SQL Server数据库管理系统,它使得用户能够更方便,更快捷地管理数据库和进行系统开发。基于要求数据库的吞吐量和稳定性较高,在线选课管理系统的开发选择了该数据库。
C# 是由Microsoft开发的一种新型编程语言,由于它是从C和C++ 中派生出来的,因此具有C++的功能。同时,由于是Microsoft公司的产品,它又同 VB一样简单。对于web开发而言,C#像 Java,同时具有Delphi的一些优点。C#具有以下的优点:
A.简单
1.C#中指针已经消失。
2.不安全的操作,比方说直接内存操作不被允许了。
3.C#中"::"或"->"操作符是没用的。
4.因为它是基于.NET平台的,它继承了自动内存管理和垃圾回收的特点。
5.原始数据类型可变的数据范围像Integer, Floats等。
6.整形数值0和1不再作为布尔值出现.C#中的布尔值是纯粹的true和false值而且没有更多的"="操作符和"=="操作符错误."=="被用于进行比较操作而"="被用做赋值操作。
B.现代
1.C#建立在当前的潮流上,对于创建相互兼容的,可伸缩的,健壮的应用程序来说是非常强大和简单的。
2.C#拥有内建的支持来将任何组件转换成一个web service,运行在任何平台上的任何应用程序都可以通过互联网来使用这个服务。
C.面向对象的
1.C#支持数据封装,继承,多态和对象界面(即java中的interface关键字)。
2.(Integer,Float, Double)在java中都不是对象,但是C#引入和结构体(struts)来使原始数据类型变成对象int i=1;String a=i Tostring();//转换(或者)Boxing。
D.类型安全
1.在C#中我们不能进行不安全的类型转换像将double转换成Boolean.。
2.值类型(常量类型)被初始化为零值而引用类型(对象和类被编译器自动初始化为零值.。
实现教务处、教师及学生对选课工作的需求
提高对系统开发的认识与经验
将一些新的技术应用带到系统中来
保证系统的可维护性与可扩展性
系统在选用结构的时候,有B/S、C/S、Smart Client(智能客户端)三种可能的方案。它们各有各的优缺点。
- B/S架构
B/S架构的优点在于客户端和服务器通过Intranet进行数据交换,客户端基于统一的WEB浏览器,减少了投资,解决了系统维护升级的问题,另外只有极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,这也就充分保护了数据的安全。虽然如此,B/S结构还是有很多的不足,其中最大的缺点是在界面操作上具有很大局限性,用起来很难,开发起来也很费钱。
- C/S架构
采用C/S结构可以减轻服务器运行数据负荷,数据的储存管理也较为透明,最重要的是开发较为迅速。而它的缺点也是不少,它会造成高昂的维护成本,且投资大,维护不方便。在实际开发中,部署不如B/S方便。但由于它能快速开发出较为使用的用户界面,而且可以将部分运算转移到客户端来,所以是一个值得考虑的方案。
- Smart Client
Smart Client是下一代客户端软件的代表,它可以充分利用终端设备的优势(Full PC、PDA、Phone)、能够调用Web Service、支持在线和离线两种状态、能够如同Web应用程序一般简单方便的部署。由于这套系统的目标客户是教务处负责排课的老师,因此它不会涉及到对终端设备的支持,但是方便部署这一点确实需要的,因为这正是C/S的缺点。
通过上边对三种结构的简单介绍,并考虑到本系统面向的对象主要是广大的在校学生,采用B/S模式可以最方便的实现系统的部署,而系统并不涉及大量的运算,无需考虑服务端会超负荷,因此本系统最终决定采用B/S的方案。
要力求最大限度地满足实际工作的需要,充分考虑各业务层次、各管理环节数据处理的实用性,把满足客户生产和管理业务作为第一要素进行考虑。
为适应将来的发展,系统应该具有良好的可扩展性和可维护性。系统设计尽可能模块化、组件化,使应用系统可灵活配置,适应不同的情况。系统的可扩展性应包括能接纳已有的系统和在今后系统软硬件扩展时,能有效地保护已有的投资。特别是在应用需求变化时(应用与系统的需求往往提不全或者经常会变化),有一个较好的应用平台,能容易地加以调整。系统易于扩充升级,既能满足当前业务的需求,又为今后的扩充留有空间。
网站系统与数据库系统的设计要做到安全可靠,防止非法用户的入侵。数据库的备份策略恰当,以防灾难性事故发生。
图形化原则:用户界面的设计应做到美观大方。系统的设计需要考虑用户的计算机水平,用户界面应直观、明了、条理清晰,做到简单易用,没有计算机专业背景的用户也可以轻松的使用本系统完成选课及其他管理工作,实现“傻瓜型”管理——易学、易用、易管理。
对数据库的设计因该体现一致性、完整性、安全性、可伸缩性和规范化
在系统设计中,为了方便对数据库的操作,系统引用了一个微软的开源中间件Microsoft.ApplicationBloks.Data.dll,这个中间件封装了几乎所有的数据库操作以及对数据库异常的处理,使项目在开发的时候省下了不少时间。
为充分保护数据的一致性,数据库中各表都规范化设计,下图是系统数据库中使用的表以及各表之间的关系:
图4-1 数据库关系图
下面就各个表分别给出说明:
(1)课程基本信息(CourseInfo)表,保存课程的基本信息:
图4-2 课程基本信息表(CourseInfo)
1CourseID:课程ID,自动编号;
2CourseName:课程名称;
3TeacherID:教师ID,对应TeacherInfo表的TeacherID;
4CourseDes:课程描述;
5IsDeleted:是否删除,为保证数据安全,删除时并不物理删除,只将此字段置1;
6MajorID:专业ID,此课程对应的专业,与MajorInfo表的MajorID对应;
(2)专业基本信息(MajorInfo)表,保存各院系的专业基本信息:
图4-3 专业基本信息表(MajorInfo)
1MajorID:专业ID,自动编号;
2MajorName:专业名称;
3DeptID:院系ID,对应DeptInfo表的DeptID;
4IsDeleted:是否删除,为保证数据安全,删除时并不物理删除,只将此字段置1;
(3)学生选课信息(StuCourse)表,保存学生的选课信息:
图4-4 学生选课信息表(StuCourse)
1StuCourseID:选课ID,自动编号;
2StudentID:学生ID,对应StudentInfo表的StudentID字段;
3CourseID:课程ID,对应CourseInfo表的CourseID字段;
此表中的每一条记录表示了某一个学生选择了某一门课程。
(4)院系基本信息(DeptInfo)表,保存学校的院系信息:
图4-5 院系基本信息表(DeptInfo)
1DeptID:院系ID,自动编号;
2DeptName:院系名称;
3IsDeleted:是否删除,为保证数据安全,删除时并不物理删除,只将此字段置1;
(5)教师基本信息(TeacherInfo)表,保存学校教师的基本信息:
图4-6 教师基本信息表(TeacherInfo)
1TeacherID:教师ID,自动编号;
2TeacherName:教师姓名;
3TeacherNumber:教师工号;
4DeptID:教师所属专业ID,对应DeptInfo表的DeptId字段;
5IsDeleted:是否删除,为保证数据安全,删除时并不物理删除,只将此字段置1;
(6)学生基本信息(TeacherInfo)表,保存学校学生的基本信息:
图4-7 学生基本信息表(StudentInfo)
1StudentID:学生ID,自动编号;
2StudentName:学生姓名;
3StudentNumber:学生学号;
4StudentGender:学生性别;
5DeptID:学生所属专业ID,对应DeptInfo表的DeptId字段;
6MajorID:学生所属院系ID;
7IsDeleted:是否删除,为保证数据安全,删除时并不物理删除,只将此字段置1;
(7)登录信息(Users)表,保存登录账号信息:
图4-8 用户登录表(Users)
1UserID:账号ID,自动编号;
2Name:登录名称;
3Pass:登录密码;
4Type:账号类型,1为管理员,2为教师,3为学生;
5ID:登录者身份ID,如为管理员,则此字段表示管理员ID,如为教师,则此字段表示教师ID。
登录页面为系统的起始页面,登录界面设计如下图所示:
图4-9 登录界面截图
登录模块的功能是判断登录用户的权限以及将用户导航到不同的页面,管理员、教师和学生登录后的页面都是不相同的。在这个模块使用到了Auth这个类来完成主要的登录操作。
主要代码如下:
/// <summary>
/// 判断用户名和密码是否正确
/// </summary>
public bool Login(string name, string pass)
{
string sqlString = "select count(*) from Users where name='"+name+"' and pass='"+pass+"'";
object obj = SqlHelper.ExecuteScalar(SqlString,CommandType.Text, sqlString);
if(obj!=null && obj.ToString()!="0")
return true;
else
return false;
}
/// <summary>
/// 判断登录类型,1为学生,2为老师,3为管理员
/// </summary>
public int LoginType(string name)
{
string sqlString = "select type from Users where name='"+name+"'";
object obj = SqlHelper.ExecuteScalar(SqlString,CommandType.Text, sqlString);
if(obj!=null && obj.ToString()!="0")
return int.Parse(obj.ToString());
else
return -1;
}
登录时调用此函数,传入参数分别为用户名和密码,函数中对传入的用户名和密码与数据库中的查询结果比较,如果正确,返回true,否则返回false,完成登录账号判断。
院系管理为在线选课系统提供院系信息管理功能,用户可通过它来对学校的院系信息进行添加、修改、删除操作。
表4-1 院系管理涉及数据列表
序号 | 项 | 备注 |
1 | 院系ID | |
2 | 院系名称 |
院系管理截图如下:
图4-10 院系管理界面截图
主要代码如下:
if(txtName.Text=="")
Response.Write("<script defer>alert('名称不允许未空');</script>");
else if(txtName.Text.Length>20)
{
Response.Write("<script defer>alert('最多20个字符');</script>");
}
else
{
CourseBiz.Dept dept = new CourseBiz.Dept();
if(Request["Action"]=="add")//插入院系信息
dept.InsertDeptInfo(txtName.Text.Trim());
else//更新专业信息
dept.UpdateDeptInfo(txtName.Text.Trim(), int.Parse(txtNumber.Text));
string str = "<script language=javascript>window.dialogArguments.document.location.href='Dept.aspx';window.close();</script>";
Response.Write(str);
}
专业管理为在线选课系统提供专业信息管理功能,用户可通过它来对学校的专业信息进行添加、修改、删除操作。
表4-2 专业管理涉及数据列表
序号 | 项 | 备注 |
1 | 专业ID | 自动编号 |
2 | 专业名称 |
主要代码与院系管理模块代码类似。
课程管理为在线选课系统提供课程管理功能,用户通过课程管理可对学校的课程进行添加、修改、删除操作。在课程管理中,可以为课程设置授课教师、以及授课专业等信息。
表4-3 课程管理涉及数据列表
序号 | 项 | 备注 |
1 | 课程ID | 自动编号 |
2 | 课程名称 | |
3 | 授课教师 | 一门课程对应一个授课教师 |
4 | 所属专业 | 开设此课程的专业 |
5 | 课程描述 | 对课程基本信息的描述,在选课过程中可查看 |
主要代码如与院系管理模块代码类似。
学生管理为在线选课系统提供学生信息管理功能,用户通过学生管理可以对学生的基本信息进行添加、修改、删除等操作,同时提供对学生所选课程的列表查看。
表4-4 学生管理涉及数据列表
序号 | 项 | 备注 |
1 | 学生ID | 自动编号 |
2 | 学生姓名 | |
3 | 学生学号 | |
4 | 学生性别 | |
5 | 所在院系 | |
6 | 所在专业 | |
7 | 所选课程 | 可以是多个,列表形式保存 |
主要代码如与院系管理模块代码类似。
教师管理为在线选课系统提供教师基本信息管理功能,用户通过教师管理可以对教师的基本信息进行添加、修改、删除等操作。
表4-5 教师管理涉及数据列表
序号 | 项 | 备注 |
1 | 教师ID | 自动编号 |
2 | 教师姓名 | |
3 | 教师工号 | |
4 | 所属院系 |
主要代码如与院系管理模块代码类似。
学生基本信息维护功为学生登录系统后提供基本信息管理,学生通过基本信息维护功能可以对自己基本信息和登录密码进行修改。
表4-6 学生管理涉及数据列表
序号 | 项 | 备注 |
1 | 学生ID | 自动编号 |
2 | 学生姓名 | |
3 | 学生学号 | |
4 | 学生性别 | |
5 | 所在院系 | |
6 | 所在专业 | |
7 | 登录密码 |
学生个人信息维护模块截图:
图4-11 学生个人信息维护界面截图
主要代码如下:
//判断条件,名称不允许未空,名称长度不超过个字符
if(txtName.Text=="")
Response.Write("<script defer>alert('名称不允许未空');</script>");
else if(txtName.Text.Length>20)
{
Response.Write("<script defer>alert('最多个字符');</script>");
}
else
{
//修改学生基本信息
CourseBiz.StudentEntity stuentity = new CourseBiz.StudentEntity();
string sTemp = rboGender.SelectedValue;
stuentity.DeptID = int.Parse(ddlDept.SelectedValue);
stuentity.MajorID = int.Parse(ddlMajor.SelectedValue);
stuentity.StudentGender = int.Parse(sTemp);
stuentity.StudentName = txtName.Text.Trim();
stuentity.StudentNumber = txtCode.Text.Trim();
CourseBiz.Student stu = new CourseBiz.Student();
stuentity.StudentID = int.Parse(Session["ID"].ToString());
stu.UpdateStudentInfo(stuentity);
//修改学生密码
if(txtPass.Text.Trim()!="")
{
CourseBiz.Auth auth = new CourseBiz.Auth();
int type = auth.LoginType(Context.User.Identity.Name);
stu.UpdateStudentPass(txtPass.Text, int.Parse(Session["ID"].ToString()),type);
}
string str = "<script language=javascript>alert('成功');</script>";
Response.Write(str);
}
选课功能是在线选课系统的核心,通过选课功能,学生登录后可以选择、修改自己喜欢的课程,也可以删除已选课程,查看所选课程。
选课功能截图:
图4-12 选课界面截图
主要代码如下:
//循环插入学生选的课程
foreach(DataGridItem item in dgBulletin.Items)
{
if(item.ItemType==ListItemType.Item || item.ItemType==ListItemType.AlternatingItem)
{
CheckBox chkID = (CheckBox)item.FindControl("chkID");
if(chkID.Checked==true)
{
int CourseID = int.Parse(item.Cells[1].Text);
int StuID = int.Parse(Session["ID"].ToString());
CourseBiz.Student stu = new CourseBiz.Student();
stu.InsertStudentCourse(StuID, CourseID);
}
}
}
Response.Redirect("StuAddCourse.aspx");
}
当教师用户登录系统后可通过查看担任课程情况功能来查看有哪些课程的授课教师是自己,这项功能仅提供给教师用户。
查看担任课程功能模块截图:
图4-13 教师查看担任课程界面截图
主要代码如下:
/// <summary>
/// 初始化DataGrid,如果查询的数据为,DataGrid控件隐藏,提示没有符合条件的数据
/// </summary>
public void DgBind()
{
CourseBiz.Teacher teacher = new CourseBiz.Teacher();
DataTable ds = teacher.GetTeacherCourse(int.Parse(Session["ID"].ToString()));
if(ds!=null && ds.Rows.Count>0)
{
dgBulletin.DataSource = ds;
dgBulletin.DataBind();
}
else
{
lblNo.Visible = true;
dgBulletin.Visible = false;
}
}
选课学生信息查看功能提供给再选选课系统的教师用户,教师用户可以通过这个功能来查看有哪些学生选择了自己担任的课程。
图4-14 教师查看选课学生截图
主要代码如下:
/// <summary>
/// 初始化DataGrid,如果查询的数据为,DataGrid控件隐藏,提示没有符合条件的数据
/// </summary>
public void DgBind()
{
CourseBiz.Teacher teacher = new CourseBiz.Teacher();
DataSet ds = teacher.GetStuInfoByTID(int.Parse(Session["ID"].ToString()));
if(ds!=null && ds.Tables.Count>0 && ds.Tables[0].Rows.Count>0)
{
dgBulletin.DataSource = ds;
dgBulletin.DataBind();
}
else
{
lblNo.Visible = true;
dgBulletin.Visible = false;
}
}
考虑系统的可维护性,系统的数据库链接信息保存在配置文件中,当系统的数据库需要更换的时候,只需要更改配置文件中的数据链接信息就可以将系统切换到新的环境中去。下面是配置文件中的数据库链接信息:
<appSettings>
<!--数据库链接字符串-->
<add key="ConnString" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\WebCourse_Data.MDF;Integrated Security=True;User Instance=True"/>
</appSettings>
图5-1 系统部署图
在登录系统后,当登录者的身份不同的时候,系统将会把用户导航到不同的页面,在测试中,可以看到使用管理员身份、教师身份和学生身份登录系统后界面与功能的不同,如下图所示:
图5-2 管理员登录截图
图5-3 教师登录截图
图5-4 学生登录截图
通过测试可以看到系统很好的完成了这个功能。
在系统完成以后,对系统的各个管理模块进行了添加、删除和修改操作,并且对选课流程进行了一次测试,系统都能很稳定的工作。
结果测试,在线选课系统基本完成了预定的任务。
我这次毕业设计的目标是建立一个在线选课系统,它用到的开发工具是Visual Studio.NET 中的ASP.NET、Visual C#语言以及SQL Server数据库。最终结果表明,网上选课系统符合预定要求。
在设计的开始阶段为了尽快熟悉C#语言,我详细翻阅有关该方面的资料,对书中的基本理论知识逐章逐节地分析,同时还上机操作来加深理解。特别是对书中的一些基本实例,认真学习它的编程思想,吸取它的编程技巧,弄懂程序中每句话的含义。在对所要应用的技术有了一个基本认识之后,就开始构思自己的系统设计。根据任务书的要求我将整个系统化分为不同的模块,然后就逐个模块去一一详细设计,设计的过程中不时地翻阅资料,用一些巧妙的技术来优化程序。程序代码完成之后,要进行运行调试,刚开始由于没有调试经验和方法效率很低,通过老师的精心指导和同学的热情帮助,现在终于顺利完成了,自己也在设计的制作过程中学到了不少东西。
在开发过程中,我深刻体会到了.NET技术的魅力,认识到在网络经济到来的今天,掌握好一门计算机语言,并把它运用到力所能及的应用程序开发中去的重要性和现实意义。
总之,几个月的毕业设计,让我深刻经历了一个项目从需求分析、框架设计、代码编写,程序调试到最终的项目开发成型的整个过程。毕业设计不仅是对我在大学所学知识的综合运用,也是增长知识和经验的好机会,同时也使我明白了面临困难时应保持积极的心态,冷静思考,认真处理才是真正解决困难的最好方法,通过毕业设计的锻炼我自身的动手能力得到很大的提高,为即将走上工作岗位打下了良好实战的基础。