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


    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文件的编写。该类的完整的代码如下。

    1. // 数据库连接帮助文件
    2. const mysql = require('mysql');
    3. class DBHelper_Score {
    4. // 获取数据库连接
    5. getConn() {
    6. // 数据库连接配置
    7. let conn = mysql.createConnection({
    8. host: 'localhost',//数据库的url
    9. port: '3306',//数据库的端口号
    10. user: 'root',//数据库账号
    11. password: 'root',//数据库密码
    12. database: 'exam_db' // 数据库名
    13. });
    14. conn.connect();
    15. return conn;
    16. }
    17. }
    18. module.exports = DBHelper_Score;

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

    1. // sql语句
    2. var sqlMap = {
    3. score: {
    4. // 获取所有考试信息
    5. getscores: 'select * from score',
    6. // 更新考试的信息
    7. updatescore: 'update score set stuName = ?,ChineseScore = ?,EnglishScore = ?,MathScore = ?,ScienceScore = ? where stuId=? ',
    8. // 删除考试的信息
    9. deletescore: 'delete from score where stuId=?',
    10. // 添加考试的信息
    11. addscore: 'insert into score (stuId,stuName,ChineseScore,EnglishScore ,MathScore ,ScienceScore) values(?,?,?,?,?,?)'
    12. }
    13. }
    14. module.exports = sqlMap;

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

    1. // 实现考试信息的增删改查
    2. // 导入需要的包
    3. const express = require('express');
    4. const router = express.Router();
    5. const sqlMap_Score = require('../sqlMap_Score');
    6. const DBHelper_Score = require('../utils/DBHelper_Score');
    7. // ===查询所有考试信息
    8. router.post('/getScores', (req, res) => {
    9. let sqlStr = sqlMap_Score.score.getscores;
    10. let conn = new DBHelper_Score().getConn();
    11. conn.query(sqlStr, (err, result) => {
    12. if (err) {
    13. res.json(err);
    14. } else {
    15. res.json(result)
    16. }
    17. });
    18. conn.end();
    19. });
    20. // ===删除一条score信息
    21. router.post('/deleteScore', (req, res) => {
    22. let sqlStr = sqlMap_Score.score.deletescore;
    23. let conn = new DBHelper_Score().getConn();
    24. let params = req.body;
    25. conn.query(sqlStr, [params.stuId], (err, result) => {
    26. if (err) {
    27. res.json(err);
    28. } else {
    29. res.json(result)
    30. }
    31. });
    32. conn.end();
    33. });
    34. // ===添加一条score信息
    35. router.post('/addScore', (req, res) => {
    36. let sqlStr = sqlMap_Score.score.addscore;
    37. let conn = new DBHelper_Score().getConn();
    38. let params = req.body;
    39. console.log(params);
    40. //添加信息
    41. conn.query(sqlStr, [params.stuId, params.stuName, params.ChineseScore, params.EnglishScore, params.MathScore, params.ScienceScore], (err, result) => {
    42. if (err) {
    43. res.json(sqlStr + " " + err);
    44. } else {
    45. res.json(result)
    46. }
    47. });
    48. conn.end();
    49. });
    50. // ===修改一条score的信息
    51. router.post('/updateScore', (req, res) => {
    52. let sqlStr = sqlMap_Score.score.updatescore;
    53. let conn = new DBHelper_Score().getConn();
    54. let params = req.body;
    55. console.log(params);
    56. conn.query(sqlStr, [params.stuName, params.ChineseScore, params.EnglishScore, params.MathScore, params.ScienceScore, params.stuId], (err, result) => {
    57. if (err) {
    58. res.json(sqlStr + " " + err);
    59. } else {
    60. res.json(result)
    61. }
    62. });
    63. conn.end();
    64. });
    65. module.exports = router;

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

    1. // index.js是Express服务器入口文件,代码如下。
    2. // node后端服务器
    3. const http = require('http');
    4. const badyParser = require('body-parser');
    5. const express = require('express');
    6. const scoreApi = require('./api/scoreApi');
    7. let app = express();
    8. let server = http.createServer(app);
    9. // 解析body数据
    10. app.use(express.json())
    11. app.use(badyParser.json());
    12. app.use(badyParser.urlencoded({
    13. extended: false
    14. }));
    15. // 后端api路由
    16. app.use('/api/score', scoreApi);
    17. // 启动监听8888端口。
    18. server.listen(8888, () => {
    19. console.log(' success!! port:8888')
    20. })

    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步完成了学生考试信息的接口的设计和测试,下面将编写学生考试信息的前端的页面。

  • 相关阅读:
    mannose-PEG-Alkyne|甘露糖-聚乙二醇-巯基|巯基修饰甘露糖
    Sass 基础教程——预处理器
    Linux 使用gcc编译一个helloworld程序
    Mysql5.7大限将至升级Mysql 8.0过程记录(未完)
    Spring Boot集成RabbitMQ快速入门Demo
    【数学】Monocarp and the Set—CF1886D
    python编程:加速计算机,优化性能的关键一步——清理临时文件夹Temp
    【21天打卡】前端攻城狮重学算法之-希尔排序
    openai/CLIP 代码样例报告
    【申报指南】国家高新技术企业的认定标准、认定条件及奖励政策
  • 原文地址:https://blog.csdn.net/weixin_41957626/article/details/127977632