高校“季度之星”员工投票系统搭建研究(下)

时间:2022-05-23 05:01:45

高校“季度之星”员工投票系统搭建研究(下)

摘要:本论文全面系统地研究了季度之星投票系统设计目的、背景、采用的技术,概述了系统采用的jsp、ssh等开发技术和mysql数据库的特点,对系统的可行性进行了分析,然后对系统的设计思想、设计目标与系统的整体结构进行了详细的规划。在此基础上将上述理论知识与开发技术运用到系统的实现过程当中,完善了投票系统的构建过程。

关键词:投票系统、jsp、mysql

Abstract: This paper systematically studied the design goal , background , the adopted technology of the quarterly star vote system, summarizes the JSP, SSH technology and the characteristics of the mysql database, analyses the feasibility of the system, then designs design idea, design goal and the overall structure of the system, making the theoretical knowledge and application of development technology into the system implementation process, and doing better the process of the construction of the voting system.

key words : the voting system, JSP and mysql

一、“季度之星”员工投票系统开发技术分析

(一) jsp技术

JSP是由SunMicrosystems高校倡导、许多高校参与一起建立的一种动态技术标准。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

(二) SSH技术

SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。

集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。

系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

(三)Spring

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决高校应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 相对于EJB(Enterprise Java Beans)框架而言,spring 的核心包体积下占用的系统资源少,可以用于移动设备的程序开发,也可以用于应用程序的中间件,是非侵入式的框架。

Spring最重要的核心概念是它所提倡的控制反转(IOC,也称依赖注入)容器。IoC容器改变了类属性的赋值方式,从容器之中主动把依赖的属性注入给类的对的实例对象,而不是创建对象时再去寻找依赖的属性。这样Java类不需要管属性的赋值问题,把解偶的问题完全交给IoC容器去管理。

(四) Strtus

Strtus最早是作为Apache Jakarta项目的组成部分问世,项目的创立者希望通过对该项目的研究,改进和提高JSP、Servlet、标签库以及面向对象的技术水准。Strtus的目的是为了帮助开发者减少在运用MVC设计模式来开发Web应用的时间。Strtus是MVC的一种实现,它将Servlet和JSP标记用做实现的一部分。Strtus继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。

Strtus框架中的视图(View)部分是使用JSP实现的。Strtus为JSP的页面展现工作提供了丰富的标签库(taglib),所有显示逻辑都可以借助于标签库来实现,如循环判断等,另外Strtus在表现层还提供了一些模板机制(如Strtus Tiles),可以使用页面遵循一定的风格进行显示。用户也可以按照规范开发自己所需的标签库。基于Strtus框架搭建的web应用,其JSP页面可以全部由标签(Strtus标签、用户自定义标签)实现展现功能,而不必要掺杂多余的Java代码,同时,这些标签使JSP页面可以很方便的同控制器进行交互。

Strtus中的控制器(Control)部分是使用Servlet实现的,不必去费神编写控制页面调转的Servlet,因为Strtus已经有了这项功能,就是ActionServlet,这个Servlet通过读取由Strtus-config.xml配置文件中定义的映射以及转向jsp,来帮助实现页面跳转。Strtus-config.xml文件中规定了来自视图的请求所对应的Actionform以及JavaBean的实例所属的名称,并通过这些入口点映射为特定的动作类(Action)进行处理。

Strtus框架中的模型(Model)部分是使用JavaBean实现的额,JavaBean的作用就是存储从视图获取的信息。JavaBean将被动作类进行操作,将其信息存储到数据库中去或进行其他的业务处理,如转账处理、状态修改等。Strtus框架提供了动作类的基类Action,开发者所做的只是继承Action类,并实现其execute方法用于执行相应的业务逻辑,执行完成后将返回一个ActionForward对象,控制器通过该ActionForward对象来进行页面的重定向。

(五) Hibernate

Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。

Hiberante是通过配置文件及映射文件来为应用层和数据库层提供持久化服务的。由于需要读取文件信息和产生持久化对象,因此Hiberante在提供持久化服务的同时,也势必会增大时间和空间的开销,在一定程度上降低系统的的运行效率,但只要充分利用对象――关系映射并对其进行合理的优化,Hibernate在关系操作上的运行效率便可大大抵消文件和对象的不利影响。

Hibernate的架构有三个主要部分组成:

1连接管理:Hibernate的连接管理服务提供的数据库连接的有效管理。数据库连接是与数据库进行交互,因为它需要大量资源的开放和关闭数据库连接的最昂贵的部分。

2交易管理:事务管理服务提供给用户能够同时执行多个数据库报表。

3对象关系映射:对象关系映射是从对象映射模型的数据表示为关系数据模型的技术。这部分是用来休眠选择,插入,更新和删除记录窗体的基础表。当我们传递一个对象到Session.save()的方法时,Hibernate读取该对象的变量的状态,并执行必要的查询。

二、“季度之星”员工投票系统开发技术的数据库支持

(一) my sql简述

MySQL是一个精巧的SQL数据库管理系统,而且是开源的数据管理系统,也是一个真正的多用户、多线程SQL数据库服务器。MySQL 主要目标是快速、健壮和易用。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

MySQL 采用的是客户机/服务器体系结构,在使用 MySQL 时存取数据时,必须至少使用两类程序:

1、数据库服务器程序。数据库服务器监听从网络上传过来的客户机的请求并根据这些请求访问数据库的内容,以便向客户机提供它们所要求的信息。

2、客户机程序。这些程序是用户和服务器交互的工具,告诉服务器需要什么信息的查询。

MySQL 分发包包括服务器和几个客户机程序。可根据要你要达到的目的来选择使用客户机。最常用的客户机程序为 mysql,这是一个交互式的客户机程序,它能查询并看到结果。其他的客户机程序有: mysqldump 和 mysqlimport,分别导出表的内容到某个文件或将文件的内容导入某个表;mysqladmin 用来查看服务器的状态并完成管理任务,如告诉服务器关闭、重起服务器、刷新缓存等。如果具有现有的客户程序不满足你的需要,那么MySQL还提供了一个客户机编程库,可以编写自己的程序。客户机编程库可直接从 C 程序中调用,如果希望使用 C 语言以外的其他语言,还有几种其他的接口可用。

(二) my sql优点

MySQL 的客户机/服务器体系结构具有如下优点:

1、服务器提供并发控制,使两个用户不能同时修改相同的记录。所有客户机的请求都通过服务器处理,服务器分类辨别谁准备做什么,何时做。如果多个客户机希望同时访问相同的表,它们不必互相裁决和协商,只要发送自己的请求给服务器并让它仔细确定完成这些请求的顺序即可。

2、不必在数据库所在的机器上注册。MySQL 可以非常出色的在因特网上工作,因此您可以在任何位置运行一个客户机程序,只要此客户机程序可以连接到网络上的服务器。

当然不是任何人都可以通过网络访问你的MySQL服务器。MySQL 含有一个灵活而又有成效的安全系统,只允许那些有权限访问数据的人访问。而且可以保证用户只能够做允许他们做的事。

三、“季度之星”员工投票系统的总体设计

(一)系统设计思想

Browser/Server结构

本系统采用B/S结构,实现管理员登录和注销、管理员的管理投票,对员工和其他管理员的管理和普通员工的登录,投票等操作。这样的系统的优势在于其系统简单而功能相对强大,扩展能力较强,并且方便操作。

(二) 系统功能分析

管理员:管理员登录;创建投票信息;输入候选人信息;编辑候选人信息;查找投票信息;修改管理员密码;创建新管理员;创建普通员工;

普通员工:普通员工登录;普通员工投票;

(三) 功能模块划分

(四)投票流程

(五) 数据库设计

1.数据库设计

根据软件工程的思想,数据库设计可以划分为六个阶段:

(1) 规划阶段

确定开发的总目标,给出计划开发的软件系统的功能、性能、可靠性以及接等方面的设想。

(2) 需求分析阶段

认真细致地了解用户对数据的加工要求,确定系统的功能与边界。本阶段的最终结果,提供一个可作为设计基础的系统说明书,包括对软硬件环境的要求和一整套完善的数据流程图。

(3) 设计阶段

把需求分析阶段所确定的功能细化,主要工作是概念设计阶段、逻辑设计阶段、物理设计阶段,然后,对每个阶段内部设计详细的流程。

(4) 程序编制阶段

以一种或几种特定的程序设计语言表达上一阶段确定的各模块控制流程。程序编制时应遵循结构化程序设计方法。

(5) 调试阶段

对已编好的程序进行单元调试(分调),整体调试(联调)和系统测试(验收)。

(6) 运行和维护阶段

这是整个设计周期最长的阶段,其工作重点是收集和记录系统实际运行的数据。在运行中,必须保持数据库的完整性,必须有效的处理数据故障和进行数据库恢复。同时解决开发过程的遗留问题,改正错误进行功能完善。

2.数据库概念结构设计

数据库概念结构设计是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这个阶段不用考虑所采用的数据库管理系统、操作系统类型、机器类型等问题。这阶段可用的工具很多。用的最多的是E-R图(Entity-Relation,实体-关系图)。

本系统采用了E-R图的方法进行数据库概念结构设计。E-R图是描述数据实体关系的一种直观描述工具。这种图中有:

(1)实体:用方框表示,方框内为实体的名称。

(2)实体的各种属性:用椭圆表示,椭圆内为属性名称。使用线段将其和响应的实体连接起来。

(3)实体之间的联系:用菱形表示,菱形内为联系的名称。

实体和实体之间的联系较多,比较常见的联系有l:1,l:N和M:N这三种。

投票信息实体E-R图

管理员实体E-R图

3. 数据表结构

表1.管理员登录信息表

表2.投票员工登录信息表

表3.创建投票信息表

表4.投票数信息表

4. 用例图

普通员工用例图说明:

(1) 投票信息: 普通员工参与投票季度之星信息。

Step 1:成功登陆

Step 2:进行投票

管理员用例图说明:

(1) 投票信息查询: 管理员查看投票信息。

Step 1:成功登陆

Step 2:查看投票信息

(2)候选人设置:增、删、改、查优秀员工信息

Step 1:用户登陆

Step 2:增、删、改、查优秀员工信息。

(3)投票员工信息设置:增、删、改、查投票员工信息

Step 1:用户登陆

Step 2:增、删、改、查投票员工信息

5.系统类详细说明

投票员工类

属性:

ID:这是系统数据库中自己分配的一个号码,是唯一的,且会自动往上加的一个序列号,是数据库的关键字,以保证数据的完整性。

姓名:投票员工的姓名。

登陆与注销:最基本的功能,进入时必须登陆,长时间不使用系统会自己注销用户。

进行投票:可以对候选人进行投票。

管理员类

属性:

ID:每个管理员唯一的证件号码。

姓名:管理员姓名。

方法:

登陆/注销:最基本的方法或者功能。

修改资料:可以修改登录密码。

查看季度之星信息:查看每个季度的详细信息。

管理用户:对用户进行管理,可以创建新管理员和新投票员工等。

6.连接数据库

该系统使用了MySQL的JDBC驱动程序来连接数据库。因为对数据库的访问,在整个系统中比较频繁,对数据库的操作写成一个DBConnect的类,通过该类来连接数据库和访问数据库。

//部分代码如下

public DBConnect() {

try {

//加载数据库驱动程序

Class.forName(sDBDriver);

//建立连接

conn = DriverManager.getConnection(sConnStr);

}

catch (Exception e) {

System.out.println("DBConnect():" + e.getMessage());

}

}

四、“季度之星”员工投票系统的实现

系统页面的实现

图4-1系统首页图

首页的部分代码如下:

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.vote.dao.VoteContextDao;

import com.vote.domain.Vote;

import com.vote.domain.Votecontext;

public class VotecontextDaoImpl extends HibernateDaoSupport implements

VoteContextDao {

public void addVoteContext(Votecontext voteContext) {

getHibernateTemplate().save(voteContext);

}

@SuppressWarnings("unchecked")

public List findVoteContextByVoteId(Vote vote) {

Integer vote_id = vote.getVoteId();

String sql = "from Votecontext as voteContext where voteContext.voteId=?";

List list = getHibernateTemplate().find(sql, vote_id);

return list;

}

public void delVoteContext(Votecontext voteContext) {

getHibernateTemplate().delete(voteContext);

}

public void addOneVoteContext(Votecontext voteContext) {

getHibernateTemplate().save(voteContext);

}

public void updateVoteContext(Votecontext voteContext) {

getHibernateTemplate().saveOrUpdate("voteContextId", voteContext);

}

@SuppressWarnings("unchecked")

public Votecontext findVCCountByVCId(Votecontext voteContext) {

Integer vcId = voteContext.getVotecontextId();

String sql = "from Votecontext as voteContext where voteContext.votecontextId=?";

List list = getHibernateTemplate().find(sql, vcId);

return list.get(0);

}

@SuppressWarnings("unchecked")

public Long findTotalCountByVoteId(Integer voteId) {

String sql = "select sum(voteContext.count) from Votecontext as voteContext where voteContext.voteId=?";

List list = getHibernateTemplate().find(sql, voteId);

return (Long) list.get(0);

}

}

系统的运行环境约束:1.对服务器的要求,至少能够容纳1000人同时访问。2.对客户端,在现在使用的电脑中,联网了就行。要求不高。3.本地系统,使用功能时,在网速好的情况下,系统响应时间为10秒以内。

参考文献:

1.邓振杰,《网页制作技术》,人民邮电出版社,2008

2.张伟,《Java SE实践教程》,电子工业出版社,2008

3.顾明,《数据库原理与应用》,高等教育出版社,2004

4.赵家俊,《数据库应用基础》, 电子工业出版社,2006

5.杨帆,徐春华.基于Java技术的网上书店系统的设计与实现田.计算机应用研究,2003

6.黄理,李积善,曹林有.用JsP轻松开发web网站[M]北京:希望电子出版社,2001.

上一篇:基于学案导学模式下的高中英语阅读教学实践 下一篇:泰安欣尝赤鳞鱼