0013Java程序设计-基于Vue的上课签到系统的设计与实现

文章目录

    • **摘 要**
    • 目录
    • 系统设计
    • 4.2学生签到
    • 4.3 签到信息列表
    • 4.4 用户信息管理
    • 5.1系统登录
      • 5.1.1 登录
      • 5.1.2 清除用户登记记录
      • 5.1.3 登录拦截
    • 5.2用户管理
      • 5.2.2 用户添加
      • 5.2.3 用户编辑
      • 5.2.4 用户删除
      • 5.2.5 用户分页
    • 5.3签到信息
      • 5.3.1签到信息列表
    • 5.4学生签到
      • 5.4.1学生签到
    • 开发环境

编程技术交流、源码分享、模板分享、网课分享

企鹅🐧@裙:776871563

摘 要

如今,随着信息化技术的深入、发展和应用普及,在很大程度上改变了人们的工作、生活和习惯。多媒体以及各种电子设备进入了学生的眼中增加了学生的学习兴趣,使得各校每年的招生人数的得到大幅度增加,在这样的情况下,学生管理就成了一大难题,为此编写了本系统为方便教师对学生的教学情况进行管理,本系统能为学生提供签到服务,教师可通过登录自己的账号查看自身课程所对应的教学情况,同时设置管理员对教师与学生的个人信息进行一个统一管理。本系统通过这种方式增强学校对学生的管理,同时也可以检验教师的教学情况。

系统分为学生登录、教师登录和管理员登录模块,管理员登录可以管理学生信息、教师信息对其进行查询、添加、修改和删除。学生对当前教师课程进行签到,教师对学生课程签到的情况进行统计。

系统采用技术包括Vue.js、element-ui等。上课签到系统以Vue.js为前端的框架,通过axios实现数据交互,页面布局采用element-ui搭建了简易的页面。

**关键词:**上课签到系统;Vue.js;element-ui;

目录

摘 要… 2

Abstract… 3

第一章 引言… 5

1.1系统开发背景… 5

1.2设计思路和方法… 6

第二章 相关技术简介… 7

2.1 Vue.js… 7

2.2 Element-ui… 8

2.3 Axios… 9

2.4 B/S架构… 9

2.5开发工具和开发环境… 10

操作系统:Windows10… 10

第三章 系统需求分析与设计… 10

3.1可行性分析… 10

3.1.1 发展可行性… 11

3.1.2 经济可行性… 11

3.1.3 技术可行性… 11

3.1.4 操作可行性… 12

3.2功能简介… 12

3.2.1用户系统结构分析… 12

3.2.2管理员系统结构分析… 12

3.3用例分析图… 13

3.4 活动图分析… 14

3.4.1 登录分析… 14

3.4.2 添加用户分析… 15

3.5 ER图设计… 16

3.5.1 签到实体设计… 16

3.5.2 用户实体设计… 17

3.5.4 ER图设计… 17

第四章 用户登录系统实现… 18

4.1系统登录页面… 18

4.2学生签到页面… 19

4.3 签到信息列表… 20

this.load();//页面刷新… 20

第五章 管理员系统实现… 21

5.1系统登录… 21

5.1.1 登录… 22

5.1.2 清除用户登记记录… 22

5.1.3 登录拦截… 23

5.2用户管理… 23

5.2.1 用户列表… 24

5.2.2 用户添加… 24

5.2.3 用户编辑… 25

5.2.4 用户删除… 25

5.2.5 用户分页… 26

5.3签到信息… 26

5.3.1签到信息列表… 26

5.4学生签到… 26

5.4.1学生签到功能… 27

第六章 系统测试… 27

6.1可用性测试… 27

6.2性能测试… 28

6.3 兼容性测试… 28

6.4 功能测试… 29

6.4.1登录测试… 29

6.4.2 管理员用户管理测试… 30

6.4.4 签到信息组合查询测试… 30

6.4.4 学生签到测试… 31

6.5 测试结果分析… 31

第七章 系统总结… 32

参考文献… 41

系统设计

登录界面如图4.1.1登录所示,总共分为用户登录和管理员登录,登录成功后进入相对应的系统界面。

img

​ 图4.1.1系统登录界面图

4.2学生签到

学生登录进系统后,可以根据要求对课程进行签到。

img

图 4.2.1 学生签到图

//--------------------------------------------------学生签到操作

selectQD() {

​ requset.post(“/selectqd?user_id=”+this.ruleForm.user_id + “&course_name=”+this.ruleForm.course_name + “&course_teacher=”+ this.ruleForm.course_teacher).then(res => {

​ console.log(typeof(res))

​ if(res === 1){

​ alert(“您已签到”)

​ }else {

​ requset.post(“/signQD”,this.ruleForm).then(res => {

​ console.log(res.data)

​ this.$message.success(“签到成功”);

​ })

​ }

​ })

},

4.3 签到信息列表

教师登录系统后可以对学生的签到信息进行管理。

img

图 4.3.1 签到信息图

select() {

​ request.get(‘/selectOne?course_name=’+ this.course_name +‘&course_teacher=’+ this.course_teacher).then(res => {

​ console.log(“----:”+JSON.stringify(res))

​ // var array=[];

​ // array.push(res)

​ this.tableData =res;

​ })

​ }

4.4 用户信息管理

管理员登录系统后可对学生与教师信息进行管理。

img

img

图 4.4.1 用户信息管理图

handleuser(index) {

if(index == “1”) {

​ this.$router.push(“/studentinfoView”)

}else if(index == “2”){

​ this.$router.push(“/teacherinfoView”)

}else if(index == “3”) {

​ this.$router.push(“/admininfoView”)

}

},

5.1系统登录

5.1.1 登录

如图5.1.1.1管理员登录所示,登陆时通过axios从后端获取到用户信息,登录成功后信息保存在网页的浏览器后台上,下次访问的时候系统会优先获取axios的信息,先在后台进行验证,验证通过时,根据角色定位到相应页面,通过用户的请求在进行页面的逻辑处理。

img

图 5.1.1.1 管理员登录

requset.post(“/login”,this.ruleForm).then(res => {

if(res.code === ‘200’) {

console.log(“res.data:” + JSON.stringify(res.data))//res.data存放的是数据库中的内容 (账号密码名字权限)

localStorage.setItem(“user”,JSON.stringify(res.data))

​ console.log(JSON.stringify(res.data))

​ console.log(res.data.user_qx)

​ if(res.data.user_qx === ‘0’) {

​ this.$router.push(“/student”)

​ }else if(res.data.user_qx === “1”) {

​ this.$router.push(“/teacher”)

​ }else if (res.data.user_qx === “2”){

​ this.$router.push(“/admin”)

​ }else {

​ alert(“没有该账号,请点击注册按钮注册”)

​ this.$router.push(“/”)

​ }

​ }

​ })

​ } else {

​ console.log(‘error submit!!’);

​ this.$router.push(“/login”)

​ }

​ });

},

5.1.2 清除用户登记记录

用户登录成功后信息保存在网页的浏览器后台上,localStorage用于持久化存储本地数据,除非主动删除数据,否者数据是永久存在的,这就造成了用户不需要登录就可以进入系统界面,所以有必要清除用户登记记录。

methods:{

​ logout(){

​ localStorage.removeItem(“user”);

}

5.1.3 登录拦截

登录拦截器通过配置文件,在此之前除了登录页面所有的路径都会进行拦截,为了防止用户不进行登录就进入系统界面,在访问之前进行判断一下是否登录,如果没有登录,就跳到登录页面,如果登陆了,就跳到用户相对应的系统界面。

router.beforeEach((to, from, next)=>{

let userStr=localStorage.getItem(“user”)

if(userStr){

next();

}else{

if(to.path === ‘/login’){

​ next();

}else if(to.path === ‘/register’){

​ next();

}else{

​ next({

​ path:‘/login’

​ });

}

}

})

5.2用户管理

5.2.1 用户列表

用户列表如图5.2.1.1用户列表所示,可根据用户的用户ID进行查找。

img

img

图 5.2.1.1 用户列表

async showEditDialog(user_id) {

request.get(“/finduser?user_id=” + user_id).then((res) => {

​ console.log(“--------” + JSON.stringify(res));

​ this.editForm = res;

​ this.editDialogVisible = true;

});

},

5.2.2 用户添加

用户添加如图5.2.2.1用户添加所示,添加用户时要在数据库中检测用户号是否存在,如果存在,添加用户不成功,如果不存在,则成功添加用户。

img

图 5.2.2.1 用户添加

adduser() {

request.post(“/insert”, this.addform).then((res) => {

​ if (res.code === “200”) {

​ this.$message.success(“添加用户成功”);

​ //隐藏添加对话框

​ this.addDialogVisible = false;

​ this.load();

​ } else {

​ this.$message.error(“添加用户失败”);

​ }

});

},

5.2.3 用户编辑

用户编辑如图5.2.2.1用户编辑所示,点击编辑时,列表应显示原先有的信息,在原有的信息上进行修改,管理员修改信息是不能修改用户号,用户的用户号在用户中为唯一标识。

img

​ 图 5.2.3.1 用户编辑

editUserInfo() {

request

​ .post(“/edituser?user_id=” + this.editForm.user_id, {

​ user_id: this.editForm.user_id,

​ user_name: this.editForm.user_name,

​ user_account: this.editForm.user_account,

​ user_pwd: this.editForm.user_pwd,

​ user_phone: this.editForm.user_phone,

​ user_home: this.editForm.user_home,

​ user_qx: this.editForm.user_qx,

​ })

​ .then((res) => {

​ if (res.code === “200”) {

​ this.$message.success(“更新用户成功”);

​ //隐藏添加对话框

​ this.editDialogVisible = false;

​ this.load();

​ } else {

​ this.$message.error(“更新用户失败”);

​ }

​ });

},

5.2.4 用户删除

用户删除如图5.2.4.1用户删除所示,用户删除只能单个删除,删除时提示用户删除操作,是否继续,防止用户不小心误删。

img

​ 图 5.2.4.1 用户删除

async removeuserById(user_id) {

const confirmResult = await this.$confirm(

​ “此操作将永远删除该用户,是否继续”,

​ “提示”,

​ {

​ confirmButtonText: “确定”,

​ cancelButtonText: “取消”,

​ type: “warning”,

​ }

).catch((err) => {

​ return err;

});

if (confirmResult !== “confirm”) {

​ return this.$message(“取消删除”);

}

request.get(“/deluser?user_id=” + user_id).then((res) => {

​ if (res.code !== “200”) {

​ return this.$message.error(“删除用户失败”);

​ }

​ this.$message.success(“删除成功”);

​ this.load();

});

},

},

5.2.5 用户分页

用户分页图如图4.5.1用户分页图所示,用户数量日复一日的增长,页面一次性显示出所有用户信息,看着比较不美观,而且杂乱,有了分页可以清晰的看出用户记录和总条数。

img

图 4.5.1 用户分页图

this.request

​ .get(“/usertable/page”, {

​ params: {

​ pageNum: this.pageNum,

​ pageSize: this.pageSize,

​ },

​ })

​ .then((res) => {

​ this.tableData = res;

​ });

this.request

​ .get(“/usertable/rows”, {

​ params: {

​ pageNum: this.pageNum,

​ pageSize: this.pageSize,

​ },

​ })

5.3签到信息

5.3.1签到信息列表

签到信息列表如图5.3.1.1签到信息列表所示,可根据课程名与授课教师进行查找。

img

图 5.3.1.1 签到信息列表

5.4学生签到

5.4.1学生签到

学生签到如图5.4.1.1通过填写信息对课程进行签到。

img

图 5.4.1.1 学生签到功能

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DbUtil {private String dbUrl="jdbc:mysql://127.0.0.1:3306/database?serverTimezone=UTC&useSSL=false"; // 数据库连接地址private String dbUserName="root"; // 用户名private String dbPassword="123456"; // 密码private String jdbcName="com.mysql.cj.jdbc.Driver"; // 驱动名称/*** 获取数据库连接* @return* @throws Exception*/public Connection getCon(){try {Class.forName(jdbcName);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}Connection con = null;try {con = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return con;}/*** 关闭数据库连接* @param con* @throws Exception*/public void closeCon(Connection con)throws Exception{if(con!=null){con.close();}}public static void main(String[] args) {DbUtil dbUtil=new DbUtil();try {dbUtil.getCon();System.out.println("数据库连接成功!");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("数据库连接失败");}}
}

开发环境

开发工具:idea、Navicat

数据库:MySQL8.0

环境配置:jdk1.8 、Tomcat8.5

开发人员:IT012201

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259169.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 子路由页面发消息给主路由页面 ,实现主页面显示子页面的信息

需求 子页面进入后,能在主页面显示子页的相关信息,比如说主页面的菜单激活的是哪个子页面的菜单项 如上图,当刷新浏览器页面时,让菜单的激活项仍保持在【最近浏览】。 实现方式: 在子页面的create事件中增加&#xff…

软件测试--selenium安装使用

安装selenium不少人使用pip命令来安装selenium,辛辛苦苦安装完之后,还是不能使用。所以我们可以是直接使用编译器,pycharm直接安装selenium扩展包。 file中点击settings 在Settings中点击Project Interpreter,点击加号就可以安装各种需要的扩…

设备温度和振动综合监测:温振一体式传感器的优点和应用

随着工业设备的复杂性和自动化程度的提高,对设备状态监测的需求也日益增加。温振一体式传感器作为一种集振动和温度监测于一体的传感器,具备多项优势,因此在工业设备状态监测领域得到广泛应用。 温振一体式传感器基于振动传感器和温度传感器的…

人工智能虚拟化环境

人工智能虚拟化环境通过模拟、管理和优化计算资源、数据资源和软件环境,可以为人工智能算法和应用提供更加高效、灵活和可靠的运行平台。本文将探讨人工智能虚拟化环境的概念、技术和应用,并展望其在人工智能领域的未来发展。 首先,人工智能…

奕碳科技亮相COP28:展现中国智慧,引领全球碳减排新篇章

11月30日,联合国气候变化框架公约第28次缔约方大会 (COP28) 在阿联酋迪拜开幕。COP28是全球气候治理的重要盛会,汇聚了世界各国领导人、企业界和科学界代表,共同探讨和制定应对全球气候变化的策略与行动计划。在这样的背景下,企业群体的积极参…

一个简单的 postman设置接口关联让我措施了大厂的机会

postman设置接口关联 在实际的接口测试中,后一个接口经常需要用到前一个接口返回的结果, 从而让后一个接口能正常执行,这个过程的实现称为关联。 在postman中实现关联操作的步骤如下: 1、利用postman获取上一个接口指定的返回值…

fastadmin获取关联表数据select渲染

php public function piliangadd(){if (false === $this->request->isPost()) {$fenlei_list = Db::name(fenlei)->order(weigh desc)->select();$this</

学习IO的第四天

作业 : 使用两个子进程完成两个文件的拷贝&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一般内容&#xff0c;父进程用于回收两个子进程的资源 #include <head.h>int main(int argc, const char *argv[]) {int rd -1;if((rdopen("./01_test.c&quo…

机器学习---集成学习的初步理解

1. 集成学习 集成学习(ensemble learning)是现在非常火爆的机器学习方法。它本身不是一个单独的机器学 习算法&#xff0c;而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集 成学习可以用于分类问题集成&#xff0c;回归问题集成&#xff…

postman做接口测试

之前搞自动化接口测试&#xff0c;由于接口的特性&#xff0c;要验证接口返回xml中的数据&#xff0c;所以没找到合适的轮子&#xff0c;就自己用requests造了个轮子&#xff0c;用着也还行&#xff0c;不过就是case管理有些麻烦&#xff0c;近几天又回头看了看postman也可以玩…

LeNet对MNIST 数据集中的图像进行分类--keras实现

我们将训练一个卷积神经网络来对 MNIST 数据库中的图像进行分类&#xff0c;可以与前面所提到的CNN实现对比CNN对 MNIST 数据库中的图像进行分类-CSDN博客 加载 MNIST 数据库 MNIST 是机器学习领域最著名的数据集之一。 它有 70,000 张手写数字图像 - 下载非常简单 - 图像尺…

将项目代码上传到github

文章目录 1. 上传步骤1.1. 设置保存项目代码的文件夹1.2. 打开git1.3. 连接到github仓库1.4. 将本地文件上传到github 附录. git 常用命令 摘要&#xff1a;该文章主要从上传代码步骤讲起&#xff0c;关于git下载和其环境配置没有涉及到。 1. 上传步骤 1.1. 设置保存项目代码…