资源描述
郑州轻工业学院
实 训 报 告
2014-2015 学年第二学期
实训名称: SSH程序设计实训
学生姓名: 梁起
专业班级: 软件12-01
学 号: 521213460121
指导教师: 李春雨
实训周数: 2周
成 绩:
软件学院
郑州轻工业学院软件学院
学生实训任务书
一、题目
SSH程序设计实训
二、学生信息
专业 软件工程 学号 521213460121 姓名 梁起
三、用户需求及约束条件
1、功能需求:
①完成用户的注册功能,登陆功能,退出功能,用户自管理功能
②完成用户购买商品的功能,购物车管理功能.提交管理功能
2、性能需求:
①并发访问量达到1000人
②请求相应时间不得超过2S
3、应用程序开发要求:
①项目架构要采用标准的三层架构
②所用的技术必须包含SSH(struts2,sping,hibernate)
③集成开发工具采用eclipse
④代码工整,缩进合理,命名规范
四、设计要求、技术参数及设计规格
1、面向接口编程
2、项目模块化
3、文档注释规范,注释量要达到代码量的40%
4、代码排版风格参照Eclipse格式化后的结果
五、工作进度
天/日期
任务描述
通过标准
第1天
javaee开发环境的搭建
能够手动编写HelloWorld程序并且可以编译执行
第2天
数据库的设计
能够独立创建一套数据库,包含一对多,多对多,一对一的关系
第3天
项目三层框架的搭建
搭建出扩展性较强的框架
第4天
编写项目Dao层代码,融入hibernate技术
操作hibernate的API完成对表的增删改成操作
第5天
编写项目service层,融入Spring技术
调用service层方法完成对表的增删改成
第6天
编写项目view层,融入Struts2技术
通过浏览器发送请求,完成用户注册功能
第7天
用户自管理功能的实现
完成用户登录,退出,修改个人信息功能
第8天
购物车功能的实现
完成向购物车中天添加商品,修改购买数量,清空购物车,查看购物车等功能
第9天
订单管理功能的实现
完成订单的提交,查看,删除等功能
第10天
项目总体测试以及验收
尽可能少出现bug
六、考核形式、考核指标及成绩评定
1、实训结束前以名为“学号后两位_姓名”的压缩包形式提交实训成果,内容包括:
(1)商场信息管理系统项目文件夹.
(2)实训报告文档
2、实训报告要求按以下顺序装订:
l 封面
l 任务书
l 目录
l 实训报告正文
l 附录
3、成绩评定:考勤(20%)+作品(50%)+实训报告(30%)
完 成 期 限:**** 年 * 月 ** 日
指导教师签章:
专业负责人签章:
教学院长签章:
**** 年 * 月 ** 日ﻬ目 录
1 **** 1
1。1 ***** 1
1。1.1 ********** 1
1。1.2 ********* 1
1.2 *******ﻩ1
2 **** 3
2.1 ****** 3
2。2 *****ﻩ3
3 **** 4
3.1 *********ﻩ4
3。2 ********* 4
3。3 ********* 4
4 **** 5
5 实训感想ﻩ6
6 附录ﻩ7
1 系统分析
1.1 系统背景
轻社团是针对郑州轻工业学院在校已经注册的20多个社团实现无纸化招新而设计的。轻社团目标可以满足所有对郑州轻工业学院社团以及各个院系各个专业想要了解的时候,在5分钟内得到充分的了解。如果对自己感兴趣的社团,可以实现在线报名,免去了招新时大量的纸质宣传单和报名表的铺张浪费,实现无纸化招新。
1。1.1 社团招新现状
据不完全调查数据表明在校注册在案的社团有23个,每个学期初招新时每个社团会分发2000份宣传单和500分招新表。但这2000份宣传单并不能很好的起到宣传效果,甚至有的同学在社团里呆了近半年还不知道社团的业务流程。如此大量的纸张消耗和惨淡的宣传效果收益反差是令人不能接受的。
1.1.2 招新流程分析
新生刚到大学很难很快的了解一个社团。除了名气比较大的社团(如:艺术团、记者团、学生会)新生刚入学的就能很快的了解。每年招新时每个社团分发的大量招新表宣传效果惨淡原因有三个:第一宣传单仅限于一张A4的文字承载量,信息有限;第二宣传单信息内容过于单一(没有图片、视频)新生很难在短时间内了解;第三在校注册的社团太多太乱新生很难在段时间内对所有的社团有一个较为详细的了解,从而很难根据自己的兴趣和社团的硬件配置做出选择。
1。2 系统要求
本文档仅针对于轻社团第一个版本(V1.0),仅服务于郑州轻工业学院约3万在校生。高峰期并发量在1000左右,平时并发量在100以内。
1.2.1 硬件以及支撑软件要求
项目
要求
备注
操作系统
WindowsServer2008
服务器
Tomcat7.0
JDK
1.7
CPU
Xeon E3-1230 v3
或更高
内存
DDR3 8GB
硬盘
1TB
或更高
数据库
MySQL5。0
开发工具
Eclipse
1。2。2 软件以及架构要求
系统采用SpringMVC+Spring+MyBatis三层架构,提升系统架构的灵活性便于后续版本.用户界面设计要求简介大方,配色要求符合现在潮流元素。
ﻬ2 系统设计
2。1 ******
图和图名居中。图名小四号宋体,1.5倍行距,位于图下方居中,图中内容楷体五号,1倍行距。图要在上下文中引用。
**********************************************************************************.
2.2 *****
**********************************************************************如图2-1所示。
ﻬ3 系统实现
**************************************************************************
3.1 数据库实现
用户信息表(userInfo)包含最基本的用户信息
字段
说明
数据类型
ID
主键
INT
STUID
学号
bigint
NAME
姓名
Varchar
PASSWORD
密码
Varchar
BRITHDAY
生日
datetime
SEX
性别
Int
HEADPICURL
用户头像路径
Varchar
HOBBY
爱好
Varchar
GOODAT
擅长
Varchar
SIGNATURE
签名档
Varchar
EMAIL
电子邮件地址
Varchar
作品表用来存放用户的作品信息
字段
说明
数据类型
ID
主键
Int
UserID
用户信息表的外键
Int
url
作品路径
Varchar
新闻表用来存放发布的新闻
字段
说明
数据类型
ID
主键
Int
TITLE
新闻的标题
Varchar
PublishDate
发布的日期
Datetime
Coment
新闻的主题内容
Varchar
AUTHOR
作者,社团表的外键
Int
评论新闻表用来存放评论的新闻信息
字段
说明
数据类型
ID
主键
INT
PUBLISHDATE
发布的日期
Datetime
AUTHOR
评论者,用户信息表的外键
Int
Content
评论的内容
Varchar
FLOOL
楼层
Int
REPLY
回复的楼层
Int
评论帖子表用来存放评论的帖子信息
字段
说明
数据类型
ID
主键
Int
Publishdate
发布的日期
Datetime
AUTHOR
发布者,用户信息表的外键
Int
Content
发布的内容
Varchar
Floor
楼层
Int
REPLY
回复的楼层
Int
社团表用来存放社团的基本信息
字段
说明
数据类型
ID
主键
Int
NAME
社团的名称
Varchar
SYNOPSIS
社团简介
Varchar
EMAIL
社团邮箱
Varchar
ADDRESS
社团联系地址
Varchar
PHONE
社团联系电话
Bigint
SINGATURE
社团签名档
Varchar
Keyword
社团管家暗自
Varchar
ADMIN
社团管理员,管理员表的外键
Int
帖子信息表用来存放帖子的基本信息
字段
说明
数据类型
ID
主键
Int
AUTHOR
帖子的作者,用户信息表的外键
Int
BELONGTO
指定发布的社团,社团的外键
Int
PUBLISHDATE
发布的日期
Datetime
TITLE
标题
Varchar
COMENT
发布的内容
Varchar
管理员表,有一个超级管理员和若干个社团管理员
字段
说明
数据类型
ID
主键
Int
USERNAME
账户名
Varchar
PASSWORD
密码
Varchar
LEVE
等级为1表示超级管理员2表示社团管理员
Int
3。2 首页实现
首页要展示定置的三则新闻消息,每则消息要求有一个标题、简短的文字描述和一副背景图片。三则消息可以自动或手动的切换,用户可以点击标题进入消息的详情页面。
在顶置消息的上面是菜单导航栏,菜单导航栏包含最受欢迎的社团,这个下拉菜单打开后有三个最受欢迎的社团,和一个更多按钮,点击最受欢迎的三个社团进入对应的最受欢迎的三个社团,点击更多进入所有社团的列表.另外还有活动和新闻两个按钮.在导航栏的右边是用户登录的信息,如果用户没有登录会提示用户“请登录”,如果已经登录了会显示用户名和用户新收到的消息个数。在用户登录信息的左边有一个输入框,用户可以输入对应的关键字搜索对应的社团,为了用户交互界面的简洁性没用设置提交按钮,用户在输入完成后点回车键即可进行搜索.
在顶置消息的下面是“热门活动”的列表。热门活动列表是一个表格形式的。表头由“编号”、“标题"、“发布的社团”、“发布时间"组成.这个表格最多能容纳十条信息。多余的信息会在“热门活动"列表的下面有个分页栏里面,点击对应的页面显示对应的信息.
3。3 登录注册实现
为了方便用户的体验和使用,登录按钮始终停靠在导航栏的右上角.在登录之前右上角显示的“请登录".如图,这时候点击“请登录"会自上而下弹出一个用户登录的登录框,登录框分为两个选项卡:登录、注册。登录选项卡要求用户输入学号和密码点击登录就可以登录了。如果学号或密码错误会给予对应的提示。
如果已经登录成功了,会显示用户名和用户没有读取的消息个数,这时候点击用户名可以跳转到对应用户信息详情界面。为了增加用户体验度,这个弹窗的所有输入框都采用Bootstrap的悬浮输入框:当输入框获得用户的光标焦点以后和输入框绑定的标签会向上悬浮并逐渐缩小.为了更加用户交互界面的简洁,输入框只用下边框并且当输入框获得用户的光标以后下边框由灰色变成清亮的蓝绿色.所有边框只用一个像素。
3.4 超级管理员实现
超级管理员拥有整个系统的最高权限,但是负责的业务逻辑相对简单。超级管理员不参与任何系统具体的业务逻辑,他只负责管理首页的信息维护,用户信息的维护包含添加和删除,社团信息的维护,包含添加、修改密码和删除。为了系统的安全性,超级管理员的每步操作都要有对应的日志记录,日志记录包含登录的IP,登录的物理主机地址,登录的时间,每次操作的记录。超级管理的登录界面是和用户的登录界面分开的,同样的这样提高了系统的安全性。超级管理员的密码在数据库中是经过了两次MD5加密,即便是数据库被破解了也没人能猜得出超级管理员密码的真实密文
3。5 社团管理员实现
社团管理员由超级管理员在新建一个社团的时候会分配一个主社团管理员账号,一个主社团管理员账号可以再进入系统新建两个副社团管理员账号。主社团管理员账户和副社团管理员账号的功能、权限完全一样。只不过主社团管理员的账户密码如果丢失要找超级管理员修改密码,而副社团管理员可以由主社团管理员删除或者副社团管理员的密码丢失的时候而且账户邮箱失效的时候可以用主社团管理员直接修改账户密码。每个社团可以在首页展示3则顶置的消息首页要展示定置的三则新闻消息,每则消息要求有一个标题、简短的文字描述和一副背景图片。三则消息可以自动或手动的切换,用户可以点击标题进入消息的详情页面。对于社团的基本信息维护主社团管理员和副社团管理员都有维护权限.当然,主社团管理员和副社团管理员也可以点击发布消息填写对应的消息的标题内容后发布,主社团管理员和副社团管理员还可以点击发布新闻。如果用户投递给了某个社团自己的简历,社团主社团管理员和副社团管理员登录后就可以查看并处理对应的信息。
3。6 社团首页实现
社团首页有一个展示顶置的三则新闻消息,每则消息要求有一个标题、简短的文字描述和一副背景图片.三则消息可以自动或手动的切换,用户可以点击标题进入消息的详情页面.
顶置消息的上面是社团导航栏,导航栏最左边是社团标志性logo,和社团的全称名字。从左到右依次是最近活动:用于显示三则最近发布的活动消息和一个更多按钮用于显示所有活动消息;作品:用于显示社团做过的活动或者一些做出的成品(如:大学生IT创新工作室的App作品、花艺协会的花艺);成员:用于展示社团已经有的成员信息;讨论区:这个是社团的内部论坛,用户可以发布帖子供大家讨论;投递简历:当用户对这个社团比较感兴趣的时候可以投递自己的简历加入这个社团.
3。7 个人信息展示以及修改实现
3。8 论坛实现
3。9 活动新闻实现
3。10 找回密码实现
3。11 搜索功能实现
4 项目总结
这次实训遇到很多问题,总的来说应该是大三后半年太懒惰了没有怎么写代码造成的。项目在采用SpringJDBC访问数据库的时候数据映射并不友好,甚至还需要手动进行数据类型的转换.但是Hibernate又显得太笨重了,所以我决定采用MyBatis试试.这个项目是一个迭代性很强的项目.又有很大的商业价值,我会利用大四剩下的时间不短的完善这个项目直到它成为一个优秀的毕业设计为止.
5 实训感想
这次实训时间太短了,轻社团是我一个同学委托我为学校社团做的一个应用。当我听了他的想法以后,我就感觉这不是一个简简单单的招募应用。招募在上面的功能一定程度上来说被我弱化了。我的灵感来自于,我大一的时候呆了半年的社图竟然不知道是干什么的。我完全是被同学拉进来的.新生刚到学校各个社团就疯抢新生资源,难免会为双方的不协调造成误解.于是我深入分析,招新分为两个部分:宣传的志愿填报。Web交互的独特优势在现在这样的HTML5时代更是阐释的淋漓尽致,滑动的图片,清新亮丽的文字,视频这些都是其他传统媒介所不具备的。当然,我这个系统也侧重于宣传,在线填报志愿是很弱的一个功能.这次实训我没有按照老师教的SSH三大框架来做 这个系统,而是表示层选择安全性更加高的SpringMVC,持久层选用非常轻量级的SpringMVC.还有很大一部分功能需要完善,我打算利用好这个暑假完善剩下的部分,另外争取把安卓端也做出来成一个完整的App.对于大四上半年的规划更多偏向于安卓App的开发,下半年择取机会学习IOS的App开发。逐渐向自己的目标:移动互联网方向前进。
6 附录
6。1 Java简介
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统.这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1。2版。目前常用的Java平台基于Java1。6,最近版本为Java1。8。
6。2 Java Web 简介
Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力.
6。3 Spring简介
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发.从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益.Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull—stack(一站式) 轻量级开源框架。
6.4 SpringMVC简介
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Sring进行WEB开始时,可以选择使用Sring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。考虑到项目后期会采用大量的异步请求,SpringMVC在异步请求上安全性更可靠故采用SpringMVC
6.5 jQuery简介
jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。
jQuery是免费、开源的,使用MIT许可协议.jQuery的语法设计可以使开发者更加便捷,例如操作文档对象、选择DOM元素、制作动画效果、事件处理、使用Ajax以及其他功能.除此以外,jQuery提供API让开发者编写插件。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页
6。6 Bootstrap简介
Bootstrap,来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。[1] 它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。[2] 国内一些移动开发者较为熟悉的框架,如WeX5前端开源框架等,也是基于Bootstrap源码进行性能优化而来
8
展开阅读全文