node.js实现学生信息录入系统

上篇写了一下node的常用的一些方法,下面简单写了一个实例,可以参照上篇博客看。通过node实现学生信息的录入,修改,留言等功能。

资源加载包(package.json)

资源包npm下载即可(执行 npm i 命令)

{
  "name": "curd-express",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "art-template": "^4.13.2",
    "body-parser": "^1.18.3",
    "bootstrap": "^3.3.7",
    "express": "^4.16.4",
    "express-art-template": "^1.0.1",
    "init": "^0.1.2"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

node接口

1.资源包引入

const fs = require("fs");
const url = require("url");
//引入express框架
const express = require("express");
//调用express方法
let app = express();
//模板引擎
const template = require("art-template")
//模板引擎简化(不用写读取页面,直接用res.render("index.html",abc);这样去写)
app.engine("html",require("express-art-template"));

//post请求需要引入
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({
    extended: false }));
app.use(bodyParser.json());

//静态资源加载
app.use("/node_modules",express.static("./node_modules"));
//css样式引入
app.use("/public",express.static("./public"));

2.读取JSON文件,加载首页

app.get("/student",(req,res)=>{
   
   // 取到json数据,转译后取到数组
    fs.readFile("db.json",(err,data)=>{
   
        let strdata = data.toString();
        strdata =  JSON.parse(strdata);
        //放入
        let strdata1 =  strdata["students"];
        let abc = {
   
            list:strdata1
        };
        res.render("index.html",abc);
    })
})

3.添加信息页面(静态无操作)


app.get("/new",(req,res)=>{
   
    res.render("addStu.html");
})

4.添加数据信息操作

app.post("/mes",(req,res)=>{
   
    res.redirect("/student");
    fs.readFile("db.json",(err,data)=>{
   
    //将二进制的数据转换为字符串
        let strdata = data.toString();
    //将字符串转换为json对象 
        strdata =  JSON.parse(strdata);
        let stuArr = strdata["students"];
        let last = stuArr[stuArr.length - 1];
        let id = last.id;
        let query = req.body;
        query.id = id + 1;
        stuArr.push(query);
    //因为nodejs的写入文件只认识字符串或者二进制数
    //所以把json对象转换成字符串重新写入json文件中
        let str = JSON.stringify(strdata);
        fs.writeFile("db.json",str,function(err){
   
        })
    })
})

5.编辑页面

app.get("/edit",(req,res)=>{
   
    let urlObj = url.parse(req.url,true);
    // console.log(urlObj.query.id)
    fs.readFile("db.json",(err,data)=>{
   
    //将二进制的数据转换为字符串
        let strdata = data.toString();
    //将字符串转换为json对象
        strdata =  JSON.parse(strdata);
        let stuArr = strdata["students"];
        let index = urlObj.query.id;
   //将字符串转为整数,如果parseInt的参数不是字符串,则会先转为字符串再转换     
        index = parseInt(index);
        let i = 0;
        stuArr.forEach(value=>{
   
            if(value.id === index){
   
   //将修改内容放入页面更新页面可修改区域
                res.render("updataStu.html",stuArr[i]);
                //console.log(stuArr[i]);
            }
            i++;
        });
    });
});

6.更新数据

//在页面中/doedit的后面拼接了当前value对应的id
app.post("/doedit",(req,res)=>{
   
//获取对应url中所有的数据
    let urlObj = url.parse(req.url,true);
//取到对应点击的id值    
    console.log(urlObj.query.id);
    //读取json文件
    fs.readFile("db.json",(err,data)=>{
   
        let dataSource = data.toString();
       //将字符串转换为json对象
        dataSource = JSON.parse(dataSource);
        let students = dataSource["students"];
        let index = urlObj.query.id;
        index = parseInt(index);
        let i = 0;
      //遍历students的json中的value值
        students.forEach(value=>{
   
        //若可以和所点击下标index匹配,执行
         if(value.id === index){
   
      //删除原本数据
           students.splice(i,1);
           let query = req.body;
           query.id = value.id;
      //替换新数据
         students.splice(i,0,query);
         let str = JSON.stringify(dataSource);
         fs.writeFile("db.json",str,err=>{
   });
         res.redirect("/student");
            }
            i++;
        });
    });
});

7.删除整条数据接口


//在页面中/del的后面拼接了当前value对应的id
app.get("/del",(req,res)=>{
   
    let urlObj = url.parse(req.url,true);
    //读取json文件
    fs.readFile("db.json",(err
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值