基于Vue+ElementUI+MySQL+Express的学生管理系统(2)

news2024/10/7 19:31:07

2.搭建Express Web服务器

1.在E:\vue\shiyan9路径下创建score-server的文件夹放置Express Web服务器的相关文件。

图3 初始化package.json的信息

2.用Vscode打开score-server。并创建如图4所示的项目结构图。

以下目录中的文件依次为:

  • 考试信息增删改查的接口。
  • 数据库连接的帮助类(存储数据库连接的相关信息)。
  • Express Web服务器启动的入口(s设置对应的启动的端口)。
  • package.json第2步中生成的。
  • sqlMap存储的操纵考试信息表的sql语句。

图4 score-server目录结构

3.score-server文件夹下下载express,mysql以及body-parser和multer的依赖包。用于下载的命令如下。

npm install express mysql body-parser multer

图5 score-server依赖包下载

4.编写DBHelper_Score.js文件的编写。该类的完整的代码如下。

// 数据库连接帮助文件
const mysql = require('mysql');
class DBHelper_Score {
    // 获取数据库连接
    getConn() {
        // 数据库连接配置
        let conn = mysql.createConnection({
            host: 'localhost',//数据库的url
            port: '3306',//数据库的端口号
            user: 'root',//数据库账号
            password: 'root',//数据库密码
            database: 'exam_db'  // 数据库名
        });
        conn.connect();
        return conn;
    }
}
module.exports = DBHelper_Score;

5.编写sqlMap_Score.js文件。编写操纵数据库表的相关的SQL语句。该文件的完整代码如下。

// sql语句
var sqlMap = {
    score: {
        // 获取所有考试信息
        getscores: 'select * from score',
        // 更新考试的信息
        updatescore: 'update score set stuName = ?,ChineseScore = ?,EnglishScore = ?,MathScore = ?,ScienceScore = ? where stuId=? ',
        // 删除考试的信息
        deletescore: 'delete from score  where stuId=?',
        // 添加考试的信息
        addscore: 'insert into score (stuId,stuName,ChineseScore,EnglishScore ,MathScore ,ScienceScore) values(?,?,?,?,?,?)'
    }
}
module.exports = sqlMap;

6.编写scoreApi.js文件。该文件主要提供给前端相关接口的,可以完整增删改查的操作的。完整的代码如下。全部接口均采用的post的方式进行实现的。

// 实现考试信息的增删改查
// 导入需要的包
const express = require('express');
const router = express.Router();
const sqlMap_Score = require('../sqlMap_Score');
const DBHelper_Score = require('../utils/DBHelper_Score');
// ===查询所有考试信息
router.post('/getScores', (req, res) => {
    let sqlStr = sqlMap_Score.score.getscores;
    let conn = new DBHelper_Score().getConn();
    conn.query(sqlStr, (err, result) => {
        if (err) {
            res.json(err);
        } else {
            res.json(result)
        }
    });
    conn.end();
});
// ===删除一条score信息 
router.post('/deleteScore', (req, res) => {
    let sqlStr = sqlMap_Score.score.deletescore;
    let conn = new DBHelper_Score().getConn();
    let params = req.body;
    conn.query(sqlStr, [params.stuId], (err, result) => {
        if (err) {
            res.json(err);
        } else {
            res.json(result)
        }
    });
    conn.end();
});
//  ===添加一条score信息
router.post('/addScore', (req, res) => {
    let sqlStr = sqlMap_Score.score.addscore;
    let conn = new DBHelper_Score().getConn();
    let params = req.body;
    console.log(params);
    //添加信息
    conn.query(sqlStr, [params.stuId, params.stuName, params.ChineseScore, params.EnglishScore, params.MathScore, params.ScienceScore], (err, result) => {
        if (err) {
            res.json(sqlStr + " " + err);
        } else {
            res.json(result)
        }
    });
    conn.end();
});
 
// ===修改一条score的信息
router.post('/updateScore', (req, res) => {
    let sqlStr = sqlMap_Score.score.updatescore;
    let conn = new DBHelper_Score().getConn();
    let params = req.body;
    console.log(params);
    conn.query(sqlStr, [params.stuName, params.ChineseScore, params.EnglishScore, params.MathScore, params.ScienceScore, params.stuId], (err, result) => {
        if (err) {
            res.json(sqlStr + " " + err);
        } else {
            res.json(result)
        }
    });
    conn.end();
});
 
 
 
module.exports = router;   

7.编写index.js,设置Express的启动的入口,完整的代码如下。

// index.js是Express服务器入口文件,代码如下。
// node后端服务器
const http = require('http');
const badyParser = require('body-parser');
const express = require('express');
const scoreApi = require('./api/scoreApi');
let app = express();
let server = http.createServer(app);
// 解析body数据
app.use(express.json())
 
app.use(badyParser.json());
app.use(badyParser.urlencoded({
    extended: false
}));
 
// 后端api路由
app.use('/api/score', scoreApi);
// 启动监听8888端口。
server.listen(8888, () => {
    console.log(' success!! port:8888')
})

8.下面使用接口测试工具测试接口的功能。先在终端下启动web服务器,如6所示。

图6 终端下启动Express Web服务器

(1)使用接口测试工具添加5条数据:

插入数据的接口:http://127.0.0.1:8888/api/score/addScore

下面是插入其中一条数据的效果图。

图7 往score表中插入其中一条数据

图8 数据库中查看score中插入的其中1条数据

图9 查看score表中插入的5条数据

(3)修改数据库中准考证号为“20231111004”的学生信息的英语成绩为98。并查看数据库中的score表确认删除的效果。

修改数据的接口:http://127.0.0.1:8888/api/score/updateScore

图10 修改准考证号为“20231111004”的学生信息

图11 数据中查看修改准考证号为“20231111004”的学生的考试信息

(3)查看score表中的全部数据。

查看数据的接口地址为:http://127.0.0.1:8888/api/score/getScores

图12 获取score表的全部信息

(4)删除数据库的准考证号为“20231111004”的学生的考试信息,并查看数据库表确认删除的结果。

删除数据的接口地址为:http://127.0.0.1:8888/api/score/getScores

图13 成功删除学号为20231111004的学生的考试信息

图14 查看score表中的所有数据

从第1-7步完成了学生考试信息的接口的设计和测试,下面将编写学生考试信息的前端的页面。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【BP回归预测】改进的鲸鱼算法优化BP神经网络回归预测(多输入单输出)【含Matlab源码 2184期】

⛄一、鲸鱼算法优化BP神经网络简介 1 鲸鱼优化算法(Whale Optimization Algorithm,WOA)简介 鲸鱼优化算法(WOA),该算法模拟了座头鲸的社会行为,并引入了气泡网狩猎策略。 1.1 灵感 鲸鱼被认为是世界上最大的哺乳动物…

DBCO-mPEG,5 kDa,二苯并环辛炔-MPEG, 5 KDA白色结晶状

●外观以及性质: DBCO-mPEG,5 kDa白色结晶状,其的分子量有多种,10kDa,20kDa,30kDa等一系列的。DBCO活化的聚乙二醇化试剂通过无铜“点击化学”反应与叠氮化物反应,形成稳定的三唑,不需要铜催化剂…

evpp mingw64编译过程

evpp是奇虎360的基于libevent的网络通讯库,源代码不错: https://github.com/Qihoo360/evpp/blob/master/readme_cn.md 它提供vs的编译结构,我用的是mingw64cmake,使用gnu12,把修改过程分享给大家。 步骤1. 修改CMake…

软考中级系统集成项目管理工程师自学好不好过?

可以试试,中级系统集成算是比较好考的一科目,每天的通过率都有30%的!是软考中通过率比较高的。 至于是否自学,有时间有精力就可以自学,在校生一般学习时间多,可以各个渠道搜集信息资料,可以自学…

高分子PEG点击试剂DBCO-PEG20K-OMe,二苯并环辛炔-PEG20K-甲基

DBCO-PEG20K-OMe​产品描述: DBCO-PEG20K-OMe属于高分子PEG点击试剂,DBCO 试剂是一类点击化学标记试剂,含有非常活泼的 DBCO((二苯并环辛炔)基团,​DBCO 试剂可以通过无铜点击化学与叠氮化物标…

vscode连接远程服务器进行cmake调试

一、cmake安装 cmake cmake-3.17.4.tar.gz : https://cmake.org/files/v3.17/cmake-3.17.4.tar.gz sudo apt-get install libssl-dev tar xvf cmake-3.17.4.tar.gz cd cmake-3.17.4 ./configure --prefix/usr make -j18 && sudo make install测试 二、配置 准备两…

如何找回删除的文件?数据恢复,看这几个方法

如果您的电脑出现了问题,或者是因为使用不当而删除了一些文件,那么您需要了解一下如何找回删除的文件。想要清理电脑文件数据,很多人会将其直接删除。其实这种做法是不可取的,因为这种做法可能会造成损失。如何找到已经删除的文件…

怎么把开源项目放到自己的github,gitee,gitea上

一、创建仓库(大部分可以不填) 二、删除.git文件夹 三、执行初始化命令(初始出.git文件夹) 在本地项目下执行命令 git init 四、与远程仓库建立关系 git remote add origin ssh://gitxx.xx.xx.xx:61022/shengbaitong/inst_ops…

IOC和DI入门案例

IOC案例 创建BookDao接口、BookDaoImpl类和BookService接口、BookServiceImpl类 1.BookDao package dao;public interface BookDao {public void save(); }2.BookDaoImpl类 package dao;public class BookDaoImpl implements BookDao{public void save(){System.out.printl…

Invisible Backdoor Attack with Sample-Specific Triggers 论文笔记

1. 论文信息 论文名称Invisible Backdoor Attack with Sample-Specific Triggers作者Yuezun Li(香港大学)出版社ICCV 2021pdf在线pdf 本地pdf代码TensorFlow简介提出了 sample-specific 以及 invisible 的 trigger。使用数字水印技术生成看不见的后门 …

MCE | 肿瘤微环境在癌症中的作用

在过去数十年中,通过使用免疫疗法、靶向疗法和联合方案,癌症治疗领域取得了很大的进步。但这些治疗方案中的绝大多数最终都无法治愈患者,甚至对治疗有显著初始反应的肿瘤也经常复发为耐药恶性肿瘤。另一方面,越来越多的证据表明&a…

A-Level经济例题解析及练习Budget Constraint

知识点:Budget Constraint例题 Question: Budget Constraint Hurley’s income: $1200, Prices: PF $4 per fish, PM $1 per mango A. If Hurley spends all his income on fish, how many fish does he buy? B. If Hurley spends all his income on mangos…

Java开发基础_04

六. 集合框架 #mermaid-svg-g9w5yNcJQzio5Xvm {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-g9w5yNcJQzio5Xvm .error-icon{fill:#552222;}#mermaid-svg-g9w5yNcJQzio5Xvm .error-text{fill:#552222;stroke:#55222…

【总结】Idea 编译maven项目报错NoSuchMethodError DefaultModelValidator

从网上git clone了一个项目,本地编译compile、打包package都没问题。 但是启动服务,启动不了,且查看Dependency Analyzer 没有任何依赖信息。执行Reimport时,报错如下。 错误信息 org.codehaus.plexus.component.repository.exc…

Git的简单使用

Git的简单使用一、关于版本控制1、文件的版本2、版本控制软件1.本地版本控制系统2.集中化的版本控制系统3.分布式的版本控制系统二、Git的简介1、什么是Git2、SVN的差异比较3、Git的记录快照4、Git中的三个区域5、使用Git的基本流程三、Git的基本操作1、配置Git1. 配置用户信息…

集合~List

List List集合概述和特点 List集合概述 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素与Set集合不同,列表通常允许重复的元素 List集合特点 …

【JavaSE】String类总结,StringBuilder、StringBuffer、String的区别讲解

文章目录String对象的构造String类的一些常用方法求字符串的长度字符串判空字符串对象的比较字符串对象的查找字符串对象的转化字符串对象的截取字符串对象的替换字符串对象的拆分字符串对象的大小写转换常用方法总结StringBuilder与StringBuffer字符串为什么不可变String Stin…

Alibaba架构师内部最新发布SpringCloud开发手册,Github限时开源

微服务是SOA之后越来越流行的体系结构模式之一! 如果您关注行业趋势,就会发现,如今商业机构不再像几年前那样,开发大型应用程序,来管理端到端之间的业务功能,而是选择快速灵活的微服务。 通过微服务,架构师…

寒气难抵,跨境电商年底仍有一批卖家要出局!

2020年初的新冠疫情仍历历在目,跨境电商在这两年间也是经历了许多不同的波折和困难。从2020年到2022年,由于各国之间出于疫情防控等多方面的考虑,逐渐的增加贸易壁垒,致使跨境电商的物流成本大概增长了50%,物流成本占订…

UE4 回合游戏项目 22- 控制新角色

在上一节(UE4 回合游戏项目 21- 添加多种类型的敌人)基础上新添加一个玩家角色 效果: 步骤: 1.打开进阶游戏资源,解压“回合迁移_第七节(只是新人物包)” 2.解压后双击打开工程 3.选中“ziyuan…