精华内容
下载资源
问答
  • 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目...

    第一幕:缘起

    听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员……

    996程序员做的梦:

    第一场:团队招募

    为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。

    话说还是中国电信的信号好,地府都是满格,哈哈!!!

    经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下?

    而这次,面对这样的需求,这个程序员也是虎躯一震,本来想拒绝的,不过做不完就不让回去,而且,貌似这也是他报仇的好机会啊!

    产品同学也被勾下来了。。

    第二场:研发过程中的新需求

    项目开发过程中,阎罗王发来了一个消息:

    第三场:程序员还阳

    项目进行中,程序员偷偷地在系统上留了一个后门,不仅回到了阳间,还将自己的寿命修改为+∞。

    地府中留下的,是产品经理孤寂的身影。

    这个故事告诉我们,做产品的,不能提太多的需求,也不能完全不懂技术,否则,可能会死的不明不白的。

    第二幕:地府管理2.0研发

    地府管理系统项目上线后,阎王尝到了很大的甜头,地府工作效率提高了很多倍,于是,“地府2.0计划”紧锣密鼓的开始了。

    越是,不少人做梦,都梦见自己死了……

    设计师:

    昨晚做梦梦到我死了,进了阎王殿

    阎王爷让我给他的地府做一张宣传海报

    HR:

    昨晚做梦梦到我死了,进了阎王殿

    阎王爷让我给他考核一下地府在职人员的业绩

    文案:

    昨晚做梦梦到我死了,进了阎王殿

    阎王爷让我给他写一篇能够提升转化的软文

    物流管理:

    昨晚做梦梦到我死了,进了阎王殿

    阎王爷让我给他优化一下投胎的流程

    交互设计师:

    昨晚做梦梦到我死了,进了阎王殿

    阎王爷让我给他优化一下油锅的体验

    第三幕:地府大数据

    为了应对日益增大的业务,地府管理系统3.0版本的原型图已经设计出来了,现在鉴赏一下

    第一场:登录

    与时俱进,比较完善,支持账号登录、手机登录、扫码登录三种登录方式。

    移动端自适应哦!

    首页看板做的很不错

    第二场:可视化监控

    可以实时查看十八层地狱的详细信息,目前只支持中国区,国府(国服)噢。

    今年业绩不是很好,业绩相比去年大幅下跌了呢!

    冥币的汇率总体走势上扬,应该有不错的上升空间,可以考虑持有。

    第三场:生死簿

    生死簿可以看到阳寿未尽、孤魂野鬼、已经转世投胎人的名单。通过查询后台数据,我们发现,孙猴子不是物理删库,他是获取了阎王爷的超级管理员权限,直接把自己的名字,从生死簿中给删除了。

    不过也看出,到底是毛手毛脚的猴子,做事不干净,只是逻辑删除,而没有进行物理删除。差一步,还是能找到记录。

    下一个操作就骚了,批量删除,一删一窝。

    批量删除有风险,所以需要插入U盾,猴子应该是直接拿了阎王的,获取验证码,批量删除猴子猴孙,为你点赞!

    还有退单操作,这下知道李世民为啥没死成了。。

    第四场:阎罗殿审判记录

    每一个被勾下来的人,都有完整的审判记录,确保不抓错一个好人,也不放过一个坏人。

    妥妥的工作流,需要审批的。

    还贴心地提供了老人专用版本,字体放大N倍,看起来很轻松。

    第五场:六道轮回

    地府后台管理系统还是非常人性的,解决了六道轮回的问题。以后投胎到哪里,摇一次转盘就搞定了。

    原来猪刚鬣就是被这么摇到了畜生道啊!

    第六场:元数据维护

    还挺丰富的,功能能强大。

    有设备管理:

    冥币管理:

    日志管理:

    还有非常完善的角色权限,支持多租户,多级,多用户哦:

    更多功能持续开发中,欢迎有志于地府事业的小伙伴积极参与哦:

    第四幕:未来已来

    如果同学们真的出现经常做梦的情况,考虑下是不是最近压力太大了。当一个人压力太大的时候,做梦都会惦记要做的事情,连觉都睡不好了。

    年底了,不论是互联网从业人员还是其他行业的人,或多或少感到一些压力,个人建议还是好好调节一下,多去换位思考一下,用其他的事激励一下自己。

    最后的最后,是大家心心念念的地府系统demo访问地址:http://kzgfmo.axshare.cn

    没有结束的新开始。。。。

    帖子发出去之后,居然成为了一个现象级的产品,很多朋友也跟我联系,希望能把这个系统做出来,下面这位大神已经建了个群,希望把系统做出来,有兴趣的可以加群聊聊,看能不能真的把他做出来。

    qq_42719318

    走上删库之路

    第五幕:程序员们的地府生涯

    经过前期准备,现在地府系统已经正式进入立项开发阶段了

    github地址:https://github.com/canxin0523/thesixsectorTeam

    欢迎围观,Star

    先附一张昨晚画的地府组织架构图

    项目工程结构:

    这个是我的微信二维码,我拉你进讨论群和扣扣研发群,围观一个伟大产品的诞生

     


    我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦!

    参考资料:

    1. https://blog.csdn.net/kMD8d5R/article/details/90746041
    展开全文
  • java web简单权限管理设计

    万次阅读 多人点赞 2015-03-19 23:23:05
    推荐最新技术springboot版权限管理(java后台通用权限管理系统(springboot)),采用最新技术架构,功能强大! 注:由于该项目比较老,所以没有采用maven管理,建议下载springboot权限管理系统,对学习和使用会更有...

    源码免费下载地址:关注微信公众号“虾米聊吧”,回复关键字“权限

     

    推荐最新技术springboot版权限管理java后台通用权限管理系统(springboot)),采用最新技术架构,功能强大

    注:由于该项目比较老,所以没有采用maven管理,建议下载springboot权限管理系统,对学习和使用会更有帮助。

    springboot权限管理系统介绍地址:https://blog.csdn.net/zwx19921215/article/details/97806078

    springboot权限管理系统初级版下载地址:http://zyshare.cn/resource/detail/3

    springboot权限管理系统高级版下载地址:http://zyshare.cn/resource/detail/7

    springboot个人博客系统:https://blog.csdn.net/zwx19921215/article/details/102665020

    后台管理系统模板html打包下载: http://zyshare.cn/resource/detail/14

     

    最近在做一个网站类型项目,主要负责后台,ui框架选型为jquery easy ui,项目架构为spring mvc + spring jdbc,简单易用好上手!搭建好框架后开始了第一个任务,设计并实现一套简单的权限管理功能。

    一套最基本的权限管理包括用户、角色、资源。

     

    数据库设计

    我的设计如下:

    用户:user

    角色:role

    用户-角色:user_role

    资源:resource(包括上级菜单、子菜单、按钮等资源)

    角色-资源:role_resource

    标准的权限管理系统设计为以上5张表。

     

    注:用户、用户-角色我就不做说明了,这两个是很简单的两块,用户的crud,以及为用户分配角色(多对多的关系)稍微琢磨一下就清楚了,下面都是针对为角色分配权限的实现

    效果图:

    项目结构

     

    后台实现

    展示层采用ztree树

     

    role.jsp

     

    <%@ page contentType="text/html;charset=UTF-8"%>
    <%@ include file="/views/back/include/taglib.jsp"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta name="decorator" content="back" />
    <script type="text/javaScript">
    //打开菜单窗口
    function openMenuDialog(){
    	var selected = $("#list").datagrid('getSelected');
        if (selected != null) {
        	$("#id").val(selected.id);
        	queryMenus(selected.id);
        	$("#menuWindow").window("open");
        } else {
       	 $.messager.alert('提示', "未选择数据!"); 
        }
    }
    //角色-菜单信息入库
    function ajaxSubmit(rid,idstr){
    	$.post("${ctx}/roleMenu/save.jhtml",{"roleId":rid,"ids":idstr},function(obj){
    		$.messager.alert('提示',obj.msg);
    		$("#menuWindow").window('close');
    	},'json');
    }
    </script>
    <!-- ztree -->
    <script type="text/javascript">
    var tree = "";
    var setting = {
    	check : {
    		chkboxType:{"Y":"ps","N":"s"},//勾选checkbox对于父子节点的关联关系,取消勾选时不关联父
    		chkStyle:"checkbox",
    		enable : true	//是否复选框
    	},
    	//数据
    	data : {
    		simpleData : {
    			enable : true
    		}
    	}
    };
    //查询菜单信息
    function queryMenus(roleId){
    	$.post('${ctx}/role/treedata.jhtml', {'roleId':roleId}, function(zNodes) {
    		for (var i = 0; i < zNodes.length; i++) {
    			if (zNodes[i].isParent) {
    
    			} else {
    				//zNodes[i].icon = "${ctxStatic}/images/532.ico";//设置图标
    			}
    		}
    		tree = $.fn.zTree.init($("#tree"), setting, zNodes);
    		tree.expandAll(true);//全部展开
    		//var nodes = treeObj.getNodes();
    	}, 'json');
    }
    
    //获取选中节点
    function onCheck(){
    	 var rid = $("#id").val();
    	 var treeObj=$.fn.zTree.getZTreeObj("tree");
         var nodes=treeObj.getCheckedNodes(true);
         var ids = new Array();
         for(var i=0;i<nodes.length;i++){
        	//获取选中节点的值
        	 ids.push(nodes[i].id);
    	    // v+=nodes[i].id + ",";
    	    //alert(nodes[i].id); 
         }
    	ajaxSubmit(rid,ids);     
    }
    </script>
    </head>
    <body>
    	<!-- 数据表格 -->
    	<table id="list" url='${ctx}/role/list/page.jhtml' method='post'
    		class="easyui-datagrid" style="width:100%;" fitcolumns="true" 
    		toolbar='#tb' pagination='true' rownumbers='true' singleSelect='true'>
    		<thead>
    			<tr>
    				<th field='name' sortable='true' width='100'>角色名称</th>
    				<th field='description' width='200' align='right'>描述</th>
    				<th field='createTimeFormat' width='150' align='center'>创建时间</th>				
    			</tr>
    		</thead>
    	</table>
    	
    	<!-- 编辑栏  -->
    	<div id="tb" style="padding:5px 5px;">
    		<div>
    			<p2p:permission module="role" code="add"><a href="#" class="easyui-linkbutton" iconCls="icon-add" onclick="openCreateDialog();">新增</a></p2p:permission>
    			<p2p:permission module="role" code="edit"><a href="#" class="easyui-linkbutton" iconCls="icon-edit" onclick="openUpdateDialog();">编辑</a></p2p:permission>
    			<p2p:permission module="role" code="delete"><a href="#" class="easyui-linkbutton" iconCls="icon-remove" onclick="del();">删除</a></p2p:permission>
    			<p2p:permission module="role" code="authority"><a href="#" class="easyui-linkbutton" iconCls="icon-edit" onclick="openMenuDialog();">设置权限</a></p2p:permission>
    		</div>
    		<!-- 搜索项 -->
    		<div style="margin-top:5px;padding-left:5px">
    			用户名:   <input id="query_name" class="easyui-textbox" type="text" style="width:110px" />
    			创建日期: <input id="query_startDate" class="easyui-datebox" style="width:110px">
    			至: 	   <input id="query_endDate" class="easyui-datebox" style="width:110px">
    			<a onclick="reload();" href="#" class="easyui-linkbutton" iconCls="icon-search">查询</a>
    		</div>
    	</div>
    	
    	
    	
    	<!-- 权限窗口 -->
    	<div id="menuWindow" class="easyui-window" title="配置权限" data-options="modal:true,iconCls:'icon-save',footer:'#menuWindowfooter'" style="width:350px;height:420px;padding:10px">
    		<div id="tree" class="ztree" style="padding: 10px 20px;"></div>
    	</div>
    	<div id="menuWindowfooter" style="padding:5px;text-align:right;"> 
    		<a href="#" onclick="onCheck();" class="easyui-linkbutton" data-options="iconCls:'icon-save'">提交</a>
    	</div>
    	
    </body>
    </html>
    

     

     

    action层
    RoleAction.java

     

     

     

    @RequestMapping(value = "/treedata.jhtml")
    	@ResponseBody
    	public String treedata(HttpServletRequest request, Model model) {
    		DynamicParams params = new DynamicParams(request);
    		List<Map<String, Object>> mapList = Lists.newArrayList();
    
    		params.put("allMenu", "allMenu");
    		List<Menu> list = authManager.findMenuList(params);
    
    		List<RoleMenu> roleMenus = authManager.findRoleMenuList(params);
    
    		for (int i = 0; i < list.size(); i++) {
    			Menu e = list.get(i);
    			Map<String, Object> map = Maps.newHashMap();
    			map.put("id", e.getId());
    			map.put("pId", e.getParentId() != null ? e.getParentId() : 0);
    			map.put("name", e.getName());
    			for (RoleMenu roleMenu : roleMenus) {
    				if (roleMenu.getMenuId() == e.getId()) {
    					map.put("checked", true);
    				}
    			}
    			mapList.add(map);
    		}
    
    		return toJson(mapList);
    	}

     

     

     

     

     

    service层

    AuthManager.java

     

    // 菜单管理
    
    	public List<Menu> findMenuList(DynamicParams params) {
    		List<Menu> menus = new ArrayList<Menu>();
    
    		if ("allMenu".equals(params.getString("allMenu"))) {
    			menus = menuDao.findList(params);
    		} else {
    			// 通过用户查询角色
    			List<UserRole> userRoles = userRoleDao.findList(params);
    			// 通过角色查询菜单
    			List<RoleMenu> roleMenus = new ArrayList<RoleMenu>();
    			if (userRoles != null && userRoles.size() > 0) {
    				for (UserRole userRole : userRoles) {
    					params = new DynamicParams();
    					if (userRole != null) {
    						if (userRole.getRoleId().equals(params.getString("rid"))) {
    							break;
    						}
    						params.put("roleId", userRole.getRoleId().toString());
    						List<RoleMenu> rms = roleMenuDao.findList(params);
    						for (RoleMenu roleMenu : rms) {
    							roleMenus.add(roleMenu);
    						}
    					}
    				}
    			}
    
    			// 查询菜单信息
    			for (RoleMenu roleMenu : roleMenus) {
    				if (roleMenu != null) {
    					Menu menu = menuDao.find(roleMenu.getMenuId());
    					if (menu != null) {
    						menus.add(menu);
    					}
    				}
    			}
    			menus = removeDuplicate(menus);
    			Collections.sort(menus);
    		}
    		return menus;
    	}
    /**
    	 * 去除菜单中重复项
    	 * 
    	 * @param list
    	 * @return
    	 */
    	private List<Menu> removeDuplicate(List<Menu> list) {
    		List<Menu> result = new ArrayList<Menu>();
    		Set<Long> menuIds = new HashSet<Long>();
    		for (int i = 0; i < list.size(); i++) {
    			Menu m = list.get(i);
    			if (m != null && menuIds.add(m.getId())) {
    				result.add(m);
    			}
    		}
    		return result;
    	}

     

    public List<RoleMenu> findRoleMenuList(DynamicParams params) {
    		List<RoleMenu> roleMenus = roleMenuDao.findList(params);
    		return roleMenus;
    	}

     

     

    Dao层

    menuDao

    @Override
    	protected void createQuery(DynamicParams params, StringBuffer sql, List<Object> args) {
    		sql.append("select s.* from sys_menu s where 1=1 ");
    
    		String parentId = params.getString("parentId");
    		if (StringUtils.isNotBlank(parentId)) {
    			sql.append(" and parent_id = ? ");
    			args.add(parentId);
    		}
    
    		String sort = params.getString("sort");
    		String order = params.getString("order");
    
    		if (StringUtils.isNotBlank(sort)) {
    			sql.append(" order by ").append(hump2underline(sort));
    			if (StringUtils.isNotBlank(order)) {
    				sql.append(" " + order);
    			} else {
    				sql.append(" desc ");
    			}
    		} else {
    			sql.append("order by sort asc,id desc ");
    		}
    	}


    userRoleDao

     

    @Override
    	protected void createQuery(DynamicParams params, StringBuffer sql, List<Object> args) {
    		sql.append("select s.* from sys_user_role s where 1=1 ");
    		Long adminId = params.getLong("adminId");
    		if (adminId != null) {
    			sql.append(" and s.user_id = ?");
    			args.add(adminId);
    		}
    	}


    roleMenuDao

     

     

    @Override
    	protected void createQuery(DynamicParams params, StringBuffer sql, List<Object> args) {
    		sql.append("select s.* from ").append("sys_role_menu").append(" s where 1=1 ");
    		Long adminId = params.getLong("roleId");
    		if (adminId != null) {
    			sql.append(" and s.role_id = ?");
    			args.add(adminId);
    		}
    	}

     

     

     

    在WEB-INF目录下建立文件夹tlds 建立自定义标签文件shiros.tld,我们通过自定义标签实现页面按钮的控制。

     

     

    <span style="color:#333333;"><?xml version="1.0" encoding="UTF-8" ?>
    <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    	version="2.0">
    	<description>p2p permission taglib</description>
    	<display-name>permission taglib</display-name>
    	<tlib-version>1.0</tlib-version>
    	<short-name>p2p_back</short-name>
    	<uri>http://vanfon.p2p.cn/</uri>
    
    	<tag>
    		<description>权限校验标签,有权限就显示标签体的内容,否则不显示</description>
    		<name>permission</name>
    		<tag-class>com.vanfon.p2p.back.tag.PermissionTag</tag-class>
    		<body-content>JSP</body-content>
    		<attribute>
    			<description></description>
    			<name>module</name>
    			<required>true</required>
    			<rtexprvalue>false</rtexprvalue>
    		</attribute>
    		<attribute>
    			<description></description>
    			<name>code</name>
    			<required>true</required>
    			<rtexprvalue>false</rtexprvalue>
    		</attribute>
    	</tag>
    </taglib></span>

     

     

    自定义标签类

     

    package com.vanfon.p2p.back.tag;
    
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.TagSupport;
    
    import com.vanfon.p2p.entity.system.Admin;
    import com.vanfon.p2p.entity.system.Menu;
    import com.vanfon.p2p.manager.system.AuthManager;
    import com.vanfon.p2p.utils.DynamicParams;
    import com.vanfon.p2p.utils.SpringContextHolder;
    
    /**
     * 权限控制标签
     * 
     * @author zhangwx
     * @date 2015-2-5
     */
    public class PermissionTag extends TagSupport {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 4592227792811389132L;
    
    	private String module;// 属性名必须与JSP自定义标签的属性名一样
    
    	private String code;
    
    	public String getModule() {
    		return module;
    	}
    
    	public void setModule(String module) {
    		this.module = module;
    	}
    
    	public String getCode() {
    		return code;
    	}
    
    	public void setCode(String code) {
    		this.code = code;
    	}
    
    	@Override
    	public int doStartTag() throws JspException {
    		boolean result = false;
    		HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();// 通过成员变量获取HttpServletRequest对象
    		Admin admin = (Admin) request.getSession().getAttribute("admin");// 获取登录到系统的用户
    		if (admin != null) {
    			if ("1".equals(String.valueOf(admin.getIfsuper()))) {// 超级管理员
    				result = true;
    			} else {
    				DynamicParams params = new DynamicParams();
    				params.put("id", String.valueOf(admin.getId()));
    				params.put("module", this.module);
    				params.put("code", this.code);
    				AuthManager authManager = SpringContextHolder.getBean(AuthManager.class);
    				List<Menu> userRoleAuths = authManager.findUserRoleAuthList(params);
    				if (userRoleAuths != null && userRoleAuths.size() > 0) {
    					result = true;
    				}
    			}
    		}
    		return result ? EVAL_BODY_INCLUDE : SKIP_BODY;
    	}
    }

     

     

     

     

     

     

     

     

    以上就是该权限管理中权限树(为角色分配权限)的大体实现。

    项目源码下载地址:http://www.zyshare.cn/resource/detail/1

    注:由于本项目年代久远,所以技术比较老旧,新人学习建议此项目 java后台通用权限管理系统(springboot)

    推荐项目:java后台通用权限管理系统(springboot)

    博主qq:193459197  , qq群技术交流与支持:557911445

     

    关注微信公众号“虾米聊吧”,回复“权限”获取源码,后续持续放送技术架构和资料干货!!!  

     

    一个热衷于分享技术和生活的程序猿,让我们一起交流吧~      
                        
                      微信扫描二维码,关注我的公众号


     
     

    展开全文
  • java学生信息管理系统(附源码)

    万次阅读 多人点赞 2016-07-14 16:36:30
    一: 介绍 1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作 另外一种是SQL语句。 ... 3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明...

    一:   介绍

          

      1:实现登录界面

        2:实现主界面

               有两种操作 一种是按钮操作  另外一种是SQL语句。

        3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*myeclipse和eclipse,            jcreator什么的都是IDE,使用都一样,基本没什么区别,只不过myeclipse更商业化不开源,也就意味着收费,里面集成的插件比较多而已。

               *****************************************************************************************************

               用到的软件及环境SQLserver2008,eclipse,sqljdbc4.jar(数据库驱动包)

               *****************************************************************************************************

               另外一个Mysql 5.7.15.  Myeclipse2015,mysql-connector-java-5.1.34.jar

                 **********************************************************************************************************************

     

               java的JDK环境 (自行安装配置)

                切记:

                另外要新建数据库wtf 和新建学生表student(也可以用你自己创建的数据库及表,不过你得在源代码中进行修改):

                还要导入sqljdbc4.jar

            

        4:实现增删改查  (另有退出和刷新)

    二:    使用

      1:首先导入rjgc包

     

    然后点开browse  找到rjgc  

    最后点击finish

    得到    下图

    加载出来以后可能有的java文件前面有错,因为还没有导入sqljdbc4.jar

    (*******************************************************************************************************************************                    注意,方式一导入jdbc的图是之前我做的时候比较麻烦的一种方式,但是也能达到效果,在后期的我更新的链接资源中,如果导入任意版本源码包的话,都会自动加载lib包以及下面不同版本对应的jdbc连接驱动。这时候你只需要在那个lib文件夹下的.jar 文件上右键点击-->build path--->add to build path,导入jdbc结束。

    方式二导入:贴一张图

    上面这张图是方式二导入的,

    **************************************************************************************************************************)

     

    接下来继续,方式一导入  看下图:

     

     

     

    这时候应该就差不多可以运行了,不过还得把SQLserver2008的(MSSQLSERVER)服务开启了。

    上图

    再回到eclipse界面 打开rjgc

    最后双击LoginIn.java打开代码文本

    运行  就可以出现登录界面  

    在LoginIn.java代码文本里面找到登录用户 和密码后就可以登录了 

    比如admin 123  和wangtangfu 123456      (注意不要多加空格)

    其实用户权限都一样  如果你想加用户权限  可以写两个不同的Qframe.java。要做到主窗口里面的功能不同   ,可以屏蔽一些按钮

    比如修改  增加  等功能。然后在不同用户登陆的时候调用不同的Qframe.java,这样应该可以实现权限问题。。。

     

    2:

    还有程序里面应运了一些图片,它们的位置路径位置可能不一样 ,自行参照代码理解修改(很容易的哟);

     

    三:程序运行截图

       登陆窗口

     主窗口

    SQL语句执行  比如select * from student  

    刷新按钮:

    增加按钮:

                                                                                                                                                         添加成功之后刷新即可:

    删除按钮:

    修改按钮:

    查询按钮

     

     

    至此  

          学生管理系统就完成了   

               其中的登陆界面是 我借鉴别人的  

                   文中难免有不足之处,恳请批评指正

                                                                                                                                       2016-7-14

    再此上传不了附件 所以我给链接去在云盘下载 


    首次上传

    (2017_6_12更新)链接: https://pan.baidu.com/s/1aSeKJ8gXxWSElHaTU6_PdA 密码: yqpv

     


    添加myeclipse+mysql 版本:

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k


     


    修改student.sql执行报错 (执行时可以打开偷偷看一眼)

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接:https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

     

    展开全文
  • JAVA学生宿舍管理系统

    万次阅读 多人点赞 2019-01-22 21:28:14
    system.java (系统管理界面) sql.java (数据库操作,包括连接、断开、增删改查等操作) 一、登陆界面及代码 主要代码: 登陆按钮事件 public void actionPerformed(ActionEvent e) { // TODO Auto-...

    需要的工具
    1.SQL Server
    2.Eclipse
    3.JDBC连接数据库驱动
    https://download.microsoft.com/download/A/F/B/AFB381FF-7037-46CE-AF9B-6B1875EA81D7/sqljdbc_6.0.8112.200_chs.exe

    功能实现
    分为三大类
    1.land.java (登陆界面)
    2.system.java (系统管理界面)
    3.sql.java (数据库操作,包括连接、断开、增删改查等操作)

    一、登陆界面及代码
    在这里插入图片描述

    部分代码:

    登陆按钮事件

    public void actionPerformed(ActionEvent e) {
    	// TODO Auto-generated method stub
    		if((JButton)e.getSource()== buttonLand)
    		{
    		
    		String name = textName.getText().trim();
    		String password = String.valueOf(textPassword.getPassword()).trim();
    	    int num = sq.landing(name, password);
    	    if(num==1)
    	    {
    	    	JOptionPane.showMessageDialog(frame, "欢迎进入学生宿舍管理系统!","提示:",JOptionPane.PLAIN_MESSAGE);
    	    	system system = new system();
    	    	frame.dispose();
    	    }
    	    else
    	    {
    	    	JOptionPane.showMessageDialog(frame, "账号或者密码错误!","提示:",JOptionPane.ERROR_MESSAGE);
    	    }
    		}
    	}
    

    二、系统管理界面及代码**(这里只添加了俩个表,多少表都是一样的道理**)

    增加数据:点击增加按钮会出现一空白行,填写完点击保存即可
    保存(更新)数据:直接在表中进行相应的操作,再点击保存即可
    删除数据:选择某行,点击删除按钮即可

    在这里点插入图片描述在这里插入图片描述
    部分代码:

    //--------------------------------------按钮事件--------------------------------
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		//------------------------------- 删除-----------------------------
    		String tableName = null;
    		String key1 = null;
    		if((JButton)e.getSource()==buttonDelete)
    		{   if(paneParent.getSelectedIndex()==1)
    			{
    				tableName = "学生信息表";
    				key1 = "sno";
    			}
    			if(paneParent.getSelectedIndex()==2)
    			{
    				tableName = "宿舍信息表";
    				key1 = "dno";
    			}
    			int row = table.getSelectedRow();			
    			if(row!=-1)
    			{
    				String key2 = (String) tableModel.getValueAt(row, 0);
    				int result = JOptionPane.showConfirmDialog(null, "确定要删除吗?","请确认",JOptionPane.YES_NO_OPTION);
    				if(result==JOptionPane.OK_OPTION)
    				{
    					String sql = "delete from "+tableName+" where "+key1+"="+key2;
    					int num = sq.delete(sql);
    					if(num>0)
    					{
    						tableModel.removeRow(row);
    					}
    				}
    			}
    			else 
    			{	
    				JOptionPane.showMessageDialog(null, "请选择要删除的行!","提示:",JOptionPane.ERROR_MESSAGE);
    			}
    		}
    		//------------------------------保存------------------------
    		if((JButton)e.getSource()==buttonSave)
    		{
    			int result = JOptionPane.showConfirmDialog(null, "请确认数值已经更改,否则保存无效","请确认",JOptionPane.YES_NO_OPTION);
    			if(result==JOptionPane.OK_OPTION)
    			{
    				int row = table.getRowCount();
    				int column = table.getColumnCount();			
    				String[][]valueRow= new String[row][column];
    				String[] sqlvalue  = new String[row];
    				for(int i = 0; i < row; i++)
    				{
    					for(int j = 0; j < column; j++)
    					{
    						valueRow[i][j] = table.getValueAt(i, j).toString();
    					}
    				}
    				if(paneParent.getSelectedIndex()==1)
    				{	
    					for(int i =0;i<row;i++)
    					{
    						String sql = "insert into 学生信息表"+" values ("+valueRow[i][0].toString()+","+valueRow[i][1].toString()+","+valueRow[i][2].toString()+","+valueRow[i][3].toString()+","+valueRow[i][4].toString()+","+valueRow[i][5].toString()+")";				
    						sqlvalue[i]=sql.toString();									
    					}
    					data = sq.Save(sqlvalue,"学生信息表",row, column);
    		            tableModel.setDataVector(data,dataTitle);			
    				}
    				if(paneParent.getSelectedIndex()==2)
    				{
    					for(int i =0;i<row;i++)
    					{
    						String sql = "insert into 宿舍信息表"+" values ("+valueRow[i][0].toString()+","+valueRow[i][1].toString()+")";				
    						sqlvalue[i]=sql.toString();									
    					}
    					data = sq.Save(sqlvalue,"宿舍信息表",row, column);
    		            tableModel.setDataVector(data,TitleDormitor);			
    				}				
    			}					        
    		}
    		//------------------------------增加---------------------------
    		if((JButton)e.getSource()==buttonIncrease)
    		{
    			tableModel.addRow(new Vector<>());
    		}
    	}
    

    三、sql.java (重要)

    public class SQL {
        public  Connection conn;
        public  Statement st;
        public  ResultSet rs;
      
    //----------------------------获取链接--------------------------------
    public Connection getConn() throws SQLException, ClassNotFoundException
    {
      String driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
      String url = "jdbc:sqlserver://localhost:1433;databaseName=学习宿舍";
    //:1433为数据库默认端口号,学习宿舍为数据库名字
      String user = "sa"; //登录用户名
      String password = "123456"; //登录密码
      try { 
       Class.forName(driverClassName);
       conn = DriverManager.getConnection(url, user, password);
       System.out.println("数据库连接成功");
      } catch (SQLException ex1)
      {
       System.out.println("数据库连接失败");
      } 
      return conn;
    }
    
    //-----------------------------------关闭链接----------------------------------
    
    public  void Close() 
    {
      try {
    	rs.close();
    } catch (SQLException e) {
    	e.printStackTrace();
    }
      try {
    	st.close();
    } catch (SQLException e1) {
    	e1.printStackTrace();
    }
      try {
    	conn.close();
    } catch (SQLException e) {
    	e.printStackTrace();
    }
    }
    //----------------------------------------登陆---------------------------------
    public int landing(String name1,String password1) 
    {
    	int num = 0;
    	String sql = "select *from 用户表";
    	try{
    		getConn();
    		st = conn.createStatement();
    		rs = st.executeQuery(sql);
    		while(rs.next())
    		{
    			String name = rs.getString(1).trim();
    			String password = rs.getString(2).trim();
    			if(name.equals(name1)&&password.equals(password1))
    			{
    				num = 1;
    			}
    			
    		}
    	}catch (SQLException e) {
    		// TODO: handle exception
    	} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	Close();
    	return num;
    }
    //--------------------------------查询-------------------------------
    public Vector<Vector<Object>> query(String tableName,int column)
    {
    	int num = 0;
    	String sql = "select *from "+tableName;
    	Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    	try{
    		getConn();
    		st = conn.createStatement();
    		rs=st.executeQuery(sql);
    		while(rs.next())
    		{
    			Vector<Object> rowdata = new Vector<Object>();
    			for(num=1;num<=column;num++)
    			{
    				rowdata.add(rs.getString(num));	  
    			}
    			data.add(rowdata);
    		}
    	  }catch(SQLException ex1)
    		{
    		System.out.println("失败"+ex1);
    		} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    		}
    		Close();
    		return data;
    }
    //---------------------------------------删除----------------------------------
    public int delete(String sql)
    {
    	int num = 0;
    	try{
    		getConn();
    		st = conn.createStatement();
    	    num = st.executeUpdate(sql);
    	}catch (SQLException e) {
    		// TODO: handle exception
    	} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}	
    	Close();
    	return num;
    }
    //-------------------------------------保存-------------------------------------
    public Vector<Vector<Object>> Save(String[] sqlvalue,String tableName,int row,int column) 
    {
    	Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    	try{
    		getConn();
    		st = conn.createStatement();
    	    st.executeUpdate("delete from "+tableName);
    		for(int i =0;i<row;i++)
    		{
    			st.executeUpdate(sqlvalue[i].toString());
    		}		
    		data = query(tableName, column);
    		
    	}catch (SQLException e) {
    		// TODO: handle exception
    	} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	return data;
    }
    }
    

    数据库连接账号密码及表名

    **

    这个是数据库的连接账号和密码123456
    这个是数据库的连接账号和密码

    这个是用户表结构和登陆账号和密码(可自行修改)
    在这里插入图片描述

    在这里插入图片描述

    **

    宿舍信息表结构**
    在这里插入图片描述

    **

    学生信息表结构**
    在这里插入图片描述

    ## 需要源码,点赞关注截图,发邮箱到1397195447@qq.com

    展开全文
  • GitHub开源的10个超棒后台管理面板

    万次阅读 多人点赞 2019-09-20 09:36:16
    目录 1、AdminLTE 2、vue-Element-Admin 3、tabler 4、Gentelella 5、ng2-admin 6、ant-design-pro ...项目开发中后台管理平台必不可少,但是从零搭建一套多样化后台管理并不容易,目前有许多开源、免费、...
  • 第三版信息系统项目管理师47个过程的输入输出及工具
  • 本视频教程以新的信息系统项目管理师教程(第三版)为蓝本,结合小任老师多年高校教学经验和软考培训经验录制。参加工作后,我们没有太多的时间投入到信息系统项目管理师的备考中,教程太厚、真题太难,怎样花少的...
  • C语言学生成绩管理系统源代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...
  • ASP.NET管理系统

    千次下载 热门讨论 2013-01-29 17:08:28
    一个简单的asp.net管理系统,有权限分配,控制到按钮级别.采用vs2008开发,数据库附加即可。
  • 基于Java和MySQL的图书管理系统

    万次阅读 多人点赞 2018-06-20 21:41:17
    Java图书管理系统 设计人:wangyunpeng_bio 项目需求 随着计算机的普及和应用水平的提高,经过考察比较,决定利用自己的Java知识开发小型的图书管理系统,方便图书的管理。 图书管理系统是典型的信息管理系统。...
  • [已实现]暴力破解路由器管理密码

    万次阅读 2020-06-13 12:53:37
    和上次租房不同的地方在于,这次路由器后台管理密码居然和给的wifi连接密码不一样了,肯定是有人改过密码了!admin 等弱口令都试过了,全都不管用!对一个it技术人员来说,被人掌握网络生杀大权肯定是无法容忍的! 第...
  • 基于React+antd的后台管理模板(可预览)

    万次阅读 多人点赞 2018-08-05 13:42:53
    自己利用业余时间,基于React+antd写了一个后台管理模板。主要是熟悉antd组件和React,页面主要还是展示页面,不涉及后台交互。 特点: 我用
  • 管理系统课程设计】美少女手把手教你后台管理

    万次阅读 多人点赞 2019-11-19 09:44:48
    【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,...
  • 本人参加的是2017年上半年信息系统项目管理师考试,今天看到2017上半年考试的成绩合格分数为45,也算是侥幸通过,在这里写一写自己是如何备考的,供各位考友参考一下。 这里说的50天是指白天上班以业余时间备考所需...
  • ArcGIS许可管理器License server administrator无法启动的解决方法在安装ArcGIS软件,甚至日常使用启动软件时,ArcGIS许可管理器License Manager经常会无法启动,点多少次都没反应,更别谈往后的破解了。这里谈一下...
  • 小王上任后,根据一般原则梳理了合同管理的主要内容,在此基础上制定了公司的合同管理制度,并将该制度分发给各项目组和职能部门。同时将自己的职责主要确定为对所有项目合同进行分析和审核,降低项目合同的风险。 ...
  • [Windows10]Win10如何获取最高管理员权限

    万次阅读 多人点赞 2018-09-17 17:48:56
    使用Windows10的时候常常发现我们没有管理员权限,这对我们使用造成了巨大麻烦。今天我来分享一下 win10里面怎么获取最高管理员权限。 (一)Windows10专业版/企业版/教育版方法 1,按下win+R键唤出“运行”窗口,...
  • 数据库课程设计实验报告--图书馆管理系统

    万次阅读 多人点赞 2018-03-08 14:03:13
    一、系统平台 开发工具:Eclipse java Mars 数据库 MySQL server,Navicat可视化工具 操作系统:win10 ... 提取码:4y44 ... 图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员...
  • 2008年9月19日B市政府决定实施智能交通管理系统项目,对路面人流和车流实现实时的、量化的监控和管理。项目要求于2009年2月1日完成。 该项目由CSAI公司承建,小李作为CSAI公司项目经理,在2008年10月20日接到项目...
  • 在此收集了一些厂商的服务器存储设备的默认管理口信息,以供大家日后运维时方便查找,若有错误的地方请指正,谢谢! 服务器管理口信息: 设备类型 设备型号 默认管理IP 默认用户名 默认密码 IBM...
  • ·用户 是Linux系统工作中重要的一环, 用户管理包括 用户 与 组 管理 ·在Linux系统中, 不论是由本级或是远程登录系统, 每个系统都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限 ·对 文件 / 目录 的...
  • 参加工作后,我们没有太多的时间投入到信息系统项目管理师的备考中,教程太厚、真题太难,怎样花少的时间顺利通过软考考试是每个人都在探索的问题。看视频,小任老师帮你把握考试重点,用短的时间,让你学到应该掌握...
  • 数据库课程设计 ——酒店管理系统

    万次阅读 多人点赞 2019-05-31 10:36:11
    (1)酒店管理系统用于满足酒店工作人员和管理人员的需求。 (2)酒店管理人员和工作人员可以为酒店房间加入入住和退房记录,并生成相应的报表用于查阅,确认和保存,酒店工作人员可以浏览、查询、统计、添加酒店...
  • 目标管理

    万次阅读 2019-09-24 17:36:35
    书中介绍了很多管理工具,大部分内容同事已经分享过了,其中有一章没讲的是目标管理,正好最近又参加了《目标管理》的培训,就结合起来说说目标管理吧。 "企业管理说到底就是目标管理。" -- 彼得 · 德鲁克 《管理...
  • 实际项目中如何使用Git做分支管理

    万次阅读 多人点赞 2018-06-24 18:08:24
    记得刚工作的时候根本不知道什么是版本管理工具,有一次和别人聊天,人家问你们公司代码用什么版本管理工具?我说用U盘拷贝,然后人家就顾左右而言他了,估计心中还在默默的鄙视到:这么不专业,估计技术也不咋滴!...
  • 小赵具有3年的软件项目开发与管理经验。公司认为这个项目的技术难度比较低,把两个月前刚从大学招聘来的9个计算机科学与技术转移的应届毕业生分配到这个项目组,这样,项目开发团队顺利建立了。项目的开发按照所制定...
  • 可以实现:用户发布失物,或者招领失物,管理员对用户,失物信息进行增删改查。 文章最后有体验地址和获取源码地址 运行的截图如下(点击图片放大): SSM失物招领管理系统-未登录-未登录的时候↓↓ SSM失物招领...
  • 基于JavaWeb开发的图书管理系统

    万次阅读 多人点赞 2018-03-21 09:26:42
    使用Java开发的图书管理系统 如题,用Java开发而成,具备基础功能,读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅记录,修改个人资料,密码等,管理...
  • 学生信息管理系统c++

    万次阅读 2017-07-01 19:28:02
    一个简单的c语言学生信息管理系统,是控制台程序。 运行界面如下,功能已经全部实现 本资料绝对原创,请认准发表时间,如有相同,请私信我。
  • C#学生管理系统

    万次阅读 多人点赞 2018-07-10 20:09:50
    环境:SqlServer+VS2015 ...C#成绩管理系统地址:https://blog.csdn.net/robot_sh/article/details/103537729 JAVA学生信息管理系统 :https://blog.csdn.net/robot_sh/article/details/103707016 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,172,744
精华内容 869,097
关键字:

管理