1.技术架构
前后端分离项目,后台:springBoot+mysql+mybatis
前端:vue框架
2.安装环境
IDEA/eclipse均可
jdk1.7或1.8
maven项目
mysql数据库版本为8.0.17
node
3.功能说明
用户角色:学生、家长或教师、管理员
学生:
1)查看自己的学生信息
2)查看自己的奖项信息
3)查看自己的日常表现
4)查看自己的学习成绩
5)查看并下载自己的试卷
教师:
1)查看自己所带学生的信息
2)查看自己所带学生的奖项信息
3)查看自己所带学生的日常表现信息
4)查看自己所带学生的学习成绩
5)查看并下载自己所带学生的试卷
管理员:
1)班级教师管理
2)班级管理
3)课程管理
4)学生管理
5)学生奖项管理
6)学生日常表现管理
7)教师管理
8)成绩管理
9)试卷管理
10)用户管理
前端部分代码展示:
login.vue 登录页面
<template><div id="Login"><h1>学生管理系统</h1><div style="height: 100%; width: 20%; margin: auto;"><el-form ref="form" :model="form"><el-form-item label="" style="margin-bottom: 0px; margin-top: 10px;"><el-input @change="code()" prefix-icon="el-icon-user" v-model="form.account" placeholder="请输入账号"></el-input></el-form-item><span class="L0" v-html="isCode"></span><el-form-item label="" style="margin-bottom: 10px; margin-top: 10px;"><el-input @change="pwd()" type="password" prefix-icon="el-icon-lock" v-model="form.password" placeholder="请输入密码"></el-input></el-form-item><span class="L0" v-html="isPwd"></span><el-form-item label="" style="display:block;;margin-bottom: 10px; margin-top: 10px;"><el-select style="width:100%" @change="type()" v-model="form.type" placeholder="请选择身份类别"><el-option v-for="item in typeList" :key="item.id" :label="item.type" :value="item.id"> </el-option></el-select></el-form-item><span class="L0" v-html="isType"></span><el-form-item><el-button @click="login()" style="width: 100%" type="primary">登入</el-button></el-form-item></el-form></div></div></template><script>import axios from "axios";export default {name: "App",data() {return {form: {account: "",password: "",type:"",},isCode: "",isPwd: "",isType:"",role:{type:0,},typeList:[{id:1,type:'管理员'},{id:2,type:'家长/教师'},{id:3,type:'学生'},]}},methods: {code() {if (this.form.account.length != 0) {this.isCode = "";return true;} else {this.isCode = "账号不能为空"return false;}},pwd() {if (this.form.password.length != 0) {this.isPwd = "";return true;} else {this.isPwd = "密码不能为空"return false;}},type() {if (this.form.type.length != 0) {this.isType = "";return true;} else {this.isType = "身份类别不能为空"return false;}},login() {if (!this.code()) {return false}if (!this.pwd()) {return false}let _this = this;axios.post('http://localhost:8097/login',{account:this.form.account,password: this.form.password,type: this.form.type}).then(function(response) {_this.role.type=response.data.type;if (response.data.code == 200) {//存储数据_this.$store.commit('setUser',response.data.data)_this.$message({type: "success",message: response.data.msg})_this.skip();} else if (response.data.code == -1) {_this.$message.error(response.data.msg);}}).catch(function(error) {console.log(error);})},skip() {let u1 = this.$store.state.user;if(u1.type==1){this.$router.push({path: "/index"})}if(u1.type==2){this.$router.push({path: "/index2"})}if(u1.type==3){this.$router.push({path: "/index3"})}}},mounted() {console.log(this)}}
</script><style>#Login>h1 {padding-top: 180px;}.L0 {float: left;color: red;font-size: 12px;padding-left: 10px;}
</style>
student.vue
<template><div id="StudentList"><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: '/index' }">控制中心</el-breadcrumb-item><el-breadcrumb-item>学生信息</el-breadcrumb-item></el-breadcrumb><el-form :inline="true" class="demo-form-inline"><el-form-item label="学号:"><el-input v-model="number" placeholder="学号"></el-input></el-form-item><el-form-item label="班级:"><el-input v-model="clazzName" placeholder="班级"></el-input></el-form-item><el-form-item label="学生姓名:"><el-input v-model="name" placeholder="学生姓名"></el-input></el-form-item><el-form-item><el-button type="primary" @click="previous()">查询</el-button><el-button type="primary" @click="dialogFormVisible = true,estimate=false">新增</el-button><el-button type="primary" @click="AutoScore()">评分</el-button></el-form-item></el-form><el-dialog :visible.sync="dialogFormVisible" :close-on-click-modal='false' :close-on-press-escape='false':show-close='false'><h1 v-show="form.id == undefined" style="margin: auto; width: 20%; height: 50%; padding-bottom: 50px;">新增学生</h1><h1 v-show="form.id != undefined" style="margin: auto; width: 20%; height: 50%; padding-bottom: 50px;">修改学生</h1><div style="width: 80%; margin: auto;"><el-form :inline="true" :model="form" class="demo-form-inline"><el-form-item label="学号:"><el-input v-model="form.number" placeholder="学号"></el-input></el-form-item><p></p><el-form-item label="真实姓名:"><el-input v-model="form.name" placeholder="真实姓名"></el-input></el-form-item><p></p><el-form-item label="性别:"><el-radio v-model="form.sex" label="男">男</el-radio><el-radio v-model="form.sex" label="女">女</el-radio></el-form-item><p></p><el-form-item label="电话:"><el-input v-model="form.phone" placeholder="电话"></el-input></el-form-item><p></p><el-form-item label="QQ:"><el-input v-model="form.qq" placeholder="QQ"></el-input></el-form-item><p></p><el-form-item label="奖项/特长:"><el-input v-model="form.specialty" placeholder="奖项或特长"></el-input></el-form-item><p><span class="L1"></span></p><el-form-item label="请选择年级:"><el-select v-model="form.gradeid" placeholder="请选择年级"><el-option v-for="grade in GradeList":key="grade.id":label="grade.name":value="grade.id"></el-option></el-select></el-form-item><p></p><el-form-item label="请选择班级:"><el-select v-model="form.clazzid" placeholder="请选择班级"><el-option v-for="clazz in ClazzList":key="clazz.id":label="clazz.name":value="clazz.id"></el-option></el-select></el-form-item><p></p></el-form></div><div style="width: 70%; height: 100%; margin: auto;"><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false,form = {}">取 消</el-button><el-button type="primary" @click="isEstimate()">确 定</el-button></div></div></el-dialog><template text-align: center><el-table :data="StudentList.list" stripe style="width: 100%" type="index"><el-table-column prop="number" label="学号" width="80"></el-table-column><el-table-column prop="name" label="姓名" width="100"></el-table-column><el-table-column prop="sex" label="性别" :formatter="state" width="50"></el-table-column><el-table-column prop="phone" label="电话" width="120"></el-table-column><el-table-column prop="qq" label="QQ" width="100"></el-table-column><el-table-column prop="specialty" label="奖项/特长" width="100"></el-table-column><el-table-column label="评分" width="100" ><template slot-scope="scope">{{scope.row.score}}分</template></el-table-column><el-table-column label="班级" width="180"><template slot-scope="scope">{{scope.row.gradeName}}{{scope.row.clazzName}}</template></el-table-column><el-table-column label="操作" fixed="right"><template slot-scope="scope"><el-button style="margin-left: 0px;" size="mini" type="primary" round@click="estimate=true,getStudent(scope.row.id)">编辑</el-button><el-popconfirm title="这是一段内容确定删除吗?"@confirm="delStudent(scope.row.id)"><el-button size="mini" type="primary" round slot="reference">删除</el-button></el-popconfirm></template></el-table-column></el-table></template><!--分页查询--><div class="block"><el-pagination @size-change="size" @current-change="previous" :current-page="StudentList.pageNum":page-sizes="[1, 2, 5, 10,20,50]" :page-size="StudentList.pageSize" :page-count="StudentList.pages"layout="total, sizes, prev, pager, next, jumper" :total="StudentList.total"></el-pagination></div></div>
</template><script>import axios from "axios";export default {name: "StudentList",data() {return {User: this.$store.state.user, //从vuex中获取当前登录用户StudentList: [], //表格中显示的数据form: {}, //新增、修改的数据ClazzList:[],//班级列表GradeList:[],//年级列表name: "", //学生真实姓名number:"",clazzName:"",dialogFormVisible: false,// visible: false,estimate: false,// pageNum: 1,// pageSize: 1,}},mounted() {this.getClazzAll();this.getGradeAll();},methods: {AutoScore(){axios.post("http://localhost:8097/student/score", {}).then((response) => {if (response.data.code == 200) {this.ClazzList = response.data.data;this.$message({type: "success",message: response.data.msg})this.getStudentList();} else {this.$message.error(response.data.msg);}}).catch(function(error) {console.log(error);})},getClazzAll(){console.log(this.User);axios.post("http://localhost:8097/clazz/listAll", {}).then((response) => {if (response.data.code == 200) {this.ClazzList = response.data.data;} else {this.$message.error(response.data.msg);}}).catch(function(error) {console.log(error);})},getGradeAll(){axios.post("http://localhost:8097/grade/listAll", {}).then((response) => {if (response.data.code == 200) {this.GradeList = response.data.data;} else {this.$message.error(response.data.msg);}}).catch(function(error) {console.log(error);})},isEstimate(){if(!this.estimate){this.add();}else{this.edit();}},add() {axios.post("http://localhost:8097/student/add", {number: this.form.number,name: this.form.name,sex: this.form.sex,phone: this.form.phone,qq: this.form.qq,specialty: this.form.specialty,photo: this.form.photo,clazzid: this.form.clazzid,gradeid: this.form.gradeid,}).then((response) => {// this.UserInfo = {};this.form = {};this.dialogFormVisible = false;if (response.data.code == 200) {this.$message({type: "success",message: response.data.msg})} else {this.$message.error(response.data.msg);}//从新查询this.getStudentList()}).catch(function(error) {console.log(error);})this.estimate=false;},edit(){//修改axios.post("http://localhost:8097/student/update", {id: this.form.id,number: this.form.number,name: this.form.name,sex: this.form.sex,phone: this.form.phone,qq: this.form.qq,specialty: this.form.specialty,photo: this.form.photo,clazzid: this.form.clazzid,gradeid: this.form.gradeid,}).then((response) => {this.form = {};this.dialogFormVisible = false;if (response.data.code == 200) {this.$message({type: "success",message: response.data.msg})} else{this.$message.error(response.data.msg);}this.previous(this.StudentList.pageNum)}).catch((error) => {console.log(error);})this.estimate=false;},getStudent(id) {axios.post("http://localhost:8097/student/get", {id: id,}).then((response) => {console.log(response.data)this.form = response.data.data;this.dialogFormVisible = true;}).catch((error) => {console.log(error);})},delStudent(id) {axios.post("http://localhost:8097/student/delete", {'id': id,}).then((response) => {this.visible = false;if (response.data.code == 200) {this.$message({type: "success",message: response.data.msg})} else {this.$message.error(response.data.msg);}this.previous(1);}).catch((error) => {console.log(error)})},size(change) { //每页显示的条数发生改变// alert(change)this.StudentList.pageSize = change;this.getStudentList();},previous(prePage) { //单击页码、或者单击查询条件// alert("dd"+prePage)this.StudentList.pageNum = prePage;this.getStudentList();},//获取后台学生列表数据:多条件分页查询getStudentList() {axios.post("http://localhost:8097/student/list", {name: this.name,number:this.number,clazzName:this.clazzName,pageNum: this.StudentList.pageNum,pageSize: this.StudentList.pageSize}).then((response) => {this.StudentList = response.data.data;console.log(this.StudentList)}).catch(function(error) {console.log(error)})}},created() {this.getStudentList()}}
</script><style>.el-input {size: 300px;}.L1 {color: red;font-size: 12px;}
</style>
系统演示地址:
链接:https://pan.baidu.com/s/1WcBPo1qtsTcFvNFDfyajEA
提取码:0kzo