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

系统介绍:

科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用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. claude3国内API接口对接

    众所周知,由于地理位置原因,Claude3不对国内开放,而国内的镜像网站使用又贵的离谱! 因此,团队萌生了一个想法:为什么不创建一个一站式的平台,让用户能够通过单一的接口与多个模型交流呢?这样,用户就 ...

  2. 高精度离线免费 的C#文字识别PaddleOCR库

    随便打开一个Microsoft Visual Studio,新建一个WinForms项目,从下面列表中随便选择一个NET框架.目标平台要设置成X64,该OCR仅支持64位. net35;net40;n ...

  3. 企业级nginx内核优化篇

    1. cpu核心配置 方法1: worker_processes auto; 自动调用[推荐] 方法2: worker_processes 4; 手工配置 检查CPU核心:yum install nu ...

  4. nginx知识点汇总

  5. 规则引擎easyRules中组合规则的使用

    这两天想要做支付路由,要根据支付信息将支付请求转发到不同的支付渠道,可能要用到规则引擎,于是研究了一下开源的规则引擎产品.规则引擎核心知识与开源产品对比选型 ,这篇文章对规格引擎和开源产品有详细的介绍 ...

  6. C#.NET Winform使用线程承载WCF (硬编码配置)

    winform同步承载WCF时,遇到大量请求,可能会阻塞UI线程.这时就需要开个线程来承载WCF. 1.硬编码形式创建WCF服务,WCFServer类: using CommonUtils; usin ...

  7. 使用Git命令从本地上传到码云

    Gitee创建仓库内没有内容 本地: 初始化Git仓库:git init 提交文件到暂存区:git add . //. 表示提交所有文件 提交文件到工作区:git commit -m "此次 ...

  8. Base64编码和解码字符串

    Base64编码和解码字符串 package com.example.core.mydemo.cpic; import org.apache.commons.codec.binary.Base64; ...

  9. 从 Docker Hub 拉取镜像受阻?这些解决方案帮你轻松应对

    最近一段时间 Docker 镜像一直是 Pull 不下来的状态,感觉除了挂,想直连 Docker Hub 是几乎不可能的.更糟糕的是,很多原本可靠的国内镜像站,例如一些大厂和高校运营的,也陆续关停了, ...

  10. python-pytest:多进程、多线程执行用例

    准备工作: Python Package pytest-parallel-0.0.10: windows版本只能是0.0.10 pytest-xdist 这两个包都是基于pytest基础上,实现多进程 ...