感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询

系统介绍:

科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Python技术建设基于Pettingpets(爱抚宠物)小程序。

本设计主要实现集人性化、高效率、便捷等优点于一身的基于Pettingpets(爱抚宠物)

小程序,完成宠物类型、宠物信息、领养信息、救助基地、捐助信息、留言反馈、消息通知、宠物日常等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。基于Pettingpets(爱抚宠物)

小程序使用Python语言,采用基于 MVVM模式的Django技术进行开发,使用 Eclipse 2017 CI 10

编译器编写,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,配合前台HTML+CSS 技术完成系统的开发。

关键词:爱抚宠物;Django技术

在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本Pettingpets(爱抚宠物)

小程序中的用例。那么接下来就要开始对本Pettingpets(爱抚宠物) 小程序的架构、主要功能和数据库开始进行设计。Pettingpets(爱抚宠物)

小程序根据前面章节的需求分析得出,其总体设计模块图如图3-1所示。

下面是整个Pettingpets(爱抚宠物) 小程序中主要的数据库表总E-R实体关系图。

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

程序操作流程图

功能截图:

代码实现:

/**

  • 登录相关

    */

    @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 role, HttpServletRequest request) {

      UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username));

      if(user != null){

      if(!user.getRole().equals(role)){

      return R.error("权限不正常");

      }

      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);

      }else{

      return R.error("账号或密码或权限不对");

      }

    }

    /**

    • 注册

      */

      @IgnoreAuth

      @PostMapping(value = "/register")

      public R register(@RequestBody UserEntity user){

      // ValidatorUtils.validateEntity(user);

      if(userService.selectOne(new EntityWrapper().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().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 ew = new EntityWrapper();

      PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));

      return R.ok().put("data", page);

      }

    /**

    • 信息

      */

      @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){

      Integer id = (Integer)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().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 Integer[] ids){

      userService.deleteBatchIds(Arrays.asList(ids));

      return R.ok();

      }

      }

论文参考:

基于django(爱抚宠物) 小程序设计和实现(源码+LW+部署讲解)的更多相关文章

  1. 微信小程序一键生成源码 在线制作定制功能强大的微信小程序

    微信小程序发展到现在,短短的一年不到的时间(很快就要迎来微信小程序周年庆),在快迎来周年庆之际,百牛信息技术bainiu.ltd特记录一下这个发展的历程,用于将来见证小程序发展的辉煌时刻,我们还能知道 ...

  2. 从微信小程序开发者工具源码看实现原理(一)- - 小程序架构设计

    使用微信小程序开发已经很长时间了,对小程序开发已经相当熟练了:但是作为一名对技术有追求的前端开发,仅仅熟练掌握小程序的开发感觉还是不够的,我们应该更进一步的去理解其背后实现的原理以及对应的考量,这可能 ...

  3. 从微信小程序开发者工具源码看实现原理(四)- - 自适应布局

    从前面从微信小程序开发者工具源码看实现原理(一)- - 小程序架构设计可以知道,小程序大部分是通过web技术进行渲染的,也就是最终通过浏览器的dom tree + cssom来生成渲染树:既然最终是通 ...

  4. 源码来袭!!!基于jquery的ajax分页插件(demo+源码)

    前几天打开自己的博客园主页,无意间发现自己的园龄竟然有4年之久了.可是看自己的博客列表却是空空如也,其实之前也有写过,但是一直没发布(然而好像并没有什么卵用).刚开始学习编程时就接触到博客园,且在博客 ...

  5. 支持语音识别、自然语言理解的微信小程序(“遥知之”智能小秘)完整源码分享

    记录自己搭建https的silk录音文件语音识别服务的调用过程,所有代码可在文中找链接打包下载 >>>>>>>>>>>>> ...

  6. 基于微软企业库的AOP组件(含源码)

    软件开发,离不开对日志的操作.日志可以帮助我们查找和检测问题,比较传统的日志是在方法执行前或后,手动调用日志代码保存.但自从AOP出现后,我们就可以避免这种繁琐但又必须要实现的方式.本文是在微软企业库 ...

  7. Django框架rest_framework中APIView的as_view()源码解析、认证、权限、频率控制

    在上篇我们对Django原生View源码进行了局部解析:https://www.cnblogs.com/dongxixi/p/11130976.html 在前后端分离项目中前面我们也提到了各种认证需要 ...

  8. Django 之 restframework 版本控制的使用以及源码分析

    Django rest_framework 之 版本控制 一.何为版本控制: ​ 用于版本的控制 二.内置的版本控制类: from rest_framework.versioning import Q ...

  9. Django的View(视图)-settings源码的解析-模板层-模板语法

    FBV与CBV 视图函数并不只是指函数,也可以是类 FBV:基于函数的视图,类似面向函数式编程 CBV:基于类的视图,类似面向对象编程 研究解析render源码: render:返回html页面:并且 ...

  10. 基于MVVM的知乎日报应用安卓源码

    使用data binding , dagger2 , retrofit2和rxjava实现的,基于MVVM的知乎日报APP运行效果: <ignore_js_op> 使用说明: 项目结构 a ...

随机推荐

  1. Prism IoC 依赖注入

    现有2个项目,SinglePageApp是基于Prism创建的WPF项目,框架使用的是Prism.DryIoc,SinglePageApp.Services是C#类库,包含多种服务,下面通过使用Pri ...

  2. no implicit conversion of nil into String

    一.Cocoapod 执行pod install命令时报错 [!] An error occurred while processing the post-install hook of the Po ...

  3. Opencv笔记(11)随机数发生器cv::RNG

    一个随机数对象(RNG)用来产生随机数的伪随机序列.这样做的好处是你可以方便地得到多重伪随机数流.一旦随机数发生器创建,就会开始按需提供产生随机数的"服务",无论是平均分布还是正态 ...

  4. Visual Studio编程效率提升技巧集(提高.NET编程效率)

    前言 本文大姚将为你介绍一些Visual Studio的使用技巧和建议,旨在帮助.NET开发者更加高效地利用Visual Studio进行编程工作.无论你是.NET初学者还是经验丰富的.NET开发者, ...

  5. 操作标签的属性和属性值 table表格

     // 操作标签的属性和属性值         // 特殊的属性           // 可以直接通过 点语法或者[]语法来操作的属性         // id 和 class           ...

  6. 一款.NET开源、免费、实用的多功能原神工具箱(改善桌面端玩家的游戏体验)

    前言 今天大姚给大家分享一款.NET开源(MIT License).免费.实用的多功能原神工具箱,旨在改善桌面端玩家的游戏体验:胡桃工具箱. 工具箱介绍 胡桃工具箱是一款.NET开源(MIT Lice ...

  7. kettle从入门到精通 第十四课 kettle kafka 生产者和消费者

    1.本节课讲解kafka生产者和消费者两个步骤.这两个组件可以实现数据实时同步(后续课程会讲解). 2.kafka producer 步骤 1)step name:自定义名称 2)connection ...

  8. 夜莺监控 v7.beta4 发版,仪表盘变量和业务组下的机器联动

    这个版本最大的改动,就是仪表盘变量和业务组下的机器联动.大家可以导入这个大盘做测试: https://github.com/ccfos/nightingale/blob/main/integratio ...

  9. MacOSX 运行Unity卡顿 [gethostname]

    用MacbookPro 32G i7 独显 的高配打开项目发现异常卡顿, Win平台没有问题 打开Unity的Profiler DeepProfiler. 发现完全是卡在 dns.gethostnam ...

  10. 使用allparis正交法,生成测试用例

    原文:https://www.csdn.net/tags/MtzaggysODU0NTItYmxvZwO0O0OO0O0O.html 介绍工具前先讲下理论知识正交法一般适用于多个输入条件且条件与条件之 ...