基于ssh的选课系统实验报告含源文件.docx

上传人:b****7 文档编号:9059378 上传时间:2023-02-03 格式:DOCX 页数:29 大小:990.27KB
下载 相关 举报
基于ssh的选课系统实验报告含源文件.docx_第1页
第1页 / 共29页
基于ssh的选课系统实验报告含源文件.docx_第2页
第2页 / 共29页
基于ssh的选课系统实验报告含源文件.docx_第3页
第3页 / 共29页
基于ssh的选课系统实验报告含源文件.docx_第4页
第4页 / 共29页
基于ssh的选课系统实验报告含源文件.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

基于ssh的选课系统实验报告含源文件.docx

《基于ssh的选课系统实验报告含源文件.docx》由会员分享,可在线阅读,更多相关《基于ssh的选课系统实验报告含源文件.docx(29页珍藏版)》请在冰豆网上搜索。

基于ssh的选课系统实验报告含源文件.docx

基于ssh的选课系统实验报告含源文件

分工表

姓名

工作

贡献度

xx

业务逻辑30%,前端设计,完善界面,用户手册撰写

30%

xx

业务逻辑70%,基本界面,报告撰写

30%

xx

UML建模,DAO层接口设计

20%

xx

数据库设计,DAO层接口设计

20%

1引言

随着计算机网络的发展,各大高校相继组建我自己的局域网络。

为了告别传统的手工式课程信息管理方式,一个选课系统是十分重要的。

一个好的管理软件能提高课程的管理效率,减轻管理人员的工作量。

同时随着近年来企业Java的发展,使得开发一个针对学校需求的选课系统变得简单。

因此使用企业Java来开发一个选课系统,是行之有效的。

 

2核心技术简介

Struts2,Spring,Hibernate是三个相互独立的框架。

但三个框架一起整合起来使用,能使软件系统开发更轻松、更灵活、更容易扩展。

三者都是“半成品”框架,使得我们在开发时不需要从头做起。

三者之间的关系如图2-1:

图2-1Struts2,Spring,Hibernate关系图

1

2

2.1MVC模式简介

MVC全称ModelViewController,它使得应用程序的输入、处理和输出分开,使程序的耦合度降低。

其每个层次说明如下:

ØModel(模型):

模型表示业务相关的数据与业务的处理方法。

能直接访问数据。

ØView(视图):

视图用于对数据的显示。

在这一层上,通常没有逻辑。

为了更新视图,视图需要访问它监视的模型,因此视图通常事先在被监视的数据那进行注册。

ØController(控制器):

顾名思义,控制器起到控制作用,用于控制应用程序的流程。

它处理事件并作出响应,调用相关的模型去处理事件请求,确定哪个视图返回请求。

图2-2MVC各层关系图

图2-2显示的MVC各层之间的关系。

由于它具有这些结构使得多个视图可以共有一个模型,同时对一层上的修改不会影响到其他层。

2.2Struts2框架简介

Struts2是一个在WebWork的基础上转化而来的基于MVC的框架。

采用拦截器的机制来处理用户请求,使得业务逻辑控制器与ServletAPI实现分离。

2.2.1Struts2架构

图2-3Struts2架构

图2-3展示了Struts2的整体架构,其各模块说明如下:

ØFilterDispatcher:

它是Strut2的核心控制器。

它根据ActionMapper的结果来决定对请求的处理和响应。

ØActionMapper:

它是一个接口,并提供了HTTP请求与Action之间的映射关系。

如果用户的请求与ActionMapper中提供的方法相匹配,就继续调用ActionProxy。

ØActionProxy:

它会依据ActionMapper生成的URI以及配置管理器来找到响应用户请求的Action对象。

然后创建ActionInvocation对象来执行相应的Action方法。

ØActionInvocation:

它会在调用Action处理方法的前后,还要调用各种拦截器。

ØResult:

它会根据相关视图将用户请求的处理结果反馈给用户。

Østruts.xml:

是Struts2的配置文件,负责配置每个Action的返回结果所对应的跳转页面。

ØInterceptor:

拦截器是Struts2的重要组件,其设计思想来源于AOP(面向切面编程)。

通常用于处理某些通用的处理,它会在每个Action的外部执行。

ØAction:

用于处理用户请求并封装业务数据。

其执行后通常会返回一个String类型的量,struts.xml根据这个量来决定跳转页面。

ØTemplates:

页面模板。

ØTagSubsystem:

Struts2的标签库,用于页面的设置。

2.2.2Struts2基本处理流程

图2-4Struts2基本处理流程

图2-4展示了Struts2基本处理流程,用户请求在经过一系列拦截器(拦截器会对用户请求进行相应的处理,如增加某些功能)后,就会交由Action处理,然后Action返回响应的结果(默认为“input”),最后通过匹配结果来选择跳转视图页面。

2.2.3Struts2的优点

Ø“半成品”框架:

使得开发不需要从头做起,而且在框架中很多地方都有默认值设置,减少了冗余的设置,提高了开发效率。

Ø轻量级:

资源消耗少,运行速度快。

Ø搭建简单:

只需在Myeclipse中将需要的包拷贝入项目中,再进行配置。

Ø标签强大:

Struts2提供了一系列的自己编写的标签用于页面布置,减少了页面代码。

ØAction测试简单:

不需要模拟HTTP对象,就可以直接测试。

Ø错误报告明了:

便于迅速找出错误并修改。

2.3Hibernate框架简介

Hibernate是一个开放源码的对象关系映射框架,采用ORM机制,通常用于持久层的开发。

它对JDBC进行了轻量级的封装,使得我们在开发过程中可以使用面向对象的方式来操纵数据库。

2.3.1Hibernate架构

图2-5Hibernate架构

2.3.2Hibernate核心接口

Hibernate核心接口一共有6个:

ØSession接口:

该接口用于持久化对象的增、查、删、该,属于非线程安全。

ØSessionFactory接口:

该接口用于初始化Hibernate,充当数据存储源的代理,并创建Session对象。

ØConfiguration接口:

该接口在Hibernate的启动时,首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

ØTransaction接口:

用于事务操作。

ØQuery和Criteria接口:

使用HQL或SQL语句查询数据库。

其中Criteria接口更靠近面向对象;Query接口则提供了使用原生SQL语句的方法。

2.3.3Hibernate基本处理流程

1.创建Configuration实例,读取项目路径根目录下的配置文件信息。

2.创建SessionFactory实例,将Configuration中的配置信息复制到SessionFactory中。

3.调用SessionFactory来创建Session

4.打开Session,并创建事务Transaction

5.进行持久化操作

6.提交事务

7.关闭Session

8.关闭SessionFactory

2.3.4Hibernate的优点

Ø它使得数据库中的每一张表都映射为一个Java类,让我们在开发过程中可以使用面向对象的方式来操作数据库。

Ø自动配置,我们只需在数据库中建立表,然后通过Myeclipse自带的工具就能完成映射。

Ø它封装了对各种数据库的操作

Ø轻量级框架,映射灵活,数据库表、配置文件、映射类我们只需要完成其中任何一部分就能依靠工具完成三者的关系映射。

2.4Spring框架简介

Spring框架致力于J2EE应用各层的解决方案,贯穿表现层、业务层、持久层。

同时它是一个轻量级的框架,没有侵入性,不会改变原有框架的类容。

使用它的目的不是去修改原有框架,而是使用它来管理,使得原有的框架工作得更好。

2.4.1Spring架构

图2-6Spring架构

图2-6为Spring的架构,每个模块功能如下:

Ø核心容器:

提供Spring框架的基本功能。

其主要组件是BeanFactory,采用IOC(控制反转)将应用程序的配置与依赖性代码分开。

ØSpring上下文:

是一个配置文件,用于提供上下文信息。

ØSpringAOP:

该 模块直接将面向方面的编程功能集成到了Spring框架中。

支持声明式的事务管理。

ØSpringDAO:

该模块用于管理异常处理和不同数据库供应商抛出的错误消息。

ØSpringORM:

提供了如Hibernate这类ORM的对象关系工具。

ØSpringWeb:

为基于Web的应用程序提供了上下文,简化了处理多部分请求以及将请求参数绑定到域对象的工作。

ØSpringMVC框架:

该框架中融入了大量视图技术。

2.4.2Spring特点

Ø轻量级框架:

占用资源少,非侵入性。

Ø控制反转(IOC):

使得本来需要我们(应用程序)在执行前要进行的new操作,交由Spring的IOC容器来管理,在容器中进行配置,再由容器来将new好的对象注入应用程序,从而松散了耦合度。

Ø面向切面(AOP):

通常我们的编程思路是至上而下的,Spring的AOP使得我们能横向考虑问题,例如事务与日志记录。

 

3选课系统需求分析

3.1任务概述

选课系统用于管理学校的课程、学生、教授相关信息,除了基本的查询、添加功能外,还应有统计功能。

同时操作方面应尽量简单。

3.2用户特点

1)系统管理员:

该用户可以对课程信息、学生信息、教授信息进行维护,同时用户自己也能修改自己的密码与基本信息。

2)学生:

该用户可以自行选课、退课、查看可表、查看成绩、查看应缴费用,同时用户自己也能修改自己的密码与基本信息。

3)教授:

该用户可以选择要上的课程,取消课程,查看、等级学生成绩,同时用户自己也能修改自己的密码与基本信息。

3.3功能需求

功能需求图如下图3-1所示:

图3-1系统功能需求

用例图:

图3-2

各模块具体说明如下:

1)登陆页面:

用户输入合法的用户名和密码完成登陆,如果用户名或密码错误,应输出提示。

2)学生页面:

显示当前用户的名字,以及相关功能连接、按钮。

3)教授页面:

显示当前用户的名字,以及相关功能连接、按钮。

4)管理员页面:

显示当前用户的名字,以及相关功能连接、按钮。

3.4界面需求

界面简洁美观。

3.5操作需求

操作简洁,符合人们通常使用习惯。

3.6输入输出需求

要求输入数据合法,如果非法会跳出出错提示。

 

4选课系统概要设计

4.1设计思想

该选课系统用于对课程信息、教授信息、学生信息的维护与查看统计。

能够方便管理员对各种信息的维护,教授、学生对自己相关需求功能的使用,它将具有以下特点:

Ø运行速度快

Ø占用资源少

Ø界面简洁

Ø操作简单

4.2总体设计

1)以用户登陆后的界面为平台,将各模块功能放于该页面

2)采用SSH框架

3)灵活性要求:

视图与业务逻辑分开,低耦合。

采取接口方式编程便于系统的维护以及移植。

4)输入输出要求:

要求输入数据合法,如果非法会跳出出错提示。

4.3系统层次结构图

图4-1系统层次结构图

4.4接口设计

用户接口:

通过鼠标与键盘操作。

内部接口:

使用数据流提供的接口操作各个模块。

4.5数据库设计

概念结构设计是指将需求分析得到的用户需求抽象为信息结构。

描述概念模型的有力工具是E-R模型。

本系统E-R图如下图所示:

图4-2用户E-R图图4-3教授E-R图

图4-4学生E-R图图4-5课程E-R图

图4-6学生选课E-R图图4-7教授选课E-R图

图4-8管理员E-R图图4-9系统E-R图

4.6出错处理设计

以下列出了可能的错误情况及其对应的错误信息:

1)用户名或密码有误,提示:

您输入的用户名或密码有误,请重新输入。

2)管理员模块:

a)课程信息维护:

Ø如果增加一门已存在的课程,输出提示:

该课程已存在。

Ø如果删除一门不存在的课程,输出提示:

该课程不存在。

b)教授信息维护:

Ø如果增加一名已存在的教授,输出提示:

该教授已存在。

Ø如果删除一名不存在的教授,输出提示:

该教授不存在。

c)学生信息维护:

Ø如果增加一名已存在的学生,输出提示:

该学生已存在。

Ø如果删除一名不存在的学生,输出提示:

该学生不存在。

a)修改密码:

输入的原密码不正确,应提示错误

3)学生模块:

如果选择的课程冲突,输出提示:

课程已选择。

4)教授模块:

如果选择的课程冲突,输出提示:

课程已选择。

 

5选课系统详细设计

本报告将对选课系统的数据库与各模块进行详细设计。

5.1数据库详细设计

5.1.1数据库关系模型设计

E-R图向关系模型转换:

一个实体型转换为一个关系模式,实体的属性即为关系模式的属性,实体的标识符即为关系模式的键。

根据E-R图,本系统的关系模型为:

1)用户(用户ID,登陆ID,密码,权限);

2)教授(教授ID,姓名,性别,电话,传真,系别,地址,email)

3)学生(学生ID,姓名,性别,电话,系别,地址,email)

4)管理员(管理员ID,姓名,性别,电话,email)

5)课程(课程ID,课程名,课程性质,上课日期,节次,学分,系别)

6)教授选课(教授选课ID,教授ID,课程ID)

7)学生选课(学生选课ID,教授ID,课程ID,学生ID,成绩)

5.1.2数据库物理结构设计

数据库的物理设计是将一个给定逻辑结构实施到具体的环境中,逻辑数据模型要选取一个具体的工作环境,这个工作环境提供了数据存储结构与存取方法。

经过分析设计给出了各主要表的物理结构:

users表:

列名

类型

长度

是否允许空值

主键/外键

id

int

8

NO

主键

uid

int

8

NO

外键

password

varchar

20

NO

level

int

8

NO

表5-1

admins表:

列名

类型

长度

是否允许空值

主键/外键

id

int

8

NO

主键

name

varchar

20

NO

sex

varchar

8

NO

tel

varchar

20

YES

email

varchar

20

YES

表5-2

professors表:

列名

类型

长度

是否允许空值

主键/外键

id

int

8

NO

主键

name

varchar

20

NO

sex

varchar

8

NO

tel

varchar

20

NO

email

varchar

20

YES

dept

varchar

20

YES

fax

varchar

20

YES

address

varchar

20

YES

表5-3

students表:

列名

类型

长度

是否允许空值

主键/外键

id

int

8

NO

主键

name

varchar

20

NO

sex

varchar

8

NO

dept

varchar

20

YES

address

varchar

20

YES

tel

varchar

20

NO

email

varchar

20

YES

表5-4

courses表:

列名

类型

长度

是否允许空值

主键/外键

id

int

8

NO

主键

name

varchar

20

NO

type

int

20

NO

credit

varchar

20

NO

day_num

int

8

NO

lesson_num

int

8

NO

dept

varchar

20

NO

表5-5

pc表:

列名

类型

长度

是否允许空值

主键/外键

id

int

8

NO

主键

pid

int

8

NO

外键

cid

int

8

NO

外键

表5-6

sc表:

列名

类型

长度

是否允许空值

主键/外键

id

int

8

NO

主键

pid

int

8

NO

外键

cid

int

8

NO

外键

sid

int

8

NO

外键

score

int

8

YES

date

date

-

NO

表5-7

 

6选课系统具体实现

6.1开发与运行环境

Ø操作系统:

Win7

Ø内存:

2G

Ø硬盘空间:

500G

Ø开发软件:

Myeclipse10,MicrosoftSqlServer2008,Java6.0,Tomcat6.0

Ø框架版本:

Struts2.1,Hibernate3.0,Spring3.0

6.2开发环境的搭建

1)新建一个Web项目名为sc,选择使用Java6.0,

2)添加Struts2相关支持包,除了默认的包以外,还应选上Spring的支持包

3)在Meclipse的数据库视图中增加scdb配置,

4)添加Spring相关包,除了默认的包以外,还应选上SpringWebLiberaies3.0,

5)添加Hibernate支持包,除了原有包外,将最后4个包也加入,

6)HibernateConfiguration选择SpringConfigurationfile,因为三大框架整合之后由Spring来管理所有的Bean,所以Hibernate的配置文件也由Spring的applicationContext.xml文件来管理,点击下一步;

7)选择ExistingSpringConfigurationfile,点击下一步;

8)选择数据库为scdb,注意方言为SQLServer;

9)不建立SessionFactory,完成;

10)在web.xml中添加如下代码;

contextConfigLocation

/WEB-INF/classes/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

encoding

UTF-8

struts2

/*

6.3数据库系统实现

users表:

表6-1

admins表:

表6-2

professors表:

表6-3

students表:

表6-4

courses表:

表6-5

pc表:

表6-6

sc表:

表6-7

数据库映射到项目中,注意ID的生成方式选择native

6.4DAO层实现

DAO(DataAccessObject)是用于访问数据的对象,在使用时,我们在DAO中定义访问其对应数据对象的接口方法,业务层通过DAO操作数据,这样避免了直接在业务层使用持久层的技术。

DAO以及DAO实现放于如下图所示包中:

图6-1

在使用前,需要在Spring的配置文件中添加如下配置:

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

org.hibernate.dialect.SQLServerDialect

com/cims/domain/Users.hbm.xml

com/cims/domain/Sell.hbm.xml

com/cims/domain/Car.hbm.xml

在本系统中绝大多数DAO实现使用getHibernateTemplate()模板来操作数据库,因为该模板是线程安全的。

例子:

@Override

publicListfindStudentAll(){

returngetHibernateTemplate().find("fromStudents");

}

从中可以看出Hibernate处理数据库的优势,它使用了对象的方式来对数据库的表操作。

而且我们不需要编写最底层的SQL语句,而是直接使用它提供的方法。

6.5Manager层实现

在Action中通过Manager对DAO接口进行调用,首先将需要对用到的DAO实例化,采用Spring的依赖注入方式将实例化的DAO注入到Action中。

其接口与实现放于下图包中:

图6-2

例子:

@Override

publicvoidaddStudent(Stringname,Stringsex,Stringdept,Stringtel){

Studentss=newStudents();

s.setDept(dept);

s.setTel(tel);

s.setSex(sex);

s.setName(name);

studentDAO.addStudent(s);

}

该方法用于保存一名学生。

还需要在Spring的配置文件applicationContext.xml中添加如下信息:

该配置将studentDAO实例化后注入studentManager中

6.6Action层实现

Action用于返回一个Stirng类型字符串,来选择跳转页面。

其主要的配置在struts.xml这个文件中。

其实现放于下图包中:

图6-3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1