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

四 系统实现

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

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_251836457

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值