今天周末,不想复习就把之前写过的银行管理系统给放上来吧
数据库连接以及实例不多讲啦,我之前有写过去前面翻一下就有啦,我先把框架po出来
一共是做了三个部分,注册,登录验证以及主界面,我这一部分打算把这三个框架展示一下,这三个界面都是java搭建的,先是注册界面
public class registerframe extends JFrame{
private JTextField username;
private JPasswordField password,passwordagain;
private JRadioButton sexfemale,sexmale;
private JPanel sex,birth,fav;
private JTextField year;
private JComboBox month,day;
private JCheckBox f1,f2,f3;
private JButton register,cancel;
private JTextArea remmond;
private JScrollPane scroll;
public registerframe() {
super();
this.setSize(450,400);
this.setTitle("Login");
this.setLocationRelativeTo(getOwner());
Container contain=getContentPane();
contain.setLayout(new BoxLayout(contain,BoxLayout.Y_AXIS));
JPanel cont=new JPanel(new GridLayout(6,2));
cont.add(new JLabel("用户名"));
username=new JTextField(10);
cont.add(username);
cont.add(new JLabel("密码"));
password=new JPasswordField(10);
cont.add(password);
cont.add(new JLabel("再输一次密码"));
passwordagain=new JPasswordField(10);
cont.add(passwordagain);
cont.add(new JLabel("性别"));
sexmale=new JRadioButton("男",true);
sexfemale=new JRadioButton("女");
ButtonGroup bg=new ButtonGroup();
bg.add(sexmale);
bg.add(sexfemale);
sex=new JPanel(new GridLayout(1,2));
sex.add(sexmale);
sex.add(sexfemale);
cont.add(sex);
cont.add(new JLabel("出生日期"));
year=new JTextField(4);
month=new JComboBox();
int i;
for(i=1;i<=12;i++)
month.addItem(i);
day=new JComboBox();
for(i=1;i<=31;i++)
day.addItem(i);
birth=new JPanel();
birth.add(year);
birth.add(new JLabel("-"));
birth.add(month);
birth.add(new JLabel("-"));
birth.add(day);
cont.add(birth);
cont.add(new JLabel("爱好"));
f1=new JCheckBox("运动");
f2=new JCheckBox("看电影");
f3=new JCheckBox("听音乐");
fav=new JPanel();
fav.add(f1);
fav.add(f2);
fav.add(f3);
cont.add(fav);
JPanel cont1=new JPanel(new GridLayout(1,2));
cont1.add(new JLabel("简历"));
remmond=new JTextArea(5,10);
scroll=new JScrollPane (remmond);
cont1.add(scroll);
JPanel cont2=new JPanel(new GridLayout(1,2));
register=new JButton("注册");
cancel=new JButton("取消");
cont2.add(register);
cont2.add(cancel);
contain.add(cont);
contain.add(cont1);
contain.add(cont2);
register.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
String pass=new String(password.getPassword());
String passagain=new String(passwordagain.getPassword());
if(passagain.equals(pass)) {
String s;
s="用户名:"+username.getText()+"\n";
s+="密码:"+pass+"\n";
s+="性别:"+(sexmale.isSelected()?sexmale.getText():sexfemale.getText())+"\n";
s+="出生日期:"+year.getText()+"-"+month.getSelectedItem()+"-"+day.getSelectedItem()+"\n";
s+="爱好:"+(f1.isSelected()?f1.getText():"")+(f2.isSelected()?f2.getText():"")+(f3.isSelected()?f3.getText() :"")+"\n";
s+="简历:"+remmond.getText();
JOptionPane.showMessageDialog(null, s);
}
else {
JOptionPane.showMessageDialog(null, "密码不一致!");
}
}
});
}
public static void main(String[] args) {
registerframe w=new registerframe();
w.setVisible(true);
}
}
上面是填写注册内容,在注册的按键上有一个监听器,是为了判断输入的密码与再一次输入的密码是否一致设置的
其实是可以连接数据库把内容传进去然后登录的时候直接判断用户名和密码是否一致的,但是当时没有那么多时间做这个,因为做查询的时候遇到了一些问题在修改,所以这一部分就只是先做了一个模板,在登录判断的时候还是固定的用户名以及密码,接下来我就把登录判断的内容写一下
public class loginframe extends JFrame {
private JTextField username;
private JPasswordField password;
private JButton login,register;
public loginframe() {
super();
this.setSize(300, 200);
this.setTitle("Login");
this.setLocationRelativeTo(getOwner());
Container cont=getContentPane();
cont.setLayout(new GridLayout(3,2));
cont.add(new JLabel ("username"));
username=new JTextField(10);
cont.add(username);
cont.add(new JLabel("password"));
password=new JPasswordField(10);
cont.add(password);
login=new JButton(new ImageIcon("enter,gif"));
register=new JButton(new ImageIcon("register.gif"));
cont.add(login);
cont.add(register);
login.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
String pass=new String(password.getPassword());
if(username.getText().equals("ding")&&
pass.equals("123456")) {
HelloWorld hello=new HelloWorld();
hello.setVisible(true);
dispose();
}
else{
JOptionPane.showMessageDialog(null, "你输入的密码没有通过验证");
}
}
});
}
public static void main(String[] args) {
loginframe w=new loginframe();
w.setVisible(true);
}
}
如果用户名以及密码正确的话就会直接登录到银行系统的显示界面了,这一部分其实看代码也差不多可以看懂的,接下来就把主界面显示的代码写一下
public class HelloWorld extends JFrame {
private JMenuBar menubar;
private JMenu menu1;
private JMenuItem m11;
private JMenuItem m12;
private JMenu menu2;
private JMenuItem m21;
private JMenuItem m22;
private JMenuItem m23;
private JMenuItem m24;
private JButton b1;
private JButton b2;
private JToolBar tool;
public HelloWorld() {
super();
this.setSize(400,300);
this.setTitle("HelloWorld");
this.setLocationRelativeTo(getOwner());
menu1=new JMenu("系统");
m11= new JMenuItem("用户管理");
m12= new JMenuItem();
m12.setText("退出");
menu1.add(m11);
menu1.add(m12);
menu2=new JMenu("数据操作");
m21= new JMenuItem("查询");
m22= new JMenuItem("添加");
m23= new JMenuItem("修改");
m24= new JMenuItem("删除");
menu2.add(m21);
menu2.add(m22);
menu2.add(m23);
menu2.add(m24);
menubar=new JMenuBar();
menubar.add(menu1);
menubar.add(menu2);
setJMenuBar(menubar);
b1=new JButton (new ImageIcon("ico\\UPWATER.GIF"));
b1.setToolTipText("查询");
b1.setFocusable(false);
b1.setHorizontalTextPosition(SwingConstants.CENTER);
b1.setVerticalTextPosition(SwingConstants.BOTTOM);
b2=new JButton();
b2.setIcon(new ImageIcon("icon\\WRITER.GIF"));
b2.setToolTipText("添加");
b2.setFocusable(false);
b2.setHorizontalTextPosition(SwingConstants.CENTER);
b2.setVerticalTextPosition(SwingConstants.BOTTOM);
tool=new JToolBar();
tool.add(b1);
tool.add(b2);
tool.setRollover(true);
getContentPane().add(tool, BorderLayout.PAGE_START);
}
public static void main(String[] args) {
HelloWorld w=new HelloWorld();
w.setVisible(true);
}
}
然后是建立显示表格的内容,为了后续添加行列信息做准备
public class MyTableModel extends DefaultTableModel{
private ArrayList <Integer> editedIndex=new ArrayList <Integer>();
public MyTableModel() {
super();
}
public boolean isCellEditable(int row,int column) {
if(column==0) {
return false;
}else
return true;
}
public void setValueAt(Object aValue,int row,int column) {
super.setValueAt(aValue, row, column);
int i,count=editedIndex.size();
if(count==0)
editedIndex.add(row);
else {
for(i=0;i<count;i++) {
if (editedIndex.get(i).intValue()>row) {
editedIndex.add(i+1, row);
break;
}
}
if(i>=count)
editedIndex.add(row);
}
}
public ArrayList<Integer> getEditedIndex(){
return editedIndex;
}
}
添加信息这一部分的代码是单独写出来的,查询以及删除等代码是写在选择菜单直接写在监听器代码那里的,先把添加信息这一部分的代码写一下
public class personadd extends JFrame{
private JTextField userid,username;
private JRadioButton sexfemale,sexmale;
private JPanel sex,birth;
private JTextField year,dept;
private JComboBox month,day,prof;
private JButton ok,cancel;
public personadd() {
super();
this.setSize(350,300);
this.setTitle("Login");
this.setLocationRelativeTo(getOwner());
Container cont=getContentPane();
cont.setLayout(new GridLayout(7,2));
cont.add(new JLabel("员工号"));
userid=new JTextField(10);
cont.add(userid);
cont.add(new JLabel("姓名"));
username=new JTextField(10);
cont.add(username);
cont.add(new JLabel("性别"));
sexmale=new JRadioButton("男",true);
sexfemale=new JRadioButton("女");
ButtonGroup bg=new ButtonGroup();
bg.add(sexmale);
bg.add(sexfemale);
sex=new JPanel(new GridLayout(1,2));
sex.add(sexmale);
sex.add(sexfemale);
cont.add(sex);
cont.add(new JLabel("出生日期"));
year=new JTextField(4);
month=new JComboBox();
int i;
for(i=1;i<=12;i++)
month.addItem(i);
for(i=1;i<=31;i++)
day.addItem(i);
birth=new JPanel();
birth.add(year);
birth.add(new JLabel("-"));
birth.add(month);
birth.add(new JLabel("-"));
birth.add(day);
cont.add(birth);
cont.add(new JLabel("职称"));
prof=new JComboBox();
prof.addItem("初级");
prof.addItem("中级");
prof.addItem("高级");
cont.add(prof);
cont.add(new JLabel("部门"));
dept=new JTextField("部门");
dept=new JTextField(10);
cont.add(dept);
ok=new JButton("添加");
cancel=new JButton("取消");
cont.add(ok);
cont.add(cancel);
ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
db dbcon=new db();
try {
String sql="insert into person values(?,?,?,?,?,?)";
PreparedStatement prestate=dbcon.PreparedStatement(sql);
prestate.setString(1,userid.getText());
prestate.setString(2, username.getText());
prestate.setString(3, (sexmale.isSelected()?sexmale.getText():sexfemale.getText()));
prestate.setString(4, year.getText()+"-"+month.getSelectedItem()+"-"+day.getSelectedItem());
prestate.setString(5, prof.getSelectedItem().toString());
prestate.executeQuery();
JOptionPane.showMessageDialog(null, "插入成功!");
dispose();
personselect psel=new personselect();
psel.setVisible(true);
}
catch(SQLException e) {
System.out.println(e.toString());
}
}
});
}
public static void main(String[] args) {
personadd w=new personadd();
w.setVisible(true);
}
}
这一部分其实挺简单的,就是输入信息,然后把所有的信息传递到数据库就结束了,接下来就是删除以及修改的代码
public class personselect extends JFrame{
private JTable table;
private MyTableModel tablemodel;
private JButton b1;
private JButton b2;
private JButton b3;
private JToolBar tool;
public personselect() {
this.setSize(600, 300);
this.setTitle("员工信息");
this.setLocationRelativeTo(getOwner());
tablemodel=getModel();
table=new JTable(tablemodel);
table.setPreferredScrollableViewportSize(new Dimension(500,200));
JScrollPane scroll=new JScrollPane(table);
getContentPane().add(scroll, BorderLayout.CENTER);
b1=new JButton(new ImageIcon("ico\\WRITER.GIF"));
b1.setToolTipText("添加");
b1.setFocusable(false);
b1.setHorizontalTextPosition(SwingConstants.CENTER);
b1.setVerticalTextPosition(SwingConstants.BOTTOM);
b2=new JButton();
b2.setIcon(new ImageIcon("ico\\UPDATE.GIF"));
b2.setToolTipText("修改");
b2.setFocusable(false);
b2.setHorizontalTextPosition(SwingConstants.CENTER);
b2.setVerticalTextPosition(SwingConstants.BOTTOM);
b3=new JButton(new ImageIcon("ico\\DELETE.GIF"));
b3.setToolTipText("删除");
b3.setFocusable(false);
b3.setHorizontalTextPosition(SwingConstants.CENTER);
b3.setVerticalTextPosition(SwingConstants.BOTTOM);
tool=new JToolBar();
tool.add(b1);
tool.add(b2);
tool.add(b3);
tool.setRollover(true);
getContentPane().add(tool, BorderLayout.NORTH);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
personadd padd=new personadd();
padd.setVisible(true);
dispose();
}
});
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int i,index=0,count;
db dbcon=new db();
if(table.getCellEditor()!=null) {
table.getCellEditor().stopCellEditing();
}
try {
String sql="update person set name=?,sex=?,birthday=?,professor=?,deptno=? where no=?";
PreparedStatement presta=dbcon.PreparedStatement(sql);
count=tablemodel.getEditedIndex().size();
if (count>0) {
for(i=0;i<=count;i++) {
index=tablemodel.getEditedIndex().get(i);
presta.setString(1, table.getValueAt(index, 1).toString());
presta.setString(2, table.getValueAt(index, 2).toString());
presta.setString(3, table.getValueAt(index, 3).toString());
presta.setString(4, table.getValueAt(index, 4).toString());
presta.setString(5, table.getValueAt(index, 5).toString());
presta.setString(6, table.getValueAt(index, 6).toString());
presta.addBatch();
}
presta.executeBatch();
}
}
catch(SQLException sqle) {
System.out.println(sqle.toString());
}
}
});
b3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
db dbcon=new db();
try {
if(table.getSelectedRows().length>0) {
int[] selRowIndexs=table.getSelectedRows();
java.sql.PreparedStatement presta=dbcon.PreparedStatement("delete from person where no=?");
for(int i=0;i<selRowIndexs.length;i++)
{
presta.setString(1, table.getValueAt(tablemodel.getEditedIndex().get(i),0).toString());
presta.addBatch();
}
presta.executeBatch();
tablemodel=getModel();
table.setModel(tablemodel);
}
}
catch(SQLException sqle) {
System.out.println(sqle.toString());
}
}
});
}
private MyTableModel getModel() {
MyTableModel tableModel=new MyTableModel();
db dbcon;
try {
dbcon=new db();
ResultSet rs=dbcon.executeQuery("select * from person");
ResultSetMetaData rsmd=rs.getMetaData();
int Column=rsmd.getColumnCount();
int i;
for(i=1;i<=Column;i++)
tableModel.addColumn(rsmd.getColumnName(i));
ArrayList<PersonEntity> v=new ArrayList<PersonEntity>();
while(rs.next()) {
PersonEntity person=new PersonEntity();
person.setNo(rs.getString("no"));
person.setName(rs.getString("name"));
person.setSex(rs.getString("sex"));
person.setBirthday(rs.getDate("birthday"));
person.setProfessor(rs.getString("professor"));
person.setDeptno(rs.getString("deptno"));
v.add(person);
}
rs.close();
for(i=0;i<v.size();i++) {
tableModel.addRow(new Object[] {v.get(i).getNo(),
v.get(i).getName(),v.get(i).getSex(),v.get(i).getBirthday(),
v.get(i).getProfessor(),v.get(i).getDeptno()});
}
dbcon.closeConn();
}
catch(SQLException sqle) {
System.out.println(sqle.toString());
}
catch(Exception e) {
System.out.println(e.getMessage());
}
return tableModel;
}
public static void main(String[] args) {
personselect w=new personselect();
w.setVisible(true);
}
}
一般有基本功的大概都能直接看明白,因为这一部分基本上就是数据库进行操作的内容,我记得以前有写过查询的代码,但是由于时间太久远了,我找不到那一部分的代码了,如果找到了的话我再一起写上来吧