Vue实现在线考试系统

1.技术介绍
java+springboot+mysql+mybatis+Vue
开发工具:eclipse或idea
2.主要功能说明:
1)学生
注册、登录、查看试卷、开始考试、查看成绩、修改密码
2)教师
学生信息管理、试卷管理、试题管理、查看学生成绩、修改密码
3)管理员
教师管理、学生管理、科目管理、查看学生成绩、试题管理、修改密码、注销
3.部分代码展示:
注册

```java
<template>
<div style="width: 30%;margin-left: 30%;margin-top:6%" id="bag">
<p style="text-align: center"><img src="../assets/images/logo.png" height="55"/></p>
<h3 style="text-align: center">学生注册</h3>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="用户名">
<el-input v-model="form.userName"></el-input>
</el-form-item>
<el-form-item label="密码">
<el-input v-model="form.password" type="password"></el-input>
</el-form-item>
<el-form-item label="确认密码">
<el-input v-model="form.password2" type="password"></el-input>
</el-form-item>
<el-form-item style="text-align: center">
<el-button type="primary" @click="onSubmit()">注册</el-button>
<router-link type="primary" to="/login">
<el-button type="primary">登录</el-button>
</router-link>
</el-form-item>
</el-form>
</div>
</template>

<script>
import ElementUI from 'element-ui';
import axios from "axios";

export default {
name: "register",
data() {
return {
form: {
userName: '',
password: '',
password2: ''
}
}
},
methods: {
onSubmit() {
let userName = this.form.userName;
let password = this.form.password;
let password2 = this.form.password2;
if (userName === '' || userName === null) {
ElementUI.Message.error("请输入用户名!!");
return;
}
if (password === '' || password === null) {
ElementUI.Message.error("请输入密码!!");
return;
}
if (password2 === '' || password2 === null) {
ElementUI.Message.error("请输入确认密码!!");
return;
}
if (password !== password2) {
ElementUI.Message.error("密码和确认密码不一样,请重新输入!!");
return;
}
let _this = this;
let param = new URLSearchParams();
param.append("userName", userName);
axios
.post('http://localhost/user/findByUserName', param)
.then(function (response) {
if (response.data.success) {
let __this = _this;
let param2 = new URLSearchParams();
param2.append("userName", __this.form.userName);
param2.append("password", __this.form.password);
param2.append("type", "学生");
axios
.post('http://localhost/user/add', param2)
.then(function (response) {
if (response.data.success) {
ElementUI.Message.success("注册成功");
__this.$router.push("/login");
}
})
.catch(function (error) {
alert(error);
console.log(error);
});
} else {
ElementUI.Message.error("用户名已经存在,请重新输入!!");
}
})
.catch(function (error) {
alert(error);
console.log(error);
});
}
}
}
</script>

<style scoped>
#bag{
background-color: #ffffff;
width:100%; //大小设置为100%
height:100%; //大小设置为100%
position:fixed;
background-size:100% 100%;
/*opacity:0.9;*/
}
.text{
color: red;
}
</style>

```
登录
<template>
<div style="width: 30%;margin-left: 30%; text-align: center;margin-top:200px; position: fixed" id="bag">
<p class=""><img src="../assets/images/logo.png" height="55"/></p>
<h3 style="text-align: center"><span style="color: #a768db">{{ form.type }}</span>登录</h3>
<el-form ref="form" :model="form" :rules="rules" label-width="80px" class="demo-ruleForm">
<el-form-item label="用户名" prop="userName" class="text">
<el-input v-model="form.userName"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password" class="text">
<el-input v-model="form.password" type="password"></el-input>
</el-form-item>
<el-form-item label="选择身份">
<el-radio-group v-model="form.type">
<el-radio-button size="small" label="学生">学生 </el-radio-button>
<el-radio-button size="small" label="教师">教师 </el-radio-button>
<el-radio-button size="small" label="管理员">管理员</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item style="text-align: center">
<el-button type="primary" @click="onSubmit()">登录</el-button>
<router-link type="primary" to="/register">
<el-button type="primary">注册</el-button>
</router-link>
</el-form-item>
</el-form>
</div>
</template>

<script>
import ElementUI from "element-ui";
import axios from "axios";

export default {
name: "login",
data() {
return {
form: {
userName: '',
password: '',
type: '学生'
},
rules: {
userName: [
{required: true, message: '请输入用户名', trigger: 'blur'},
],
password: [
{required: true, message: '请输入密码', trigger: 'blur'}
]
}
}
},
methods: {
//登录
onSubmit() {
if (this.form.userName === null || this.form.userName === '') {
ElementUI.Message.error("请输入用户名!");
return null;
}
if (this.form.password === null || this.form.password === '') {
ElementUI.Message.error("请输入密码!");
return null;
}
let _this = this;
let param = new URLSearchParams();
param.append("userName", this.form.userName);
param.append("password", this.form.password);
param.append("type", this.form.type);
axios
.post('http://localhost/user/login', param)
.then(function (response) {
let status = response.data.status;
let userId = response.data.userId;
if (status === 1) {
ElementUI.Message.success("登录成功!" + "(当前身份:" + _this.form.type + ")");
sessionStorage.setItem('token', status)
sessionStorage.setItem("userName", _this.form.userName);
sessionStorage.setItem("type", _this.form.type);
sessionStorage.setItem("userId", userId);
if (_this.form.type === '学生') {
_this.$router.push('/student');
} else if (_this.form.type === '教师') {
_this.$router.push('/teacher');
} else if (_this.form.type === '管理员') {
_this.$router.push('/manager');
}
} else {
ElementUI.Message.error("用户名、密码或身份错误,请重新输入!");
}
})
.catch(function (error) {
console.log(error);
});
}
}
}
</script>

<style scoped>
#bag{
background-color: #ffffff;

width:100%; //大小设置为100%
height:100%; //大小设置为100%

position:fixed;
background-size:100% 100%;
/*opacity:0.9;*/
}
.text{
color: red;
}

</style>
4.系统演示地址
链接:https://pan.baidu.com/s/19griPlEhyOHBoSqE3Y36-w
提取码:1qhz

posted @ 2022-05-28 11:29  小草1234  阅读(830)  评论(0编辑  收藏  举报