1. 程式人生 > >JAVA小專案--銀行管理系統

JAVA小專案--銀行管理系統

銀行新使用者現金業務辦理
1.任務描述
    編寫一個銀行新使用者現金業務辦理程式,使其模擬新使用者到銀行辦理現金存取業務時的場景。

    要求此場景中,要模擬出銀行對使用者到來的歡迎動作、對使用者離開的提醒動作,以及使用者的開戶、存款和取款動作,在完成開戶、存款和取款操作後,要提示使用者的賬戶餘額。例如,一個新使用者來到招商銀行,首先銀行要表示歡迎,然後銀行工作人員會為使用者辦理開戶手續;開戶後,使用者先進行存款操作,之後又進行了取款操作,取款操作時需要使用者輸入正確的密碼和取款金額需小於當前賬戶金額,如果條件不滿足,系統產生異常。當業務辦理完,使用者離開銀行,銀行提醒使用者攜帶好隨身財物。至此銀行新使用者現金業務辦理結束。

  1. 任務目標
    (1)學會分析“銀行新使用者現金業務辦理”程式任務實現的邏輯思路。
    (2)能夠獨立完成“銀行新使用者現金業務辦理”的建模。
    (3)能夠獨立完成“銀行新使用者現金業務辦理”程式的原始碼編寫、編譯及執行。
    1. 實現思路
      (1)通過任務描述可知,此需求需要定義一個銀行類BankSystem。當用戶去銀行辦理業務時,相當於辦理了此銀行的賬戶,所以這個類中要有此銀行以及此銀行的賬戶資訊,比如:銀行的名稱、使用者的名稱、密碼、賬戶餘額和交易金額等資料
      (2)新使用者到達銀行之後,銀行會表示歡迎。
      (3)銀行表示歡迎之後,會為使用者辦理開戶手續,開戶時需扣除10元卡費。
      (4)開戶後,可以為使用者辦理存款和取款業務,這兩種業務都會改變賬戶的餘額。但是當用戶密碼輸入錯誤,或取款金額大於餘額時,產生異常,取款業務不能辦理,並提示使用者,編寫Exception類。
      (5)使用者離開時,銀行會提醒使用者攜帶好隨身財物。
      (6)編寫交易類Users,在此類中模擬新使用者去銀行辦理現金業務的場景。
      (7)user和bank 實施互動的選單Menu類

圖例分析
這裡寫圖片描述

  1. 實現效果
    當未開戶時 ,進行其他操作 ,提示請先開戶
    這裡寫圖片描述

開戶時,開戶金額不足,補充資金
這裡寫圖片描述

存錢取錢操作, 先輸入賬號密碼 輸入錯誤提示, 並顯示剩餘輸入次數
這裡寫圖片描述

成功提示 金額
這裡寫圖片描述

取錢時金額超過 提示使用者 餘額不足
這裡寫圖片描述
最後退出 歡迎下次光臨

程式 分為 4個類

  1. Menu 實現選單的控制
  2. Allexception 實現對異常的處理, 比如密碼錯誤, 金額不足, 次數不足等
  3. Users 實現使用者和銀行的互動
  4. BankSystem 實現對銀行功能的

1 Menu

package cjl161530103;

import java.util.InputMismatchException;
import java.util.Scanner;

public
class Menu { public static void main(String[] args)throws AllException, StopException { int flag=0; //記錄使用者是否開戶 Scanner input = new Scanner(System.in); Users menu = new Users(); while (true) { System.out.println("**************************"); System.out.println("\t銀行管理系統"); System.out.println("\t********"); System.out.println(" 1.開戶\t2.存錢"); System.out.println(" 3.取錢\t4.退出"); System.out.print("請輸入選項:"); String choose; try { /*choose1 = input.next(); int choose=0; for (int i=0; i<choose1.length(); i++) { choose = choose*10+(int)choose1.charAt(i); } */ choose = input.next(); if (choose.equals("1")) { menu.creat(); flag=1; } else if (choose.equals("2")) { if (flag==1) { menu.save(); } else { throw new AllException("賬戶不存在, 請選擇“1”開戶!\n"); } } else if (choose.equals("3")) { if (flag==1) { menu.draw(); } else { throw new AllException("賬戶不存在, 請選擇“1”開戶!\n"); } } else if (choose.equals("4")) { System.out.println("歡迎下次光臨!"); break; } else { throw new AllException("您輸入的序號不存在,請重新輸入!\n"); } } catch(AllException e) { System.out.println(e.getMessage()); } } } }

2 Allexception 異常處理

package cjl161530103;

public class AllException extends Exception{
    public AllException(String msg)  
    {  
        super(msg);  //獲取父類的方法 獲得文字資訊
    }   

}
class StopException extends Exception{
    public StopException(String msg)  
    {  
        super(msg);  
    } 
}

3 Users 實現 開戶,存錢,取錢時 向銀行的輸入賬號密碼金額等資訊的過程

在此程式中使用者資訊寫死 在開頭, 當然可以手動輸入, 有需要的自行新增

package cjl161530103;

import java.util.Scanner;

public class Users{
    Scanner input = new Scanner(System.in);
    String name = "張三";
    String usercount="161530103";
    String passwd = "123456";
    int money=5;
    BankSystem user1 = new BankSystem(name);  //建立銀行的物件

    //開戶
    public void creat() throws AllException,StopException{
        int numcount=3;
        boolean flag = user1.CreatCount(usercount,passwd,money);
        numcount--;
        //judge(flag, numcount);
        while (true)
        {
            try
            {
                if (flag==true)
                {
                    break;
                }
                else if (flag==false)
                {
                    throw new AllException("開戶金額不足,請繼續支付:");
                }

                if (numcount<=0)
                {
                    throw new StopException("賬號或密碼錯誤次數超過三次,已鎖定賬號!");
                }
            }
            catch(AllException e)
            {
                System.out.println(e.getMessage());
                money = input.nextInt();
                flag = user1.CreatCount(usercount,passwd,money);
                numcount--;
            }
            catch(StopException e)
            {
                System.out.println(e.getMessage());
                break;
            }
        }

    }

    //存錢
    public void save() throws AllException, StopException {
        System.out.println("存錢前,請輸入賬號密碼和金額~~");
        System.out.print("賬號:");
        usercount = input.next();
        System.out.print("密碼:");
        passwd = input.next();
        System.out.print("金額:");
        money = input.nextInt();
        int numcount=3;
        boolean flag = user1.SaveMoney(usercount,passwd,money);
        numcount--;
        while (true)
        {
            try
            {
                //System.out.println(numcount+"!!");
                if (flag==true)
                {
                    break;
                }
                else if (flag==false)
                {
                    if (numcount<=0)
                    {
                        throw new StopException("賬號或密碼錯誤次數超過三次,已鎖定賬號!");
                    }
                    throw new AllException("賬號或密碼錯誤,剩餘輸入次數"+numcount+"次,請重新輸入");
                }

            }
            catch(AllException e)
            {
                System.out.println(e.getMessage());
                numcount--;
                System.out.print("賬號:");
                usercount = input.next();
                System.out.print("密碼:");
                passwd = input.next();
                System.out.print("金額:");
                money = input.nextInt();
                flag = user1.SaveMoney(usercount, passwd, money);
            }
            catch(StopException e)
            {
                System.out.println(e.getMessage());
                break;
            }
        }
    }

        //取錢
    public void draw() throws AllException, StopException {
        //BankSystem user1 = new BankSystem(name);
        System.out.println("取錢前,請輸入賬號密碼和金額##");
        System.out.print("賬號:");
        usercount = input.next();
        System.out.print("密碼:");
        passwd = input.next();
        System.out.print("金額:");
        money = input.nextInt();
        int numcount=3;
        boolean flag = user1.DrawMoney(usercount,passwd,money);
        numcount--;
        while (true)
        {
            try
            {
                if (flag==true)
                {
                    break;
                }
                else if (flag==false)
                {
                    if (numcount<=0)
                    {
                        throw new StopException("賬號或密碼錯誤次數超過三次,已鎖定賬號!");
                    }
                    throw new AllException("賬號或密碼錯誤,剩餘輸入次數"+numcount+"次,請重新輸入");

                }

            }
            catch(AllException e)
            {
                System.out.println(e.getMessage());
                numcount--;
                System.out.print("賬號:");
                usercount = input.next();
                System.out.print("密碼:");
                passwd = input.next();
                System.out.print("金額:");
                money = input.nextInt();
                flag = user1.DrawMoney(usercount, passwd, money);
            }
            catch(StopException e)
            {
                System.out.println(e.getMessage());
                break;
            }
        }
    }
}

BankSystem 實現使用者傳送的資訊的驗證工作, 驗證每次的資訊是否正確併合理

package cjl161530103;

import java.util.Scanner;

public class BankSystem {
    String Name;
    int money=0;
    String usercount;
    String passwd;

    //歡迎客戶
    public BankSystem(String name) {
        Name = name;
        System.out.println("---------歡迎 來到, "+name+"---------");
    }
    //開戶業務
    public boolean CreatCount(String usercount1, String passwd1, int money1){
        usercount = usercount1;
        passwd = passwd1;
        money += money1;

        if (money>=10)
        {
            money -= 10;
            System.out.println(Name+"開戶成功, 賬戶餘額為:"+money);
            return true;
        }
        else 
        {

            System.out.println("開戶金額的10元, 您支付的錢幣的為"+money+"元, 還差"+(10-money)+"元。");
            return false;

        }
    }
    //存錢業務
    public boolean SaveMoney(String usercount1, String passwd1, int money1){
        if (usercount1.equals(usercount)&&passwd1.equals(passwd))
        {
            money += money1;
            System.out.println(Name+"您好, 您的賬號已存入"+money1+", 當前餘額為:"+money+"元。");
            return true;
        }
        else 
            return false;

    }
    //取錢業務
    public boolean DrawMoney(String usercount1,String passwd1, int money1){
        if (usercount1.equals(usercount)&&passwd1.equals(passwd))
        {
            if (money1<=money)
            {
                money -= money1;
                System.out.println(Name+"您好, 您的賬號已取出"+money1+", 當前餘額為:"+money+"元。");
                return true;
            }
            else 
            {
                System.out.println("餘額不足,當前餘額為"+money+"元,請重新輸入取出金額:");
                while (money1>money)
                {
                    Scanner input = new Scanner(System.in);
                    money1 = input.nextInt();
                }
                money -= money1;
                System.out.println(Name+"您好, 您的賬號已取出"+money1+", 當前餘額為:"+money+"元。");
                return true;

            }
        }
        else 
            return false;       
    }
}

相關推薦

JAVA專案-銀行管理系統(圖形化介面)3-登入與查詢

還是老規矩 ,先上圖, 得清晰的認識到自己寫到哪了, 還差多少 我們看圖 出了掛失ReportLose和資訊註冊Register 我們不要進行資訊驗證 其他在途中都必須進行 但我為什麼要綜合成一個呢, 因為懶, 覺得寫6個一樣的貼上都感覺很狗 但

JAVA專案--銀行管理系統

銀行新使用者現金業務辦理 1.任務描述     編寫一個銀行新使用者現金業務辦理程式,使其模擬新使用者到銀行辦理現金存取業務時的場景。     要求此場景中,要模擬出銀行對使用者到來的歡迎動作、對使用者離開的提醒動作,以及使用者的開戶、存款和取款

javademo---員工管理系統

最近開始自學java,在學到ArrayList的時候做了個員工管理系統來熟悉ArrayList的一部分操作。 此係統有5個功能: 1.新增員工:輸入員工編號,姓名,薪水 2.查詢員工:輸入員工編號進行查詢,如果找到員工就會顯示其資訊,否則給出沒找到的提示。 3.修改員

java專案鮮花銷售系統

專案:七彩鮮花銷售系統 一、練習目標 1.體會陣列的作用 2.找到分層開發的感覺 3.收穫分層開發的興趣 4.作出效果,找到自信 5.學會除錯錯誤 6.掌握陣列的增刪改查方法 全部講解和練習時間控制在3小時以內 二、專案需求 1.使用分層開發:表示層(測試類)、業務層(鮮花管理類)、

Java web專案 圖書管理系統借書部分程式碼

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %> <%@ page import="com.dao.Bor

java基礎練習——ATM銀行管理系統

1.需求說明   2.建立屬性類 package ATM; /* * 定義賬號和密碼 */ public class ATMbean { //定義使用者名稱和密碼 private String username = "張三"; private String pass

SSH框架結合MySql資料庫實現常用專案(名片系統、商品管理、商品推薦、登陸註冊)

概述        這裡主要使用hibernate3.0、struts2.0和spring框架結合mysql資料庫搭建的開發環境,實現了幾個在開發學習中常用到的功能,名片系統、商品管理、商品推薦、登陸註冊、css結合js簡單優化頁面

面向物件銀行管理系統JAVA程式碼《上》

面向物件模擬銀行管理系統(java): 一般銀行賬戶分為:借記卡賬戶和信用卡賬戶 借記卡賬戶 DebitAccount :是指先存款後消費(或取現),沒有透支功能的銀行卡。 即儲存卡賬戶,餘額必須大於0。 信用卡賬戶 CreditAccount :信用卡是一種非

java學習之專案彩票購買系統

專案需求 雙色球投注區分為紅色球號碼區和藍色球號碼區, 紅色球號碼區由1-33共33個號碼組成,藍色球號碼區由1-16共16個號碼組成。 投注時選擇6個紅球號碼和1個藍球號碼組成一注進行單式投注,每注金額2元。 一等獎:投注號碼與當期開獎號碼全部相同(順序不限,下同),即中

java專案,租車系統

暑假因為有事耽誤了,本以為暑假完結windows程式設計的,唉,慢慢補吧,學校開了java,因為學過c++,所以覺java並不是太難,根據慕課網給的專案,做了這個租車系統 無非就是面向物件思想,定義一個抽象汽車類,然後實現各自型別的汽車類,比較基礎,就不多

java專案——抽獎系統

來了來了!這不又到考試周了嗎!愁人,又得複習,複習,複習!這段時間每天都在複習線代和高數!

數據庫+Java課程設計 人事管理系統 (一)

clear 插入 ID spc AR util color job AI 一、JAVA與數據庫的合作 此次開發語言為Java,所用的數據庫驅動

Java-SSH2-網上銀行交易系統

說明:所有原始碼已上傳到筆者GitHub上,歡迎follow。感謝!!! 語言: Java 框架: 使用ssh2(spring3-struts2-hibernate4)框架開發的網上銀行系統 功能: 使用者角色包括管理員和普通使用者兩種,

練習-----銀行提款機系統

  ''' 人 類名:Person 屬性: 姓名 身份證號 電話號 卡 卡 類名:Card 屬性:卡號 密碼 餘額 行為: 銀行 類名:bank 屬性:使用者列表 提款機 提款機 類名:ATM 屬性:使用者字典 行為: 開戶 查詢 取款 儲存 轉賬 改密

Java開發企業級許可權管理系統 百度雲盤

推薦 Spring Boot/Cloud /Redis視訊: Java 微服務實踐 - Spring Boot Java 微服務實踐 - Spring Cloud redis高可用視訊 Spring原理解析視訊教程 首先先介紹一下spring secu

第一個專案--學生管理系統的一點收穫

        就在上週末,我們的第一個小專案(學生管理系統)終於結束了,回憶起這將就3周的經歷,突然有了一種成就感,感覺在不知不覺中就學到了好多的東西。現在就把我在這次實踐中的一些小小的心得寫出來跟大家一起分享。 首先學到的是關於Servlet的學習,關

SSM(Spring+Spring MVC+Mybatis)開發前臺後功能完整的java開源部落格管理系統

專案描述 本專案通過SSM(SpringMVC+Mybatis+Spring)框架編寫的一個人部落格管理系統,使用hexo主題,以及MAVEN進行對專案管理,並且前端具有粒子和點選愛心效果.後端的頁面框架為bootstrap.資料庫為mysql. 執行(執行)環境 jdk8+tomcat8+mysql+

java web之實驗室管理系統開發_會議主要記錄

課程實驗管理系統小組會議記錄 該系統的使用者暫時分為:系統管理員、老師、學生。(假若後期採用角色管理,則另行修改)。 系統具有下列特性:   1. 系統管理員可以新增、更新或刪除老師和班級的資訊。統計資料(上機人數、總的課時數、總實驗次數等)。 2. 老師可以新增、更新或刪除有關實驗的資訊(實驗目的、

Java專案——飛機大戰(一、實現執行緒繪製背景和我方飛機,鍵盤控制飛機運動)

1 總體需求分析 1.1 類 1、主類 2、我方飛機類 3、執行緒類 2.2 效果圖 2 實現 2.1 飛機類 MyPlane 飛機類包括以下引數: 位置x、y 速度vx、vy 圖片圖示myicom:設定為飛機的圖片   飛機類

面向物件與銀行管理系統2 ATM類 功能到取錢

''' 屬性: 行為: 頁面 1開戶 2查詢 3取款 4存錢 5轉賬 6改密 7鎖卡 8解鎖 9銷戶 0退出 ''' #歡迎頁面 from card import Card from user import User import random class ATM: