Java课程设计之银行管理系统(实现GUI可视化+IO流储存数据)

  本人学校在大二时有Java课程设计,本打算在网上找一个简单的银行管理系统借鉴一下,后来得知老师要求要实现可视化,在网上多次查找没有理想的可视化银行管理系统,无奈花费一星期自学了GUI方面的代码,课上老师也没有教过。经过一个多星期的奋战,解决了很多问题,最终完成此系统。闲来无事就想把代码分享出来,供学弟学妹们借鉴,如果觉得有帮助,希望可以点赞,如果经济富裕可以打赏,感激不尽。

 

 

(图片为部分运行结果) 

  代码初期想分为多个类,后来发现跳转界面时会出现很多问题,就把所有可视化代码放在一个类中,数据类单独写出来,应该还是比较精简易懂。其中可视化部分纯手工打造,数据类有所借鉴。运行代码之前需要在eclipse上下载swing插件。

  此银行管理系统分为人工服务和ATM服务,功能划分可能不太合理,不过功能应该是很齐全。人工服务可以创建银行卡和登录银行卡。ATM服务可以登录和修改密码。具体功能包括取钱、存钱、查询操作记录。查询操作记录是根据本机时间生成记录。创建银行卡会生成txt文件,信息保存在txt文件中,如果正常使用肯定是不安全的,等以后再完善。

 首先是用户信息类

Account.java

package data;
//import com.sun.deploy.util.SyncFileAccess;
import com.sun.org.apache.regexp.internal.RE;


import GUI.demo1;

import javax.swing.*;
import  java.io.*;
import java.text.SimpleDateFormat;
import  java.util.*;

public class Account {
	public int money;
    public String id;//账号名
    public String Name;//姓名
    public String PhoneNumber;//手机号
    public String IdCard;//身份证
    public String password;
    Date now=new Date();
    Date currentTime;
    SimpleDateFormat formatter;
    Reader fr;
    ;
    public Account(String id, String password, String money) {//构造方法
        this.id = id;
        this.password = password;
        this.money=Integer.parseInt(money);
    }
 
 
 
 
 
 
 
    public void outMoney (int money)throws Exception {//抛出异常,由相关的界面类弹窗处理异常,下面几个方法同理
        //如在取钱界面取钱,则会调用此函数,进行try/catch处理,获得这个函数的异常,弹窗说明异常
        if (money > this.money) {
            throw new Exception("余额不足");
        }
        if(money<0)
        {
            throw new Exception("不能取出负数");
        }
        formatter = new SimpleDateFormat("yy-MM-dd HH:mm:ss");//时间格式
        currentTime = new Date();//当前时间
        String dateString = formatter.format(currentTime);//处理当前时间格式
        Writer fw = new FileWriter(demo1.file);
        fw.write(demo1.recordString.append(dateString + "\t" + demo1.currentAccount.id + "\t取出" + money + "元\r\n").toString());//将这次的取钱行为添加到记录文件中
        fw.flush();//写进文件
        fw.close();
        this.money -= money;
        demo1.usersListUpdate();//更新用户文档(信息)
    }
 
    public void inMoney(int money)throws Exception
    {
        try {
            Writer fw = new FileWriter(demo1.file);
           // System.out.println(Test.file);
            formatter = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
            currentTime=new Date();
            String dateString=formatter.format(currentTime);
            fw.write(demo1.recordString.append(dateString+"\t"+demo1.currentAccount.id+"\t存入" + money + "元\r\n").toString());
            fw.flush();//写进文件
            fw.close();
 
            this.money+=money;
 
            demo1.usersListUpdate();//更新当前用户信息
 
        }
        catch (Exception e1)
        {
            throw new Exception("写入记录失败");
        }
 
    }
 

 
    public void ChangePassword(String newPassword)throws Exception
    {
     if(newPassword.equals(this.password))
     {
         throw new Exception("原密码和新密码不能一样");
     }
 
     else
     {
         if(newPassword.equals(""))
         {
             throw new Exception("密码不能为空");
         }
 
     }
     password=newPassword;
        demo1.usersListUpdate();
 
 
    }

}

然后就是最主要的可视化部分代码,可能有些长,但是都有注释,各个功能模块都有分开写,如果有看不懂可以私聊我.

demo1.java

package GUI;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractButton;
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.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import data.Account;

public class demo1  {
	 public static List<Account> usersList;
	    public static Account currentAccount;//登录的用户
	    public static File file;//当前用户的记录文件
	    public static StringBuilder recordString=new StringBuilder();//登录后读取文本中的记录,然后和recordString拼接
	    public static File usersFile;
	    public static StringBuilder usersString=new StringBuilder();
	    Boolean regirsterable=true;//控制是否能注册的变量
	 
	     static Reader fw;

		
	public static void main(String[] args)throws Exception {
		
		
		usersList = new ArrayList<Account>();
		 
        /**********************用户文本**********************/
        File users = new File("users.txt");
 
        if (!users.exists()) {
            try {
                users.createNewFile();
                Writer fw = new FileWriter("users.txt");
                fw.write("6000  12345  8888");
                fw.flush();
                fw.close();
            } catch (Exception e1) {
                JOptionPane.showMessageDialog(null, "创建用户文档失败");
            }
 
        }
        usersFile = users;//创建用户文档,存储用户账户,密码,余额信息;
        usersListRead();
        usersListUpdate();
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(() -> zhujiemian());
	}
	  public static void usersListRead()
	    {
	        /**********************按照用户文档读取用户列表并创建所有用户**********************/
	        /**********************并写入list**********************/
	        try {
	            fw = new FileReader("users.txt");//字符流
	        } catch (Exception e) {
	            Sys
  • 11
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值