还是老规矩 ,先上图, 得清晰的认识到自己写到哪了, 还差多少
我们看图 出了挂失ReportLose和信息注册Register 我们不要进行信息验证
其他在途中都必须进行
但我为什么要综合成一个呢, 因为懒, 觉得写6个一样的粘贴都感觉很狗
但既然使用一个 , 我们就需要建立变量 , 将我们在菜单选择的功能 记录
然后在login类中 分开处理
同时 在 编写时需要注意 用户名密码不能为为空,不能为中文
虽然现在还是不说 怎么写验证类 。但先将思路说一下
界面很无聊
package contentcl;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.*;
public class Login extends JFrame implements ActionListener{
JButton jb1, jb2, jb3; //按钮
JPanel jp1,jp2,jp3, jp4; //面板
JTextField jtf; //文本框
JLabel jlb1, jlb2, jlb3; //标签
JPasswordField jpf; //密码框
String name = "123"; //账号密码
String pwd = "123";
String order;
public Login(String order) {
this.order = order;
// 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(" 密 码");
jtf = new JTextField(10); //创建文本框和密码框
jpf = new JPasswordField(10);
//加入面板中
jp1.add(jlb1);
jp1.add(jtf);
jp2.add(jlb2);
jp2.add(jpf);
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 {
login();
} catch (HeadlessException | IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else if(e.getActionCommand()=="重置")
{
clear();
}
}
//清空账号和密码框
private void clear() {
// TODO Auto-generated method stub
jtf.setText(""); //设置为空
jpf.setText("");
}
//验证登录信息,并做处理
public void login() throws HeadlessException, IOException
{
//判断账户名和密码是否包含中文
if (new Check().checkcountname(jtf.getText())||new Check().checkcountname(jpf.getText()))
{
JOptionPane.showMessageDialog(null, "用户名或密码存在中文,不合法!","消息提示",JOptionPane.WARNING_MESSAGE);
}
else if(jtf.getText().isEmpty()&&jpf.getText().isEmpty())
{
JOptionPane.showMessageDialog(null, "账号密码为空,请输入!","消息提示",JOptionPane.WARNING_MESSAGE);
}
else if (jtf.getText().isEmpty())
{
JOptionPane.showMessageDialog(null, "账号为空,请输入!","消息提示",JOptionPane.WARNING_MESSAGE);
}
else if (jpf.getText().isEmpty())
{
JOptionPane.showMessageDialog(null, "密码为空,请输入!","消息提示",JOptionPane.WARNING_MESSAGE);
}
else if (new Check().check1(jtf.getText(),jpf.getText()))
{
JOptionPane.showMessageDialog(null,"登录成功!","提示消息",JOptionPane.WARNING_MESSAGE);
//dispose(); //使文原窗体消失
if (order.equals("查询"))
{
new Inquiry(jtf.getText()); //跳转到登录个人信息选项界面
dispose();
}
if (order.equals("存款"))
{
new SaveMoney(jtf.getText());
dispose();
}
if (order.equals("取款"))
{
new DrawMoney(jtf.getText());
dispose();
}
if (order.equals("改密"))
{
new Modify(jtf.getText());
dispose();
}
if (order.equals("转账"))
{
new Transfer(jtf.getText());
dispose();
}
}
else
{
JOptionPane.showMessageDialog(null, "账号密码错误请重新输入!","消息提示",JOptionPane.ERROR_MESSAGE);
clear(); //调用清除函数
}
}
}
为什么先说查询类, 因为好做啊, 增删改查
当然查最好做, 当初写txt时候 就在思考 怎么改 最后还是解决了
但是个人信息毕竟是私人的, 所以我们 将部分信息用*代替后再显示
感觉注释写的挺清楚的
package contentcl;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.*;
/**
* 此类时对用户信息查询的编写, 我们将查询出用户的姓名身份证号和余额
* @author contentcl
* @Date 2017年12月27日 下午8:54:17
*
*/
public class Inquiry extends JFrame implements ActionListener{
JLabel jlb1, jlb2, jlb3; //标签
JTextField jtf1,jtf2,jtf3; //文本框
JPasswordField jpf; //密码框
JPanel jp1,jp2,jp3; //面板
public Inquiry(String countname) throws IOException {
// TODO Auto-generated constructor stub
//标签信息
jlb1 = new JLabel(" 姓名");
jlb2 = new JLabel("身份证号");
jlb3 = new JLabel(" 余额");
jtf1 = new JTextField(13);
jtf2 = new JTextField(13);
jtf3 = new JTextField(13);
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp1.add(jlb1);
jp1.add(jtf1);
jp2.add(jlb2);
jp2.add(jtf2);
jp3.add(jlb3);
jp3.add(jtf3);
//设置布局
this.setTitle("查询");
this.setLayout(null); //采用空布局
jp1.setBounds(-10, 40, 300 ,50); //-别问我为什么-10 因为 界面好看一点啊
jp2.setBounds(-10, 110, 300 ,50);
jp3.setBounds(-10, 180, 300 ,50);
//将JPane加入JFrame中
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.setSize(300, 300); //设置窗体大小
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(message[4]);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
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