计算机毕业设计选题推荐-幼儿园管理微信小程序/安卓APP-项目实战

作者主页:IT毕设梦工厂✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

文章目录

  • 一、前言
  • 二、开发环境
  • 三、系统界面展示
  • 四、部分代码设计
  • 五、论文参考
  • 六、系统视频
  • 结语

一、前言

随着科技的快速发展和智能手机的普及,移动互联网已经成为了人们生活中不可或缺的一部分。在教育领域,越来越多的家长和老师希望通过便捷的移动应用来实现家校互动,提高教育管理的效率。幼儿园作为孩子成长过程中的重要阶段,其管理方式的现代化和信息化显得尤为重要。因此,开发一款针对幼儿园管理的微信小程序/安卓APP,旨在满足家长、老师和管理人员的需求,提高幼儿园的管理水平和服务质量。

尽管目前已经有一些幼儿园管理应用在市场上出现,但它们在功能、用户体验和安全性方面仍存在诸多问题。例如,部分应用的功能过于简单,无法满足家长和老师在教育管理方面的多样化需求;部分应用的界面设计不够友好,导致用户难以快速上手;还有一些应用在数据安全方面存在隐患,可能泄露家长和学生的隐私信息。这些问题使得现有的解决方案无法完全满足幼儿园管理的需求,进一步强调了开发一款功能完善、易用且安全的幼儿园管理应用的必要性。

本课题旨在设计和开发一款集教学特色信息管理、课程分类管理、课程信息管理、学生活动管理、学生食谱管理、放假通知管理、留言反馈管理等功能于一体的幼儿园管理微信小程序/安卓APP。通过实现这些功能,我们将为家长、老师和管理人员提供一个便捷的沟通和协作平台,帮助他们更好地关注和参与孩子的教育过程,提高幼儿园的整体管理水平。

本课题的研究意义主要体现在以下几个方面:首先,它有助于推动幼儿园管理的现代化和信息化,提高教育服务质量;其次,通过提供丰富的功能和良好的用户体验,有助于加强家校之间的沟通与合作,增进孩子健康成长;再次,本课题的研究成果还将为其他教育机构提供借鉴和参考,推动整个教育行业的技术创新和发展。

二、开发环境

  • 开发语言:Java
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:SpringBoot
  • 前端:微信小程序/Android+uniapp+Vue

三、系统界面展示

  • 幼儿园管理微信小程序/安卓APP界面展示:
    幼儿园管理微信小程序/安卓APP-家长个人中心
    幼儿园管理微信小程序/安卓APP-老师个人中心
    幼儿园管理微信小程序/安卓APP-学生活动管理-老师
    幼儿园管理微信小程序/安卓APP-课程信息管理
    幼儿园管理微信小程序/安卓APP-学生活动管理
    幼儿园管理微信小程序/安卓APP-学生食谱管理

四、部分代码设计

  • 微信小程序/安卓APP项目实战-代码参考:
@Controller
@RequestMapping(value = "/ls")
public class TeacherController {@Autowiredprivate StudentService studentService;@Autowiredprivate ClassService classService;@Autowiredprivate NoticeService noticeService;@Autowiredprivate SignService signService;@Autowiredprivate UserService userService;@Autowiredprivate UserChildrenService userChildrenService;@Autowiredprivate CourseService courseService;@RequestMapping("/stu")public String stu(Model model) {List<Classes> classes=classService.selectAllClasses();model.addAttribute("cla", classes);return "ls/stuPage";}//学生管理/*** Method name: teacherPage <BR>* Description: 教师管理页面 <BR>* * @return String<BR>*/@RequestMapping(value = "/stuMG")public String teaMG(Model model) {List<Classes> classes=classService.selectAllClasses();model.addAttribute("cla", classes);return "ls/student";}/*** Method name: getAllStudentByLimit <BR>* Description: 根据条件获取所有教师 <BR>* * @param userParameter* @return Object<BR>*/@RequestMapping("/getAllStudentByLimit")@ResponseBodypublic Object getAllStudentByLimit(Children stuParameter) {return studentService.getAllStudentByLimit(stuParameter);}/*** Method name: addStuPage <BR>* Description: 增加教师界面 <BR>* * @return String<BR>*/@RequestMapping(value = "/addStuPage")public String addStuPage(Integer id, Model model) {model.addAttribute("manageStu", id);if (null != id) {Children student = studentService.selectByPrimaryKey(id);//UserChildren userChild = userChildrenService.selectById(id);model.addAttribute("manageStu", student);//model.addAttribute("manageChild", userChild);UserChildren uc = userChildrenService.selectByUCId(student.getId());model.addAttribute("uc", uc);}List<Classes> classes=classService.selectAllClasses();model.addAttribute("cla", classes);List<User> user=userService.selectAllJiazhang();model.addAttribute("user", user);return "ls/stuPageAdd";}/*** Method name: addStu <BR>* Description: 教师添加 <BR>* * @param user* @return String<BR>*/@ResponseBody@RequestMapping("/addStu")public String addStu(Children student) {try {studentService.addStudent(student);addUserChildren(student);return "SUCCESS";} catch (Exception e) {return "ERR";}}public void addUserChildren(Children student) {UserChildren userChildern = new UserChildren();userChildern.setChildrenId(student.getId());userChildern.setUserId(student.getUserId());userChildern.setIsFaMa(student.getIsFaMa());userChildern.setIsJinji(student.getIsJinji());userChildrenService.addUserChildren(userChildern);}/*** Method name: updateStudent <BR>* Description: 更新教师 <BR>* * @param user* @return String<BR>*/@ResponseBody@RequestMapping("/updateStudent")public String updateStudent(Children studnet) {UserChildren uc = new UserChildren();uc.setId(studnet.getUcId());uc.setChildrenId(studnet.getId());uc.setIsFaMa(studnet.getIsFaMa());uc.setIsJinji(studnet.getIsJinji());uc.setUserId(studnet.getUserId());userChildrenService.updateUC(uc);return studentService.updateStu(studnet);}/*** Method name: delClaTea <BR>* Description: 批量删除教师<BR>* * @param ids* @return String<BR>*/@RequestMapping(value = "delStudent")@ResponseBody@Transactionalpublic String delStudent(String[] ids) {try {for (String id : ids) {studentService.delStudentById(Integer.parseInt(id));}return "SUCCESS";} catch (Exception e) {TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();return "ERROR";}}//公告管理/*** Method name: gg <BR>* Description: 教师管理页面 <BR>* * @return String<BR>*/@RequestMapping(value = "/gg")public String gg() {return "ls/notice";}/*** Method name: getAllNoticeByLimit <BR>* Description: 根据条件获取所有教师 <BR>* * @param userParameter* @return Object<BR>*/@RequestMapping("/getAllNoticeByLimit")@ResponseBodypublic Object getAllNoticeByLimit(Notice noticeParameter) {return noticeService.getAllNoticeByLimit(noticeParameter);}/*** Method name: addStuPage <BR>* Description: 增加教师界面 <BR>* * @return String<BR>*/@RequestMapping(value = "/addNoticePage")public String addNoticePage(Integer id, Model model) {model.addAttribute("manageNotice", id);if (null != id) {Notice notice = noticeService.selectByPrimaryKey(id);model.addAttribute("manageNotice", notice);}return "ls/noticeAdd";}/*** Method name: addStu <BR>* Description: 教师添加 <BR>* * @param user* @return String<BR>*/@ResponseBody@RequestMapping("/addNotice")public String addNotice(Notice notice) {try {notice.setCreatTime(new Date());noticeService.addNotice(notice);return "SUCCESS";} catch (Exception e) {return "ERR";}}/*** Method name: updateStudent <BR>* Description: 更新教师 <BR>* * @param user* @return String<BR>*/@ResponseBody@RequestMapping("/updateNotice")public String updateNotice(Notice notice) {return noticeService.updateStu(notice);}/*** Method name: delClaTea <BR>* Description: 批量删除教师<BR>* * @param ids* @return String<BR>*/@RequestMapping(value = "delNotice")@ResponseBody@Transactionalpublic String delNotice(String[] ids) {try {for (String id : ids) {noticeService.delNoticeById(Integer.parseInt(id));}return "SUCCESS";} catch (Exception e) {TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();return "ERROR";}}//考勤管理/*** Method name: lskq <BR>* Description: 教师管理页面 <BR>* * @return String<BR>*/@RequestMapping(value = "/lskq")public String lskq() {return "ls/sign";}/*** Method name: getAllSignByLimit <BR>* Description: 根据条件获取所有教师 <BR>* * @param userParameter* @return Object<BR>*/@RequestMapping("/getAllSignByLimit")@ResponseBodypublic Object getAllSignByLimit(Sign signParameter) {return signService.getAllSignByLimit(signParameter);}//打卡@RequestMapping(value = "/qianDaoTui")public String qianDaoTui() {return "ls/daKa";}/*** Method name: addStu <BR>* Description: 教师添加 <BR>* * @param user* @return String<BR>*/@ResponseBody@RequestMapping("/addSign")public String addSign(Sign sign) {Subject subject = SecurityUtils.getSubject();User user = (User) subject.getPrincipal();try {Date date=new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");String time = formatter.format(date).split(" ")[2];String time1 = formatter.format(date).split(" ")[1];String s=PropertyUtil.getConfigureProperties("startTime");if(time.equals("上午") && time1.compareTo(s)>0) {sign.setState(1);}else {sign.setState(3);}sign.setType(1);sign.setSignIn(date);sign.setKqrId(user.getUserId());sign.setKqrType(user.getUserState());signService.addSign(sign);return "SUCCESS";} catch (Exception e) {return "ERR";}}/*** Method name: addStu <BR>* Description: 教师添加 <BR>* * @param user* @return String<BR>*/@ResponseBody@RequestMapping("/addQianTui")public String addQianTui(Sign sign) {Subject subject = SecurityUtils.getSubject();User user = (User) subject.getPrincipal();try {Date date=new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");String time = formatter.format(date).split(" ")[2];String time1 = formatter.format(date).split(" ")[1];String s=PropertyUtil.getConfigureProperties("endTime");if(time.equals("下午") && time1.compareTo(s)<0) {sign.setState(1);}else{sign.setState(2);}sign.setType(2);sign.setSignIn(date);sign.setKqrId(user.getUserId());sign.setKqrType(user.getUserState());signService.addSign(sign);return "SUCCESS";} catch (Exception e) {return "ERR";}}//学生考勤@RequestMapping(value = "/xskq")public String xskq() {return "ls/childSign";}/*** Method name: getAllSignByLimit <BR>* Description: 根据条件获取所有教师 <BR>* @param userParameter* @return Object<BR>*/@RequestMapping("/getAllChildSignByLimit")@ResponseBodypublic Object getAllChildSignByLimit(Sign signParameter) {return signService.getAllChildSignByLimit(signParameter);}//所有老师签到的总次数统计@RequestMapping(value = "/kqtj")public String kqtj(Model model) {List<TongJi> ts = signService.getAllTeacherCount();List<String> names = new ArrayList<>();List<Integer> zc =  new ArrayList<>();List<Integer> tq =  new ArrayList<>();List<Integer> cd =  new ArrayList<>();for (TongJi tongJi : ts) {names.add(tongJi.getUserName());zc.add(tongJi.getZhengChang());tq.add(tongJi.getTiQian());cd.add(tongJi.getChiDao());}model.addAttribute("names", names);model.addAttribute("zc", zc);model.addAttribute("tq", tq);model.addAttribute("cd", cd);return "ls/tongJi";}//所有学生签到的总次数统计@RequestMapping(value = "/tongJiXueSheng")public String tongJiXueSheng(Model model) {List<TongJi> ts = signService.getAllChildCount();List<String> names = new ArrayList<>();List<Integer> zc =  new ArrayList<>();List<Integer> tq =  new ArrayList<>();List<Integer> cd =  new ArrayList<>();for (TongJi tongJi : ts) {names.add(tongJi.getUserName());zc.add(tongJi.getZhengChang());tq.add(tongJi.getTiQian());cd.add(tongJi.getChiDao());}model.addAttribute("names", names);model.addAttribute("zc", zc);model.addAttribute("tq", tq);model.addAttribute("cd", cd);return "ls/tongJiXueSheng";}@RequestMapping(value = "/course")public String course(Model model) {return "ls/course";}//课程@RequestMapping(value = "/courseAdd")public String courseAdd(Model model) {List<User> users = userService.selectAllTea();model.addAttribute("users", users);List<Classes> clas = classService.selectAllClasses();model.addAttribute("cla", clas);return "ls/courseAdd";}@RequestMapping("/getAllCourseByLimit")@ResponseBodypublic Object getAllCourseByLimit(Course course) {return courseService.getAllCourseByLimit(course);}@ResponseBody@RequestMapping("/addCourse")public String addCourse(Course course) {course.setCreateTime(new Date());try {					courseService.addCourse(course);return "SUCCESS";} catch (Exception e) {return "ERR";}}@ResponseBody@RequestMapping("/delCourse")public String delCourse(Integer id) {try {					courseService.delCourse(id);return "SUCCESS";} catch (Exception e) {return "ERR";}}
}
@Controller
public class LoginController {@Autowiredprivate ResultMap resultMap;@Autowiredprivate UserService userService;// 用户登录service@Autowiredprivate PageService pageService;private final Logger logger = LoggerFactory.getLogger(LoginController.class);@RequestMapping(value = "/notLogin", method = RequestMethod.GET)@ResponseBodypublic ResultMap notLogin() {logger.warn("尚未登陆!");return resultMap.success().message("您尚未登陆!");}@RequestMapping(value = "/notRole", method = RequestMethod.GET)@ResponseBodypublic ResultMap notRole() {Subject subject = SecurityUtils.getSubject();User user = (User) subject.getPrincipal();if (user != null) {logger.info("{}---没有权限!", user.getUserName());}return resultMap.success().message("您没有权限!");}/*** Method name: logout <BR>* Description: 退出登录 <BR>* @return String<BR>*/@RequestMapping(value = "/logout", method = RequestMethod.GET)public String logout() {Subject subject = SecurityUtils.getSubject();User user = (User) subject.getPrincipal();if (null != user) {logger.info("{}---退出登录!", user.getUserName());}subject.logout();return "login";}/*** Method name: login <BR>* Description: 登录验证 <BR>* Remark: <BR>* * @param username 用户名* @param password 密码* @return ResultMap<BR>*/@RequestMapping(value = "/login")@ResponseBodypublic ResultMap login(String username, String password) {return userService.login(username, password);}/*** Method name: login <BR>* Description: 登录页面 <BR>* * @return String login.html<BR>*/@RequestMapping(value = "/index")public String login() {return "login";}/*** Method name: index <BR>* Description: 登录页面 <BR>* * @return String login.html<BR>*/@RequestMapping(value = "/")public String index(Model model) {Subject subject = SecurityUtils.getSubject();User user = (User) subject.getPrincipal();if (null != user) {model.addAttribute("user", user);List<Page> pageList = pageService.getAllRolePageByUserId(user.getUserId());model.addAttribute("pageList", pageList);return "index";} else {return "login";}}/*** Method name: main <BR>* Description: 进入主页面 <BR>* * @param model* @return String<BR>*/@RequestMapping(value = "/main")public String main(Model model) {Subject subject = SecurityUtils.getSubject();User user = (User) subject.getPrincipal();if (null != user) {model.addAttribute("user", user);} else {return "login";}List<Page> pageList = pageService.getAllRolePageByUserId(user.getUserId());model.addAttribute("pageList", pageList);return "index";}/*** Method name: checkUserPassword <BR>* Description: 检测旧密码是否正确 <BR>* * @param password 旧密码* @return boolean 是否正确<BR>*/@RequestMapping(value = "/user/checkUserPassword")@ResponseBodypublic boolean checkUserPassword(String password) {return userService.checkUserPassword(password);}/*** Method name: updatePassword <BR>* Description: 更新密码 <BR>* * @param password 旧密码* @return String 是否成功<BR>*/@RequestMapping(value = "/user/updatePassword")@ResponseBodypublic String updatePassword(String password) {return userService.updatePassword(password);}
}

五、论文参考

  • 计算机毕业设计选题推荐-幼儿园管理微信小程序/安卓APP-论文参考:
    计算机毕业设计选题推荐-幼儿园管理微信小程序/安卓APP-论文参考

六、系统视频

幼儿园管理微信小程序/安卓APP-项目视频:

结语

计算机毕业设计选题推荐-幼儿园管理微信小程序/安卓APP-项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我

精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目

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

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

相关文章

Linux(多用户下)查看cuda、cudnn版本、查看已经安装的cuda版本相关命令

查看已经安装的CUDA多个版本 linux 中cuda默认安装在/usr/local目录中&#xff1a; -可以使用命令&#xff1a; ls -l /usr/local | grep cuda查看该目录下有哪些cuda版本&#xff1a; 如果输出&#xff1a; lrwxrwxrwx 1 root root 21 Dec 17 2021 cuda -> /usr/loc…

小型企业网络搭建方案

在这个日益数字化和连接的世界里&#xff0c;一个稳固的小型企业网络是实现高效运作的关键支柱。不论您是在经营一家初创公司还是小型企业&#xff0c;一个可靠的企业网络都是保证顺畅沟通、数据分享以及访问在线资源的重要因素。本篇文章将会引导您完成构建一个小型企业网络的…

Python开源项目GPEN——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践

无论是自己、家人或是朋友、客户的照片&#xff0c;免不了有些是黑白的、被污损的、模糊的&#xff0c;总想着修复一下。作为一个程序员 或者 程序员的家属&#xff0c;当然都有责任满足他们的需求、实现他们的想法。除了这个&#xff0c;学习了本文的成果&#xff0c;或许你还…

web缓存-----squid代理服务

squid相关知识 1 squid的概念 Squid服务器缓存频繁要求网页、媒体文件和其它加速回答时间并减少带宽堵塞的内容。 Squid代理服务器&#xff08;Squid proxy server&#xff09;一般和原始文件一起安装在单独服务器而不是网络服务器上。Squid通过追踪网络中的对象运用起作用。…

微服务测试怎么做

开发团队越来越多地选择微服务架构而不是单体结构&#xff0c;以提高应用程序的敏捷性、可扩展性和可维护性。随着决定切换到模块化软件架构——其中每个服务都是一个独立的单元&#xff0c;具有自己的逻辑和数据库&#xff0c;通过 API 与其他单元通信——需要新的测试策略和新…

RT-Thread STM32F407 定时器

定时器简介 硬件定时器一般有 2 种工作模式&#xff0c;定时器模式和计数器模式。不管是工作在哪一种模式&#xff0c;实质都是通过内部计数器模块对脉冲信号进行计数。下面是定时器的一些重要概念。 计数器模式&#xff1a;对外部输入引脚的外部脉冲信号计数。 定时器模式&…

LayoutLMv3 : 基于统一文本和带Masking图像的文档AI预训练【论文翻译】

文章目录 专业名词统计文档智能多模态预训练模型LayoutLMv3&#xff1a;兼具通用性与优越性LayoutLMv3 &#xff1a; 基于统一文本和带Masking图像的文档AI预训练ABSTRACT1 INTRODUCTION2 LAYOUTLMV32.1 Model Architecture&#xff08;模型架构&#xff09;2.2 Pre-training O…

【JUC】九、线程池ThreadPool

文章目录 1、线程池2、分类3、线程池的使用4、工作流程5、拒绝策略6、线程池的七个参数7、自定义线程池8、什么时候考虑使用线程池&#xff1f; 1、线程池 线程池和数据库连接池的理念很相似&#xff0c;对于数据库连接池&#xff1a;普通的连接数据库是建立一个JDBC连接&…

Linux_系统信息_uname查看内核版本、内核建立时间、处理器类型、顺便得到操作系统位数等

1、uname --help 使用uname --help查看uname命令的帮助信息 2、uname -a 通过上面的help就知道-a选项显示全部内容时的含义了。 内核名是Linux主机名是lubancat&#xff0c;如果想看主机名可以使用命令hostname&#xff1b;内核版本是Linux 4.19.232&#xff0c;建立时间为2…

C语言之深入指针及qsort函数(五)(详解介绍)

C语言之深入指针 在这篇博客看不懂的可以看看这篇C语言之深入指针&#xff08;四&#xff09;在上篇博客中介绍了&#xff1a; 函数指针变量函数指针数组简易计算器的实现\ 文章目录 C语言之深入指针1 回调函数2 qsort函数的使用2.1 使用冒泡排序排序整型数组2.2 使用qsort函数…

什么是脏读、不可重复读、幻读讲解

数据库隔离级别是数据库管理系统中一个重要的概念&#xff0c;它定义了事务之间的可见性和影响。在多用户并发访问数据库时&#xff0c;隔离级别能够确保事务之间的相互独立性&#xff0c;避免数据不一致的问题。本文将深入探讨三种常见的并发问题&#xff1a;脏读、不可重复读…

QTableWidget 设置列宽行高大小的几种方式及其他常用属性设置

目录 效果&#xff1a; 1.列宽、行高自动分配 2.固定值 3.随内容分配列宽 随内容分配行高 4.水平方向标签拓展剩下的窗口部分&#xff0c;填满表格 5.列宽是自动分配的&#xff0c;但是第一列可手动调整宽度&#xff0c;而表格整体的列宽仍是自动分配的。第二、三列办法调…

String字符串性能优化的几种方案

原创/朱季谦 String字符串是系统里最常用的类型之一&#xff0c;在系统中占据了很大的内存&#xff0c;因此&#xff0c;高效地使用字符串&#xff0c;对系统的性能有较好的提升。 针对字符串的优化&#xff0c;我在工作与学习过程总结了以下三种方案作分享&#xff1a; 一.优…

SpringBoot整合Redis使用基于注解的缓存

环境准备 注解 EnableCaching CacheConfig CacheConfig 提供了一种在类级别共享公共缓存相关设置的机制。 | 参数 | 作用 | | | — | — | — | | cacheNames | 使用在类上的默认缓存名称 | | | keyGenerator | 用于类的默认KeyGenerator的bean名称 | | | cacheManager | 自定…

【ARM Trace32(劳特巴赫) 使用介绍 2.1 -- TRACE32 Practice 脚本 cmm 脚本学习】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 上篇文章【ARM Trace32(劳特巴赫) 使用介绍 2 - Veloce 环境中使用trace32 连接 Cortex-M33】 下篇文章【ARM Trace32(劳特巴赫) 使用介绍 2.2 – TRACE32 进阶命令之 DIAG 弹框命令】 文章目录 1. TRACE32 Practice 语法1.…

Python | 机器学习之PCA降维

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《人工智能奇遇记》&#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 目录结构 1. 机器学习之PCA降维概念 1.1 机器学习 1.2 PCA降维 2. PCA降维 2.1 实验目的 2…

如何在Jupyter Lab中安装不同的Kernel

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

Jupyter Notebook的下载安装与使用教程_Python数据分析与可视化

Jupyter Notebook的下载安装与使用 Jupyter简介下载与安装启动与创建NotebookJupyter基本操作 在计算机编程领域&#xff0c;有一个很强大的工具叫做Jupyter。它不仅是一个集成的开发环境&#xff0c;还是一个交互式文档平台。对于初学者来说&#xff0c;Jupyter提供了友好的界…

linux实现SSH免密登录设置,以及shell脚本实现

原创/朱季谦 最近在搭建linux集群&#xff0c;做了SSH免密登录的设置&#xff0c;正好把过程记录一下&#xff1a; 一.用搭建好的两台虚拟机做演示&#xff0c;A机器&#xff1a;192.168.200.129&#xff0c;B机器&#xff1a;192.168.200.128 二.分别在两台机器上执行以下步…

机器人制作开源方案 | 守护一体化护耆卫士

作者&#xff1a;白玲玲、张硕、孔亚轩单位&#xff1a;兰州理工大学指导老师&#xff1a;毕广利 1. 场景调研 “探索者”平台是结合机械、电子、传感器、计算机软硬件、控制、人工智能和造型技术等众多的先进技术研发推出的专业型机器人设备原型设计工具&#xff0c;包含机构…