《J2EE系统架构和程序设计》课程设计实训项目——基于S2SH架构的客户资料信息分析系统需求规格说明书
《J2EE系统架构和程序设计》课程设计实训项目——基于SSH架构的网上书店系统详细设计说明书

《J2EE系统架构和程序设计》课程设计实训项目——基于Struts +Spring +Hibernate架构的网上书店系统详细设计说明书1.1.1系统程序模块的结构设计1、项目中的各个文件目录结构2、表示层JSP页面部分结构3、系统程序类的部分结构4、系统程序的结构本系统项目基于MVC架构体系设计,并采用Struts +Spring+Hibernate组合的体系结构设计,共分为五层体系架构:1.1.2系统业务流程设计和相关的时序图1、用户注册用户需要通过注册系统来将他们的有关个人信息登记到网上书店系统中,这些个人信息是用户购书时需要的。
下面将介绍具体的业务需求及实现步骤。
(1)注册系统业务需求简介做任何一个项目首先需要知道具体的业务,下面首先介绍注册系统总的业务需求。
1)提供用户界面给用户,输入他们的Name(姓名)、Login Name(登录名)、Password (密码)、Phone(电话号码)、E-mail和Registration Fee(注册费)。
2)提供用户界面的输入校验。
●所有字段不能为空,●登录名和密码不能少于5个字符。
●电话号码必须按888-888-8888的格式输入。
●E-mail必须按aaa@的格式输入。
●注册费必须输入数字。
(2)用户填完注册信息,单击【Save】按钮之后,所有的用户信息将会记录到数据库USER 表和ACCOUNT表中。
(3)用户注册成功后系统将给出成功注册的信息。
2.注册系统业务及实现下面是本章所实现的业务详解。
(1)用户输入个人信息后,系统进行页面校验。
这里通过Struts的Validator来实现页面校验,返回具体的错误信息让用户修正,在Web 应用项目的WEB-INF\bkstore目录下面的bkstore- validation.xml文件中定义了对该页面的所有字段的校验规则。
页面显示层是通过userRegis.jsp来实现的,业务逻辑是通过用户信息管理Bean调用模型层来实现的。
基于J2EE S2SH架构的客户关系管理(CRM)系统需求规格说明书(第2部分)

基于J2EE S2SH架构的客户关系管理(CRM)系统需求规格说明书(第2/2部分)10、系统各个用例描述——业务合作伙伴信息管理(1)用例图(2)用例描述——增加业务合作伙伴信息(CRM601)(3)用例描述——删除业务合作伙伴信息(CRM602)(4)用例描述——查找业务合作伙伴信息(CRM603)(5)用例描述——修改业务合作伙伴信息(CRM604)(6)用例描述——查找潜在用户信息(CRM605)(7)用例描述——生成潜在客户评估(CRM606)(8)用例描述——提升为业务合作伙伴(CRM607)11、系统各个用例描述——潜在客户信息管理(1)用例图(2)用例描述——增加潜在客户信息(CRM701)(3)用例描述——删除潜在客户信息(CRM702)(4)用例描述——修改潜在客户信息(CRM703)12、系统各个用例描述——服务请求管理(1)用例图(2)用例描述——增加服务请求(CRM801)(3)用例描述——修改服务请求(CRM803)(4)用例描述——删除服务请求(CRM803)(5)用例描述——查找解决方案(CRM804)13、系统各个用例描述——服务解决方案管理(1)用例图(2)用例描述——增加服务解决方案(CRM801)(3)用例描述——修改服务解决方案(CRM802)(4)用例描述——删除服务解决方案(CRM803)(5)用例描述——查看服务请求列表(CRM804)14、系统各个用例描述——服务反馈管理模块(1)用例图(2)用例描述——增加服务反馈信息(CRM1001)(3)用例描述——删除服务反馈信息(CRM1002)15、系统各个用例描述——管理员登录(1)用例图(2)用例描述——管理员登录(CRM1101)16、系统各个用例描述——用户信息管理(1)用例图(2)用例描述——增加用户信息(CRM1201)(3)用例描述——删除用户信息(CRM1202)(4)用例描述——修改用户信息(CRM1203)(5)用例描述——查找用户信息(CRM1204)1.1.1系统的非功能性需求规定1、用户界面需求(1)简洁、友好的用户操作界面;(2)系统的使用语言为中文;(3)信息显示清晰明确。
《J2EE系统架构和程序设计》课程设计实训项目——基于SSH架构的软件交易平台系统需求规格说明书

《J2EE系统架构和程序设计》课程设计实训项⽬——基于SSH架构的软件交易平台系统需求规格说明书《J2EE系统架构和程序设计》课程设计实训项⽬——基于Struts +Spring +Hibernate架构的软件交易平台系统需求规格说明书1.1.1引⾔1、背景伴随着软件⾏业的蓬勃发展,越来越多的⼈以职业或⾮职业的⾝份进⾏着软件开发的⼯作,⽽其中不论是专业开发者还是软件爱好者,他们都会根据个⼈喜好,利⽤业余时间,开发⼀些或是极具有商业潜⼒(如:现如今⾮常有名的⼋⼗年代后戴志康的discuz 论坛),或是趣味⽆穷(如:韩国的flash 游戏企鹅系列),或是使⽤户得到⽆穷便利(如:某资深软件开发从业者的mail magic)的个⼈软件,我们可以将这些⼈统称为⾃由软件提供者。
源于⽅⽅⾯⾯的需要,⼈们对软件的需求越来越⼤,⽽专业的软件开发公司往往却不能满⾜⼈们的需求,这绝对不是认为如今的软件公司没有开发能⼒,恰恰相反这是这些正规公司开发能⼒很强,所以有些软件根本不会做,主要原因是利润太低,⼀个⼏k或者⼏⼗k的⼩项⽬对于⼀个专业公司来说真的是“⾷之⽆味”,对于处于上述状况的需求者我将其称为⾃由软件寻求者。
2、⽬的提供⼀个软件交易⽹络平台,集中买卖双⽅,系统提供⾃动匹配双⽅,⽤户⾃查询,多种交易⽅式等基本功能。
3、读者范围最终⽤户、软件设计⼈员。
4、定义(1)GB:中华⼈民共和国国家标准的英⽂缩写字母(2)构件:具有某种功能的可重⽤的软件模版单元,表⽰了系统中主要的计算元素和数据存储。
(3)逻辑视图:描述⽀持系统的功能需求的视图。
(4)开发视图:也称模块视图,主要侧重于软件模块的组织和管理描述。
5、参考资料(1)J2EE项⽬实训Hibernate框架技术(21世纪⾼等学校实⽤软件⼯程教育规划教材)杨少波编著清华⼤学出版社 2008 年5⽉(2)J2EE项⽬实训Spring框架技术(21世纪⾼等学校实⽤软件⼯程教育规划教材)杨少波编著清华⼤学出版社 2008 年5⽉(3)J2EE项⽬实训UML及设计模式(21世纪⾼等学校实⽤软件⼯程教育规划教材)杨少波编著清华⼤学出版社 2008 年5⽉(4)J2EE项⽬实训Struts框架技术(21世纪⾼等学校实⽤软件⼯程教育规划教材)杨少波编著清华⼤学出版社2008 年10⽉(5)《JSP与数据库连接》刘瑞挺,⾼等教育出版社(6)《数据库原理与⽅法》郑若忠王鸿武,湖南科学技术出版社(7)《软件需求》(美)Karl E.Wiegers 著,刘伟琴刘洪涛译1.1.2任务概述1、⽬标在本实训课结束时,使⾃⼰具有J2EE开发⽹站的经历,能够体会到⽤J2EE技术开发⽹站时需要注意的问题,并且懂得如何获取专业领域的知识的能⼒。
《J2EE系统架构和程序设计》课程设计项目——基于Struts2 +Spring +JDBC架构的在线学习系统需求规格说明书

《J2EE系统架构和程序设计》课程设计实训项目——基于Struts2 +Spring +JDBC架构的在线学习系统需求规格说明书1.1.1引言1、项目介绍在今天,生机盎然的互联网时代带给人们无限种可能,一种颠覆传统学习观念的网络学习方式应运而生,它使教学不再受到时间、空间的限制,从而大大提高了学习的自由度,它就是在线学习(E-learning)。
在线学习是指主要通过因特网进行的学习与教学活动,它充分利用现代信息技术所提供的、具有全新沟通机制与丰富资源的学习环境,弥补了传统课堂式教学在知识传授、社会性、互动性方面的局限,具有丰富的多媒体资源、便捷的协同交流、友好的互动等独特的优势。
作为一种全新的学习方式,在线学习可使学习者及时的获取教育资源,并与教师进行一对一的沟通以迅速有效的解决疑问,使学习更具针对性;而教师也可通过交流实现信息资源共享,使教授的工作不再枯燥单一。
在线学习提供了更快的学习和相对少的(费用),在这高度发达的快节奏生活中,必将引领互联网时代的一场学习革命。
根据客户的需求,我们项目组决定开发一套适应大学或大中型教育培训机构的“在线课程学习系统”,通过网络的数字化内容,为教师与学习者提供一个轻松而便捷的教学一体化在线平台,以使在线教学与传统教学协同促进,共同形成实践中有效可行的信息技术环境下的教学方法体系。
2、业务领域该“在线课程学习系统”主要面向大学或大中型教育培训机构,用户群体为在这些大学或培训机构中的系统管理员、教师、学生以及注册用户等。
该系统可以帮助大学更好的开展教育活动、激发学生的学习热情、并给教师一个展示个人教学水平的平台,使其课程更具吸引力;对于大中型教育培训机构而言,该系统可以通过内容多样的教学手段以达到资源利用最大化、学习行为自主化、学习形式交互化、教学形式个性化、教学管理自动化的目的。
3、系统目标该“在线课程学习系统”整体可分为三部分:在线学习系统、课程上传管理系统、后台管理系统。
J2EE课程设计教学项目——基于SSH三大框架相互整合技术实现的数码产品管理系统的实现实例(第1部分)

1.1J2EE课程设计教学项目——基于Struts2+Spring +Hibernate(SSH)三大框架相互整合技术实现的数码产品管理系统的实现实例(第1部分)1.1.1构建基于Struts2的Web项目1、新建一个名称为sshwebshop的Web项目(1)Web项目的名称为sshwebshop(2)其中的index.jsp页面的内容如下<%@ page isELIgnored="false" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>这是产品查询系统的首页</title></head><body>这是产品查询系统首页的内容</body></html>注意:JSP页面内的字符集为UTF-8类型的字符集,并保证项目的JDK为1.6以上版本2、在项目中添加与JSTL有关系的系统库——目前项目已经支持3、在项目中添加与Struts2有关的系统库和环境1.1.2应用手动搭建Struts2的开发环境1、回顾基本的流程(1)添加相关的系统库文件(2)在web.xml中添加Struts2的插件(3)添加struts.xml2、添加相关的系统库文件3、在web.xml中添加Struts2的插件<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-mapping>4、添加struts.xml的系统配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "/dtds/struts-2.1.dtd"><struts><include file="struts-default.xml"/><package name="productInfoPackage" extends ="struts-default" ></package></struts>5、配置服务器并部署测试(1)配置服务器(2)部署本示例的程序(3)测试http://127.0.0.1:8080/sshwebshop/index.jsp1.1.3在项目中添加与产品查询有关的JSP页面文件1、新建一个名称为productManage的文件目录2、在该目录中添加产品信息查询的页面queryProductInfo.jsp(1)添加产品信息查询的页面queryProductInfo.jsp文件(2)queryProductInfo.jsp页面的内容如下<%@ page isELIgnored="false" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>这是产品信息查询页面</title></head><body></body></html>3、在该页面中添加查询表单<%@ page isELIgnored="false" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>这是产品信息查询页面</title></head><body><h2>下面为同步查询的表单</h2><formaction="${pageContext.request.contextPath}/productInfoManage!queryProductInfo.action"method="post" name="queryProductInfoForm">请输入产品的厂家名称:<input type="text" name="factoryName"/> <input type="submit" name="submitButton" value="开始查询"/></form></body></html>4、再测试本示例的目前应用效果(1)启动测试页面http://127.0.0.1:8080/sshwebshop/productManage/queryProductInfo.jsp (2)将出现下面的查询表单页面1.1.4在项目中添加实现产品信息管理的Action程序类1、添加一个Action类(1)类名称为ProductInfoManage,包名称为com.px1987.sshwebshop.action,标签继承于com.opensymphony.xwork2.ActionSupport类(2)编程该Action类package com.px1987.sshwebshop.action;import com.opensymphony.xwork2.ActionSupport; public class ProductInfoManage extends ActionSupport { public ProductInfoManage() {}public String queryProductInfo(){return SUCCESS;}}2、添加显示查询结果的JSP页面(1)页面文件名称为showProductInfo.jsp(2)设计该页面的内容<%@ page isELIgnored="false" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>这是产品信息查询的结果页面</title></head><body></body></html>3、在struts.xml文件中配置定义该Action类<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "/dtds/struts-2.1.dtd"><struts><constant name="struts.i18n.encoding" value="GBK" /><include file="struts-default.xml"/><package name ="productInfoPackage" extends ="struts-default" ><action name="productInfoManage"class ="com.px1987.sshwebshop.action.ProductInfoManage" > <resultname="gotoShowResult">/productManage/showProductInfo.jsp</result></action></package></struts>4、再测试本示例的目前应用效果(1)启动相关的测试页面http://127.0.0.1:8080/sshwebshop/productManage/queryProductInfo.jsp(2)将出现下面的执行结果1.1.5在项目中添加查询产品数据的业务服务组件1、在项目中添加包装产品信息的实体类ProductInfoPO(1)类名称为ProductInfoPO,包名称为com.px1987.sshwebshop.service.pobject(2)该类的代码package com.px1987.sshwebshop.service.pobject; public class ProductInfoPO {private String productName;public String getProductName() {return productName;}public void setProductName(String productName) { this.productName = productName;}public String getFactoryName() {return factoryName;}public void setFactoryName(String factoryName) {this.factoryName = factoryName;}public int getProductKind() {return productKind;}public void setProductKind(int productKind) { this.productKind = productKind;}public String getProduceDate() {return produceDate;}public void setProduceDate(String produceDate) { this.produceDate = produceDate;}public float getSalePrice() {return salePrice;}public void setSalePrice(float salePrice) {this.salePrice = salePrice;}public String getProductImage() {return productImage;}public void setProductImage(String productImage) { this.productImage = productImage;}private String factoryName;private int productKind;private String produceDate;private float salePrice;private String productImage;public ProductInfoPO() {}}2、在项目中添加一个ProductInfoServiceInterface接口(1)接口所在的包名称为com.px1987.sshwebshop.service.inter(2)ProductInfoServiceInterface接口的代码示例package com.px1987.sshwebshop.service.inter;import java.util.ArrayList;public interface ProductInfoServiceInterface {public ArrayList doQuesyProductInfo(String factoryName);}3、在项目中为该接口添加一个实现类(1)类名称为ProductInfoDAOServiceImple,包名称为com.px1987.sshwebshop.service.imple(2)编程ProductInfoDAOServiceImple实现类package com.px1987.sshwebshop.service.imple;import java.util.ArrayList;import com.px1987.sshwebshop.service.inter.ProductInfoServiceInterface;import com.px1987.sshwebshop.service.pobject.ProductInfoPO;public class ProductInfoDAOServiceImple implements ProductInfoServiceInterface { public ProductInfoDAOServiceImple() {}public ArrayList doQuesyProductInfo(String factoryName) {ProductInfoPO oneProductInfoPO=new ProductInfoPO();oneProductInfoPO.setProductName("HP笔记本800");oneProductInfoPO.setFactoryName("美国HP公司");oneProductInfoPO.setProductKind(1); // =1 代表计算机,=2 代表书=3 家具oneProductInfoPO.setProduceDate("2010-8-30");oneProductInfoPO.setSalePrice(5000.50f);oneProductInfoPO.setProductImage("/images/hpcompute1.jpg");ProductInfoPO twoProductInfoPO=new ProductInfoPO();twoProductInfoPO.setProductName("HP笔记本600");twoProductInfoPO.setFactoryName("美国HP公司");twoProductInfoPO.setProductKind(1); // =1 代表计算机,=2 代表书=3 家具twoProductInfoPO.setProduceDate("2010-6-30");twoProductInfoPO.setSalePrice(5100.50f);twoProductInfoPO.setProductImage("/images/hpcompute2.jpg");ProductInfoPO threeProductInfoPO=new ProductInfoPO();threeProductInfoPO.setProductName("HP笔记本700");threeProductInfoPO.setFactoryName("美国HP公司");threeProductInfoPO.setProductKind(1); // =1 代表计算机,=2 代表书=3 家具threeProductInfoPO.setProduceDate("2010-7-30");threeProductInfoPO.setSalePrice(5050.50f);threeProductInfoPO.setProductImage("/images/hpcompute3.jpg");ArrayList allProductInfo=new ArrayList();allProductInfo.add(oneProductInfoPO);allProductInfo.add(twoProductInfoPO);allProductInfo.add(threeProductInfoPO);return allProductInfo;}}。
《J2EE系统架构和程序设计》课程设计实训项目——基于S2SH架构的某电子商务系统单元测试结果

《 J2EE 系统架构和程序设计》课程设计实训项目——基于 Struts2 +Spring +Hibernate 架构的某电子商务系统单元测试结果
1.1.1 业务服务组件单元测试结果文档 业 务 组 件 单 元 测 试 项目名称 测试日期 测试人员 检查项状态标记 说明: 这阶段我主要针对自己编写的服务组件代码进行了单元测试, 目的是在不频繁的开启关 闭服务器的情况下,更快的找出代码的 Bug,提高工作效率;这个文档是最终的我的测试 结果,问题 Bug 也已经基本修复。 主要测试项一(管理员模块的测试) 管理员登陆判断 管理员添加 管理员删除 管理员修改 管理员保存 管理员获取所有列表 问题说明: 状态 Yes Yes Yes Yes Yes Yes 说明 符合标准 符合标准 符合标准 符合标准 符合标准 符合标准 正方商业集团电子商务管理系统 20XX-XX-XX
Yes Yes Yes Yes Yes
符合标准 符合标准 符合标准 符合标准 符合标准
这里测试遇到的主要问题是对于代码里面的 session 的存 储与获取,由于 JUnit 里面没有声明,所以会出现 session 找不到的异常, 但是这里的 session 主要用于与前台页面的 通信,所以不作为逻辑的问题考虑,所以,针对我编写的测 试代码,有如下结果:
张三
Yes 合格 No 不合格 Not Yet 待完成 N 不适用
这里测试遇到的主要问题是对于代码里面的 Session 的存储与获 取, 由于 JUnit 里面没有声明, 所以会出现 Session 找不到的异常, 但是这里的 Session 主要用于与前台页面的通信,所以不作为逻 辑的问题考虑,所以,针对我编写的测试代码,有如下结果:
基于S2SH架构的课程设计项目——《客户关系管理CRM系统》——实现项目中的Spring和Hibernate框架的相互整合
基于S2SH架构的课程设计实训教学示例项目——《客户关系管理CRM系统》——实现项目中的Spring和Hibernate框架的相互整合1.1.1在项目中添加Spring相关的系统库及配置文件1、相关的系统库文件如下2、添加Spring的IOC的XML配置文件globalIOCConfig.xml(1)添加XML配置文件globalIOCConfig.xml(2)设计相关的内容——详细内容见下面1.1.2实现Spring3.2与Hibernate4.1相互整合1、在项目中添加Spring ORM的系统库(它们是Spring和Hibernate相互整合所需要的系统库)1)spring-orm-3.2.0.M1.jar2)spring-tx-3.2.0.M1.jar2、设计globalIOCConfig.xml相关的内容<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""/dtd/spring-beans.dtd"><beans><bean id="localSessionFactoryBean"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="configLocation"><value>WEB-INF/classes/hibernate.cfg.xml</value></property></bean><bean id="staffInfoDAOImple"class="com.px1987.bluedreamcrm.dao.imple.StaffInfoDAOImple"> <property name="sessionFactory"><ref bean="localSessionFactoryBean" /></property></bean><bean id="staffInfoAction" class="com.px1987.bluedreamcrm.action.StaffInfoAction"> <property name="staffInfoDAOImple"><ref bean="staffInfoDAOImple" /></property></bean><bean id="enterpriseCustomerInfoManageAction"class="com.px1987.bluedreamcrm.action.EnterpriseCustomerInfoManageAction"> <property name="enterpriseCustomerInfoCRUDImple"><ref bean="enterpriseCustomerInfoCRUDImple" /></property></bean><bean id="enterpriseCustomerInfoCRUDImple"class="com.px1987.bluedreamcrm.dao.imple.EnterpriseCustomerInfoCRUDImple"> <property name="sessionFactory"><ref bean="localSessionFactoryBean" /></property></bean><bean id="personalCustomerInfoManageAction"class="com.px1987.bluedreamcrm.action.PersonalCustomerInfoManageAction"> <property name="personalCustomerInfoCRUDImple"><ref bean="personalCustomerInfoCRUDImple" /></property></bean><bean id="personalCustomerInfoCRUDImple"class="com.px1987.bluedreamcrm.dao.imple.PersonalCustomerInfoCRUDImple"> <property name="sessionFactory"><ref bean="localSessionFactoryBean" /></property></bean></beans>1.1.3将Spring3.2和Struts2.3相互整合1、在Struts2的项目中添加与Spring整合的插件struts2-spring-plugin-2.3.1.2.jar2、所需要的与整合相关的系统库文件1)spring-web-3.2.0.M1.jar2)spring-tx-3.2.0.M1.jar3)spring-aop-3.2.0.M1.jar3、修改web.xml文件以建立出Web IOC环境(1)添加<context-param>标签<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/globalIOCConfig.xml</param-value> </context-param>(2)添加<listener>标签<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>加入Spring的ContextLoaderListener监听器以方便Spring与Web容器交互,该类在spring-web-3.2.0.M1.jar文件中。
《J2EE系统架构和程序设计》课程设计实训项目——基于SSH架构的学生信息和课程信息管理系统
目录
《 J2EE 系 统 架 构 和 程 序 设 计 》 课 程 设 计 实 训 项 目 — — 基 于 SSH (Struts+Spring+Hibernate)架构的学生信息和课程信息管理系统 ................................. 2
定会是这样的技术应用场景。希望大家一定要认真对待和独立地完成本次大作业。
杨教授大学堂,版权所有,盗版必究。 2/52 页
杨教授大学堂 精心创作的优秀程序员 职业提升必读系列资料
2、实训项目的基本功能要求 1) 在系统中必须要应用 AJAX 技术,具体在什么功能模块或者实现什么功能,可以自 行决定。整个系统的总体功能也可以自行决定。 2) 在系统中必须实现将从数据库某个数据库表中查询出的 JDBC 的结果集动态输出 (可以采用 DOM 或者 JDom 等技术编程)到自己定义的 XML 文件中,同时为该 XML 文件应该提供对应的 Schema 文件(自己定义) 3) 在系统中必须要应用“XML + XSLT”技术实现将“查询结果”在浏览器中进行显 示输出 由于指导教师只是对实训项目提出了基本功能要求,而且该要求是泛泛的统一要求,指
导教师所提出的基本功能要求在本购物系统中的具体功能性需求体现如下:
3、系统中的非功能性需求
(1)允许大量用户同时访问及进行页面交互,系统应该具有很强的稳定行和提供有恢复机
制;
(2)3000 用户同时查询响应时间不超过 10 秒;
(3)系统可靠性
系统应该能够在 7*23 小时环境下不能宕机,其中 1 小时为系统维护,并且保证系统数
通过使用本系统可以对学生及相关的课程信息进行全面的信息记录和处理,提高学校 的教学管理水平和教师的工作效率。系统的使用者定为管理员,老师,学生。系统划分为 三大模块,分别针对管理员,老师,学生提供相应的功能。
J2EE课程设计教学项目——基于SSH三大框架相互整合技术实现的数码产品管理系统的实现实例(第4部分)
1.1J2EE课程设计教学项目——基于Struts2+Spring +Hibernate(SSH)三大框架相互整合技术实现的数码产品管理系统的实现实例(第4部分)1.1.1修改产品信息的功能实现1、实现数据修改的基本思路(1)首先查询出需要修改的数据(2)用户选中需要修改的数据,系统将显示输出待修改的原始数据(3)用户在修改表单中根据自己的要求,修改其中的相关数据,并提交修改的结果(4)系统后台获得修改后的所有结果,实现真正的修改;系统再次查询修改后的结果数据,并显示输出2、修改PO增加id成员属性public String getId() {return id;}public void setId(String id) {this.id = id;}private String id;3、修改数据查询方法,获得每条记录的idwhile(rs.next()){ProductInfoPO oneProductInfoPO=new ProductInfoPO();oneProductInfoPO.setId(rs.getString("id"));oneProductInfoPO.setProductName(rs.getString("productName"));oneProductInfoPO.setFactoryName(rs.getString("factoryName"));oneProductInfoPO.setProductKind(rs.getInt("productKind"));oneProductInfoPO.setProduceDate(rs.getString("produceDate"));oneProductInfoPO.setSalePrice(rs.getFloat("salePrice"));oneProductInfoPO.setProductImage(rs.getString("productImage"));allProductInfo.add(oneProductInfoPO);}4、在JSP页面中设计“修改”功能的超链接<ahref="${pageContext.request.contextPath}/productInfoManage!updateProductInfo.action?id=${o neProductInfoPO.id}">修改</a>5、在数据访问方法中增加一个方法public ProductInfoPO doQuesyProductInfoByID(String productID){ProductInfoPO oneProductInfoPO=null;ResultSet rs=null;try{con = dataSource.getConnection();}catch (SQLException ex){System.out.println(ex.getMessage());}String select_SqlStatement="select * from productInfo where id=?";try{try {java.sql.PreparedStatement pstmt = con.prepareStatement(select_SqlStatement,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);pstmt.setString(1, productID);rs = pstmt.executeQuery();while(rs.next()){oneProductInfoPO=new ProductInfoPO();oneProductInfoPO.setId(rs.getString("id"));oneProductInfoPO.setProductName(rs.getString("productName"));oneProductInfoPO.setFactoryName(rs.getString("factoryName"));oneProductInfoPO.setProductKind(rs.getInt("productKind"));oneProductInfoPO.setProduceDate(rs.getString("produceDate"));oneProductInfoPO.setSalePrice(rs.getFloat("salePrice"));oneProductInfoPO.setProductImage(rs.getString("productImage"));}}catch (SQLException e){System.out.println(e.getMessage());}}finally{try {con.close();} catch (SQLException e) {e.printStackTrace();}}return oneProductInfoPO;}6、编程Action类中的“修改”的功能方法private String id=null;public String getId() {return id;}public void setId(String id) {this.id = id;}public String updateProductInfo(){ProductInfoPO returnProductInfoPO =productInfoDAOServiceImple.doQuesyProductInfoByID(id);HttpServletRequest request =ServletActionContext.getRequest();request.setAttribute("returnProductInfoPO", returnProductInfoPO);return "gotoShowUpdateForm";}7、在struts.xml文件中增加一个结果的定义<action name="productInfoManage" class ="productInfoManage"><result name="gotoShowResult">/productManage/showProductInfo.jsp</result><result name="gotoShowUpdateForm">/productManage/showUpdateForm.jsp</result> </action>8、在项目中再添加一个显示修改数据的表单页面(1)页面的文件名称为showUpdateForm.jsp(2)设计修改的表单<%@ include file ="/commonPage/pageHead.jsp"%><%@ page isELIgnored="false" pageEncoding="utf-8"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>这是修改产品信息表单页面</title></head><body><center><h2>下面为待修改的原始数据</h2><formaction="${pageContext.request.contextPath}/productInfoManage!updateProduct Form.action"method="post" name="queryProductInfoForm"><input type="hidden" name="id" value="${returnProductInfoPO.id }" /> 厂家名称:<input type="text" name="factoryName" value="${returnProductInfoPO.factoryName }" /> <br />产品名称:<input type="text" name="productName" value="${returnProductInfoPO.productName }" /> <br />产品价格:<input type="text" name="salePrice" value="${returnProductInfoPO.salePrice }" /> <br />产品分类:<select name="productKind"><c:choose><c:when test="${returnProductInfoPO.productKind == 1}"><option value ="1" selected>笔记本</option><option value ="2">台式机</option><option value ="3">智能手机</option></c:when><c:when test="${returnProductInfoPO.productKind == 2}"><option value ="1" >笔记本</option><option value ="2" selected>台式机</option><option value ="3">智能手机</option></c:when><c:when test="${returnProductInfoPO.productKind == 3}"><option value ="1" >笔记本</option><option value ="2">台式机</option><option value ="3" selected>智能手机</option></c:when></c:choose></select> <br />出厂日期:<input type="text" name="produceDate" value="${returnProductInfoPO.produceDate }" /> <br />产品图片:<select name="productImage"onchange="document.getElementById('productImageTagID').src='${pageContext.req uest.contextPath}'+this.options[this.selectedIndex].value;"><c:choose><c:when test="${returnProductInfoPO.productImage == '/images/hpcompute1.jpg'}"><option value ="/images/hpcompute1.jpg" selected>hpcompute1</option><option value ="/images/hpcompute2.jpg">hpcompute2</option><option value ="/images/hpcompute3.jpg">hpcompute3</option></c:when><c:when test="${returnProductInfoPO.productImage == '/images/hpcompute2.jpg'}"><option value ="/images/hpcompute1.jpg" >hpcompute1</option><option value ="/images/hpcompute2.jpg" selected>hpcompute2</option><option value="/images/hpcompute3.jpg">hpcompute3</option></c:when><c:when test="${returnProductInfoPO.productImage == '/images/hpcompute3.jpg'}"><option value ="/images/hpcompute1.jpg" >hpcompute1</option><option value ="/images/hpcompute2.jpg">hpcompute2</option><option value ="/images/hpcompute3.jpg" selected>hpcompute3</option></c:when></c:choose></select><imgsrc="${pageContext.request.contextPath}${returnProductInfoPO.productImage}"id="productImageTagID"><br /> <br /><input type="submit" name="submitButton" value="开始修改"/></form></center></body></html><%@ include file ="/commonPage/authorInfo.jsp"%>9、测试本示例目前的功能实现效果10、在项目中提供一个表单对象类package com.px1987.sshwebshop;public class ProductInfoActionForm {public ProductInfoActionForm() {}public String getProductName() {return productName;}public void setProductName(String productName) { this.productName = productName;}public String getFactoryName() {return factoryName;}public void setFactoryName(String factoryName) { this.factoryName = factoryName;}public int getProductKind() {return productKind;}public void setProductKind(int productKind) { this.productKind = productKind;}public String getProduceDate() {return produceDate;}public void setProduceDate(String produceDate) { this.produceDate = produceDate;}public float getSalePrice() {return salePrice;}public void setSalePrice(float salePrice) { this.salePrice = salePrice;}public String getProductImage() {return productImage;}public void setProductImage(String productImage) { this.productImage = productImage;}public String getId() {return id;}public void setId(String id) {this.id = id;}private String productName;private String factoryName;private int productKind;private String produceDate;private float salePrice;private String productImage;private String id;}11、在数据访问类中添加修改方法public boolean doUpdateProductInfo(ProductInfoPO updatedProductInfo){ int returnResult =0;try{con = dataSource.getConnection();}catch (SQLException ex){System.out.println(ex.getMessage());}String update_SqlStatement="update productInfo set productName=?,factoryName=?,productKind=?,produceDate=?,salePrice=?,productIma ge=? where id=?";try{try {java.sql.PreparedStatement pstmt = con.prepareStatement(update_SqlStatement);pstmt.setString(1, updatedProductInfo.getProductName());pstmt.setString(2, updatedProductInfo.getFactoryName());pstmt.setInt(3, updatedProductInfo.getProductKind());pstmt.setString(4, updatedProductInfo.getProduceDate());pstmt.setFloat(5, updatedProductInfo.getSalePrice());pstmt.setString(6, updatedProductInfo.getProductImage());pstmt.setString(7, updatedProductInfo.getId());returnResult = pstmt.executeUpdate();}catch (SQLException e){System.out.println(e.getMessage());}}finally{try {con.close();} catch (SQLException e) {e.printStackTrace();}}if(returnResult ==0){return false;}else{return true;}}12、编程Action类中的updateProductForm方法以响应修改表单的请求(1)将Action类从字段驱动的Action改变为模型驱动的Action(2)updateProductForm方法的代码public String updateProductForm(){/*** 将表单对象中的各个数据转存到PO实体类对象中*/ProductInfoPO updatedProductInfo=new ProductInfoPO();updatedProductInfo.setFactoryName(oneProductInfo.getFactoryName());updatedProductInfo.setId(oneProductInfo.getId());updatedProductInfo.setProduceDate(oneProductInfo.getProduceDate());updatedProductInfo.setProductImage(oneProductInfo.getProductImage());updatedProductInfo.setProductKind(oneProductInfo.getProductKind());updatedProductInfo.setProductName(oneProductInfo.getProductName());updatedProductInfo.setSalePrice(oneProductInfo.getSalePrice());boolean returnUpdateResult = productInfoDAOServiceImple.doUpdateProductInfo(updatedProductInfo);String gotoTargetPage=null;if(returnUpdateResult){/*** 如果修改成功,则再次查询数据,并显示出修改查询后的新的结果数据*/gotoTargetPage =queryProductInfo();}else{gotoTargetPage ="gotoShowError";}return gotoTargetPage;}13、测试本示例目前的功能实现效果。
《J2EE系统架构和程序设计》课程设计实训项目——基于S2SH架构的销售管理系统项目工作总结及心得体会
《J2EE系统架构和程序设计》课程设计实训项目——基于Struts2 +Spring +Hibernate架构的销售管理系统项目工作总结及心得体会通过一段时间紧张的学习,从初期对J2EE知识的不了解,到逐步配置好环境,并在老师的引导下不断学习,不断深入。
跟随着老师制定好的时间规划,我们也尽我们所能努力完成各项工作。
我们组从初期的三个人,到中期的四个人,人员数量和技术能力的薄弱以及自身的不足让我们在实际工作中存在的一些没能跟上开发进度、没能按时提交文档及相关材料的情况,我们是愧疚的,还望老师能够见谅。
但我们的确是十分认真地投入到整个项目的过程中,尽自己所能完成各项任务。
在最后一次的文档提交中,我们也将所有的文档补齐。
确保项目完整性。
在我们项目开发的过程当中,我们深切地感受到了自身对于成为一个合格软件项目工作者,还有很大的差距。
不论是从知识层面,还是从软件工程思想上。
不论是代表着项目经理的组长,还是具体从事分析和技术把关的技术总工,以及负责具体开发和后期测试的相关同志们,都还有很多的欠缺和不足。
也十分庆幸有这样的一次机会能够重新审视项目开发,去了解一个软件、一个系统的最终呈现在用户面前的背后,它的过程、它的后台、负责开发它的团队组成和职能分工。
知识是可以学习的,但更重要的是形成一种项目的整体思想和意识。
一个完整的项目开发不仅仅是代码的编写,规范化、标准化的代码编写习惯、文档记录和版本控制的习惯也是十分重要的。
前期全面细致的系统分析和设计规划,从很大程度上明确了系统各部分功能划分,增强了逻辑性,简化了代码编写的复杂性和不明确性,提高了开发效率,节省了开发时间。
然而在项目开发的工程当中,对于一个团队,团队精神和协作能力的培养也贯穿在了我们整个项目开发的过程当中,如何处理好团队内部关系以及协调成员们的时间安排,也成为了项目组长必须研究的一个课题。
如何能够充分调动组员们的积极性,以最好的精神状态主动地参与到项目开发中,把项目的每一个进展当做自己的一点进步,当成生活的一部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《J2EE系统架构和程序设计》课程设计实训项目——基于Struts2 +Spring +Hibernate架构的客户资料信息分析系统需求规格说明书1.1.1引言1、编写目的本项目需求说明书详细地描述了这款正大商业集团CRM系统预期实现的各项功能,并提供UML用例图及详细的用例描述。
本文档的编写为项目开发人员下阶段的设计、开发提供依据,为项目组成员对需求的详尽理解,以及开发过程中协同、高质、高效的工作提供强有力的保证。
同时本文档也作为项目评审验收的依据之一。
本文档的主要读者为正大商业集团CRM系统项目小组成员及正大商业集团工作人员。
2、项目背景待开发的软件系统为正大商业集团CRM系统客户资料信息分析子系统。
本项目的提出者为正大商业集团高层管理部及系统开发部,开发者为蓝梦大学软件学院J2EE课程实训项目开发组,用户为正大商业集团员工。
3、术语定义(1)CRMCustomer Relationship Management,客户关系管理系统。
本文档中“用户”即指本系统的使用者,“客户”则指正大商业集团的客户。
(2)抱怨业务指如果客户在消费后对本次消费的产品或服务有意见,需要客户服务部门的人员进行处理。
抱怨业务的处理工作由户服务部门的人员完成。
(3)客户级别根据客户的消费总金额,按照一定的计算和判定方法,得出的客户级别。
客户级别的计算方法可分为两种,分别为按消费金额和消费密度。
按消费金额可将客户分为普通消费者、会员,在此基础上,在对会员按消费密度进行分类,则会员又可分为普通会员和VIP 会员。
根据客户级别的不同,销售部门会对其采取不同的销售优惠政策。
消费关注点分析的统计柱状图或饼状图:通过对客户消费历史中各次消费的产品类别及消费金额进行统计,从而得出消费金额关于消费产品类别的统计柱状图或饼状图。
(4)消费密度某一客户的消费总金额/(最后一次消费时间—第一次消费时间),单位:元/天。
4、参考资料(1)J2EE项目实训Hibernate框架技术(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社 2008 年5月(2)J2EE项目实训Spring框架技术(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社 2008 年5月(3)J2EE项目实训UML及设计模式(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社 2008 年5月(4)J2EE项目实训Struts框架技术(21世纪高等学校实用软件工程教育规划教材)杨少波编著清华大学出版社2008 年10月(5)《精通Struts设计与开发》作者:孙卫琴电子工业出版社(6)《Spring从入门到精通》作者:郭锋清华大学出版社(7)《Hibernate开发技术祥解》作者:孙卫琴电子工业出版社(8)《J2EE应用开发技术祥解》作者:刘晓华电子工业出版社(9)《设计模式》作者:Erich Gamma等机械工业出版社1.1.2任务概述1、目标客户是一个公司最宝贵的资源,如何更好的发掘老客户的价值,同时开发更多的新客户,对一个公司的发展至关重要。
以客户为中心,为客户提供高质量服务,从而获取较高的客户满意度和忠诚度,是企业最重要的核心竞争力,也是企业在竞争中立于不败之地的根本保证。
本CRM系统之客户资料信息分析子系统的开发目的就是实现对客户基本信息、联系信息、身份信息、消费信息等重要客户资料的规范化管理,并通过对客户资料科学合理的分析,把客户信息有效的转化为客户知识,帮助正大商业集团正确的进行客户消费预测、客户满意度管理、客户反馈管理、客户流失预测等工作,设计更优的市场营销策略,提高销售部门的工作质量和效率,从而为客户提供最适合的一对一优化服务,以进一步提高企业的市场竞争力。
目前,企业之间的竞争正逐步从生产竞争转向市场竞争和客户竞争,企业管理的重心也随之从传统的生产、物流、财务等内部管理转向全面的客户关系管理。
CRM(客户关系管理)系统源于以客户为中心的管理思想,是一种旨在改善企业与客户之间关系的新型管理模式的实现。
客户关系管理系统将切实改变企业的经营理念和手段,使原本各自为战的销售人员、市场推广人员、售后服务人员开始真正地协调合作,成为一支以客户为中心的强大团队。
作为客户资料信息分析子系统,本款软件与CRM系统的其他子系统有着紧密的联系,它将与其他子系统协同工作,更好的发挥CRM系统强大的企业工作管理功能。
2、用户的特点本软件的最终用户为正大商业集团的全体员工,其主要构成为商业管理人员,特点是对业务流程非常熟悉,但整体上计算机方面的专业知识相对缺乏,因此本软件在提供完善的业务处理功能的同时,将提供友好、易用、便捷的用户操作界面和简单的使用流程,以方便使用人员更好的进行操作,提高工作效率和质量。
3、假定和约束本软件的开发是以设定正大商业集团面对的主要消费群是以个体用户为单位的消费者为前提的。
本软件的开发期限为12周(20XX.XX.XX——20YY.YY.YY)。
1.1.3系统功能性需求规定1、对功能的规定(1)系统角色本系统主要有四类角色,分别对应于正大商业集团四个部门的员工:客户信息管理部门、销售部门、售后回访部门、客户服务部门,其中客户信息管理部门员工是本子系统的主要使用人员。
关于他们的具体的操作权限,将在各个功能模块的用例描述中详细介绍。
(2)信息内容构成本客户资料信息分析子系统涉及的客户资料主要包括以下信息:2、系统的功能模块3、用户登录用例的事件流说明4、新增客户用例的事件流说明5、删除客户用例的事件流说明6、修改客户信息用例的事件流说明7、显示所有客户资料用例的事件流说明8、按客户姓名查询用例的事件流说明9、按客户性别查询用例的事件流说明10、按客户年龄查询用例的事件流说明11、按客户职业查询用例的事件流说明12、按客户教育程度查询用例的事件流说明13、按客户收入情况查询用例的事件流说明14、按客户级别查询用例的事件流说明15、客户反馈信息登记用例的事件流说明16、抱怨业务查询用例的事件流说明17、抱怨业务处理用例的事件流说明18、按消费金额分类用例的事件流说明19、按消费密度分类用例的事件流说明20、客户满意度分析用例的事件流说明21、客户消费预测用例的事件流说明22、客户流失预测用例的事件流说明23、销售优惠活动群发邮件用例的事件流说明1.1.4系统非功能性需求1、精度本系统中输入的各种数据均要求精确到个位即可,采取“进一法”的处理方法。
2、时间特性的要求(1)搜索查询时间最大不超过5秒。
(2)页面平均处理及响应时间在1—3秒以内,最大不超过5秒。
(3)页面平均响应更新时间为2秒左右,最大不超过3秒。
3、灵活性(1)操作方式的变化如果正大商业集团的业务情况或业务逻辑出现变化,导致本系统需求发生变化,在可接受的范围内,要求本系统能够及时进行需求变更及各项相关的处理工作,实现新的需求。
(2)运行环境的变化本系统支持各种功能完善、成熟的浏览器(eg. IE、遨游等)。
(3)精度和有效时限的变化如果正大商业集团提出要求改变精度和有效时限,在可接受的范围内,接受其需求变更。
(4)计划的变化或改进在可接受的范围内,本系统的开发工作将积极配合计划的变化或改进。
4、输入输出要求本系统的输入数据类型主要是整形和字符串;输出以字符串、整形及各类图表为主。
5、数据管理能力要求根据正大商业集团市场部的调研结果,目前该集团的市场竞争力及企业实力正处在不断发展壮大的阶段,客户规模增加趋势明显,要求数据库的容量能够较好的适应数据规模的不断增加,以更好的完成系统的各项功能。
6、故障处理要求在用户执行任何一项提交动作之后、该动作完成后的下一页面或提示信息出现之前断开用户的电脑电源或网络连接,可能到时此项操作不成功,需要用户及时重新登录本系统查询操作结果,若为成功,请重新进行。
若系统中某些图表或图片无法正常显示,请用户检查所使用的浏览器版本及其所支持的显示功能。
在用户使用【群发邮件】功能时,请确保网络连接正常或符合要求,否则将导致发送邮件失败。
出现其他本文档中未提及的意外故障或用户无法解决的问题,请用户尝试推出本系统、关闭浏览器或重启电脑,重新登录本系统。
若仍无法解决,请及时与本项目开发小组人员联系。
7、其他专门要求根据正大商业集团的需求,补充其他专门要求如下:(1)系统具有较高的可操作性,简单易学,易于该公司的工作人员操作和使用,切实达到提高工作效率和质量的目的,不会给工作人员带来太大的学习负担。
(2)系统具有较高的可靠性,运行稳定,正确性高,系统错误率要在0.1%以下。
(3)系统的可维护性较好,方便日后对于系统的各种维护工作的进行。
(4)系统具有一定的保密性,确保公司的重要业务数据的安全。
(5)系统有良好的可补充性,保证日后对于系统其他功能的拓展开发工作的顺利进行。
1.1.5系统运行环境规定1、设备对运行本系统的台式计算机或笔记本电脑的硬件设备要求如下:(1)内存:512M及以上。
(2)客户端软件系统1)操作系统:Windows系列操作系统2)浏览器:各种功能完善、运行稳定的较为成熟点的浏览器(eg. IE、遨游等)均可。
(3)服务器端软件系统1)操作系统:Windows系列操作系统2)数据库:SQL Server数据库系统(4)开发环境MyEclipse + Tomcat + JDK 1.82、接口数据通信协议使用HTTP及TCP/IP协议。
3、控制系统通过网页的形式实现其各项功能。