Web应用——驾培管理系统之系统—权限分配


本节博文将向大家介绍本次Web应用之权限分配。

何为权限分配,就是本次驾培系统设置一个超级管理人员,这个管理人员能给在本平台上的所有用户进行权限分配。可以让用户登录后根据超级管理人员所分配的权限,给予与之相对应的权限操作。本次权限分配用了两个oracle数据表,一个是所有权限的表格,即全部权限都存在里面,并且设置权限的ID和等级。另一个是用户权限表格,根据超级管理人员所分配的权限,在用户权限表格上增删权限ID。说了这么多,不知道大家能不能明白,先上效果图。


权限分配演示一:超管登录,对admin用户进行权限分配。admin用户登录后,只能操作个人和系统管理。




权限分配演示二:超管登录,对hongxing用户进行权限分配。hongxing用户登录后,只能操作个人和系统管理。




看完上面两个gif图,大家应该明白此次实现的功能是什么了。本次权限分配用了一个第三方插件:Ztree,实现权限的树状列表。

下面给大家展现一下Ztree的demo,以便明白笔者是怎么实现这个权限分配的.



这是Ztree插件附带的demo,点击右键审查页面代码,可以看到:树状结构由一个zNodes实现

[html]  view plain  copy
  1. <link rel="stylesheet" href="../../../css/demo.css" type="text/css">  
  2.     <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">  
  3.     <script type="text/<a href="http://lib.csdn.net/base/18" class="replace_word" title="JavaScript知识库" target="_blank" style="color:#df3434; font-weight:bold;">javascript</a>src="../../../js/<a href="http://lib.csdn.net/base/22" class="replace_word" title="jQuery知识库" target="_blank" style="color:#df3434; font-weight:bold;">jquery</a>-1.4.4.min.js"></script>  
  4.     <script type="text/javascript" src="../../../js/jquery.ztree.core-3.5.js"></script>  
  5.     <script type="text/javascript" src="../../../js/jquery.ztree.excheck-3.5.js"></script>  
  6.     <!-- 
  7.     <script type="text/javascript" src="../../../js/jquery.ztree.exedit-3.5.js"></script> 
  8.     -->  
  9.     <SCRIPT type="text/javascript">  
  10.         <!--  
  11.         var setting = {  
  12.             check: {  
  13.                 enable: true  
  14.             },  
  15.             data: {  
  16.                 simpleData: {  
  17.                     enable: true  
  18.                 }  
  19.             }  
  20.         };  
  21.   
  22.         var zNodes =[  
  23.             { id:1, pId:0, name:"个人管理 1", open:true},  
  24.             { id:3, pId:1, name:"随意勾选 1-1", open:true},  
  25.             { id:5, pId:1, name:"随意勾选 1-1-1"},  
  26.             { id:112, pId:11, name:"随意勾选 1-1-2"},  
  27.             { id:12, pId:1, name:"随意勾选 1-2", open:true},  
  28.             { id:121, pId:12, name:"随意勾选 1-2-1"},  
  29.             { id:122, pId:12, name:"随意勾选 1-2-2"},  
  30.             { id:2, pId:0, name:"随意勾选 2", checked:true, open:true},  
  31.             { id:21, pId:2, name:"随意勾选 2-1"},  
  32.             { id:22, pId:2, name:"随意勾选 2-2", open:true},  
  33.             { id:221, pId:22, name:"随意勾选 2-2-1", checked:true},  
  34.             { id:222, pId:22, name:"随意勾选 2-2-2", checked:false},  
  35.             { id:23, pId:2, name:"随意勾选 2-3"},  
  36.         ];  
  37.           
  38.         var code;  
  39.           
  40.         function setCheck() {  
  41.             var zTree = $.fn.zTree.getZTreeObj("treeDemo"),  
  42.             py = $("#py").attr("checked")? "p":"",  
  43.             sy = $("#sy").attr("checked")? "s":"",  
  44.             pn = $("#pn").attr("checked")? "p":"",  
  45.             sn = $("#sn").attr("checked")? "s":"",  
  46.             type = { "Y":py + sy, "N":pn + sn};  
  47.             zTree.setting.check.chkboxType = type;  
  48.             showCode('setting.check.chkboxType = { "Y" : "' + type.Y + '", "N" : "' + type.N + '" };');  
  49.         }  
  50.         function showCode(str) {  
  51.             if (!code) code = $("#code");  
  52.             code.empty();  
  53.             code.append("<li>"+str+"</li>");  
  54.         }  
  55.           
  56.         $(document).ready(function(){  
  57.             $.fn.zTree.init($("#treeDemo"), setting, zNodes);  
  58.             setCheck();  
  59.             $("#py").bind("change", setCheck);  
  60.             $("#sy").bind("change", setCheck);  
  61.             $("#pn").bind("change", setCheck);  
  62.             $("#sn").bind("change", setCheck);  
  63.         });  
  64.         //-->  
  65.     </SCRIPT>  
  66. </HEAD>  
  67.   
  68. <BODY>  
  69. <div class="content_wrap">  
  70.     <div class="zTreeDemoBackground left">  
  71.         <ul id="treeDemo" class="ztree"></ul>  
  72.     </div>  
  73.       
  74. </div>  

下面附上实现代码和数据表:


全部权限的表格:



用户所有权限的表格:超管的user_id是1,他拥有全部权限ID



接下来请看我们的UserServlet:


[java]  view plain  copy
  1. public class UserServlet extends HttpServlet{  
  2.     @Override  
  3.     protected void service(HttpServletRequest req, HttpServletResponse resp)  
  4.             throws ServletException, IOException {  
  5.         req.setCharacterEncoding("utf-8");  
  6.         resp.setContentType("text/html;charset=utf-8");  
  7.           
  8.         String task = req.getParameter("task");  
  9.         HttpSession session = req.getSession();  
  10.         //从登陆的传的session获取到用户信息  
  11.         UserBean userBean = (UserBean)session.getAttribute("Logindo");  
  12.         UserDao userDao = DaoFactory.getUserDao();  
  13.           
  14.         PrintWriter writer = resp.getWriter();  
  15.           
  16.         if("logout".equals(task)){  
  17.             session = req.getSession();  
  18.             session.invalidate();  
  19.             req.getRequestDispatcher("index.jsp").forward(req, resp);  
  20.               
  21.         }else if("permission".equals(task)){  
  22.             //跳转到权限分配jsp  
  23.             int pagenum = Integer.parseInt(req.getParameter("pagenum"));          
  24.             int count = userDao.countUser();  
  25.             PageBean pageBean = new PageBean();  
  26.             pageBean.findPageBean(count, pagenum);  
  27.             List<UserBean> userBeans =userDao.findPage(pageBean);  
  28.             req.setAttribute("pageBean", pageBean);  
  29.             req.setAttribute("userBeans", userBeans);  
  30.             req.getRequestDispatcher("jsp/sysmanager/permission.jsp").forward(req, resp);  
  31.         }else if("delivery".equals(task)){  
  32.             //权限分配业务逻辑  
  33.             //TODO  
  34.             int deliveryUserId = Integer.parseInt(req.getParameter("userid"));  
  35.             userBean = userDao.findUser_ById(deliveryUserId);  
  36.               
  37.             session.setAttribute("func_userBean", userBean);  
  38.             req.getRequestDispatcher("jsp/sysmanager/testfunc.jsp").forward(req, resp);  
  39.             //jsp点击权限分配  
  40.         }else if("test".equals(task)){  
  41.             int user_id = Integer.parseInt(req.getParameter("user_id")) ;  
  42.             //获取全部的权限列表  
  43.             List<FuncBean> funcList = DaoFactory.getFuncDao().getFunc_Already();  
  44.             //根据用户ID获取他所有的权限  
  45.             List<FuncBean> userList = DaoFactory.getFuncDao().getFunc_ALL(user_id);  
  46.             int userid = userBean.getUser_id();  
  47.             //获取出id,pid(权限父ID),name(权限名),open(是否展开),checked(默认选中)等属性  
  48.             List<FunctionBean> functionBeans = new ArrayList<FunctionBean>();  
  49.             //对全部权限列表进行迭代  
  50.             for (FuncBean Bean : funcList) {  
  51.                 FunctionBean functionBean = new FunctionBean();  
  52.                 //将权限表的所有信息set进去  
  53.                 functionBean.setId(Bean.getFunc_id());  
  54.                 functionBean.setpId(Bean.getFunc_pid());  
  55.                 functionBean.setName(Bean.getFunc_name());  
  56.                 //如果权限列表的父id为0,则默认展开  
  57.                 if(Bean.getFunc_pid()==0){  
  58.                     functionBean.setOpen(true);  
  59.                 }else{  
  60.                     functionBean.setOpen(false);  
  61.                 }  
  62.                   
  63.                 int flag = 0;  
  64.                 //对用户已有权限列表进行迭代  
  65.                 for (FuncBean itemBean : userList) {  
  66.                     //如果用户已有权限ID与所有权限表的权限ID相等,则默认选中  
  67.                     if(itemBean.getFunc_id()==Bean.getFunc_id()){  
  68.                         flag = 1;  
  69.                         functionBean.setChecked(true);  
  70.                     }  
  71.                 }  
  72.                 //否则不选中  
  73.                 if(flag == 0){  
  74.                     functionBean.setChecked(false);  
  75.                 }  
  76.                 //将结果存到List<FunctionBean> functionBeans中  
  77.                 functionBeans.add(functionBean);  
  78.             }  
  79.             //转换为JSON格式传到页面,转换为JSON格式,结果就是上文所需的zNodes格式[{id: ,pid: ,name:'',open:ture/false,checked:true/false}],不明白可以留言  
  80.             JSONArray funcjson  = JSONArray.fromObject(functionBeans);  
  81.             writer.write(funcjson.toString());  
  82.             writer.flush();  
  83.             //权限分配完成点击提交  
  84.         }else if("finish".equals(task)){  
  85.             //获取JSP页面传来的user_id  
  86.             int user_id = Integer.parseInt(req.getParameter("user_id")) ;  
  87.             //获取JSP页面传来的权限ID的字符串  
  88.             String rightsId = req.getParameter("rightsId");  
  89.             //截取成单个字符串数组  
  90.             String [] stringArr= rightsId.split(",");  
  91.             //String stringArr[] = req.getParameterValues("rightsId");  
  92.               
  93.             //删除对应用户已有的权限  
  94.             DaoFactory.getFuncDao().deleteFunc_All(user_id);  
  95.             for (int i = 0; i < stringArr.length; i++) {  
  96.                 if(!stringArr[i].equals("")){  
  97.                     //如果权限ID不为空,则将权限添加进数据表  
  98.                     int func_id = Integer.valueOf(stringArr[i]) ;  
  99.                     DaoFactory.getFuncDao().addFunc_ByUserId(user_id,func_id);  
  100.                 }  
  101.                   
  102.             }  
  103.             userBean = userDao.findUser_ById(user_id);  
  104.             req.setAttribute("msg""分配成功,已保存!");  
  105.             session.setAttribute("func_userBean", userBean);  
  106.             req.getRequestDispatcher("jsp/sysmanager/testfunc.jsp").forward(req, resp);  
  107.         //导航-》关于/我的  
  108.         }else if("about".equals(task)){  
  109.             int driving_id = userBean.getDriving_id();  
  110.             String driving_name = DaoFactory.getDrivingSchDao().findDrivName_ById(driving_id);  
  111.             ApkBean apkBean = DaoFactory.getRoleDao().findApk_ByNewOne();  
  112.               
  113.             req.setAttribute("apkBean", apkBean);  
  114.             req.setAttribute("driving_name", driving_name);  
  115.             req.setAttribute("userBean", userBean);  
  116.             req.getRequestDispatcher("jsp/sysmanager/about.jsp").forward(req, resp);  
  117.         }  
  118.     }  
  119. }  

这是我们的权限分配的JSP:

[html]  view plain  copy
  1. <%@ page language="<a href="http://lib.csdn.net/base/17" class="replace_word" title="Java EE知识库" target="_blank" style="color:#df3434; font-weight:bold;">java</a>import="java.util.*,org.great.bean.*" pageEncoding="utf-8"%>  
  2. <%@page import="org.great.dao.DaoFactory"%>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10.   <head>  
  11.     <base href="<%=basePath%>">  
  12.       
  13.     <title>My JSP 'usermanager.jsp' starting page</title>  
  14.       
  15.     <meta http-equiv="pragma" content="no-cache">  
  16.     <meta http-equiv="cache-control" content="no-cache">  
  17.     <meta http-equiv="expires" content="0">      
  18.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19.     <meta http-equiv="description" content="This is my page">  
  20.     <!-- 
  21.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  22.     -->  
  23.     <link rel="stylesheet" type="text/css" href="<%=basePath%>/background/Style/skin.css" />  
  24.     <script type="text/javascript"  
  25.             src="<%=basePath%>/zTree/js/jquery-1.4.4.min.js">  
  26.     </script>  
  27.     <link rel="stylesheet" href="<%=basePath%>/zTree/css/demo.css"  
  28.             type="text/css">  
  29.         <link rel="stylesheet"  
  30.             href="<%=basePath%>/zTree/css/zTreeStyle/zTreeStyle.css"  
  31.             type="text/css">  
  32.         <script type="text/javascript"  
  33.             src="<%=basePath%>/zTree/js/jquery.ztree.core-3.5.js">  
  34. </script>  
  35.         <script type="text/javascript"  
  36.             src="<%=basePath%>/zTree/js/jquery.ztree.excheck-3.5.js">  
  37. </script>  
  38.   </head>  
  39.   <body>  
  40.         <table width="100%" border="0" cellpadding="0" cellspacing="0">  
  41.             <!-- 头部开始 -->  
  42.             <tr>  
  43.                 <td width="17" valign="top" background="<%=basePath%>/background/Images/mail_left_bg.gif">  
  44.                     <img src="<%=basePath%>/background/Images/left_top_right.gif" width="17" height="29" />  
  45.                 </td>  
  46.                 <td valign="top" background="<%=basePath%>/background/Images/content_bg.gif">  
  47.                     <table width="100%" height="31" border="0" cellpadding="0" cellspacing="0" background="<%=basePath%>/background/<%=basePath%>/background/Images/content_bg.gif">  
  48.                         <tr><td height="31"><div class="title" style="color: red">权限分配</div></td></tr>  
  49.                     </table>  
  50.                 </td>  
  51.                 <td width="16" valign="top" background="<%=basePath%>/background/Images/mail_right_bg.gif"><img src="<%=basePath%>/background/Images/nav_right_bg.gif" width="16" height="29" /></td>  
  52.             </tr>  
  53.             <!-- 中间部分开始 -->  
  54.             <tr>  
  55.                 <!--第一行左边框-->  
  56.                 <td valign="middle" background="<%=basePath%>/background/Images/mail_left_bg.gif"> </td>  
  57.                 <!--第一行中间内容-->  
  58.                 <td valign="top" bgcolor="#F7F8F9">  
  59.                     <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">  
  60.                         <!-- 空白行-->  
  61.                         <tr><td colspan="2" valign="top"> </td><td> </td><td valign="top"> </td></tr>  
  62.                         <tr>  
  63.                             <td colspan="4">  
  64.                                 <table>  
  65.                                     <tr>  
  66.                                         <td width="100" align="center"><img src="<%=basePath%>/background/Images/mime.gif" /></td>  
  67.                                         <td valign="bottom"><h3 style="letter-spacing:1px;color: blue">在这里,您可以修改用户的权限</h3></td>  
  68.                                     </tr>  
  69.                                 </table>  
  70.                             </td>  
  71.                         </tr>  
  72.                         <!-- 一条线 -->  
  73.                         <tr>  
  74.                             <td height="40" colspan="4">  
  75.                                 <table width="100%" height="1" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">  
  76.                                     <tr><td></td></tr>  
  77.                                 </table>  
  78.                             </td>  
  79.                         </tr>  
  80.                         <!-- 产品列表开始 -->  
  81.                           
  82.                         <%UserBean userBean = (UserBean)session.getAttribute("func_userBean");  
  83.                         int user_id = userBean.getUser_id();  
  84.                          %>  
  85.                        <tr>  
  86.                             <td width="2%"> </td>  
  87.                             <td width="96%">  
  88.                                 <table width="100%">  
  89.                                     <tr>  
  90.                                         <td colspan="2">  
  91.                                                 <table width="100%"  class="cont tr_color">  
  92.                                                     <tr>  
  93.                                                         <th></th>  
  94.                                                         <th></th>  
  95.                                                         <th></th>  
  96.                                                         <th></th>  
  97.                                                         <th></th>  
  98.                                                         <th></th>  
  99.                                                           
  100.                                                     </tr>  
  101.                                                     <tr align="right" class="d">  
  102.                                                           
  103.                                                         <td colspan="2" style="width: 300px">  
  104.                                                         <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>  
  105.                                                         <h2>您想对<span style="color: red"><%=userBean.getUser_name() %></span>分配什么样的权限?</h2>  
  106.                                                         </td>  
  107.                                                         <td>  
  108.                                                         <form action="user.do?task=finish" name="checkForm" method="post" >  
  109.                                                             <div class="zTreeDemoBackground left">  
  110.                                                                 <ul id="treeDemo" class="ztree"></ul>  
  111.                                                                 <input type="hidden" id="user_id" name="user_id" value="<%=user_id%>">  
  112.                                                             </div>  
  113.                                                             <div style="margin-right: 120px">  
  114.                                                             <br>  
  115.                                                                 <input type="hidden" name="rightsId" id="rightsId" />  
  116.                                                                 <input type="submit" value="保存" onclick="onCheck()"  />  
  117.                                                             </div>  
  118.                                                         </form>  
  119.                                                         </td>  
  120.                                                         <td colspan="2" style="width: 300px">  
  121.                                                     </tr>  
  122.                                                       
  123.                                                      
  124.                                                 </table>  
  125.                                         </td>  
  126.                                     </tr>  
  127.                                 </table>  
  128.                             </td>  
  129.                             <td width="2%"> </td>  
  130.                         </tr>  
  131.                         <!-- 产品列表结束 -->  
  132.                         <tr>  
  133.                             <td height="40" colspan="4">  
  134.                                 <table width="100%" height="1" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">  
  135.                                     <tr><td></td></tr>  
  136.                                 </table>  
  137.                             </td>  
  138.                         </tr>  
  139.                            
  140.                         <tr>  
  141.                             <td width="2%"> </td>  
  142.                             <td width="51%" class="left_txt">  
  143.                                 <img src="<%=basePath%>/background/Images/icon_mail.gif" width="16" height="11"> 客户服务邮箱:870873201@qq.com<br />  
  144.                                 <img src="<%=basePath%>/background/Images/icon_phone.gif" width="17" height="14"> 官方网站:<a href="http://my.csdn.net/xie_xiansheng" target="_blank">作者博客</a>  
  145.                             </td>  
  146.                             <td> </td><td> </td>  
  147.                         </tr>  
  148.                     </table>  
  149.                 </td>  
  150.                 <td background="<%=basePath%>/background/Images/mail_right_bg.gif"> </td>  
  151.             </tr>  
  152.             <!-- 底部部分 -->  
  153.             <tr>  
  154.                 <td valign="bottom" background="<%=basePath%>/background/Images/mail_left_bg.gif">  
  155.                     <img src="<%=basePath%>/background/Images/buttom_left.gif" width="17" height="17" />  
  156.                 </td>  
  157.                 <td background="<%=basePath%>/background/Images/buttom_bgs.gif">  
  158.                     <img src="<%=basePath%>/background/Images/buttom_bgs.gif" width="17" height="17">  
  159.                 </td>  
  160.                 <td valign="bottom" background="<%=basePath%>/background/Images/mail_right_bg.gif">  
  161.                     <img src="<%=basePath%>/background/Images/buttom_right.gif" width="16" height="17" />  
  162.                 </td>             
  163.             </tr>  
  164.         </table>  
  165.     </body>  
  166.     <SCRIPT type="text/javascript">  
  167.         var user_id = $("#user_id").val();  
  168.           
  169.         var setting = {  
  170.             check: {  
  171.                 enable: true,  
  172.                 chkStyle: "checkbox",  
  173.         chkboxType: { "Y": "ps", "N": "ps" }  
  174.                   
  175.             },  
  176.             data: {  
  177.                 simpleData: {  
  178.                     enable: true  
  179.                 }  
  180.             },  
  181.             callback:{  
  182.                 onCheck:onCheck  
  183.             }  
  184.         };  
  185.     
  186.      $(document).ready(function() {   
  187.         $.ajax( {    
  188.             url : "user.do?task=test&suibian=hehe&user_id="+user_id,    
  189.             type : "get",    
  190.             dataType : "test",    
  191.             success : function(data){  
  192.                 initZtree(data);  
  193.             }            
  194.               
  195.         });    
  196.           
  197.      });    
  198.       
  199. function initZtree(data) {   
  200.     var zNodes = JSON.parse(data);  
  201.    var zTreeObj = $.fn.zTree.init($('#treeDemo'), setting, zNodes);    
  202. }    
  203. function onCheck(e,treeId,treeNode){  
  204.             var treeObj=$.fn.zTree.getZTreeObj("treeDemo"),  
  205.             nodes=treeObj.getCheckedNodes(true),  
  206.             v="";  
  207.             for(var i=0;i<nodes.length;i++){  
  208.             v+=nodes[i].id + ",";  
  209.               
  210.             }//这会返回我们选中的节点给Servlet,然后在Servlet进行操作,先删除对应USER_ID的全部权限,然后选中的权限添加进去  
  211.             $("#rightsId").attr("value", v);  
  212.               
  213. }  
  214.               
  215.             
  216.       
  217.         var msg = "<%=request.getAttribute("msg")%>";  
  218.         if("null"!=msg){  
  219.             alert(msg);  
  220.         }  
  221.    
  222.           
  223.     </SCRIPT>  
  224. </html>  
我们的数据库操作FuncDaoImpl.class,实现了FuncDao接口层:

[java]  view plain  copy
  1. package org.great.daoimpl;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.PreparedStatement;  
  5. import java.sql.ResultSet;  
  6. import java.sql.SQLException;  
  7. import java.util.ArrayList;  
  8. import java.util.List;  
  9.   
  10. import org.great.bean.FuncBean;  
  11. import org.great.dao.FuncDao;  
  12. import org.great.util.DBUtils;  
  13.   
  14. public class FuncDaoImpl implements FuncDao{  
  15.     private PreparedStatement pre =  null;  
  16.     private ResultSet rs = null;  
  17.       
  18.     /** 获得权限表数据*/  
  19.     public List<FuncBean> getFunc_ALL(int user_id){  
  20.         List<FuncBean> list = new ArrayList<FuncBean>();  
  21.         Connection conn = DBUtils.getConn();  
  22.         String sql = "select f.func_id,f.func_pid,f.func_name,f.func_url,f.func_level from t_function f," +  
  23.                 "t_user_function rf where f.func_id = rf.func_id and rf.user_id = ?";  
  24.         try {  
  25.             pre = conn.prepareStatement(sql);  
  26.             pre.setInt(1, user_id);  
  27.             rs = pre.executeQuery();  
  28.             while(rs.next()){  
  29.                 FuncBean funcBean = new FuncBean();  
  30.                 funcBean.setFunc_id(rs.getInt(1));  
  31.                 funcBean.setFunc_pid(rs.getInt(2));  
  32.                 funcBean.setFunc_name(rs.getString(3));  
  33.                 funcBean.setFunc_url(rs.getString(4));  
  34.                 funcBean.setFunc_level(rs.getString(5));  
  35.                 list.add(funcBean);  
  36.             }  
  37.         } catch (SQLException e) {  
  38.             // TODO Auto-generated catch block  
  39.             e.printStackTrace();  
  40.         } finally{  
  41.             DBUtils.close(conn, pre, rs);  
  42.         }  
  43.           
  44.         return list;  
  45.     }  
  46.   
  47.   
  48.     //删除用户已有权限  
  49.     public void deleteFunc_All(int userId) {  
  50.         Connection conn = DBUtils.getConn();  
  51.         String sql = "delete t_user_function where user_id = ?";  
  52.         try {  
  53.             pre = conn.prepareStatement(sql);  
  54.             pre.setInt(1, userId);  
  55.             rs = pre.executeQuery();  
  56.         } catch (SQLException e) {  
  57.             // TODO Auto-generated catch block  
  58.             e.printStackTrace();  
  59.         } finally{  
  60.             DBUtils.close(conn, pre, rs);  
  61.         }  
  62.     }  
  63.     //根据超级管理员分配的权限添加进权限表  
  64.     public void addFunc_ByUserId(int userId,int func_id) {  
  65.         Connection conn = DBUtils.getConn();  
  66.         String sql = "insert into t_user_function values(?,?)";  
  67.         try {  
  68.             pre = conn.prepareStatement(sql);  
  69.             pre.setInt(1, userId);  
  70.             pre.setInt(2, func_id);  
  71.             rs = pre.executeQuery();  
  72.         } catch (SQLException e) {  
  73.             // TODO Auto-generated catch block  
  74.             e.printStackTrace();  
  75.         } finally{  
  76.             DBUtils.close(conn, pre, rs);  
  77.         }  
  78.     }  
  79. }  
至此,权限分配完毕!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
验证随便写。该项目是用JAVA-Swing编写,界面美观,暂时没有找到BUG。需要建立一个mysql数据库。因为软件问题无法导出,请读者自行创建。表的列数据在下载文件的截图中,因为程序有导出数据库到Excel文件和界面美化(共27个皮肤),所以需要导入两个jar包,在下载文件里,复制这两个文件在exlipse中点击课程设计然后粘贴,再右击这两个包点击build path->第一个,这就是这两个包的导入方法。皮肤无法动态更换,在主界面中代码可以找到。下面是整个课程设计的需求。 天津市瑞聪驾驶员学校为简化人工劳动,提高管理效率,帮助管理者便捷科学管理培训信息,决定开发一套驾校管理系统,实现以下需求。 1)软件的使用者是驾校负责人,负责人可以通过软件录入驾校学员信息(包括姓名、性别、电话、身份证号码、照片、报名时间、学费金额、考试进度)。 2)负责人可以通过软件录入驾校教练信息(包括姓名、电话、照片等)、驾校车辆信息(车牌号、车型、车龄)。 3)负责人可以在软件中浏览学员、教练和车辆的信息概况(JTable或JList),可以查看选中记录的详细信息;可以编辑更新记录信息。 4)负责人可以通过软件为一个或一批学员新建学车记录,即为学员安排教练、车辆、练车日期和练车时长等信息。 5)软件可以根据练车记录,统计指定时间段内学员的练车总时间、教练教学总时间、驾校报名总收入等不同信息。 6)负责人可以将学员练车记录导出到txt文件或excel文件 7)除以上功能外,还可根据实际需要添加其他功能,以上是全部需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值