博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文章底部 有源码下载获取地址
文章开始 献上系统美照
开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。
技术可行性分析软件产业经过多年的发展,现在已经达到了很大的规模,从事软件开发的专业人员不计其数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心地位。本系统基于的架构,目前技术已经非常的成熟,是不存在技术上面难以实现的麻烦。
经济可行性分析开发软件所需的时间、人力和物力成本,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等进行深入的考虑,都符合实际的要求。所以宠物猫店管理系统具有经济可行性和实用性,可以节约管理成本
功能需求分析宠物猫店管理系统主要是为了更加地完善宠物猫店的情况,对用户的信息、猫猫用品、订单中心、会员中心、服务中心、服务分类、预约管理等提供了方便的机制。本系统有多类使用者,分别是管理员和用户注册。以下是从这两种用户的角度分别介绍本系统所要实现的功能。
用户:
注册:首先检查用户名和邮箱是否存在,如不存在即可进行注册,并将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户信息保存到数据库中。
登录:使用宠物猫店管理系统前是需要用户登录个人账号。
宠物资讯:用户登录宠物猫店管理系统首页时,可以浏览宠物资讯信息,根据不同地宠物可以查看每个不同宠物饲养地方式等,还可以将自己感兴趣的资讯点赞以及加入收藏列表中。
会员中心:用户可以在系统中的宠物信息栏内搜索宠物信息,具体包括:封面图、标题、分类、标签等。
猫猫用品:用户可以浏览猫猫用品,可以自行搜索某样猫猫用品相关详情。具体功能需求如下:猫猫用品搜索:前台用户可以直接在前台输入框内输入关键词进行搜索,页面弹跳出对应猫猫用品信息。
服务中心:用户可以查看宠物服务信息表的宠物状态,可以根据宠物状态发起服务申请:包括填写活动标题、内容、要求、图片。
管理员:
用户管理:对用户进行管理,用户的注册,包括用户昵称、用户名、用户的宠物信息(宠物类别、宠物性别、年龄等)用户的账号信息:
猫猫用品:增加与猫猫用品相关的信息,对用品进行列表,列表信息包括:商品编号、商品名称、商品图片、商品价格、商品库存、商品规格、商品详情。
订单列表管理:
(1)按购买订单编号查询购买订单;
(2)查看购买订单详情;
(3)支付情况;
非功能需求分析系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。
用例分析1.普通用户主要使用宠物猫店管理系统,下图所示为普通用户的用例
图3-1 普通用户用例图
2.管理员主要负责用户管理、猫猫用品、订单中心、会员中心、服务中心、服务分类、预约管理,下图所示描述管理员的用例图。
图3-2 管理员用例图
业务流程分析系统业务流程图如下所示。
图3-3 系统业务流程图
业务流程图(TFD)通过一些特定的符号描述业务的处理过程,它重点强调业务过程中每一项处理活动和具体业务部门的关系,选择部分模块进行具体描述。重点对本系统整体业务中最为主要的宠物交易及订单业务进行描述,用户进入宠物猫店管理系统后进行各种模块信息的浏览,选择想要购买的宠物添加到购买订单,对宠物饲料下单,用户确认购买、填写订单信息,另外,管理人员进入后端管理,以执行该订单信息控制模块的相关管理方法,并在解决后向客户提供反馈机制。
数据流程分析如下为系统的顶层数据流图,外部实体有用户和管理员,分别对系统输入数据,从而得到要输出的数据。
图3-4系统顶层数据流图
如下图所示为系统底层数据流图。
图3-5系统底层数据流图
宠物猫店管理系统底层数据流图主要描述系统底层模块的数据流、数据载体、数据处理、外部实体的具体交互。本系统就是管理员和普通用户在用户管理、宠物管理、疫苗药物管理、订单列表管理、下单管理、会员信息管理等模块上的数据交互。
系统设计 系统架构设计本系统架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
图4-1系统架构图
系统功能结构为了将系统从“做什么”落实到“怎么做”,基于系统设计原则,对系统功能进行更适合编码实现的功能划分。根据上图的系统架构设计,整理出规范的系统功能结构图,为系统的实现编码做好准备。
如下图所示为系统功能结构图。
图4-2系统功能结构图
功能模块设计用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户信息,得到自定义生成账号后,注册完成。未注册用户注册的活动图如下图所示。
图4-3未注册用户注册活动图
用户可进行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码信息进行核对验证,验证成功则页面直接显示登录用户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。
图4-4用户登录活动图
用户登录后,进入功能页面,可对自己的信息进行管理,包括个人信息,公告栏、宠物资讯、猫猫用品、会员中心、服务中心。用户使用功能活动图如下图所示。
图4-5用户使用功能活动图
用户功能界面可对自己的密码进行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。
图4-6修改密码活动图
数据库设计宠物猫店管理系统采用的数据库是MySQL,该部分将根据系统需求和设计,设计合理的数据库。本系统考虑到之后系统的扩展集群,数据库将不使用外键。此外,不用外键时数据管理也较为简单,操作更加方便,性能更高。
E-R图E-R图,更加直观的告诉开发人员系统的各个数据的属性,各个数据之间的联系,各个数据的类型。能通过该模型更直观地了解数据库的设计,并根据对其逐渐改善。
本系统图设计,如下图所示。
图4-7系统E-R图
表结构设计本系统根据第三范式的思想设计数据库,减少最大程度的冗余,总共建立有多个表,用户注册表、管理员表、招聘员工表、宠物信息表、遗弃宠物表、活动中心表、会员信息表、疫苗药物表、志愿者申请表等。
表结构如下所示。
user_registration表:
名称
类型
长度
不是null
主键
注释
user_registration_id
int
11
是
是
用户注册ID
user_account
varchar
64
是
否
用户账号
gender
varchar
64
否
否
性别
age
varchar
64
否
否
年龄
membership_level
varchar
64
否
否
会员等级
member_discount
varchar
64
否
否
会员折扣
examine_state
varchar
16
是
否
审核状态
recommend
int
11
是
否
智能推荐
user_id
int
11
是
否
用户ID
create_time
datetime
0
是
否
创建时间
update_time
timestamp
0
是
否
更新时间
service_classification表:
名称
类型
长度
不是null
主键
注释
service_classification_id
int
11
是
是
服务分类ID
service_type
varchar
64
否
否
服务类型
examine_state
varchar
16
是
否
审核状态
recommend
int
11
是
否
智能推荐
create_time
datetime
0
是
否
创建时间
update_time
timestamp
0
是
否
更新时间
service_centre表:
名称
类型
长度
不是null
主键
注释
service_centre_id
int
11
是
是
服务中心ID
service_type
varchar
64
否
否
服务类型
single_price
varchar
64
否
否
单次价格
shop_address
varchar
64
否
否
店铺地址
contacts
varchar
64
否
否
联系人
contact_number
varchar
64
否
否
联系电话
remarks
text
0
否
否
备注
examine_state
varchar
16
是
否
审核状态
recommend
int
11
是
否
智能推荐
create_time
datetime
0
是
否
创建时间
update_time
timestamp
0
是
否
更新时间
order_center表:
名称
类型
长度
不是null
主键
注释
order_center_id
int
11
是
是
订单中心ID
order_number
varchar
64
否
否
订单编号
commodity_number
varchar
64
否
否
商品编号
trade_name
varchar
64
否
否
商品名称
commodity_price
varchar
64
否
否
商品价格
membership_level
varchar
64
否
否
会员等级
member_discount
varchar
64
否
否
会员折扣
purchase_quantity
int
11
否
否
购买数量
total_price
varchar
64
否
否
总价格
user_account
int
11
否
否
用户账号
order_date_
date
0
否
否
下单日期
examine_state
varchar
16
是
否
审核状态
pay_state
varchar
16
是
否
支付状态
pay_type
varchar
16
否
否
支付类型
recommend
int
11
是
否
智能推荐
create_time
datetime
0
是
否
创建时间
update_time
timestamp
0
是
否
更新时间
membership_center表:
名称
类型
长度
不是null
主键
注释
membership_center_id
int
11
是
是
会员中心ID
member_number
varchar
64
否
否
会员编号
member_nickname
varchar
64
否
否
会员昵称
membership_level
varchar
64
否
否
会员等级
member_discount
varchar
64
否
否
会员折扣
user_account
int
11
否
否
用户账号
examine_state
varchar
16
是
否
审核状态
recommend
int
11
是
否
智能推荐
create_time
datetime
0
是
否
创建时间
update_time
timestamp
0
是
否
更新时间
cat_products表:
名称
类型
长度
不是null
主键
注释
cat_products_id
int
11
是
是
猫猫用品ID
commodity_number
varchar
64
否
否
商品编号
trade_name
varchar
64
否
否
商品名称
product_picture
varchar
255
否
否
商品图片
commodity_price
varchar
64
否
否
商品价格
merchandise_inventory
varchar
64
否
否
商品库存
commodity_specifications
varchar
64
否
否
商品规格
product_details
text
0
否
否
商品详情
hits
int
11
是
否
点击数
praise_len
int
11
是
否
点赞数
examine_state
varchar
16
是
否
审核状态
recommend
int
11
是
否
智能推荐
create_time
datetime
0
是
否
创建时间
update_time
timestamp
0
是
否
更新时间
booking_management表:
名称
类型
长度
不是null
主键
注释
booking_management_id
int
11
是
是
预约管理ID
service_type
varchar
64
否
否
服务类型
shop_address
varchar
64
否
否
店铺地址
contacts
varchar
64
否
否
联系人
contact_number
varchar
64
否
否
联系电话
single_price
varchar
64
否
否
单次价格
service_times
int
11
否
否
服务次数
total_price
varchar
64
否
否
总价格
time_of_appointment
date
0
否
否
预约时间
user_account
int
11
否
否
用户账号
examine_state
varchar
16
是
否
审核状态
pay_state
varchar
16
是
否
支付状态
pay_type
varchar
16
否
否
支付类型
recommend
int
11
是
否
智能推荐
create_time
datetime
0
是
否
创建时间
update_time
timestamp
0
是
否
更新时间
系统实现 开发工具系统中应用的开发工具总结如下表所示。
表5-1开发工具
名称
工具
版本
操作系统
IDE(Integrated Development Environment)
Windows
Eclipse
7/8/10
2017
服务器
Tomcat
9.10.7
JDK(Java Development Kit)
JDK
Java SE 8.0 (1.8.0)
数据库
浏览器
界面工具
MySQL
谷歌
Photoshop
5.7
6.0
2016
注册模块未注册用户在用户注册界面uerRegister.jsp,输入新用户信息,点击注册后,新用户信息由界面传入控制层userAction,调用addUser(user)方法,通过userDAOImp向数据库用户表插入用户信息,由于用户账号是自动生成的,若成功则反馈注册成功,并提示新用户的用户账号;若失败则回到登录界面,并显示登录失败。
注册界面如下所示。
图5-1注册界面
用户注册关键代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
登录/注销模块用户在首页点击登录,进入用户登录界面uerLogin.jsp,输入用户账号和密码,点击登录,用户账号和密码信息由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜索该用户账号与密码,将最终结果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。
用户点击注销,清空浏览器session值,然后返回登录页或者首页。
登录界面如下所示。
图5-2登录界面
登录界面关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
用户模块 个人资料模块登录用户在首页点击进入用户中心userCenter.jsp,再点击修改个人信息按钮进入userChangeInfo.jsp界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户信息,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户信息并将用户信息以对象的形式层层返回到userChangeInfo.jsp界面,显示出当前用户的个人信息。
若用户要对个人信息进行修改,则通过修改当前信息之后点击确认,向控制层userAction发送更改后的用户信息,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户信息,若成功则反馈注册成功,则返回的userChangeInfo.jsp界面被更改成功;若失败则显示修改失败。
会员中心模块用户可以在首页进行会员中心搜索,在搜索框输入关键词后,前台发起请求,将传递的keyword参数信息从前台传递ShangpinController类里,匹配到list()方法,list()方法调用ShangpinServiceImpl类的getShangpinByKeywordCategory()方法,如果没有该关键词,则返回空的结果集。
会员中心界面如下。
图5-3会员中心界面
猫猫用品模块用户在登录状态下浏览猫猫用品时可将该猫猫用品加入宠物购买订单,从session中取出该用户的信息,点击加入猫猫用品后前台发起请求,将对应的商品数量shuliang、id参数信息从前台传递GoumaiController类里,匹配到add()方法,add()方法调用GoumaiServiceImpl类的add()方法。
猫猫用品界面如下所示。
图5-4猫猫用品界面
服务中心模块用户在登录状态下浏览服务中心信息时可将该服务中心信息加入收藏记录,从session中取出该用户的信息,点击加入服务中心信息收藏前台发起请求,将对应的服务中心信息shichang、id参数信息从前台传递XiadanController类里,匹配到add()方法,add()方法调用XiadanServiceImpl类的add()方法。
服务中心信息界面如下所示。
图5-5服务中心界面
管理员模块 会员中心列表模块管理员在后台管理界面点击到所有会员中心列表界面shangpinxinxi_list.jsp,向控制层shangpinxinxiAction发送请求,搜索当前所有会员信息,shangpinxinxiAction向shangpinxinxiDAOImp调用搜索全部会员中心的请求,向数据库的会员中心表搜索当前所有会员并将留言信息以对象的形式层层返回到shangpinxinxi_list.jsp界面,显示出当前所有会员中心信息。若要对会员中心列表信息进行修改和删除,则分别进入shangpinxinxi_updt.jsp或shangpinxinxi_delete.jsp,通过shangpinxinxiAction向shangpinxinxiDAOImp调用对应的修改或删除方法,向数据库的会员中心表做相应的持久层操作。
会员中心列表界面如下所示。
图5-7会员中心列表界面
宠物资讯管理模块管理员在后台管理界面点击到所有宠物资讯界面chongwufuwuxinxi_list.jsp,向控制层chongwufuwuxinxiAction发送请求,搜索当前所有宠物资讯,chongwufuwuxinxiAction向chongwufuwuxinxiDAOImp调用搜索全部宠物资讯的请求,向数据库的宠物资讯表搜索当前所有宠物资讯并将宠物资讯以对象的形式层层返回到chongwufuwuxinxi_list.jsp界面,显示出当前所有宠物资讯列表。
宠物资讯列表管理界面如下所示。
图5-8宠物资讯列表管理界面
订单中心管理模块根据需求,需要对订单中心进行添加、删除或修改详情信息。删除或修改订单时,系统根据订单中心的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询订单状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
添加订单中心时,会给出数据填写的页面,该页面根据填写好的订单同样会事先发送Ajax请求查询订单号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
订单中心页面设计效果如下图所示。
图5-9订单中心界面图
订单中心管理的关键代码如下。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
源码 文档下载获取地址
(springboot+myssql)宠物猫店管理系统.zip资源-CSDN文库 (含文档)
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者
相关知识
(附源码)基于Spring Boot的宠物猫店管理系统的设计与实现 毕业设计140909
基于JavaSpringBoot+Vue的宠物猫店管理系统设计与实现
【开题报告】基于SpringBoot的宠物猫用品商城的设计与实现
【开题报告】基于SpringBoot的宠物寄存商店管理系统的设计与实现
基于Spring Boot的宠物猫店管理系统的设计与实现毕业设计源码140909
基于SpringBoot的宠物管理系统的设计与实现
基于springboot宠物猫店管理系统的设计与实现
基于JavaSpringBoot+vue宠物猫店管理系统设计实现
【开题报告】基于SpringBoot的宠物电商社区系统的设计与实现
【2024】基于springboot的宠物领养管理系统设计与实现研究思路
网址: 基于springboot宠物猫店管理系统的设计与实现 https://m.mcbbbk.com/newsview299856.html
上一篇: 基于Spring Boot的宠物 |
下一篇: 宠物猫(源码+开题) |