1 引言
1.1 选题背景
在21世纪的信息化时代,互联网技术正以前所未有的速度迅猛发展,极大地推动了电子商务的兴起与繁荣。在线购物,作为现代消费文化中一个不可或缺的组成部分,正改变着人们的购物习惯和消费模式。消费者越来越习惯于在网络世界中畅游,享受着随时随地浏览、比较和购买商品的乐趣。这种购物方式不仅极大地节省了时间和精力,还使得商品的选择范围更加广泛和丰富。鉴于此,基于Java语言的在线商城设计与实现应运而生,其背后
目录
的初衷是利用Java语言的强大功能和跨平台特性,打造一个既稳定又高效,且易于维护的电子商务平台。这样的平台能够灵活地适应不断变化的市场需求,同时为用户提供更加流畅和愉悦的购物体验。
1.2 研究目的和意义
线上购买商品非常方便人们的日常生活,首先一点就是在线购买商品有着运输配送服务,人们可以在不出门的情况下就可以买到想要购买的商品。其次就是在线购买到的商品通常都有质量保障,平台内上架的商品都有着严格的质量安全制度。本系统的开发无论是对商品的供应商还是购买的消费者都很方便。现阶段大多行业都采用线上的方式来交易,这样的交易平台能够方便人们购买商品,而且可以大大促进商品生产商的经济发展。
1.3 主要研究内容
本系统是一个在线购买平台。系统包括前端和后台。前端是用来处理商品的交易,后台是维护商品的信息。对于用户而言,只需要注册登录即可使用。而管理员则使用特定的账号进行管理。
在开发这一块,则是利用SSM框架作为核心技术。数据访问则直接访问本地的MySQL数据库。对于商品信息、交易订单、用户信息等都直接存储到MySQL中。
本系统的开发,无论是对管理员还是购买的人,都很方便。现阶段大多行业都采用线上的方式来交易。这样的商品交易平台,能够方便人们采购商品,而且可以大大促进商品生产商的经济发展。
1.4 论文组织结构
本论文通过5个章节来详细介绍在线商城的设计与实现。
首先通过查阅资料介绍了在线商城的选题背景。
接着确定开发技术以及开发工具。利用所熟悉的开发工具去实现。
在开发之前,通过需求分析,确定整体方向。包括了对于各个功能模块的大致方向,对果蔬商城实际使用的角色分析。
再根据需求分析,去设计整个在线商城的功能结构。其中通过对概念模型进行分析,设计出逻辑结构表。并构建关键功能的流程。
根据系统设计,利用Eclispe去实现出具体的功能。展示实际的开发成果,并附上核心代码。
最后通过系统测试,去检测所有实现的功能是否正常运行。
2 相关技术研究
2.1 MySQL数据库
MySQL是一个关系型数据库管理系统。它将无穷多的数据存储在各种表中,而不是将数据堆积在一起,提高了数据的灵活度。它使用了常用且最标准化的SQL语句,价格低、速度快且开源。它还支持事务、触发器等功能。由于MySQL开源且反应速度快,并且市面上的DBMS的界面都很友好。所以开发一个不需要很大的系统时,使用此DBMS是很好的选择。
果蔬商城中,所有用户发起的操作请求都属于应用端。如购买果蔬、个人信息管理等等。之后对数据库发起查询请求,将请求的结果从数据库查询出来。
MySQL的整体架构图如图2-1所示。
2.2 Layui前端框架
2.3 B/S架构
2.4 SSM框架
3 需求分析
3.1业务需求分析
系统按实际用角色来分,是普通用户和管理员。按照系统类型来分则是前端网站加后台。系统通过MVC模式来实现分层,从而更好地实现代码的开发。
前端网站是用户使用的。用户无法进入后台。而后台则是由管理员使用特定账号访问使用。二者不冲突。
在线商城平台的整体需求则是实现用户在线购买商品,并由管理员发货,最终用户收货。在用户进入网站后,必须登录才能进行购买商品。因此,设计一个对应的前端购物平台,专门用于处理商品等信息的展示。在购买以后,则由管理员发货。系统的业务流程图如下。
4.系统设计
4.1 总体功能设计
本系统分为前端的网站和后台。在前端网站的数据信息中,所有模块的使用人都是用户。而后台则都属于管理员。对于所有的数据库表,用户基本都只有访问权限,而管理员则可以增删改查所有信息。系统功能模块图如图4-1所示。
5 系统实现
商城首页
5.3.1购物车界面
用户注册以后,则可以将商品加入购物车。加入购物车后的物品,可以再次将其移除。这里在设计的时候,选择了永久存储购物车信息。相比以往的session对象存储,这样可以在注销以后也可以保存数据。一条购物车记录对应了若干个商品和一个用户。在修改数量时,保持其余信息不变。具体效果图如图5.4所示。
加入购物车的部分核心代码如下所示。
Map<String, Object> map = new HashMap<String, Object>();
goodsCar.setId(CommonUtil.getUUID32());//购物车id
goodsCar.setUserId(SessionUtil.getUserId(request)); //用户id
goodsCar.setCreate_operatorperator(SessionUtil.getUserName(request)); //加入人
// 校验购物车是否已经有这个商品了
GoodsCar goodsCheck = goodsCarService.getGoodsByGoodsId(goodsCar);
if (goodsCheck != null) {
// 如果有则增加数量
int amount = CommonUtil.converObjToInt(goodsCar.getAmount())
+ CommonUtil.converObjToInt(goodsCheck.getAmount());
//获取商品数量。
goodsCheck.setAmount(String.valueOf(amount));
//修改数量。
goodsCarService.updateByPrimaryKeySelective(goodsCheck);
} else {
//加入购物车。
goodsCarService.insertSelective(goodsCar);
}
map.put("msg", "已添加至购物车!");
map.put("errList", null);
return map;
}
5.3.2个人信息功能实现
个人中心则是修改注册时的信息。实现的方式是根据session中的用户查询用户表。之后将该用户的信息展示在页面。点击‘编辑’按钮后,则可以修改个人信息。具体如图5.5所示。
图5.3
修改个人资料的主要代码如下。
//修改人信息,
user.setUpdate_operatorperator(SessionUtil.getUserName(request));
user.setFlag("edit");//操作的标识符。
user.setCheckFlag("nickName");//根据账号修改,
int nickName = usersService.checkRepeat(user); //检测是否存在同名用户。
user.setCheckFlag("tel");
int phone = usersService.checkRepeat(user); //检测是否存在同手机用户。
user.setCheckFlag("mail");
int email = usersService.checkRepeat(user); //检测是否存在同邮箱用户。
user.setCheckFlag("no");
if (nickName > 0) {
map.put("errList", "昵称已存在!");
} else if (phone > 0) {
map.put("errList", "手机号已存在!");
} else if (email > 0) {
map.put("errList", "邮箱已存在!");
}
return map;
}
5.5.1后台登录
后台登录需要管理员输入手机号和密码全部正确才可以进入到后台系统。具体效果图如图5.9所示。
管理员登录的主要代码如下
Map<String, Object> map = new HashMap<String, Object>();
//获取加密过的密码。
admin.setPassword(CommonUtil.getMD5(admin.getPassword()));
//执行login登录代码。
admin = adminService.login(admin);
if (admin != null) {//数据库中有用户信息。
session.setAttribute("loginAdminName", admin.getNickName());
session.setAttribute("loginAdminId", admin.getId());//设置用户id。
session.setAttribute("limit", admin.getLimits());
map.put("msg", "登录成功!");
map.put("errList", null);
} else {
map.put("errList", "账号或密码不正确!");
}
5.5.2用户管理功能实现
用户管理中可以查看用户信息。本模块实现了对用户信息的增删改查。具体效果图如图5.10所示。
查询出所有的用户信息的主要代码如下。
String serachName = request.getParameter("serachName");//根据用户名称查询。
Users user = new Users();//NEW一个用户对象
user.setNickName(serachName); //写入用户名称。
int count = userService.getTotal(user); // 总条数
int page = Integer.parseInt(request.getParameter("page"));// 当前页
int limit = Integer.parseInt(request.getParameter("limit"));// 每页条数
user.setPage((page - 1) * limit);
user.setLimit(limit);//获取所有的用户条数。
List<Users> data = userService.getList(user); //查询所有用户信息。
String msg = (data == null) ? "没有查到数据!" : "success";
Map<String, Object> map = new HashMap<String, Object>();
return map;
}
结 论
商城的开发是为了给人们提供一个在线购物平台。人们通过这个平台可以更好地去购买日常需要的商品。系统分为两个角色;管理员可以帮助上架各种产品,而用户则可以在线购买。无论是对于商家来说还是用户来说,都是双赢。其中用户进行在线购买统一在网站进行。而管理员统一在后台处理各种信息。
在线商城的前端选择了Layui框架进行开发。其中购物网站则是使用了一个设计的前端网站模板进行使用。对左侧菜单栏、右侧布局、UI交互等引入了Bootstrap的css样式进行使用。在减少前端代码的同时,也保证了实现的效果。在里面,根据自己的开发需求,将各个界面进行重新设计,主要用到了首页、果蔬详情、购买页面等。
系统当前基本完成了一个完整的在线购物的流程。用户注册登录后,直接可以使用购物车。并且对于用户来说,可以看到自己的订单,在购买时也可以搜索相关的果蔬。对于管理员来说,主要负责平台内商品的维护。
系统整体上并没有大的问题,但是往细节看,有着一些瑕疵。如购物订单,并没有实现具体的支付方式。且在对应的商品页面,缺少相关类型的商品推荐。因此,对于后期的学习中,将用更多的JAVA知识,来完善这个系统。
致 谢
天波易谢,寸暑难留。在我敲完这最后几段字后,我的大学三年时光好像真的就结束了。我现在还依稀记得当时中榜的喜悦,母亲亲自送我到学校后在地铁站慢慢离别的身影,还有,与你的第一次见面。历历在目,仿佛就在昨天。
其实说来我的学业生涯也算曲折,小学期间因为父母工作的原因辗转多地,初中因为人际关系被孤立过 ,中考踩线进入普通高中,高考两次落榜,大学期间又经历了这能使人分隔两地的疫情……
是啊,谁说人生一来就是一帆风顺,谁不是历经艰难呢?人生就是不停的试错的过程,但就是怕一错再错。原谅我到如今这个年龄段才对自己的人生有个一知半解,才知道过往的自己站在人生的岔路口时,选择了错误的方向。
因为疫情防控的原因,本该如期举行的转本考试一推再推,这就让毕设和考试的时间撞在了一起。所以,这个论文也来之不易。我很感谢我的母亲,明明工作很辛苦可以多睡一会,但还是跟着我一起早晨六点起床,为的就是给我准备早饭,问问我中午想吃什么她再好去准备。我的母亲是一位不善言辞的女性,在她眼中我这个阶段能我为分担的可能就是饮食生活了。润物细无声的母爱,我也现在才懂。我也很感谢我的教导老师为我毕设所付出的一切,同样感谢辅导员对我们平时生活的关心。同样也感谢出现在我生命中的你。
“年轻人,现在是你们的时代。尊重你们的青春。”姜广涛姜老师的话经常浮现在我的耳畔,感谢您的话激励着每一刻想要放弃的自己,也感谢您和吴磊老师的声音陪伴着每一个难以入眠的自己。二十多年前入行时如果也有人这么肯定您该多好。“我现在要骄傲的往前走了。”感谢毛不易的音乐使我学习烦躁的心情得到安慰。“使我有洛阳二顷田,安能佩六国相印。”感谢郭德纲、于谦老师的相声也常伴我左右。你们都趟过了泥泞的道路,或为行业匠人,或为行业翘楚。
老将不死,薪火相传。