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

1975react社区问答管理系统开发mysql数据库web结构node.js编程计算机网页源码

一、源码特点
  react 社区问答管理系统是一套完善的完整信息管理类型系统,结合react.js框架和node.js后端完成本系统,对理解react node编程开发语言有帮助系统采用node框架(前后端分离)),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
前段主要技术 react
后端主要技术 node.js
数据库 mysql
开发工具 vscode
环境需要

    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router-dom": "^6.16.0",
    "react-scripts": "5.0.1",
    "web-vitals": "^2.1.4"
vue 版本 2.9.6
node 版本 16.14.2

使用说明

后端服务
nodemon clean exit   这个是 node.js 启动命令
客户端
npm run start 启动命令

二、功能介绍

(1)分类管理:对分类信息进行添加、删除、修改和查看
(2)标签管理:对标签信息进行添加、删除、修改和查看
(3)用户管理:对用户信息进行添加、删除、修改和查看
(4)问答管理:对问答信息进行添加、删除、修改和查看,同时进行其他业务操作,也可以进行深度检索
(5)评论管理:对评论信息进行添加、删除和查看
(6)关注管理:对关注信息进行添加、删除、和查看
(7)点赞管理:对点赞信息进行添加、删除和查看
(8)举报管理:对举报信息进行添加、删除、修改和查看
(9)通知管理:对通知信息进行添加、删除、修改和查看
(10)私信管理:对私信信息进行添加、删除、修改和查看
(11)用户登录、退出、个人信息修改、用户注册

数据库设计

CREATE TABLE `fenlei` (
`flid` int(11) NOT NULL auto_increment,
`fl` VARCHAR(40) default NULL COMMENT '分类',  PRIMARY KEY  (`flid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `biaoqian` (
`bqid` int(11) NOT NULL auto_increment,
`bq` VARCHAR(40) default NULL COMMENT '标签',  PRIMARY KEY  (`bqid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `yonghu` (
`yhid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',
`qx` VARCHAR(40) default NULL COMMENT '权限',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
`lxdz` VARCHAR(40) default NULL COMMENT '联系地址',  PRIMARY KEY  (`yhid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `wenda` (
`wdid` int(11) NOT NULL auto_increment,
`wdh` VARCHAR(40) default NULL COMMENT '问答号',
`bt` VARCHAR(40) default NULL COMMENT '标题',
`nr` VARCHAR(40) default NULL COMMENT '内容',
`fbsj` VARCHAR(40) default NULL COMMENT '发布时间',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`zt` VARCHAR(40) default NULL COMMENT '状态',
`dzl` VARCHAR(40) default NULL COMMENT '点赞量',  PRIMARY KEY  (`wdid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `pinglun` (
`plid` int(11) NOT NULL auto_increment,
`wd` VARCHAR(40) default NULL COMMENT '问答',
`pl` VARCHAR(40) default NULL COMMENT '评论',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`plsj` VARCHAR(40) default NULL COMMENT '评论时间',  PRIMARY KEY  (`plid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `guanzhu` (
`gzid` int(11) NOT NULL auto_increment,
`zz` VARCHAR(40) default NULL COMMENT '作者',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`gzsj` VARCHAR(40) default NULL COMMENT '关注时间',  PRIMARY KEY  (`gzid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

react.js设计

import React, { useState } from 'react';
import axios from 'axios';
import { useNavigate } from 'react-router-dom';
//举报添加页面
function Addjubao() {const [formData, setFormData] = useState({bt: '',jbnr: '',wd: '',jbsj: '',yh: '',zt: '',});// 定义 handleChange 函数const handleChange = (e) => {setFormData((prevState) => ({...prevState,[e.target.name]: e.target.value,}));};    const handleReset = () => {setFormData({   bt: '',   jbnr: '',   wd: '',   jbsj: '',   yh: '',   zt: '',    });};const navigate = useNavigate();const handleSubmit = (event) => {event.preventDefault();// 发送POST请求到后端保存举报数据axios.post('/api/jubao/save', {form:formData}).then(() => {alert("保存成功");//   navigate('/');  handleReset(); // 重置表单}).catch(error => {alert('添加举报时发生错误');console.error("添加举报时发生错误:", error);});};return (<div><h2>添加举报</h2><form onSubmit={handleSubmit} method='post'><div className="form-group"><label>标题:</label><input type="text" className="form-control" name="bt" value={formData.bt}onChange={handleChange} required /></div><div className="form-group"><label>举报内容:</label><input type="text" className="form-control" name="jbnr" value={formData.jbnr}onChange={handleChange} required /></div><div className="form-group"><label>问答:</label><input type="text" className="form-control" name="wd" value={formData.wd}onChange={handleChange} required /></div><div className="form-group"><label>举报时间:</label><input type="text" className="form-control" name="jbsj" value={formData.jbsj}onChange={handleChange} required /></div><div className="form-group"><label>用户:</label><input type="text" className="form-control" name="yh" value={formData.yh}onChange={handleChange} required /></div><div className="form-group"><label>状态:</label><input type="text" className="form-control" name="zt" value={formData.zt}onChange={handleChange} required /></div><div className="form-group"><button type="submit" className="btn btn-primary">保存</button>  <button type="button" onClick={handleReset} id="reset" className="btn btn-success" >重置</button></div></form></div>);
}export default Addjubao;

node.js设计

 // 3.2 创建路由单元
//let router=express.Router();let router=express.Router();//3.3 查询关注接口 
router.get('/findAll',(req,res)=>{const zz=req.query.zz;//作者// console.log("zz="+zz);const yh=req.query.yh;//用户// console.log("yh="+yh);db.getConnection((err,connection)=>{if(err) throw err;let sql='select * from guanzhu where 1=1 ';if(zz){sql+=`and zz like '%${zz}%'`;//动态拼接sql}if(yh){sql+=`and yh like '%${yh}%'`;//动态拼接sql}console.log(sql);connection.query(sql,(err,results)=>{if(err) throw err;res.json(new Response(200,results,'查询成功'))});// 释放连接对象connection.release();})
});// 3.3 删除关注接口 
router.get('/deleteById',(req,res)=>{// query是一个对象可以将id解构出来// let id=req.query.id等价于一下代码let {id}=req.query;db.getConnection((err,connection)=>{if(err) throw err; // 根据id删除数据let sql=`delete from guanzhu where gzid=${id}`;connection.query(sql,(err,results)=>{if(err) throw err;res.json(new Response(200,null,'删除成功'))});connection.release()})});//3.4 导出
module.exports=router//3.3 查询关注接口 
router.get('/findOne',(req,res)=>{let {id}=req.query;db.getConnection((err,connection)=>{if(err) throw err;let sql=`select * from guanzhu where gzid=${id}`;connection.query(sql,(err,results)=>{if(err) throw err;res.json(new Response(200,results[0],'查询成功'))});// 释放连接对象connection.release();})
});// 3.3 关注修改接口
router.post('/update',(req,res)=>{// 根据数据库的数据 将id name gender 解构出来let {id,form}=req.body;// console.log("form.name  ="+form);  db.getConnection((err,connection)=>{if(err) throw err;let sql='';// 需要判断id判断 id存在则为修改接口  id不存在则为新增接口// 修改sql=`update guanzhu set zz='${form.zz}',yh='${form.yh}',gzsj='${form.gzsj}' where gzid=${id}`;// 执行sql操作connection.query(sql,(err,results)=>{if(err) throw err;res.json(new Response(200,null,'修改成功'))})})
})// 3.3 新增关注接口
router.post('/save',(req,res)=>{// 根据数据库的数据 将id name gender 解构出来let {form}=req.body;console.log("form="+form);//  console.log("form.name  ="+form.name);  db.getConnection((err,connection)=>{if(err) throw err;let sql='';// 需要判断id判断 id存在则为修改接口  id不存在则为新增接口sql=`insert into guanzhu(zz,yh,gzsj) values('${form.zz}','${form.yh}','${form.gzsj}')`;console.log("sql="+sql);// 执行sql操作connection.query(sql,(err,results)=>{if(err) throw err;res.json(new Response(200,null,'保存成功'))})})
})router.post('/gz',(req,res)=>{// 根据数据库的数据 将id name gender 解构出来let {form}=req.body;console.log("form="+form);//  console.log("form.name  ="+form.name);  db.getConnection((err,connection)=>{if(err) throw err;let sql='';// 需要判断id判断 id存在则为修改接口  id不存在则为新增接口sql='delete from guanzhu where zz='+form.zz+' and yh='+form.yh+''  ;connection.query(sql,(err,results)=>{if(err) throw err;// res.json(new Response(200,null,'保存成功'))})sql=`insert into guanzhu(zz,yh,gzsj) values('${form.zz}','${form.yh}','${form.gzsj}')`;console.log("sql="+sql);// 执行sql操作connection.query(sql,(err,results)=>{if(err) throw err;res.json(new Response(200,null,'保存成功'))})})
})

三、注意事项
1、管理员账号:admin密码:admin 数据库配置文件\sqwd\util\pool.js
2、开发环境为vscode开发,数据库为mysql,使用react语言开发。
3、数据库文件名是reactsqwd.sql 系统名称sqwd. 地址:http://128.0.0.1:3000/login

四 系统实现

需要源码 其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

http://www.lryc.cn/news/391396.html

相关文章:

  • SSL/CA 证书及其相关证书文件解析
  • 鸿蒙小案例-自定义键盘
  • STM32智能农业监控系统教程
  • 分子AI预测赛笔记
  • 003 线程的暂停和中断
  • mysql在部署时的问题
  • Flutter集成高德导航SDK(Android篇)(JAVA语法)
  • 代码随想录Day76(图论Part11)
  • 工程化:Commitlint / 规范化Git提交消息格式
  • 电脑有线网卡和无线网卡的MAC地址
  • 代码随想录-DAY②-数组——leetcode 977 | 209
  • 稀疏数组搜索
  • 存储器类型介绍
  • 论文学习笔记1:Federated Graph Neural Networks: Overview, Techniques, and Challenges
  • [数据集][目标检测]轮椅检测数据集VOC+YOLO格式13826张1类别
  • 视频剪辑音乐自动卡点Pr插件 BeatEdit v2.2 免费下载
  • 【INTEL(ALTERA)】为什么Nios® II构建流程报告无法在 Windows WSL 上确定程序大小?
  • 2024年第十四届APMCM亚太地区大学生数学建模竞赛
  • 删除账户相关信息
  • JavaSE (Java基础):面向对象(下)
  • Element中的日期时间选择器DateTimePicker和级联选择器Cascader
  • Construct公司 从 0 到 1 基于 Kitex+Istio 的微服务系统建设
  • day04-组织架构
  • Web3 开发者入门手册:技能、工具和职业前景
  • 元宇宙虚拟实景展馆树立客户对企业的信任和好感
  • 【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
  • vue3 滚动条滑动到元素位置时,元素加载
  • [Linux] 相对路径(Relative Path)与绝对路径(Absolute Path)
  • [ESP32] I2S播放wav文件
  • YOLOv8