平顶山学院本科毕业设计
为此,用户使用到留言功能模块。当登录用户进入某人的留言板时,可以在其留言板填写留言信息。该信息被提交后,留言将出现在对方的留言模块中,被留言用户可以查看对自己的留言,在查看之后可将其状态标注为已读,这样便能够区分已读和未读的不同类别的留言信息。在对无用的留言删除之后,该留言便不会出现在此用户的留言列表中。
5.1.5 公告管理功能的设计
管理员对于公告的管理要使用公告管理模块,主要是进行发布相关公告,或是删除公告。管理员进入发布公告界面,填写发布公告具体信息,提交信息后返回管理界面,提交删除请求可删除公告,提示删除成功后返回公告管理界面。公告管理功能对应的序列图如图5-7所示。
adminLoginFormControlDatabase1、填写公告信息 2、提交发布请求5、更新完成3、写入数据库4、更新数据库6、返回管理界面7、删除公告8、提交删除请求9、从数据库中删除11、更新完成10、更新数据库13、返回管理界面12、提示删除成功
图5-7 公告管理序列图
5.2 系统类的设计
根据MVC三层设计思想,可将系统分为视图层、控制层和模型层。系统使用Hibernate架构,使系统由传统的表示层、业务逻辑层和数据库层变为表示层、业务逻辑层、持久化层和数据库层这四大层次。于是,对于使用了Struts的三层MVC系统结合Hibernate的典型持久层操作,该系统可以大致认为分为四大层次,它们分别是视图层、控制层、模型层和持久化层,但是在通常情况下还是以三层架构的层次划分为主。因此,类设计主要是针对控制层、模型层及持久化层开展的,对该系统模块进行类级别的划分和设计。其类别主要分为:对数据库数据对象分析抽象形成的数据实体类,进行控制处理的核心处理控制类,调用处理相关数据的数据处理类和工具类这四大部分,其中,工具类包括过滤类和常用处理类这两个类。系统类的主要划分可见图5-8所示。
21
校园二手书交易平台的设计与实现
校园二手书交易平台数据实体类核心处理控制类数据处理类工具类
图5-8 类划分图
这些类按照其定义及属性划分,可以分属到模型、控制和持久三个层的部分当中。其中因为数据实体类是在持久层中进行对数据库的数据封装以及实例化的操作,它们可以归到持久化层当中去。而数据处理类是对数据进行增、删、改、查几种操作的规范化设定,以及部分逻辑业务处理,于是它们既属于持久化操作层又涉及模型层,起业务逻辑处理的功能。而核心处理控制类主要负责业务逻辑控制,它们可以被划入控制层当中,不过其本身也承担一部分业务逻辑处理能力,因此也可视作涉及模型层。它们的层次归属可以参考图5-9。
控制层C 核心处理控制类 数据实体类 持久化层 数据处理类 模型层M 工具类
图5-9 类所属层次划分
由类层次分析不难得出,使用Hibernate框架以联系持久化层和模型层的关键就是建立与数据库表对应的数据实体类,这些类具有和数据表相应的结构,是数据库表的直接反映。在实际的设计和实现中,通过对这些数据实体类的应用就可以达到原本对数据库表直接操作的效果。主要数据实体类的功能如下所述。 1. AdminInfo类对应数据库中的管理员表,是管理员表的映射实体。主要用于记录管理员的主要信息包括管理员名称和密码。
2. userInfo类对应用户表,主要记录用户的主要信息,这些信息主要包括用
22
平顶山学院本科毕业设计
户名,密码,真实姓名,性别,年龄,密保问题,答案,QQ号,邮件,电话,地址,班级号。
3. BegToBuy类对应求购信息表,主要记录求购图书的主要信息,这些信息主要包括图书名称,求购者,图书信息,备注说明,发布时间。
4. BookInfo类对应图书信息表,主要记录二手图书信息,这些信息主要包括图书名称,图书类别,作者,出版社,价钱,图片,发布者,折旧程度,出售价格,附加信息,出售状态,发布时间。
5. MsgInfo类对应留言信息表,主要记录留言的主要信息,这些信息主要包括标题,内容,留言者,留言对象,留言时间,是否已读。
6. BulletinInfo类对应公告信息表,主要记录公告的主要信息,这些信细主要包括公告标题,内容,发布时间。
系统类图主要用于描述系统中核心类的主要属性特征以及它们之间的关联,如此可以更清晰地洞察到系统中实体之间相互作用[17-18]。主要实体类如图5-10所示。
公告-title : String-contents : String-pubDate : Date+setter()+getter()n管理员-adminName : string-adminPwd : string+setter()+getter()11用户-Name : string(idl)-Pwd : string(idl)-trueName : String-sex : String-question : String-answer : String-qq : String-email : String-phone : String-adress : String-class : String+setter()+getter()1n留言-msgTitle : String-msgContent : String-fromUser : String-toUser : String-pubDate : Date-hasRead : String+setter()+getter()n1n出售图书-bookName : String-Type : String-author : String-publisher : String-price : int-cover : String-user : String-depreciation : String-saleprice : int-isSale : String-puDate : Date+setter()+getter()n1求购-bookName : String-bookInfo : String-pubDate : Date-user : String+setter()+getter()n11n
图5-10 主要实体类图
23
校园二手书交易平台的设计与实现
实体类是建立持久层和模型层联系的关键,但对整个系统而言,处理数据流向和调用处理方法的核心是控制类,这些类的实例化对象负责对整个系统的用户数据进行方法调用处理,根据不同请求转向不同业务处理流程以得到相应处理结果。可以说,核心控制类是整个系统得以正常工作的保证,脱离了控制类的工作系统就会如同没有指挥官的飞船一般,将会偏离预设的运行轨道。主要核心控制类的功能如下所述。
1. AdminpwdAction:该类用于实现管理员登录和修改密码,通过验证管理员输入信息是否正确实现管理员登录,通过调用AdminInfoDAO类的merge方法连接数据库更新用户的密码属性。
2. SearchAction:该类用于搜索图书的信息,通过调用BookInfoDAO类的searchByBookName, searchByAuthor, searchByPublisher三个方法实现与数据库中信息匹配,通过连接数据库返回满足条件的图书列表。
3. UserLoginAction:该类用于检测用户是否成功登录,用户输入用户名、密码封装在loginForm表单中,通过该类通过调用UserInfoDAO类中checkUserLogin方法连接数据库检测用户是否登录成功。
4. BegAction:该类通过调用BulltinInfoDAO类中findHotBulletinInfos方法连接数据库获得最新公告。通过调用BegToBuyDAO类中的findNewstBuys方法连接数据库实现在首页显示最新的求购信息。通过调用BegToBuyDAO类中的findMyBegToBuys方法连接数据库实现用户查看自己的求购图书。通过调用BookTypeDAO类中的findAll方法和数据库连接实现查看所有图书信息。
5. MsgDetailsAction:该类用于管理留言。通过调用MsgInfoDAO类中的getUnReadMsgCount(),getUnReadMsgInfos(),getReadMsgInfos()三个方法和数据库连接分别实现对未读留言的数量统计,查找未读留言信息,查找已读留言信。
6. UpdateSelfInfoAction:该类用于修改用户的信息。先通过修改页面来进行用户信息的修改,通过表单类selfInFormform获取修改后的信息,再赋值给UserInfon类的一个对象,最后调用Dao类的findByExample方法将修改后的用户信息更新数据库的用户表。
7. BookDetailAction:该类用于发表图书。用户填写图书详细信息提交后封装在bookDetailsForm表单中,通过DAO层与数据库映射,图书信息完整,通过
24
平顶山学院本科毕业设计
调用BookInfoDAO类中的findById()方法,连接数据库更新图书列表。
系统中还有很重要的一个类别,这就是作为公共调用工具的工具类,这些类没有特别的依赖性,完成的是辅助系统相关业务处理工作实施的任务。虽然其内容简单,但是却是不可或缺的系统重要组成部分。工具类的介绍如下所述。
1. EncodingFilter:该类是一个过滤器类,主要用来设置web服务使用的编码方式。
2. StringUntil:该类主要是对信息去掉首位空格的实现,主要方法有s.trim()。
5.3 系统的实现
5.3.1 注册登录功能
注册的用户填完必填信息点击提交便可注册,必填信息有空缺时提示对应项不能为空,填写信息时会检测用户名是否可用,用户名未被注册提示用户名可用,可继续填写信息,填写用户名已被注册会提示用户名不可用。输入密码时,两次输入要一致,有不同时提示密码输入不一致。
用户登录,首先将从前台页面提交的用户名和密码进行接受,之后在后台进行处理,按照用户名在数据库中进行查询如果查到该用户则将该用户的权限和密码全都取出来分别赋给两个字符串变量,判断从数据库中读出的密码与登录时输入的密码是否配比上,若两个密码相同则根据权限的值进入相应的页面,否则输出密码错误。注册界面如图5-11所示。
图5-11 用户注册界面
25