springboot框架VUE3心理健康服务管理系统开发mysql数据库网页设计java编程计算机网页源码maven项目
博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
一、源码特点
springboot VUE3心理健康服务系统是一套完善的完整信息管理类型系统,结合springboot3框架和VUE3、mybatisplus完成本系统,对理解vue java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
前段主要技术 vue3
后端主要技术 springboot java
数据库 mysql
开发工具 IDEA JDK1.8
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以 不建议。
2.IDE环境:推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;;
5.数据库 :mysql8.0 需要修改数据连接配置,以及maven中的mysql 驱动包;
6.是Maven项目;查看源码目录中是否包含pom.xml;
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件 数据库字符集utf-8;
2. 使用IDEA导入项目;
3.vue 项目启动 npm run serve (若已集成,直接访问) 注意 工程文件所在路劲不能含有中文,否则会报错
vue 版本 3.2
node 版本 16.14.2
二、功能介绍
前台功能:
首页浏览
论坛交流
坐诊医生浏览
案例信息浏览
试卷列表
个人中心
用户注册、登录
后台功能:
管理员登录、个人信息修改
用户管理
心理医生管理
病例信息管理
案例信息管理
测试信息管理
试卷信息管理
论坛管理
轮播图管理
数据库设计
表名:binglixinxi
功能:病历信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
binglibianhao | varchar | 200 | 病历编号 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
nianling | varchar | 200 | 年龄 | ||
xingbie | varchar | 200 | 性别 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
bingqingxiangqing | longtext | 4294967295 | 病情详情 | ||
jiuzhenshijian | datetime | 就诊时间 | |||
zhenduanjieguo | longtext | 4294967295 | 诊断结果 | ||
yishengzhanghao | varchar | 200 | 医生账号 | ||
yishengxingming | varchar | 200 | 医生姓名 |
表名:anlixinxi
功能:案例信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
anlimingcheng | varchar | 200 | 案例名称 | ||
tupian | longtext | 4294967295 | 图片 | ||
anlileixing | varchar | 200 | 案例类型 | ||
anlishipin | longtext | 4294967295 | 案例视频 | ||
anlixiangqing | longtext | 4294967295 | 案例详情 | ||
fabushijian | datetime | 发布时间 | |||
storeupnum | int | 收藏数量 |
表名:token
功能:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表名:anlileixing
功能:案例类型
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
anlileixing | varchar | 200 | 案例类型 |
表名:yishengjiuzhen
功能:医生就诊
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yuyuebianhao | varchar | 200 | 预约编号 | ||
yishengzhanghao | varchar | 200 | 医生账号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
jiwangbingshi | longtext | 4294967295 | 既往病史 | ||
zhenduanwenti | longtext | 4294967295 | 诊断问题 | ||
zhiliaofangan | longtext | 4294967295 | 治疗方案 | ||
jiuzhenxiangqing | longtext | 4294967295 | 就诊详情 | ||
jiuzhenshijian | datetime | 就诊时间 | |||
jiuzhenzhuangtai | varchar | 200 | 就诊状态 | ||
yanzhongchengdu | varchar | 200 | 严重程度 |
表名:menu
功能:菜单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
menujson | longtext | 4294967295 | 菜单 |
表名:config
功能:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表名:xinliyisheng
功能:心理医生
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yishengzhanghao | varchar | 200 | 医生账号 | ||
yishengmima | varchar | 200 | 医生密码 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
zhaopian | longtext | 4294967295 | 照片 | ||
xingbie | varchar | 200 | 性别 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
sfsh | varchar | 200 | 是否审核 | ||
shhf | longtext | 4294967295 | 回复内容 |
表名:zuozhenyisheng
功能:坐诊医生
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yishengzhanghao | varchar | 200 | 医生账号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
zhaopian | longtext | 4294967295 | 照片 | ||
keyuerenshu | int | 可约人数 | |||
zixunfeiyong | double | 咨询费用 | |||
keyueshijian | varchar | 200 | 可约时间 | ||
zhuanyezizhi | longtext | 4294967295 | 专业资质 | ||
zhuanyelingyu | longtext | 4294967295 | 专业领域 | ||
gerenjianjie | longtext | 4294967295 | 个人简介 | ||
storeupnum | int | 收藏数量 | |||
jiuzhendidian | varchar | 200 | 就诊地点 |
表名:users
功能:管理员
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
username | varchar | 200 | 用户名 | ||
password | varchar | 200 | 密码 | ||
role | varchar | 200 | 角色 |
表名:yuyueyisheng
功能:预约医生
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yishengzhanghao | varchar | 200 | 医生账号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
keyueshijian | varchar | 200 | 可约时间 | ||
zixunfeiyong | double | 咨询费用 | |||
keyuerenshu | int | 预约数量 | |||
yuyueshijian | datetime | 预约时间 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
zhuzhi | varchar | 200 | 住址 | ||
sfsh | varchar | 200 | 是否审核 | ||
shhf | longtext | 4294967295 | 回复内容 | ||
ispay | varchar | 200 | 是否支付 | ||
jiuzhenzhuangtai | varchar | 200 | 就诊状态 |
表名:yonghu
功能:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghumima | varchar | 200 | 用户密码 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
touxiang | longtext | 4294967295 | 头像 | ||
xingbie | varchar | 200 | 性别 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
nianling | int | 年龄 | |||
zhuzhi | varchar | 200 | 住址 |
表名:storeup
功能:我的收藏
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | refid | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 名称 | ||
picture | longtext | 4294967295 | 图片 | ||
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注) | ||
inteltype | varchar | 200 | 推荐类型 | ||
remark | varchar | 200 | 备注 | ||
userid | bigint | 用户id |
表名:quxiaoyuyue
功能:取消预约
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yishengzhanghao | varchar | 200 | 医生账号 | ||
yishengxingming | varchar | 200 | 医生姓名 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
keyueshijian | varchar | 200 | 可约时间 | ||
keyuerenshu | int | 取消次数 | |||
quxiaoyuanyin | varchar | 200 | 取消原因 | ||
quxiaoshijian | datetime | 取消时间 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
sfsh | varchar | 200 | 是否审核 | ||
shhf | longtext | 4294967295 | 回复内容 |
表名:forum
功能:论坛交流
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 帖子标题 | ||
content | longtext | 4294967295 | 帖子内容 | ||
parentid | bigint | 父节点id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 4294967295 | 头像 | ||
isdone | varchar | 200 | 状态 | ||
userid | bigint | 用户id |
表名:examrecord
功能:心理测试
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
username | varchar | 200 | 用户名 | ||
paperid | bigint | 试卷id(外键) | |||
papername | varchar | 200 | 试卷名称 | ||
questionid | bigint | 试题id(外键) | |||
questionname | varchar | 200 | 试题名称 | ||
options | longtext | 4294967295 | 选项,json字符串 | ||
score | bigint | 分值 | |||
answer | varchar | 200 | 正确答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
myscore | bigint | 试题得分 | |||
myanswer | varchar | 200 | 考生答案 | ||
userid | bigint | 用户id |
表名:examquestion
功能:试题管理
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
paperid | bigint | 试卷id(外键) | |||
papername | varchar | 200 | 试卷名称 | ||
questionname | varchar | 200 | 试题名称 | ||
options | longtext | 4294967295 | 选项,json字符串 | ||
score | bigint | 分值 | |||
answer | varchar | 200 | 正确答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
type | bigint | 试题类型 | |||
sequence | bigint | 试题排序,值越大排越前面 |
表名:exampaper
功能:试卷管理
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
name | varchar | 200 | 试卷名称 | ||
time | int | 考试时长(分钟) | |||
status | varchar | 200 | 试卷状态 |
后端代码实现
核心token相关方法
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<TokenEntity> page = this.selectPage(
new Query<TokenEntity>(params).getPage(),
new EntityWrapper<TokenEntity>()
);
return new PageUtils(page);
}
@Override
public List<TokenEntity> selectListView(Wrapper<TokenEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public PageUtils queryPage(Map<String, Object> params,
Wrapper<TokenEntity> wrapper) {
Page<TokenEntity> page =new Query<TokenEntity>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public String generateToken(Long userid,String username, String tableName, String role) {
TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
String token = CommonUtil.getRandomString(32);
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.HOUR_OF_DAY, 1);
if(tokenEntity!=null) {
tokenEntity.setToken(token);
tokenEntity.setExpiratedtime(cal.getTime());
this.updateById(tokenEntity);
} else {
this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));
}
return token;
}
@Override
public TokenEntity getTokenEntity(String token) {
TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("token", token));
if(tokenEntity == null || tokenEntity.getExpiratedtime().getTime()<new Date().getTime()) {
return null;
}
return tokenEntity;
}
控制类
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().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 UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UsersEntity>().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){
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().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,UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
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( UsersEntity user){
EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
前端代码实现
登录功能:
<template>
<div>
<div class="login_view">
<el-form :model="loginForm" class="login_form">
<div class="title_view">基于spring boot心理健康服务系统登录</div>
<div class="list_item" v-if="loginType==1">
<div class="list_label">
账号:
</div>
<input class="list_inp" v-model="loginForm.username" placeholder="请输入账号" />
</div>
<div class="list_item" v-if="loginType==1">
<div class="list_label">
密码:
</div>
<input class="list_inp" v-model="loginForm.password" type="password" placeholder="请输入密码" @keydown.enter.native="handleLogin" />
</div>
<div class="list_type" v-if="userList.length>1">
<div class="list_label">
用户类型:
</div>
<el-select v-model="loginForm.role" placeholder="请选择用户类型">
<el-option v-for="(item,index) in userList" :label="item.roleName" :value="item.roleName"></el-option>
</el-select>
</div>
<div class="btn_view">
<el-button class="login" v-if="loginType==1" type="success" @click="handleLogin">登录</el-button>
<el-button class="register" type="primary" @click="handleRegister('xinliyisheng')">注册心理医生</el-button>
</div>
</el-form>
</div>
<Vcode :show="isShow" @success="success" @close="close" @fail='fail'></Vcode>
</div>
</template>
<script setup>
import {
ref,
getCurrentInstance,
nextTick,
onMounted,
} from "vue";
const userList = ref([])
const menus = ref([])
const loginForm = ref({
role: '',
username: '',
password: ''
})
const tableName = ref('')
const loginType = ref(1)
const context = getCurrentInstance()?.appContext.config.globalProperties;
//注册
const handleRegister = (tableName) => {
context?.$router.push(`/${tableName}Register`)
}
const handleLogin = () => {
if (!loginForm.value.username) {
context?.$toolUtil.message('请输入用户名', 'error')
return;
}
if (!loginForm.value.password) {
context?.$toolUtil.message('请输入密码', 'error')
return;
}
if (userList.value.length > 1) {
if (!loginForm.value.role) {
context?.$toolUtil.message('请选择角色', 'error')
verifySlider.value.reset()
return;
}
for (let i = 0; i < menus.value.length; i++) {
if (menus.value[i].roleName == loginForm.value.role) {
tableName.value = menus.value[i].tableName;
}
}
} else {
tableName.value = userList.value[0].tableName;
loginForm.value.role = userList.value[0].roleName;
}
login()
}
const login = () => {
context?.$http({
url: `${tableName.value}/login?username=${loginForm.value.username}&password=${loginForm.value.password}`,
method: 'post'
}).then(res => {
context?.$toolUtil.storageSet("Token", res.data.token);
context?.$toolUtil.storageSet("role", loginForm.value.role);
context?.$toolUtil.storageSet("sessionTable", tableName.value);
context?.$toolUtil.storageSet("adminName", loginForm.value.username);
context?.$router.push('/')
}, err => {
})
}
//获取菜单
const getMenu=()=> {
let params = {
page: 1,
limit: 1,
sort: 'id',
}
context?.$http({
url: "menu/list",
method: "get",
params: params
}).then(res => {
menus.value = JSON.parse(res.data.data.list[0].menujson)
for (let i = 0; i < menus.value.length; i++) {
if (menus.value[i].hasBackLogin=='是') {
userList.value.push(menus.value[i])
}
}
loginForm.value.role = userList.value[0].roleName
context?.$toolUtil.storageSet("menus", JSON.stringify(menus.value));
})
}
//初始化
const init = () => {
getMenu();
}
onMounted(()=>{
init()
})
</script>
<style lang="scss" scoped>
.login_view {
background-repeat: no-repeat;
flex-direction: column;
background-size: 100% 100%;
background: url(http://clfile.zggen.cn/20240301/cb59505e774a42899501d8d7f1360b75.jpg);
display: flex;
min-height: 100vh;
justify-content: center;
align-items: center;
position: relative;
background-position: center center;
// 表单盒子
.login_form {
border-radius: 0px;
padding: 50px 80px 30px 40px;
margin: 0 auto;
background: url(http://clfile.zggen.cn/20240301/7ac2edfec9b84ae5be0a62f62e8af7bb.png) no-repeat center top / 100% auto,#f7f2ec;
display: flex;
width: 600px;
justify-content: flex-start;
flex-wrap: wrap;
}
.title_view {
padding: 0px;
margin: 0 auto 30px;
color: #333;
font-weight: 500;
width: 80%;
font-size: 22px;
text-align: center;
}
// item盒子
.list_item {
margin: 0 0 20px;
display: flex;
width: 100%;
justify-content: flex-start;
align-items: center;
// label
.list_label {
color: #666;
background: none;
width: 130px;
font-size: 14px;
line-height: 36px;
text-align: right;
}
// 输入框
.list_inp {
border: 1px solid #ddd;
border-radius: 0px;
padding: 0 10px;
color: #666;
background: #fff;
width: 100%;
line-height: 36px;
height: 36px;
}
}
.list_type {
margin: 0 0 20px;
display: flex;
width: 100%;
justify-content: flex-start;
align-items: center;
order: 3;
.list_label {
color: #666;
background: none;
width: 130px;
font-size: 14px;
line-height: 36px;
text-align: right;
}
// 下拉框样式
:deep(.el-select) {
border: 1px solid #ddd;
border-radius: 0px;
padding: 0 10px;
color: #666;
background: #fff;
width: 100%;
font-size: 14px;
line-height: 36px;
box-sizing: border-box;
height: 36px;
//去掉默认样式
.select-trigger{
height: 100%;
.el-input{
height: 100%;
.el-input__wrapper{
border: none;
box-shadow: none;
background: none;
border-radius: 0;
height: 100%;
padding: 0;
}
.is-focus {
box-shadow: none !important;
}
}
}
}
}
// 按钮盒子
.btn_view {
padding: 0;
margin: 20px 0 0;
background: none;
display: flex;
width: 100%;
justify-content: center;
align-items: center;
flex-wrap: wrap;
order: 5;
// 登录
.login {
border: 0;
cursor: pointer;
border-radius: 0px;
padding: 0 24px;
margin: 0 10px 10px 0;
color: #fff;
background: linear-gradient(270deg, rgba(130,196,209,1) 0%, rgba(115,186,200,1) 24%, rgba(174,210,217,1) 100%);
width: auto;
font-size: 16px;
height: 40px;
}
// 注册
.register {
border: 1px solid #ddd;
cursor: pointer;
border-radius: 0px;
padding: 0 10px;
margin: 0 10px 10px 0;
color: #333;
background: #fff;
width: auto;
font-size: 14px;
height: 40px;
}
}
}
</style>
三、注意事项
1、管理员账号:admin密码:admin 数据库配置文件server_code\src\main\resources\application.yml
2、开发环境为IDEA开发,数据库为mysql,使用java语言开发。
3、数据库文件名是cl52924225.sql
4
前台地址:
http://localhost:8082/index/home
123,123
后台地址:
http://localhost:8081/#/login
http://localhost:8082
admin,admin
四系统实现
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者
原文地址:https://blog.csdn.net/qq_41221322/article/details/142461450
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!