数据结构课堂考勤管理系统

news2025/1/17 6:15:53

摘要

高校的不断扩张让在校学生数量不断的增加,对于教师和管理人员的需求也在不断地增强,对日常的学生考勤管理的工作量也在日益增加,传统的人工点名签到的考勤管理模式已经给无法适用于当前高校考勤管理的需求,同时手动录入的考勤管理模式会浪费大量的人力物力,也不便于考勤数据信息的管理和查询,考勤管理是高校教务管理工作的重点内容之一,通过考勤管理可以及时了解大学生在校的学生状态,结合考勤管理来帮助培养学生自律自强的学习品格,结合高校内考勤管理的需求和重要性,利用互联网平台开发设计一款针对校内考勤管理的系统是非常有需求空间的。

本文结合当前应用技术在高校内的发展现状,利用JSP技术开发设计一款在线考勤管理系统,利用线上平台互通的便捷性,实现了学生与教师之间的信息互通,通过在线考勤管理系统实现了在线签到、在线请假以及课程信息查看等功能。同时结合了国内外研究现状以及可行性分析对于系统开发的背景和可行性进行阐述分析,通过数据库结构的搭建以及系统的测试环节的应用实现了考勤管理系统的开发设计。结合学生用户及教师用户的切实需求,通过线上平台实现了高效的考勤管理,同时也提升了考勤数据信息统计和管理的效率。

关键词JSP技术;Mysql 数据库;学校考勤管理;在线签到;

系统的实现

首页

教师后台界面 

系统后台管理 

教师信息添加 

课程信息管理界面 

开发工具技术介绍 

JSP技术是基于JAVA编程语言来实现的动态网页技术标准,JSP技术主要依托WEB服务器端来响应用户端的数据请求,结合请求指令内容动态的生成WEB网页,通过JAVA语言来实现数据信息的转换以及处理复杂的业务需求。同时可以将JAVA代码嵌入到静态的网页页面端实现动态的数据信息呈现,JSP技术被广泛的应用于网页端的开发设计中,增强了标签库的功能和服务器的性能同时不会受到跨平台数据操作的影响。JSP技术在使用过程中继承了JAVA语言易用性的特点,通过灵活的页面信息调整增强了整体系统平台开发的效率,此次学生考勤管理系统主要通过JSP技术来实现,确保了系统多用户之间数据传递的有效性

Mysql数据库作为一款关系型数据库被广泛的应用于网页系统的开发设计中,该数据库在应用过程中硬盘内存占用率低且能够实现百万条数据信息的处理,在数据响应速度和数据关系的建立上都能够实现高效的运行,同时Mysql数据库在使用上可以搭配多种编程语言使用,通过建立关系图例的方式来实现数据库的结构搭建,因此在数据库的使用上更加的灵活便捷,同时Mysql数据库是一款免费开源的开发技术,在使用上主要通过SQL语言来实现数据库的访问和转换,能够提高数据信息的查询速度同时也能够支持大型数据库的开发设计。此次学生考勤管理系统的数据库开发设计主要通过Mysql数据库来实现,通过关系图例的方式来实现数据库关系的建立,在数据库的开发和设计上更加的灵活。

SSM框架是基于是spring和Mybatis的框架集,Spring作为一款轻量级的框架结构在使用上可以通过控制反转和面向切面的方式来实现模块内的自由组合,同时可以利用Spring MVC的设计理念来实现功能模块的灵活操作,通过前端控制器处理用户端的服务请求,在通过处理器向前端反馈对应的视图解析器,最终通过渲染视图反馈到前端用户。Mybatis主要针对数据库的一款轻量级持久层框架,在使用过程中减少了数据库代码冗余,便于代码的测试和维护。此次对于学生考勤管理系统的设计主要基于SSM框架来实现,通过该框架结构有效提升了系统界面呈现的准确性以及数据传递的效率。

部分代码

package com.controller;

import java.io.File;
import java.io.IOException;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.PrintWriter;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.entity.Kechengxinxi;
import com.server.KechengxinxiServer;
import com.util.PageBean;
import net.sf.json.JSONObject;
import com.util.db;
import java.sql.SQLException;
import java.sql.*;
@Controller
public class KechengxinxiController {
	@Resource
	private KechengxinxiServer kechengxinxiService;


   
	@RequestMapping("addKechengxinxi.do")
	public String addKechengxinxi(HttpServletRequest request,Kechengxinxi kechengxinxi,HttpSession session) throws SQLException{
		Timestamp time=new Timestamp(System.currentTimeMillis());
		
		kechengxinxi.setAddtime(time.toString().substring(0, 19));
		kechengxinxiService.add(kechengxinxi);
		db dbo = new db();
		
		//kuabiaogaizhi
		session.setAttribute("backxx", "添加成功");
		session.setAttribute("backurl", request.getHeader("Referer"));
		
		//session.setAttribute("backurl", "kechengxinxiList.do");
		
		return "redirect:postback.jsp";
		//return "redirect:kechengxinxiList.do";
		
		
		
	}
 
//	处理编辑
	@RequestMapping("doUpdateKechengxinxi.do")
	public String doUpdateKechengxinxi(int id,ModelMap map,Kechengxinxi kechengxinxi){
		kechengxinxi=kechengxinxiService.getById(id);
		map.put("kechengxinxi", kechengxinxi);
		return "kechengxinxi_updt";
	}
	
	
	
	
	
//	后台详细
	@RequestMapping("kechengxinxiDetail.do")
	public String kechengxinxiDetail(int id,ModelMap map,Kechengxinxi kechengxinxi){
		kechengxinxi=kechengxinxiService.getById(id);
		map.put("kechengxinxi", kechengxinxi);
		return "kechengxinxi_detail";
	}
//	前台详细
	@RequestMapping("kcxxDetail.do")
	public String kcxxDetail(int id,ModelMap map,Kechengxinxi kechengxinxi){
		kechengxinxi=kechengxinxiService.getById(id);
		map.put("kechengxinxi", kechengxinxi);
		return "kechengxinxidetail";
	}
//	
	@RequestMapping("updateKechengxinxi.do")
	public String updateKechengxinxi(int id,ModelMap map,Kechengxinxi kechengxinxi,HttpServletRequest request,HttpSession session){
		kechengxinxiService.update(kechengxinxi);
		session.setAttribute("backxx", "修改成功");
		session.setAttribute("backurl", request.getHeader("Referer"));
		return "redirect:postback.jsp";
		//String url = request.getHeader("Referer");
		//return "redirect:"+url;
		//return "redirect:kechengxinxiList.do";
	}

//	分页查询
	@RequestMapping("kechengxinxiList.do")
	public String kechengxinxiList(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Kechengxinxi kechengxinxi, String kechengbianhao, String kechengmingcheng, String kechengbanji, String shangkeshijian1,String shangkeshijian2, String beizhu, String jiaoshigonghao, String jiaoshixingming, String jiaoshidianhua, String zhicheng){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 15);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 15);
		
		
		if(kechengbianhao==null||kechengbianhao.equals("")){pmap.put("kechengbianhao", null);}else{pmap.put("kechengbianhao", kechengbianhao);}
		if(kechengmingcheng==null||kechengmingcheng.equals("")){pmap.put("kechengmingcheng", null);}else{pmap.put("kechengmingcheng", kechengmingcheng);}
		if(kechengbanji==null||kechengbanji.equals("")){pmap.put("kechengbanji", null);}else{pmap.put("kechengbanji", kechengbanji);}
		if(shangkeshijian1==null||shangkeshijian1.equals("")){pmap.put("shangkeshijian1", null);}else{pmap.put("shangkeshijian1", shangkeshijian1);}
		if(shangkeshijian2==null||shangkeshijian2.equals("")){pmap.put("shangkeshijian2", null);}else{pmap.put("shangkeshijian2", shangkeshijian2);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		if(jiaoshigonghao==null||jiaoshigonghao.equals("")){pmap.put("jiaoshigonghao", null);}else{pmap.put("jiaoshigonghao", jiaoshigonghao);}
		if(jiaoshixingming==null||jiaoshixingming.equals("")){pmap.put("jiaoshixingming", null);}else{pmap.put("jiaoshixingming", jiaoshixingming);}
		if(jiaoshidianhua==null||jiaoshidianhua.equals("")){pmap.put("jiaoshidianhua", null);}else{pmap.put("jiaoshidianhua", jiaoshidianhua);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		
		int total=kechengxinxiService.getCount(pmap);
		pageBean.setTotal(total);
		List<Kechengxinxi> list=kechengxinxiService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "kechengxinxi_list";
	}
	
	
	
	
	
	@RequestMapping("kcxxList.do")
	public String kcxxList(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Kechengxinxi kechengxinxi, String kechengbianhao, String kechengmingcheng, String kechengbanji, String shangkeshijian1,String shangkeshijian2, String beizhu, String jiaoshigonghao, String jiaoshixingming, String jiaoshidianhua, String zhicheng){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 15);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 15);
		
		
		if(kechengbianhao==null||kechengbianhao.equals("")){pmap.put("kechengbianhao", null);}else{pmap.put("kechengbianhao", kechengbianhao);}
		if(kechengmingcheng==null||kechengmingcheng.equals("")){pmap.put("kechengmingcheng", null);}else{pmap.put("kechengmingcheng", kechengmingcheng);}
		if(kechengbanji==null||kechengbanji.equals("")){pmap.put("kechengbanji", null);}else{pmap.put("kechengbanji", kechengbanji);}
		if(shangkeshijian1==null||shangkeshijian1.equals("")){pmap.put("shangkeshijian1", null);}else{pmap.put("shangkeshijian1", shangkeshijian1);}
		if(shangkeshijian2==null||shangkeshijian2.equals("")){pmap.put("shangkeshijian2", null);}else{pmap.put("shangkeshijian2", shangkeshijian2);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		if(jiaoshigonghao==null||jiaoshigonghao.equals("")){pmap.put("jiaoshigonghao", null);}else{pmap.put("jiaoshigonghao", jiaoshigonghao);}
		if(jiaoshixingming==null||jiaoshixingming.equals("")){pmap.put("jiaoshixingming", null);}else{pmap.put("jiaoshixingming", jiaoshixingming);}
		if(jiaoshidianhua==null||jiaoshidianhua.equals("")){pmap.put("jiaoshidianhua", null);}else{pmap.put("jiaoshidianhua", jiaoshidianhua);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		
		int total=kechengxinxiService.getCount(pmap);
		pageBean.setTotal(total);
		List<Kechengxinxi> list=kechengxinxiService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "kechengxinxilist";
	}
	@RequestMapping("kcxxListtp.do")
	public String kcxxListtp(@RequestParam(value="page",required=false)String page,
			ModelMap map,HttpSession session,Kechengxinxi kechengxinxi, String kechengbianhao, String kechengmingcheng, String kechengbanji, String shangkeshijian1,String shangkeshijian2, String beizhu, String jiaoshigonghao, String jiaoshixingming, String jiaoshidianhua, String zhicheng){
		if(page==null||page.equals("")){
			page="1";
		}
		PageBean pageBean=new PageBean(Integer.parseInt(page), 15);
		Map<String, Object> pmap=new HashMap<String,Object>();
		pmap.put("pageno", pageBean.getStart());
		pmap.put("pageSize", 15);
		
		
		if(kechengbianhao==null||kechengbianhao.equals("")){pmap.put("kechengbianhao", null);}else{pmap.put("kechengbianhao", kechengbianhao);}
		if(kechengmingcheng==null||kechengmingcheng.equals("")){pmap.put("kechengmingcheng", null);}else{pmap.put("kechengmingcheng", kechengmingcheng);}
		if(kechengbanji==null||kechengbanji.equals("")){pmap.put("kechengbanji", null);}else{pmap.put("kechengbanji", kechengbanji);}
		if(shangkeshijian1==null||shangkeshijian1.equals("")){pmap.put("shangkeshijian1", null);}else{pmap.put("shangkeshijian1", shangkeshijian1);}
		if(shangkeshijian2==null||shangkeshijian2.equals("")){pmap.put("shangkeshijian2", null);}else{pmap.put("shangkeshijian2", shangkeshijian2);}
		if(beizhu==null||beizhu.equals("")){pmap.put("beizhu", null);}else{pmap.put("beizhu", beizhu);}
		if(jiaoshigonghao==null||jiaoshigonghao.equals("")){pmap.put("jiaoshigonghao", null);}else{pmap.put("jiaoshigonghao", jiaoshigonghao);}
		if(jiaoshixingming==null||jiaoshixingming.equals("")){pmap.put("jiaoshixingming", null);}else{pmap.put("jiaoshixingming", jiaoshixingming);}
		if(jiaoshidianhua==null||jiaoshidianhua.equals("")){pmap.put("jiaoshidianhua", null);}else{pmap.put("jiaoshidianhua", jiaoshidianhua);}
		if(zhicheng==null||zhicheng.equals("")){pmap.put("zhicheng", null);}else{pmap.put("zhicheng", zhicheng);}
		
		int total=kechengxinxiService.getCount(pmap);
		pageBean.setTotal(total);
		List<Kechengxinxi> list=kechengxinxiService.getByPage(pmap);
		map.put("page", pageBean);
		map.put("list", list);
		session.setAttribute("p", 1);
		return "kechengxinxilisttp";
	}
	
	@RequestMapping("deleteKechengxinxi.do")
	public String deleteKechengxinxi(int id,HttpServletRequest request){
		kechengxinxiService.delete(id);
		String url = request.getHeader("Referer");
		return "redirect:"+url;
		//return "redirect:kechengxinxiList.do";
	}
	
	@RequestMapping("quchongKechengxinxi.do")
	public void quchongKechengxinxi(Kechengxinxi kechengxinxi,HttpServletResponse response){
		   Map<String,Object> map=new HashMap<String,Object>();
		   map.put("kechengbianhao", kechengxinxi.getKechengbianhao());
		   System.out.println("kechengbianhao==="+kechengxinxi.getKechengbianhao());
		   System.out.println("kechengbianhao222==="+kechengxinxiService.quchongKechengxinxi(map));
		   JSONObject obj=new JSONObject();
		   if(kechengxinxiService.quchongKechengxinxi(map)!=null){
				 obj.put("info", "ng");
			   }else{
				   obj.put("info", "数据结构编号可以用!");
				  
			   }
		   response.setContentType("text/html;charset=utf-8");
		   PrintWriter out=null;
		   try {
			out=response.getWriter();
			out.print(obj);
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			out.close();
		}
	}
}

可行性分析 

此次学生考勤管理系统平台的开发设计主要基于JSP技术来实现,同时通过SSM框架结构来实现页面呈现和数据查询,利用Mysql数据库来实现数据平台的数据存储和逻辑关系的搭建。系统平台开发设计所使用的开发技术均是成熟稳定的开发工具,此次对于考勤管理系统平台的主要功能需求集中在在线签到以及在线请假信息的管理上,整体系统基于浏览器端实现且开发工具灵活成熟,因此从技术层面来看不存太大的技术难点。

对于经济可行性的分析主要集合系统开发成本和未来收益的分析判断,此次学生考勤管理系统平台所利用的开发工具均是免费开源的应用技术,整体系统平台不需要额外的硬件设备的支持,家用的普通电脑就可以实现考勤管理系统的开发设计,同时系统的开发设计主要用于毕业设计因此不存在额外的人工开支,借助此次考勤管理系统平台的开发设计可以帮助进一步优化提升了校内考勤管理的效率,结合在线签到及在线请假等功能模块的利用增强了考勤管理过程中的师生信息互通,同时能够为师生用户提供更加便捷的线上数据查询及统计的信息化平台,节约了大量的人力物力也进一步提升了考勤管理的效率。

此次学生考勤管理系统主要应用于高校,主要用户为高校大学生及教师,系统平台的受众群体均是接受高等教育的人群,同时对于互联网及计算机应用平台的使用都非常熟悉,且此次系统平台的主要功能模块清晰,对于前端用户和后台管理人员而言都可以实现轻松的使用,系统平台主要基于浏览器端实现,整体系统操作便捷且灵活,从操作层面出发是简单可行的。

总结

学生考勤管理是日常教务工作中的重点内容之一,通过学生考勤可以规范学生在校的行为,确保学生的学习状态,目前很多高校都将学生考勤纳入到了平时得分内,考勤管理以及考勤数据的准确性也需要进一步优化提升。随着应用技术的发展,目前很多企业和学校都通过多种打卡方式来实现简单高效的考勤管理,例如指纹打卡、人脸识别以及门禁打卡等,然而这种管理模式还是无法避免考勤造假的情况发生,很多高校还是沿用人工统计及点名的方式,这样占用了大量的课堂时间且数据信息统计量较大,为了便于高校内考勤数据的统计和管理,本文利用了JSP技术开发设计一款基于浏览器端的在线考勤管理系统,通过系统平台可以实现学生在线签到、教师考勤管理等内容给,利用平台数据信息的传递性来实现高效的考勤管理。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring重点知识(个人整理笔记)

目录 1. 为什么要使用 spring&#xff1f; 2. 解释一下什么是 Aop&#xff1f; 3. AOP有哪些实现方式&#xff1f; 4. Spring AOP的实现原理 5. JDK动态代理和CGLIB动态代理的区别&#xff1f; 6. 解释一下什么是 ioc&#xff1f; 7. spring 有哪些主要模块&#xff1f;…

使用c语言libexpat开源库解析XML数据

1 libexpat简介 Expat 是一个用 C 语言编写的开源 XML 解析库&#xff0c;以其高性能和小巧的体积著称。Expat 兼容多种操作系统平台&#xff0c;包括但不限于 Windows、Linux、macOS 等。由于其跨平台特性和简单易用的API&#xff0c;Expat 成为了许多C/C程序员解析XML文档的…

【项目实战】【Docker】【Git】【Linux】部署V2rayA项目

今天着手了一个全新领域的项目&#xff0c;从完全没有头绪到成功运行&#xff0c;记录一下具体的部署流程 github项目链接V2rayA 一开始拿到以后完全没有抓手&#xff0c;去阅读了一下他的帮助文档 写着能用docker运行&#xff0c;就去下载了一个Docker配置了一下 拉取代码到…

LeetCode-543. 二叉树的直径【树 深度优先搜索 二叉树】

LeetCode-543. 二叉树的直径【树 深度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;DFS解题思路二&#xff1a;另一种写法DFS解题思路三&#xff1a;0 题目描述&#xff1a; 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任…

【35分钟掌握金融风控策略3】场景概述3

目录 ​编辑 场景概述 贷前、贷中、贷后的划分及对应的风控场景 贷前风控场景简介 预授信 授信审批 定额 定价 人工审核 场景概述 贷前、贷中、贷后的划分及对应的风控场景 在金融风控全生命周期中&#xff0c;贷前主要是指授信成功及之前的阶段、贷中主要是指授信成…

ubuntu18.04图形界面卡死,鼠标键盘失灵, 通过MAC共享网络给Ubuntu解决!

ubuntu18.04图形界面卡死&#xff0c;鼠标键盘失灵&#xff0c; 通过MAC共享网络给Ubuntu解决&#xff01; 1. 尝试从卡死的图形界面切换到命令行界面2. 进入bios和grub页面3. 更改Grub中的设置&#xff0c;以进入命令行4. 在命令行页面解决图形界面卡死的问题5. Mac共享WI-FI网…

【QT+QGIS跨平台编译】056:【pdalcpp+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdalcpp介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdalcpp介绍 pdalcpp 是 PDAL(Point Data Abstraction Library)的 C++ 接口,它允许开发人员在他们的 C++ 项目中直接使用 PDAL 的功能和特性。PDAL 是一个开源的库,用于处理…

探索未来外贸电商系统的创新架构

在全球化、数字化的时代背景下&#xff0c;外贸电商行业呈现出蓬勃发展的态势。为了适应市场竞争的激烈和用户需求的多样化&#xff0c;外贸电商系统的架构设计显得尤为重要。本文将深入探讨未来外贸电商系统的创新架构&#xff0c;以期为行业发展提供新的思路和方向。 随着全…

IDEA2023.1.1中文插件

1.启动IDEA 选中Customize 2.选择All settings 3.选中Plugins,再搜索栏里输入Chinese,找到 "Chinese (Simplified) Language"插件&#xff0c;点击 Install 进行安装。 4. 安装完成后&#xff0c;重启IntelliJ IDEA&#xff0c;即可看到界面语言已经变为中文。

Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)

1. JDK 版本 (Oracle Java SE 支持路线图) 数据来源&#xff1a;Oracle Java SE 支持路线图 | 甲骨文中国: https://www.oracle.com/cn/java/technologies/java-se-support-roadmap.html 版本GA DatePremier Support UntilExtended Support Until&#xff08;限 LTS&#xff09…

[C#]OpenCvSharp改变图像的对比度和亮度

目的 访问像素值mat.At<T>(y,x) 用0初始化矩阵Mat.Zeros 饱和操作SaturateCast.ToByte 亮度和对比度调整 g(x)αf(x)β 用α(>0)和β一般称作增益(gain)和偏置(bias)&#xff0c;分别控制对比度和亮度 把f(x)看成源图像像素&#xff0c;把g(x)看成输出图像像素…

如何利用待办事项清单提高工作效率?

你是否经常因为繁重的工作量而感到不堪重负&#xff1f;你是否在努力赶工期或经常忘记重要的电子邮件&#xff1f;你并不是特例。如何利用待办事项清单提高工作效率&#xff1f;这里有一个简单的方法可以帮你理清混乱并更高效地完成任务—待办事项清单。 这种类型的清单可以帮…

基于机器学习的木马检测模型的设计与实现(论文)_kaic

摘 要 科技的发展带来了人们生活的改变&#xff0c;近年来我国网民已突破十亿人口&#xff0c; 而且在后疫 情时代&#xff0c; 经历了疫情时期的一系列线上活动&#xff0c; 人们对网络的依赖比以往任何时期都要高 得多。高频次的上网行为也带来了一系列安全问题&#xff…

FPGA实现Canny算法(Verilog)

在边缘检测算法里面Sobel是比较简单的一个算法&#xff0c;但是其检测出来的边缘往往是比较粗的&#xff0c;效果不是很好&#xff0c;因为我们最理想的边缘肯定就是一个宽度为1的细线。 Canny算法在此基础上进行了改进&#xff0c;通过使用边缘的梯度信息进行非最大值抑制(NM…

面向作家的 ChatGPT 教程

原文&#xff1a;ChatGPT for authors 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 介绍我坐在电脑前几个小时&#xff0c;盯着一张空白的 Word 文档。文字就是无法流畅地表达出来。这并不是什么新鲜事&#xff1b;称之为写作障碍&#xff0c;称之为缺乏灵感&#x…

大创项目推荐 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍&#xff1a; •串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大的…

STM32的CAN外设

我们的CAN控制器支持最高的通讯速率为1Mb/s&#xff0c;可以自动地接收和发送CAN报文&#xff0c;支持使用标准ID和扩展ID地报文&#xff0c;外设中具有3个发送邮箱&#xff0c;发送报文的优先级可以使用软件控制&#xff0c;还可以记录发送的时间&#xff0c;具有两个3级深度的…

langchain + azure chatgpt组合配置并运行

首先默认你已经有了azure的账号。 最重要的是选择gpt-35-turbo-instruct模型、api_version&#xff1a;2023-05-15&#xff0c;就这两个参数谷歌我尝试了很久才成功。 我们打开https://portal.azure.com/#home&#xff0c;点击更多服务&#xff1a; 我们点击Azure OpenAI&#…

MacBook安装使用XMind

MacBook安装使用XMind XMind简介 官方地址: https://www.xmind.cn/ XMind 是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生。作为一款有效提升工作和生活效率的生产力工具,受到全球百千万用户的青睐。 XMind 是一款非常实用的商业思维导图软件&#xff0c;应用…