老规矩上图
其实到这只剩2个功能了
改密和转账
改密操作 和前面的存钱取钱啊, 都一样啊 只是更改的内容变了。
这个就不多说了 ,直接上代码
重要的是, 转账操作
package contentcl;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
* 实现改密操作
* @author contentcl
* @Date 2017年12月27日 上午9:53:18
*
*/
public class Modify extends JFrame implements ActionListener{
JButton jb1, jb2, jb3; //按钮
JPanel jp1,jp2,jp3, jp4; //面板
JPasswordField jtf1,jtf2; //文本框
JLabel jlb1, jlb2, jlb3; //标签
String name = "123"; //账号密码
String pwd = "123";
String countname;
public Modify(String countname) {
this.countname = countname;
// TODO Auto-generated constructor stub
jb1 = new JButton("确定");
jb2 = new JButton("重置");
//设置按钮监听
jb1.addActionListener(this);
jb2.addActionListener(this);
jp1 = new JPanel(); //创建面板
jp2 = new JPanel();
jp3 = new JPanel();
jlb1 = new JLabel(" 新密码"); //添加标签
jlb2 = new JLabel("重复密码");
jtf1 = new JPasswordField(10); //创建文本框
jtf2 = new JPasswordField(10);
//加入面板中
jp1.add(jlb1);
jp1.add(jtf1);
jp2.add(jlb2);
jp2.add(jtf2);
jp3.add(jb1);
jp3.add(jb2);
//将JPane加入JFrame中
this.add(jp1);
this.add(jp2);
this.add(jp3);
//设置布局
this.setTitle("用户登录");
this.setLayout(new GridLayout(3,1)); //利用网格布局
this.setSize(300, 200); //设置窗体大小
this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); //设置仅关闭当前窗口
this.setVisible(true); //设置可见
this.setResizable(false); //设置不可拉伸大小
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand()=="确定")
{
try {
modify(); //进行信息核对
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else if (e.getActionCommand()=="重置")
{
clear(); //清楚信息
}
}
private void modify() throws IOException {
// TODO Auto-generated method stub
if (jtf1.getText().isEmpty()||jtf2.getText().isEmpty()) //判断信息是否为空
{
JOptionPane.showMessageDialog(null, "信息未填写完成!","消息提示",JOptionPane.WARNING_MESSAGE);
}
else if (jtf1.getText().equals(jtf2.getText()))
{
new UserMessage().updatepwd(countname, jtf1.getText()); //调用UserMessage的updatepwd函数更新密码
JOptionPane.showMessageDialog(null, "修改成功!","消息提示",JOptionPane.WARNING_MESSAGE);
dispose();
}
else
{
JOptionPane.showMessageDialog(null, "2次密码不一致,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
clear();
}
}
//清空密码框
private void clear()
{
// TODO Auto-generated method stub
jtf1.setText(""); //设置为空
jtf2.setText("");
}
}
转账操作的整体流程是
转账操作分为2个类
一个是Transfer 负责界面的书写 包括输入对方账户, 和转账金额 (当然在此有验证对方账户是否存在的功能)
另外一个是TransferToOthers 是我们确认对方信息 ,我们从文件读出 对方信息(核心用*注释), 然后确定才进行转账操作
先给出 Transfer, 判断用户是否存在和金额是否合法
package contentcl;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
* 本类实现对转账的操作, 注意金额的处理
* @author contentcl
* @Date 2017年12月25日 下午8:00:05
*
*/
public class Transfer extends JFrame implements ActionListener{
String countname;
JButton jb1, jb2, jb3; //按钮
JLabel jlb1, jlb2, jlb3; //标签
JTextArea jta1,jta2; //文本框
JTextField jtf1;
JPanel jp1;
public static boolean flag=true;
public Transfer(String countname) {
this.countname = countname;
// TODO Auto-generated constructor stub
jb1 = new JButton("确定");
jb2 = new JButton("重置");
//设置按钮监听
jb1.addActionListener(this);
jb2.addActionListener(this);
jlb1 = new JLabel("请输入存入金额:"); //添加标签
jlb2 = new JLabel("对方账号");
//创建文本框
jta1 = new JTextArea(); //转出金额
jtf1 = new JTextField(13);
//对方账户加入面板
jp1 = new JPanel();
jp1.add(jlb2);
jp1.add(jtf1);
//设置布局
this.setTitle("转账");
this.setLayout(null);
this.setSize(300, 300);
//创建对方账户的标签
jp1.setBounds(20, 20, 210, 60);
//存入标签和文本框
jlb1.setBounds(20, 80, 200, 20);
jta1.setBounds(20, 110, 250, 50);
jta1.setFont(new java.awt.Font("Dialog", 0, 15));
//确定和重置按钮
jb1.setBounds(60, 180, 62, 28);
jb2.setBounds(160, 180, 62, 28);
this.add(jp1);
this.add(jlb1);
this.add(jta1);
this.add(jb1);
this.add(jb2);
this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); //设置仅关闭当前窗口
this.setVisible(true); //设置可见
this.setResizable(false); //设置不可拉伸大小
}
//清空账号和密码框
private void clear()
{
// TODO Auto-generated method stub
jtf1.setText("");
jta1.setText(""); //设置为空
jta2.setText("");
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand()=="确定")
{
try {
transfer();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else if (e.getActionCommand()=="重置")
{
clear();
}
}
private void transfer() throws IOException {
// TODO Auto-generated method stub
if (jta1.getText().isEmpty())
{
JOptionPane.showMessageDialog(null, "金额为空,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
}
else if (jtf1.getText().isEmpty())
{
JOptionPane.showMessageDialog(null, "转入账号,请重新输入!","消息提示",JOptionPane.WARNING_MESSAGE);
}
else if(new Check().checkmoney(jta1.getText())) //验证金额是否合法
{
if(new Check().check2(jtf1.getText())) //验证账户是否存在
{
new TransferToOthers(countname,jtf1.getText(),jta1.getText()); //将本人账户名 对方账户名和金额传递过去
clear();
}
else
{
JOptionPane.showMessageDialog(null, "账户不存在","消息提示",JOptionPane.WARNING_MESSAGE);
clear();
}
}
else
{
JOptionPane.showMessageDialog(null, "金额不合法","消息提示",JOptionPane.WARNING_MESSAGE);
clear();
}
}
}
下面是TransferToOthers 确认对方信息 并在此之上加入了 弹框提示余额的功能
在确认对方信息时 包含以下方面
1. 对方姓名
2. 身份证号
3. 对方账号
确认 是同意转账, 否则 退出
代码:
package contentcl;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class TransferToOthers extends JFrame implements ActionListener{
JButton jb1, jb2, jb3; //按钮
JLabel jlb1, jlb2, jlb3,jlb4; //标签
JTextField jtf1,jtf2,jtf3; //文本框
JPasswordField jpf; //密码框
JPanel jp1,jp2,jp3,jp4; //面板
String wantsave,countname,mycountname;
//private boolean flag;
public TransferToOthers(String mycountname, String countname, String wantsave) throws IOException {
// TODO Auto-generated constructor stub
this.wantsave = wantsave;
this.countname = countname;
this.mycountname = mycountname;
jb1 = new JButton("确定");
jb2 = new JButton("取消");
//设置按钮监听
jb1.addActionListener(this);
jb2.addActionListener(this);
//标签信息
jlb1 = new JLabel("对方姓名");
jlb2 = new JLabel("身份证号");
jlb3 = new JLabel(" 账号");
jlb4 = new JLabel("请确认对方账户信息");
jlb4.setFont(new java.awt.Font("Dialog", 1, 15));
jtf1 = new JTextField(13);
jtf2 = new JTextField(13);
jtf3 = new JTextField(13);
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp4 = new JPanel();
jp1.add(jlb1);
jp1.add(jtf1);
jp2.add(jlb2);
jp2.add(jtf2);
jp3.add(jlb3);
jp3.add(jtf3);
jp4.add(jb1);
jp4.add(jb2);
//设置布局
this.setTitle("确认信息");
this.setLayout(null);
jlb4.setBounds(65, 20, 300 ,50);
jp1.setBounds(-10, 80, 300 ,50);
jp2.setBounds(-10, 150, 300 ,50);
jp3.setBounds(-10, 220, 300 ,50);
jp4.setBounds(-10, 290, 300 ,50);
//将JPane加入JFrame中
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.add(jp4);
this.add(jlb4);
this.setSize(300, 400); //设置窗体大小
this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); //设置仅关闭当前窗口
this.setVisible(true); //设置可见
this.setResizable(false); //设置不可拉伸大小
String []message = new UserMessage().read(countname);
//将姓名的第一个字变为*
message[0] ="*"+message[0].substring(1,message[0].length());
//将身份证号第6到12位变成*
message[1] =message[1].substring(0,6)+"*******"+message[1].substring(13,message[1].length());
jtf1.setText(message[0]);
jtf2.setText(message[1]);
jtf3.setText(countname);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand()=="确定")
{
String nowmoney="";
try {
nowmoney = new UserMessage().updatemoney(mycountname,-Integer.parseInt(wantsave));
} catch (NumberFormatException e2) {
e2.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
if (!nowmoney.equals("负数"))
{
//jta2.setText("您的余额为:\n "+nowmoney);
//jta1.setText("");
//对方账户存钱
try {
nowmoney = new UserMessage().updatemoney(countname,Integer.parseInt(wantsave));
} catch (NumberFormatException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
if (!nowmoney.equals("负数"))
{
JOptionPane.showMessageDialog(null, "存入成功,您的余额为:"+nowmoney,"消息提示",JOptionPane.PLAIN_MESSAGE);
dispose();
}
}
else
{
JOptionPane.showMessageDialog(null, "余额不足请重新输入:","消息提示",JOptionPane.WARNING_MESSAGE);
dispose();
}
}
else if (e.getActionCommand()=="取消")
{
dispose();
}
}
}
项目所有代码 到这就完成了 , 有些功能写的不好,还希望提出你们建议
如果有想看 其他篇目 或者完整代码的 下面是链接
JAVA小项目-银行管理系统(图形化界面)1-菜单
http://blog.csdn.net/changjiale110/article/details/78880024
JAVA小项目-银行管理系统(图形化界面)2-开户与挂失
http://blog.csdn.net/changjiale110/article/details/78896168
JAVA小项目-银行管理系统(图形化界面)3-登录与查询
http://blog.csdn.net/changjiale110/article/details/78916391
JAVA小项目-银行管理系统(图形化界面)4-验证
http://blog.csdn.net/changjiale110/article/details/78916497
JAVA小项目-银行管理系统(图形化界面)5-用户信息读写
http://blog.csdn.net/changjiale110/article/details/78926473
JAVA小项目-银行管理系统(图形化界面)6-存款与取款
http://blog.csdn.net/changjiale110/article/details/78926600
JAVA小项目-银行管理系统(图形化界面)7-改密与转账
http://blog.csdn.net/changjiale110/article/details/78955018
整体项目演示+源码包
http://blog.csdn.net/changjiale110/article/details/78955353