LayUI之CRUD(增删改查功能实现)项目案例_layui增删改查功能实现-程序员宅基地

技术标签: Mysql  layui  前端  mysql  

目录

前言

1. Dao层代码的编写

1.1 UserDao类代码的优化

1.2 Dao方法测试类UserDaoTest

1.2.1 测试查询所有及模糊查询的结果

 1.2.2 测试删除方法

 1.2.3 测试新增方法

 1.2.4 测试修改方法

 1.2.5 测试成功的标准

 2. 编写页面显示对应的数据格式

2.1 前往LayUI官网查询页面效果对应的数据格式(以开启头部选项栏为例)

 数据格式

 2.2 编写UserAction类代码

2.2.1 R工具类优化UserAction类代码

2.2.2 验证数据是否是我们所需的数据格式

2.2.3 UserAction(R工具类优化过后)

3..查询前端代码实现

3.1 编写用户管理对应的jsp代码

userManage.jsp代码

userEdit.jsp代码

3.2 .编写对应的js代码实现数据绑定和功能实现

userManage.js代码

userEdit.js代码

注意事项

4. 项目演示

4.1 查询及模糊查询

 4.2 页面的删除

 4.3 页面的新增

​编辑 4.4 页面的修改

 结束语


前言

本期博客基于上期博客——LayUI之选项卡,今天给大家带来的是一期项目案例的功能分享,主要是会议OA项目中用户管理里的功能分享,其中的功能包括用户数据页面显示及模糊查询、用户的删除、用户的修改、用户的新增四个功能效果,废话不多说我们直接上跟着我们的思维导图一起来看看吧。

 

1. Dao层代码的编写

1.1 UserDao类代码的优化

package com.YX.dao;

import java.util.List;
import java.util.Map;

import com.YX.entity.User;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;

public class UserDao extends BaseDao<User> {
	
    public List<User> list(User user, PageBean pageBean) throws Exception {
    	String sql="select * from t_oa_user where 1=1 ";
    	return super.executeQuery(sql, User.class, pageBean);
    }
    
    /**
     * 登陆方法
     * @param user
     * @return
     * @throws Exception
     */
    public User login(User user) throws Exception {
    	String sql="select * from t_oa_user where loginName = '"+user.getLoginName()+"' and pwd = '"+user.getPwd()+"'"; 
    	List<User> lst = super.executeQuery(sql, User.class,null );
    	if (lst != null && lst.size()==1 ) {
    		return lst.get(0);
		}
    	return null;
    }
    
    
    
    /**查询的方法
     * 查询结果带有身份的结果(带模糊查询)
     * @param user
     * @return
     * @throws Exception
     */
    public List<Map<String, Object>> UserRole(User user,PageBean pageBean) throws Exception {
//    	编写sql语句
    	String sql="SELECT\r\n" + 
    			"	u.*,\r\n" + 
    			"	(\r\n" + 
    			"CASE\r\n" + 
    			"	\r\n" + 
    			"	WHEN u.rid = '1' THEN\r\n" + 
    			"	'管理员' \r\n" + 
    			"	WHEN u.rid = '2' THEN\r\n" + 
    			"	'发起者' \r\n" + 
    			"	WHEN u.rid = '3' THEN\r\n" + 
    			"	'审批者' \r\n" + 
    			"	WHEN u.rid = '4' THEN\r\n" + 
    			"	'参与者' \r\n" + 
    			"	WHEN u.rid = '5' THEN\r\n" + 
    			"	'会议室管理员' ELSE '其他' \r\n" + 
    			"END \r\n" + 
    			"	) rname \r\n" + 
    			"FROM\r\n" + 
    			"t_oa_user u where 1=1 "; 
//    	获取模糊查询的内容
    	String name = user.getName();
//    	判空
    	if (StringUtils.isNotBlank(name)) {
			sql += " and name like '%"+name+"%'";
		}
    	
    	return super.executeQuery(sql, pageBean);
    }
    
    /**
     * 新增用户的方法
     * @param user
     * @return
     * @throws Exception
     */
    public int add(User user) throws Exception {
		String sql ="insert into t_oa_user(name,loginName,pwd) values(?,?,?)";
		return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd"});
		
	}
    
    /**
     * 删除用户的方法
     * @param user
     * @return
     * @throws Exception
     */
    public int del(User user) throws Exception {
		String sql ="delete from t_oa_user where id = ?";
		return super.executeUpdate(sql, user, new String[] {"id"});
	}
    
    /**
     * 修改用户的方法
     * @param user
     * @return
     * @throws Exception
     */
    public int edit(User user) throws Exception {
		String sql ="update t_oa_user set name=?,loginName=?,pwd=? where id = ?";
		return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd","id"});
	}
    
}

1.2 Dao方法测试类UserDaoTest

package com.YX.dao;

import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.YX.entity.User;

/**dao方法junit测试类
 * @author 君易--鑨
 * 2023年7月14日下午8:42:00
 * 
 */
public class UserDaoTest {
	// 实例化Dao方法类
	private UserDao ud = new UserDao();

	@Test
	public void testUserRole() throws Exception {
		// 实例化实体对象用于存储查询的内容
		User user = new User();
		// user.setName("朱");
		// 调用查询方法
		List<Map<String, Object>> userRole = ud.UserRole(user, null);
		// 遍历输出
		for (Map<String, Object> u : userRole) {
			System.out.println(u);
		}

	}

	@Test
	public void testAdd() throws Exception {
		// 实例化实体对象用于新增用户的信息
		User user = new User();
		user.setName("君易");
		user.setLoginName("junyi");
		user.setPwd("1234");
		// 调用新增方法
		ud.add(user);
	}

	@Test
	public void testDel() throws Exception {
		// 实例化实体对象用于删除用户的信息
		User user = new User();
		user.setId(17);
		// 调用新增方法
		ud.del(user);
	}

	@Test
	public void testEdit() throws Exception {
		// 实例化实体对象用于修改用户的信息
		User user = new User();
		user.setId(17);
		user.setName("鑨");
		user.setLoginName("muyi");
		user.setPwd("1234");
		// 调用新增方法
		ud.edit(user);
	}

}

1.2.1 测试查询所有及模糊查询的结果

查询所有

 模糊查询的结果

 1.2.2 测试删除方法

 1.2.3 测试新增方法

 1.2.4 测试修改方法

 1.2.5 测试成功的标准

 2. 编写页面显示对应的数据格式

2.1 前往LayUI官网查询页面效果对应的数据格式(以开启头部选项栏为例)

 数据格式

 2.2 编写UserAction类代码

2.2.1 R工具类优化UserAction类代码
package com.zking.util;

import java.util.HashMap;

public class R extends HashMap{
	public R data(String key, Object value) {
		this.put(key, value);
		return this;
	}
	
	public static R ok(int code, String msg) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.data("success", false).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R ok(int code, String msg,Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("data", data);
		return r;
	}
	
	public static R ok(int code, String msg, long count, Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("count", count).data("data", data);
		return r;
	}
}
2.2.2 验证数据是否是我们所需的数据格式

 由上方动态图后页面显示的数据可知包含code、msg、count、data等我们所需的数据属性

2.2.3 UserAction(R工具类优化过后)
package com.YX.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.YX.dao.UserDao;
import com.YX.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.PageBean;
import com.zking.util.R;
import com.zking.util.ResponseUtil;

/**请求类
 * @author 君易--鑨
 * 2023年7月14日下午9:31:44
 * 
 */
public class UserAction extends ActionSupport implements ModelDriver<User>{
//实例化实体对象和dao方法
	private User user=new User();
	private UserDao userdao=new UserDao();
	@Override
	public User getModel() {
		return user;
	}
	
		public void login(HttpServletRequest req, HttpServletResponse resp) {
			try {
//				调用登陆方法
				User u = userdao.login(user);
				ResponseUtil.writeJson(resp, u);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		/**
		 * 编写显示数据格式的请求
		 * @param req
		 * @param resp
		 */
		public void UserRole(HttpServletRequest req, HttpServletResponse resp) {
			try {
//				实例化分页工具类
				PageBean pageBean=new PageBean();
				pageBean.setRequest(req);
//				调用查询方法
				List<Map<String,Object>> userRole = userdao.UserRole(user, pageBean);
//				实例化Map集合存储对应数据格式的属性
				Map<String, Object> map=new HashMap<String, Object>();
//				设置添加属性
				ResponseUtil.writeJson(resp, R.ok(0, "查询成功", pageBean.getTotal(),userRole));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		/**
		 * 编写新增的请求
		 * @param req
		 * @param resp
		 */
		public void add(HttpServletRequest req, HttpServletResponse resp) {
			try {
//				调用新增方法
			    int add = userdao.add(user);
				ResponseUtil.writeJson(resp, R.ok(0, "新增成功"));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		/**
		 * 编写删除的请求
		 * @param req
		 * @param resp
		 */
		public void del(HttpServletRequest req, HttpServletResponse resp) {
			try {
//				调用新增方法
			    int del = userdao.del(user);
				ResponseUtil.writeJson(resp, R.ok(0, "删除成功"));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		
		public void edit(HttpServletRequest req, HttpServletResponse resp) {
			try {
//				调用新增方法
			    int edit = userdao.edit(user);
				ResponseUtil.writeJson(resp, R.ok(0, "修改成功"));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	

}

3..查询前端代码实现

3.1 编写用户管理对应的jsp代码

 去LayUI官网获取我们对应需要的页面样式jsp代码,将它们复制到我们的项目中,下面是我调整后的jsp代码

userManage.jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ include file="/common/header.jsp"%>
<!DOCTYPE html">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="static/js/system/userManage.js" charset="utf-8"></script>
</head>
<body>
 
 	<!-- 搜索栏 -->
	<div class="layui-form-item">
	  <div class="layui-inline">
	    <label class="layui-form-label">用户名:</label>
	    <div class="layui-input-inline">
	      <input type="text" id="name" placeholder="请输入用户名" autocomplete="off" class="layui-input">
	    </div>
	  </div>
	  
	  <div class="layui-inline">
	    <div class="layui-input-inline">
	      <button id="btn_search" type="button" class="layui-btn layui-btn-normal">
	      	<i class="layui-icon layui-icon-search"></i>
	      	查询
	      </button>
	      <button id="btn_add" type="button" class="layui-btn">新增</button>
	    </div>
	  </div>
	  
	</div>
 
<table class="layui-hide" id="test" lay-filter="test"></table>
 
<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
    <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
    <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
  </div>
</script>
 
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
              
          

 


</body>
</html>

上面代码中我为包含js代码,我单独创建了一个文件夹存放页面对应的js代码,根据数据库中的数据信息创建了这个目录/WebContent/static/js/system/用与存放对应的js,上面的jsp文件也是如此。(如下图所示)

userEdit.jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@include file="/common/header.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="static/js/system/userEdit.js"></script>
<title>用户新增</title>
</head>
<style>
.layui-form-select dl{
	max-height:150px;
}
</style>
<body>
<div style="padding:10px;">
    <form class="layui-form layui-form-pane" lay-filter="user">
        <input type="hidden" name="id"/>
        <div class="layui-form-item">
            <label class="layui-form-label">用户名称</label>
            <div class="layui-input-block">
                <input type="text" id="name" name="name" autocomplete="off" placeholder="请输入用户名" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">用户角色</label>
            <div class="layui-input-block">
                <select name="rid">
                    <option value="">---请选择---</option>
                    <option value="1">管理员</option>
                    <option value="2">发起者</option>
                    <option value="3">审批者</option>
                    <option value="4">参与者</option>
                    <option value="5">会议管理员</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">登录账号</label>
            <div class="layui-input-block">
                <input type="text" name="loginName" lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">登录密码</label>
            <div class="layui-input-block">
                <input type="password" name="pwd" placeholder="请输入密码" autocomplete="off" class="layui-input">
            </div>
        </div>
    </form>
</div>
</body>
</html>

3.2 .编写对应的js代码实现数据绑定和功能实现

userManage.js代码
var table,$,layer;
var row;
layui.use(['table','jquery','layer'], function(){
  table = layui.table,
  $=layui.jquery
  ,layer=layui.layer;
  
  initTable();
  
  //查询的点击事件
  $("#btn_search").click(function(){
	  query();
	  
  });
  
//  新增的点击事件
  $("#btn_add").click(function(){
	  row = null;
	  edit('新增界面');
  });
  
});


//打开新增界面实现新增功能
function edit(title){
	
	 layer.open({
	       type: 2,                    //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
	       title:title,
	       area: ['660px', '340px'],   //宽高
	       skin: 'layui-layer-rim',    //样式类名
	       content: 'jsp/system/userEdit.jsp', //书本编辑页面
	       btn:['保存','关闭'],
	       yes: function(index, layero){
	    	   //调用子页面中提供的getData方法,快速获取子页面的form表单数据
	           let data= $(layero).find("iframe")[0].contentWindow.getData();
	           console.log(data);
	           //判断title标题
	           let methodName="add";
	           if(title=="编辑")
	        	   methodName="edit";
	           $.post('user.action?methodName='+methodName,
	        		   data,function(rs){
	        	   if(rs.success){
	        		   //关闭对话框
	        		   layer.closeAll();
	        		   //调用查询方法刷新数据
	        		   query();
	        	   }else{
	        		   layer.msg(rs.msg,function(){});
	        	   }
	           },'json');
	       },
	       btn2: function(index, layero){
	    	   layer.closeAll();
	       }
	    });
	
}


//表格重载
function query(){
	table.reload('test',{
		where: {
		  name:$("#name").val()
		}
	   ,request:{
		   pageName:'page'  //页码参数
		   ,limitName:'rows' //每页显示的页数参数
	   }
	});//重载数据
}

//表格数据查询初始化
function initTable(){
	table.render({
	    elem: '#test'
	    ,url:'user.action?methodName=UserRole'
	    ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板
	    ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
	      title: '提示'
	      ,layEvent: 'LAYTABLE_TIPS'
	      ,icon: 'layui-icon-tips'
	    }]
	    ,title: '用户数据表'
	    ,cols: [[
	      {type: 'checkbox', fixed: 'left'}
	      ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true}
	      ,{field:'loginName', title:'账户名', width:120, edit: 'text'}
	      ,{field:'name', title:'用户名', width:150, edit: 'text', templet: function(res){
	        return '<em>'+ res.email +'</em>'
	      }}
	      ,{field:'pwd', title:'密码', width:80, edit: 'text', sort: true}
	      ,{field:'rname', title:'角色身份', width:100}
	      ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
	    ]]
	    ,page: true
	  });
	  
	 
	  
	  //监听行工具事件
	  table.on('tool(test)', function(obj){
	     row = obj.data;
	    //console.log(obj)
	    if(obj.event === 'del'){
	      layer.confirm('真的删除行么', function(index){
	    	  layer.confirm('确认删除吗?', {icon: 3, title:'提示'}, function(index){
				  $.post('user.action',{
					  'methodName':'del',
					  'id':row.id
				  },function(rs){
					  if(rs.success){
		        		   //调用查询方法刷新数据
		        		   query();
		        	   }else{
		        		   layer.msg(rs.msg,function(){});
		        	   }
				  },'json');
				  layer.close(index);
				});
	      });
	    } else if(obj.event === 'edit'){
	       edit('编辑');
	    }
	  });
}
userEdit.js代码
let layer,form,$;
layui.use(['layer','form','jquery'],function(){
	layer=layui.layer,form=layui.form,$=layui.jquery;
	initData();
});

function initData(){
	console.log(parent.row);
	if(null!=parent.row){
	     //因为layui.each内部的逻辑问题导致的所以要先深拷贝一份然后再去val
	     //parent.row:表格行对象
	     form.val('user',$.extend({}, parent.row||{}));
	     $('#name').attr('readonly','readonly');
	}
}

function getData(){
    return form.val('user');
}
注意事项
  1. 在使用编写js时导入项目要注意LayUI文件依赖版本,否则在运行项目的功能会实现不了,无法通过编译。
  2. 在相应jsp页面记得导入对应的页面的js代码,否则无法实现对应功能。

4. 项目演示

4.1 查询及模糊查询

 4.2 页面的删除

 4.3 页面的新增

 4.4 页面的修改

 在演示过程中出现了一个问题,就是在用户名显示一列,数据显示为undefind,但鼠标点击数据时又会显示出数据库中的数据,后期会进行优化。下面是我整个项目的目录。

 结束语

感谢老铁阅读本期博客,给博三连吧。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_74352229/article/details/131730286

智能推荐

混合开发 Hybird Ionic Angular Cordova web 跨平台 MD-程序员宅基地

文章浏览阅读201次。Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 [email protected]混合开发 Hybird Ionic Angular Cordova web 跨平台 MD..._> ionic integrations enable cordova [info] downloading integration cordova [

javaWeb基础之Servlet的三种实现方式以及两种配置方式_servlet需要重写什么方法-程序员宅基地

文章浏览阅读4.5k次。一、Servlet的三种实现方式Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。1、Servlet的第一种创建方式:继承HttpServlet(最优) 重写doGet(HttpServletRequest request, HttpS..._servlet需要重写什么方法

strlen函数以及string类使用心得_string strlen-程序员宅基地

文章浏览阅读3.1k次。复习一下strlen函数其实,给strlen函数之后它就会向下偏移统计个数,遇到当前位置字符为'\0'才会停下来。如果没有的话就有可能接着往下走下去,甚至会超过开辟空间的区域指向一片未开辟空间赋值的空间。所以服务端这边接收的buffer要比需要接收的数据大小大一点才不会在strlen的时候出现问题,因为数组里面的数据都占满了,最后一个'\0'的位置没留下来,粗心大意。函数原型..._string strlen

面试官:小伙子你来介绍一下MyBatis_spring cloud mybatis 面试项目介绍怎么说-程序员宅基地

文章浏览阅读598次。虽然目前 Spring Security 一片火热,但是 Shiro 的市场依然存在,今天我就来稍微的说一说这两个框架的,方便大家在实际项目中选择适合自己的安全管理框架。首先我要声明一点,框架无所谓好坏,关键是适合当前项目场景,作为一个年轻的程序员更不应该厚此薄彼,或者拒绝学习某一个框架。小孩子才做选择题,成年人两个都要学!所以接下来主要结合我自己的经验来说一说这两个框架的优缺点,没有提到的地方也欢迎大家留言补充。Spring Security 并非一个新生的事物,它最早不叫 Spring Security_spring cloud mybatis 面试项目介绍怎么说

springboot水果商城开发设计与实现.rar(项目源码)兼容小程序端+pc端-程序员宅基地

文章浏览阅读493次。微信小程序前端+springboot后端+jsp+mysql数据库前端pc端,项目源码:实现水果商城的分类、商品详细页、收藏商品、订单管理、购物车、用户管理、公告管理、评论管理等功能,项目采用微信小程序端,hbuilder开发,idea工具项目截图项目源码下载地址:请点击!》》》...

记一个拯救者工具箱Lenovo Legion Toolkit-程序员宅基地

文章浏览阅读536次。Lenovo Legion Toolkit_lenovo legion toolkit

随便推点

数据库谓词-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏5次。谓词:属于函数的一种,但其返回值是真值(true/false/unknown)判断是否存在满足某种条件的记录,存在返回TRUE、不存在返回FALSE。比较多用到的几种谓词:LIKEBETWEENIS NULL/IS NOT NULLINEXISTSLIKE谓词——字符串的部分一直查询(模糊查询)--MySQL--DDL:创建表CREATE TABLE SampleLike..._数据库 连接谓词是什么

论文学习笔记-MobileNet v3_mobilenetv3扩张尺寸-程序员宅基地

文章浏览阅读9.3k次,点赞5次,收藏36次。『写在前面』新一代MobileNet,性能全面提升。作者机构:Andrew Howard等,Google。文章标题:《Searching for MobileNetV3》原文链接:https://arxiv.org/abs/1905.02244v2相关repo:摘要结合网络设计和NAS技术提出新一代MobileNets; 发布了两种网络结构:MobileNetV3..._mobilenetv3扩张尺寸

2022(软考高级)信息系统项目管理师认证招生简章_山东省信息系统项目管理专业院校-程序员宅基地

文章浏览阅读331次。信息系统项目管理师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。信息系统项目管理师,属于软考三个级别中的“高级”。从1999年开始实施系统集成项目管理工程师/信息系统项目管理师,到目前为止,累计报名人数超过了300万人次,累计合格人数接近50万人。【报考要求】不设学历与资历条件、年龄以及专业等限制,考生可根据自己的技术水平选择合适的级别合适的资格进行报考。凡遵守中华人_山东省信息系统项目管理专业院校

python2.7实战教程_实战 - 廖雪峰 Python 2.7 中文教程-程序员宅基地

文章浏览阅读82次。看完了教程,是不是有这么一种感觉:看的时候觉得很简单,照着教程敲代码也没啥大问题。于是准备开始独立写代码,就发现不知道从哪开始下手了。这种情况是完全正常的。好比学写作文,学的时候觉得简单,写的时候就无从下笔了。虽然这个教程是面向小白的零基础Python教程,但是我们的目标不是学到60分,而是学到90分。所以,用Python写一个真正的Web App吧!目标我们设定的实战目标是一个Blog网站,包含..._python快速编程入门第二版2.7.1实训案例

神经网络是线性还是非线性,神经网络的非线性_非线性神经网络-程序员宅基地

文章浏览阅读4.5k次。BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成;正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差作为调整信号逐层反向回传,对神经元之间的连接权矩阵做出处理,使误差减小。经反复学习,最终使误差减小到可接受的范围。具体步骤如下:1、从训练集中取出某一样本,把信息输入网络中。2、通过各节点间的连接情况正向逐层处理后,得到神经网络的实际输出。3、计算网络实际输出与期望输出的误差。..._非线性神经网络

简单数独的DFS求解_数独dfs算法 go-程序员宅基地

文章浏览阅读536次。@TOP简单数独的DFS求解1. 问题给出9×9的标准数独,使用C语言编程完成这个数独的求解。数独数独(shù dú)是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复 [1] 。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每_数独dfs算法 go

推荐文章

热门文章

相关标签