基于Jsp和MySQL的网上宠物商城系统

Tenderne

发布日期: 2020-11-21 09:39:51 浏览量: 173
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1 系统简介

1.1 系统开发介绍

随着人们日常生活的丰富多彩,人们对新事物的不断追求,使得各种各样的个性宠物不断出现。宠物市场上还出现了,例如蜥蜴、变色龙、蛇、蜘蛛、蜈蚣、老鼠等与我们日常生活中或惯常思维所理解的宠物不一样的“另类宠物”,不断满足着人们喂宠物的需要。当然,随着这一发展驱趋势,提供给人们各个种类宠物的宠物店则如雨后春笋般涌现。

本宠物店网上商城系统为顾客和卖家提供了一个电子商务交易平台,普通用户购买下单,管理员可进行后台管理。

宠物店网上商城在设计过程中利用JavaWeb技术,数据库技术运行需求、价格等发布与收集,方便宠物店销售管理,增进顾客关系,改善顾客服务,开拓销售渠道等,最终方便管理以及扩大销售。

1.2 系统具体功能

本系统用户分为普通用户和管理员两类,下面是具体功能需求:

  • 普通用户

    • 登录、注册功能
    • 浏览宠物功能
    • 搜索宠物功能
    • 添加宠物到购物车
    • 购买功能(在商品详情页单独购买或在购物车批量购买,购买后自动生成相应订单)
    • 查看订单状态(可以查看物流信息)
    • 付款功能(线上支付)
    • 确认收货功能
    • 评价已购买商品功能(确认收货后方可评价)
  • 管理员

    • 登陆功能
    • 添加、查看、修改、删除用户信息功能
    • 添加、查看、修改、删除商品信息功能
    • 确认、查看、修改、删除、添加订单
    • 发货功能(发布已发货信息)

2 功能描述和模块设计

2.1 功能描述

2.1.1 用户部分

用户可以注册一个账号,填写自己相关的信息,然后进入登录页面,进行登录,在主页可以浏览并选择自己喜欢的商品,也可以通过具体分区浏览宠物或宠物用品,还可以在导航栏搜索自己心仪的商品。在选择好自己想要的商品时,可以进入商品详情页浏览商品的具体情况,通过下方的加入购物车按钮加入购物车,在购物车勾选自己想要的宠物或商品后,可以购买,等商品收到之后可以点击确认收货按钮进行收货确认。

2.1.2 管理员部分

管理员可以管理用户信息,修改或删除用户信息,维护商品或宠物信息,并进行订单的管理和发货的确认。

2.2 模块设计

3 主要代码清单

3.1 主界面

主要代码

Controller:取得所有宠物和商品信息。

  1. @RequestMapping(value = "/getAllCommodity")
  2. @ResponseBody
  3. public Map<String,Object> getAllCommodity(){
  4. List commodityList=commodityService.getAllCommodity();
  5. //alibaba fastjson把jsonArray转成string
  6. String all= JSONArray.toJSONString(commodityList);
  7. Map<String,Object> resultMap=new HashMap<String ,Object>();
  8. resultMap.put("all",all);
  9. return resultMap;
  10. }

Service:从数据库获取所有宠物和用品的信息并被controller调用。

  1. @Override
  2. public List getAllCommodity() {
  3. List allCommodity=new ArrayList();
  4. List petList=petService.getAllPets();
  5. List productList=productService.getAllProduct();
  6. allCommodity.add(petList);
  7. allCommodity.add(productList);
  8. return allCommodity;
  9. }

3.2 登录界面

主要代码

  1. @RequestMapping(value = "/doLogin",method= RequestMethod.POST)
  2. @ResponseBody
  3. public Map<String,Object> doLogin(String email, String password, HttpSession httpSession) {
  4. System.out.println("我接收到了登录请求" + email + " " + password);
  5. String result = "fail";
  6. User user = userService.getUserByEmail(email);
  7. if (user == null)
  8. result = "unexist";
  9. else {
  10. if (user.getPassword().equals(password)) {
  11. result = "success";
  12. httpSession.setAttribute("currentUser", user);
  13. } else
  14. result = "wrong";
  15. }
  16. Map<String, Object> resultMap = new HashMap<String, Object >();
  17. // System.out.println("result from controller:"+result);
  18. resultMap.put("result", result);
  19. return resultMap;
  20. }

3.3 注册界面

主要代码

  1. User user=userService.getUserByEmail(email);
  2. if(user!=null) result="emailExist";
  3. else{
  4. User u=new User();
  5. u.setName(name);
  6. u.setEmail(email);
  7. u.setPassword(password);
  8. u.setPhone(phone);
  9. u.setRole(0);
  10. u.setSex(gender);
  11. Date date=new Date();
  12. SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
  13. u.setCreateTime(sf.format(date));
  14. userService.addUser(u);
  15. result="success";
  16. }

3.4 搜索界面

主要代码

在petMapper里定义的方法:

  1. List<Pet> selectByKeyWord(String keyword);

对应的mapper.xml定义响应的模糊查询语句:

  1. <select id="selectByKeyWord" parameterType="java.lang.String" resultMap="BaseResultMap">
  2. select <include refid="Base_Column_List" /> from pet
  3. <where>
  4. <if test="_parameter != null">
  5. AND key_word LIKE concat(concat('%',#{key_word}),'%')
  6. </if>
  7. </where>
  8. </select>

在service里调用以上方法:

  1. @Override
  2. public List<Pet> getPetsByKeyWord(String searchKeyWord) {
  3. return petMapper.selectByKeyWord(searchKeyWord);
  4. }

3.5 宠物详情页

主要代码

Controller拦截getPetDetail路径,并设置当前商品的信息到session:

  1. @RequestMapping(value = "/getPetDetail")
  2. @ResponseBody
  3. public Map<String,Object> getPetDetail(Integer id,HttpSession httpSession){
  4. System.out.println("拦截到petDetail请求 id:"+id);
  5. Map<String,Object> resultMap=new HashMap<String, Object>();
  6. Pet pet =petService.getPet(id);
  7. petService.updatePet(pet);
  8. System.out.println("pet:"+pet.getName());
  9. httpSession.setAttribute("currentCommodity",pet);
  10. resultMap.put("result","success");
  11. return resultMap;
  12. }

Service在数据库查找相应数据:

  1. @Override
  2. public Pet getPet(int id) {
  3. return petMapper.selectByPrimaryKey(id);
  4. }

3.6 宠物展示页

主要代码

service:

  1. @Override
  2. public List<Pet> getAllPets() {
  3. PetExample pe=new PetExample();
  4. PetExample.Criteria pec=pe.createCriteria();
  5. pec.andIdIsNotNull();
  6. pec.andNameIsNotNull();
  7. pe.setOrderByClause("id asc");
  8. return petMapper.selectByExample(pe);
  9. }

controller:

  1. @RequestMapping(value = "/getAllPets")
  2. @ResponseBody
  3. public Map<String,Object> getAllPets(){
  4. List pet_list=petService.getAllPets();
  5. String all_pet=JSONArray.toJSONString(pet_list);
  6. Map<String,Object> resultMap=new HashMap<String ,Object>();
  7. resultMap.put("all_pet",all_pet);
  8. return resultMap;
  9. }

3.7 购物车页

主要代码

  1. @Override
  2. public ShoppingCar getShoppingCar(int userId, int productId) {
  3. ShoppingCarKey key=new ShoppingCarKey();
  4. key.setUserId(userId);
  5. key.setProductId(productId);
  6. return shoppingCarMapper.selectByPrimaryKey(key);
  7. }
  8. @Override
  9. public void addShoppingCar(ShoppingCar shoppingCar) {
  10. shoppingCarMapper.insertSelective(shoppingCar);
  11. }
  12. @Override
  13. public boolean deleteShoppingCar(int userId, int productId) {
  14. ShoppingCarKey key=new ShoppingCarKey();
  15. key.setUserId(userId);
  16. key.setProductId(productId);
  17. return shoppingCarMapper.deleteByPrimaryKey(key)>0;
  18. }
  19. @Override
  20. public boolean updateShoppingCar(ShoppingCar shoppingCar) {
  21. return shoppingCarMapper.updateByPrimaryKey(shoppingCar)>0;
  22. }
  23. @Override
  24. public List<ShoppingCar> getShoppingCars(int userId) {
  25. ShoppingCarExample example=new ShoppingCarExample();
  26. ShoppingCarExample.Criteria scec=example.createCriteria();
  27. scec.andUserIdIsNotNull();
  28. return shoppingCarMapper.selectByExample(example);
  29. }

3.8 订单页

主要代码

  1. @Override
  2. public ShoppingRecord getShoppingRecord(int userId, int Id, String time) {
  3. ShoppingRecordKey key=new ShoppingRecordKey();
  4. key.setUserId(userId);
  5. key.setProductId(Id);
  6. key.setTime(time);
  7. return shoppingRecordMapper.selectByPrimaryKey(key);
  8. }

3.9 404页

3.10 管理员管理订单页

主要代码

  1. @Override
  2. public void addShoppingRecord(ShoppingRecord shoppingRecord) {
  3. shoppingRecordMapper.insert(shoppingRecord);
  4. }
  5. @Override
  6. public boolean deleteShoppingRecord(int userId, int Id) {
  7. ShoppingRecordKey key=new ShoppingRecordKey();
  8. key.setUserId(userId);
  9. key.setProductId(Id);
  10. return shoppingRecordMapper.deleteByPrimaryKey(key)>0;
  11. }
  12. @Override
  13. public List<ShoppingRecord> getAllShoppingRecords() {
  14. ShoppingRecordExample example=new ShoppingRecordExample();
  15. ShoppingRecordExample.Criteria srec=example.createCriteria();
  16. srec.andUserIdIsNotNull();
  17. return shoppingRecordMapper.selectByExample(example);
  18. }
  19. @Override
  20. public List<ShoppingRecord> getShoppingRecordsByOrderStatus(int orderStatus) {
  21. ShoppingRecordExample example=new ShoppingRecordExample();
  22. ShoppingRecordExample.Criteria srec=example.createCriteria();
  23. srec.andOrderStatusIsNotNull();
  24. srec.andOrderStatusEqualTo(orderStatus);
  25. example.setOrderByClause("orderStatus asc");
  26. return shoppingRecordMapper.selectByExample(example);
  27. }

3.11 管理员管理用户页

主要代码

  1. @RequestMapping(value = "/updateUser")
  2. @ResponseBody
  3. public Map<String,Object> updateUser(int id,String name,String sex,String email,String phone,String password,int role){
  4. //<th>姓名</th> <th>性别</th> <th>地址</th> <th>电话</th> <th>密码</th> <th>角色</th>
  5. User user=userService.getUser(id);
  6. user.setName(name);
  7. user.setSex(sex);
  8. user.setEmail(email);
  9. user.setPhone(phone);
  10. user.setPassword(password);
  11. user.setRole(role);
  12. userService.updateUser(user);
  13. Map<String,Object> resultMap=new HashMap<String ,Object>();
  14. resultMap.put("result","success");
  15. return resultMap;
  16. }
  17. @RequestMapping(value = "/deleteUser")
  18. @ResponseBody
  19. public Map<String,Object> deleteUser(int id){
  20. userService.deleteUser(id);
  21. Map<String,Object> resultMap=new HashMap<String ,Object>();
  22. resultMap.put("result","success");
  23. return resultMap;
  24. }

3.12 管理员管理商品页

主要代码

  1. @Override
  2. public void addCommodity(int id, int type) {
  3. Commodity c=new Commodity();
  4. c.setId(id);
  5. c.setType(type);
  6. commodityMapper.insert(c);
  7. }
  8. @Override
  9. public boolean deleteCommodity(int id) {
  10. return commodityMapper.deleteByPrimaryKey(id)>0;
  11. }
  12. @Override
  13. public boolean updateCommodity(int id, int type) {
  14. Commodity c=new Commodity();
  15. c.setId(id);
  16. c.setType(type);
  17. return commodityMapper.updateByPrimaryKey(c)>0;
  18. }

3.13 帮助界面

主要代码

  1. @RequestMapping(value = "/contact")
  2. public String contact(){
  3. System.out.println("拦截到contact请求");
  4. return "contact";
  5. }

3.14 修改个人信息界面

主要代码

  1. @Override
  2. public void addUser(User user) {
  3. userMapper.insertSelective(user);
  4. }
  5. @Override
  6. public boolean deleteUser(int id) {
  7. return userMapper.deleteByPrimaryKey(id)>0;
  8. }
  9. @Override
  10. public boolean updateUser(User user) {
  11. return userMapper.updateByPrimaryKeySelective(user)>0;
  12. }
  13. @Override
  14. public List<User> getAllUser() {
  15. UserExample example=new UserExample();
  16. UserExample.Criteria criteria=example.createCriteria();
  17. criteria.andIdIsNotNull();
  18. example.setOrderByClause("id asc");
  19. List<User>list=userMapper.selectByExample(example);
  20. return list;
  21. }

3.15 用户确认订单页

主要代码

  1. public List<ShoppingRecord> getShoppingRecordsByOrderStatus(int orderStatus) {
  2. ShoppingRecordExample example=new ShoppingRecordExample();
  3. ShoppingRecordExample.Criteria srec=example.createCriteria();
  4. srec.andOrderStatusIsNotNull();
  5. srec.andOrderStatusEqualTo(orderStatus);
  6. example.setOrderByClause("orderStatus asc");
  7. return shoppingRecordMapper.selectByExample(example);
  8. }

4 系统运行与测试

4.1 用户浏览购买商品流程

用户登录

选择风来克磨牙咬胶加入购物车

加入购物车成功

购物车显示添加成功的商品

勾选并结算,跳转到订单页面

订单页面显示商品未发货

4.2 管理员处理订单流程

管理员登录

显示管理员菜单

管理员进入发货管理界面

管理员进行发货处理,商品属性变成已发货

4.3 管理员管理用户流程

进入用户数据库页

修改用户属性

修改成功

点击删除按钮,删除用户,显示删除like用户成功

5 总结

通过这次实训,我掌握了基本Spring+SpringMVC+MyBatis框架的运用,并学会了使用Maven工具管理我的项目,还使用当前流行的SemanticUI制作我的页面,使用GitHub管理我项目的版本和介绍,并熟悉了MVC的设计流程。虽然现在看上去这个系统还有很多功能没有完善,但是在项目初期的确遇到了很多的困难,就光是spring的配置文件都让我配了好几天,还有各种系统的bug,前后端传输数据时的问题,还好现在都让我一一解决了。

在这次做这个系统的过程中,我逐渐掌握了设计一个系统的方法,很多东西并不是像它看上去那么简单,数据库也并不只是一个简简单单的存储数据的工具,要把数据合理有效的存取并遵守一定的规范是个很复杂又很精细的问题,它涉及到整个系统的流程运作和数据定义,使用等方面的东西,一旦设计错,后面再改就是个很麻烦的事情了。

上传的附件 cloud_download 基于Jsp和MySQL的网上宠物商城系统.7z ( 9.74mb, 12次下载 )
error_outline 下载需要11点积分

发送私信

回首才能读懂人生,但频频回首会耽误你往前走

12
文章数
17
评论数
最近文章
eject