计算机专业毕业设计项目推荐11-博客项目(Go+Vue+Mysql)

博客项目(Go+Vue+Mysql)

    • **介绍**
    • **系统总体开发情况-功能模块**
    • **各部分模块实现**

介绍

  • 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业毕业设计流程以及模式,在编写的过程中可以说几乎是参照毕业设计目录样式来进行的.
  • 博主分享的基本都是自己接触过的项目Demo,整理了一下自己做过的项目,将可以作为毕业设计的项目分享给大家。(注:项目基本都是博主自己用过的,所以不存在远古代码无法使用

系列的文章后端都是采用Java或者Go语言,前端主要是采用的原生JsVue框架搭建的。数据都是采用Mysql。还有较少的微信小程序开发。开发工具这些可以自己选择,我分享一下自己的Go语言开发我用的Vscode,前端用的HBuilder X,测试接口Postman,Java开发用的IDEA。数据库查看用的navicat,上传服务器Xshell 7和Xftp 7。

系统总体开发情况-功能模块

各部分模块实现

今天主要是将后端实现登录效果和改一些前端的代码

前端:
在这里插入图片描述
在这里插入图片描述

因为原始代码是将侧边栏写在了App.vue里面,所以我改了一下增加了Sidebar.vue将侧边栏新建了一个文件保存。然后在App.vue里面引用。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(这也是我的项目哈,俺叫王先生以前的名字)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package modelimport ("github.com/dgrijalva/jwt-go"
)//User表
type User struct {Id       int    `json:"id"`Username string `json:"username"`Password string `json:"password"`
}// UserLogin 用户登录
func UserLogin(username string) (User,error){mod := User{}err :=Db.Get(&mod, "select * from userlogin where username=? limit 1", username)return mod,err
}//UserClaims    token 携带的数据type UserClaims struct {Id       int    `json:"id"`Username string `json:"username"`Password string `json:"password"`jwt.StandardClaims
}
package routeimport (// "fmt""github.com/zxysilent/utils""github.com/dgrijalva/jwt-go""blog_go/model""github.com/labstack/echo"
)// ServerHeader middleware adds a `Server` header to the response.
func ServerHeader(next echo.HandlerFunc) echo.HandlerFunc {return func(ctx echo.Context) error {ctx.Response().Header().Set(echo.HeaderServer, "Echo/3.0")// fmt.Println(ctx.Response().Header())tokenString := ctx.FormValue("token")claims := model.UserClaims{}token, err := jwt.ParseWithClaims(tokenString, &claims, func(token *jwt.Token) (interface{}, error) {return []byte("123"), nil})if err==nil && token.Valid {return next(ctx)} else {return ctx.JSON(utils.ErrToken("验证失败"))}}
}
package routeimport ("github.com/labstack/echo/middleware""blog_go/control""github.com/labstack/echo"
)func Run(){blog := echo.New()blog.Use(middleware.CORS())blog.Use(middleware.Logger())blog.Use(middleware.Recover())//用户登录blog.POST("/admin/login", control.UserLogin)adm:=blog.Group("/admin",ServerHeader)blog.GET("/", control.Index)blog.Logger.Fatal(blog.Start(":1323"))// blog.Start(":1323")
}
package controlimport (// "fmt""time""github.com/zxysilent/utils""blog_go/model""github.com/dgrijalva/jwt-go""github.com/labstack/echo"
)type login struct {Username string `json:"username"`Password string `json:"password"`
}func UserLogin(ctx echo.Context) error {ipt := login{}err:=ctx.Bind(&ipt)if err!=nil{return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))}mod, err :=model.UserLogin(ipt.Username)if err!=nil {return ctx.JSON(utils.ErrIpt("用户名错误", err.Error()))}if mod.Password !=ipt.Password{return ctx.JSON(utils.ErrIpt("密码错误"))}// Create the UserClaims 生成claims := model.UserClaims{Id:mod.Id,Username:mod.Username,Password:mod.Password,StandardClaims: jwt.StandardClaims{ExpiresAt: time.Now().Add(2*time.Hour).Unix(),},}token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)//自己的密钥ss, err := token.SignedString([]byte("123"))// fmt.Printf("%v %v", ss, err)return ctx.JSON(utils.Succ("登录成功", ss))
}	前端写的路由守卫:```javascript
import Vue from 'vue'
import Router from 'vue-router'// import Login from '@/view/Login'
Vue.use(Router)const router = new Router({routes: [{path: '/',redirect: '/login'},{path: '/login',component: resolve => require(['@/view/login'], resolve),meta: {title: '后台登陆'},},{path: '/organizationManage',component: resolve => require(['@/view/index/index'], resolve),meta: {title: '首页'},redirect: to => {return '/organizationManage'},children:[{path: '/organizationManage',component: resolve => require(['@/view/organization_manage/index'], resolve),meta: {title: '组织管理'},},{path: '/staffManage',component: resolve => require(['@/view/staff_manage/index'], resolve),meta: {title: '员工管理'},},],},{path: '/personManage',component: resolve => require(['@/view/index/index'], resolve),meta: {title: '个人管理'},redirect: to => {return '/personManage'},children:[{path: '/personManage',component: resolve => require(['@/view/personal/personinformation'], resolve),meta: {title: '个人管理1'},},// {// 	path: '/staffManage',// 	component: resolve => require(['@/view/staff_manage/index'], resolve),// 	meta: {// 		title: '员工管理'// 	},// },],},]
});//导航守卫限制页面
// 使用 router.beforeEach 注册一个全局前置守卫,判断用户是否登陆
router.beforeEach((to, from, next) => {if (to.path === '/login') {next();} else {let token = localStorage.getItem('token');if (token === null || token === '') {next('/');} else {next();}}
});export default router;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 async submitForm(formName) {this.$refs[formName].validate(async (valid) => {if (valid) {const res = await useredit({token: getStore('token'),nickname:this.formLabelAlign.nickname,email:this.formLabelAlign.email,signature:this.formLabelAlign.signature})console.log(res)if(res.code==200){console.log('submit!');}else{console.log("修改失败");}} else {console.log('error submit!!');return false;}});},
// UserEdit 个人信息修改
func UserEdit(nickname,email,signature,token string) error {tx,_ :=Db.Begin()//事务result, err :=tx.Exec("update userinformation set `nickname`=?,email=?,signature=? where token=?", nickname,email,signature,token)if err!=nil{tx.Rollback()return err}rows,_ :=result.RowsAffected()if rows<1	{tx.Rollback()return errors.New("row affecter<1")}tx.Commit()return nil
}

文章管理
在这里插入图片描述
后台管理页面:
在这里插入图片描述
在这里插入图片描述

编辑删除功能都做啦。当然也少不了新增。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后想说的
对项目有任何疑问,或者说想学习项目开发的都可以来问博主哦~。也可以选题,开题指导,论文整体框架或者项目整体开发指导。

计算机专业毕业设计项目(附带有配套源码以及相关论文,有需要的同学可以联系博主,但是不免费哦)。

联系方式
微信号:wxid_rrun0cqao5ny22

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/150081.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树--对称二叉树

小白同学对于二叉树还是不太了解的&#xff0c;作者推荐&#xff1a;二叉树的初步认识_加瓦不加班的博客-CSDN博客 对称二叉树-力扣 101 题 作者给的图&#xff1a; 代码&#xff1a; public boolean isSymmetric(TreeNode root) {//刚刚开始&#xff0c;传入的是顶堆的左、右…

时序预测 | MATLAB实现ICEEMDAN-IMPA-GRU时间序列预测

时序预测 | MATLAB实现ICEEMDAN-IMPA-GRU时间序列预测 目录 时序预测 | MATLAB实现ICEEMDAN-IMPA-GRU时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 ICEEMDAN-IMPA-GRU功率/风速预测 基于改进的自适应经验模态分解改进海洋捕食者算法门控循环单元时间序列预…

【python海洋专题十二】年平均的南海海表面温度图

【python海洋专题十二】年平均的南海海表面温度图 上期内容 南海水深图 本期内容 年平均的南海平面温度图 数据来源 NCEP/DOE Reanalysis II: NOAA Physical Sciences Laboratory NCEP/DOE Reanalysis II skt.skt.sfc.mon.ltm.nc Part01. 本文重点内容 前几期地形图&a…

【MATLAB源码-第43期】基于matlab的turbo码误码率仿真比较不同迭代次数,采用logmap/sova算法。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 Turbo码是一种前向纠错码 (Forward Error Correction, FEC)&#xff0c;在 1993 年由法国的两位研究员 Claude Berrou 和 Alain Glavieux 提出。这种编码技术以其接近 Shannon 极限的高性能而受到广泛关注。以下是关于 Turbo…

关联规则挖掘(下):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

【Kafka专题】Kafka收发消息核心参数详解

目录 前置知识课程内容一、从基础的客户端说起&#xff08;Java代码集成使用&#xff09;1.1 消息发送者源码示例1.2 消息消费者源码示例1.3 客户端使用小总结 *二、从客户端属性来梳理客户端工作机制*2.1 消费者分组消费机制2.2 生产者拦截器机制2.3 消息序列化机制2.4 消息分…

学习笔记|串口通信的基础知识|同步/异步|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础

目录 1.串口通信的基础知识串口通信(Serial Communication)同步/异步&#xff1f;全双工&#xff1f;常见的串口软件的参数 2.STC32的串口通信实现原理引脚选择模式选择 3.串口通信代码实现编写串口1通信程序测试 总结 1.串口通信的基础知识 百度百科&#xff1a;串口通信的概…

北大硕士7年嵌入式学习经验分享

阶段 1 大一到大三这个阶段我与大多数学生相同&#xff1a; 学习本专业知识&#xff08;EE专业&#xff09;&#xff0c;学习嵌入式软件开发需要的计算机课程&#xff08;汇编原理&#xff0c;计算机组成原理&#xff0c;操作系统&#xff0c;C语言等&#xff09;&#xff0c…

目标识别项目实战:基于Yolov7-LPRNet的动态车牌目标识别算法模型(二)

前言 目标识别如今以及迭代了这么多年&#xff0c;普遍受大家认可和欢迎的目标识别框架就是YOLO了。按照官方描述&#xff0c;YOLOv8 是一个 SOTA 模型&#xff0c;它建立在以前 YOLO 版本的成功基础上&#xff0c;并引入了新的功能和改进&#xff0c;以进一步提升性能和灵活性…

cpp primer笔记070-算法函数

accumulate的第三个参数的类型决定了函数中使用哪个加法运算符以及返回值的类型&#xff0c;如果返回值是自定义类型&#xff0c;需要使用accumlate&#xff0c;则需要重载运算符&#xff0c;该接口的第三个参数返回的是一个需要处理的数据类型的一个变量。 std::vector<std…

要体验 AI 编程助手吗?

能不能用 AI 编程辅助写代码&#xff1f; 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术&#xff0c;观点&#xff0c;和项目&#xff0c;并将中国优秀开发者或技术…

【傅里叶梅林图像配准】用于图像配准的傅里叶梅林相位相关性的实现(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

创建型设计模式 原型模式 建造者模式 创建者模式对比

创建型设计模式 单例 工厂模式 看这一篇就够了_软工菜鸡的博客-CSDN博客 4.3 原型模式 4.3.1 概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 4.3.2 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了…

数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)

已知2010-2020数据&#xff0c;预测2021-2060数据 一、Logistic预测人口 %%logistic预测2021-2060年结果 clear;clc; X[7869.34, 8022.99, 8119.81, 8192.44, 8281.09, 8315.11, 8381.47, 8423.50, 8446.19, 8469.09, 8477.26]; nlength(X)-1; for t1:nZ(t)(X(t1)-X(t))/X(t1…

黑豹程序员-架构师学习路线图-百科:CSS-网页三剑客

文章目录 1、为什么需要CSS2、发展历史3、什么是CSS4、什么是SASS、SCSS 1、为什么需要CSS 作为网页三剑客的第二&#xff0c;CSS为何需要它&#xff0c;非常简单HTML只能完成页面的展现&#xff0c;但其做出来的页面奇丑无比。 随着网络的普及&#xff0c;人们的要求更高&…

Linux系统编程系列之线程的信号处理

Linux系统编程系列&#xff08;16篇管饱&#xff0c;吃货都投降了&#xff01;&#xff09; 1、Linux系统编程系列之进程基础 2、Linux系统编程系列之进程间通信(IPC)-信号 3、Linux系统编程系列之进程间通信(IPC)-管道 4、Linux系统编程系列之进程间通信-IPC对象 5、Linux系统…

Stable Signature - 为开源生成式AI 创建的图像 添加水印的新方法

文章目录 关于 Stable Signature 关于 Stable Signature 一种为开源生成式AI创建的图像添加水印的新方法 Stable Signature: A new method for watermarking images created by open source generative AI https://ai.meta.com/blog/stable-signature-watermarking-generativ…

洁净室悬浮粒子:手持式、在线式、便携式粒子计数器如何选择呢?

粒子计数器一般分为手持式、便携式、在线式。每种计数器都有不同的适用场景。 您是否正在考虑为您的洁净室配备新的粒子计数器&#xff1f;有许多选项可能更适合您。 手持式粒子计数器 手持式粒子计数器是一种小型粒子计数器&#xff0c;易于移动&#xff0c;可在洁净室中进行…

VMware Horizon 8 运维系列(二)win10设置共享桌面图标

前言 在win10模板上用管理员帐号安装好软件之后&#xff0c;有的软件快捷图标不会出现在桌面上&#xff0c;有的即使有在桌面上出现&#xff0c;但是当发布云桌面池后&#xff0c;客户端登录的都是不同的域用户&#xff0c;当不同的用户登录系统的时候&#xff0c;很多软件快捷…

因为计算机中找不到mfc140.dll无法启动修复步骤分享

mfc140.dll是Microsoft Foundation Class Library&#xff08;微软基础类库&#xff09;的一个组件&#xff0c;它是许多Windows应用程序&#xff08;尤其是使用MFC编写的程序&#xff09;所必需的动态链接库。MFC&#xff08;Microsoft Foundation Classes&#xff09;是一个用…