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.rhkb.cn/news/213106.html

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

相关文章

Python Appium Selenium 查杀进程的实用方法

一、前置说明 在自动化过程中,经常需要在命令行中执行一些操作,比如启动应用、查杀应用等,因此可以封装成一个CommandExecutor来专门处理这些事情。 二、操作步骤 # cmd_util.pyimport logging import os import platform import shutil i…

virtualenv创建虚拟环境

目录 概念安装创建虚拟环境激活虚拟环境删除虚拟环境退出虚拟环境更改虚拟环境路径 概念 virtualenv是一个创建隔离的Python运行环境的工具。它允许用户为每个Python项目创建一个独立的虚拟环境,以避免不同项目之间的依赖冲突。 安装 pip install virtualenv virtua…

网上商城、宠物商城源码(Java)

javaWebjsp网上书城以及宠物商城源码,功能有购物车、收藏以及下单等等功能 带后台管理功能 运行示意图:

cocos creator [Window] Cannot read property ‘dump‘ of null

写脚本的时候,出现了如下的问题, [Window] Cannot read property dump of null 原因:在下图中,方式一是正常的,而方式二则会爆出此错误,所以需要初始化,给它赋值

七、NAT场景下黑洞路由作用

学习防火墙之前,对路由交换应要有一定的认识 1.源NAT场景下的黑洞路由2.NAT Server场景下的路由黑洞3.总结4.黑洞路由其他作用 —————————————————————————————————————————————————— 1.源NAT场景下的黑洞路由 …

乔拓云平台:微信小程序开发的全新视角与高效路径

随着微信小程序的日益普及,越来越多的人开始关注如何开发自己的小程序。对于没有开发经验的人来说,借助第三方平台如乔拓云,可以轻松实现小程序的开发。本文将介绍微信小程序开发需要学习的东西,并探讨如何借助乔拓云平台进行无经…

多线程并发Ping脚本

1. 前言 最近需要ping地址,还是挺多的,就使用python搞一个ping脚本,记录一下,以免丢失了。 2. 脚本介绍 首先检查是否存在True.txt或False.txt文件,并在用户确认后进行删除,然后从IP.txt的文件中读取IP地…

一篇文章带你快速入门 Vue 核心语法

一篇文章带你快速入门 Vue 核心语法 一、为什么要学习Vue 1.前端必备技能 2.岗位多,绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能(Vue2Vue3) 二、什么是Vue 概念:Vue (读音 /vjuː/,类似于 view) …

什么是CAS, 什么是AQS

文章目录 什么是CAS, 什么是AQSCASAQS 什么是CAS, 什么是AQS CAS AQS AQS 全称是AbstractQueuedSynchronizer, 是juc 下一个核心的抽象类,用于构建各种同步器和锁 比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS. 首先在…

2023.11.30 关于 MyBatis 动态 SQL 的使用

目录 引言 if 标签 trim 标签 where 标签 set 标签 foreach 标签 引言 动态 sql 是 MyBatis 的强大特性之一允许你根据输入的参数动态地构建 sql 语句从而在运行时根据不同的条件生成不同的 sql 核心思想 基于提供的数据和条件,能够修改、增加、删除 sql…

css 输入框动态特效

先上图 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>css 输入框动效</title><style>.inputBox {position: relative;width: 250px;}.inputBox input {width: 100%;padding: 10px…

NodeJS(二):npm包管理工具、yarn、npx、pnpm工具等

目录 (一)npm包管理工具 1.了解npm 2.npm的配置文件 常见的配置属性 scripts属性*** 依赖的版本管理 3.npm安装包的细节 4.package-lock文件 5.npm install原理** 6.npm的其他命令 (二) 其他包管理工具 1.yarn工具 基本指令 2.cnpm工具 3.npx工具 (1)执行本地…

MVCC是什么

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

R语言手册30分钟上手

文章目录 1. 环境&安装1.1. rstudio保存工作空间 2. 创建数据集2.1. 数据集概念2.2. 向量、矩阵2.3. 数据框2.3.1. 创建数据框2.3.2. 创建新变量2.3.3. 变量的重编码2.3.4. 列重命名2.3.5. 缺失值2.3.6. 日期值2.3.7. 数据框排序2.3.8. 数据框合并(合并沪深300和中证500收盘…

Python-滑雪大冒险【附源码】

滑雪大冒险 《滑雪大冒险》是一款充满趣味性和挑战性的休闲竞技游戏&#xff0c;在游戏中&#xff0c;玩家将扮演一位勇敢的滑雪者&#xff0c;在雪山上展示他们的滑雪技巧&#xff0c;游戏采用2D图形界面&#xff0c;以第三人称视角呈现 运行效果&#xff1a;用方向键及方向键…

TCP/IP_整理起因

先分享一个初级的问题&#xff1b;有个客户现场&#xff0c;终端设备使用客户网络更新很慢&#xff0c;使用手机热点更新速度符合预期&#xff1b;网络部署情况如下&#xff1a; 前期花费了很大的精力进行问题排查对比&#xff0c;怀疑是客户网络问题&#xff08;其他的客户现…

Java网络编程——Java语言的反射机制

在Java运行环境中&#xff0c;对于任意一个类&#xff0c;能否知道这个类有哪些属性和方法&#xff1f;对于任意一个对象&#xff0c;能否调用它的任意一个方法&#xff1f;答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自Java语言的反射&#xff08;Refl…

vuepress-----18、图片缩放

图片引入两种方式 地址 # 图片缩放插件 # 实战 md文件引入图片 <img class"zoom-custom-imgs" :src"$withBase(/favicon.ico)" alt"favicon">安装配置插件 vuepress/medium-zoom: {selector: img.zoom-custom-imgs,},效果展示

Spring框架学习:Bean生命周期

目录 SpringBean的生命周期 Bean实例属性填充 三级缓存 常用的Aware接口 Spring IoC容器实例化Bean总结 SpringBean的生命周期 Spring Bean的生命周期是从 Bean 实例化之后&#xff0c;即通过反射创建出对象之后&#xff0c;到Bean成为一个完整对象&#xff0c;最终存储到…

Termux+Hexo结合内网穿透轻松实现安卓手机搭建博客网站发布公网访问

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…