import java.awt.Dimension;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
public class AccountsManagement extends javax.swing.JFrame {
private String currentUsername;
private Login parent;
private DatabaseConnect data;
public AccountsManagement(String username, Login d, DatabaseConnect dc) {
parent = d;
currentUsername = username;
this.data = dc;
}
private AccountsManagement() {
start();
initComponents();
}
public void start() {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
initComponents();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
// GUI
@SuppressWarnings("unchecked")
private void initComponents() {
jScrollPane1 = new JScrollPane();
jTextArea1 = new JTextArea();
jButton5 = new JButton();
jLabel1 = new JLabel();
jLabel2 = new JLabel();
jLabel3 = new JLabel();
jLabel4 = new JLabel();
jchbUsername = new JCheckBox();
jbtnAdd = new JButton();
jchbPassword = new JCheckBox();
jbtnShow = new JButton();
jbtnDelete = new JButton();
jSeparator1 = new JSeparator();
jSeparator2 = new JSeparator();
jSeparator3 = new JSeparator();
jbtnLogoff = new JButton();
jbtnEdit = new JButton();
jSeparator4 = new JSeparator();
jLabel5 = new JLabel();
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton5.setText("jButton5");
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Account Management");
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(java.awt.event.WindowEvent evt) {
amClose(evt);
}
});
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel1.setText("Add a new user account");
jLabel2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel2.setText("Edit your account details");
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel3.setText("Show all user accounts");
jLabel4.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel4.setText("Delete an account");
jchbUsername.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jchbUsername.setText("Username");
jbtnAdd.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jbtnAdd.setText("Add");
jbtnAdd.setToolTipText("");
jbtnAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnAddActionPerformed(evt);
}
});
jchbPassword.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jchbPassword.setText("Password");
jbtnShow.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jbtnShow.setText("Show");
jbtnShow.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnShowActionPerformed(evt);
}
});
jbtnDelete.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jbtnDelete.setText("Delete");
jbtnDelete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnDeleteActionPerformed(evt);
}
});
jbtnLogoff.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jbtnLogoff.setText("Logoff");
jbtnLogoff.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnLogoffActionPerformed(evt);
}
});
jbtnEdit.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jbtnEdit.setText("Edit");
jbtnEdit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbtnEditActionPerformed(evt);
}
});
jLabel5.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
jLabel5.setText("Logoff from the system");
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jSeparator3)
.addComponent(jSeparator4)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 37, Short.MAX_VALUE)
.addComponent(jchbPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jbtnAdd, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jSeparator1)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 55, Short.MAX_VALUE)
.addComponent(jbtnShow, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jSeparator2, javax.swing.GroupLayout.Alignment.LEADING))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jbtnDelete, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jbtnLogoff, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jchbUsername, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jbtnEdit, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jbtnAdd))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, 0)
.addComponent(jchbUsername)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jchbPassword)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jbtnEdit)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jbtnShow))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jbtnDelete))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(jbtnLogoff))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
/**************************************
* END of GUI INITIALIZATION *
**************************************/
private void jbtnAddActionPerformed (ActionEvent evt) {
String title = "Add new account",
user = "", pass = "";
int choice = JOptionPane.CANCEL_OPTION;
do {
user = JOptionPane.showInputDialog(this, "Enter username", user, JOptionPane.INFORMATION_MESSAGE);
if (user == null) {
return;
}
} while (user.isEmpty());
do {
pass = JOptionPane.showInputDialog(this, "Enter password", pass, JOptionPane.INFORMATION_MESSAGE);
if (pass == null) {
return;
}
} while (pass.isEmpty());
choice = JOptionPane.showConfirmDialog(this, "Add user with username "
+ user + "?", title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (choice == JOptionPane.YES_OPTION) {
data.addUser(user, pass);
JOptionPane.showMessageDialog(this, "User added!", title, JOptionPane.INFORMATION_MESSAGE);
}
}
private void EditUser(boolean user, boolean pass) {
String title = "Edit your account";
int choice;
if (user) {
String username;
do {
username = JOptionPane.showInputDialog(this, "Enter new username", title, JOptionPane.PLAIN_MESSAGE);
if (username == null) {
return;
}
} while (username.isEmpty());
choice = JOptionPane.showConfirmDialog(this, "Change your username?", title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (choice == JOptionPane.OK_OPTION) {
int x = data.editUsername(username, currentUsername);
if (x > 0) {
JOptionPane.showMessageDialog(this, "Username updated", title, JOptionPane.INFORMATION_MESSAGE);
currentUsername = username;
} else {
System.out.println("record not updated");
}
} // end if choice block
} // end edit username block
if (pass) {
String password;
do {
password = JOptionPane.showInputDialog(this, "Enter new password", title, JOptionPane.PLAIN_MESSAGE);
if (password == null) {
return;
}
} while (password.isEmpty());
choice = JOptionPane.showConfirmDialog(this, "Change your password?", title, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (choice == JOptionPane.OK_OPTION) {
System.out.println("current username when changing password is "
+ currentUsername);
int x = data.editPassword(password, currentUsername);
if (x > 0) {
JOptionPane.showMessageDialog(this, "Password was successfully changed", title, JOptionPane.INFORMATION_MESSAGE);
} else {
System.out.println("password was not changed");
}
}// end if okoption block
}
if (!user && !pass) {
JOptionPane.showMessageDialog(this, "Nothing was selected for editing", "Error", JOptionPane.ERROR_MESSAGE);
}
} // end edit user method
private void amClose(WindowEvent evt) {
this.jbtnLogoffActionPerformed(null);
}
private void jbtnEditActionPerformed(ActionEvent evt) {
EditUser(jchbUsername.isSelected(), jchbPassword.isSelected());
}
private void jbtnShowActionPerformed(ActionEvent evt) {
try {
String UserPass[][] = data.showAccounts();
String header[] = { "username", "password" };
JTable showData = new JTable(UserPass, header);
showData.setEnabled(false);
JScrollPane jspData = new JScrollPane(showData);
jspData.setPreferredSize(new Dimension(100, 100));
JOptionPane.showMessageDialog(this, jspData, "Show all accounts", JOptionPane.PLAIN_MESSAGE);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
private void jbtnLogoffActionPerformed(ActionEvent evt) {
int choice = JOptionPane.showConfirmDialog(this, "Logoff the system?", "Logoff", JOptionPane.YES_NO_OPTION);
if (choice == JOptionPane.YES_OPTION) {
this.setVisible(false);
parent.showLogin();
data.logoff();
}
}
private void jbtnDeleteActionPerformed(ActionEvent evt) {
this.jbtnShowActionPerformed(evt);
String user = "", title = "Delete a user account";
do {
user = JOptionPane.showInputDialog(this, "Enter username of account to delete", title, JOptionPane.PLAIN_MESSAGE);
if (user == null) {
return;
}
if (user.equals(currentUsername)) {
this.jbtnLogoffActionPerformed(evt);
}
} while (user.isEmpty());
int choice = JOptionPane.showConfirmDialog(this, "Are you sure you want to delete user "
+ user + "?", title, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
if (choice == JOptionPane.OK_OPTION) {
int x = data.deleteAccount(user);
if (x > 0) {
JOptionPane.showMessageDialog(this, "Account with username " + user + " has been deleted", title, JOptionPane.INFORMATION_MESSAGE);
}
}
}
// Variables declaration
private javax.swing.JButton jButton5;
private JLabel jLabel1, jLabel2, jLabel3, jLabel4, jLabel5;
private JScrollPane jScrollPane1;
private JSeparator jSeparator1, jSeparator2, jSeparator3, jSeparator4;
private JTextArea jTextArea1;
private JButton jbtnAdd, jbtnDelete, jbtnEdit, jbtnLogoff, jbtnShow;
private JCheckBox jchbPassword, jchbUsername;
// End of variables declaration
public static void main(String[] args) {
AccountsManagement p = new AccountsManagement();
p.setVisible(true);
}
}
//===================******DatabaseConnect****========================//
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.*;
import java.sql.Statement;
public class DatabaseConnect {
private Connection con;
private ResultSet rs;
private PreparedStatement LoginSt, addUserSt, editUsernameSt, editPassSt, deleteUserSt;
public DatabaseConnect() {
connect();
}
private void connect() {
System.out.println("inside the connect method of database connect");
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:db1");
LoginSt = con.prepareStatement("select user, pass from Table1 where user = ? and pass = ?");
addUserSt = con.prepareStatement("insert into Table1 (user,pass) values(?,?)");
editUsernameSt = con.prepareStatement("update Table1 set user = ? where user = ?");
editPassSt = con.prepareStatement("update Table1 set pass = ? where user = ?");
deleteUserSt = con.prepareStatement("delete from Table1 where user = ?");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public int login(String name, String pass) {
int count = 0;
try {
LoginSt.setString(1, name);
LoginSt.setString(2, pass);
rs = LoginSt.executeQuery();
count = 0;
while (rs.next())
count++;
} catch (Exception e) {
System.out.print(e.getMessage());
} finally {
return count; }
}
public void addUser(String user, String pass) {
try {
addUserSt.setString(1, user);
addUserSt.setString(2, pass);
int x = addUserSt.executeUpdate();
}
catch (Exception ex) {
System.out.println("add user");
// JOptionPane.showMessageDialog(null,"age and phone must be in number format or too long");
}
}
public int editUsername(String username, String currentUsername) {
int x = 0,count = 0;
try {
editUsernameSt.setString(1, username);
editUsernameSt.setString(2, currentUsername);
x = editUsernameSt.executeUpdate();
count = 0;
while (rs.next())
count++;
} catch (Exception e) {
System.out.println("edit username");
System.out.println(e.getMessage());
} finally {
return x;
}
}
public int editPassword(String password, String currentUsername) {
int x = 0;
try {
editPassSt.setString(1, password);
editPassSt.setString(2, currentUsername);
x = editPassSt.executeUpdate();
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
return x;
}
}
public String[][] showAccounts() {
rs = null;
int x = 0;
String data[][] = null;
try {
Statement st = con.createStatement();
rs = st.executeQuery("select count(*) from Table1");
rs.next();
x = rs.getInt(1);
rs = st.executeQuery("select user, pass from Table1");
data = new String[x][2];
int i = 0;
while (rs.next()) {
data[i][0] = rs.getString(1);
data[i][1] = rs.getString(2);
i++;
}
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
return data; } }
public int deleteAccount(String user) {
int x = 0;
try {
this.deleteUserSt.setString(1, user);
x = deleteUserSt.executeUpdate();
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
return x;
}
}
public void close() {
try {
this.addUserSt.close();
this.deleteUserSt.close();
this.editPassSt.close();
this.editUsernameSt.close();
this.LoginSt.close();
this.rs.close();
this.con.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
void logoff() {
Login.main(null);
}
}