姓 名:
班 级:
系 部:
专 业:
论文题目:基于WEB的选课系统设计与实现
指导教师:
职 称:
2013年7月
摘要
本论文主要论述的是基于web的选课系统的系统维护模块的设计和实现设计学生选课系统维护模块系统的目的是对选课信息进行管理.学生选课系统维护模块主要完成的是系统管理与维护功能。课题研究过程中,首先对系统管理模块进行了详细的需求分析,经分析得到系统管理模块主要完成如下的功能:用户基本信息,选课信息录入,查看,修改,删除,从而实现能够在线选课,在线添加课程,在线查询课程等功能.系统管理模块是整个系统的指挥中心,保证整个系统在校园网上安全有效的运作。之后跟进需求提出了系统管理模块的总体设计方案。并进行了详细设计和编码实现,系统使用ASP。NET作为开发语言,SQL Server 2000作为数据库。代码中通过使用进行中的Session,尽量使用存储过程和尽量减少数据库连接的打开时间等手段来提高性能。
论文中对课题的设计和开发进行了完整地论述。系统开发完成后,对课题要求的功能设计出测试用例,进行功能测试,测试结果证明学生选课系统的维护模块实现了对该模块的功能需求,完成了课题的主要任务。
关键词:自动化;性能;SQL
Summary
This thesis investigates the elective system of the web-based system maintenance module design and design student elective system maintenance module system is elective information management。 Student elective system maintenance module of the completion of system management and maintenance functions。 The research process, the system management module, a detailed needs analysis, analysis of system management module mainly performs the following functions: basic user information, course selection information input, view, modify, delete in order to achieve that online elective add courses online, online query features such as curriculum。 The system management module is the command center of the whole system, to ensure the safe and effective operation of the entire system in the campus network. After follow-up demand for the overall design of the system management module. And detailed design and coding system to use ASP。 NET as a development language, the SQL Server 2000 as database. By using the code in the Session, to make use of stored procedures and to minimize the database connection open time means to improve performance.
The paper integrity of the design and development of the subject. System development is completed, the subject of the functional design requirements of the test cases for functional testing, test results prove that the class selection system maintenance module to achieve the functional requirements of the module, completing the main task of the subject.
Keywords: automation; performance; SQL
1引言
选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段.但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
因此,开发这样一套软件成为很有必要的事情,在下面的各章中我们将以开发一套学生选课系统为例,谈谈其开发过程和所涉及到的问题及解决方法.
随着Internet技术不断发展,尤其是基于Web的信息发布和检索技术。NET计算技术以及网络分布式对象技术的飞速发展,导致了很多应用系统的体系结构从C/S结构向更加灵活的B/S多级分布结构演变,使得软件系统的网络体系结构跨入一个新阶段。
本次设计主要采用B/S结构.
1。1 C/S结构
C/S结构,即Client/Server(客户机/服务器)结构。C/S结构把数据库内容放在远程的服务器上,相应的在客户机上需安装相应的软件.C/S软件一般采用两层结构,其分布结构如图1。1所示。它由两部分构成:前端是客户机,接受用户的请求,并向数据库服务提出请求,通常是一个PC机;后端是服务器,即数据管理(Server)将数据提交给客户端,客户端将数据进行计算并将结果呈现给用户。还要提供完善的安全保护及对数据的完整性处理等操作,并允许多个客户同时访问同一个数据库。在这种结构中,服务器的硬件必须具有足够的处理能力.
图1.1
C/S结构在技术上很成熟,它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。但是该结构的程序是针对性开发,变更不够灵活,维护和管理的难度较大.通常只局限于小型局域网,不利于扩展。并且,由于该结构的每台客户机都需要安装相应的客户端程序,分布功能弱且兼容性差,不能实现快速部署安装和配置,因此缺少通用性,具有较大的局限性.要求具有一定专业水准的技术人员去完成。
1.2 B/S结构
B/S结构,即Browser/Server(浏览器/服务器)结构,就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件.它是随着Internet技术的兴起,对C/S结构的一种变化和改进.主要利用了不断成熟的WWW浏览器技术,是一种全新的软件系统构造技术。B/S三层体系结构采用三层:客户层/中间层/服务器结构,在数据管理层(Server)和用户界面层(Client)增加了一层结构,称为中间层,使整个体系结构成为三层。三层结构是伴随着中间件技术的成熟而兴起的,核心概念是利用中间件将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次,如图1.2所示.三个层次的划分是从逻辑上分的,具体的物理分法可以有多种组合。中间件作为构造三层结构应用系统的基础平台,提供了以下主要功能:负责客户机与服务器、服务器与服务器间的连接和通信;实现应用与数据库的高效连接;提供一个三层结构应用的开发、运行、部署和管理的平台.这种三层结构在层与层之间相互,任何一层的改变不会影响其它层的功能。
图1.2
在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由Web Server完成。随着Windows将浏览器技术植入操作系统内部,这种结构已成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序是一个非常大的进步。B/S结构的主要特点是分布性强、维护方便、开发简单且共享性强、总体拥有成本低。但数据安全性问题、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,这些缺点是有目共睹的,难以实现传统模式下的特殊功能要求.例如通过浏览器进行大量的数据输入或进行报表的应答、专用性打印输出都比较困难和不便。此外,实现复杂的应用构造有较大的困难。
1。3 B/S结构与C/S结构的分析比较
1.3.1硬件环境不同
C/S建立在局域网的基础上,通过专门服务器提供连接和数据交换服务。所处理的用户不仅固定,并且处于相同区域,要求拥有相同的操作系统。B/S建立在广域网的基础上,信息自己管理,有比C/S更强的适应范围,一般只要有操作系统和浏览器就行.与操作系统平台关系最小。面向不可知的用户群.
1.3。2结构不同
C/S软件一般采用两层结构,而B/S采用三层结构:这两种结构的不同点是两层结构中客户端参与运算,而三层结构中客户端并不参与运算,只是简单地接收用户的请求,显示最后的结果。由于三层结构中的客户端并不需要参与计算,所以对客户端的计算机电脑配置要求较低。虽然B/S采用了逻辑上的三层结构,但在物理上的网络结构仍然是原来的以太网或环形网。这样,第一层与第二层结构之间的通信、第二层与第三层结构之间的通信都需占用同一条网络线路,网络通信量大。而C/S只有两层结构,网络通信量只包括Client与Server之间的通信量,网络通信量低.所以,C/S处理大量信息的能力是B/S无法比拟的。
1.3.3 处理模式不同
B/S的处理模式与C/S相比,大大简化了客户端,只要装上操作系统、网络协议软件以及浏览器即可,这时的客户机成为瘦客户机,而服务器则集中了所有的应用逻辑。
1。3。4 构件重用不同
在构件的重用性方面,C/S程序从整体进行考虑,具有较低的重用性。而B/S对应的是多重结构,要求构件具有相对的功能,具有较好的重用性。
1.3。5 系统维护不同
系统维护是在软件生存周期中开销最大的一部分.C/S程序由于其本身的整体性,必须整体考察并处理出现的问题.而B/S结构,客户端不必安装及维护。B/S结构在构件组成方面只变更个别构件,开发、维护等工作都集中在服务器端。当需要升级时,只需更新服务器端的软件,而不必更换客户端软件,实现系统的无缝升级。这样就减轻了系统维护与升级的成本和工作量,使用户的总体拥有成本(TCO)大大降低。
2开发工具介绍
2.1 ASP.NET简介
ASP。NET是统一的Web应用程序平台,它提供了为建立和部署企业级Web应用程序所必需的服务。ASP.NET为能够面向任何浏览器或设备的更安全的、更强的可升级性、更稳定的应用程序提供了新的编程模型和基础结构。
ASP.NET是Microsoft。NET Framework的一部分,是一种可以在高度分布的Internet环境中简化应用程序开发的计算环境.。NET Framework包含公共语言运行库,它提供了各种核心服务,如内存管理、线程管理和代码安全。它也包含.NET Framework类库,这是一个开发人员用于创建应用程序的综合的、面向对象的类型集合.
ASP。NET提供了下面的优点:
可管理性:ASP.NET使用基于文本的、分级的配置系统,简化了将设置应用于服务器环境和Web应用程序的工作。因为配置信息是存储为纯文本的,因此可以在没有本地管理工具的帮助下应用新的设置。配置文件的任何变化都可以自动检测到并应用于应用程序。
安全:ASP.NET为Web应用程序提供了默认的授权和身份验证方案。开发人员可以根据应用程序的需要很容易地添加、删除或替换这些方案。
易于部署:通过简单地将必要的文件复制到服务器上,ASP.NET应用程序即可以部署到该服务器上.不需要重新启动服务器,甚至在部署或替换运行的已编译代码时也不需要重新启动。增强的性能:ASP。NET是运行在服务器上的已编译代码。与传统的Active Server Pages(ASP)不同,ASP。NET能利用早期绑定、实时(JIT)编译、本机优化和全新的缓存服务来提高性能。
灵活的输出缓存:根据应用程序的需要,ASP.NET可以缓存页数据、页的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新.
国际化:ASP。NET在内部使用Unicode以表示请求和响应数据。可以为每台计算机、每个目录和每页配置国际化设置。
移动设备支持:ASP。NET支持任何设备上的任何浏览器.开发人员使用与用于传统的桌面浏览器相同的编程技术来处理新的移动设备。
扩展性和可用性:ASP.NET被设计成可扩展的、具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet信息服务(IIS)和ASP.NET运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求.
跟踪和调试:ASP.NET提供了跟踪服务,该服务可在应用程序级别和页面级别调试过程中启用。可以选择查看页面的信息,或者使用应用程序级别的跟踪查看工具查看信息。在开发和应用程序处于生产状态时,ASP.NET支持使用。NET Framework调试工具进行本地和远程调试。当应用程序处于生产状态时,跟踪语句能够留在产品代码中而不会影响性能.
与。NET Framework集成:因为ASP.NET是.NET Framework的一部分,整个平台的功能和灵活性对Web应用程序都是可用的。也可从Web上流畅地访问。NET类库以及消息和数据访问解决方案。ASP。NET是于语言之外的,所以开发人员能选择最适于应用程序的语言.另外,公共语言运行库的互用性还保存了基于COM开发的现有投资。
与现有ASP应用程序的兼容性:ASP和ASP。NET可并行运行在IIS Web服务器上而互不冲突;不会发生因安装ASP.NET而导致现有ASP应用程序崩溃的可能.ASP.NET仅处理具有。aspx文件扩展名的文件。具有.asp文件扩展名的文件继续由ASP引擎来处理。然而,应该注意的是会话状态和应用程序状态并不在ASP和ASP.NET页面之间共享。
2.2 SQLSQRVER简介
上手容易:大多数的中小企业日常的数据应用是建立在Windows平台上的.由于SQL Server与Windows界面风格完全一致,且有许多”向导(Wizard)”帮助,因此易于安装和学习,有关SQL Server的资料、培训随处可得,并且目前国内具有MCDBA认证的工程师不在少数。从另一个角度来讲,学习SQL Server是掌握其他平台及大型数据,如Oracle,Sybase,DB/2的基础。因为这些大型数据库对于设备、平台、人员知识的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。但有了SQL Server的基础,再去学习和使用它们就容易多了.IT行业的实践经验充分证明了这一点。
兼容性良好:由于今天Windows操作系统占领着主导地的位,选择SQL Server一定会在兼容性方面取得一些优势。另外,SQLServer2000除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮XML数据,可以将搜索结果以XML格式输出等特点,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET战略中发挥着重要的作用。
3系统概述
学生管理是教务管理中的一个极为重要的环节,它是整个管理的核心和基础。由于学校规模进一步扩大,学生人数逐年上升,学生情况的管理也变得越来越复杂。面对如此繁杂的任务。如果让个人去管理文档,就会显得费时费力。尤其在管理成绩时,任务更加繁重,就选科管理本身来说,它是一项任务繁重、时效性较强的系统工作,它不但涉及学生个人成绩查询,更涉及到各教师的工作效率和质量。近年来随着计算机的迅速发展,计算机已经在社会各个领域显示了它巨大的作用。毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。
3.1系统开发的目标
①升级、改造学院现有的办公自动化系统,完善学院网站建设,实现办公自动化结构的网络化,进一步提高学院的办公效率、工作水平,朝着信息化、网络化、现代化目标迈进。
②建立学院数字化教学系统,进一步提高办学效益和现代化教学水平。
③校园体验子系统,使整个机构完全实现信息化、自动化、网络化.
3。2系统需求
本选课管理系统可以说是一个综合性的学校选课管理系统,它集成了学生信息管理,教师信息管理多种功能,因而具有较强的实用性和先进性。
通过调查,要求系统需要有以下功能:
①由于该系统的使用对象多,要求有较好的权限管理;
②原始数据修改简单方便,支持多条件修改;
③方便的数据查询,支持多条件查询;
④在相应的权限下,删除数据方便简单,数据稳定性好。
可将系统划分成四个模块:
1.用户登录身份验证模块
2.系统管理员功能模块
3.学生管理功能模块
4.教师管理功能模块
3。2.1可行性分析
(1)技术可行性-——-—本系统仅需要一台装有Office软件的计算机即可,对机器本身没有太高的要求,一般当前学校或个人电脑完全可满足要求。对于软件技术要求,现在的程序设计语言已非常成熟,要运用HTML样式,图形图象制作工具来制作生动活泼的网页及美观的图形文件或动画文件,数据库使用SQL Server 2005中提供的数据库桌面工具ODBC。
(2)经济可行性----—由于本系统是为学生选课管理使用的系统,装上该应用软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为学校节约大量的人力,物力.所带来的效益远远大于系统软件的开发成本。在经济上完全可行。
(3) 操作可行性—-—--界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速、规范、可靠;统计准确;制表灵活;适应力强;容易扩充。第2章内容主要是:系统需求分析包括,现有系统介绍;系统的实体分析,实体关系图.
3。3数据库的设计
3。3。1数据库系统分析
本系统的数据库实体主要有“学生”、“教师”、“教学楼"、“教室"、“课程”等。其中“教师”与“课程”存在“开设"联系,并且一个教师可以开设N门课程,即“教师”与“课程”之间是一对多的关系。同样“教学楼”与“教室”也存在一对多的关系。一个学生可以学习N门课程,一门课程可以有M个学生学习,即“学生”与“课程”之间是多对多的关系。同样“课程"与“教室”之间也是多对多的关系.整个数据库可以用一个E—R图表示,如图3.1。1:
图3.1.1
E—R图中的实体图如下图3.1。2至3.1.9:
图3.1.2
图3.1。3
图3。1。4
图3。1。5
图3。1。6
图3。1.7
图3.1。8
图3.1。9
3。3。2数据库逻辑设计
数据库逻辑设计就是将图转换为关系模型的过程,即将所有实体和关系转换成一系列的关系模式。转换过程中常见规则有:
(1)一个实体型转换为一个关系模式;
(2)一个一对一的联系可转换成一个的关系模式,也可与任意一端对应的关系模式合并;
(3)一个一对多的联系可以转换成一个的关系模式,也可与多的那一端对应的关系模式合并;
(4)一个多对多的关系转换成一个关系模式。
根据以上四条规则,下面将图转换成关系模型.
对于“教学楼”、“教室”和两者之间的关系,就可以根据规则(3)转换成两个关系模式
教学楼(教学楼ID,教学楼名称)
教室(教室ID,教学楼ID,教室名称)
对于“学生"、“课程”和它们之间的“选修”关系就可以规则(4)转换成三个关系模式。
学生(学号,姓名,性别,年龄,登陆密码,学分,地址,电话,电子邮件)
课程(课程编码,课程名称,开课教师编号,学分,最大人数,课程简介,前导课程编号)
选课(学号,课程编号,成绩)
依次类推,剩下的关系转换成下面三个关系模式:
教师(教师编号,姓名,性别,年龄,电话,电子邮件,个人简介)
课程时间地点(课程编号,开始周次,结束周次,上课时间,上课教室ID)
管理员(帐号,密码)
3.3。3数据库物理实现
经过数据库系统分析和逻辑设计后,数据库的结构已经非常清晰,剩下的就是用一种数据库软件实现这样的结构。本系统中数据库采用Microsoft SQL Server 2000作为数据库.首先我们在Microsoft SQL Server 2000的“企业管理器”创建一个数据库,我们命名为“SC",如图3-1:
图3-1
选中SC数据库,向数据库中添加8个表:Student,Teacher,Course,SC,CourseTime,Building,Room和Admin,每个表与逻辑设计中一种的关系模式相对应。下面是每个数据表中的属性,包括属性列的名称、数据类型、长度、是否可以为空和备注说明等内容。
(1)Students表。Students表用来存储学生的个人信息,使用学号作为主键,如图3—2:
图3—2
(2)Teachers表.Teachers表用来存储教师的个人信息,用学校分配给教师的教师编号作为主键,这样可以避免重复,如图3-3:
图3-3
(3)Course表。Course表用来存储课程信息,Course表以课程编号为主键,设置课程编号自动增加1(通过建表的时候对属性列设置“标识”,并设置“标识递增量"为1).表中开课教师Id为外键,所有“TId”的值必须是Teachers是表中的“TId”值.设置外键关系可以通过在建立表的窗口中单击右键,在右键菜单中选择“关系”,在弹出的对话框中设置外键关系.如图3-4:
图3—4
(4)SC表。SC表用于存储学生的选课信息,在SC表中学号和课程编号是主键,同时也是外键。如图3-5:
图3-5
(5)CourseTime表。CourseTime表用来存放课程的上课时间和上课地点信息,其中课程编号和教室编号为外键。如图3—6:
图3-6
(6)Building表.Building表用来存放教学楼信息,Building表中教学楼编号为主键,自动增加1。如图3-7:
图3-7
(7)Room表。Room表用来存放教室信息,在Room表中,教室编号为主键,自动增加1,教学编号为外键。如图3—8:
图3-8
(8)Admin表.Admin表用来存放系统管理员信息,如图3—9:
图3-9
3。4系统的实现
在本系统中,有三类用户:系统管理员,教师和学生.三种不同的用户所具有的操作权限以及操作内容均不一样.
本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生和教师的个人信息以及教学楼教室信息.系统管理员不参与开设课程、选择课程等,一切均由教师、学生登陆网站自行完成。系统管理员设置一个选课时间段,在到达时间段以前,教师可以开设课程;到达时间段以后,学生可以登陆网站选择课程.
教师用户登陆网站后可以开设课程,为自己的课程编辑上课时间和地点,当系统中出现时间地点冲突的时候,系统向教师用户报告并推荐一个时间地点。每门课程可以是必修或则选修,教师为每门课程设置一个学分,并可以在课程结束后给予分数,如果学生及格,学生将获得该课程的学分。
对于学生用户,每个学生除了必须选择必修课程外,至少还要选择两门选修课程,学生可以对自己选课信息锁定,以免不小心被修改。当时候超过选课时段后,系统自动锁定学生的选课课程。系统可以根据学生的选课信息,生成一份学生自己的课表。课程结束后学生可登录网站查询成绩与学分。
根据上面的要求,从操作功能上可以分为两个类:一个是通用操作,主要实现用户的登录注销和修改密码等;另一种是为不同用户定制不同操作。
3。4.1通用操作
(1)登录与注销
每个用户都可以用自己的帐号登录系统。用户操作完成后推出系统,注销后可以重新登录系统。
(2)修改密码
每个用户第一次登录都用默认密码(教师和学生与帐号一样)。
3.4。2用户所具有功能
(1)系统管理员
设置选课时间段:系统管理员通过此项功能设置选课时段,只有在选课时间段里,学生才可以选择课程,超过次时间段,学生选课信息被自动所定,不得修改.
录入学生与教师个人信息:通过此项功能可以实现对教师和学生的个人信息添加删除。
录入教学楼教室信息:通过此项功能可以把学校里所有的教学楼教室的信息录入到系统中,以便教师在开设课程时候设置上课的教室.
(2)教师用户
显示和修改个人信息:教师用户登录系统后,可以查看和修改教师的个人信息,如姓名,电话,E—mail地址等。
开设课程:教师用户登录系统后,可以开设课程,可以设置该课程为必修课程或则选修课程,可以设置该课程的最大人数.教师还可以为该课程设置一个前导课程,如果学生没有学习或则选择前导课程则不能选择该课程.
编辑课程上课时间:教师在开设了课程后,可以灵活地设置上课时间和地点.
给学生分数:课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若及格,给予学生学分。
(3)学生用户
显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等.
查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。
选择选修课程:学生登录系统后,在所有选修课程中可以选择至少两门选修课程。同时可以查看相关信息。
锁定选课信息:学生登录系统,确定了所选课程后,可以锁定自己的选课信息,以防被别人或则自己不小心修改。
查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。
查看学分和成绩课程结束后,学生登录系统可查看自己学习课程的成绩和已获的学分。
3。4。3系统总体设计
在前面的系统的系统功能分析中,可将系统划分成四个模块,如下图4-1:
图4—1
首先,用户登录身份验证模块验证用户名和密码,并根据不同的用户类型,跳转到对应的页面中。设置选课时间模块提供给系统管理员修改选课时间段。录入信息模块提供给系统管理员,用来录入学生和教师信息,以及录入教学楼教室等信息。开设课程模块提供给教师用户,用来开设一门必修课程或则选修课程.编辑课程时间地点模块提供给教师用户,编辑课程的上课时间地点友好的界面和操作。评分模块用于教师用户给选修该教师开设的课程的学生评分.查看课程模块包括查看必修课程、查看选修课程、查看已选课程、查看课程成绩单。选课和锁定模块中实现选择选修课程和锁定选课信息的功能。如下:图4-2、图4—3、图4—4。
图4-2
图4—3
图4-4
3。5 系统说明书
3.5。1系统界面说明
下面是在线选课系统的预览,此处简单介绍本系统的部分功能.
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;
}
}
2.查看必修课程列表页面,如图5—1:
图5-1
登录成功后,进入学生主页,点击“必修课程"链接,得到所有必修课程的列表,在列表中可以看到所有必修课程及课程的简单信息,如授课教师姓名、课程所占学分等。
在列表中可以点课程名称,如“计算机应用基础”链接,查看课程详细信息;点教师姓名,如“李萍”链接,查看教师的详细信息;点击“查看上课时间地点”链接,查看对应课程的上课时间和地点.
在页面加载的时候从数据库读取所有必修课信息,代码如下:
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中
}
3.查看选修课程列表页面,如图5-2:
图5-2
单击“选修课程"链接,查看所有选修课程列表,在列表中给出了比必修课程更多的信息,比如多了对应选修课程的前导课程、最大人数、当前已选人数等,对每个选修课程均有一个“选修该课程”的按钮,单击此按钮方可选择对应课程。
主要代码如下:
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.查看已选课程页面,如图5-3:
图5-3
在上一步查看选修课程的列表中,选择“计算机密码学”、“计算机图形学”、“线性代数”三门课程后,点击“已选课程"链接查看已经选择的课程列表,在列表中除了可以看到与上一步中相同的信息外,还可以查看到课程成绩.刚才选择的三门课程的成绩均为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”);
}
}
3。5。2系统管理说明
系统管理员主要有三个功能需要实现:设置选课时间段、录入学生和教师信息、录入教学楼教室信息。
设置开始选课时间段:选课时间段存储在项目目录下的time。txt文件中。文件中第一行表示开始时间,第二行表示结束时间。如图5—4:
如图5—4
设置时间代码如下:
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—5:
图5-5
添加教师代码如下:
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中,教学楼和教室的管理主要包括添加和删除操作,添加一个教室必须指定其所属的教学楼。如图5—6:
图5—6
添加教学楼代码如下:
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);
}
3。5.3教师管理说明
教师用户的功能需求有个人信息的管理、开设课程、课程时间地点编辑、设置学生成绩。
教师个人信息:在Teacher.Aspx中,在这里可以修改密码和添写教师个人信息。如图5—7:
如图5-7
从数据库中读取教师个人信息显示代码如下:
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;
}
修改信息代码如下:
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("修改成功!"));
修改密码代码如下:
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("修改成功!”));
else
Response。Write(MyUtility。Alert("修改失败!”));
开设课程:在NewCourse.Aspx中,在这里可以添加新课程,其中包括课程名称、课程类型、 学分、前导课程、最大人数、课程介绍。如图5—8:
如图5-8
从数据库读取所有课程编号和课程名称代码如下:
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中,在这里可以编辑课程时间和地点。如图5—9:
如图5—9
设置学生成绩:在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 = ”您暂时还没有开设课程!”;
}
}
4系统的测试
在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误.我们力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审.
尽管面保证了软件应该有更高的质量,但错误都是不可避免的,而且由于面向对象技术开发的软件代码重用率高,更需要严格测试,避免错误的繁衍。因此,软件测试更具有它的重要性.
4。1编码测试
编码全部完成后,要进行全面的测试,包括代码的规范,冗余等进行改进,发现问题及时解决并记录下,并且浏览器测试文档资料的正确性、可用性和友善性。
4.2数据测试
通过添加、修改、删除各种原始数据,检查程序是否存在错误。之后检查数据库中数据是否完整,正确。
5总结
时间过得真快,经过几个月的学习,研究和开发,基于web的选课课题,学生选课系统基本完成。其功能基本符合网络上的用户要求,能够在线选课,在线添加课程,在线查询课程等.近期来,虽然由于自己知识上的不足,有些地方有少许错误和容错性能比较低,期间大量查阅课本,走访图书馆,请假指导老师,但是还是可以基本完成选课系统应有的功能。
通过毕业设计过程我会到了许多知识,这也是在大学里第一次比较完整的完成一个小项目,虽然过程中遇到了许多困难,在同学和老师的帮助下一一克服了.通过不断的发现问题,总结问题和解决问题的过程,使我在此次毕业设计活动中不断的提高,和得到了宝贵的经验。
6致谢
由于以前对ASP。NET的接触并不是很多,对它的开发环境也不是非常了解,所以在程序的开发过程中遇到了很多的困难,但经过同学和老师的帮助,逐渐克服了困难,并从中学到
了很多SQL数据库编程方面的知识.但是由于经验方面的原因,以及对物流配送方面的操作流程了解不够深刻,该系统还有许多不尽如人意的地方和功能上的缺陷,这些都有待于进一步改善。
论文完成的前提是老师给我提供了舒适的工作、学习环境,并给予我悉心的关怀与指导。在些表示衷心地感谢。老师认真负责的工作态度、严谨的治学风格,使我深受启发;开发的同时,和同学们之间的相互探讨也使我获益匪浅。几个月的时间内,我除基本学会开发SQL数据库外更重要的是学到了兢兢业业,奋发向上的精神,这种精神是我今后人生前进道路上的一种力量。所以我再次感谢我的老师和我周围的同学们。
7参考文献
[1]李世杰. Active Server Pages(ASP)3.0 网页设计手册。北京:清华大学出版社1999年5月
[2]前沿电脑图像工作室。巧学巧用Dreamweaver、Fireworks、Flash制作网页.北京:人民邮电出版社,2004年
[3] 吴晨,《ASP。NET+SQL Server-数据库开发与实例》,清华大学出版社,出版2006年7月
[4](美)内格尔,《C#高级编程(第4版)》,清华大学出版社,出版2006年10月
[5](美)solid,《SQLServer2005从入门与精通(应用技术基础)》,清华大学出版社,出版2006年09月
[6](美)保罗《ASP.NET 2.0经典教程C#篇》人民邮电出版社,出版2007年5月
[7]张剑平。《学校管理信息系统》。北京:中国铁道出版社1997年9月
[8]赵增敏.《ASP动态网页设计》。电子工业出版社2009—8-1
[9]邓文渊,陈惠贞,陈俊华.《挑战 asp 与网页数据库设计》。中国铁路出版社(2004)
[10]罗娟.WEB与数据库技术. 计算机工程1998—8
[11]张卫丰.在主页中利用ASP技术实现用户口令的验证微电脑《微电脑应用》1999—07