J2EE应用程序开发实践课题学生选课系统

上传人:jiups****uk12 文档编号:45974771 上传时间:2018-06-20 格式:DOC 页数:35 大小:2.17MB
返回 下载 相关 举报
J2EE应用程序开发实践课题学生选课系统_第1页
第1页 / 共35页
J2EE应用程序开发实践课题学生选课系统_第2页
第2页 / 共35页
J2EE应用程序开发实践课题学生选课系统_第3页
第3页 / 共35页
J2EE应用程序开发实践课题学生选课系统_第4页
第4页 / 共35页
J2EE应用程序开发实践课题学生选课系统_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《J2EE应用程序开发实践课题学生选课系统》由会员分享,可在线阅读,更多相关《J2EE应用程序开发实践课题学生选课系统(35页珍藏版)》请在金锄头文库上搜索。

1、 J2EE应用程序开发实践课题题 目 学生选课系统 学 生 学号: 学 院 专业班级 软件141 指导教师 1目 录摘要I目 录I1 绪论11.1学生选课系统介绍11.1.1 学生选课系统的概念11.1.2 学生选课系统的开发方法21.2 课题内容3 2 相关技术介绍42.1 面向对象的设计方法52.2 MVC框架52.3 数据库选择62.4 JavaEE技术72.4.1 JavaEE基本信息介绍72.4.2 JavaEE基本架构72.4.3 My Eclipse开发平台82.5网站开发工具JSP介绍82.6 Tomcat83 总体设计103.1性能需求分析103.2可行性分析11 3.3 学

2、生选课系统功能描述123.4 学生选课系统性能描述133.5 学生选课系统逻辑模型143.8学生选课系统安全性分析183.9 可靠性需求183.10软件非功能性需求分析184 系统设计194.1系统设计原则194.2 系统概述194.3 系统总体功能图194.4 数据库设计204.5 概念结构设计214.6 物理结构设计235 详细设计与实现285.1管理员登录345.2教师登录35 5.2学生登录35 6 系统测试386.1 测试目的与目标386.2 测试方法386.3 测试用例396.4 测试分析406.4.1本系统测试406.4.2 系统维护406.4.3 系统评价406.4.4 系统的

3、不足406.4.5 测试结论40总 结42参 考 文 献43IV1 绪论1.1学生选课系统介绍1.1.1 学生选课系统的概念学生选课系统针对我们的系统数据进行分析和处理,来调控系统的决策、计划和辅助系统学生选课系统起到了很大的作用,具体作用:1) 对数据关系进行指定的分析,客观的预测未来的发展。2) 向各级管理机构提供相关的报告,从而方便人们解释和分析,节省了我们的时间。3) 针对信息的管理和提供的信息进行统一的处理,从而排除数据可能不完整的情况,减少了使用的错误率。4) 及时提供所需的各种信息和正确的数据。5) 为开发用户提供可靠的信息和数据,满足开发者的需求,节约开发的时间和成本,方便选择

4、最佳的开发方案。1.1.2 学生选课系统的开发方法怎么开发学生选课系统?现在我们一般使用原型法和生命周期法,我们将两个结合起来开发。首先是系统总体框架设想,在总框架下再构思各功能单元的功能和结构。系统需要哪些功能,可以分成哪些部分,各个部分又分成哪些模块这些都是必需确定下来的。针对具体模块的设计,可能是新设计一块模块,或者采用另一模块进行替代。学生选课系统的研发是相当复杂困难的,所以我们应该选择科学的方式来实现系统的设计3。但是,现如今系统的开发技术还不是特别的完善和完整。所以从实际情况出发,考虑到用户的需求和功能,我选择了原型法和生命周期法相结合的方式来开发系统。1) 生命周期法生命周期法是

5、科技不断发展的产物,我们从各个技术的成长消亡过程中得到了这个技术。从广义来说,任何系统都有着产、成长和被取代的过程,这个过程就是系统的生命周期4。其包含以下几个部分:系统的分析、系统的维护、对系统的功能进行设计分析。根据对整个系统的分析和设计来对系统进行设计。其中包括程序的设计,程序的运用和实现。生命周期法拥有一定的优势。包括以下几个特点:l 服务用户l 重视研究调查和系统分析l 分别进行逻辑设计与物理设计l 设计方法科学和有效l 严格步骤进行l 系统的标准化和规格化 2) 原型法在信息系统理论中,“原型”是指其形状、结构和功能都与某个物体相类似的对该物体进行模拟的初始模型。我们通常用“原型”

6、对前期可运行的版本进行描述,并能够对新的系统的功能的特征进行较好的反应。在此基础上,“原型方法”就是利用原型来对开发系统进行辅助的一种新的方法。首先设计新系统的一个“原型”用户,开发者可以在开发的过程中,不断的改进系统,逐步满足你想要的这种需求,从而最终完善新系统的各项功能。原型法的基本思想是:用户在短时间内快速的开发出一个粗糙的原型系统,然后根据自己的要求不断的改进系统,最后在进一步的完善自己的系统,从而满足自己的需求和所需要的各个功能。本文的系统选择演化型原型法,其主要的并不在于对用户的需求进行改变以及对规格进行说明,而在于使得系统设计更加容易改进,基于原型的基础上逐步改进成为最终的目标系

7、统5。所以,我们在开发系统的时候应该使用原型法来满足我们这个系统的功能和需求。1.2 课题内容目前,学校工作繁杂、资料重多,学生选课系统已进入高校,但还未普及,而对于学生信息管理来说,还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。根据开发要求,它主要应用于教育系统,完成对日常学生基本信息以及成绩的录入查询更新删除等管理操作,实现学生信息管理的计算机化。开发学生选课系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理。本文主要介绍了学生选课系统的主要任务,阐述了开发该系统用到的

8、关键技术,如采用B/S结构,使用JSP编程、利用mysql建立数据库。本系统是采用B/S模式进行开发的,系统的用户权限有三种:学生、教师和系统管理员,不同权限用户登入到不同的操作界面。该系统主要由管理员,教师和学生功能模块组成,本文具体介绍了各功能模块所包含的小模块的功能。2 相关技术介绍2.1 面向对象的设计方法面向对象的开发是当前一个很重要的设计方法,Java语言在这方面拥有一定的优势。其具有以下几个优势,如对代码重用的支持、较强的扩展性、维护代码方便等等。这些优点是过程编程语言所不具备的6。以下是其所具有的优点:1) 可管理性 维护简单 在面向对象的开发过程中,很多数据和模块都是要进行调

9、整的,在开发的过程中和对象构成系统,类生产对象,所以只需要对类进行管理就行,所以在一个系统中,类如果是趋于相对稳定,就很容易管理。2) 模块化 模块化是其典型特征。同一个名字空间表示一个对象的实体,其中对象的功能也是相同的,所以在修改名字空间的增量的时候是不会影响其对象。3) 可扩充性 面向对象拥有扩展性,如果我们在其中加入一个类,这个类就得到扩充,这个类也将具有扩展的功能。在开发面向对象的程序是,显示了面向对象具有的扩充性。能依据事物的了解进一步的完善程序,从而无需作出大幅度的改变,还能采用继承,为类增加属性和方案。4) 代码重用 开发面向对象的核心思想就是要注重其可重用性。在编程是,不管是

10、抽象、多态、封装还是继承,最主要的还是它的可重用性,这个非常重要。因为类表征一个客观独立存在的实体,而且其所有的功能是封装于类中,所以如果有类库就会简单得多。可重用性体现在两个方面: 1) 别人以及别的项目使用开发的类。2) 因为继承,代码可以得以重用。2.2 MVC框架MVC是采用操作系统和一些现有的应用软件,它们拥有一些图形相关的截图和有联系的时间处理体,会去处理一些特征,采用非常直接的方式来建立程序的整个体系。通过MVC框架来架构服务器和互联网7。逻辑层、业务逻辑层和数据层组成MVC架构。MVC的含义如下表示:1) 视图View视图是用于用户交互的界面,并且可以向客户展示数据信息,能够去

11、接受到相关的用户信息,并且与模型层进行交互操作,当接受到用户方给出的数据之后,就能够和模型层进行交互,能够查询出相关业务状态。当完成这些数据以后,可以去修改用户的信息8。2) 模型Model主要是针对应用程序设计所需要的功能,它主要表现在数据和逻辑结构上9。一个模型能提供多种信息给视图,通过模型可以提升代码的重要性。3) 控制器(Controller),控制器是用来控制用户的相关数据,用户可以通过控制器来调用模型和视图。控制器在用户提交表单的时候是并不需要做任何工作的10。用户可以通过控制器来接收请求,这也是控制器的主要作用。然后用户可以用控制器来调用模型组件的请求数据,最后处理模型得出想要的

12、数据信息。图2.1MVC构架概念图这里使用的控制器的作用主要是是将各个组件组合起来,将其设置可视的界面,这样就可以方便用户和满足用户的需要11。对MVC模式工作原理的描述:MVC模式主要用于表示一些实质上资料数据,并且可以去及时的访问它的业务逻辑。在数据发生变化的时候,相关的一些信息可以被及时通知到,该也叫着通知的更改,它主要功能就是基于这种方式来进行通信的,可以去查询相应的一些状态。在对状态进行修改的时候,可以对程序和数据进行相应的封装。当视图与控制器互相通信时,可以向用户发送相应的信息,这就可以是一个基本的时间通信,当用户去控制的时候,可以发生通信行为12。应用程序可以通过控制器来提供相应

13、行为。控制器的意义在于理解用户的执行操作,再通过正确分析后,可以选择不同的控制器和数据视图,在模型的执行过程中,再去更改数据。2.3 数据库选择随着网络和信息技术的快速发展,数据库系统也越来越多。我们就多了更多的选择,可以从众多的数据库 应用系统中选择最适合我们的。网络数据库可以处理大量复杂的信息,可以对大量的信息进行有效的管理,我们认识到了数据库的好处和重要性。因此,如何选择适合我们的数据库也是非常重要的,合适的网络数据库对我们开发系统有很大的帮助,大大的提高开发的效率。现如今,进一步优化数据库也成了人们的希望,很多人都在进一步的完善数据库应用系统。现在有很多数据库软件都很流行,比如有Acc

14、ess、MsSQL、SQL server2000等等,我们也拥有很多的选择。因为MySQL可以存储大量的数据,并且支持索引和角色。现在有很多小型企业都使用MySQL来管理数据,因为它的功能也十分强大。所以我们选用MySQL5.5为数据库服务器2.4 JavaEE技术2.4.1 JavaEE基本信息介绍JavaEE是当今十分热门的技术,用来开发和管理。JavaEE的核心处就是JAVA平台的标准版本。JavaEE加强了标准版中的很多特性,仿版了数据库的存取,使得JDBCAPI技术能够在互联网中间存在着一些安全的模式,同时提供了EJB和XML的全面技术支持。它的目的就是让JavaEE成为目前使用最为

15、广泛的一种体系13。JavaEE的体系结构可以提供一些中间层的集成框架以此来满足各种用户的应用需要,能够支持各种系统和平台,拥有很好的可用性和可维护性。JavaEE减少了用户开发和管理的难度,方便开发者开发系统,降低了开发的难度。拥有较好的部署能力和添加目录的支持力,能够提升程序的安全2。2.4.2 JavaEE基本架构JavaEE可以开发一些灵活的系统,为开发系统提供非常好用的模式,大大的方便开发者完成自己的系统,保留一些存在的资产信息,但是由于企业本身的问题,必须要开发出的程序能满足它的要求,针对企业存在的一些问题进行分析,这样就方便企业管理者管理投资方案。这样的话,以这样的一个渐进的方式

16、去建立一个已经存在的服务器的管理平台是非常重要的14。JavaEE的框架是能够去利用这些投资方案的。有一些供应商会针对这些废掉的投资,将其扩神到其他的领域中。在基于该平台上面设计的系统能够被保存下来,并且能够运用于任何的平台之上,当然一些硬件和系统也会被保存下来。高效的开发:JavaEE可以让公司把非常繁琐的一些工作都交给中间提供商,那么技术员可以完全的投入到商业逻辑的建立上面,并且能迅速的缩短它的开发周期情况。这样的话供应商也就不需要将注意力放在复杂的逻辑结构中。高效的服务管理能够使得开发人员写少量的代码,不需要把过多的精力放在中间件的原理上,进而可以既快又好的完成开发15。这种服务可以让程

17、序技术员们完全不需要管数据层的机构尽可以完成程序的编码,然后开发出程序,在使用上也非常的轻便,这样的应用模式是比较有利于后期的维护工作的。这些数据的共享能够提高开发人员的高性能编制模式,提升了系统的整体部署和环境16。能够对环境的多重性进行支持,JavaEE的开发和部署是支持一些可移植的程序的,在开发设计的过程中,将一部分程序可以部署到各种各样的系统和普通之中。在整个系统中这种类型的部署是很重要的。可以通过去订购一些现有的插件17,然后再对系统进行完善和加工并且将其部署到异构环境中,这样就大大的减少了工作量和事件,那么投资的费用也就变少了。2.4.3 My Eclipse开发平台MyEclip

18、se是用于Java代码程序的开发平台。能为编写的程序提供各种插件框架和服务。目前MyEclipse 拥有很多的功能,开发者可以更高效和方便的开发系统,大大提高开发的效率。因为JavaEE功能非常的丰富,它可以进行完整的编码、调试和测试。可以更好的支持Struts、HTML等18。MyEclipse 8.5给我们带来了新的控制台功能,特别是对于JSF的改善,可以说是MyEclipse的一个里程碑。新的控制台不仅提供多个选项卡,还给开发人员展现它的软件和工作区间,提高了开发效率。2.5网站开发工具JSP介绍JSP是通过运用JAVA程序来进行开发研究。以SunMicrosystems公司为主导跟其他

19、公司共同建立的一种动态网页技术。JSP跟ASP之间有许多共同点,同时综合了XML标记语言和Javascript脚本语言共同开发,从而解决网页中各种了逻辑关系,在JSP技术下研发的Web应用可以在不同平台运行,可以在Linux下运行,同时在其他操作系统下也可以运转。 JSP也可以从tags标语中找寻隐藏在服务器端的各种逻辑关系,用这种方法来解决其生成动态网页的处理逻辑。网页还可以访问产生于服务端的资源的应用逻辑,但要通过tags和scriptlets。JSP也可让网页的逻辑关系和系统设计分割开来,也可着重对多种组件的运用,可以简单便捷开发一个Web应用程序。当JSP访问请求发送到Web服务器时,

20、开始先运行中间的程序段,然后把产生的结果连同JSP文件中的HTML代码都返还给用户。通过Java代码能定位网页以及对数据库进行有效的控制,最后就会以动态网站的方式实现。JSP的运用跟JAVA客户端代码其实十分相似,首先都是运行代码在服务器端,但是JSP应用程序展现给客户的只是网页,而平常的程序返还的是单独的界面。HTML代码和Java代码所组成JSP页面。客户端发送请求到服务器以后处理这些Java代码,最后页面在客户端即客户的浏览器中呈现。JSP技术开发过程中经常会用到Servlet技术,JSP和Servlet经常被用于网站的开发研究。JAVA开发是面向对象的程序设计语言,许多的平台中都可以用

21、,在互联网上运用。自从JSP技术被开发出来并试用研究之后,许多的用户用这种技术对自己的网站进行开发,就因为这样JSP成为普遍使用的网站开发技术。 2.6 TomcatTomcat 服务器是一个供用户免费使用的Web服务器,受到广大使用者的青睐。 Tomcat是Apache 软件基金会(Apache Software Foundation)项目中起到至关重要的作用,是以Apache公司为主导 和其他一些公司共同参与研发而成。因为得到Sun 公司大力支持,在Tomcat 中,最新的Servlet 和JSP 的标准总是能得到表现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0,

22、所以受到广大用户的欢迎 。由于Tomcat 功能齐全、性能优越,不收费,所以放大开发者和大小型企业都会选择Tomcat来进行开发,致使Tomcat成为了非常热门受欢迎的Web 服务器。绝大多数用户都喜欢使用Tomcat ,因为它不占计算机的系统资源,有良好的拓展性,拥有开发应用系统常用的功能;而且Apache公司依然在不断的改善它的功能,所有喜欢使用它的开发人员都可以添加自己想要的功能。Tomcat 是一个小型的应用服务器,虽然它适用广泛,但同时也存在一些缺陷,它并不适合中小型系统和某些用户。很多开发者还是喜欢使用它来开发和调试系统。对于一个刚刚上手的人来说,可以这样认为,我们可以利用他来响应

23、页面的访问。事实上Apache 服务器包含Tomcat,但Tomcat服务器还是可以单独运行的,当我们使用tomcat 服务器时,它可以作为一个与Apache 独立的运行的程序。 秘诀在于,当我们配置完成Tomcat服务器时,HTML页面服务于Apache ,这样我们就可以方便的对它进行操作。3 总体设计3.1性能需求分析(1)系统易操作性所开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。(2)系统具有可维护性由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,学院可以对系统数据及一些简单的功能进行独立的维护及调整。

24、(3)系统具有开放性该系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接,不会因外部系统的不同面要做在量的修改工作。3.2可行性分析本系统主要是针对各个学校的学生信息进行管理,本系统满足以下几点要求: 系统安全性。由于该系统的使用对象多,要求有较好的权限管理。不同权限进入不同的界面,为了防止数据的并发现象的出现,数据的编辑必须由合法用户来操作,并对每个学生的信息进行良好的保密。系统内容的全面性。学生选课系统不仅是对学生的基本信息进行管理,还包过学生选课管理,成绩管理等,因此,本系统能够很好的满足学校对学生的信息进行完善、统一的管理。系统灵活性。要求有良好的人机界面,操作简单(数据的添

25、加、删除、修改、查询等方 便快捷)。可扩展性。站点的数据承载量、功能模块的单个或整体调整都可以满足变化的需要,这种适应性称为可扩展性。固定资产管理系统的可扩展性,体现在不同用户群需要处理不同类型的数据、数据与用户之间进行交互、数据要符合个用户的使用需求、多表查询系统化、避免性能下降等方面。易维护性。本系统采用B/S结构,系统的升级只需要在服务器端完成,更新软件系统的数据库、文件也只需要更新服务器端即可。在进行系统的维护时,只需要远程登录服务器系统,减少了维护系统的成本和周期。3.3 学生选课系统功能描述在学生选课系统中,主要有用户登陆、学生信息管理、课程信息管理、用户管理等功能,功能分析如下:

26、(1)管理员信息管理系统由管理员设置教师,学生及课程信息并对信息进行优化处理。(2)教师信息管理登录系统功能和查询并修改或添加课程信息(3)学生信息管理登录系统并查询和选课等主要功能。3.4 学生选课系统性能描述 (1)系统易操作性所开发的系统应做到操作简单,尽量使系统操作不受用户对电脑知识水平的限制。(2)系统具有可维护性由于系统涉及的信息比较广,数据库中的数据需定期修改,系统可利用的空间及性能也随之下降,为了使系统更好地运转,学院可以对系统数据及一些简单的功能进行独立的维护及调整。(3)系统具有开放性该系统能够在开放的硬件体系结构中运行,并且能与其他系统顺利连接,不会因外部系统的不同面要做

27、在量的修改工作。3.5 运行环境规定数据库:MySQL。开发工具:MyEclipse8.5开发工具包:JDK Version1.7.0。JSP服务器:Tomcat。浏览器:IE8.03.6可靠性需求系统的可靠性需求,是整个系统的衡量,直接反应的系统是否可靠安全和稳定性,用户可以从可靠性看出系统的好坏。系统的可用性是指系统是否能满足用户的各种需求,如果可以满足用户的需求,那就说明系统是可用的。对于第一次使用系统或者不具有专业背景的用户,能够在不经过特殊培训、指导的情况下正确操作系统,这就表明系统的可用性很高,包括有明确的操作界面,执行流程易于用户接受,各项功能完备,易于用户操作。界面要求简洁明了

28、,方便用户操作,同时界面的字体和图片风格也一定要规范,这样可以提高网站的可用性。系统的稳定性,是用来衡量系统长时间运行或者多人操作后系统性能下降的程度。稳定性差则预示着系统在用户使用时,可能会出现数据操作错误,页面响应时间过长或者干脆无法响应等,因此系统的稳定性是说明一个网站的重要指标。系统的安全性,是可靠性需求中非常重要的一项,如果系统的安全性不能得到保障,那么将带来非常大的风险,对于系统和用户来说,更是没有可靠性而言。对于人力资源管理系统,安全性主要体现在用户权限的管理上,由于操作角色的多样化,而且拟定的用户需求的不重叠性,故必须保证多用户角色操作时,用户权限不可篡改,不可越权。3.7软件

29、非功能性需求分析1)统一的管理。在进行系统的开发时,将系统管理的主要界面使用统一一站式管理方式,并且在管理员或者员工登录到系统之后,所有的功能操作都会集合在一个页面之中;这样设计方式的优势在于:在使用本软件的时候操作比较方便,一些功能点全部都集中在一个页面上,不需要来回跳转,这就获得了最高的使用效率;另一种考虑是一站式的设计方案也是最佳的考虑,这是因为本身的系统属于管理类系统。2)在数据存储方面进行优化。系统在运行工作的时候,针对系统的业务功能来实现考虑,其所有的使用量并不会很大,但是其使用的稳定性还是比较良好的,因此在数据存储方面都会采用优化的设计方案来操作,这样就能够达到预期的目标。4 系

30、统设计4.1系统设计原则在设计的时候下面的这些原则需要遵循的: 1) 适合模块大小的原则尽量控制每个模块功能程序代码,尽量控制在100行之内。2) 系统独立性的原则这样是内聚性最强但是耦合性最差。3) 集中硬件功能的原则尽可能的和硬件有关的一些功能都放在一个模块之中,并且也把可能会有变化的集中在一个模块中,这样可以方便一些处理上的变动,减少其中的影响。4) 能够使得扇入和扇出数的合理化原则一些模块拥有比较高的扇出,可以保持在7左右,但是一般在4左右是比较合理,另外一些模块也拥有比较高的扇入,扇入数一旦变大,也就预示着有更多的模块可以共享,以此降低模块的内聚程度。4.2 系统概述系统设计是我们在

31、开发项目的时候先要做的一件事,首先我们要对系统进行分析,然后对系统进行总体设计,合理的将用户的需求考虑进去。只有将系统总体设计好了,我们才能开始开发项目,这也大大的提高了我们开发的效率。选择合适的开发技术也是相当重要的,可以减少开发者的时间和成本。系统设计的根据如下:1) 系统分析之后所以的成果。2) 选择合适的开发技术、计算机硬件软件是否合适、网络数据库。3) 考虑到信息管理的规范和安全。4) 用户的需求。5) 系统运行的环境。 我们将使用结构化设计来设计学生选课系统,将其划分成多个功能模块。首先系统由管理员,教师和学生模块组成。将学生选课系统划分各个合理的模块,正确的处理每个模块之间的关系

32、,将每个功能模块联系起来就实现了我们的学生选课系统。4.3 系统总体功能图4.3.1 系统结构设计本系统功能主要包过三大块:学籍维护(管理员添加、删除学生基本信息;学生查看、修改个人附加信息);选课管理(添加、删除选修课表,查看单个学生选课情况以及单门课程被学生选修情况;学生查看、选修课程并可对所选课程进行修改);成绩查询(管理员添加、删除成绩课表,添加学生分数以及查询单人或单课分数情况;学生查看自己所学基础课成绩)。由于该系统权限有3个,学生、教师和管理员,故这三个权限范围内的都应该具有上述功能,即将上述三大功能模块划分给这3个权限去具体实现。如下图所示:4.3.2 登录模块设计登录的时候会

33、根据用户的用户名进行判断是哪种身份的登录,并以不同的身份登录后执行不同的功能,具有不同的权限。如下图4-2所示:4.4 数据库设计数据库需要处理大量复杂的信息,网络数据库软件的选择一定要适合家用电器购物网站。然后在进行数据库的设计,数据库的设计主要包括程序逻辑设计和物理设计两个方面。数据库的设计直接关系到网站的好坏,所以在开发数据库之前我们一定要对数据库进行合理的分析。对数据库进行概念设计就是以数据的基础分析为基本点,并且建立一个整体的概念结构,也就是说在设计时候首先从用户的角度出发,然后将所有集成的模型组成相应的视图,最后的结果进行分析。数据库的设计主要是根据用户的需求,从用户的角度出发,只

34、有满足了用户的需要,设计才有了意义。它可以用E-R模型来表示也可以用3NF关系群来表示20。在模型里面的实体相对一个实体集和一个表,并不需要其中的实体单个或者其中的一行。实体需要用矩形框来表示,我们将名称写在矩形框内。实体间的联系需要使用菱形框来连接,我们需要在其中协商联系的名称,然后用连接线将菱形和矩形连接起来。属性是指实体的性质。我们可以用椭圆框来展现他,使用连接线将实体联系在一起。主键是表中的最重要的属性,我们用下划线来标识出关键属性。我们将各个模块的字段联系在一起。完整性和一致性在程序中得以实现。实体之间的关系一般是通过E-R图来表现的,将两个实体通过连接线联系在一起,这就是一种描述方

35、式。根据开始对系统的分析和设计,分析各个实体之间的联系来完成E-R图。如果各个实体之间存在着联系,那么我们就要找到他们之间的关系。从而将他们紧密的联系起来,这样就方便我们理解网站的运行。4.5 概念结构设计4.5.1 登录模块 为了系统的安全,在进入系统之前首先会出现一个登录模块,用户只有在输入正确的用户名和正确的密码之后,才能进入系统。用户登录窗体中放置了两个文本框,用来输入用户名和密码;两个按钮用来确定或者重写登录。设置三个单选控件,供不同用户登录时选择用户权限,管理员拥有一切权限(包括添加删除和修改以及对用户的管理),教师和学生拥有受限制的权限(如查询及修改密码),提高了数据库的安全性。

36、4.5.2 系统管理模块 4.5.2.1 添加用户窗体的创建 进入系统后,将会出现一个主窗体,选择系统管理模块下的添加用户,就可以进入添加用户窗体,可以通过该窗体增加新的用户。在这个窗体中放置了五个文本框,用来输入用户名、密码出生时间、总学分和备注;一个下拉列表框和两个单选框用来确定专业和性别;两个按钮用来确定是否添加用户;4.5.2.2修改密码窗体的创建在系统管理模块下,进入修改密码窗体,用户可根据需要修改自己的密码。在这个窗体中放置了三个文本框,用来输入原始密码、新密码和确认新密码;两个按钮用来确定是否修改密码。4.5.3 学籍管理模块4.5.3.1 添加学籍信息功能选择主窗体中学籍管理模

37、块下的添加学籍信息,就可进入添加学籍信息的窗体,在该窗体中我们可以对学生的学号、姓名、性别、出生日期、班号等学生的信息进行添加。添加的信息将全部存储到数据库中。 在窗体上放置多个文本框和下拉式文本框,用来输入学籍信息;两个按钮用来确定是否输入学籍信息;一个按钮用来退出窗体;多个标签用来提示文本框中需要输入的内容。4.5.3.2 修改学籍信息功能点击学籍管理模块下的修改学籍信息,就进入修改学籍信息的窗体,在该窗体中我们可以对前面添加的学籍信息进行修改。由于用户的需求不同,有的是要对学生的信息做个别的改动,有的是需要删除该条记录,所以该窗体同时包括了修改记录的功能和删除记录的功能。4.5.3.3

38、查询学籍信息功能进入学籍管理模块下的查询学籍信息窗体,在该窗体中可以对学生的信息进行查询,有三种查询方式。一方面考虑到简洁的因素,用户可以只设置一种查询方式进行查询;另一方面又为了避免数据的重复,用户可以输入详细的信息,也就是同时设置多种查询方式进行查询。进入查询窗体时,会显示出所有学生的学籍信息,如果不设置查询方式就进行查询,是无效查询,系统会给出提示。在设置好查询方式后,便开始查询,将显示出用户所需的学生的学籍信息。4.5.4 成绩管理模块 4.5.4.1 成绩信息管理功能点击成绩管理模块下的成绩信息浏览,进入成绩信息浏览窗体。点击工具条中的修改、添加和查询按钮就可分别进入修改成绩信息窗体

39、、添加成绩信息窗体和查询成绩信息窗体。这三个窗体的界面设置分别类似于学籍管理下修改学籍信息窗体、添加学籍信息窗体和查询学籍信息窗体。4.6 物理结构设计本系统数据库的功能主要是存储网站中所有数据,那样管理员操作和管理起来就相对方面。本系统数据库采用MYSQL 5.0数据库,系统数据库名称为SANWEI,共包含7张表。关于数据库中的数据表如下:本系统中共用到了7个数据表,如下:teacher表:记录教师信息;student表:记录学生学籍信息;course表:记录老师发布课程信息choose表:记录学生选课信息teacher_log表:记录老师登录安全信息student_log表:记录学生登录安

40、全信息 数据库表的结构字段名 字段描述是否主键数据类型长度约束student_no学号是char8Not nullstudent_name姓名否varchar20Not nullstudent_contact联系方式否varchar15sex性别否char2Not null student表字段名 字段描述是否主键数据类型长度约束teacher_no老师编号是char8Not nullteacher_name老师姓名否varchar20Not nullteacher_contact联系方式否varchar15sex性别否char2Not null teacher表字段名 字段描述是否主键数据类

41、型长度约束classes_no班级编号否char2Not nullstudent_no学生学号否(外键)char8Not nullchoose表字段名 字段描述是否主键数据类型长度约束course_no课程编号是char8Not nullteacher_no老师编号否(外键)char8Not nullcourse_name课程名称否varchar20Not nullup_limit人数上限否intNot nullrest剩余人数否intNot nullcourse表字段名 字段描述是否主键数据类型长度约束teacher_no教师编号否(外键)char8Not nullpassword密码否va

42、rchar8Not nullteacher_log表字段名 字段描述是否主键数据类型长度约束student_no学生学号否(外键)char8Not nullpassword密码否varchar8Not nullstudent_log表触发器:choose表插入后:CREATE DEFINER=rootlocalhost TRIGGER school.choose_AFTER_INSERT AFTER INSERT ON choose FOR EACH ROWBEGINupdate course set rest=rest-1 where course_no=new.classes_no;END

43、choose表删除后:CREATE DEFINER=rootlocalhost TRIGGER school.choose_AFTER_DELETE AFTER DELETE ON choose FOR EACH ROWBEGINupdate course set rest=rest+1 where course_no=old.classes_no;END5 详细设计与实现5.1管理员功能管理员是数据库管理员,老师的添加以及学生的添加需要管理员后台实现,对于人数太少的课程有权限直接删除,对数据安全以及维护负责。5.2教师功能每个教师有自己的账号和密码,登录后有查询自己选课信息和添加课程功能 部

44、分主要代码:TeacherDao主要代码::(该模块是对数据库操作所以重要)public Teacher getTeacherByNo(String No)String sql =SELECT * from Teacher where teacher_no=? ;Object params=No;Teacher tec = null;rs=super.excutequery(sql, params);try if(rs.next()tec =new Teacher();tec.setTeacher_no(rs.getString(teacher_no);tec.setTeacher_name(

45、rs.getString(teacher_name);tec.setTeacher_contact(rs.getString(teacher_contact);tec.setSex(rs.getString(sex); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return tec;public List getTeacher()String sql =SELECT * from teacher;Teacher tec = null;List stuList = new ArrayLi

46、st();rs=super.excutequery(sql,null);try while(rs.next()tec =new Teacher();tec.setSex(rs.getString(sex);tec.setTeacher_contact(rs.getString(teacher_contact);tec.setTeacher_name(rs.getString(teacher_name);tec.setTeacher_no(rs.getString(teacher_no);stuList.add(tec); catch (SQLException e) / TODO Auto-g

47、enerated catch blocke.printStackTrace();return stuList;AddcourseServlet主要代码:(控制层的实现jsp页面和数据交互的逻辑操作)public class AddcourseServlet extends HttpServlet /private static final long serialVersionUID = 1L;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, I

48、OException response.setContentType(text/html;charset=UTF-8);request.setCharacterEncoding(UTF-8);String subject=request.getParameter(subject);/*得到addcourse.jsp提交的值*/String course_no=request.getParameter(course_no);String teacher_no=request.getParameter(teacher_no);String limit=request.getParameter(li

49、mit);Course cou = new Course();cou.setCourse_no(course_no);cou.setCourse_name(subject);cou.setTeacher_no(teacher_no);cou.setRest(Integer.parseInt(limit);cou.setUp_limit(Integer.parseInt(limit);ICourseDao ISD = new CourseDao();ISD.addCourse(cou);PrintWriter out=response.getWriter();/定义out/out.print(添

50、加成功);request.getRequestDispatcher(showcourse.jsp).forward(request, response);5.3.学生功能每个学生有自己的账号和密码,登录后可以查询课程并且选课和退课功能。部分主要代码:(同教师一样)StudentDao主要代码:public Student getStudentByNo(String No)String sql =SELECT * from student where stuId=? ;Object params=No;Student stu = null;rs=super.excutequery(sql, pa

51、rams);try if(rs.next()stu =new Student();stu.setStudent_no(rs.getString(student_no);stu.setStudent_name(rs.getString(student_name);stu.setStudent_contact(rs.getString(student_contact);stu.setSex(rs.getString(sex); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return stu

52、;ChooseServlet主要代码:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException HttpSession session = request.getSession();response.setContentType(text/html;charset=UTF-8);request.setCharacterEncoding(UTF-8);PrintWriter out = response.getWriter();S

53、tring no=session.getAttribute(no).toString();/20130211;/*Student stu = new Student();IStudentDao ISD= new StudentDao();stu = ISD.getStudentByNo(no);*/Course cou = new Course();Choose cho = new Choose();IChooseDao ICD = new ChooseDao();/ICourseDao ICED = new CourseDao();String chosen=request.getParam

54、eterValues(chosen);if(chosen=null)out.print(没有选择课程!);elsefor(int i=0;ichosen.length;i+)cho.setClasses_no(choseni);cho.setStudent_no(no);/IChooseDao ICD = new ChooseDao(); ICD.addChoose(cho); /cou = ICED.getCourse(); /ICED.updateCourse(cou);out.print(choseni+no);/out.print(已经到达);/request.getRequestDi

55、spatcher(login.jsp).forward(NuLl, response);response.sendRedirect(/school_chose/login.jsp);/sendRedirect(/choose.jsp);out.flush();out.close();5.4其他功能登录控制层:loginServlet主要代码:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setCon

56、tentType(text/html;charset=UTF-8);request.setCharacterEncoding(UTF-8);PrintWriter out = response.getWriter();String username=request.getParameter(username);String password=request.getParameter(password);Student_log stu_l = new Student_log();IStudent_logDao ISD_L = new Student_logDao();stu_l = ISD_L.

57、getStudent_log(username);Teacher_log tea_l = new Teacher_log();ITeacher_logDao ITD_L = new Teacher_logDao();tea_l = ITD_L.getTeacher_log(username);/out.print(username+password+DB:+ stu_l.getPassword()+stu_l.getStudent_no();if(stu_l != null & stu_l.getPassword().equals(password) )request.setAttribute

58、(stuID,username);request.getRequestDispatcher(choose.jsp).forward(request, response);else if(tea_l != null & tea_l.getPassword().equals(password)request.setAttribute(stuID,username);String choice=request.getAttribute(stuID).toString();/request.getSession().setAttribute(No, choice);request.getRequest

59、Dispatcher(addcourse.jsp).forward(request, response);elseout.print(404 notfound);/*数据库读取*/*while()/学生集合循环if( =username & =password)/判断是否有该用户request.setAttribute(stuID,username);request.getRequestDispatcher(choose.jsp).forward(request, response);while()/老师集合循环if( =username & =password)/判断用户request.se

60、tAttribute(teaID,username);request.getRequestDispatcher(addcourse.jsp).forward(request, response);*/out.flush();out.close();连接数据库主要代码:BaseDao:public class BaseDao private static final String DRIVER=com.mysql.jdbc.Driver;/MysqlDriver.class路径private static final String URL=jdbc:mysql:/127.0.0.1:3306/s

61、chool;/jdbc:连接装置:IP地址:端口号:datebasesename=数据库名private static final String UNAME=root;private static final String UPWD=123456;/在静态块中进行驱动的管理statictry Class.forName(DRIVER); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();/* * Connection:数据库连接对象 * DriverManage:数据库驱动

62、管理类 * ResultSet:结果集对象 * PreparedStatement:数据库预处理对象 */protected Connection conn=null;protected PreparedStatement pstmt=null;protected ResultSet rs=null;/* * 创建数据库的连接对象 */private void getConn()try conn=DriverManager.getConnection(URL,UNAME,UPWD);/System.out.println(数据库连接OK); catch (SQLException e) / T

63、ODO Auto-generated catch blocke.printStackTrace();/* * 关闭数据库连接以及释放资源 */public void closeAll()if(null!=rs)try rs.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();if(null!=pstmt)try pstmt.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackT

64、race();if(null!=conn)try conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();/* * * param sql * param params * return */public ResultSet excutequery(String sql,Objectparams)/调用数据库连接对象的方法this.getConn();try /创建数据库预处理对象pstmt=conn.prepareStatement(sql);/判断是否有参数,如果有参

65、数通过预处理对象进行处理SQL命令if(params!=null)for(int i=0;iparams.length;i+)/将传递来的参数通过预处理对象放入SQL语句中pstmt.setObject(i+1, paramsi);rs=pstmt.executeQuery(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return rs;/* * */public int excuteUpdate(String sql,Objectparams)int count =0;/接受受影

66、响行数/创建数据库预处理对象this.getConn();/try pstmt=conn.prepareStatement(sql);for(int i=0;iparams.length;i+)pstmt.setObject(i+1, paramsi);count=pstmt.executeUpdate(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallythis.closeAll();return count; 5.4运行截图6 系统测试6.1 测试目的与目标在这个系统刚刚

67、完成的时候,首先我们要对系统进行检测,需要找到系统存在的问题和缺陷,经过检测,可以通过检测得出的结果作为以后改善系统时的依据。我们要确保系统各个功能和模块的正确性,可以让用户正常使用。6.2 测试方法测试任何软件产品都有两种方法,即:黑盒测试法和白盒测试法。其中,黑盒测试其实是指:已经知道用户需要拥有哪些功能,然后通过测试来检查每个模块是否可以顺利运行,一般黑盒测试的方法分为:边界值测试法、等价类划分法以及错误推算法。白盒测试的意思是必须要要清楚系统的内部基本结构,检查所测试的软件内部功能和路径是否正确。常用的一般为逻辑覆盖法。此外,与软件开发过程类似,测试过程也可按阶段分步骤进行,一般分为:

68、单元测试,集成测试,系统测试。1) 静态分析静态分析不需要执行需要测试的软件,通过对需求说明和软件说明进行分析,以及对设计流程图进行分析,然后分析程序代码的写作流程来找出程序中的错误,该是在开发过程中非常有效地控制方法。2) 动态测试动态测试是指在运行程序的时候来发现程序中的错误,为了进行测试,需要提前准备测试数据,分别是实际输入的数据库和程序期望的输出结果。按照程序测试的过程中的不同可以分为黑盒测试盒和白盒测试1) 黑盒测试黑盒测试也叫做功能测试,测试人员可以不管程序的内部组织和结构,可以将程序看着是一个黑色的盒子,测试时仅仅关心的是输入的数据所得到的结果,并不需要查看内部的代码。但这就导致

69、黑盒测试法只能去验证软件功能是否达到了客户需求,即测试软件可以正常地接收并处理用户输入的数据,系统能够通过预定的功能流程成功地对该数据进行操作并输出正确的结果而且外部的信息具有完整性。黑盒测试最容易的测试方法就是,我们自己输入一定的数据进入系统,看系统能否按照我们的要求运行。2) 白盒测试白盒测试也叫单元测试或者是结构测试,在使用白盒测试的时候,可以按照程序的内部结构来测试程序里面的每一条路径是否能够按照预定的要求工作。与黑盒测试正好相反,测试的时候将程序看做是一个透明的盒子,测试员必须要了解程序的基本结构。测试人员通过对测试程序的全面检查以及通过对测试条件的设定和对测试用例的严格执行,去测试

70、软件的代码逻辑性。通过此种方式进行软件测试,可以较为系统的去证明软件的内部结构和编码逻辑是否符合了设计规格。通过白盒测试,软件所有内部成分都会被系统地检查。根据上述测试方法,在对所开发的系统进行实际测试时,为全面检测系统的各项功能,就必须进行相关的测试用例设计。对此,主要采用了单元测试。6.3 测试用例在本论文中只介绍登入系统的测试用例6.4 测试分析6.4.1测试用例 用户名实例用例ID输入用户名预期输出实际输出是否通过测试问题解决001张三通过通过是002admin通过通过是0031232通过不通过否用户姓名不能为数字004SA123通过不通过否005sa123通过不通过否006&12通过

71、不通过否用户姓名无特殊符号007&sa通过不通过否 用户名实例学号实例用例ID学号预期结果实际结果是否通过测试问题解决0011605100141通过通过是002134564通过不通过否学号格式为10位数字字符003a01315646通过不通过否学号不能为英文字符004一023155通过不通过否学号不能为中文字符005!5465464通过不通过否学号不能带标点 学号实例密码实例用例ID密码预期结果实际结果是否通过测试问题解决0011655ad通过通过是002&*123通过不通过否密码格式为英文加数字003!#abc通过不通过否不能带标点及特殊符号0041234acd通过通过是005&*sdg12

72、3通过不通过否006?Asd123通过不通过否密码实例6.4.2测试结果该程序基本上够满足学生进入学生信息管理系统及查询成绩和个人信息情况查询和修改信息以及添加信息。由于本程序存在许多不足之处,希望今后再接再厉继续学好Java与Tomcat相关技术开发和MySQL数据库的链接。结合程序的实用性希望在今后的学习与开发中继续补充功能与优化功能和美化界面。6.4.3 系统维护软件维护是软件开发周期中的最后一个阶段,一般是用于系统投入使用期间的维护。其实也就是在交付使用之后,为了能够修改错误和更改需求而进行软件修改的过程。系统为了应对软件维护需要,有以下要求:1)需要拥有软件配置程序的代码;2)需要开

73、发过程中各种文档齐全;3)在设计过程中预留的可维护接口完整。4)软件的模块化、详细设计文档以及源代码中需要拥有必要的注释。5)尽量松散:低偶合,高内聚。6.4.4 系统评价1)性能评价:系统能稳定、可靠地运行。2)功能评价:系统功能基本能实现和满足系统的要求,且操作简便易行。6.4.5 系统的不足在进行传输的时候,其保密性和安全性等方面还存在一定的不足。并且有可能因为数据的丢失造成软件的运行错误。因为技术原因,有些功能不够完善,没要达到预计的设计要求。6.4.5 测试结论在对系统进行相应的测试的时候,一般来说也是分为多个步骤的,从开始的单元测试、再到集成测试,最后才是系统测试。在系统刚开发完成

74、后就需要对系统进行单元测试,对系统的每个单元分开进行测试,这部分吗也可以说是一种白盒测试。在完成单元测试之后,将每个模块集成起来进行集成测试,需要测试接口之间的功能是否准确。最后完成集成测试之后对整个系统进行系统测试,需要将系统部署在服务器中,在实际的环境中进行系统测试。在经过所有的测试之后,如果各个阶段测试都能过通过,并且功能都符合预期的要求,那么程序就可以上线使用了。但是本系统在数据传输方面的保密性和安全性不够,还需要进一步的加强。总 结这次试验后感觉之前的学习只是停留在理论基础上,现在自己动手操作试验后,才是真正的理解及体会。有很多知识都是似懂非懂,通过平时上机操作,自己也了解了一些,但

75、让我有了更深的理解和更好的认识,则是在这次的实践上,之前的困惑也通过这次的课设解决了一些,虽然还是不能够全面的理解,但是有进步就很高兴。在项目设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输进去之后,并编译让其运行,发现通过不了,再来检查出问题,是很费费力的事情,因此分析和规划代码是很重要的,最重要的是要把逻辑结构写好,这样就不会出现大问题,写代码就要先找出核心的内容,用多种方法来实现核心部分,这样可以尽可能的避免发现逻辑或编译不支持的错误。通过本次论文设计,我初步学会了论文设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道了如何整合资料和处理这些资

76、料的能力,这为以后做毕设的论文打下了基础,使我感觉比较好的是有一种成功的喜悦,虽然在编译的时候会经常因为一些小的错误而心烦意乱,但是也不失为一件好事,失败的越多积累的经验越丰富,对人的考验也比较多,那么在最后编译成功时的喜悦就越浓烈,也是自己的能力有了进一步的提高。由于知识和经验的不足,这个程序编写的不是很尽如人意,但是融合了自己的心血,就觉得是最好的,所以在以后还是需要较多的努力的,还是会在以后的学习过程中不断地提高和改进的。参 考 文 献1 唐振明.JavaEE架构与程序设计M.北京:电子工业出版社,2011.92 张磊.Java Web程序设计M.北京:电子工业出版社,2011.23百度文库资料第 40 页 共 44 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号