⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dacl.java

📁 课程设计:ATM Project源码
💻 JAVA
字号:
/* Copyright 2002 MonkeyStar SoftWare, Inc. All rights reserved.
 * The Start of the ATM Project for Product Company
 * @author Wujun, Student Number:09800134
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.BorderFactory.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
import java.text.*;
import java.net.*;
import java.io.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.table.*;
class Admin{
	public String UserName;
	public String Name;
	public String Password;
	public String Role;
	public boolean State;
	public String CreateDate;
}
public class DACL extends JPanel {
	Component f;
	Vector m_Dacl;
	daclModel tm=new daclModel();
    JTable tableDacl=new JTable(tm);
    Font font=new Font("宋体",Font.BOLD,15);
    JTextField txtName= new JTextField(10);
    JTextField txtUser= new JTextField(10);
    JPasswordField txtPass= new JPasswordField("");
    JComboBox Combo1 = new JComboBox();
    JRadioButton radioYes = new JRadioButton("是");
    JRadioButton radioNo = new JRadioButton("否");
    ButtonGroup group1 = new ButtonGroup();
    JLabel l1= new JLabel("用户名:");
    JLabel l2= new JLabel("姓名:");
    JLabel l3= new JLabel("密码:");
    JLabel l4= new JLabel("权限");
    JLabel l5= new JLabel("是否停用?");
    
    JButton  btAdd= new JButton("新增帐号");
    JButton  btDel= new JButton("删除帐号");
    JButton  btStop= new JButton("禁用启用");
    JButton  btPwd= new JButton("修改密码");
    JButton  btRole= new JButton("更改权限");
    
	JScrollPane tbScroll = new JScrollPane(tableDacl);
	private ActionListener listener=new ActionResponse();
	SimpleDateFormat DateFormatter=new SimpleDateFormat("yyyy/MM/dd");
	public void SetShell()
	{
		group1.add(radioYes);
		group1.add(radioNo);
		radioNo.setSelected(true);
		Combo1.addItem("管理员");
		Combo1.addItem("操作员");
		Combo1.addItem("送货员");
		l1.setBounds(0,240,60,30);
		l2.setBounds(170,240,60,30);
		l3.setBounds(0,275,60,30);
		l4.setBounds(170,275,60,30);
		l5.setBounds(330,240,80,30);
		txtUser.setBounds(50,245,100,20);
		txtName.setBounds(210,245,100,20);
		txtPass.setBounds(50,280,100,20);
		Combo1.setBounds(210,280,100,20);
		
		radioYes.setBounds(330,275,30,30);
		radioNo.setBounds(365,275,30,30);
	
		
		
	}	
		
	public DACL(Component ComponentF)
	{
		this.setLayout(null);
		f=ComponentF;
		getDaclDB();
		SetShell();
		btAdd.setBounds(400,0,100,30);
		btDel.setBounds(400,50,100,30);
		btStop.setBounds(400,100,100,30);
		btPwd.setBounds(400,150,100,30);
		btRole.setBounds(400,200,100,30);
		tbScroll.setBounds(0,0,380,230);
		btAdd.addActionListener(listener);
		btDel.addActionListener(listener);
		btStop.addActionListener(listener);
		btPwd.addActionListener(listener);
		btRole.addActionListener(listener);
		btAdd.setFont(font);
		btDel.setFont(font);
		btStop.setFont(font);
		btPwd.setFont(font);
		btRole.setFont(font);
		
		this.add(btAdd);
		this.add(btDel);
		this.add(btStop);
		this.add(btPwd);
		this.add(btRole);
		this.add(tbScroll);
		
		this.add(l1);
		this.add(l2);
		this.add(l3);
		this.add(l4);
		this.add(l5);
		this.add(txtUser);
		this.add(txtName);
		this.add(txtPass);
		this.add(Combo1);
		this.add(radioYes);
		this.add(radioNo);
		
	}
	public void getDaclDB()
    {
      try{
      		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		    Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		    Statement s = c.createStatement();
		    m_Dacl=new Vector();
    	    ResultSet r = s.executeQuery("SELECT * FROM DACL");
     	    while(r.next()) 
	  	    {
	    	  Admin admin = new Admin();
    		  admin.UserName=r.getString("UserName");
   		 	  admin.Name=r.getString("Name");
   		 	  admin.Role=r.getString("Role");
   		 	  admin.State=r.getBoolean("State");
   		 	  admin.CreateDate=r.getString("CreateTime");
    	 	  m_Dacl.addElement(admin);
	   	    }
	        s.close();
	        tm.setItem(m_Dacl);
	     }
	 	 catch(SQLException Exp)
    	 {System.out.println(Exp.toString()); }
    	 catch(ClassNotFoundException Exp)
    	 {JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.INFORMATION_MESSAGE);}
    	 catch(Exception Exp)
    	 {}
    }
    public void Msgbox(String msg)
    {
  	 JOptionPane.showMessageDialog(f, msg, "提示:", JOptionPane.INFORMATION_MESSAGE);
    }
    public void stopAccount()
    {   
       if(tableDacl.getSelectedRow()>=0)
       {
       	  String flag=String.valueOf((!((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).State));
       	  try{	
            	 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		         Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		         Statement s = c.createStatement();
		         s.executeUpdate("UPDATE DACL SET State ="+flag+" WHERE UserName='"+((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).UserName+"'");
		         s.close();
		        }
		        catch(SQLException Exp)
     			{System.out.println(Exp.toString()); }
     			catch(ClassNotFoundException Exp)
     			{JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.INFORMATION_MESSAGE);}
     			catch(Exception Exp)
     			{}
     			if (((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).State)
     			Msgbox("帐号 "+((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).UserName+" 已经启用!");
     			else
     			Msgbox("帐号 "+((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).UserName+" 已经停用!");
     			getDaclDB();
       }
       
    }

    public void delAccount()
    {
    	if(tableDacl.getSelectedRow()>=0)
    	{
      		String title = "提示:";
      		String message = "您真的确定要删除用户 "
      		+((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).UserName+" 吗?";
	        int type = JOptionPane.INFORMATION_MESSAGE;
            String[] options={"确定","取消"};
            int optionType=JOptionPane.YES_NO_OPTION;
            int messageType=JOptionPane.QUESTION_MESSAGE; 
            int result = JOptionPane.showOptionDialog(f,message, title, optionType,messageType,null,options,options[1]);
            if (result == JOptionPane.YES_OPTION) 
            {
             try{	
            	 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		         Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		         Statement s = c.createStatement();
		         s.executeUpdate("DELETE FROM DACL WHERE UserName='"+((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).UserName+"'");
		         s.close();
		        }
		        catch(SQLException Exp)
     			{System.out.println(Exp.toString()); }
     			catch(ClassNotFoundException Exp)
     			{JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.INFORMATION_MESSAGE);}
     			catch(Exception Exp)
     			{}
     			Msgbox("该帐号已删除!");
     			getDaclDB(); 
            }
    	}
    	else
    	Msgbox("请在表格中选择要删除的对象!");
    }
    public void ChangePower(String username)
    {
    	String title="权限设置";
    	String message="用户名: "+username+"\n请选择适当权限";
    	String[] values = {"管理员","操作员","送货员"};
    	String result ="";
    	result = (String)JOptionPane.showInputDialog(f,message,title,JOptionPane.QUESTION_MESSAGE,null,values,values[0]);
    	if (result.length()>0)
    	{
    	try{	
            	 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		         Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		         Statement s = c.createStatement();
		         s.executeUpdate("UPDATE DACL SET Role ='"+result+"' WHERE UserName='"+username+"'");
		         s.close();
		        }
		        catch(SQLException Exp)
     			{System.out.println(Exp.toString()); }
     			catch(ClassNotFoundException Exp)
     			{JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.INFORMATION_MESSAGE);}
     			catch(Exception Exp)
     			{}
     			Msgbox("已将"+username+" 的权限设置为:"+result);
     			getDaclDB();}
    }
    
    public void addAccount()
    {
       
       String user = txtUser.getText();
       String name = txtName.getText();
    if(user.length()>0||name.length()>0)
    {  
       String power = Combo1.getSelectedItem().toString();
       String stop = (radioYes.isSelected()?"是":"否");
       String date = DateFormatter.format(new Date()).toString();
       String message = "用户名:"+user+"\n姓名:"+name+"\n权限: "+power+"\n是否禁用: "+stop+"\n创建日期:"+date;
       String title = "是否确定新建该帐号?";
	   int type = JOptionPane.INFORMATION_MESSAGE;
       String[] options={"确定","取消"};
       int optionType=JOptionPane.YES_NO_OPTION;
       int messageType=JOptionPane.QUESTION_MESSAGE; 
       int result = JOptionPane.showOptionDialog(f,message, title, optionType,messageType,null,options,options[1]);
  try{    
       if (result == JOptionPane.YES_OPTION) 
       {
       	 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		 Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		 Statement s = c.createStatement();
		 s.executeUpdate("INSERT INTO DACL"+"(UserName,Name,Password,Role,State,CreateTime)"
		 +" VALUES('"+user+"','"+name+"','"+String.valueOf(txtPass.getPassword())
		 +"','"+power+"',"+(radioYes.isSelected()?"true":"false")+",'"+date+"')");
		 s.close();
		 Msgbox("帐号添加成功!");
		 getDaclDB();
	   }
	 }
	 catch(SQLException Exp)
     {System.out.println(Exp.toString()); }
     catch(ClassNotFoundException Exp)
     {JOptionPane.showMessageDialog(f, Exp.toString(), "错误:", JOptionPane.INFORMATION_MESSAGE);}
     catch(Exception Exp)
     {}  }
     else
     Msgbox("请输入新建帐号的用户名和密码!");
		 
    }
      
	class ActionResponse implements ActionListener
	{
    	public void actionPerformed (ActionEvent e) 
   		{  
           if (e.getSource()==btAdd)
           {
           	  addAccount();
           }
           if (e.getSource()==btDel)
           {
           	  delAccount();
           }
           if (e.getSource()==btStop)
           {
           	  stopAccount();
           }
           if (e.getSource()==btPwd)
           {
           	  new PassDialog(f,((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).UserName);
           }
           if (e.getSource()==btRole)
           {
           	  ChangePower(((Admin)m_Dacl.elementAt(tableDacl.getSelectedRow())).UserName);
           }
        }
	}

}
class daclModel extends AbstractTableModel{
    Object[][] p = {};
    String[] Title = {"用户名","姓名","权限","是否禁用","创建时间"};
    Vector VecDacl;                      
    public void setItem(Vector m_dacl)
    {
        VecDacl=m_dacl;
        p=new Object[VecDacl.size()][6];
        for (int i=0;i<VecDacl.size();i++)
        {
        	p[i][0]=((Admin)VecDacl.elementAt(i)).UserName;
        	p[i][1]=((Admin)VecDacl.elementAt(i)).Name;
        	p[i][2]=((Admin)VecDacl.elementAt(i)).Role;
        	p[i][3]=new Boolean((boolean)((Admin)VecDacl.elementAt(i)).State);
        	p[i][4]=((Admin)VecDacl.elementAt(i)).CreateDate;

        }
        this.fireTableDataChanged();
    }
    public int getColumnCount() {
        return Title.length;
    }
    
    public int getRowCount() {
        return p.length;
    }

    public String getColumnName(int col) {
        return Title[col];
    }

    public Object getValueAt(int row, int col) {
        return p[row][col];
    }
    //public void setValueAt(Object aValue, int row, int column) {
    //            //System.out.println("Setting value to: " + aValue);
    //            p[row][column] = aValue;
    //        }
	public boolean isCellEditable(int row, int col) {return true;}
	public Class getColumnClass(int c) {
        
	    return getValueAt(0, c).getClass();
	       
	}
}
class PassDialog implements ActionListener
{
	Component f;
	JButton dlgOk=new JButton("确定");
	JDialog Dialog;
	String curUser;
	JButton dlgCancel=new JButton("取消");
	JLabel d1= new JLabel("原密码:");
	JLabel d2= new JLabel("新密码:");
	JLabel d3= new JLabel("重复密码:");
	JPasswordField dlgPass= new JPasswordField("");
	JPasswordField dlgPassNew= new JPasswordField("");
	JPasswordField dlgPassAgain= new JPasswordField("");
	public void actionPerformed (ActionEvent e) 
    { 
      String checkPass="";
      if (e.getSource()==dlgOk)
      {
    	 if(String.valueOf(dlgPassNew.getPassword()).equals(String.valueOf(dlgPassAgain.getPassword())))
    	 {
    	 try{	
             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		     Connection c = DriverManager.getConnection("jdbc:odbc:company","","");
		     Statement s = c.createStatement();
		     ResultSet r = s.executeQuery("SELECT * FROM DACL WHERE UserName='"+curUser+"'");
     	     while(r.next()) 
	  	     {
	    	      checkPass=new String(r.getString("Password"));
	   	     }
	   	     if (checkPass.equals(String.valueOf(dlgPass.getPassword())))
		     {
		     	  s.executeUpdate("UPDATE DACL SET Password ='"+String.valueOf(dlgPassNew.getPassword())+"' WHERE UserName='"+curUser+"'");
		          Msgbox("密码修改成功完成!");
		          Dialog.dispose();
		     }     
		     else
		     Msgbox("原密码错误,请重新输入!");
		     s.close();
		    }
		    catch(SQLException Exp)
            {System.out.println(Exp.toString()); }
     		catch(ClassNotFoundException Exp)
     		{   Msgbox(Exp.toString());}
     		catch(Exception Exp)
     		{}
     	 }
     	 else
     	 Msgbox("您两次输入的新密码不一致!请检查。");	
      }
      if (e.getSource()==dlgCancel)
      {
    	Dialog.dispose();
      }
    }
    public void Msgbox(String msg)
    {
  	 JOptionPane.showMessageDialog(f, msg, "提示:", JOptionPane.INFORMATION_MESSAGE);
    }
    PassDialog(Component ComponentF,String UserName)
    {
    	f=ComponentF;
    	curUser=UserName;
    	Dialog = new JDialog((JFrame)f,"修改帐号密码",true);
    	Container dialogPane=Dialog.getContentPane();
    	dialogPane.setLayout(null);
    	Dialog.setBounds(300,210,200,140);
    	d1.setBounds(10,5,80,20);
    	d2.setBounds(10,30,80,20);
    	d3.setBounds(10,55,80,20);
    	dlgPass.setBounds(80,5,100,20);
    	dlgPassNew.setBounds(80,30,100,20);
    	dlgPassAgain.setBounds(80,55,100,20);
    	dlgOk.setBounds(25,85,60,25);
    	dlgCancel.setBounds(105,85,60,25);
    	dlgOk.addActionListener(this);
    	dlgCancel.addActionListener(this);
    	dialogPane.add(d1);
    	dialogPane.add(d2);
    	dialogPane.add(d3);
    	dialogPane.add(dlgPass);
    	dialogPane.add(dlgPassNew);
    	dialogPane.add(dlgPassAgain);
    	dialogPane.add(dlgOk);
    	dialogPane.add(dlgCancel);
    	Dialog.show();
    	
    	
    }
     
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -