java實現銀行管理系統



Bank類

package First;

import java.util.TreeSet;

//銀行類
public class Bank {
        private String Bankname = "坑對對銀行";                    //銀行名稱
        TreeSet<User> holder = null;                           //銀行存儲的信息
        private static Bank INSTANCE = new Bank();
        private Bank() {}                                      //私有化銀行類
        public static Bank getInstance() {
                // TODO Auto-generated method stub
                return INSTANCE;
        }
        //存款功能
        public void saveMoney(User user,double money) {
                //初始金額與存入金額相加
                double sum = user.getSum()+money;
                user.setSum(sum);
                System.out.print(money+"存款成功!!!"+",當前余額是:"+user.getSum());
                System.out.print("\n");
        }
        //取款功能
        public void drawMoney(User user,double money,String pw) {
                if(user.getPw().equals(pw)) {                                        //先判斷取款密碼
                        if(user.getSum()>=money) {                                        //判斷余額
                                user.setSum(user.getSum()-money);
                                System.out.print("取款成功");
                                System.out.print("\n");
                                System.out.print("當前余額為:"+"\t"+user.getSum());
                                System.out.print("\n");
                        }else {
                                System.out.print("抱歉余額不足!!!  當前余額:"+user.getSum());
                                System.out.print("\n");
                        }
                }
        }
        //查看余額以及信息
        public void looksum(User user) {
                 System.out.print("姓名:"+user.getName()+",賬號:"+user.getAccount()+",余額:"+user.getSum());
                 System.out.print("\n");
        }
        //歡迎語句
        public void welcom(User user) {
                if(user.getSexual().equals("男")) {
                        System.out.print(user.getName()+"  先生!!"+"  "+(this.Bankname)+"  歡迎您!!!");
                        System.out.print("\n");
                }else if(user.getSexual().equals("女")){
                        System.out.print(user.getName()+"  女士!!"+"  "+(this.Bankname)+"  歡迎您!!!");
                        System.out.print("\n");
                }
        }
        //再見語句
        public void GoodBye(User user) {
                if(user.getSexual().equals("男")) {
                        System.out.print(user.getName()+"  先生!!"+"  "+(this.Bankname)+"  祝您生活愉快!!!");
                        System.out.print("\n");
                }else if(user.getSexual().equals("女")){
                        System.out.print(user.getName()+"  女士!!"+"  "+(this.Bankname)+"  祝您生活愉快!!!");
                        System.out.print("\n");
                }
        }
        
}


Data:數據存儲類

package First;

import java.util.TreeSet;
//模擬一個數據庫
//銀行的數據庫
public class Data {
        TreeSet<User> holder = new TreeSet<User>(new MyComparator());                //用於存儲用戶信息的容器---自定義比較規則
        File file = File.getFile();                                                                                        //獲取一個文件類
        private static Data data = new Data();                                                    
        //單例模式--因為存儲數據的類唯一.所以不能隨意被實例化
        private Data() {}                                                                                                        //私有化構造方法
        public static Data getData() {                                                                           //提供返回該對象的靜態方法
                return data; 
        }
        //添加用戶
        public void addUser(User user) {
                holder.add(user);
                System.out.print("注冊成功!!");
                System.out.print("\n");
        }
        //刪除用戶
        public void removeUser(User user) {
                if(holder.contains(user)) {                                                                                //如果容器中包含所user對象,則移除對象
                        holder.remove(user);        
                }else {                                                                                                                        //如果不包含則打印語句
                        System.out.print("抱歉請檢查輸入的信息是否正確");
                        System.out.print("\n");
                }
        }
        //獲取容器
        public TreeSet<User> getHolder() {
                return holder;
        }
        //寫入容器
        public void setHolder(TreeSet<User> holder) {
                this.holder = holder;
        }
        
}


FIie:文件IO類

package First;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Iterator;
import java.util.TreeSet;

/*
* 文件類--負責向內存中初始化信息以及程序結束后向內存中存入信息
* */
public class File {
        TreeSet<User> holder = Data.getData().getHolder();                                //從Data數據庫中獲取容器
        //文件類只供使用不能被任意實際化
        public static File FILE;                                                                                //私有化一個File類
        private File() {};                        
        public static File getFile() {                                                                        //對外界提供獲取方法
                return FILE;
        }
        //保存到文件里
    public static void SaveToFile(TreeSet<User> list) {                                //將獲取到的容器存入到文件中----序列化
            ObjectOutputStream oo = null;
        try {
            oo = new ObjectOutputStream(new FileOutputStream(".\\src\\Test\\text1.txt"));                //獲取文件存儲地址
            oo.writeObject(list);                                                                                                                                //將容器寫入
        } catch (Exception ex) {
            ex.printStackTrace();
        }finally {
                try {
                        oo.close();                                                                                                                                                //將流關閉
                }catch(IOException e) {
                        e.printStackTrace();
                }
        }
    }
    //從文件里讀取
        public static TreeSet<User> ReadFromFile() {
                ObjectInputStream ois = null;
                TreeSet<User> list = null;
        try {
                ois = new ObjectInputStream(new FileInputStream(".\\src\\Test\\text1.txt"));//反序列化從文件中獲取容器加載到內存
                list = Data.getData().getHolder();                                                                                        //獲取容器
                list = (TreeSet<User>) ois.readObject();                                                                        //從流中獲取對象
            Iterator it = list.iterator();                                                                                                //迭代器
            System.out.print("當前用戶信息:");
            System.out.print("\n"); 
            System.out.print("\n"); 
            while(it.hasNext()) {                                                                                                                //迭代初始信息
                    User user = (User) it.next();
                    System.out.print("\t"+"姓名:"+user.getName()+"\t"+"賬號:"+user.getAccount()+"\t"+"密碼:"+user.getPassword()+"\t"+"余額:"+user.getSum()+"\t");
                    System.out.print("\n");
                    System.out.print("\n");
            }
                
        } catch (Exception ex) {
            ex.printStackTrace();
        }finally {
                try {
                        ois.close();                                                                                                                        //將流關閉
                }catch(IOException e){
                        e.printStackTrace();
                }
        }
        return list;
    }
}


MyComparator:自定義比較器類

package First;

import java.io.Serializable;
import java.util.Comparator;

//自定義比較器
//想要存入集合必須實現序列化和反序列化
public class MyComparator implements Comparator,Serializable{

        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        @Override
        public int compare(Object arg0, Object arg1) {
                User user1 = (User)arg0;                                                                //重寫比較方法   --- 強轉成User類型
                User user2 = (User)arg1;
                return user1.getAccount().compareTo(user2.getAccount());//比較兩個銀行賬戶
        }

}

Operate:系統核心

package First;

import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
//后台操作系統
//后台管理員
public class Operate {
        Scanner sc = new Scanner(System.in);                                                        //鍵盤錄入
        TreeSet<User> holder = Data.getData().getHolder();                                //從Data數據庫中獲取容器
        Bank bank = Bank.getInstance();                                                                   //獲取一個銀行類
        File file = File.getFile();                                                                                //獲取一個文件類
        //登錄菜單
        public void registerMenu(){
                System.out.print("****************************");
                System.out.print("\n");
                System.out.print("\n");
                System.out.print("    歡迎來到坑多多銀行登錄系統!!!\n");
                System.out.print("\n");
                System.out.print("****************************");
                System.out.print("\n");
                System.out.print("\n");
                holder = File.ReadFromFile();                                                                //從文件中獲取容器
                Data.getData().setHolder(holder);                                                    //把從文件中獲取容器存儲到數據庫中
                int str=1;                                                                                                           //從鍵盤獲取數字
                while(str!=0) {
                        System.out.print("****************************");
                        System.out.print("\n");
                        System.out.print(" 1:  登錄 ");
                        System.out.print("\n");
                        System.out.print(" 2:  注冊 ");
                        System.out.print("\n");
                        System.out.print(" 3:  忘記密碼");
                        System.out.print("\n");
                        System.out.print(" 4:  注銷用戶");
                        System.out.print("\n");
                        System.out.print(" 0:  退出");
                        System.out.print("\n");
                        System.out.print("****************************");
                        System.out.print("\n");
                        System.out.print("請輸入:");
                        str = sc.nextInt();
                        switch(str){                                                                                        //根據用戶輸入的值進行選擇
                                case 1:
                                        System.out.print("請輸入您的賬號:");   
                                        String account = sc.next();                                                 //從鍵盤中獲取錄入用戶名
                                        System.out.print("請輸入您的密碼:");           
                                        String pw = sc.next();                                                         //從鍵盤中錄入密碼
                                        User user = logon(holder,account,pw);
                                        if(user!=null) {                                                                //判斷是否登錄成功
                                                System.out.print("登錄成功!!!!歡迎使用");
                                                System.out.print("\n");
                                                System.out.print("正在跳轉到銀行操作界面.........");
                                                System.out.print("\n");
                                                this.BankMenu(user);                                  //如果登錄成功則將user對象傳入到銀行操作界面並跳轉
                                        }else {
                                                System.out.print("登錄失敗!!!請從新輸入");                //如果登錄失敗打印此語句
                                                System.out.print("\n");                
                                        }
                                        break;
                                case 2:
                                        this.logon();                                                                        //調用注冊方法
                                        break;
                                case 3:
                                        this.modify();                                                                   //調用修改方法
                                        break;
                                case 4:
                                        holder = logout(holder);                                                //調用刪除操作
                                        break;
                                case 0:
                                        File.SaveToFile(holder);                                               //退出系統式將信息保存到文件中
                                        System.out.print("再見!!!!");
                                        System.out.print("\n");
                                default:
                                        System.out.print("輸入錯誤!!!!");
                                        System.out.print("\n");
                        }
                }
        }
        //登錄方法
        public User logon(TreeSet<User> holder,String account,String pw) {
                Iterator<User> it = holder.iterator();                                          //獲取迭代器
                while(it.hasNext()) {
                        User user = it.next();
                        if(user.getAccount().equals(account)&&user.getPassword().equals(pw)){
                                System.out.print("登錄成功!!");
                                System.out.print("\n");
                                return user;
                        }
                }
                System.out.print("賬戶或密碼錯誤     登錄失敗!!");
                System.out.print("\n");
                return null;
        }
        //注冊方法體
        public void logon(){
                System.out.print("歡迎來到注冊界面!!!!");
                System.out.print("\n");
                String name;                                                                                                              //用戶名
                String account;                                                                                                           //銀行賬號
                String password;                                                                                                        //密碼
                String pw;                                                                                                                 //取款密碼
                double sum;                                                                                                         //賬戶金額
                String sexual;                                                                                                      //性別
                User user = new User();                                                                                                //先創建一個空參的user對象
                
                boolean  flag  = true;                                                          //語句的開關
                while(flag) {                                                                                                                //將注冊的信息依次輸入
                        switch(1) {
                        case 1:
                                System.out.print("請輸入姓名:");                                                                //依次從鍵盤中獲取對應的姓名----正則表達式
                                name = sc.next();
                                user.setName(name);                                                                                        //將名字寫入對象中
                        case 2:                                                                                                                        
                                System.out.print("請輸入賬號(9位數字):");
                                account = sc.next();                                                                                //從鍵盤中獲取賬號
                                String reges ="[0-9]{9}";                                                                        //正則表達式規則對賬號進行限制
                                if(!account.matches(reges)) {                                                                //如果不符合要求則報錯
                                        System.out.print("賬號不符合規范!!");
                                        System.out.print("\n");
                                        System.out.print("請重新注冊");
                                        System.out.print("\n");
                                        break;
                                }
                                user.setAccount(account);                                                                        //將賬號寫入對象中
                        case 3:
                                System.out.print("請輸入密碼(6位):");
                                password = sc.next();
                                reges ="[0-9]{6}";                                                                                        //正則表達式規則
                                if(!password.matches(reges)){                                                                //如果密碼不符合正則規則則報錯
                                        System.out.print("密碼不符合規范!!");
                                        System.out.print("\n");
                                        System.out.print("請重新注冊");
                                        System.out.print("\n");
                                        break;
                                }
                                user.setPassword(password);                                                                        //將密碼寫入對象中
                        case 4:
                                System.out.print("請輸入取款密碼(6位):");
                                pw = sc.next();
                                reges ="[0-9]{6}";                                                                                        //正則表達式規則
                                if(!pw.matches(reges)) {                                                
                                        System.out.print("取款密碼不符合規范!!");
                                        System.out.print("\n");
                                        System.out.print("請重新注冊");
                                        System.out.print("\n");
                                        break;
                                }
                                user.setPw(pw);                                                                                                //將取款密碼寫入到對象中        
                        case 5:
                                System.out.print("請輸入金額:");
                                sum = sc.nextDouble();
                                user.setSum(sum);                                                                                        //將金額寫入到對象中
                        case 6:
                                System.out.print("請輸入性別:");
                                sexual = sc.next();
                                user.setSexual(sexual);                                                                                //將性別寫入到對象中
                        case 7:
                                if(!holder.contains(user)){
                                        Data.getData().addUser(user);                                                         //一切准確無誤后將user存入數據庫Data中
                                }
                                else {
                                        System.out.print("用戶存在!!!");
                                        System.out.print("\n");
                                                                                                                                                        //結束循環
                                }
                                flag = false;
                                break;
                        }
                }
        }
        //忘記密碼操作
        public void modify() {
                boolean flag = true;
                Iterator<User> it = holder.iterator();                                                         //獲取迭代器
                System.out.print("請輸入賬戶:");
                String account = sc.next();                                                                                           //從鍵盤中獲取賬戶
                while(it.hasNext()) {
                        User user = it.next();      
                        if(user.getAccount().equals(account)){                                                     //如果容器中有這個對象則對它進行修改
                                System.out.print("請輸入新賬戶的密碼:");
                                String pw = sc.next();                                                                 //從監盤上錄入新的密碼
                                String reges ="[0-9]{6}";                                                                      //正則表達式規則
                                if(!pw.matches(reges)) {                                                                           //如果密碼不符合正則規則則報錯
                                        System.out.print("密碼不符合規范!!");
                                        System.out.print("\n");
                                }else {                                                                                                                   //正則表達式判斷是否符合條件
                                        holder.remove(user);                                                                           //先從原容器中刪除user                                         
                                        user.setPassword(pw);                                                                           //修改user的屬性
                                        holder.add(user);                                                              //然后再向容器中添加
                                        System.out.print("修改成功!!!");
                                        System.out.print("\n");
                                        flag = false;
                                        break;
                                }
                        }
                }
                if(flag) {
                        System.out.print("沒有找到該用戶");
                        System.out.print("\n");
                }
        }
        //注銷方法
        public TreeSet<User> logout(TreeSet<User> list) {
                String username;                                                                                                   //用戶名
                String password;                                                                                                   //密碼
                System.out.print("請輸入用戶賬號:");
                username = sc.next();                                                                                                 //從鍵盤錄入用戶名
                System.out.print("請輸入密碼:");
                password = sc.next();                                                                                                   //從鍵盤錄入密碼
                Iterator it = list.iterator();                                                                         //獲取迭代器
                while(it.hasNext()) {
                        User user = (User)it.next();                                                                    //獲取對象
                        if(user.getAccount().equals(username)&&user.getPassword().equals(password)){
                                list.remove(user);                                                                                          //如果錄入的信息匹配則從容器中刪除user對象
                                System.out.print("注銷成功!!");
                                System.out.print("\n");
                                return list;
                        }
                }                
                System.out.print("賬號或者密碼錯誤");                                                                                  //不匹配打印提示語句
                System.out.print("\n");  
                return list;        
        }
        //銀行操作界面
        public void BankMenu(User user) {
                bank.welcom(user);                                                                                                         //銀行調用歡迎語句
                System.out.print("****************************");
                System.out.print("\n");
                System.out.print("\n");
                System.out.print("    歡迎來到坑多多銀行擦操作系統!!!\n");
                System.out.print("\n");
                int str = 1;                                                         
                while(str!=0) {
                        System.out.print("****************************");
                        System.out.print("\n");
                        System.out.print(" 1:  取錢 ");
                        System.out.print("\n");
                        System.out.print(" 2:  存錢 ");
                        System.out.print("\n");
                        System.out.print(" 3:  查看余額");
                        System.out.print("\n");
                        System.out.print(" 0:  退出登錄");
                        System.out.print("\n");
                        System.out.print("****************************");
                        System.out.print("\n");
                        System.out.print("\n");
                        System.out.print("請輸入您的選項:");                                                                //從鍵盤中讀取字符串
                        str = sc.nextInt();
                        switch(str){                                                                                                //根據用戶輸入的值進行選擇
                                case 1:                                                                                                        //取錢選項
                                        System.out.print("請輸入取款密碼:");
                                        
                                        String pw = sc.next();                                                       //從鍵盤獲取輸入的密碼
                                
                                        if(user.getPw().equals(pw)) {                                                //將輸入的取款密碼與用戶的密碼進行比對:如果相同則繼續執行
                                                System.out.print("請輸入取款金額:");
                                                double money = sc.nextDouble();                                        //從鍵盤獲取輸入的金額
                                                if(money>=0) {                                                                        //判斷金額是否有誤
                                                        bank.drawMoney(user, money, pw);                //調用取款方法
                                                }else {
                                                        System.out.print("輸入金額錯誤!!!");
                                                        System.out.print("\n");
                                                }
                                        }else {
                                                System.out.print("輸入密碼有誤!!!");
                                                System.out.print("\n");
                                        }
                                        break;
                                case 2:
                                        System.out.print("請輸入取款金額:");
                                        System.out.print("\n");
                                        double money1 = sc.nextDouble();                //從鍵盤獲取輸入的金額
                                        if(money1>=0) {                                                        //判斷金額是否有誤
                                                bank.saveMoney(user, money1);;      //調用存款方法
                                        }else {
                                                System.out.print("輸入金額錯誤!!!");
                                                System.out.print("\n");
                                        }
                                        break;
                                case 3:
                                        bank.looksum(user);                            //調用銀行---查詢賬戶操作
                                        break;
                                case 0:
                                        bank.GoodBye(user);                                                   //調用結束語句
                                        break;
                                default:
                                        System.out.print("輸入錯誤");
                                        System.out.print("\n");
                        }
                }
        }
        
}


User類:

package First;

import java.io.Serializable;
   /*
    * 這是一個User類
    * */
public class User implements Serializable{
        /**
         * 實現接口,用於序列化和反序列化
         */
        private static final long serialVersionUID = 1L;
        private String name;              //用戶名
        private String account;           //銀行賬號
        private String password;        //密碼
        private String pw;          //取款密碼
        private double sum;         //賬戶金額
        private String sexual;      //性別
        //獲取用戶名
        public String getName() {
                return name;
        }
        //寫入用戶名
        public void setName(String name) {
                this.name = name;
        }
        //獲取賬號
        public String getAccount() {
                return account;
        }
        //寫入賬號
        public void setAccount(String account) {
                this.account = account;
        }
        //獲取密碼
        public String getPassword() {
                return password;
        }
        //修改密碼
        public void setPassword(String password) {
                this.password = password;
        }
        //查看余額
        public double getSum() {
                return sum;
        }
        //修改余額
        public void setSum(double sum) {
                this.sum = sum;
        }
        //寫入性別
        public String getSexual() {
                return sexual;
        }
        //修改性別
        public void setSexual(String sexual) {
                this.sexual = sexual;
        }
        //獲取取款密碼
        public String getPw() {
                return pw;
        }
        //寫入取款密碼
        public void setPw(String pw) {
                this.pw = pw;
        }
        //hashCode比較方法
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((account == null) ? 0 : account.hashCode());
                result = prime * result + ((name == null) ? 0 : name.hashCode());
                result = prime * result + ((password == null) ? 0 : password.hashCode());
                result = prime * result + ((pw == null) ? 0 : pw.hashCode());
                result = prime * result + ((sexual == null) ? 0 : sexual.hashCode());
                long temp;
                temp = Double.doubleToLongBits(sum);
                result = prime * result + (int) (temp ^ (temp >>> 32));
                return result;
        }
        //equals比較方法
        /*
         * 知識點:
         *         public boolean equals(Object obj)名稱不可改變
         * */
        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                User other = (User) obj;
                if (account == null) {
                        if (other.account != null)
                                return false;
                } else if (!account.equals(other.account))
                        return false;
                if (name == null) {
                        if (other.name != null)
                                return false;
                } else if (!name.equals(other.name))
                        return false;
                if (password == null) {
                        if (other.password != null)
                                return false;
                } else if (!password.equals(other.password))
                        return false;
                if (pw == null) {
                        if (other.pw != null)
                                return false;
                } else if (!pw.equals(other.pw))
                        return false;
                if (sexual == null) {
                        if (other.sexual != null)
                                return false;
                } else if (!sexual.equals(other.sexual))
                        return false;
                if (Double.doubleToLongBits(sum) != Double.doubleToLongBits(other.sum))
                        return false;
                return true;
        }
        //初始化用戶
        User(String name,String account,String password,String pw,double sum,String sexual){
                this.name = name;
                this.account = account;
                this.password = password;
                this.sum = sum;
                this.sexual = sexual;
                this.pw = pw;
        }
        //空參構造函數
        User(){
                
        }
}

Main()類

package First;

public class Test {
        //測試類----唯一的主函數
        public static void main(String[] args) {
                Operate operate = new Operate();
                operate.registerMenu();   //調用登錄方法
        }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM