网上实验预约系统的设计与实现毕业设计论文_第1页
网上实验预约系统的设计与实现毕业设计论文_第2页
网上实验预约系统的设计与实现毕业设计论文_第3页
网上实验预约系统的设计与实现毕业设计论文_第4页
网上实验预约系统的设计与实现毕业设计论文_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE前言21世纪的教育必须适应信息化社会需求。为此,世界发达国家高度重视信息技术对教育的影响和作用,重新调整教育目标,制定教育改革方案,加快推进教育信息化建设。近年来我国也十分重视教育信息化,特别是在“面向21世纪教育振兴行动计划”中强调利用信息技术推进教育改革。教育改革中强调了教育方式和管理方式的变革。随着高校规模的不断扩大和对教学管理需求的不断提高,引进先进的信息技术,实现教学管理方式的网络化和智能化已成为教学改革的必然趋势,我这次设计的题目是网上实验预约系统(简称预约系统),是针对原有手工管理效率低下,缺乏可控性等特点,采用科学、高效的教学管理方式,使教师、学生预约实验比原来更加方便快捷。此次的毕业设计课题是一个新的体验、新的挑战,我在此过程中初次涉足JSP技术,对Java编程的首次尝试,其中遇到了不少的困难,不足与失误之处在所难免,故敬请各位老师、领导批评指正。在此期间,我也不仅仅应用了所学的知识,而且还不断的学习了新的知识、工具,以完成设计的需要。在设计的过程中我深深体会到作为一个学习计算机专业的职员,为了实现一个模块的代码、为了一个设计的实现思想、经常要绞尽脑汁来达到设计所要达到的目的。尽管我的基础知识还不够扎实,但是在此期间我积累了许多宝贵的经验,这都是我以后走上工作岗位的巨大的财富。由于这是我的一个新尝试,以及受有限的知识和仓促的时间所限,所以程序代码中难免会有不足的地方,望各位老师给予我指正,我将在以后的设计中做得更好。1绪论学校中的实验设备是属于全校师生共用的教学资源。由于学校实验室个数及每门课程相关实验室课时数的有限性,使得实验室不可能像普通教室那样按周次进行固定排课。当前实验教室的排课普遍采用人工预约的方法,这种方式无论在人员联系上还是实验室安排上都很不方便。预约一个教室的周期往往在两周以上,极大地影响了教学进度的安排,并且由于实验室教室的分散性,往往会出现一个教室爆满而另一个闲置的不对称使用情况,在这种情况下,开发一种全校实验室资源共享、合理分配教室资源、远距离操作实验室预约系统就显得尤为必要。在国外,预约系统早就起源并且早已经扩展开来。基于ASP的高校实验网络管理系统,也可为学生提供一种选修自己喜欢实验的途径。有些系统允许学生通过校园网选修实验,它具有实验预约、查询等功能。在国内,现在一般是用ASP做实验预约系统。预先查看几个比较典型的实验预约系统:长江大学电子信息学院开发的长江大学电工电子实验预约系统,它是一个实验预约管理系统,提供学生和教师登录预约,教师和学生登录后的功能不一样,教师登录后还可以对学生进行实验管理;学生可以进行实验预约,只是该系统有时候学生预约并不开放,以教师预约为主。这是国内目前功能比较完善的实验预约系统。绍兴文理学院的开放实验网上预约系统预约实现了可选择的实验进行预约和取消预约,可以轻松查看实验室状况,不过此系统封闭性不强,任何注册人员都可以进行预约,这给系统管理带来了负面影响。另外,最近在网上还出现了一个简单的网上实验预约系统,简单实现了预约功能,也是一个纯粹的实验预约系统,用户可以随时进行注册并预约实验,又没有取消预约的功能,而且此系统维护不够,预约得不到管理员的批准与调配。但这也说明预约系统现在在国内比较盛行,大家在勇于攀登,在不断完善实验预约系统的功能。建国以来,我国经济飞速的发展,特别是改革开放以后,大量资金、先进技术的引入,人民的生活水平有了很大的提高,物质生活的提高也改变了消费观念,网络逐渐走进了人们的生活。随着学校场所规模的扩大,使其在管理上存在一些漏洞,如实验安排不及时,实验安排有时间缺乏双方交流性等。这导致了这些实验室不能达到实验的最佳结果。实验室本来是用来结合理论联系实践的一个重要环节,这步如果出了一点点问题,不良后果也是很大的。至少是一个班级的同学不能完成实践学习或者是不能及时完成相关的实践,也会给理论学习带来一定的困难,也可能导致对该课程的学习失去兴趣。我这次毕业设计题目是网上实验预约的设计与实现,是湖南科技大学教学研究重点项目中的一个方面。我们湖南科技大学是由原湘潭工学院和原湘潭师范学院合并而来,现在分为南北两个主校区。为充分利用两个校区的实验室,就要根据现有的实验室情况调配两个校区的学生人数,尽量做到最大限度的使用实验设备,实现全校实验的合理化,提高实验设备的利用率。通过实验室的调查,实验室暂时还没实现网上实验预约功能,而且实现也有一定的难度。实验室的管理员老师用他们的经验和事实说明在实验室工作并不是一件简单的事情,因为实验室是个流动的场所,按照周一到周日,而且每天又按照一二节课、三四节课、五六节课、七八节课以及晚上分开进行排课,如果是节假日提前全部排满的课程也只能被冲掉,不能再重新安排。在这一点上就说明本系统的建立就很有必要性,如果是授课教师能够实时地进行实验预约,就能够尽量避免实验安排冲突的现象。现在实验室的课程安排更是复杂,一般都是用手工安排实验课,又由于没有网上预约系统,实验预约必须由教师与管理员进行预约并查看实验室有关安排信息。实验室是公共场合,除了上课还要用于实验考试等,有些固定安排是不能被耽搁的,任课老师完成对班级理论课表的参照后与实验室管理员商量好实验时间段,最后还是要等待实验室最后的安排表出来才能定好实验日期,这一般是要几个星期的时间。而学生一般是不能进行实验预约的。根据对实验室日常业务的考察,以及具体情况的分析得到实验预约系统的迫切性,特别是作为计算机实验室,本身就为实验预约系统的应用奠定了基础,加上师生的需求就确定了该系统开发必要性。

2系统开发平台基于对系统的分析,本系统采用JSP技术来实现动态网页,利用MicrosoftSQLServer2000作为数据库管理系统建立数据库,操作系统为WindowsXPprofession,Web服务器为Tomcat5.0。2.1HTML语言HTML(Hyper

Text

Markup

Language

超文本标记语言)[7]是一种用来制作超文本文档的简单标记语言。与常见的字处理文件不同,Web页以超文本标识语言编排格式。HTML文件是带有特定HTML插入标记的用以编排文档属性和格式的标准文本文件。它能独立于各种操作系统平台。自1990年以来HTML就一直被用作World

Wide

Web上的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。HTML文档是一个放置了标记的ASCII文本文件,通常它带有.

html或.

htm的文件扩展名。2.2JavaScript语言JaveScript脚本语言脚本是应用程序在网页上表达的语言,可以将脚本嵌入Web页中。通常脚本在服务器上运行,但也可以采用客户端和服务器端结合使用VBScript是ASP的默认脚本语言[3]。2.3JSP技术2.3.1JSP概述JSP(JavaServerPage)技术是由SunMicrosystem公司倡导,许多公司参与,于1999年6月推出的一种动态网页技术标准。它是基于JavaServlet以及整个Java体系的Web开发技术,是Servlet2.1API的扩展。JSP技术是由Servlet技术发展起来的,自从有了JSP后,在Java服务器端编程中普遍采用的就是JSP,而不是Servlet。同时,JSP秉承了Java的“编程一次到处运行”的精神,能应用于不同的操作平台之上(如Windows、Unix、Linux等多种操作系统),是一种与平台无关的技术。简而言之,JSP就是Java,就是Servlet.只是它是一个特别的Java语言,同时又引入了“<%...%>”等一系列的特别语法。JSP技术的具体实现简单地说,就是在传统的网页HTML文件(*.htm,*.html)中,利用HTML(或XML)标签的扩展,插入JSP脚本代码(主要是Java代码),构成了JSP文件(扩展名为.jsp)[3]。2.3.2JSP工作原理在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSPengine)转换成一个Servlet,即将”.jsp”文件编译成JavaClass文件。当Servlet引擎接收到请求后,如果设置了使用最新的JSP,它就会去找JSP文件,检查该文件在上次编译后是否改动过。如果改动过,就会重新编译生成新的Servlet,最终将请求转交给编译好的Servlet引擎执行。如图2-1。在编译时如果发现JSP文件有任何语法错误,转换过程将中断,并向客户端发出出错信息;如果编译成功,则所转换产生的Servlet代码被编译,然后该Servlet被JSP引擎加载到内存中。此时JSP引擎还请求了jspInit()方法的执行,并对此Servlet初始化。JspInit()方法在Servlet的生命周期中只被请求一次,然后将被调用来处理客户端的请求和回复操作。对于所有随后对该JSP文件的请求,服务器将检查该JSP文件自最后一次被存取后是否经过修改。如果没有修改,则将请求交还给还在内存中的Servlet的jspService()方法,执行回复操作。由于Servlet始终驻于内存,所以响应是非常快的。JSP页面在第一次访问时由于要转化和编译,运行速度较慢,但是当第二次访问该页时,由于文件已经被编译成字节码文件了,所以速度非常得快。ClientClient客户端请求(Request)WebServer响应(Response)Serverextension服务器扩展ServletengineJSPengineServlet引擎JSP引擎ClassloaderJavacomplierJSPparser类载入器Java编译器JSP语法分析器图2-1JSP运行原理2.3.3JSP页面的组成JSP页面看上去像是标准的HTML和XML页面,并附带有JSP引擎能够处理和解析执行的代码与组件。通常,JSP代码和组件用于创建在最终页面上显示的文本。通常来说,JSP页面包括编译指令,动作指令,声明,表达式和程序段等内容。1、编译指令:使用JSP编译指令(〈%@和%〉内的)来指定所使用的脚本语言,Servlet实现的接口,Servlet扩展的类,Servlet导入的软件包。JSP指令的一般语法形式为:<%@指令名=“值”%>。2、动作指令(标识):动作指令用于执行某些动作。在JSP规范中有2种类型的动作指令的标识。第一种是标准动作,它定义的是无论在什么版本的JSP引擎或Web服务器下总是可用的动作。第二种是自定义动作,它通过使用taglib指令来实现。例如JSP:useBean;JSP:setProperty;JSP:getProperty就是标准动作。3、声明:用于声明合法的变量和方法。与任何语言相同,JSP语言使用变量来保存数据。这些变量用declaration元素声明,声明的语法为<%!declaration(s)%>。当页面被初始化的时候,JSP页面中的所有声明都被初始化。除了简单的变量,方法也能被声明。声明不对当前的输出流产生任何影响。4、表达式:通过计算表达式所得到的结果来表示某个值。表达式的形式为:<%=expression>。表达式求值的结果被强制转换为一个字符串,并插入到当前的输出流中。5、程序段:JSP可以在页面中包含的一段程序,称之为程序段。程序段是一个代码片断,在请求的处理过程中被执行。程序段可以和页面中的静态元件组合起来创建动态生成的页面。程序段在“<%%>”中定义,在这对标识中的所有东西都会被当成JSP程序执行。2.3.4JavaBean技术介绍JavaBean技术是一种基于Java的组件技术,JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据的提取等,是解决代码重用问题的一种策略。以前的组件无法实现真正的代码重用,其主要原因就是它们对于处理平台的依赖和对开发语言的依赖过重。由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们的关注。它的任务就是:一次编写,可以在任何地方执行,可以在任何地方重用。JavaBean组件可以在任何地方重用包括了可以在应用程序、其他组件、文档、Web站点和应用程序构造器工具等多种方案中再利用。为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构及细节问题,只需要定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。JavaBean的实质就是一个.class文件,也可以成为类文件。JavaBean以binary格式保存,可以保护Java源代码不容易被他人抄袭。2.3.5JSP的运行环境要运行JSP(注意,不是浏览JSP页面),需要有支持JSP的服务器。这里分2种情况:一种是自身就支持JSP的服务器,如Jrun,Weblogic,JSWDK等;而另一种则是在不支持JSP的服务器上安装JSP引擎的插件,如在IIS,Apache等服务器上安装WebSphere,tomcat,Resin等插件。其中主流服务器是Weblogic和tomcat.Weblogic是一款功能强大的服务器软件,配置比较简单,而且JSP的扩展功能较多,附带了数据库的JDBC驱动程序。,支持JHTML(一种与JSP十分相似的技术),是目前市场占有率最高的服务器。不过,Weblogic的运行情况不太稳定,使用它调试JSP文件,出现语法错误或者数据库连接错误时,Weblogic就有可能崩溃。Tomcat服务器是当今使用广泛的JSP/Servlet服务器,它本身也可做Web服务器使用。它的运行稳定好。Tomcat服务器是ApacheGroupJakarta小组开发的一个免费服务器软件,适合于嵌入Apache中使用,而且,它的源代码可以免费获得,你可以自由地对它进行扩充。访问的地址http://jakarta./tomacat/index.html,Tomcat服务器的兼容性很好,如WebLogic服务器采用其为Web服务器引擎,Jbuilder将其作为标准的测试服务器,Sun公司也将其作为JSP技术应用的示例服务器。不足之处是它的配置比较麻烦,而且有一些安全性的问题没有解决。但是Tomcat服务器有众多大软件公司的支持,而且服务器的性能稳定,其发展前景很好。2.4SQLServer2000数据库简介MicrosoftSQLServer2000是由一系列产品组成,不仅能够满足最大的数据处理系统和商业Web站点存储和处理数据的需要,还能为个人或小企业提供容易使用的数据存储服务。现在的企业和政府部门对数据的存储要求非常高,如要求系统必须可以同时处理上千件订单,能提供安全、与Web紧密集成的数据存储,能够存储最大量的数据和支持众多的用户,有可靠的联机分析处理系统,这些系统能够很容易地通过OLTP(联机事务处理)数据生成,并支持复杂的数据分析。要求数据存储系统可由应用程序配置,然后系统自身可以自动调整,用户不需要专门的数据库管理员不间断的监视和调整应用程序。MicrosoftSQLServer2000通过提供一系列相互协助的足见满足了用户的各种要求。MicrosoftSQLServer2000是由一系列相互协作的组件构成,能满足最大的Web站点和企业数据处理系统存储和分析数据的需要。MicrosoftSQLServer2000主要由以下几个组件组成:关系数据库组件、数据库构架、管理构架、复制构架、数据仓库和联机分析处理分析和应用程序开发构架等。2.4.1MicrosoftSQLServer2000的特性MicrosoftSQLServer2000的主要特性包括:与Internet集成、可伸缩性和可用性、企业级数据库功能、易于安装、部署和使用数据仓库。MicrosoftSQLServer2000数据库引擎提供完整的XML(可扩展标记语言)支持。SQLServer2000与其他产品共同构成了可靠安全的Internet和Intranet系统的数据存储。SQLServer2000支持EnglishQuery和Microsoft搜索服务等功能,在Web应用程序中包含了用户友好的查询和强大的搜索功能。同一MicrosoftSQLServer2000数据库引擎可以运行在MicrosoftSQLServer2000的各个版本。MicrosoftWindowsNT4.0版的所有版本、Windows98和WindowsMillenniumEdition上。同时,当以默认设置运行时,SQLServer2000还具有动态自调整等功能,可以有效地运行在便携式电脑和台式机中,用户无需承担管理任务。SQLServer2000企业版支持联合服务器、索引视图和大型内存支持等功能,使其可以升级到最大的Web站点所需的性能级别。SQLServer2000关系数据库引擎支持当今苛刻的数据处理环境所需要的功能。如分布式查询、动态行级锁定、充分的完整性保护、分布式事务、复制等功能,为用户提供企业级的数据库功能。MicrosoftSQLServer2000中包含了一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用SQLServer的过程。MicrosoftSQLServer2000包含多个可用于生成有效地支持决策、支持处理需求的数据仓库的组件。这些组件包括:数据仓库框架、数据转换服务、联机分析处理支持、数据挖掘支持、EnglishQuery、MetaDataServices.2.4.2数据库构架MicrosoftSQLServer2000的数据存储在数据库中。在数据库中,数据被组织到用户可以看见的逻辑组件中。数据库还可以按物理方式,在磁盘上作为两个或更多的文件实现。使用数据库时使用的主要是逻辑组件,例如表、视图、过程和用户。文件的物理实现在很大程度上是透明的。一般只有数据库管理员需要处理物理实现。每个SQLServer实例中有4个系统数据库(master,tempdb,model和msdb)以及由用户创建的一个或多个用户数据库。在4个系统数据库中,master数据库记录SQLServer系统的所有系统级别信息记录、所有的登录帐户和系统配置设置,记录所有其他的数据库的信息,包括其他数据库文件的位置记录SQLServer的初始化信息,并且始终有一个可用的最新的master数据库备份。Tempdb数据库保存所有的临时表和临时存储过程。它还能满足任何其他的临时存储要求。Tempdb数据库在SQLServer每次启动时都将重新创建,并且将重置为初始大小。Model数据库用作在系统上创建的所有数据库的模板。当创建新的数据库时,新数据库的第一部分通过复制的model数据库中的内容创建,剩余部分有空白页填充。由于SQLServer每次启动都要创建tempdb数据库,所以model数据库必须一直存在于SQLServer系统。Msdb数据库是供SQLServer代理程序调度警报和作业以及记录操作员时使用的数据库。SQLServer2000中的每个数据库都包含系统表,用来记录SQLServer足见所需的数据。SQLServer的操作能否成功,取决于系统表信息的完整性,因此Microsoft不支持用户直接更新系统表中的信息。下面介绍图形工具。MicrosoftSQLServer2000包含许多图形实用工具,使得用户、程序员和系统管理员得以轻松地完成各项复杂的工作。这些图形实用工具主要包括:SQLServer企业管理器、SQL查询分析器、Windows2000系统监视器(WindowsNT性能监视器)、导入/导出数据向导、SQL事件探查器、SQLServer服务管理器、客户端网络实用工具、服务器网络实用工具和其他一些实用工具。1、SQLServer企业管理器SQLServer企业管理器是MicrosoftSQLServer2000的主要管理工具,提供了一个遵从Microsoft管理控制台(MMC)的用户界面,SQLServer企业管理器提供的主要功能有:定义运行SQLServer的服务器组,将个别服务器注册到组中,为每个已注册的服务器配置所有的SQLServer选项,在每个已注册的服务器中创建并管理所有SQLServer数据库、对象、登录、用户和权限,在每个已注册的服务器定义并执行所有的SQLServer管理任务,通过唤醒调用SQL查询分析器,交互地设计并测试SQL语句、批处理文件和脚本,唤醒调用为SQLServer定义的各种向导。2、SQL查询分析器SQL查询分析器是一个图形用户界面,用以交互地设计和测试Transact-SQL语句、批处理文件和脚本。它可以从SQLServer企业管理器中调用。SQL查询分析器提供如下功能:可以对Transact-SQL语句进行文本编辑。用不同的颜色对Transact-SQL语句不同成分进行标识,这样提高了复杂语句的易读性。提供了对象浏览器和对象搜索工具,可以轻松查找数据库中的对象和对象结构。提供了性能优越的模板,可用于加快创建SQLServer对象的Transact-SQL语句的开发速度。模板是包含创建数据库对象所需的Transact-SQL语句基本结构的文件。提供了用于分析存储过程的交互式调试工具。2.4.3SOL语言简单介绍SQL是英文Structured

Query

Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。

目前,绝大多数流行的关系型数据库管理系统,如Oracle、

Sybase、

Microsoft

SQL

Server、

Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select、

Insert、

Update、

Delete、

Create

以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。SQLServer数据库系统在客户机/服务器运算模式下,数据库的查询操作都集中在服务器方进行,在网络上传输的是用户的请求命令和服务器的检索结果,而不是整个数据库文件,这样可以减少网络上的信息流量,从而提高网络的使用效率。2.4.4JDBC数据库连接技术数据库连接对动态网站来说是最为重要的部分,Java中连接数据库的技术是JDBC(JavaDatabaseConnectivity)。它是SUN基于X/OpenSQLCLI的数据库技术,是一种能通过Java语言访问结构化数据库的应用程序接口(JDBCAPI),对于一些使用结构化查询语句的关系型数据库尤为有效。很多数据库系统带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等等操作。JDBC不但提供了标准的API连接数据源,而且还为数据库的生产厂家提供了标准的驱动程序,使得用户可以方便地使自己的Java应用程序与数据库互相通信。JDBC最大的特点是:对下,JDBC封装了各种底层数据源之间的差异;对上,JDBC提供标准的SQL界面。这使得上层应用对底层数据源的访问完全透明,大大地简化了访问底层数据源的复杂性,真正做到了无障碍沟通。2.5搭建开发环境2.5.1安装和配置JDK下载JDK1.5.0并安装完后,在环境变量中进行相关的配置。下面以WindowsXP操作系统为例进行配置:1、Java_HOME环境变量的设置,Java_HOME是表示Java安装的目录,其他应用程序如果需要使用Java运行环境,首先获得该变量信息,然后确定执行路径。2、CLASSPATH环境变量的设置,CLASSPATH表示搜索Java类的路径,这个路径中可以包括一些Jar归档文件,也可以是一个目录。3、PATH环境变量的设置,PATH变量是系统可执行程序的路径。2.5.2安装TomcatTomcat服务器是当今使用广泛的JSP/Servlet服务器,它运行稳定、性能可靠,是学习和中小企业的最佳选择。在安装Tomcat的过程中选择Java的安装目录,安装完后启动Tomcat监视器点击Startservice来启动Tomcat服务器,并打开IE浏览器,在地址栏输入:8080进行测试。2.5.3安装和配置JDBC安装好MSSQLServer2000数据库系统后,继续安装微软公司提供的JDBC驱动程序SQLServer2000DriverforJDBCSP3,然后进行配置如下:1、JDBC_HOME环境变量中设置为JDBC的安装地址。2、增加新的环境参数CLASSPATH=%JDBC_Home%\lib\msbase.jar;%JDBC_Home%\lib\mssqlserver.jar;%JDBC_Home%\lib\msutil.jar。3、把3个JDBC的驱动程序文件msbase.jar、mssqlserver.jar、msutil.jar拷贝到所有源码目录的Web-INF\lib目录中,否则JSP无法连接到SQLServer2000数据库。3需求分析为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。分析需求是所有是所有网上实验预约系统开发的第一步,也是最重要的一步。理解需求是在问题及其最终解决方案之间架设桥梁的第一步。开发者只有和客户充分理解了需求之后才可以设计系统,否则,对需求定义的任何改进,设计上都必须大量的返工[2]。3.1系统需要解决的主要问题通过对网上实验预约系统的实地调查,得知实验预约是面向特定的某些对象的,并且实验预约是任意的,一般一次预约是连续的两节课,预约者可以在某一周的星期一至星期日的一二节、三四节、五六节、七八节和晚上,预约实验和固定实验一旦被安排好之后节假日也不再安排实验。实验预约系统是给高校的实验提供通过网络管理的系统,给学生、教师和实验室的管理人员都提供方便。学生和老师在系统中能够预约实验、取消实验、查看实验情况等;管理员再对预约实验进行审批,以及添加固定实验。3.2基本功能分析根据调查后的实际情况以及这次设计的要求,网上实验预约系统应该具备这些基本功能:1、有使用权限的用户登录才可以进入系统。2、进入系统后用户可以查看实验室状态并进行实验预约、在未被批准前取消自己的预约、查看实验预约情况。3、管理员在后台可以添加固定实验和安排预约实验。4、为了健全预约系统,管理员可以添加删除预约实验的用户,以及修改他们除开密码和预约信息以外的所有的信息。5、为了实现网上实验预约系统的快捷性,系统还可实现邮件群发单发的功能,管理员可以对用户利用邮件发送通知预约情况。除了实现上述功能以外,在线实验预约系统还应该一些其他小功能,并具有友好、简洁的界面,安全性要高,稳定性要强,能够满足100人以上同时及进行在线预约。3.3建模分析为了更好地理解复杂事物,人们常常采用建立事物模型的方法。所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一些图形符号和组织这些符号的规则组成。结构化分析实质上是一种创建模型的活动。为了开发出复杂的软件系统,我们在需求阶段应该从不同角度抽象出目标系统的特性,使用精确的方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计中逐渐把和实现有关的细节加进模型中,直至最终用程序实现模型[2]。3.3.1系统流程图系统流程图是概括地描绘物理系统的传统工具。它是用图形符号以黑盒子形式描绘出组成系统的每个部件。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。预约用户使用该系统进行实验预约,每一次预约信息的变化称为一个事务,由用户通过预约输入到计算机中;系统中的实验预约程序对事务进行处理,更新存储在预约信息中。最后由管理员审批安排实验。图3-1描绘了上述系统的概貌。注意图中每个符号用黑盒子形式定义了组成系统的一个部件,然而并没有指明每个部件的具体工作过程;图中的箭头确定了信息通过系统的逻辑路径(信息流动路径)。图3-1基本系统流程图3.3.2数据流图数据流图是系统的逻辑模型,然而任何计算机系统实质上都是信息处理系统,也就是说计算机系统本质上都是把输入数据变换成输出数据。因此,任何系统的基本模型都由若干个数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。对于这个系统画出图3-2这样的基本系统模型。图3-2实验预约系统的基本系统模型从这个基本系统模型出发开始画功能级数据流图,把基本系统模型细化,描绘系统的主要功能。预约实验和审批实验是系统必须完成的两个主要功能,它们将替代图3-2中的预约系统。此外,细化后的的数据流图中还增加了两个数据存储:处理事务需要实验室状态数据;审批预约和处理事务在两个不同时间,因此需要存储预约信息。还有另外两个数据流,它们与数据存储相同。这是因为从一个数据存储中取出来的或放进去的数据通常和原来存储的数据相同,也就是说,数据存储和数据流只不过是同样数据的两种不同形式。如图3-3预约系统的功能级数据流图所示。在图3-3中给处理和数据存储都加了编号,这样做的目的是便于引用和追踪。图3-3系统的功能级数据流图接下来应该对功能级数据流图中描绘的系统主要功能进一步细化。考虑通过系统的逻辑数据流:当发生一个事务时必须首先接收它;对后按照事务的内容修改实验室状态;然后写入预约信息中。因此,把实验预约这个功能分解为下述3个步骤,这在逻辑上是合理的:查看实验室状态、添加预约、取消预约。如图3-4所示。图3-4系统的功能级进一步分解的数据流图3.4系统运行环境运行JSP的服务器端的要求,如表3-1所示表3-1服务器端配置操作系统需要安装的J2SDKTomcatWindows98J2sdk-1_4_1_01Tomcat4.0以上WindowsNT4.0ServerJ2sdk-1_4_1_01Tomcat4.0以上Windows2000J2sdk-1_4_1_01Tomcat4.0以上WindowsXPJ2sdk-1_4_1_01Tomcat4.0以上4系统设计4.1系统设计思想本系统采用三层架构设计,它的工作原理如图4-1所示。图4-1系统工作原理图采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。4.2系统功能模块图根据需求分析得到系统的总体结构图,如图4-2所示。本系统工作在Web浏览器/服务器模式(Browser/Server,简称B/S)模式下。实际上是一种三层模型,包括前台用户窗口、后台数据库和中间应用程序。用户窗口围绕主页进行展开,主页采取自顶向下的规则进行,逐级分解功能进行链接。本程序采用jsp和数据库技术结合编程。本系统设计思想基于以上实验预约的需求分析,将系统分为以下五大功能模块。系统登录模块该模块包括超级管理员、普通管理员、教师用户、学生用户的系统登录,每一个系统用户都拥有事先分配好的用户名和密码,不同类型的用户只能访问各自工作领域内的相关页面。超级管理员模块超级管理员可以对系统进行管理,主要是对实验室、普通管理员、教师信息、学生信息的维护,以及对实验进行管理,此外还可以发送邮件,管理留言求助。普通管理员模块普通管理员可以查看实验室信息、教师信息,以及进行留言管理和实验管理。教师用户模块教师进入系统后就进入预约页面,包括任意预约、取消预约和查看预约情况。另外教师还可以进行留言求助和修改个人信息。学生用户模块学生进入系统后就进入预约页面,包括任意预约、取消预约和查看预约情况。学生也可以进行留言求助和修改个人信息。图4-2系统功能模块图5数据库设计5.1数据库设计原则一致性原则:对信息进行统一系统的设计,协调好各数据,保证系统数据的一致性和有效性。完整性原则:数据库的完整性是数据库的正确性和相容性。要防止合法用户在使用数据库用数据库造成数据泄露,更改和破坏。要有认证和授权机制。可伸缩性原则:数据库结构的设计应充分考虑发展的需要,移植的需要,具有良好的可扩展性,伸缩性和适度繁琐度。规范化数据库的设计:应遵循规范化理论,程度过低,可能会存在插入。删除异常,修改复杂,数据繁琐的问题,解决的方法就是对关系模式进行分解或合并,转换成高级范式。范式有六个级别:1NF,2NF,3NF,BCNF,4NF,5NF。但是也应当注意到,并不是规范程度越高就越好。当一个应用的查询中经常涉及到两个或两个以上的关系模式的属性时,系统就必须经常地进行连接运算,而连接运算的代价是非常高的。所以,在具体应用时的规范化程度需要权衡利弊。一般而言,做到第三范式就足够了。5.2数据库需求分析根据前面的分析得,系统的实体-联系图为5-1,预约用户教师和学生的关系是多对多,一个教师可以预约多个实验室,因为一个教师有可能教几个班级的课;一个学生代表一个班集体进行实验预约预约,与实验室的预约关系是一对一的关系。因为一个班级一次只能预约一次实验室。图5-1实体间关系的ER图1、教师实体图如图5-2所示。教师实体信息包括教师编号、教师姓名、教师密码、邮箱、所属学院、电话、住址、性别。图5-2教师实体图学生实体图如图5-3所示,主要信息包括学号、姓名、密码、班级、学院、邮箱、性别、电话。图5-3学生实体图实验室实体图如图5-4所示,主要信息包括实验室编号、实验室名、实验室现状态、设备数量。图5-4实验室实体图4、管理员实体图如图5-5所示,主要信息包括用户名、权限、密码。图5-5管理员实体图对实验预约系统的需求,通过对实验预约工作流程和数据流程分析,设计出如下的数据项和数结构:实验室信息:包括的数据项目有实验室编号、实验室名称、当前状态、设备总台数。教师信息:包括的数据项目有教师编号、教师姓名、密码、邮箱、住址、电话、性别、学院。学生信息:包括的数据项目有学生学号、学生姓名、密码、邮箱、班级、电话、性别、学院。实验预约信息:包括的数据项有预约编号、实验室编号、实验室名称、预约人编号、预约班级、预约时间。班级信息:包括的数据项有班级号、班级名称。管理员信息:包括的数据项有用户名、密码、权限。留言信息:包括的数据项有留言人编号、留言人姓名、留言内容、留言时间、回复信息。5.3数据库概念设计为了做到第三范式,分析如下,每个实体都有个主键,实体与实体之间又相互联系,如图5-6。预约信息表中的教师编号是教师信息表中的外键,预约信息表中的班级名也是班级信息表中外键,预约信息表中的实验室名是实验室信息中的外键。所以预约信息表中的数据项中关键字有三个预约人、班级名和实验室名,而且这三个是预约用户的主键、班级信息的主键和实验室信息的主键,预约信息表由这三个表所约束,符合了第三范式,消除了第一范式的冗余,也消除了非主属性对码的部分函数依赖,更进一步消除了非主属性对码的传递函数依赖。图5-6部分实体关系图5.4数据库逻辑结构设计将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构,下面是主要的数据表的设计。1、名称:管理员信息表(admin)标识:admin数据来源:后台页面取得。如表5-1所示。表5-1管理员信息表名称列名数据类型长度允许空用户名adminIDchar10NO密码passwordchar10NO权限adminTypeint4NO2、名称:班级信息表(class_info)标识:class_info。数据来源:后台页面取得。如表5-2所示。表5-2班级信息名称列名数据类型长度允许空班级号idchar20NO班级名classnamechar30NO3、名称:实验室信息表(lab_info)标识:lab_info。数据来源:后台页面取得如表5-3所示。 表5-3实验信息表名称列名数据类型长度允许空实验室号idbigint8NO实验室名labnamechar30NO实验室状态statechar4NO设备总台数Equip_numint8NO4、名称:留言信息表(message)。标识:message。数据来源:前台页面取得。如表5-4所示。表5-4留言信息表名称列名数据类型长度允许空留言人编号IDnvarchar20NO留言人姓名Tnamechar20NO留言内容subjectnvarchar80NO留言时间[time]datetime8NO回复replynvarchar80YES5、名称:教师信息表(Teacher_info)标识:Teacher_info数据来源:后台页面取得如表5-5所示。表5-5教师信息表名称列名数据类型长度允许空教师编号IDnvarchar20NO教师姓名Tnamenvarchar20NO密码passwordnvarchar20NO邮箱emailnvarchar40NO住址addressnvarchar60NO电话telnvarchar16NO性别sexnvarchar10NO学院depnvarchar60NO6、名称:预约信息表(yuyue_info)标识:yuyue_info数据来源:前台页面取得如表5-6所示。表5-6预约信息表名称列名数据类型长度允许空编号idint4NO周数weekchar20NO星期几[day]char20NO第几节coursechar20NO班级classchar20NO实验室名labchar30NO预约人编号usernamechar30NO7、名称:邮箱信息表(formail)标识:formail数据来源:前台数据库如表5-7所示。表5-7邮箱信息表名称列名数据类型长度允许空邮箱addressvarchar50NO标题titlevarchar50NO内容contentvarchar8000NO收信名usernamevarchar50NO8、名称:学生信息表(stu_info)标识:stu_info数据来源:后台页面取得。如表5-8所示。表5-8学生信息表名称列名数据类型长度允许空学号IDnvarchar20NO学生姓名Tnamenvarchar20NO密码passwordnvarchar20NO邮箱emailnvarchar40NO班级classnvarchar60NO电话telnvarchar16NO性别sexnvarchar10NO学院depnvarchar60NO6系统实现与关键技术这个实验预约系统里主要有两类文件,一类是Bean文件,另一类是JSP文件,保存在user文件夹里,classes中存放Bean文件。user文件夹地址为:C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.5\webapps\user6.1代码的目录结构user存储了整个开发系统的源代码。Database保存了此系统分离后的后台数据库。WEB-INF中保存了classes文件夹,JavaBean保存在此。images用于保存系统用到的图片。admin用于存储超级管理员的后台操作功能代码。nadmin用于存储普通管理员操作功能代码。teacher用于存储教师用户的操作功能代码。student用于存储学生用户的操作功能代码。6.2主要功能模块1、超级管理员模块功能结构如图6-1所示。包括超级管理员登录、教师管理、实验室管理、实验管理、留言管理、邮件管理六个模块。登录模块中选择管理员用户类型再输入用户名和密码判断用户名和密码是否有效。添入用户名和密码后点击[提交]按纽,系统自动从数据库中管理员信息表判断是否存在相同的用户名和密码,并核对权限,如果有则进入系统,如果不存在则提示用户名和密码有错误信息。输出:登录成功,进入超级管理员的系统使用资源页面,不成功显示错误信息页面。然后可以进行对预约实验进行管理、添加固定实验、用户信息维护、添加普通管理员、实验室信息维护、留言管理以及邮件群发等功能。图6-1超级管理员模块结构图2、普通管理员模块功能结构如下图6-2所示。包括普通管理员登录、查看用户信息、查看实验室状态、实验管理、留言管理、邮件管理五个模块。普通管理员是进入系统协助超级管理员维护系统信息的。普通管理员登录系统时先选择管理员入口,输入用户名和密码后,系统从数据库中管理员信息表中判断是否存在相同的用户名和密码,并核对权限,如果存在则进入系统进行实验管理,也可以查看用户信息、查看实验室信息、发送邮件等功能。图6-2普通管理员模块结构图3、教师用户模块此功能模块结构图如下图6-3所示。包括个人信息修改、预约、查看实验室状态、留言求助四个功能。教师作为用户进入系统,在登录模块中先选择用户类型为教师,再输入用户名和密码,即教师编号,原始密码也默认为教师编号。然后系统从数据库教师信息表中查询判断是否存在相同的用户名和密码,如果存在则进入系统进行实验预约包括查看预约和撤消自己未被批准的实验预约,也可以根据需要对个人信息进行修改、查看实验室当前状态信息,当实验室设备或者软件出现问题时就留言向管理员进行求助。图6-3教师用户模块结构图4、学生用户模块此功能模块结构图如下图6-4所示。学生模块包括个人信息修改、预约、查看实验室状态、留言求助四个功能。学生作为用户进入系统,代表一个班级进行实验预约。在登录模块中先选择用户类型为学生,再输入用户名和密码,即学号,原始密码也默认为学号。然后系统从数据库学生信息表中查询判断是否存在相同的用户名和密码,如果存在则进入系统进行实验预约包括查看预约和撤消自己未被批准的实验预约,也可以根据需要对个人信息进行修改、查看实验室当前状态信息,当实验室设备或者软件出现问题时就留言向管理员进行求助。图6-4学生用户模块结构图6.3系统实现的主要通用模块6.3.1实现数据库连接的Bean(Conn.java)//Conn.javapublicclassConn{privatestaticConnectioncon;privateStatementstmt;privateResultSetrs;privatestaticfinalStringdrivername="com.microsoft.jdbc.sqlserver.SQLServerDriver";privatestaticfinalStringurl=jdbc:microsoft:sqlserver://:1433;DatabaseName=Booklab;user=sa;password=;";//设置连接的数据库为Booklab,用户名为sa,密码为空。publicstaticsynchronizedConnectiongetCon()throwsException{//获得数据库连接try{Class.forName(drivername);con=DriverManager.getConnection(url);//获得连接returncon;};}publicStatementgetStmtread(){try{con=getCon();stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);returnstmt;//返回对象}……}publicResultSetgetRs(Stringsql){try{stmt=getStmtread();//获得对象rs=stmt.executeQuery(sql);//执行查询结果returnrs;//返回结果集}……}有个这个JavaBean后,以后每次连接数据库进行操作时只要调用相应的方法体就可以了。避免了每个对数据库操作的jsp页面要编写同样的数据库连接与操作代码,使jsp页面代码尽量简洁。这样也易于系统扩展。6.3.2提示页面Bean(Show.java)这是一个网页式的提示信息,将代码写到JavaBean中使用的时候就方便了许多。调用Show对象中的方法errorBox时,先传递变量str2,后传递str1,生成一个HTML页面并且报告出错信息。6.3.3实现编码转换的Bean(Str.java)这个Bean中提供了几种编码转换的封装方法,用的特别多的是转换为中文的这一个。得到转换为中文的字符串publicStringtoChinese(Stringstr){if(str==null||str.length()<1){str="";}else{try{str=(newString(str.getBytes("iso-8859-1"),"GB2312"));}catch(UnsupportedEncodingExceptione){System.err.print(e.getMessage());e.printStackTrace();returnstr;}}returnstr;}2、将编码转换为GBK字体publicStringtoStr(Stringstr){if(str==null||str.length()<1){str="";}else{try{str=(newString(str.getBytes("ISO8859_1"),"GBK"));}catch(UnsupportedEncodingExceptione){System.err.print(e.getMessage());e.printStackTrace();returnstr;}}returnstr;}publicStringdbEncode(Stringstr){if(str==null){str="";}else{try{str=str.replace('\'',(char)1).trim();}catch(Exceptione){System.err.print(e.getMessage());e.printStackTrace();returnstr;}}returnstr;}3、将指定的字符串按UNICODE的形式进行编码. publicStringtoUnicode(Stringsrc){ if(src==null||"".equals(src.trim()))returnsrc; try{ Stringtarget=newString(src.getBytes("GBK"),"ISO-8859-1"); returntarget; } catch(Exceptione){ } returnsrc;}publicStringgbToUtf8(Stringsrc){byte[]b=src.getBytes();char[]c=newchar[b.length];for(intx=0;x<b.length;x++){c[x]=(char)(b[x]&0x00FF);}returnnewString(c);}6.3.4分页技术Bean(Page.java) 在本系统中我的分页面技术使用JavaBean技术。先声明几个私有属性如下:privateintonePageCount=0;//每页记录数privateintallRecordCount=0;//总记录数privateintallPageCount=0;//总页数privateintnowFirst=0;//当前首记录privateintnowLast=0;//当前尾记录privateintintPage;//当前页号privateConncon=newConn();privateResultSetrs;1、得到查询结果集的方法:publicResultSetgetRs(Stringsql){rs=con.getRs(sql);returnrs;}2、得到总记录数的方法:publicintgetallRecordCount(Stringsql){try{rs=getRs(sql);rs.last();//光标在最后一行allRecordCount=rs.getRow();//(总的记录数)}catch(Exceptione){System.err.println(e.getMessage());e.printStackTrace();}returnallRecordCount;}3、得到总页数的封装:publicintgetallPageCount(Stringsql){try{allPageCount=getallRecordCount(sql)/onePageCount;if((allRecordCount%onePageCount)>0){allPageCount++;}}catch(Exceptione){System.err.println(e.getMessage());e.printStackTrace();}returnallPageCount;}4、得到当前页面方法的封装:publicintgetintPage(StringstrPage){try{if(strPage==null){//此时显示第一页数据intPage=1;}else{//将字符串转换成整型intPage=java.lang.Integer.parseInt(strPage);//当前页面if(intPage<1)intPage=1;elseif(intPage>allPageCount)intPage=allPageCount;nowFirst=(int)(onePageCount*(int1));//当前页面首记录}nowLast=nowFirst+onePageCount-1;//当前页面尾记录}catch(Exceptione){System.err.println(e.getMessage());e.printStackTrace();}returnintPage;}5、设置每页记录数方法封装:publicvoidsetonePageCount(intonePageCount){this.onePageCount=onePageCount;}6、得到当前页面首记录方法:publicintgetnowFirst(){returnnowFirst;}7、得到当前页面尾记录方法:publicintgetnowLast(){returnnowLast;}6.4登录此系统是一个封闭的实用系统,进入本系统前用户首先得身份验证,进行登录操作,所有页面从这里登录后进入。如图6-5所示,实现登录的时先选择用户类型为管理员、教师、学生中一个,再输入相应的用户名和密码,提交完信息后系统就转入了login.jsp进行数据验证。login.jsp中的关键代码如下:1、login.jsp代码段1:StringUsername=(String)request.getParameter("username");StringPassword=(String)request.getParameter("pwd");StringUsertype=(String)request.getParameter("usertype");这三行代码就是声明三个string变量Username、Password、Usertype与index.html的username、pwd、usertype就是用户名、密码和用户类型一一相对应,然后把登录页面中输入的数据进行数值传递。图6-5登录2、login.jsp代码段2:if(Usertype!=null&&Usertype.equals("admin")){rs=con.getRs("SELECT*FROMadminWHEREadminID='"+Username+"'andpassword='"+Password+"'andadminType=0;");}if(Usertype!=null&&Usertype.equals("teacher")){rs=con.getRs("SELECT*FROMTeacher_infoWHEREID='"+Username+"'andpassword='"+Password+"';");}if(Usertype!=null&&Usertype.equals("sudent")){rs=con.getRs("SELECT*FROMstu_infoWHEREstu_id='"+Username+"'andpassword='"+Password+"';");}这段代码用来把输入数据与数据库表中的信息进行验证,其中三个if语句先判断出用户类型是teacher、student、admin中的哪一个,然后再查询数据库表中是否有相应的用户,以及密码是否正确。3、login.jsp代码段3:〈%if(rs.next()){session.setAttribute("username",Username);//保存登录名session.setAttribute("usertype",Usertype);//保存登录类型if(Usertype.equals("admin")){response.sendRedirect("admin.jsp");}else{response.sendRedirect("yuyue.jsp");}……%>当rs结果集不为空时,判断用户类型与admin一致不一致,如果一致就转入管理员功能页面,不然就转入用户预约功能页面yuyue.jsp。预约者进入预约首页,就可以进行实验预约、实验取消,如果需要还可以转入个人信息修改页面。否则出错并禁止登录。当每次访问与用户权限相关的页面时,需要重新获取session中的信息,验证session中的信息是否符合要求,如果符合要求,则显示该页面,否则,返回登录界面重新登录。6.5预约实验用户预约实验的流程图如图6-6。预约实验的思想是:一方面,预约用户学生或者教师通过验证后登录系统就进入预约功能的主页面,然后可以进行实验室现状的查询,然后进行实验预约,实验预约时候系统程序提供了预约时间冲突提示出错,没有特殊情况是不能在同一时间预约同一间实验室的,预约不成功可以重新预约。预约成功后也可以在管理员验证预约之前取消本人的预约。实验预约的主页面yuyue.jsp如图6-7。在此页面中,用户可以直接按周数进行时间选择然后预约实验,然后可以看到自己的预约情况并进行预约取消。另一方面,预约用户也可以选择实验室状态进行实验查询后,如图6-8和6-9所示,在这里系统提供了在两周内查看实验室是否有空堂的查询,然后可以在查询实验室状态时同时进行实验预约。另外,主页面6-7中还为用户提供了一些预约实验的帮助功能:用户根据需要可以修改个人信息;也可以在系统留言求助有关实验方面的问题。在yuyue.jsp中,关键代码分析如下:1、yuyue.jsp关键代码段1:<%booleanisLogin=true;Stringusername=(String)session.getAttribute("username");Stringusertype=(String)session.getAttribute("usertype");if(username==null||username==""||(usertype.equals("admin")){isLogin=false;}if(!isLogin){ //response.sendError(403,"用户未登录,禁止访问");response.sendRedirect("index.htm"); return;}%>上面代码段先取出username用户名和usertype用户类型,如果用户名为空格或者空值时,或者用户类型为admin管理员,就输出“用户未登录,禁止访问”这句话,然后返回系统登录页面index.htm重新登录。图6-6实验预约流程2、yuyue.jsp关键代码段2:<formmethod=postaction="yuyue_update.jsp">教学周:<selectname="week"><%for(i=0;i<24;i++){%><optionvalue="第<%=i+1%>周">第<%=i+1%>周</option><%}%></select>提交表单成功时,就转入yuyue_update.jsp,把此次预约情况添加进预约信息表中,并在个人预约情况表中显示出来。图6-7实验预约主界面星期:<selectname="day"><%for(i=0;i<7;i++){if(i==6){%><optionvalue="星期天">星期日</option><%}else{%><optionvalue="星期<%=i+1%>">星期<%=i+1%></option><%}}%></select>课程节次:<selectname="course"><%for(i=0;i<10;i+=2){%><optionvalue="第<%=i+1%>-<%=i+2%>节">第<%=i+1%>-<%=i+2%>节</option><%}%></select>这段关键代码2在yuyue.jsp页面中设置了三个下拉菜单用来给用户选择预约的时间。教学周总共设置了24周,用户可以在其中选择24周的任何一周;星期里面也包括了一个星期七天,用户也可以任选星期几来进行实验预约;课程节次就用来选择是第几周星期几的哪两节课,因为一般一天分为10节课,而且实验一般以两节课为最小单位,这里代码段显示预约用户可以在这里选择第1-2节、第3-4节直至第7-8节和第9-10节。这个表单中还有预约的班级信息、实验室信息供选择,他们都与班级信息表和实验室信息表相连接,下拉框中显示数据表中所有的信息。当提交预约信息时,系统会自动检查实验室是否已经被预约过,如果预约信息表中实验室状态值为0,则预约成功,否则重新预约。具体代码如下:班级:<%Stringclassname;out.print("<selectname=class>");sql="select*fromclass_info;";rs=con.getRs(sql);while(rs.next()){classname=rs.getString("classname");id=rs.getInt("id");out.print("<optionvalue="+classname+">"+classname+"</option>"); }out.print("</select>");%>预约实验室:<%Stringlabname;out.print("<selectname=lab>");sql="select*fromlab_infowherestate='0';";//判断实验室在此时间下被预约过没有。rs=con.getRs(sql);while(rs.next()){labname=rs.getString("labname");id=rs.getInt("id");out.print("<optionvalue="+labname+">"+labname+"</option>"); }out.print("</select>");%>yuyue.jsp代码段3下面这段代码显示了预约情况表,表格包括这七列预约实验编号、教学周

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论