您的位置:首页 > 编程语言 > Java开发

JAVA小项目-银行管理系统(图形化界面)7-改密与转账

2018-01-02 19:40 399 查看
老规矩上图



其实到这只剩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类TransferToOthers类和在编写时 最初的思路 是想 当我们在TransferToOthers上确认或取消信息时 我们 返回给Transfer 一个true或false 然后在Transfer上 显示余额 , 但在用事件监听按钮是发现 getActionCommand()这个方法 只返回字符串 , 也就意味着 点不点按钮和 是否往后进行是不矛盾的

所以想法就终止了 因此我将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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: