JavaWeb宠物店课程设计报告

更新时间:2023-09-06 19:57:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

校内实训 项目报告

课 题:宠物商店管理系统设计

学 院: ___ ___ ___ ___ 学生姓名: ___ ___ ___ ___ 指导教师: ___ ___ ___ ___

一、需求分析

1.1项目开发背景

PetStore 是SUN公司推出的一个宠物店系统,是J2EE应用和学习的一个好例子。针对不同的侧重点,具有不同的版本。该系统不同的版本是优秀程序员智慧的结晶。从功能层面来说,这个系统具有:宠物分类展示、下订单、添加到购物车、浏览产品细节等一系列网上商城所具备的基本功能。 1.2 功能介绍 1.2.1 整体介绍

Petstore提供网上商城系统所必需的功能:用户身份认证、商品信息列表、选购商品、下订单等,围绕这些功能,系统的设计分为以下四个部分:

宠物分类展现和宠物查找模块(catalog部分),供用户浏览、查找并选购宠物。 购物车管理(cart部分),供用户查看购物车的情况,并作出是否购买的选择。 账户管理模块(account部分),为用户提供注册和账户登录功能。 订单管理(order部分),供用户管理自己的账单。 1.2.2 详细说明

宠物商店用户通过账户管理模块登录或者注册新用户,只有拥有经过注册的用户名和正确的密码才能更改系统内部代码、页面形式、系统数据库以及管理客户账户等;宠物分类展现部分是系统与客户的交流界面,用户在此功能界面上可以浏览整个宠物店的所有产品情况,包括:宠物生活习性、宠物产地、库存情况、售价等等。用户在此处还可以点击单一宠物的链接进入更进一步的说明;购物车模块是系统与用户账户交流的平台,用户是否购买某产品将直接反映在这个界面和相关的数据库上。订单管理是账户管理的配合模块,是对客户的账户的直接管理和反应。 1.3 系统开发平台

Jdk 即Java开发数据包; Web服务器tomcat;

Mysql数据库,用于网站系统文件表格的建立、更改、维护等; MyEclipse,用于编写、调试系统代码、生成发布。

二、系统设计

2.1宠物管理系统功能设计目标:

(1) 实用性强:我们努力使系统符合实际操作流程的习惯,并尽量减少用户的输入,易学易用的友好的用户界面,满足各层次的用户使用的需求;

(2) 先进的程序结构:使用当代前卫的软件编程,能延长其生命周期,易于维护与管理;

(3) 安全可靠性高:后台维护功能齐全,根据平台在各个阶段不同的使用情况,管理人员可以设置相应的操作权限,增加系统注册,分配各个栏目的管理权限,实现系统的维护,保证系统的安全、可靠;

(4) 使用模块化设计的方法:使系统具有良好的可扩充性,以适应其不同阶段的发展需要,便于后来者分析、维护;

(5) 操作简单,维护方便:每个子系统都具有相对独立的系统维护功能 对可变化的项目可自行维护;

(6) 查询功能强大:可以对宠物的基本情况、用户基本情况,宠物主人信息,用户留言等按各种方式查询,可形成各种表单,同时还可对其进行汇总,使管理人员能及时准确地掌握用户和其宠物的基本情况。

2.2 宠物管理系统的总体设计:

本宠物商店管理系统是基于B/S架构下的多层结构应用系统。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。

2.3 系统详细功能设计以及总体结构图:

通过详细调查现实世界要处理的对象,充分了解系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变。

系统总体结构图:

系统实现的功能:

宠物类别管理

宠物类别查询 宠物类别修改 宠物类别删除 新增宠物类别 宠物信息管理

宠物大小类别,是否有伤人危险

宠物是否注册疫苗,何时,何地 宠物有监管人或流浪或被社区收容 宠物的其他信息以及备注 宠物查询 宠物修改 宠物删除 新增宠物

宠物监管人管理

宠物监管人性别年龄 宠物监管人与宠物关系 宠物监管人工作及工作住址 宠物监管人联系方式等 宠物监管人查询 宠物监管人添加 宠物监管人信息修改 宠物监管人删除 用户评论管理

评论内容管理 用户评论查询 用户登录管理

用户注册 用户登录 用户密码修改 相关文档管理

文档信息查看 文档信息添加 文档信息删除 个人信息管理

管理员密码更改 退出系统

2.4 数据库结构设计:

本系统分为4大模块,用户管理模块,宠物管理模块,文档管理模块以及留言板管理模块,其中宠物管理模块又分为宠物信息管理,宠物类别,宠物监管人信息管理。注册用户以及管理员分别对数据管理拥有自己的权限。

系统ER图

2.5系统的用例图 2.5.1 总体用例分析

总体用例图

如图,用户管理、宠物,宠物类别及宠物监管人管理、留言板管理、文档管理四个模块构成了本宠物管理系统。User是指系统用户,包括普通注册用户和管理员两种,普通注册用户只可以查看各种信息,以及添加与自己有关的信息,管理员才可以添加,查看,删除,修改各种信息。

2.5.2 用户管理用例分析

用户管理用例图

如图,用户管理模块主要包括:用户登陆、用户注册、用户信息修改、用户删除、用户信息查询五个功能组成。

2.5.3宠物,宠物类别及宠物监管人管理

信息管理用例图

如图,宠物,宠物类别,宠物监管人信息管理模块主要包括:宠物信息管理,宠物类别管理,宠物监管人信息管理三个功能模块组成。

2.5.4留言板管理

留言板管理用例图

如图,留言板管理模块主要包括:留言板列表,留言板内容两个个内容组成。

2.5.5文档管理

文档管理用例图

文档管理模块主要包括:文章列表、文章内容两个内容组成。

2.6 系统出错处理设计:

(1)用户输入账号跟密码错误,需要在登录框提示“信息错误,请重新填写!”。

(2) 用户注册账户时用了跟别人一样的账户名,需要在注册页面提示“用户名已存在!”。

(3)用户在提交注册信息时,有姓名账号密码等未填写时,需要弹出提示框:“未填写的内容不能为空!”。

(4)用户在添加宠物有的时候,如果有未填写或为选择的状况,需要在该页面弹出提示框“未填写的内容不能为空!”。

三、宠物管理系统的实现

3.1 宠物管理系统数据库的实现

Hibernate可以通过一个XML的mapping文件把一个POJO(Plain old java object)和数据库中的表对应起来,在这个XML文件(一般命名为*.hbm.xml)中,配置好Object和数据库中表的映射关系,然后把这个mapping加入到hibernate.cfg.xml中,这样Hibernate在启动时就可以加载这些mapping,并可以根据配置文件对对象实现自动的加载,并且可以对这些Object自动的维护。

Session工厂的配置信息:applicationContext-bean.xml <?xml version="1.0" encoding="UTF-8"?> <!--

- Middle tier application context definition for the image database. -->

<beans xmlns="http://www.77cn.com.cn/schema/beans"

xmlns:xsi="http://www.77cn.com.cn/2001/XMLSchema-instance" xmlns:aop="http://www.77cn.com.cn/schema/aop" xmlns:context="http://www.77cn.com.cn/schema/context" xmlns:tx="http://www.77cn.com.cn/schema/tx"

xsi:schemaLocation="http://www.77cn.com.cn/schema/beans

http://www.77cn.com.cn/schema/beans/spring-beans-2.5.xsd http://www.77cn.com.cn/schema/aop

http://www.77cn.com.cn/schema/aop/spring-aop-2.5.xsd http://www.77cn.com.cn/schema/context

http://www.77cn.com.cn/schema/context/spring-context-2.5.xsd http://www.77cn.com.cn/schema/tx

http://www.77cn.com.cn/schema/tx/spring-tx-2.5.xsd">

<!-- 抽象bean,是所有bean的父bean -->

<bean id="beanAbstract" abstract="true">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>

<!-- bean -->

<bean

id="loginServices"

class="com.oa.services.impl.LoginServicesImpl" parent="beanAbstract"/>

<bean id="typeServices" class="com.oa.services.impl.TypeServicesImpl"

parent="beanAbstract"/>

<bean

id="messageServices"

class="com.oa.services.impl.MessageServicesImpl" parent="beanAbstract"/>

<bean id="petServices" class="com.oa.services.impl.PetServicesImpl"

parent="beanAbstract"/>

<bean

id="ownerServices"

class="com.oa.services.impl.OwnerServicesImpl" parent="beanAbstract"/>

<bean id="textServices" class="com.oa.services.impl.TextServicesImpl"

parent="beanAbstract"/>

<bean

id="adminServices"

class="com.oa.services.impl.AdminServicesImpl" parent="beanAbstract"/> </beans>

以上代码是applicationContext-bean.xml文件中Session工厂的配置信息

宠物信息数据库表:

如表所示,这是宠物信息的表,id是系统自动生成,其余的分别为宠物姓名,宠物类型,简介,添加该宠物的用户id,图片,年龄是否疫苗,疫苗时间,疫苗地点,是否领养,是否伤人等宠物信息。接下来会对它如何连接到工程以及如何实现该功能做详细介绍。

其中图片在petaction中默认由本地,上传到服务器上的upload文件夹中,以便游客浏览以及管理员管理,id为系统自动+1生成,userid与user列表中的userid一致,typename与t_type列表中的typename一致,需要t_type预添加。

3.3 宠物管理系统功能说明

根据对宠物管理系统业务流程的分析,用户登录后要能自己添加自己的宠物信息,包括宠物的姓名,年龄,宠物的id,上传图片,是否疫苗,疫苗事件,疫苗地点,是否领养以及是否伤人等信息。用户登录后可以浏览别的用户的宠物信息,而管理员可以对用户前台添加的信息进行修改与删除。

3.4主要的宠物信息管理的实现 3.4.1 DAO层的实现

数据访问层,又称DAO层,在该层主要完成对象-关系映射的建立,通过这个映射,再通过访问业务对象即可实现对数据库的访问,使得开发中不必再用SQL语句编写复杂的数据库访问程序,这样就简化了对数据库的访问,提高了开发效率。同时通过对象-关系映射的配置,可以建立业务对象之间的复杂关系,如一对多、多对一、一对一、多对多等关系。这样就不再需要在数据库中建立表之间的复杂联系,使得业务对象之间的关系和数据库相分离,简化了数据库的建立和维护。在这一层中主要使用Hibernate框架来实现。

Tpet以及Tpet.hbm.xml为hibernate自动生成文件,用于连接数据库。

3.4.2 Service层的实现

Service为业务逻辑层,主要业务逻辑包括这些类分别实现了相应的接口,这些类在工作的过程中还需要依赖相应的DAO对象和JavaBean对象。实际操作时,在Action中通过Service对DAO接口进行调用,使整个系统有良好的层次。比如这边Petservices调用TPet,而PetserviceImpl继承Petservices,进行查询、添加、修改和删除操作。

Petservices代码:

import com.oa.models.TPet; import com.oa.utils.PageInfo; public interface PetServices { //查询

public PageInfo queryPet(int currentpage, int pageunit,

HttpServletRequest request, String url, String cond);

//添加

public Boolean addPet(TPet pet); //修改

public Boolean updatePet(TPet pet); //ID查询

public TPet getPet(Integer id); //删除

public TPet delPet(Integer id); }

PetserviceImpl主要代码:

public class PetServicesImpl extends AbstractServices implements PetServices { //查询

public PageInfo queryPet(int currentpage, int pageunit, }

HttpServletRequest request, String url, String cond) {

int rowCount = this.getPetsCount(cond); List<TPet> list = this.getPets(currentpage,

pageunit, cond);

PageInfo PageInfo = new PageInfo(currentpage, pageunit, rowCount, url,

list);

return PageInfo;

//获得

public List<TPet> getPets(int currentpage, int pageunit,

String cond) {

}

try {

String hql = " from TPet a where 1=1 " + cond; return this.query(hql, currentpage, pageunit);

} catch (Exception e) { }

return null;

e.printStackTrace();

//添加

public Boolean addPet(TPet pet) { }

save(pet); return true;

以上为查询以及添加的代码,其余删除修改略。

3.4.3 Action层的实现

Action用于处理视图层与业务层之间的衔接,当页面产生一个动作请求时候,通过Struts配置文件找到对应的Action中的接口,经过Action处理后返回结果并从Struts的配置文件中找到对应的跳转页面。 查询代码:

public String queryPet() throws Exception{

if (getSessionAttribute("querypageunit") == null) { }

StringBuffer cond = new StringBuffer(); if(null!=searchname&&""!=searchname.trim()){ }

cond.append(" and a.petname like '%"+searchname.trim()+"%' "); setSessionAttribute("querypageunit",this.pageunit);

int curpage =

Integer.parseInt(this.getCurrentpage(ServletActionContext.getRequest()));

int pageunit =

Integer.parseInt(this.getPageunit(ServletActionContext.getRequest(), "querypageunit"));

String url = "pet_queryPet?a=a";

PageInfo pageInfo = this.petServices.queryPet(curpage,

pageunit, ServletActionContext.getRequest(), url,

cond.toString());

预添加以及添加代码:

public String preaddPet() throws Exception{

}

List<TType> list = typeServices.queryType(); setRequestAttribute("list",list); return "preaddPet"; }

setRequestAttribute("pageinfo", pageInfo);

setRequestAttribute("searchname", this.searchname); return "queryPet";

public String addPet() throws Exception{

TUser user = (TUser) getSessionAttribute("user"); TPet pet = new TPet(); pet.setAge(age); pet.setIsbiter(isbiter); pet.setIsuser(isuser); pet.setPetname(petname);

pet.setRemark(remark);

}

pet.setTypename(typename); pet.setUserid(user.getUsername()); pet.setVacadrr(vacadrr); pet.setVaccin(vaccin); pet.setVaccin(vaccin); pet.setVacdate(vacdate);

// 将图片上传到工程下的upload文件夹中

String targetDirectory = ServletActionContext.getRequest()

String targetFileName = generateFileName(pictureFileName); File target = new File(targetDirectory, targetFileName); FileUtils.copyFile(picture, target); pet.setPicture(targetFileName); petServices.addPet(pet); return "addPet";

预添加将后台管理员添加的宠物类型添加到宠物信息,添加功能中有图片上传。 查看代码:

public String viewPet() throws Exception{

}

TPet pet = petServices.getPet(id); setRequestAttribute("pet",pet); return "viewPet";

其余修改删除代码等省略。

struts中宠物管理功能的实现:

<action name="pet_*" class="petAction" method="{1}">

<result name="queryPet">/files/pet/list.jsp</result>

<result name="addPet" type="redirectAction">pet_queryPet</result>

<result name="delPet" type="redirectAction">pet_queryPet</result> <result name="updatePet"

type="redirectAction">pet_queryPet</result>

<result name="preaddPet">/files/pet/add.jsp</result> <result name="preupdatePet">/files/pet/update.jsp</result> <result name="viewPet">/files/pet/view.jsp</result> </action>

3.4.4 静态Jps页面的实现表现层

其余静态页面运用css模块统一风格,其中pet功能页面代码均在files/pet/文件夹中,添加宠物信息为add.jsp,查看宠物信息为view.jsp,查看宠物列表为list.jsp,修改宠物信息为update.jsp,由struts控制跳转,代码略。结合Struts 的表现层标签, JSP 可完成全部的表现层功能一一数据收集、数据表示和客户端数据校验

四、实现效果

主界面,要求具有分类展现功能,网站产品再次一览无余。要求:据右侧边条将所有产品的简录的链接展示在此处,能从此处进product界面。

界面中间部分是图形界面要求生动且说明性强,充分展示产品的风格。此外还要有登录和注册、帮助功能、返回功能等。界面运行情况如下:

系统主界面

客户浏览网站时通过点击左边的边跳导航,可以进入品种列表界面。通过点击登录按钮,可以进入登录窗口。

品种列表信息界面:这是某一类宠物的详细的展示,界面中部是产品列表,但只是简单展示。进一步展示在其下属界面中。界面运行情况如下(猫类):

品种列表信息界面

单一宠物所有信息展示界面,此界面中部是单一宠物的详细信息列表,包括照片、产地、习性、价格、库存,同时还有议案家购物车的连接部分。界面运行情况如下:

犬类信息展示

登录窗口界面:是客户登陆网站的界面,有供客户登录填写用户名和密码的功能; 购物车窗口:能查看所有已经添加到购物车的产品的列表;

为保证网站整体风格一致,还需设计一个背景和上下边条,客户在浏览网站是在各个界面时,这两个背景成分都伴随始终。而以上各个界面之间的相互关系是通过JSP技术和Dao数据库类共同实现。

下边条:

上边条:

宠物信息的添加及修改:

查看宠物效果图:

查看宠物列表效果图:

本文来源:https://www.bwwdw.com/article/u4ch.html

Top