//为预编译sql设置参数
pstmt.setString(i+1,param[i]);
}
}
//执行SQL语句
rs=pstmt.executeQuery();
}catch(SQLExceptione){
//处理SQLException异常
e.printStackTrace();
}
returnrs;
}
4.程序调试
程序开始如图4.1所示,由于是管理员对系统直接管理,因此不需要提供注册入口:
图4.1
管理员登录后如图4.2所示,可对系统内的用户增删改查。
图4.2
其中用户存取款如图4.3所示。
图4.3
普通用户登录后如图4.4所示。
图4.4
普通用户账单查询如图4.5所示。
图4.5
5.总结
此次课程设计让我更了解和熟悉了Java中的图形用户界面和它的编程方式。
在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大,例如学习到了一种新的简单的数据交换格式.json。
通过这次的课程设计,使我对所学知识能够融会贯通,又不断丰富了新知识。
另外这次课设中也遇到了很多不懂的地方,例如说文件的选择打开,不太了解JFileChooser的运用方法,不太了解json的语法和java中一些图形界面的布局等。
Java三天的课设虽然仓促,但却十分充实,不进认识到了自己在java中的不足,而且还学到了不少关于java中图形界面的编程方式。
6.附件
源程序
登陆界面Login.java
packagewfu.yuhan;
importjava.awt.event.*;
importjavax.swing.*;
classLoginextendsJFrame
{
publicstaticProFrameprog;
publicLogin()
{
//窗口
super("登陆");
this.setBounds(500,100,300,200);
this.setResizable(false);
this.setLayout(null);
this.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
});
//用户名
JLabellu=newJLabel("用户名:
");
finalJTextFieldtu=newJTextField();
lu.setBounds(20,30,55,25);
tu.setBounds(75,30,200,25);
this.add(lu);
this.add(tu);
//密码
JLabellp=newJLabel("密码:
");
finalJTextFieldtp=newJPasswordField();
lp.setBounds(20,60,55,25);
tp.setBounds(75,60,200,25);
this.add(lp);
this.add(tp);
//登陆按钮
finalJButtonsub=newJButton("登陆");
sub.setBounds(100,100,60,25);
this.add(sub);
sub.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
Object[][]userlist;
userlist=ProDao.findUser(0,tu.getText());
if(userlist.length==0)
{
JOptionPane.showMessageDialog(null,"此用户不存在!
");
return;
}
if(userlist[0][1].toString().equals(tp.getText()))
{
ProMain.log.setVisible(false);
if(tu.getText().equals("admin"))
prog=newProFrame();
else
newUserFrame(tu.getText());
}
else
{
JOptionPane.showMessageDialog(null,"密码错误!
");
}
}
});
tp.addKeyListener(newKeyAdapter()
{
publicvoidkeyPressed(KeyEvente)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
sub.doClick();
}
}
});
this.setVisible(true);
}
}
管理员主窗口ProFrame.java
packagewfu.yuhan;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.table.DefaultTableModel;
importwfu.util.DBUtil;
classProFrameextendsJFrame
{
publicJPanelpm=newJPanel();//主区域
privateJPanelpb=newJPanel();//按钮区域
publicProPan0p0=newProPan0();//功能区0用户查看(ProPan0.java)
publicProPan1p1=newProPan1();//功能区1用户增加(ProPan1.java)
privateJPanelp2=newProPan2();//功能区2用户存/取款
privateJPanelp3=newProPan3();//功能区3转账查询
privateJButtonb0=newJButton("0"),b1=newJButton("1"),b2=newJButton("2"),b3=newJButton("3");//跳转按钮
publicCardLayoutcard=newCardLayout(5,5);
publicProFrame()
{
//窗口
super("银行管理系统(admin)");
this.setResizable(false);
setBounds(500,100,480,580);
this.add(pm);
this.add(pb,BorderLayout.NORTH);
//主区域(pm)
pm.setLayout(card);
pm.add(p0,"p0");
pm.add(p1,"p1");
pm.add(p2,"p2");
pm.add(p3,"p3");
card.show(pm,"p0");
//按钮区域(pb)
pb.setLayout(newFlowLayout(FlowLayout.CENTER,0,0));
pb.add(b0);
pb.add(b1);
pb.add(b2);
pb.add(b3);
//跳转按钮(b0b1b2)
b0.setText("用户管理");
b0.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventarg0)
{
//p0=null;
//p0=newProPan0();
//pm.add(p0,"p0");
p0.updata();
card.show(pm,"p0");
//System.gc();//垃圾回收
}
});
b1.setText("账户增改");
b1.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventarg0)
{
card.show(pm,"p1");
}
});
b2.setText("用户存取款");
b2.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventarg0)
{
card.show(pm,"p2");
}
});
b3.setText("账单查询");
b3.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventarg0)
{
card.show(pm,"p3");
}
});
//关闭事件
this.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
});
//pack();
setVisible(true);
}
}
管理员查删用户功能ProPan0.java
packagewfu.yuhan;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyAdapter;
importjava.awt.event.KeyEvent;
importjavax.swing.JButton;
importjavax.swing.JComboBox;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTable;
importjavax.swing.JTextField;
importjavax.swing.plaf.ProgressBarUI;
importjavax.swing.table.DefaultTableModel;
importwfu.util.DBUtil;
publicclassProPan0extendsJPanel
{
String[]tabheadname={"卡号","密码","余额","电话","性别","身份证"};
Object[][]stulist=ProDao.findAllUser();
JTextFieldtsearch=newJTextField(25);
JComboBoxcsearch=newJComboBox(newString[]{"卡号","手机号","身份证号"});
JButtonbsearch=newJButton("查询");
JButtonbedit=newJButton("编辑");
JButtonbdelete=newJButton("删除");
finalDefaultTableModeltableModel;
finalJTablejTable;
publicProPan0()
{
tableModel=newDefaultTableModel(stulist,tabheadname);
jTable=newJTable(tableModel)
{
publicbooleanisCellEditable(introw,intcolumn)
{
returnfalse;
}//表格不允许被编辑
};
JScrollPanepj=newJScrollPane(jTable);
//查找按钮
bsearch.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventarg0)
{
Object[][]stulist=ProDao.findUser(csearch.getSelectedIndex(),tsearch.getText());
//System.out.println(stulist.length);
tableModel.setDataVector(stulist,tabheadname);
}
});
//编辑按钮
bedit.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventarg0)
{
if(jTable.getSelectedColumn()==-1)
{
return;
}
//System.out.println(jTable.getSelectedRow());
Stringstr=stulist[jTable.getSelectedRow()][0].toString();
Login.prog.p1.fun(str);
Login.prog.card.show(Login.prog.pm,"p1");
}
});
//删除按钮
bdelete.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventarg0)
{
int[]delt=jTable.getSelectedRows();
DBUtildb=newDBUtil();
db.getConnection();
for(inti=0;i{
//System.out.println(stulist[delt[i]][0].toString());
db.executeUpdate("deletefromuserwhereId="+stulist[delt[i]][0].toString(),null);
}
db.closeAll();
stulist=ProDao.findAllUser();
tableModel.setDataVector(stulist,tabheadname);
}
});
tsearch.addKeyListener(newKeyAdapter()
{
publicvoidkeyPressed(KeyEvente)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
bsearch.doClick();
}
}
});
tsearch.addKeyListener(newKeyAdapter()
{
publicvoidkeyTyped(KeyEvente)
{
charch=e.getKeyChar();
if(!
(ch>='0'&&ch<='9'))
{
e.consume();
}
}
});
this.add(csearch);
this.add(tsearch);
this.add(bsearch);
this.add(pj);
this.add(bedit);
this.add(bdelete);
}
publicvoidupdata()
{
Object[][]list=ProDao.findAllUser();
tableModel.setDataVector(list,tabheadname);
}
}
管理员增改用户功能ProPan1.java
packagewfu.yuhan;
importjava.awt.FlowLayout;
importjava.awt.GridLayout;
importjava.awt.event.Action