ztree树

常规的ztree树

后台数据封装成list对象

    public PageModel getTreeBuildingRegData(Map<String, String> params) {PageModel pageModel=new PageModel();String status=params.get("status");String orgId=params.get("org_id");List<OmsBuildingReg> regList = new ArrayList<OmsBuildingReg>();StringBuffer hql = new StringBuffer(" from OmsBuildingReg t where 1=1 ");//分状态查询if(StringUtils.isNotBlank(status)){hql.append(" and t.status='"+status+"'");}//分机构查询if(StringUtils.isNotBlank(orgId)){orgId = orgId.replace(",", "','");hql.append(" and t.orgId in('"+orgId+"')");}regList = this.omsBuildingRegDao.findHql(hql.toString());List<Map<String,Object>> dataList = new ArrayList<Map<String,Object>>();Map<String,Object> map = null;for (OmsBuildingReg reg : regList) {map = new HashMap<String,Object>();map.put("chkDisabled",false);map.put("click", true);map.put("id", reg.getId());map.put("name", reg.getChName());map.put("nocheck", false);map.put("struct","TREE");map.put("title",reg.getChName());//有性别时,添加性别属性map.put("otherParam", reg.getBuildingSex() + "@@" + reg.getBuildingType());if (StringUtils.isNotBlank(reg.getParentBuildingId())) {map.put("parentId",reg.getParentBuildingId());}else {map.put("parentId","0");}dataList.add(map);}pageModel.setData(dataList);return pageModel;}

前台js 树展示

    var ztreeCreator = new ZtreeCreator('regTree',path +"/sys/sysCall?bs_code=S_00117",zNodes).setCallback({onClick:zTreeOnLeftClick,onRightClick:zTreeOnRightClick}).initZtree({},function(treeObj){regTree = treeObj});

ztreeCreator.js

/***     构造Ztree 说明。* *     快速构造默认配置的ztree*     new ZtreeCreator('treeId',url).initZtree(param); *     treeId:树的Id,url:请求的url , *    initZtree(param,level,call); *        parma 异步请求提供参数,*           level展开层级(可略,默认展开全部),*           call 回调提供Ztree初始化对象  *** 完整例子*    var ztreeCreator = new ZtreeCreator('groupTree',url)*            .setCallback({beforeClick:beforeClick,onClick:zTreeOnLeftClick,onRightClick:zTreeOnRightClick})*            .initZtree(params,function(treeObj){groupTree=treeObj}); *****/var ZtreeCreator = function(treeId,url,initJson){if(!treeId) alert("构造Ztree必须提供 treeId");this.treeId = treeId;var _treeObj;var outLookStyle =false;/**初始化树**/    this.initZtree = function(param,level,callBack){if(!url && !_setting.async.url) alert("构造Ztree必须提供 请求地址!");if (jQuery.isFunction(param)) {callBack = param;param = {}; }if (jQuery.isFunction(level)) {callBack = level; level = false;}if(!param) param = {};// 通过json初始化树if(initJson){pushJsonToBuildTree(initJson,level,callBack);return this;}//传入自定义设置参数if(param.setting){this.setSetingParam(param.setting);}//如果异步加载if(_setting.async.url){_treeObj=jQuery.fn.zTree.init(jQuery("#"+treeId), _setting);return this;}//一次性加载
        jQuery.post(url,param,function(result){if(Object.prototype.toString.call(result) === "[object String]") result =eval('(' + result + ')');pushJsonToBuildTree(result,level,callBack);});return this;}function pushJsonToBuildTree(json,level,callBack){_treeObj = jQuery.fn.zTree.init(jQuery("#"+treeId),_setting,json);//展开层级if(level){_treeObj.expandAll(false);expandTree(_treeObj,_treeObj.getNodes(),level);}else{ _treeObj.expandAll(true); }if(jQuery.isFunction(callBack)) callBack(_treeObj,treeId); if(outLookStyle){try{var curMenu = _treeObj.getNodes()[0].children[0].children[0];}catch(e){}_treeObj.selectNode(curMenu);}}this.getTreeObj = function(){if(!_treeObj) alert(treeId+"尚未初始化");return _treeObj;};/**设置树展示的标识key  {idKey:"idKEY名称",pIdKey:"",name:"显示名称",title,rootPid}* idKey 默认 id* pIdKey 默认 parentId* name 默认 name* title 默认 name* */this.setDataKey = function(keys){if(!keys) return this;if(keys.idKey) _setting.data.simpleData.idKey = keys.idKey;if(keys.pIdKey) _setting.data.simpleData.pIdKey = keys.pIdKey;if(keys.name) _setting.data.key.name = keys.name;if(keys.title) _setting.data.key.title = keys.title;if(keys.rootPId) _setting.data.simpleData.rootPId=keys.rootPId;return this;}this.setChildKey = function(key){if(!key)key = "children";_setting.data.simpleData.enable = false;_setting.data.key.children =key;return this;}/** 设置选择框的方式默认没有选择框* 如果需要选择框,不需要级联 则传 true* param  true   or  { "Y": "p", "N": "s" }*/this.setCheckboxType = function(type){_setting.check.enable = trueif(type instanceof Object){_setting.check.chkboxType = type;}return this;}/**这里支持Ztree 所有的回调方法,请查API* eg:传入参数{beforeClick:beforeClick,onClick:onClick,beforeCheck:beforeCheck}**/this.setCallback = function(callBack){if(callBack instanceof Object) for(call in callBack){if(!jQuery.isFunction(callBack[call])) alert(call+" :is not a function");_setting.callback[call]    = callBack[call];}return this; }/** 异步加载 */this.setAsync = function(conf){_setting.async = conf;return this; }/**是否显示图标配置项**/this.setShowIcon = function(call){_setting.view.showIcon = call;return this; }/**设置一些特殊的值请参照 Ztree _setting 格式 ***/this.setSetingParam = function(param){if(param instanceof Object) for(p in param){_setting[p]    = param[p];}return this; }this.setOutLookStyle =function(){//设置一些参数 this.setSetingParam({view :{showLine: false, showIcon: true,selectedMulti: false, dblClickExpand: false,addDiyDom: function(treeId, treeNode){var spaceWidth = 15;var switchObj = jQuery("#" + treeNode.tId + "_switch"),icoObj = jQuery("#" + treeNode.tId + "_ico");switchObj.remove();if(!treeNode.children ||treeNode.children.length==0){switchObj.removeClass("switch");}icoObj.before(switchObj);if (treeNode.level > 0){var spaceStr = "<span style='display: inline-block;width:" + (spaceWidth * treeNode.level)+ "px'></span>";switchObj.before(spaceStr);}}}});jQuery("#"+treeId).addClass("showIcon"); outLookStyle =true;return this;}/**** 注意。isShowIn!= treeId,当前情况treeId可以随意写。只要唯一即可* isShowIn,被显示在某个元素下面,比如 input框,做成累似comboTree的样子* width,height 设置出现 那个 combox的宽高* TODO 如果是input 设置 autoSetValue = true , 扩展回显和自动填值功能。*/var _isShowIn,_menuContent;this.makeCombTree = function(isShowIn,width,height){height = height? height:300;width =width ? width:163;_menuContent = treeId+"MenuContent";_isShowIn = isShowIn; var menuContent ='<div id="'+_menuContent+'" style="width:'+width+'px; height:'+height+'px;overflow-y:scroll; position:absolute;z-index: 9999;display:none;background-color:#F5F5F5">'+'<ul id="'+treeId+'" class="ztree" ></ul></div>';jQuery("#"+isShowIn).after(menuContent); jQuery("#"+isShowIn).bind("click",this.showMenu);  return this;}// 可以添加一个目标对象,如果是添加了点击事件的,则默认this.showMenu = function(target){if(!target || target.currentTarget) {target = jQuery(this);}var btnOffset =  target.offset();jQuery("#"+_menuContent).css({left:btnOffset.left + "px", top:btnOffset.top + target.outerHeight() + "px"}).slideDown("fast");jQuery("body").bind("mousedown",onBodyDown);}this.hideMenu =function(){hideMenu(); }var onBodyDown = function (event){if (!(event.target.id == _isShowIn || event.target.id == _menuContent || jQuery(event.target).parents("#"+_menuContent).length>0)){hideMenu();}}var hideMenu = function(){jQuery("#"+_menuContent).fadeOut("fast");jQuery("body").unbind("mousedown", onBodyDown);}/**_setting 私有 配置项**/ var _setting = {data: {key:{name: "name",title: "name"},simpleData: {enable: true,idKey: "id",pIdKey: "parentId",rootPId:0}},async: {enable: false},edit: {drag: {isCopy:true},enable: true,showRemoveBtn: false,showRenameBtn: false},view:{nameIsHTML: true,selectedMulti: true,showIconFont:true,showIcon: null},check: {enable: false,chkboxType: { "Y": "", "N": "" }},callback:{beforeClick: null,onClick: null,onRightClick: null,beforeDrop: null,onDrop: null,onAsyncSuccess: null}}/***设置展开层级*/function expandTree(treeObj,nodes,level){var thelevel=level-1;  for(var i=0;i<nodes.length;i++){var node =nodes[i];treeObj.expandNode(node, true, false, false);  if(thelevel>0 && node.children && node.children.length>0){expandTree(treeObj, node.children,thelevel);   }  }  }};

左击、右击事件

//左击
function zTreeOnLeftClick(event, treeId, treeNode) {curSelectNode = treeNode;var parentId = treeNode.id;var url = "departController.do?update&id=" + curSelectNode.id;if(curSelectNode.parentId=="0"){$.topCall.warn('该节点为根节点,请点击具体的组织');return false;}$("#listFrame").attr("src", url);
};
/*** 树右击事件*/
function zTreeOnRightClick(e, treeId, treeNode) {    if (treeNode) {orgTree.selectNode(treeNode);curSelectNode=treeNode;var isfolder = treeNode.isFolder;var h = $(window).height();var w = $(window).width();var menuWidth = 120;var menuHeight = 75;var menu = null;if (treeNode != null) {menu = $('#orgMenu');}var x = e.pageX, y = e.pageY;if (e.pageY + menuHeight > h) {y = e.pageY - menuHeight;}if (e.pageX + menuWidth > w) {x = e.pageX - menuWidth;}menu.menu('show', {left : x,top : y});}

        //不是根节点时把添加根节点置灰
       if(buildingType!=1){
        $('#regMenu').menu('disableItem', $('#addTopMenu'));
      }else{
      $('#regMenu').menu('enableItem', $('#addTopMenu'));
      }
       //最后一个子节点时不让添加
      if(buildingType==5){
      $('#regMenu').menu('disableItem', $('#addMenu'));
     }else{
       $('#regMenu').menu('enableItem', $('#addMenu'));
    }

};
//菜单对应项
function menuHandler(item) {if ('add' == item.name) {addNode();} else if ('remove' == item.name) {delNode();} else if ('sort' == item.name) {sortNode();} else if ('edit' == item.name) {editNode(1);} else if ('fresh' == item.name) {refreshNode();}
};
function refreshNode() {loadTree();
};//添加节点
function addNode() {var selectNode = getSelectNode();if (!selectNode)     return;var url = "departController.do?add&id=" + selectNode.id;$("#listFrame").attr("src", url);};//编辑节点
function editNode(type) {var selectNode = getSelectNode();if (!selectNode)     return;//根节点 不能编辑if(selectNode.id=="0" && type==1 ){$.topCall.warn('该节点为根节点,不可编辑');return;}var url = "departController.do?update&id=" + selectNode.id;$("#listFrame").attr("src", url);};//删除
function delNode() {var selectNode = getSelectNode();var nodeId = selectNode.id;if (nodeId == "0") {$.topCall.warn('该节点为根节点,不可删除');return;} var url = "jeecgFormDemoController.do?del&id="+nodeId;if(!confirm('温馨提示', '确定删除该组织以及该组织下的所有子组织?')){return;}jQuery.ajax({  async : false,  cache:false,  type: 'GET',  dataType : "json",  url: url,//请求的action路径  error: function () {//请求失败处理函数  alert('请求失败');  },  success:function(data){ //请求成功后处理函数。if(data.success){orgTree.removeNode(selectNode);$("#listFrame").attr("src", "about:blank");}else{alert(data.msg);}}  });  };
//选择资源节点。
function getSelectNode() {orgTree = $.fn.zTree.getZTreeObj("orgTree");var nodes = orgTree.getSelectedNodes();var node = nodes[0];return node;
};

带 radio 的单选下拉菜单

将官网上的demo拷贝一份出来

var setting = {check: {enable: true,chkStyle: "radio",radioType: "all"},view: {dblClickExpand: false},data: {simpleData: {enable: true}},callback: {onClick: onClick,onCheck: onCheck}};function showMenu() {jQuery.ajax({async : false,type : 'POST',dataType : "json",data:{status:"1",buildingType:"1,2,3,4"},url : path + "/sys/sysCall?bs_code=S_00151",error : function() {//请求失败处理函数  console.log("123");alert('请求失败');},success : function(data) { //请求成功后处理函数。
            console.log(data);zNodes=data.data;$.fn.zTree.init($("#treeDemo"), setting, zNodes);}});var cityObj = $("#parentBuildingId");var cityOffset = $("#parentBuildingId").offset();$("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");$("body").bind("mousedown", onBodyDown);
}function onBodyDown(event) {if (!(event.target.id == "menuBtn" || event.target.id == "parentBuildingId" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {hideMenu();}
}
function hideMenu() {$("#menuContent").fadeOut("fast");$("body").unbind("mousedown", onBodyDown);
}function onClick(e, treeId, treeNode) {var zTree = $.fn.zTree.getZTreeObj("treeDemo");zTree.checkNode(treeNode, !treeNode.checked, null, true);return false;
}function onCheck(e, treeId, treeNode) {var zTree = $.fn.zTree.getZTreeObj("treeDemo"),nodes = zTree.getCheckedNodes(true),v = "";for (var i=0, l=nodes.length; i<l; i++) {v += nodes[i].name + ",";}if (v.length > 0 ) v = v.substring(0, v.length-1);var cityObj = $("#parentBuildingId");cityObj.attr("value", v);
}

定义input框、div,div先隐藏掉,设置样式

        <input id="parentBuildingId"  name="parentBuildingId" type="text" class="form-control" οnclick="showMenu();" /><div id="menuContent" class="menuContent" style="display:none; position: absolute;"><ul id="treeDemo" class="ztree" style="margin-top:0; width:100%;background-color:#f9f9f9"></ul></div>

后台填充数据。

    public PageModel getSelectTreeBuildingRegData(Map<String, String> params){PageModel pageModel=new PageModel();String status=params.get("status");String orgId=params.get("org_id");String buildingType=params.get("buildingType");try{List<OmsBuildingReg> regList = new ArrayList<OmsBuildingReg>();StringBuffer hql = new StringBuffer(" from OmsBuildingReg t where 1=1 ");//分状态查询if(StringUtils.isNotBlank(status)){hql.append(" and t.status='"+status+"'");}//分机构查询if(StringUtils.isNotBlank(orgId)){orgId = orgId.replace(",", "','");hql.append(" and t.orgId in('"+orgId+"')");}if(StringUtils.isNotBlank(buildingType)){buildingType = buildingType.replace(",", "','");hql.append(" and t.buildingType in('"+buildingType+"')");}regList = this.findHql(hql.toString());List<Map<String,Object>> dataList = new ArrayList<Map<String,Object>>();Map<String,Object> map = null;for (OmsBuildingReg reg : regList) {
//                StringBuilder sqls = new StringBuilder();;
//                Object[] paramss = null;map = new HashMap<String,Object>();map.put("id", reg.getId());map.put("name", reg.getChName());if (StringUtils.isNotBlank(reg.getParentBuildingId())) {map.put("pId",reg.getParentBuildingId());map.put("open",false);}else {map.put("pId","1");map.put("open",false);}
//                sqls.append(" from OmsBuildingReg t where t.parentBuildingId=? ") ;
//                //分机构查询
//                if(StringUtils.isNotBlank(orgId)){
//                    orgId = orgId.replace(",", "','");
//                    sqls.append(" and t.orgId in('"+orgId+"')");
//                }
//                paramss = new Object[]{reg.getId()};
//                List<OmsBuildingReg> omsBuildingRegList= this.findHql(sqls.toString(), paramss);
//                if(omsBuildingRegList!=null&&omsBuildingRegList.size()>0){
//                    dataList.add(map);
//                }else{
//                    OmsBuildingReg de = this.getEntity(OmsBuildingReg.class, reg.getId());
//                    if (de != null) {
//                        map.put("id", de.getId());
//                        map.put("name", de.getChName());
//                        if(StringUtils.isNotBlank(de.getParentBuildingId())){
//                            map.put("pId", reg.getParentBuildingId());
//                            map.put("open",false);
//                        }else{
//                            map.put("pId", "1");
//                            map.put("open",false);
//                        }
//                        dataList.add(map);
//                    }else{
//                        map.put("open",false);
//                        dataList.add(map);
//                    }
//                }
                dataList.add(map);pageModel.setMsg("查询成功");}pageModel.setData(dataList);}catch(Exception e){e.printStackTrace();}return pageModel;}
}

效果图:

 

转载于:https://www.cnblogs.com/magic101/p/8795311.html

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

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

相关文章

如何提高效率

如何提高效率 时间管理 April 28th, 2011 本文来自读者 桃雨 翻译投稿。 Aaron Swartz写过一篇很有名的文章&#xff0c;叫做《HOWTO: Be more productive》&#xff08;如何提高效率&#xff09;。这篇文章写的实在是太好了&#xff0c;我看了好多遍&#xff0c;很赞同作者的…

Andrew Ng - 深度学习工程师 - Part 2. 改善深层神经网络:超参数调试、正则化以及优化(Week 1. 机器学习的实用层面)...

第1周 机器学习的实用层面 1.1 训练/开发/测试 早期机器学习时代&#xff08;数据规模较小&#xff09;&#xff0c;如果不需要dev set&#xff0c;常见的划分有 70%/30% 的训练/测试 划分&#xff0c;如果需要验证集&#xff0c;常见的是 60%/20%/20%划分 在big data era&…

jms 如何测试_使用JMSTester对JMS层进行基准测试

jms 如何测试对于我去过的大多数客户端&#xff0c;使用ActiveMQ扩展JMS消息传递层是一个优先事项。 有多种方法可以实现这一目标&#xff0c;但毫无疑问&#xff0c;创建基准并分析实际硬件上的体系结构&#xff08;或者正如我的同事Gary Tully所说的“询问机器”&#xff09;…

为什么待办事项清单不管用

为什么待办事项清单不管用 时间管理 November 22nd, 2012 本文原文来自 Harvard Business Review&#xff0c;由 换装迷宫tayy 翻译。 停止制作你的待办事项清单吧。它们只会让你感觉失败和受挫。想想你正在管理的那些待办清单&#xff1a;有多少事项从年初起就已经在那儿了&…

charts 画饼图

统计某一天某类物体的百分比 新知识点&#xff1a;aggregate https://blog.csdn.net/congcong68/article/details/51619882 主要的 $group $match $sort $limit pipeline [{$group:{_id:$area,count:{$sum:1}}}, # count 是聚合之后新增的一个字段。{$sort:{count:1}}, # …

Apache Camel 2.18 –即将推出的功能的亮点

骆驼骑士正在忙于即将发布的Apache Camel 2.18版本。 当我们动态更新发行说明时 &#xff0c;这是一种快速查看即将发生的情况的方法。 我只是想在夏天在这里进行快速更新&#xff0c;到目前为止&#xff0c;我们已经完成了简短的重点介绍。 随着发行版的临近和文档的完善&…

实时多线程系统的日志实现

实时多线程系统的日志实现 2008-03-21 09:19 黄明/戴颖  软件世界 我要评论(0) 字号&#xff1a;T | T为了分析软件系统在测试和运行期产生的故障&#xff0c;目前大多数软件系统所广泛使用的一种方法就是日志记录。本文给出了利用循环缓冲区和单独的日志读写线程实现实时系统…

Java中获取当前函数名

Java中获取当前函数名 博客分类&#xff1a; Java JavathreadJDKIDEA 有时候我们需要在程序中获取当前运行的函数名&#xff0c;如何简单的做到这点呢&#xff1f;我们可以用getStackTrace轻松搞定。 一提到getStatckTrace多数人会联想到Thowable中的getStackTrace方法。的确&…

建站手册-网站主机:电子商务主机

ylbtech-建站手册-网站主机&#xff1a;电子商务主机1.返回顶部 1、http://www.w3school.com.cn/hosting/host_ecommerce.asp2、2.返回顶部1、如果您的公司正在销售某种产品或服务&#xff0c;那么电子商务也许是做生意的一种好办法。 Internet 商业 电子商务就是在 Internet 上…

ConcurrentLinkedQueue

ConcurrentLinkedQueue 因为ConcurrentLinkedQueue是线程序安全的并且是针对并发的 主类 Java代码 public class conn{ public static void main(String[] args) throws Exception{ Queue<String> queuenew ConcurrentLinkedQueue<String>(); …

【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

每天学习一点点 编程PDF电子书、视频教程免费下载&#xff1a;http://www.shitanlife.com/code一、反向代理&#xff1a;Web服务器的“经纪人” 1.1 反向代理初印象 反向代理&#xff08;Reverse Proxy&#xff09;方式是指以代理服务器来接受internet上的连接请求&#xff0c;…

STM32-RS485通信软硬件实现

OS&#xff1a;Windows 64 Development kit&#xff1a;MDK5.14 IDE&#xff1a;UV4 MCU&#xff1a;STM32F103C8T6/VET6 AD&#xff1a;Altium Designer 18.0.12 1、RS485简介  RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。RS485是一个定义平衡数字多点系统中的驱动…

Java 枚举7常见种用法

DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能&#xff0c;却给我的开发带来了“大”方便。 用法一&#xff1a;常量 在JDK1.5 之前&#xff0c;我们定义常量都是&#xff1a; publicstaticfianl....。现在好了&#xff0c;有了枚举&#xff0c;可以把相关的常…

深度学习训练数据打标签过程

深度学习训练数据打标签过程 为了获取大量的图片训练数据&#xff0c;在采集数据的过程中常用视频的方式采集数据&#xff0c;但对于深度学习&#xff0c;训练的过程需要很多的有有标签的数据&#xff0c;这篇文章主要是解决视频文件转换成图片文件&#xff0c;并加标签&#x…

Python中转换角度为弧度的radians()方法

Python中转换角度为弧度的radians()方法 这篇文章主要介绍了Python中转换角度为弧度的radians()方法,是Python入门中的基础知识,需要的朋友可以参考下 radians()方法把角度转化为弧度角x。 语法 以下是radians()方法的语法&#xff1a; radians(x) 注意&#xff1a;此函数是无…

如何招聘一个合格的程序员?

如何招聘一个合格的程序员&#xff1f; 发表于2012-12-03 16:29| 11559次阅读| 来源TheNextWeb| 23 条评论| 作者张祺 招聘程序员摘要&#xff1a;作者是ApeForest和ContentForest网站联合创始人Pravin Daryani。他在创办网站过程中&#xff0c;学习到了非常宝贵的经验教训。如…

JAXB和Log4j XML配置文件

Log4j 1.x和Log4j 2.x均支持使用XML文件来指定日志记录配置 。 这篇文章探讨了与使用JAXB通过Java类处理这些XML配置文件相关的一些细微差别。 本文中的示例基于Apache Log4j 1.2.17 &#xff0c; Apache Log4j 2.6.2和Java 1.8.0_73&#xff08;带有JAXB xjc 2.2.8-b130911.18…

(转载)浅谈线段树

浅谈线段树 数据结构——线段树 O、引例 A.给出n个数&#xff0c;n<100&#xff0c;和m个询问&#xff0c;每次询问区间[l&#xff0c;r]的和&#xff0c;并输出。 一种回答&#xff1a;这也太简单了&#xff0c;O&#xff08;n&#xff09;枚举搜索就行了。 另一种回答&…

双显示器设置:如何设置一台电脑两个显示器

双显示器设置&#xff1a;如何设置一台电脑两个显示器 -来源&#xff1a;互联网 作者&#xff1a;佚名 时间&#xff1a;04-11 09:00:18 【大 中 小】 点评&#xff1a;双显示器设置,如何设置一台电脑两个显示器&#xff1a;一般来说一台电脑通常只配一个显示器&#xff0c;在我…

结对第二次作业

题目要求 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子&#xff0c;请实现它&#xff0c;要求&#xff1a; 能够自动生成四则运算练习题可以定制题目数量用户可以选择运算符用户设置最大数&#xff08;如十以内、百以内等&#xff09;用户选择是否有括号、…