排版格式样本

更新时间:2024-01-02 01:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

本文结合对传统的手工选课方式和现有的网上选课系统进行分析和研究,提出了基于web的网上选课系统(OES Online Elective System)的设计思路并对OES系统进行了设计与实现。

通过对建模工具进行比较,在rational rose环境下应用UML语言,对OES系统进行需求分析,构建了OES系统的信息流程模型、功能模型等。

结合对C/S 模式、B/S 模式的特点进行分析,选择了基于B/S模式的OES系统的体系结构。

基于对开发平台和开发语言的比较,采用了采用了.NET作为开发平台、C#作为开发语言。对数据库开发工具进行分析和研究,选用SQL Server作为数据库开发工具,

探讨了OES系统所应遵循的设计原则之后,建立了OES系统的总体框架模型,并依此对基于web的OES系统进行设计与实现。

最后,使用白盒测试法对OES系统进行了测试。

关键词:网上选课系统 Web UML语言 .NET平台 SQL Server

I

Abstract

Based on the traditional manual methods and classes of existing classes online system for analysis and research, a web-based online Elective System (OES Online Elective System) and the design of its design and implementation.

Through the modeling tools to compare the environment of rational rose UML language, the OES system needs analysis, Construction of the OES system of information flow model, the functional model.

With the C / S model, B / S model of the characteristics of this paper, based on B / S of the OES system architecture.

Based on the development tools were compared, the authors choice of the . NET as a development platform, C # as the development language, SQL Server database as a series of development tools.

The author of the OES system to be followed by the design principles, established a general framework for the OES system model and use development tools design and implementation of a web-based OES system.

Finally, the author of Baiheceshi use of the system was tested.

Key words: Online Elective System Web UML language . NET platform SQL Server

II

文献综述

传统的选课情况是学生选课时,首先根据纸质资料上的信息进行选课,选课完毕之后将选课信息告诉相关的班级干部,随后就是班级干部将选课信息上交给负责老师,负责老师再将学生所选的课程的数目和目录以及选修各个课程的学生人数上交给系管理中心。系管理中心对课程和老师进行安排后再通知各个老师和班级,然后老师对选修他的课程的学生人数和名单进行统计,学生再根据通知一一对坐入位。

然而,随着社会的逐渐进步,学校规模不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长。传统的选课方式已经越来越无法满足人们的要求。传统的选课方式麻烦,不易于更改,以及信息传达速度极其慢。因此在信息爆炸的时代,传统教学管理面临着诸多挑战。基于这些原因,网上选课系统顺应时代的要求出现了。下面将依次对常用的体系结构、技术、语言等进行介绍。

一、体系结构简介

在现有的网上选课系统中,比较常用的体系结构有:C/S模式和B/S模式。这两种模式各有所长,下面将具体介绍这两种体系结构的特点和使用。

(1)C/S体系结构

C/S的结构是客户端/服务器,它通常也叫胖客户端,也就是一个程序的大部分功能,都在客户端实现,而服务器端只实现一小部分功能,对于服务器端的压力相对小一些,但C/S的一大弊端就是,必须要在客户端安装并部署程序才能运行,也就是用户必须得到客户端程序才可以运行。所以得考虑不同系统之间的安装与配置。它主要有如下特点:采用Intranet技术,适用于局域网环境可连接用户数有限,当用户数量增多时,性能会明显下降客户端都要安装应用程序系统扩展维护复杂;代码可重用性差 ;开发费用较低,开发周期较短 。

(2)B/S体系结构

B/S的结构是浏览器/服务器端,它通常也叫瘦客户端,与C/S相反。B/S的程序大部分功能都要在服务器端实现,客户端只用来做辅助的控制功能。B/S的程序直接部署安装在服务器上。用户只需要有浏览器,并知道网址就可以使用程序。客户端不必做任何配置和安装,即可使用应用程序。它的主要特点是:采用

III

Internet/Intranet技术,适用于广域网环境;支持更多的客户。可根据访问量动态配置WEB服务器、应用服务器,以保证系统性能;客户端只需标准的浏览器;采用面向对象技术,代码可重用性好;系统扩展维护简单;开发费用较高,开发周期较长。

采用这种模式,主要的数据计算操作都在服务器端进行,应用程序也在服务器端安装,客户端不用安装应用程序,所有操作均通过浏览器来完成。与传统的C/S结构相比,它具备以下的优点:

① 简化了客户端,客户端软件仅需安装浏览器,客户端硬件配置要求较低。 ② 使用户的操作变得更简单,用户只需了解浏览器的使用,就可访问不同的应用,获取所需的信息。

③ 特别适用于网上信息发布与获取,使得传统的MIS的功能有所扩展。

二、开发平台分析

在网上选课系统中所使用的平台主要有两种:.NET平台和JXTA平台。下面将依次对这两种平台进行研究和分析。

(1)基于.NET平台的分析

.NET 平台是建立在XML和因特网标准协议的基础上的,它包含.NET的基础结构和基础工具,为开发新型的互动协作软件提供了一个先进的体系结构模型,针对现有因特网的缺陷,来设计和创造一种下一代Internet结构,这种结构不是物理网络层次上的拓扑结构,而是面向软件和应用层次的一种有别于浏览器只能静态浏览的可编程Internet软件结构的平台。

.NET 目的是创建和运行下一代 Windows 和 WEB 应用程序的平台,简化WEB 应用程序的开发。.NET 平台以 XML WEB service 为中心,跨越不同组织间的多个应用程序和客户端设备,它包括4 个重要特点:一是软件变服务;二是基于XML 的共同语言,是各应用之间无缝接合的关键;三是融合多种设备和平台;四是新一代的人机界面。

(2)对JXTA平台的研究

基于JXTA的选课系统的研究,旨在希望能通过P2P的技术,利用学校拥有的网络资源,构建一个超级节点服务群,将处理学生选课时的网络负担分发在不同的多个集

IV

合点上。从另一个角度来解决单点服务瓶颈问题,达到负载均衡。采用JXTA平台进行系统开发,能屏蔽复杂的底层P2P技术,缩短开发时间,并且可以实现与操作平台、开发语言无关等优点。

结合实际情况,选课都是由高校教务处统一管理,基于JXTA的选课系统采用两层的半中心化结构。超级节点由学校网络资源组成,专门为学生提供选课服务(包括课程信息发布、学生选课、学生选课查询等)。

在JXTA中,一个集合点首先是一个对等点,它负责管理组内所有Peers,并存储邻近集合点的信息,能够处理来自其他对等点的请求。集合点通常拥有更多资源,是半中心化层次结构中的超级节点,在选课系统中,也是选课服务的提供者。

三、开发技术描述

网上选课系统设计所使用的开发技术有很多,比较常用的有:Ajax技术、.NET技术、JSP/Servlet技术和XML技术。由于各技术的特点都会有所不同,所以各个技术使用时的侧重点也有所不同下。面将就它们的使用以及作用进行一一描述。

(1)Ajax技术的核心技术探讨

传统的B/S 模式交互应用中,采用同步方式由用户提交一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTML页到客户端,应用的响应时间依赖于服务器处理情况, 每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。

Ajax技术作为WEB2.0标准的核心之一,它在客户端和服务器端增加了一个中间层,将页面展现与应用进行分离,实现了用户操作与服务器响应的异步化。这样就可以利用客户端闲置的处理能力承担部分服务器的工作,减轻了带宽和服务器的负担,同时加快了响应速度,缩短了用户等候的时间。

由于网上选课系统的网络用户较多,且选课通常集中在短期时间内,用户在同一时刻进行用户操作的并发业务较多,为提高系统的安全性和访问效率,实现系统WEB 交互的实时响应,整个系统采用四层体系结构进行开发,引入了Ajax技术,即表示层,Ajax引擎层,业务逻辑层和数据层。采用ASP.NET进行体系结构的部署,由客户端通过页面的JavaScript调用Ajax引擎,向服务器发出HTTP请求,客户端无需等待服务器

V

的响应,可以继续与用户进行浏览或交互;服务器端的数据以XML 返回时,Ajax接收数据,并指定由JavaScript来完成处理,以实现用户操作与服务器的异步化。

(2).net技术的描述

对于网络选课系统来说,其核心问题是对Web数据库的设计、操作和管理。本系统是基于ASP.NET技术,以SQL Server 2000为系统数据库,采用的结构模型是一个三层结构:UI(User Interface)层、业务逻辑层和数据层。UI层负责与用户交互,接收用户的输入并将服务器端传来的数据返回给客户端浏览器;业务逻辑层负责接收浏览器传来的请求并将请求传给数据层;数据层通过ADO.NET操纵数据库,为业务逻辑层提供服务,将请求的处理结果返回给客户端浏览器。网上选课系统主要采用B/S和C/S混合结构,客户端以ASP.NET动态网页技术,数据库为SQL Server 2000,从Web数据库应用系统的功能角度划分。

系统采用ASP.NET动态网页技术,利用.NET框架技术生成和执行动态、交互、高效、稳定的站点服务器应用程序。ASP.NET是由活动服务器页面发展而来,ASP.NET利用CommonLanguage Runtime和服务框架网络应用程序提供了一个可靠的、自动化的、可扩展的主机环境。由于ASP.NET不同于ASP,可以实现业务逻辑和html代码分离,因此对于系统的编制和维护显得更加的轻松、高效和合理;另外ASP.NET的一个主要优点是,它支持应用程序的实时更新,管理员不必关掉网络服务器甚至不用停止应用程序的运行就可以更新应用文件。因此我们采用ASP.NET进行开发,并使用ADO.NET技术实现对系统数据库SQL Server 2000的链接。本选课系统与其它高校选课系统的最大区别就在于:它不仅仅是将公共选修课拿出来供选择,学生所有选课工作,包括专业课、跨专业、跨年级、跨校区选课都可以在该系统之上完成,同时它不严格限制选课的人数,从而保证了选课的人性化、公平性、合理性,这在高校选课系统中还是比较领先的。

目前这个系统在洛阳工业高等专科学校选修课程管理过程中运行已超过两年,根据学校的服务器配置,能够轻松满足同时在线选课人数超过2000人,性能稳定、安全可靠,充分提高了教务管理工作的质量与效率,极大地推进了学分制管理改革的发展。

四、开发语言探讨

网上选课系统常用的开发语言有JAVA、C#、VB、C++等,下面将主要就ASP和

VI

Php进行说明。

(1)ASP语言特色

ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Java script)作为自己的开发语言。

ASP是Microsoft开发的动态网页语言,也继承了微软产品的一贯传统,只能执行于微软的服务器产品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上。Unix下也有ChiliSoft的组件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的群组合来扩充,Unix下的COM实现起来非常困难。

(2)Php语言的应用

PHP,即“PHP: Hypertext Preprocessor”, 它是一种HTML内嵌式的语言, 其独特的语法混合了c、Java等。

PHP是一种脚本语言,可以编写包含嵌入式代码的Web页面,只要访问页面就能执行这些代码,并且这些代码还能生成动态的内容作为输出的一部分发送到客户机的Web浏览器。

在网上选课系统中假设的环境是:PHP与Apache Server结合使用。必须安装MySQLC客户机库和头文件,因为建立PHP时需要这些文件,否则PHP不知道如何访问MySQL数据库。

在UNIX 环境下,PHP或者作为内建模块用于Apache,该模块连接到Apache可执行的二进制程序上;或者作为独立的用于传统CGI程序的解释程序。在Windows 环境下,虽然开发在Windows NT环境下运行的Apache PHP4模块的工作正在进行之中,但是此刻的PHP只能作为一个独立程序来运行。

PHP3可在Windows,Unix,Linux的Web服务器上正常执行,还支持IIS,Apache等一般的Web服务器,用户更换平台时,无需变换PHP3代码,可即拿即用。

五、数据库开发工具研究

大家常见的数据库开发工具有很多,在现有的数据库开发工具中所使用过的有很多,mysql、SQL Server、Access、Oracle等。下面将主要就SQL Server和Access

VII

进行说明。

(1)数据库开发工具SQL Server的特色

对于网上选课程序开发人员而言,目前使用最流行的两种后台数据库即为MySQL and SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统。你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL。还有,这两种数据库系统都支持二进制关键词和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。

当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。

(2)Acess的应用

目前,可应用于网上选课系统的数据库开发工具较多,但Access2000是一种普遍应用的关系型数据库. Access的优点在于使用数据表示图或自定义窗体收集信息. 数据表示图提供了一种类似于Excel的电子表格,可使数据库一目了然. 另外,Access允许创建自定义报表用于打印或输出数据库中的信息,并提供了数据存储库,作为关系数据库开发工具,汇集各种信息以供查询、存储和检索,Access2000当为首选。

六、参考文献

[1] 李浩,凌霄霞. 基于B/S三层结构的网络选课系统的设计与实现. 农业网络信息,2007年第3期.

[2] 蔡敏,徐慧慧,黄炳强. 《UML基础与Rose建模教程》. 人民邮电出版社,2006年1月版. [3]Leetle.

EA

Rose

UML

.

http://www.cnblogs.com/leetle/archive/2006/12/08/586176.html, 2008年5月2日.

[4] 邹勇. 《基于.NET的WEB在线考试系统设计与实现》. 电子科技大学软件工程领域硕士学位论文,2007年4月.

VIII

[5] 唐耀. 《C#程序设计实用教程》. 中国水利水电出版社,2006年7月第1版. [6] 范立南,刘天惠等. 《SQL Server 2000实用教程》. 清华大学出版社,2005年11月版.

[7] 郭文夷,戴芳胜. 《Visual C#.NET可视化程序设计》. 华东理工大学出版社,2005年第1版.

[8] 龚波. 《软件过程管理》. 中国水利水电出版社,2003年6月第1版. [9]孙三才,许薰尹. 《精通C#与ASP.NET程序设计》. 中国青年出版社,2001年

6月第1版.

IX

目 录

第1章 引 言 .......................................................... 1 第2章 OES系统分析 ..................................................... 2

2.1 OES系统需求分析............................................... 2

2.1.1 对OES系统的需求定义 ................................... 2 2.1.2 基于UML的分析 ......................................... 3 2.2 OES系统架构模型............................................... 5 2.3 WEB应用程序功能结构........................................... 5 2.4 OES系统设计原则............................................... 6 第3章 OES系统总体设计 ................................................. 8

⒊1 开发环境与开发技术的比较与选择 ............................... 8

3.1.1 开发环境的选择 ......................................... 8 3.1.2 系统开发平台的分析 ..................................... 8 3.1.3 开发语言的选择 ......................................... 9 3.1.4 数据库工具的分析 ...................................... 11 3.1.5 体系结构的分析与比较 .................................. 12 3.2 OES系统框架设计.............................................. 12 3.3 模块设计 ..................................................... 13 ⒊4 OES系统数据库设计............................................ 14 第4章 OES系统详细设计与实现 .......................................... 16

4.1 OES系统登录界面设计.......................................... 16 4.2 学生操作界面的设计与实现 ..................................... 18 4.3 教师操作界面的设计与实现 ..................................... 21 4.4 管理员操作界面的设计与实现 ................................... 22 4.5 OES系统测试.................................................. 22 第5章 结束语 ......................................................... 24 参考文献 .............................................................. 25 致 谢 ................................................................ 26 附录A OES系统数据表 ................................................. 27 附录B OES系统详细编码 ............................................... 28

X

第一章 引 言

随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长。传统的选课方式已经越来越无法满足人们的要求。传统的选课方式麻烦,不易于更改,以及信息传达速度极其慢。因此在信息爆炸的时代,传统教学管理面临着诸多挑战。建立一个OES(网上选课系统Online Elective System)系统的必要性已经越来越明显。

传统的选课情况:学生选课时,首先根据纸质资料上的信息进行选课,选课完毕之后将选课信息告诉相关的班级干部,随后就是班级干部将选课信息上交给负责老师,负责老师再将学生所选的课程的数目和目录以及选修各个课程的学生人数上交给系管理中心。系管理中心对课程和老师进行安排后再通知各个老师和班级,然后老师对选修他的课程的学生人数和名单进行统计,学生再根据通知一一对坐入位。因此,网上选课系统的开发的必要性越来越明显。

随着计算机的逐步发展,网上选课系统出现了,现有的这些系统在一定程度上弥补了传统的选课方式的不足。它使选课过程逐步走向网络化。这些选课系统具有如下优点:便捷性、安全性、出错率低等优点。然而,在社会不断地发展,学生数量不断地增加的过程中,这些选课系统的缺点也越来越明显地暴露在大家的面前。这些网上选课系统的缺点主要表现在以下几个方面:( 1) 操作复杂, 不符合人性化要求。网上选课应满足操作简单方便、步骤简练 ( 2) 系统不稳定。网站时常不能访问, 用户无法登陆, 这显然是网站服务器系统的不稳定造成的。作为系统的设计者, 应在发布网站前进行充分的效能测试, 从而最大程度上避免这种情况的出现。( 3) 系统性能不好由于采取的技术和数据库速度及性能较慢的原因, 从而导致在选课高峰期, 同时有大量的同学选课的时候出现登陆和选课速度很慢或是根本就无法成功登陆及选课的情况。这点在现有的选课系统上表现尤为突出。为了解决这些问题,作者使用C#作为开发语言,SQL Server作为数据库开发工具设计和实现了基于B/S的运行于.NET平台的的OES(网上选课系统Online Elective System)系统。

1

第二章 OES系统分析

2.1 OES系统需求分析

在对系统进行开发之前,先将对系统进行需求分析。即对系统所应具有的功能、性能等进行了解,并在rational rose环境下应用UML语言,进行选课系统需求;给出了主要用例图、活动图、顺序图和状态图,分析学生选课流程,给出选课系统的功能模块框图。

2.1.1 对OES系统的需求定义

不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。

管理员可以完成本系统所有的功能:登陆、学生信息管理(对学生信息进行添加、修改和删除)、教师信息管理(对教师信息进行添加、修改和删除)、查看选课信息、修改课程信息(及时对课程信息进行更新即添加、修改和删除)、修改用户信息(添加用户、修改用户密码和删除用户)。

教师在本系统的功能:登陆、登记学生成绩(对学生成绩进行添加、修改和删除)、查看学生信息 、查看选课情况和修改密码等。

学生在本系统的功能:登陆、选课、查看学分和修改密码等。 除了对功能有需求外,本系统对性能也有如下定义:

? 精度:窗口大小已固定,以免影响字体大小,使界面混乱。 ? 时间特性:瞬间显示。

? 灵活性:在Windows95、Windows98、Windows ME、Windows NT workstation 、

Windows NT server 、Windows 2000 Professional、Windows 2000 Server、Windows 2000 advanced server操作系统中自由运行。

? 稳定性:在操作系统中运行之后与其他软件之间具有良好的兼容性。 ? 安全性:OES系统是典型的数据库操作系统,它的安全性主要表现在数据

库的设计原则上,即数据库必须要具有以下几个原则:一致性、完整性、安全性和规范性。

2

? 可扩展性和可维护性:OES系统设计模块化,使得系统可灵活配置,适应

不同的情况。以便于随着社会的不断发展,系统将来可能要补充不少功能。

2.1.2 基于UML的分析 (1)建模工具的选择

UML(Unified Modeling Language)统一建模语言,是一种功能强大、面向对象的可视化系统分析,用于描述、构造软件系统以及商业建模的语言。它采用一整套成熟的建模技术,广泛地适用于各个应用领域,综合了在大型、复杂系统的建模领域得到认可的优秀的软件工程方法。它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠、更完善的系统模型。从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性。除此以外,它溶入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。

UML 语言建模常用的工具是Enterprise Architect(简称为EA)和Rational Rose(简称为Rose),大体上,EA和Rose在UML建模能力上有相似的功能。EA和

修改密码(from Use Case View)Rose都支持UML九种图中的八种。EA在用户友好性的灵活性中比Rose更胜一筹,特别是序列图。 然而在双向工程中,Rose除C#和VB.NET 外。(from Use Case V...)比EA支持更多的语言,另外,EA和Rose都可以应用设计模式。当使用EA时,用户必须自己创建模式,而(from Use Case View)Rose则提供了Java的20种GOF设计模式。 查看学生信息(from Use Case View)基于以上原因,本文的需求分析中的图例均使用Rational Rose作为建模工具。 修改登陆信息教师登记学生成绩(2)OES系统用例分析 (from Use Case View)登陆(from Use Case View)本系统用例包括登陆、选课、修改密码、查看学分、登记学生成绩、查看选课情况、查看学生信息、教师信息管理、修改登陆信息等。其中,参与者分为三种角(from Use Case View)(from Use Case V...)(from Use Case V...)色:学生、教师和管理员。与学生有关的用例分别为:登陆、选课、修改密码、查看学分等;与教师有关的用例分别为:登陆、修改密码、登记学生成绩、查看选课修改密码(from Use Case View)(from Use Case View)(from Use Case View)参与者管理员查看选课情况教师信息管理修改选课信息情况、查看学生信息等;与管理员有关的用例有:登陆、修改密码、查看选课情况、学生信息管理、教师信息管理、修改登陆信息等。系统用例图如图2-1所示。 学生

(from Use Case V...)选课(from Use Case View)查看学分(from Use Case View)

3

图2-1 系统用例图

(3)学生选课活动过程

UML 活动图被用来描述执行算法的工作流程中所涉及的活动。它是基于用例图的。学生进入登陆界面后先输入账号和密码, 进行身份验证, 这是一个活动状态, 如果验证成功则可以进行选课、查看学分、修改密码以及联系管理员等, 否则就不得不重新输入相关的正确信息,再次进行验证,直至验证成功为止。学生在选课活查找课程动中,先要进行查询可供选择的课程,然后再输入要选的课程的课程号进行选课。学生OES系统在选课的过程中,系统将对学生的选课情况进行判断,如果学生选择的是已经选修查看选课信过的课程,系统将显示“该课程您已经选修过,请选择其他课程!”学生将不得不操作课程改选其他课程,直至系统显示“选课成功“为止。 学生选课活动图如图2-2所示。

查看课程状态更新数据库息选课 : 学生 : web接口1: 登陆 : 选课系统 : 学分管理图2-2 学生选课活动图 (4) 学生选课顺序解析 2: 验证信息( )3: 查看学分信息UML 顺序图被用来描述对象之间传送消息的时间顺序,它用来表示用例中的行为4: 返回顺序。学生进入系统时,先通过输入账号和密码,通过了系统验证之后才能够进入学5: 选课生登陆界面,进行查看学分信息、选课等相应的操作。学生选课顺序图如图2-3所示。

7: 返回6: 成功

图2-3 学生选课顺序图 (5)课程状态信息描述 一个状态图表示一个状态机,主要用于表现从一个状态到另一个状态的控制流。它不仅可以展现一个对象拥有的状态,还可以说明事件(如消息的接收、错误、条件变更等)如何随着时间的推移来影响这些状态。课程的初始状态分为两种:在课程信息表中和不在课程信息表中,学生进行选择后,课程再次呈现出两种状态:允许备选和不能备选。课程状态图如图2-4所示。

4 不在课程信息表中在选课信息表中已选人数=限选人数允许被选已选人数<限选人数不能被选

图2-4课程状态图

(6) OES系统的信息流分析

OES系统的主要处理对象是数据,因此从数据的加工处理出发来分析系统是可行的。结构化分析方法(简称SA)是一种常用的需求分析方法,数据流图是结构化分析的一个重要工具。数据流图从数据传递和加工的角度,用数据源点/汇点、加工、数据流及数据存储文件等图形元素以图形的方式描述数据流从输入到输出的变换过程。OES系统信息流图如图2-5所示。

系统处理 课程信息库 图2-5 OES系统信息流图 课程生成 选课过程 2.2 OES系统架构模型 任课老师 身份验证 学生 本系统WEB 应用程序使用三层架构实现,三层架构即表现层、逻辑层、数据层分离,在部署上表现层为Web Server(IIS 服务器),逻辑层对应学生信Application ServerUI层 DATA。该系统的主要层 (XML WEB SERVICE),数据层对应逻辑层Database Server(SQL SERVER)息库 操作都是通过对数据库进行操作完成的,因而本系统是一个典型的数据库操作系统。在系统中用户在客户端层进行操作,最终实WEB表单 WEB服务器上通过逻辑层对DATANET 服务器 现其功能。WEB客户端WEBXML WEB SERVER ADO.DBMS 应用程序架构如图2-6所示。 admin.aspx组件服务 学生信息管理

课程信息管理

修改登录信息图2-6 WEB应用程序架构 密码修改2.3 WEB应用程序功能结构 参与者login.aspxteacher.aspx学生信息管理选课基于Visual C#.NET的WEB程序是面向对象的程序设计,下面将用UML描述其功能结构,WEB应用程序功能结构如图2-7所示。

student.aspx密码修改登记学生成绩 图2-7 WEB应用程序功能结构

5

2.4 OES系统设计原则

(1) 适用性原则

网上选课系统力求最大限度地满足师生们的需要,充分考虑使用的便捷性、各个模块之间数据处理的实用性。操作界面设计考虑到视觉特征,界面力求简便实用。

(2) 安全性原则

网上选课系统是一个典型的数据库操作系统,它对数据库的要求较高,对数据的安全也就提出了更高的要求。这一点将在下面数据库设计的原则中提到。

(3) 先进性原则

在技术上采用先进、成熟的软件开发技术,面向对象的设计方法,可视化的、面向对象的开发工具。

(4) 可扩展性和可维护性原则

随着社会的不断发展,系统将来可能要补充不少功能,因而系统应具有良好的可扩展性和可维护性。软件设计应尽可能模块化、组件化,使系统可灵活配置,适应不同的情况。数据库的设计也应尽可能考虑到将来的需要。

(5) 标准化原则

软件设计执行有关软件工程的标准,保证系统质量,提供完整、准确、详细的开发文档,为用户以后开发提供源程序,应用符合行业有关标准。

(6) 稳定性原则

网上选课系统付诸使用之后就要求系统具有一定的稳定性,这主要就要求该系统与其他软件之间具有良好的兼容性。

(7) 数据库设计原则 ①一致性原则

对信息进行统一、系统地分析与设计,协调好各数据表,做到各个表与其他表的主键与外键的一致性,使得数据统一,保证系统数据的一致性和有效性。

②完整性原则

数据完整性是指数据的精确性和可靠性。它包括实体完整性、域完整性、参照完整性和用户定义的完整性。要防止合法用户使用数据库时向数据库加入不合语义的数据。数据库的设计时加入主键等约束,防止出现错误的信息。

6

③安全性原则

数据库的安全性是指保护数据,防止非法用户使用数据库或合法用户非法使用数据库造成数据写露、更改或破坏。系统管理主要任务是提高系统安全性并对系统提供良好的维护。

④规范性原则

数据库的设计应遵循规范化理论,规范化程度过低的关系,可能会存在插入、删除异常,修改复杂,数据冗余等问题。

7

第三章 OES系统总体设计

⒊1 开发环境与开发技术的比较与选择

设计和实现OES系统的工具非常多,可用的语言有:JAVA、C#、C、C++、VB等,可用的数据库开发工具有:SQL Server、mysql、Oracle、Access等。因此选择合适的开发工具与环境是开发本系统的关键之处。 3.1.1 开发环境的选择

(1)系统硬件:服务器配置为P4 双XEON 3.2G CPU、3G内存,SCSI 80G做RAID硬盘。

(2)系统软件:服务器系统软件采用应用服务器:Internet 信息服务(IIS)管理器;Microsoft Windows XP/2000/2003及其以上版本,配置IIS6.0,安装.NET Framework,采用C#.NET为编程语言,数据库系统采用SQL Server 2000。

(3)选课终端:接入校园网的计算机均可作为选课终端,学生、教师可使用安装有IE6.0 以上浏览器的联网计算机上网访问本系统。 3.1.2 系统开发平台的分析

常见的用于网上选课系统开发的平台主要有两种:.NET平台和JXTA平台。下面将依次介绍这两种平台的特点

(1) .NET平台

.NET 平台是建立在XML 和因特网标准协议的基础上的,它包含.NET 的基础结构和基础工具,为开发新型的互动协作软件提供了一个先进的体系结构模型,针对现有因特网的缺陷,来设计和创造一种下一代Internet 结构,这种结构不是物理网络层次上的拓扑结构,而是面向软件和应用层次的一种有别于浏览器只能静态浏览的可编程Internet 软件结构的平台。

.NET 目的是创建和运行下一代 Windows 和 WEB 应用程序的平台,简化WEB 应用程序的开发。.NET 平台以 XML WEB service 为中心,跨越不同组织间的多个应用程序和客户端设备,它包括4 个重要特点:一是软件变服务;二是基于XML 的共同语

8

言,是各应用之间无缝接合的关键;三是融合多种设备和平台;四是新一代的人机界面。

.NET 平台包括四大核心技术:.NET Framework、.NET 企业服务器、模块构建服务、Visual Studio .NET(是基于XML的编程工具和环境,它便于快速开发符合.NET体系的软件服务,使其在独立设备、企业数据中心和因特网之间的传送更加容易)。

(2) JXTA平台

JXTA具体来说是一种标准组件平台,它提供了用于开发分布式服务和应用程序的基本组件。整套技术由一组开放源码的P2P协议组成,这组协议使网络上任何连接着的计算设备的协作变为可能。基于协议而不是基于API(应用程序接口)意味着JXTA技术可以用任何语言在任何操作系统上运行。JXTA使可共同使用的P2P应用程序拥有了许多能力,其中包括:在能简单地穿过防火墙通讯的不同设备的用户间建立对等组,在网络上找对等体的能力——甚至穿过防火墙,简化文件共享,自动侦测到新的网站目录,对对等体的远程监控,访问深层网络的数据,以及提供安全的通讯。JXTA提供了一个用分层的概念来实现P2P应用的方法

核心层(JXTA Core) :这一层封装了最根本的东西,包括Peer、对等组、Peer发现、Peer通信、Peer监视和相关的安全原语.

服务层(JXTA Services) :这一层包括对于P2P网络不是必需的,但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制.

应用层(JXTA App lication) :这一层包括了应用JXTA服务开发出来的完整的P2P应用程序,例如myJXTA, JXTA2CAD等应用程序.

通过以上描述可知,.NET平台的开发效率较高,而JXTA平台的灵活性比较强。由于本次研究时间有限,故本系统采用.NET平台。 3.1.3 开发语言的选择

开发网上选课系统的语言有很多,如:C、C++、JAVA、VB、Php、C#等,下面将分别对它们进行说明。

(1)JAVA语言

JAVA语言是一种新的计算机语言,它的历史很短。它的前身是Oak计算机语言。它具有简单性、网络特性、面向对象、平台无关性、可移植性、鲁棒性、安全性、多

9

线程性和解释性等。

它是一种易学好用,健壮性高,但执行效率相对较低的计算机语言。它适合于各种对执行时间要求不是很苛刻的应用程序。

(2)与VB语言相比较

VB具有易学好用、简单方便等特性,且VB支持后期绑定,但是VB不支持操作符重载,使得程序不具有可重复利用性。

(3)与PHP语言相比较

PHP, 即“PHP: Hypertext Preprocessor”, 它是一种HTML 内嵌式的语言, 其独特的语法混合了c、Java等。它是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。

PHP 是一种脚本语言,可以编写包含嵌入式代码的Web 页面,只要访问页面就能执行这些代码,并且这些代码还能生成动态的内容作为输出的一部分发送到客户机的Web 浏览器。然而美中不足的是PHP提供的数据库接口支持不统一。

(4)C#

C#基本上继承了C语言的语法风格,同时,又从C++那里继承了面向对象特性。它们之间的不同点也是很明显的。主要表现有:第一,C#的对象模型已经面向Internet进行了重新的设计,使用的.NET框架的类库,与C++的对象模型结构完全不一样。因此,在编程中没有太大的相识感。第二,C#语言不再提供对指针类型的支持,使得程序不能随便访问内存地址空间,从而更加健壮。第三,在面向对象技术方面,C#不再支持多重继承,避免了以往类层次结构中由于多重继承带来的可怕后果。相应的功能可以通过对接口的多重继承来实现。

从整体上来看,C#与Java极其相似,甚至超过了C#与C、C++的相似程度,这些相似之处包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角.另外,Java通

10

过Java虚拟机来实现平台的可移植性,而C#则是首先被编译成一种中间语言(类似Java的字节码),然后,在执行时由公共语言运行时中的即时编译器编译成本机代码交由CPU处理。而且,Java虚拟机只能执行Java程序,而即时编译器能够编译任何.NET框架支持的语言(如C#、Visual Basic、J#)编写的程序。

综上所述,C#使程序员能快速方便地创建基于Microsoft .NET平台的解决方案。这种框架使C#组件可以方便地转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet调用它。 3.1.4 数据库工具的分析

本系统所使用的数据库工具是SQL Server 2000,它与Windows界面风格完全一致。 (1) 与Access相比较

Access这个软件本身就具有开发者使用的界面和适合于“最终用户”的界面,也就是我们通常说的前后台结合。Access在很多方面都很优秀,然而Access 中的一些对象虽然可以被 VB 调用,但是必须在调用的机器上安装 ACCESS 这个软件(COPY一个MDB文件是不够的)或者安装额外的 ActiveX 控件。使用时不是太方便。

(2) 与Oracle相比较

Oracle无范式要求,可根据实际系统需求构造数据库;采用标准的SQL结构化查询语言;具有丰富的开发工具,覆盖开发周期的各阶段;支持大型数据库;易于开发;支持异种网络、异构数据库系统等。但是Oracle的价格太高,如果在此系统中使用会有点“大材小用”的意味。

(3) 与MySql相比较

与MySql相比,SQL Server也未尝不是一个好选择,因为界面比较友好,上手快,参考书也多和ASP等等也紧密结合,此外 MySql不支持视图、子查询、触发器、事务处理、外健等,这样看来SQL Server将MySql的缺点几乎全都转化为优点了。

综上所述,SQL Server除了具有扩展性,可靠性以外,还具有十分强大的Web功能,支持扩展标记语言XML,实用关系数据库引擎可以返回和储存XML文档数据,有利于构建异构系统的互操作性,并支持基于XML数据的插入、删除和更新等数据库操作。SQL Server 2000对XML的支持表现在以下几个方面:

①可以通过统一资源定位符访问SQL Server;

11

②支持XML-Data模式; ③可检索、编写XML数据;

④SQL Server 2000 OLE DB增加了对XML文档的支持。 3.1.5 体系结构的分析与比较

C/S的结构是客户端/服务器,它通常也叫胖客户端,也就是一个程序的大部分功能,都在客户端实现,而服务器端只实现一小部分功能,对于服务器端的压力相对小一些,但C/S的一大弊端就是,必须要在客户端安装并部署程序才能运行,也就是用户必须得到客户端程序才可以运行。所以得考虑不同系统之间的安装与配置。它主要有如下特点:采用Intranet技术,适用于局域网环境可连接用户数有限,当用户数量增多时,性能会明显下降客户端都要安装应用程序系统扩展维护复杂;代码可重用性差 ;开发费用较低,开发周期较短 。

B/S的结构是浏览器/服务器端,它通常也叫瘦客户端,与C/S相反。B/S的程序大部分功能都要在服务器端实现,客户端只用来做辅助的控制功能。B/S的程序直接部署安装在服务器上。用户只需要有浏览器,并知道网址就可以使用程序。客户端不必做任何配置和安装,即可使用应用程序。它的主要特点是:采用Internet/Intranet技术,适用于广域网环境 ;支持更多的客户。可根据访问量动态配置WEB服务器、应用服务器,以保证系统性能;客户端只需标准的浏览器 ;采用面向对象技术,代码可重用性好 ;系统扩展维护简单 ;开发费用较高,开发周期较长。

浏览器/服务器(Browser/Server)的程序直接部署安装在服务器上。客户端不必做任何配置和安装,只需要有浏览器,并知道网址就可以使用程序即可使用应用程序。它的主要特点是:采用Internet/Intranet技术,支持更多的客户;可根据访问量动态配置WEB服务器、应用服务器,以保证系统性能;只需安装服务器,客户端为浏览器,如:IE,即可完成数据通信功能。

3.2 OES系统框架设计

OES系统中涉及到了密码修改、学生选课、教师登记学生成绩、教师信息管理、学生信息管理、联系管理员等功能。各功能模块分配在学生操作模块、教师操作模

12

联系管理员 修改密码 学生信息管理 用户信息管理 管理员操作模块 修改选课信息 查看选课信息 修改登录信息 教师信息管理 块、管理员操作模块这三个模块中实现,OES系统总体设计框架图如图3-1所示。

图3-1 OES系统总体设计框架图

3.3 模块设计

系统的起始页为一个登陆页面,登陆系统之后,根据登陆的用户类型可将系统划

学生操作模块 管理员操作模块。各个模块均仅供一分为三个模块:学生操作模块、教师操作模块、个角色登陆。 (1) 学生操作模块 学生进入系统后需查询自己的一些基本情况、选课、修改密码、查看学分和联系选课 修改 查看 学分 联系 管理员 管理员等。学生操作模块如图3-2所示。 模块 密码

图3-2 学生操作模块

选课模块:学生进入系统后选课模块中显示出课程信息表中的所有内容,学生通过查看过课程信息之后,在下面的TextBox中填入所要选择的课程的课程号即可进行选课。

修改密码:学生进入系统之后对自己的登录密码进行修改。

查看学分:学生可以对自己的学分情况进行查询,知道自己已修满多少学分,还需修多少学分就可以修满在校期间所应修满的所有学分。

联系管理员:如果对选课系统中的某一项有异议,可以写信给管理员,使得OES系统更加完善。 (2) 教师操作模块 教师进入系统后需进行登记学生成绩、修改密码、查看选课情况、查看学生信息、联系管理员等操作。教师操作模块如图3-3所示。

登记学 生成绩 修改 密码 查看选 课信息 查看学 生信息 联系管 理员 教师操作模块

图3-3 教师操作模块

13

查看选课信息:查看课程的被选情况,了解自己课程的备选情况。

查看学生信息:对学生的个人信息和以往选课的情况进行查询,以便于更好的管理员操作模块 对班级学生情况进行了解,更好地与学生沟通,做好教育工作。 (3) 管理员操作模块 管理员进入系统后进行修改密码、用户信息管理、查看选课信息、修改选课信息、修改登陆信息等操作。管理员操作模块如图3-4所示。

修改密码 用户信 息管理 修改选 课信息 查看选 课信息 修改登 陆信息

图3-4 管理员操作模块

用户信息管理:管理员登陆系统后可以对教师和学生信息进行管理,及时对出错信息进行修改。

修改选课信息:对课程的情况及时把握,防止有课程信息出错,可以及时地添加和删除课程,以便学生进行修改。

修改登录信息:对学生和教师登录信息进行修改,以防止出现不必要的麻烦。 由于各子系统是基于WEB的系统,系统的设计者的任务是进行系统的总体分析和设计,并负责实现如下功能:①OES系统的总体分析设计工作;②数据库设计工作;③选课系统的实现工作。

⒊4 OES系统数据库设计

由于OES系统是一个典型的数据库应用系统,因而系统实现的另外一个关键步骤是如何选择一个良好的数据库管理系统软件DBMS。在数据库和应用程序之间的DBMS完成所有对数据库进行的操作,使用DBMS结构最大的好处就是它为用户屏蔽了数据物理层的技术细节。一般来说现代的DBMS 具备以下几个功能:提供高级的用户接口、查询处理和优化、并发控制、事务的恢复功能、完整性约束检查、访问控制、数据目录管理等。

在OES系统中除了有WEB应用程序以外,还有一个SUBJECT数据库。在该数据库中有课程信息表、学生信息表、学分信息表、教师信息表、登陆信息表、系别信息表、选课信息表、成绩信息表等数据表。

14

课程信息表的主要作用是对所有课程信息进行集中管理,课程信息表如图3-5所示。

图3-5 课程信息表

学生信息表的主要作用是对所有学生信息进行管理,并与成绩信息表进行关联。其表的结构非常简单,学生信息表如图3-6所示。

图3-6 学生信息表

数据库中各个表均相关联。其他各表的详细情况见附录A OES系统数据表。

15

第四章 OES系统详细设计与实现

在本系统中主要有四个主要界面:登陆界面、学生操作界面、教师操作界面和管理员操作界面。所有用户均由登陆界面操作界面,各个用户登陆时根据各自角色的不同,分别进入学生操作界面、教师操作界面和管理员操作界面。

4.1 OES系统登录界面设计

登陆界面涉及到了用户身份的认证和密码安全,当输入用户名时,用户名文本框中的所输入的信息时可见的,而密码文本框中的信息时不可见的。在设置属性时,只需将密码文本框属性中的TextMode设置成Password即可,这时再输入的密码就显示成为黑点了。登陆界面如图4-1所示。

图4-1 登陆界面

此界面的实现代码如下: using System;

using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web;

using System.Web.SessionState; using System.Web.UI;

using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace WebApplication1 { ///

/// login 的摘要说明。

16

///

public class login : System.Web.UI.Page {

protected System.Web.UI.WebControls.Label Label1; protected System.Web.UI.WebControls.TextBox TextBox1; protected System.Web.UI.WebControls.Label Label2; protected System.Web.UI.WebControls.TextBox TextBox2; protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Button Button2; protected System.Web.UI.WebControls.Calendar Calendar1; protected System.Web.UI.WebControls.Button Button3; protected System.Web.UI.WebControls.Label Label3; protected System.Web.UI.WebControls.Image Image1; private void Page_Load(object sender, System.EventArgs e) { }

#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { }

///

/// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。

17

// 在此处放置用户代码以初始化页面

//

// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 //

InitializeComponent(); base.OnInit(e);

}

}

///

private void InitializeComponent() {

this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load);

}#endregion

4.2 学生操作界面的设计与实现

学生进入系统之后,可进行选课、修改密码、查看学分、查看选课情况、联系管理员等操作。其中选课、查看学分、查看选课情况是典型的数据库操作过程。对页面的设计中使用了Panel组件,初步设计调试成功之后,将所有的Panel控件进行重叠,通过设置其属性Visible的值为true或false来对页面进行控制。

在选课这一操作中,学生在点击了选课这一LinkButton之后Panel1就会呈现出来,而其他的Panel则被隐藏起来,且Panel1中的控件DataGrid中就会显示出数据库中的课程信息这一个数据表。学生只需在课程号这一栏中输入自己所想要选的课程所对应的课程号之后点击“选课”按钮即可完成选课操作。

学生操作界面如图4-2所示。

图4-2 学生操作界面

此界面的实现代码如下: using System;

using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web;

18

using System.Web.SessionState; using System.Web.UI;

using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace WebApplication1 { ///

/// student 的摘要说明。 ///

public class student : System.Web.UI.Page {

protected System.Web.UI.WebControls.Label Label1;

protected System.Web.UI.WebControls.LinkButton LinkButton1; protected System.Web.UI.WebControls.LinkButton LinkButton2; protected System.Web.UI.WebControls.LinkButton LinkButton4; protected System.Web.UI.WebControls.LinkButton LinkButton5; protected System.Web.UI.WebControls.Label Label2; protected System.Web.UI.WebControls.Panel Panel1; protected System.Web.UI.WebControls.Panel Panel2; protected System.Web.UI.WebControls.Label Label3; protected System.Web.UI.WebControls.Label Label4; protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Label Label5; protected System.Web.UI.WebControls.TextBox TextBox1; protected System.Web.UI.WebControls.TextBox TextBox2; protected System.Web.UI.WebControls.Label Label6; protected System.Web.UI.WebControls.Label Label7; protected System.Web.UI.WebControls.TextBox TextBox3;

19

protected System.Web.UI.WebControls.TextBox TextBox4; protected System.Web.UI.WebControls.Label Label8; protected System.Web.UI.WebControls.Label Label9; protected System.Web.UI.WebControls.Label Label10; protected System.Web.UI.WebControls.Label Label11; protected System.Web.UI.WebControls.Label Label12; protected System.Web.UI.WebControls.Label Label13; protected System.Web.UI.WebControls.Label Label14; protected System.Web.UI.WebControls.Label Label15; protected System.Web.UI.WebControls.Button Button2; protected System.Web.UI.WebControls.Label Label16; protected System.Web.UI.WebControls.Label Label17; protected System.Web.UI.WebControls.DataGrid DataGrid1; protected System.Web.UI.WebControls.Label Label18; protected System.Web.UI.WebControls.Label Label19; protected System.Web.UI.WebControls.Label Label20; protected System.Web.UI.WebControls.TextBox TextBox5; protected System.Web.UI.WebControls.Button Button3; protected System.Web.UI.WebControls.Label Label21; protected System.Web.UI.WebControls.Label Label22; protected System.Web.UI.WebControls.Label Label23; protected System.Web.UI.WebControls.Label Label31; protected System.Web.UI.WebControls.Panel Panel3; protected System.Web.UI.WebControls.DataGrid DataGrid2; protected System.Web.UI.WebControls.Label Label24; protected System.Web.UI.WebControls.Label Label25; protected System.Web.UI.WebControls.Label Label26; protected System.Web.UI.WebControls.TextBox TextBox6;

20

}

protected System.Web.UI.WebControls.Label Label29; protected System.Web.UI.WebControls.Label Label28; protected System.Web.UI.WebControls.Button Button4; protected System.Web.UI.WebControls.Label Label30; protected System.Web.UI.WebControls.Image Image1; private void Page_Load(object sender, System.EventArgs e) { }

this.Panel1.Visible=false; this.Panel2.Visible=false; this.Panel3.Visible=false;

// 在此处放置用户代码以初始化页面

4.3 教师操作界面的设计与实现

教师进入界面之后,可进行登记学生成绩、修改密码、查看选课情况、查看学生信息、联系管理员等操作。其中登记学生成绩是通过教师通过对数据库进行一个添加数据表的操作来实现的。这样老师就可以直接通过网络把学生成绩上传,而不需要通过教务处来发布了,这样不仅可以节约时间而且可以减少成绩处理上时间的浪费,使得学生成绩的发布更加及时。

在登记学生成绩这一操作中,教师点击“登记学生成绩”这一LinkButton之后Panel1中的Visible值表现为true,教师只需依次按照Label中的名称相应地填入正确的信息即可将相应的成绩信息添入SUBJECT数据库中的学生成绩表中。

查看选课情况中,教师可以填入课程名,从而查阅到相应的选课情况,并可通过学生的选课人数等情况来总结上次授课的受欢迎度,同时也可以查到相应的其他教师所授课程的选课情况,从而进行总结归纳,以便于下次授课的顺利进行,并取得更加辉煌的成绩。

查看学生信息中,教师只需输入相关学生对应的学号就可以对学生的有关信息

21

进行查询。

教师操作面如图4-3所示。

图4-3 教师操作界面

此界面的具体代码详见附录B 详细编码。

4.4 管理员操作界面的设计与实现

管理员进入系统后可进行修改密码、用户信息管理、查看选课情况、修改登陆信息、修改选课信息等操作。

其中修改密码是专指管理员对自己的登录信息中的密码的修改。用户信息管理包括对学生信息的管理和教师信息的管理。在用户信息管理中,管理员可对用户信息进行添加、修改和删除等操作。修改登陆信息是指管理员可以对数据库中的登陆信息表进行操作,如添加用户信息、修改用户密码、删除用户、查看全部用户信息等。

在OES系统中,管理员不是从后台登陆,而是与学生、教师等角色一样从前台登陆就可以使得管理员对于与选课有关的必要操作,可以进行一些必要的操作,但同时也限制了管理员利用从系统后台登陆通过界面对用户随意删减的现象,从另外一个角度上来保证了系统的安全性和数据库的完整性、安全性和稳定性等。

管理员操作界面如图4-4所示。

图4-4 管理员操作界面

此界面的具体代码详见附录B 详细编码。

各个界面中的具体功能实现的程序代码详见附录B 详细编码。

4.5 OES系统测试

测试是一个发现错误、改正错误、重新测试的过程,它的目标只能是发现错误,故本系统的测试目标是发现程序中尚未发现的错误,本系统测试采用白盒测试。其测试步骤如下:

首先,进行单元测试。在单元测试期间,通常考虑模块的四个特征:模块接口、

22

局部数据结构、重要的执行路径、错误执行路径。再单元测试的过程中应最先测试穿过模块接口的数据流;次之,进行数据结构的测试;再次之,进行执行路径的选择测试。

然后,对系统进行集成测试。由于模块的组装存在一个接口问题,故每个模块完成了单元测试,把它们组装在一起并不一定能够正确地工作。集成测试可“自顶向下”地进行,也可“自底向上”地进行。本系统是采用的“自底向上”的方式,即从软件结构最低的一层开始,逐层向上地组合模块并测试。

23

第五章 结束语

本文对传统的手工选课方式和已有的网上选课系统进行了详尽的分析、比较和研究,提出了基于web的网上选课系统(OES Online Elective System)的设计思路。

通过对常用的两种建模工具(rational rose和Enterprise Architect)进行比较和分析,最后决定在rational rose环境下应用UML语言,对OES系统进行需求分析,给出了系统的用例图、活动图、顺序图和状态图,并提出了OES系统的信息流程模型、功能模型等。

通过对C/S模式、B/S模式的优、缺点进行比较,本文提出了基于B/S模式的OES系统的体系结构。

对可用于开发选课系统的几种语言进行了详尽的比较之后,作者最终选择了C#作为开发基于web的OES系统的开发语言。

作者基于OES系统的特点,提出了设计原则,并根据设计原则给出了OES系统的总体框架模型。根据登陆系统的不同角色,本系统由4 个WEB 界面(登陆界面、学生界面、教师界面、管理员界面)实现课程管理、选课管理、学分管理、用户信息管理和登录信息管理五大功能。

最后,作者使用白盒测试法对系统进行测试,首先对系统进行单元测试,然后进行集成测试,系统满足了网上选课的各项要求,达到了预期目的。

本课题设计与实现了一个“基于web的OES系统的设计与实现”。

由于时间和知识水平的限制,本系统尚存在一些不足之处,如登录模块中没有设置验证码,测试时没有对测试方法进行分析与比较,对学生的选课信息也尚未进行归类处理,但作者相信在下一版本中会加强这些模块,克服系统的不足。

24

参考文献

【1】李浩,凌霄霞 基于B/S三层结构的网络选课系统的设计与实现 《农业网络信息》,2007 年第3 期

【2】蔡敏,徐慧慧,黄炳强 《UML基础与Rose建模教程》 人民邮电出版社,2006年1月版 【

Leetle

EA

Rose

UML

http://www.cnblogs.com/leetle/archive/2006/12/08/586176.html, 2008年5月2日

【4】邹勇 《基于.NET的WEB在线考试系统设计与实现》 电子科技大学软件工程领域硕士学位论文,2007年4月

【5】唐耀 《C#程序设计实用教程》 中国水利水电出版社,2006年7月版 【6】范立南,刘天惠等 《SQL Server 2000实用教程》 清华大学出版社,2005年11月版

【7】郭文夷,戴芳胜 《Visual C#.NET可视化程序设计》 华东理工大学出版社,2005年版

【8】龚波 《软件过程管理》 中国水利水电出版社,2003年6月版

【9】田玲,冯友季,李柏林 基于ASP.NET的研究生选科系统的设计与开发 《当代经理人》,2006年3月版

【10】孙三才,许薰尹 《精通C#与ASP.NET程序设计》 中国青年出版社,2001年版

【11】王立福,麻志毅,张世琨 《软件工程(第二版)》 北京大学出版社,2002年版

【12】王少锋 《面向对象技术UML教程》 清华大学出版社,2004年版

【13】贺阿龙 办公自动化综合信息系统的分析与设计 西安理工大学计算机技术专业硕士学位论文,2006年10月

【14】赵保平 基于web的数据库访问技术 中国原子能科学研究院应用数学专业计算机应用方向硕士学位论文,2000年10月

25

致 谢

在这里,我要特别感谢我的指导老师龚义建老师。在整个毕业设计过程中,在整个OES系统的开发过程中,是他给了我悉心的指导和帮助,再次表示衷心的感谢。

通过本次毕业设计,我对WEB服务器、数据库、C#等系列知识都有了一定的了解。使用C#.NET开发页面的能力也有了很大提高。由于在此之前对于C#知识的了解不多,所以从一开始就碰到许多困难。还有页面开发中出现的大量问题,在很长一段时间内无法解决问题,后来在看了有关C#编程方面的资料后才将问题解决。

正如龚义建老师所说的“在毕业设计过程中所学习的东西也许会比你们大学四年所学的东西还要多”,这些都要求大家一定要通过实践才能找到解决问题的方案。在整个毕业设计的过程中,作者深刻的体会到了这一点的重要性,也牢记住了这一点,在今后的学习、生活和工作中也会继续将这种方法延续下去。

论文的编写中,指导老师龚义建老师给予了全程的辅导与监督,给了我本次设计的机会并提供指导,在此表示深深的感谢!

系统虽然进行了多次测试,也发现了不少问题,经过逐步改进之后已有不小的进步,但是还又不少的问题仍然存在,软件是在不断的测试使用中发现并改正错误从而得到完善的。

由于时间仓促,.NET的功能高深莫测,再加上开发者水平有限,错误难免,在此恳请各位老师批评指正。

26

附录A OES系统数据表

学分信息表的主要作用是使学生对自己所修学分的情况有个全面的了解,便于适当地选课。学分信息表如图A-1所示。

图A-1 学分信息表

教师信息表用于教务处对教师信息的管理。教师信息表如图A-2所示

图A-2 教师信息表

登陆信息表用于管理员对用户登陆信息的管理,管理员可以对登录信息表中的数据进行添加、删除和修改等操作。登陆信息表如图A-3所示。

图A-3 登陆信息表

选课信息表用于学生、教师和教务处对选课信息的及时把握。学生可以根据实时情况选课,教师可以根据选课情况来了解自己所教课程的受欢迎度,并进行反思和改进;管理员可以根据此表对课程信息及时地添加、修改和删除,并通过查看选课情况对课程及老师的受欢迎度进行把握。选课信息表如图A-4所示

图A-4 选课信息表

27

附录B OES系统详细编码

(1)管理员界面的实现代码如下:

using System;

using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web;

using System.Web.SessionState; using System.Web.UI;

using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace WebApplication1 {

///

/// admin 的摘要说明。 ///

public class admin : System.Web.UI.Page {

protected System.Web.UI.WebControls.Label Label1;

protected System.Web.UI.WebControls.LinkButton LinkButton1; protected System.Web.UI.WebControls.LinkButton LinkButton2; protected System.Web.UI.WebControls.LinkButton LinkButton4; protected System.Web.UI.WebControls.LinkButton LinkButton6; protected System.Web.UI.WebControls.Panel Panel2; protected System.Web.UI.WebControls.Label Label5; protected System.Web.UI.WebControls.TextBox TextBox2;

28

protected System.Web.UI.WebControls.Label Label6; protected System.Web.UI.WebControls.Label Label7; protected System.Web.UI.WebControls.Label Label8; protected System.Web.UI.WebControls.Label Label9; protected System.Web.UI.WebControls.TextBox TextBox3; protected System.Web.UI.WebControls.Label Label10; protected System.Web.UI.WebControls.Label Label11; protected System.Web.UI.WebControls.Label Label12; protected System.Web.UI.WebControls.Button Button4; protected System.Web.UI.WebControls.Button Button5; protected System.Web.UI.WebControls.Label Label13; protected System.Web.UI.WebControls.Label Label14; protected System.Web.UI.WebControls.Label Label15; protected System.Web.UI.WebControls.Label Label16; protected System.Web.UI.WebControls.TextBox TextBox4; protected System.Web.UI.WebControls.TextBox TextBox5; protected System.Web.UI.WebControls.Label Label17; protected System.Web.UI.WebControls.Label Label18; protected System.Web.UI.WebControls.Label Label19; protected System.Web.UI.WebControls.Panel Panel4; protected System.Web.UI.WebControls.Panel Panel5; protected System.Web.UI.WebControls.DataGrid DataGrid1; protected System.Web.UI.WebControls.Label Label22; protected System.Web.UI.WebControls.TextBox TextBox7; protected System.Web.UI.WebControls.Button Button8; protected System.Web.UI.WebControls.Button Button9; protected System.Web.UI.WebControls.Label Label25; protected System.Web.UI.WebControls.Label Label27;

29

protected System.Web.UI.WebControls.Label Label28; protected System.Web.UI.WebControls.DataGrid DataGrid2; protected System.Web.UI.WebControls.Label Label29; protected System.Web.UI.WebControls.Label Label30; protected System.Web.UI.WebControls.TextBox TextBox9; protected System.Web.UI.WebControls.Label Label31; protected System.Web.UI.WebControls.Label Label32; protected System.Web.UI.WebControls.Button Button10; protected System.Web.UI.WebControls.Label Label33; protected System.Web.UI.WebControls.Button Button11; protected System.Web.UI.WebControls.Label Label34;

protected System.Web.UI.WebControls.LinkButton LinkButton7; protected System.Web.UI.WebControls.LinkButton LinkButton9; protected System.Web.UI.WebControls.Panel Panel6; protected System.Web.UI.WebControls.Panel Panel7; protected System.Web.UI.WebControls.DataGrid DataGrid3; protected System.Web.UI.WebControls.Label Label23; protected System.Web.UI.WebControls.TextBox TextBox8; protected System.Web.UI.WebControls.Label Label24; protected System.Web.UI.WebControls.Button Button12; protected System.Web.UI.WebControls.Label Label35; protected System.Web.UI.WebControls.Label Label36; protected System.Web.UI.WebControls.Button Button13; protected System.Web.UI.WebControls.Label Label37; protected System.Web.UI.WebControls.DataGrid DataGrid4; protected System.Web.UI.WebControls.Label Label38; protected System.Web.UI.WebControls.Label Label40; protected System.Web.UI.WebControls.TextBox TextBox10;

30

protected System.Web.UI.WebControls.Label Label41; protected System.Web.UI.WebControls.TextBox TextBox11; protected System.Web.UI.WebControls.Label Label42; protected System.Web.UI.WebControls.TextBox TextBox12; protected System.Web.UI.WebControls.Label Label43; protected System.Web.UI.WebControls.TextBox TextBox13; protected System.Web.UI.WebControls.Label Label44; protected System.Web.UI.WebControls.TextBox TextBox14; protected System.Web.UI.WebControls.Label Label45; protected System.Web.UI.WebControls.TextBox TextBox15; protected System.Web.UI.WebControls.Label Label46; protected System.Web.UI.WebControls.Label Label39; protected System.Web.UI.WebControls.Label Label47; protected System.Web.UI.WebControls.Button Button14; protected System.Web.UI.WebControls.Label Label48; protected System.Web.UI.WebControls.Button Button15; protected System.Web.UI.WebControls.Label Label49; protected System.Web.UI.WebControls.Button Button16; protected System.Web.UI.WebControls.Label Label50;

protected System.Web.UI.WebControls.LinkButton LinkButton8; protected System.Web.UI.WebControls.Panel Panel8; protected System.Web.UI.WebControls.DataGrid DataGrid5; protected System.Web.UI.WebControls.Label Label51; protected System.Web.UI.WebControls.Label Label52; protected System.Web.UI.WebControls.TextBox TextBox16; protected System.Web.UI.WebControls.Label Label53; protected System.Web.UI.WebControls.TextBox TextBox17; protected System.Web.UI.WebControls.Label Label58;

31

protected System.Web.UI.WebControls.TextBox TextBox18; protected System.Web.UI.WebControls.Label Label61; protected System.Web.UI.WebControls.Button Button17; protected System.Web.UI.WebControls.Label Label62; protected System.Web.UI.WebControls.Label Label63; protected System.Web.UI.WebControls.Label Label64; protected System.Web.UI.WebControls.Button Button18; protected System.Web.UI.WebControls.Button Button19; protected System.Web.UI.WebControls.Label Label54; protected System.Web.UI.WebControls.Label Label2; protected System.Web.UI.WebControls.Image Image1; private void Page_Load(object sender, System.EventArgs e) { }

#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) {

//

// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 //

InitializeComponent(); base.OnInit(e);

32

this.Panel2.Visible=false; this.Panel4.Visible=false; this.Panel5.Visible=false; this.Panel6.Visible=false; this.Panel7.Visible=false; this.Panel8.Visible=false;

// 在此处放置用户代码以初始化页面

} }

}

///

/// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 ///

private void InitializeComponent() { }

#endregion

this.Button10.Click += new System.EventHandler(this.Button10_Click); this.Button11.Click += new System.EventHandler(this.Button11_Click); this.Button12.Click += new System.EventHandler(this.Button12_Click); this.Button13.Click += new System.EventHandler(this.Button13_Click); this.Button14.Click += new System.EventHandler(this.Button14_Click); this.Button17.Click += new System.EventHandler(this.Button17_Click); this.Button18.Click += new System.EventHandler(this.Button18_Click); this.Button19.Click += new System.EventHandler(this.Button19_Click); this.Load += new System.EventHandler(this.Page_Load);

(2)教师界面的实现代码如下:

using System;

using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web;

using System.Web.SessionState;

33

using System.Web.UI;

using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace WebApplication1 { ///

/// teacher 的摘要说明。 ///

public class teacher : System.Web.UI.Page {

protected System.Web.UI.WebControls.Image Image1;

protected System.Web.UI.WebControls.LinkButton LinkButton1; protected System.Web.UI.WebControls.LinkButton LinkButton2; protected System.Web.UI.WebControls.LinkButton LinkButton4; protected System.Web.UI.WebControls.LinkButton LinkButton5; protected System.Web.UI.WebControls.Panel Panel1; protected System.Web.UI.WebControls.Panel Panel2; protected System.Web.UI.WebControls.Panel Panel3; protected System.Web.UI.WebControls.Panel Panel4;

protected System.Web.UI.WebControls.LinkButton LinkButton3; protected System.Web.UI.WebControls.Label Label2; protected System.Web.UI.WebControls.Label Label3; protected System.Web.UI.WebControls.Label Label4; protected System.Web.UI.WebControls.Label Label5; protected System.Web.UI.WebControls.TextBox TextBox1; protected System.Web.UI.WebControls.Label Label6; protected System.Web.UI.WebControls.Label Label7; protected System.Web.UI.WebControls.TextBox TextBox2;

34

protected System.Web.UI.WebControls.Label Label8; protected System.Web.UI.WebControls.Label Label9; protected System.Web.UI.WebControls.Label Label10; protected System.Web.UI.WebControls.TextBox TextBox3; protected System.Web.UI.WebControls.Label Label11; protected System.Web.UI.WebControls.Label Label12; protected System.Web.UI.WebControls.TextBox TextBox4; protected System.Web.UI.WebControls.Label Label13; protected System.Web.UI.WebControls.Label Label14; protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Label Label15; protected System.Web.UI.WebControls.Button Button2; protected System.Web.UI.WebControls.Label Label16; protected System.Web.UI.WebControls.Label Label17; protected System.Web.UI.WebControls.DataGrid DataGrid1; protected System.Web.UI.WebControls.Label Label18; protected System.Web.UI.WebControls.Label Label19; protected System.Web.UI.WebControls.Label Label20; protected System.Web.UI.WebControls.Label Label21; protected System.Web.UI.WebControls.Label Label22; protected System.Web.UI.WebControls.TextBox TextBox5; protected System.Web.UI.WebControls.Label Label23; protected System.Web.UI.WebControls.TextBox TextBox6; protected System.Web.UI.WebControls.Label Label24; protected System.Web.UI.WebControls.Label Label25; protected System.Web.UI.WebControls.TextBox TextBox7; protected System.Web.UI.WebControls.Label Label26; protected System.Web.UI.WebControls.TextBox TextBox8;

35

protected System.Web.UI.WebControls.Label Label27; protected System.Web.UI.WebControls.Label Label28; protected System.Web.UI.WebControls.Button Button3; protected System.Web.UI.WebControls.Label Label29; protected System.Web.UI.WebControls.Label Label30; protected System.Web.UI.WebControls.Button Button4; protected System.Web.UI.WebControls.Label Label31; protected System.Web.UI.WebControls.Button Button5; protected System.Web.UI.WebControls.DataGrid DataGrid2; protected System.Web.UI.WebControls.DataGrid DataGrid3; protected System.Web.UI.WebControls.Label Label32; protected System.Web.UI.WebControls.Label Label33; protected System.Web.UI.WebControls.TextBox TextBox9; protected System.Web.UI.WebControls.Button Button6; protected System.Web.UI.WebControls.Label Label34; protected System.Web.UI.WebControls.TextBox TextBox10; protected System.Web.UI.WebControls.Label Label35; protected System.Web.UI.WebControls.Button Button7; protected System.Web.UI.WebControls.Label Label36; protected System.Web.UI.WebControls.Label Label37; protected System.Web.UI.WebControls.Label Label38; protected System.Web.UI.WebControls.Button Button8; protected System.Web.UI.WebControls.Label Label39; protected System.Web.UI.WebControls.Button Button9; protected System.Web.UI.WebControls.Label Label40; protected System.Web.UI.WebControls.Label Label41; protected System.Web.UI.WebControls.Label Label1; private void Page_Load(object sender, System.EventArgs e)

36

{ }

#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { }

///

/// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 ///

private void InitializeComponent() {

this.Button4.Click += new System.EventHandler(this.Button4_Click); this.Button5.Click += new System.EventHandler(this.Button5_Click); this.Button6.Click += new System.EventHandler(this.Button6_Click); this.Button7.Click += new System.EventHandler(this.Button7_Click); this.Button8.Click += new System.EventHandler(this.Button8_Click); this.Button9.Click += new System.EventHandler(this.Button9_Click); this.Load += new System.EventHandler(this.Page_Load);

37

this.Panel1.Visible=false; this.Panel2.Visible=false; this.Panel3.Visible=false; this.Panel4.Visible=false;

// 在此处放置用户代码以初始化页面

//

// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 //

InitializeComponent(); base.OnInit(e);

} }

} #endregion

(3)实现登陆功能的代码如下:

private void Button1_Click(object sender, System.EventArgs e)

{

if(this.TextBox1.Text==\{ } else {

if(this.TextBox2.Text==\{ } else {

SqlConnection

conn=new

this.Label3.Text=\请输入密码!\this.Label3.Text=\请输入用户名!\

SqlConnection(\

SqlCommand cmd=new SqlCommand(\from 登陆信息

where 帐号='\this.TextBox1.Text +\

conn.Open();

SqlDataReader myreader=cmd.ExecuteReader(); string a; string b;

if(myreader.Read()) {

38

a=myreader.GetString(1); b=myreader.GetString(2);

\

if(a!=this.TextBox2.Text.ToString()) {

this.Label3.Text=\密码错误!请确认后重新输入!

this.TextBox2.Text=\

}

else { this.Label3.Text=\ if(b==\学生\ { this.Response.Redirect(\

}

else if(b==\教师\ { this.Response.Redirect(\ } else { this.Response.Redirect(\ }

}

}

else {

this.Label3.Text=\帐号不存在,请重新输入!\

39

}

}

}

}

this.TextBox1.Text=\this.TextBox2.Text=\

myreader.Close(); conn.Close();

(4)实现修改密码功能的代码如下:

private void Button1_Click(object sender, System.EventArgs e)

{

this.Panel2.Visible=true;

if(this.TextBox1.Text==\{ } else {

if(this.TextBox2.Text==\{ } else {

if(this.TextBox3.Text==\{ }

40

this.Label17.Text=\请输入用户名!\

this.Label17.Text=\请输入原始密码!\

this.Label17.Text=\请输入新密码!\

本文来源:https://www.bwwdw.com/article/wpdx.html

Top