📄 dacl.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 + -