学生管理系统开发步骤

学生管理系统

1.开发背景

2.开发准备

3.开发步骤

3.1创建一个空文件夹,取名students-system

方式一:右键新建
方式二:命令行新建(提倡)

  

1 ##windows系统
2 md students-system ##mac/linux
3 mkdir students-system

3.2 初始化

npm init -y

执行结果:该文件夹下新增了一个package.json

3.4 在该目录下新建文件夹/文件

 1 mkdir public views data router
 2 
 3 ##mac/linux touch app.js ##windows cd.>app.js
 4 
 5 cd public
 6 mkdir css img js
 7 
 8 cd ../views ##mac/linux
 9 touch admin-login.html show-students.html ##windows
10 cd.>admin-login.html show-students.html
11 
12 cd ../data ##mac/linux
13 touch admins.json students.json jurisdiction.json ##windows

 

cd.>admins.json students.json jurisdiction.json

3.4 安装包

npm i express express-art-template art-template bootstrap@3 jquery

3.5 编辑app.js

 搭建基础框架
const express=require('express')

const app=express()



app.listen(3000,()=>console.log('app is running...'))

创建路由

在router文件夹下,新建index.js ,并引入至app.js

Index.js

1 const express=require('express')
2 
3 
4 const router=express.Router()
5 
6 
7 
8 // 对 外 暴 露 router module.exports=router

app.js

1 const express=require('express')
2 
3 const router=require('./router')//开发者自己创建的模块,必须以./或../开头const app=express()
4 //引入express-art-template用以解析html文件app.engine('html',require('express-art-template'))
5 
6 //开放静态文件夹app.use('/public',express.static('public')) app.use('/node_modules',express.static('node_modules'))
7 
8 //配置body-parser,现在高版本的body-parser直接内置在了express里
9 //必须配置body-parser,否则后端无法收到前端post来的信息express.use(express.urlencoded({extended:false})) express.use(express.json())

 10 app.use(router)

 11 app.listen(3000,()=>console.log('app is running...'))

 

 

3.6 编辑管理员登录界面

admin-login.html

自行搭建界面,要有登录表单区域

 1 <h1>
 2 欢迎登录
 3 </h1>
 4 
 5 <form class="form-horizontal" action="/admin-login" method="post">
 6 <div class="form-group">
 7 <label for="account" class="col-sm-2 control- label">Account</label>
 8 <div class="col-sm-10">
 9 <input type="text" class="form-control" name="account" id="account" placeholder="Account">
10 <p class="text-danger hidden" id="p1">账号格式不正确</p>
11 <p class="text-danger hidden" id="p2">该账号未注册</p>
12 </div>
13 
14 </div>
15 <div class="form-group">
16 <label for="password" class="col-sm-2 control- label">Password</label>
17 <div class="col-sm-10">
18 <input type="password" class="form-control" name="password" id="password" placeholder="Password">
19 </div>
20 </div>
21 <div class="form-group">
22 <div class="col-sm-offset-2 col-sm-10">
23 <div class="checkbox">
24 <label>
25 <input type="checkbox" name="remember"> Remember
26 me
27 </label>
28 </div>
29 </div>
30 </div>
31 <div class="form-group">
32 <div class="col-sm-offset-2 col-sm-10">
33 <button type="submit" class="btn btn-default">Sign
34 in</button>
35 </div>
36 </div>
37 </form>

form表单中,action是地址,method是方法,这两个值要跟后端保持一致

当account失去焦点时,通过正则判断手机号格式是否正确,如果正确,则通过ajax向后台验证账 号是否已注册,这一步我们使用jQuery来实现。

 1 const test_account = () => {
 2 /*if(正则格式位数正确){
 3 发送此手机号给后端
 4 后端进行验证(是否有此手机号) 如果有,加上hidden
 5 如果没有,提示"该账号不存在"
 6 }else{
 7 提示账号格式不正确
 8 }
 9 
10 */
11 //手机号的正则表达式
12 //附:正则验证网址 https://regexper.com/
13 const reg_phone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0- 9]|19[0-35-9])\d{8}$/
14 //正则表达式.test(字符串),如果满足则返回true,不满足返回false
15 if (reg_phone.test($('#account').val())) {
16 $('#p1').addClass('hidden')//添加class名hidden,添加后该标签将消失
17 //通过get方法,向'/test-account'路径发送信息{account: $('#account').val()},
18 //其返回值就是后面函数的参数data
19 $.get('/test-account', {account: $('#account').val()}, data => { if (data) {
20 //如果后端返回了数据,并且account为true,意为经后台验证,该账号是已注册账号
21 islogin.account = true
22 $('#p2').addClass('hidden') return
23 }
24 islogin.account = false
25 $('#p2').removeClass('hidden')
26 })
27 return
28 }
29 $('#p1').removeClass('hidden')
30 $('#p2').addClass('hidden') islogin.account = false
31 }
32 $('#account').blur(test_account)//上面的函数,在失去焦点时调用

验证过账号是注册过的之后,才可以提交该表单给后台

后台根据前端传过来的账号,去数据表中查找对应的账户,如果找到, 则比较前端传来的密码和数据表中的密码是否一致,如果一致,

则允许登录,就把管理员查看学生信息  的界面渲染给前端,同时

还要发送相应的数据,包括账户信息(注意删除账户密码)、对应权限、所有学生信息(注意删除账户密码)。

如果不一致,则把登录界面重新渲染给前端

posted @ 2022-05-11 18:51  Adinsclay  阅读(307)  评论(0)    收藏  举报