前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >案例:学生档案管理

案例:学生档案管理

作者头像
Qwe7
发布2022-05-24 08:22:04
8340
发布2022-05-24 08:22:04
举报
文章被收录于专栏:网络收集

案例:学生档案管理

app.js

// 引入http模块

const http = require('http');

// 引入模板引擎

const template = require('art-template');

// 引入path模块

const path = require('path');

// 引入静态资源访问模块

const serveStatic = require('serve-static');

// 引入处理日期的第三方模块

const dateformat = require('dateformat');

const router = require('./route/index');

// 实现静态资源访问服务

const serve = serveStatic(path.join(__dirname, 'public'))

代码语言:javascript
复制
// 配置模板的根目录
template.defaults.root = path.join(__dirname, 'views');
// 处理日期格式的方法
template.defaults.imports.dateformat = dateformat;

// 数据库连接
require('./model/connect');

// 创建网站服务器
const app = http.createServer();
// 当客户端访问服务器端的时候
app.on('request', (req, res) => {
    // 启用路由功能
    router(req, res, () => {})
    // 启用静态资源访问服务功能
    serve(req, res, () => {})
});
// 端口监听
app.listen(80);
console.log('服务器启动成功');

views/index.art

代码语言:javascript
复制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <title>学生档案</title>
    <link rel="stylesheet" href="./css/main.css">
</head>
<body>
    <form action="/add" method="post">
        <fieldset>
            <legend>学生档案</legend>
            <label>
                姓名: <input class="normal" type="text" autofocus placeholder="请输入姓名" name="name">
            </label>
            <label>
                年龄: <input class="normal"  type="text" placeholder="请输入年龄" name="age">
            </label>
            <label>
                性别: 
                <input type="radio" value="0" name="sex"> 男
                <input type="radio" value="1" name="sex"> 女
            </label>
            <label>
                邮箱地址: <input class="normal" type="text" placeholder="请输入邮箱地址" name="email">
            </label>
            <label>
                爱好: 
                <input type="checkbox" value="敲代码" name="hobbies"> 敲代码
                <input type="checkbox" value="打篮球" name="hobbies"> 打篮球
                <input type="checkbox" value="睡觉" name="hobbies"> 睡觉
            </label>
            <label>
                所属学院: 
                <select class="normal" name="collage">
                    <option value="前端与移动开发">前端与移动开发</option>
                    <option value="PHP">PHP</option>
                    <option value="JAVA">JAVA</option>
                    <option value="Android">Android</option>
                    <option value="IOS">IOS</option>
                    <option value="UI设计">UI设计</option>
                    <option value="C++">C++</option>
                </select>
            </label>
            <label>
                入学日期: <input type="date" class="normal" name="enterDate">
            </label>
            <label class="btn">
                <input type="submit" value="提交" class="normal">
            </label>
        </fieldset>
    </form>
</body>
</html>

views\list.art

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学员信息</title>
    <link rel="stylesheet" href="./css/list.css">
</head>
<body>
    <table>
        <caption>学员信息</caption>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
            <th>邮箱地址</th>
            <th>爱好</th>
            <th>所属学院</th>
            <th>入学时间</th>
        </tr>
        {{each students}}
            <tr>
                <th>{{$value.name}}</th>
                <th>{{$value.age}}</th>
                <th>{{$value.sex == '0' ? '男' : '女'}}</th>
                <th>{{$value.email}}</th>
                <th>
                    {{each $value.hobbies}}
                        <span>{{$value}}</span>
                    {{/each}}
                </th>
                <th>{{$value.collage}}</th>
                <th>{{dateformat($value.enterDate, 'yyyy-mm-dd')}}</th>
            </tr>
        {{/each}}
        
    </table>
</body>
</html>

route\index.js

代码语言:javascript
复制
// 引入router模块
const getRouter = require('router');
// 获取路由对象
const router = getRouter();
// 学生信息集合
const Student = require('../model/user');
// 引入模板引擎
const template = require('art-template');
// 引入querystring模块
const querystring = require('querystring');

// 呈递学生档案信息页面
router.get('/add', (req, res) => {
    let html = template('index.art', {});
    res.end(html);
})

// 呈递学生档案信息列表页面
router.get('/list', async (req, res) =>{
    // 查询学生信息
    let students = await Student.find();
    console.log(students);
    let html = template('list.art', {
        students: students
    })
    res.end(html)
})
// 实现学生信息添加功能路由
router.post('/add', (req, res) => {
    // 接收post请求参数
    let formData = '';
    req.on('data', param => {
        formData += param;
    });
    req.on('end', async () => {
        await Student.create(querystring.parse(formData))
        res.writeHead(301, {
            Location: '/list'
        });
        res.end()
    })
});

module.exports = router;

public\css\list.css

代码语言:javascript
复制
body {
    padding: 0;
    margin: 0;
}

table {
    border-collapse: collapse;
}

table, td, th {
    text-align: center;
    line-height: 30px;
    border: 1px solid #CCC;
}

caption {
    font-weight: bold;
    font-size: 24px;
    margin-bottom: 10px;
}

table {
    width: 960px;
    margin: 50px auto;
}

a {
    text-decoration: none;
    color: #333;
}

a:hover {
    text-decoration: underline;
    color: #000;
}

public\css\main.css

代码语言:javascript
复制
body {
    padding: 0;
    margin: 0;
}

table {
    border-collapse: collapse;
}

table, td, th {
    text-align: center;
    line-height: 30px;
    border: 1px solid #CCC;
}

caption {
    font-weight: bold;
    font-size: 24px;
    margin-bottom: 10px;
}

table {
    width: 960px;
    margin: 50px auto;
}

a {
    text-decoration: none;
    color: #333;
}

a:hover {
    text-decoration: underline;
    color: #000;
}

model\connect.js

代码语言:javascript
复制
const mongoose = require('mongoose');
// 连接数据库
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(() => console.log('数据库连接失败')

model\user.js

代码语言:javascript
复制
const mongoose = require('mongoose');
// 创建学生集合规则
const studentsSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true,
        minlength: 2,
        maxlength: 10
    },
    age: {
        type: Number,
        min: 10,
        max: 25
    },
    sex: {
        type: String
    },
    email: String,
    hobbies: [ String ],
    collage: String,
    enterDate: {
        type: Date,
        default: Date.now
    }
});
// 创建学生信息集合
const Student = mongoose.model('Student', studentsSchema);
// 将学生信息集合进行导出
module.exports = Student;

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档