当前位置: 首页 > news >正文

基于微信小程序和安卓的图书销售商城

一直以来,人们对图书的需求是不可或缺的。他它传承了人类的文明,记载了大量知识。所以基本每个人都会和图书有交集。人们传统的购书模式是到书店。玲琳琅满目的书架中选取自己所需的图书信息。当然了,因为一些地域。以及文化程度的限制,可能当地的书店内图书并不齐全。但是读者有急需找到这样的图书,这个时候人们只能够通过互联网来查找和购买自己所需的图书信息。本系统就是这样的一个系统它,它可以让用户通过互联网更加方便快捷的找到自己所需的图书信息。管理人员在收到用户的订单之后,通过物流的方式将图书送达到客户的手中来。
请添加图片描述
(a) 管理员:管理员使用本系统涉到的功能主要有首页、个人中心、用户管理、图书管理、图书分类管理、系统管理等功能。
(b) 用户:用户进入app可以实现首页、图书信息、图书零售管理、我的等,在我的页面可以对我的收藏、用户充值、在线客服等功能进行操作。
请添加图片描述


/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java script,然后返回数据并在浏览器中展示页面。而微信开发者工具的系统层是基于Native System的,视图层和逻辑层会同时被加载。微信小程序的这种逻辑方式大大的优化了页面响应速度,减少了页面加载的等待时间,提高了用户体验。微信开发者工具可以实现同步本地文件,开发调试,编译预览,上传,发布等一整套流程。
请添加图片描述
Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景,它是面向对象的,分布式的,动态的,具有平台无关性、安全性、健壮性。Java语言的基本语句语法和C++一样,但是它面向对象的技术更加彻底,因为Java要求将所有的内容都必须封装成类,把类作为程序的基本单位。由于不允许类外有变量、方法。 Java语言的分布式体现在数据分布和操作分布,它是面向网络的语言,可以处理TCP/IP协议,它也支持客户机/服务器的计算模式。Java语言的动态性是指类在运行时是动态安装的,使得Java可以动态的维护程序。Java不支持指针,对内存访问的所有操作都是通过对象实例化实现的,这样就避免了指针操作中易产生的错误,同时也预防了病毒对系统的破坏和威胁。
请添加图片描述
目录
1 绪论 1
1.1课题背景 1
1.2课题研究现状 1
1.3初步设计方法与实施方案 2
1.4本文研究内容 2
2 系统开发环境 4
2.1 JAVA简介 4
2.2MyEclipse环境配置 4
2.3 B/S结构简介 4
2.4MySQL数据库 5
2.5 SPRINGBOOT框架 5
3 系统分析 6
3.1系统可行性分析 6
3.1.1经济可行性 6
3.1.2技术可行性 6
3.1.3运行可行性 6
3.2系统现状分析 6
3.3功能需求分析 7
3.4系统设计规则与运行环境 8
3.5系统流程分析 8
3.5.1操作流程 8
3.5.2添加信息流程 9
3.5.3删除信息流程 10
4 系统设计 11
4.1系统设计主要功能 11
4.2数据库设计 11
4.2.1数据库设计规范 11
4.2.2 E/R图 11
4.2.3数据表 12
5 系统实现 25
5.1系统功能模块 25
5.2后台模块 27
5.2.1管理员功能模块 27
5.2.2用户功能模块 30
6 系统测试 33
6.1功能测试 33
6.2可用性测试 33
6.3性能测试 34
6.4测试结果分析 34
7结 论 35
参考文献 36
致 谢 37

相关文章:

  • ElasticSearch之自动补全查询
  • 第3章:变量
  • 二叉树介绍 ~ 概念、存储结构、性质
  • 【SpringBoot】之创建自定义 SpringBoot-Starter
  • 阶段一:Java基础入门
  • 西门子——好用的通讯仿真通讯工具NetToPLCsim
  • docker对网络和程序速度的影响
  • 下沉一线农技志愿服务 国稻种芯-芜湖:湾沚红杨护秋粮生产
  • java计算机毕业设计同学录管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  • 枯竭的水库求生的稻田 国稻种芯·九江:位于抗旱一线的都昌
  • 网课搜题公众号题库接口系统
  • 分享网课查题公众号接口 及如何使用
  • 网课搜题公众号制作方法
  • Ubuntu 安装 HDF5 C++库
  • 【Linux系统管理】10 Shell 编程进阶篇
  • 【React系列】如何构建React应用程序
  • bootstrap创建登录注册页面
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • dva中组件的懒加载
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6 学习笔记(一)let,const和解构赋值
  • Git的一些常用操作
  • IDEA 插件开发入门教程
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java比较器对数组,集合排序
  • Lucene解析 - 基本概念
  • nginx 配置多 域名 + 多 https
  • spring学习第二天
  • Vue学习第二天
  • 关于extract.autodesk.io的一些说明
  • 近期前端发展计划
  • 坑!为什么View.startAnimation不起作用?
  • 理清楚Vue的结构
  • 力扣(LeetCode)21
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #pragma 指令
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • ( 10 )MySQL中的外键
  • (6)设计一个TimeMap
  • (libusb) usb口自动刷新
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .“空心村”成因分析及解决对策122344
  • .cn根服务器被攻击之后
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net和jar包windows服务部署
  • .Net接口调试与案例