하나. 이 시스템은 ATM 기계를 사용하여 은행 사용자를 시뮬레이션하여 계정, 쿼리, 입금 및 돈을 인출하며 Java 언어를 사용하여 프로그래밍을 구현해야합니다.
설명 :
1. 데이터 입력 예외는 Java Exception 처리 메커니즘을 사용하여 처리 할 수 있습니다.
2. 점수는 기능적 구현과 코드 규범 성을 결합한 방식으로 평가됩니다.
3. 프로젝트 요구 사항에 대해 궁금한 점이 있으면 상담을 위해 QQ 메시지를 남겨두면 언제든지 저에게 연락 할 수 있습니다.
4. 전국 휴가 기간 동안 교사는 매일 회사에서 근무하고 있습니다. 저는 10 월 4 일 회사에서 근무 중이며 10 월 7 일에 정상적으로 일하러갑니다. 모두가 프로젝트를 수행하기 위해 회사에 와서 환영합니다.
둘. 프로젝트 기능 요구 사항 :
프로젝트가 실행되기 시작하고 메인 메뉴를 다음과 같이 표시합니다.
은행 셀프 서비스 터미널 시스템
*************************************
0 .---- 계정을 엽니 다
1.----------------------------------------------------------------------------------------------------------------------------
2 .---- 예금
3 .----- 철수
4 .----- 출구
*************************************
수행 할 기능을 선택하십시오.
현재 사용자는 키보드 입력을 통해 구현하려는 기능을 선택할 수 있습니다. 입력이 0, 1, 2, 3, 4가 아닌 경우 시스템은 다음과 같습니다.
선택한 메뉴는 존재하지 않습니다!
Reselect :
메뉴 선택을 위해 데이터를 다시 입력하도록 사용자에게 요청하십시오!
사용자가 0을 입력하면 쿼리 함수가 입력됩니다. 시스템 프롬프트 :
*************************************
계정 오프닝 기능을 선택했습니다
이름을 입력하십시오 :
현재 사용자는 자신의 이름을 입력해야합니다. 입력이 완료되면 시스템이 다음과 같습니다.
ID 번호를 입력하십시오 :
현재 사용자는 18 자리 ID 번호를 입력해야합니다. 검증이 실패하고 지속적인 입력이 필요한 경우 시스템은 다음과 같습니다.
비밀번호를 입력하십시오 :
현재 사용자는 6 자리 순수한 디지털 비밀번호를 입력해야합니다. 검증이 실패하고 계속 입력이 필요한 경우, 검증이 통과 된 후 시스템이 프롬프트합니다.
계정 오프닝이 성공적이었습니다. 사용해 주셔서 감사합니다!
은행 셀프 서비스 터미널 시스템
*************************************
0 .---- 계정을 엽니 다
1.----------------------------------------------------------------------------------------------------------------------------
2 .---- 예금
3 .----- 철수
4 .----- 출구
*************************************
수행 할 기능을 선택하십시오.
사용자가 1을 입력하면 쿼리 함수가 입력됩니다. 시스템 프롬프트 :
*************************************
쿼리 기능을 선택했습니다
쿼리하려는 카드 번호를 입력하십시오.
현재 사용자는 쿼리 카드 번호를 입력해야하며 시스템은 카드 번호를 확인합니다. 카드 번호가 존재하지 않으면 메시지가 표시됩니다. 입력 한 카드 번호가 존재하지 않으므로 다시 입력하십시오.
쿼리하려는 카드 번호를 입력하십시오.
카드 번호를 다시 입력하십시오. 사용자가 올바른 카드 번호를 입력하면 프롬프트는 다음과 같습니다.
비밀번호를 입력하십시오 :
현재 사용자는 6 자리 순수한 디지털 비밀번호를 입력해야합니다. 확인이 실패하고 지속적인 입력 (최대 3 회)이 필요한 경우 시스템은 현재 사용자 계정 정보를 표시하고 확인이 통과 된 후 주 메뉴를 입력합니다.
쿼리중인 계정 정보는 다음과 같습니다.
*************************************
이름 ID 카드 번호 카드 번호 금액
Zhang Sanfeng4206198410112062 111111 12800.0
은행 셀프 서비스 터미널 시스템
*************************************
0 .---- 계정을 엽니 다
1.----------------------------------------------------------------------------------------------------------------------------
2 .---- 예금
3 .----- 철수
4 .----- 출구
*************************************
수행 할 기능을 선택하십시오.
사용자가 2로 들어가면 입금 함수가 입력됩니다. 시스템 프롬프트 :
*************************************
당신의 선택은 예금 기능입니다
입금하려는 카드 번호를 입력하십시오.
현재 사용자는 예금 카드 번호를 입력해야하며 시스템은 카드 번호를 확인합니다. 카드 번호가 존재하지 않으면 프롬프트는 다음과 같습니다.
입력 한 카드 번호는 존재하지 않습니다. 다시 들어가십시오.
입금하려는 카드 번호를 입력하십시오.
카드 번호를 다시 입력하십시오. 사용자가 올바른 카드 번호를 입력하면 프롬프트는 다음과 같습니다.
비밀번호를 입력하십시오 :
현재 사용자는 6 자리 순수한 디지털 비밀번호를 입력해야합니다. 확인이 실패하고 지속적인 입력 (최대 3 회)이 필요한 경우 시스템은 현재 사용자 계정 정보를 표시하고 확인이 통과 된 후 주 메뉴를 입력합니다.
입금하려는 계정 정보는 다음과 같습니다.
*************************************
이름 ID 카드 번호 카드 번호 금액
Zhang Sanfeng4206198410112062 111111 12800.0
입금 할 금액을 입력하십시오.
현재 사용자는 입금 금액을 입력해야하며 시스템은 금액을 판단합니다. 입력 데이터가 0보다 작거나 동일하면 다음과 같이 표시됩니다.
입력 한 데이터는 유효하지 않으며 시스템이 자동으로 종료됩니다! 사용해 주셔서 감사합니다
은행 셀프 서비스 터미널 시스템
*************************************
0 .---- 계정을 엽니 다
1.----------------------------------------------------------------------------------------------------------------------------
2 .---- 예금
3 .----- 철수
4 .----- 출구
*************************************
수행 할 기능을 선택하십시오.
사용자가 합법적으로 데이터를 입력하면 시스템은 입금이 성공적이라고 프롬프트하고 기본 메뉴로 돌아갑니다.
보증금이 성공적이었습니다. 사용해 주셔서 감사합니다!
은행 셀프 서비스 터미널 시스템
*************************************
0 .---- 계정을 엽니 다
1.----------------------------------------------------------------------------------------------------------------------------
2 .---- 예금
3 .----- 철수
4 .----- 출구
*************************************
수행 할 기능을 선택하십시오.
데이터는 사용자 계정에 입금됩니다. 사용자가 데이터를 다시 검색하면 변경된 계정 금액을 볼 수 있습니다. (참고 :이 시스템은 데이터 스토리지에 파일을 사용하므로 사용자가 프로그램을 다시 시작하면 데이터가 파일에서 읽고 메모리로 다시 시작됩니다!이 기능은 선택 사항입니다. 객체 또는 JSON의 직렬화 및 사막화를 참조 할 수 있습니다).
사용자가 3을 입력하면 인출 기능이 입력됩니다. 시스템 프롬프트 :
*************************************
철회 기능으로 인출하려는 카드 번호를 입력하십시오.
현재 사용자는 인출을 위해 카드 번호를 입력해야합니다. 시스템은 카드 번호를 확인합니다. 카드 번호가 존재하지 않으면 다음과 같이 표시됩니다.
입력 한 카드 번호는 존재하지 않습니다. 다시 들어가십시오.
철회하려는 카드 번호를 입력하십시오.
카드 번호를 다시 입력하십시오. 사용자가 올바른 카드 번호를 입력하면 프롬프트는 다음과 같습니다.
비밀번호를 입력하십시오 :
현재 사용자는 6 자리 순수한 디지털 비밀번호를 입력해야합니다. 확인이 실패하고 지속적인 입력 (최대 3 회)이 필요한 경우 시스템은 현재 사용자 계정 정보를 표시하고 확인이 통과 된 후 주 메뉴를 입력합니다.
철회하려는 계정 정보는 다음과 같습니다.
*************************************
이름 ID 카드 번호 카드 번호 금액
Zhang Sanfeng4206198410112062 111111 12800.0
철회 할 금액을 입력하십시오.
현재 사용자는 인출 금액을 입력해야하며 시스템은 금액을 판단합니다. 입력 데이터가 계정의 총 금액보다 0 이상인 경우 프롬프트는 다음과 같습니다.
입력 한 데이터는 유효하지 않으며 시스템이 자동으로 종료됩니다! 사용해 주셔서 감사합니다
은행 셀프 서비스 터미널 시스템
*************************************
0 .---- 계정을 엽니 다
1.----------------------------------------------------------------------------------------------------------------------------
2 .---- 예금
3 .----- 철수
4 .----- 출구
*************************************
수행 할 기능을 선택하십시오.
사용자가 합법적으로 데이터를 입력하면 시스템은 인출이 성공했다고 프롬프트하고 기본 메뉴로 돌아갑니다.
철수가 성공적이었습니다. 사용해 주셔서 감사합니다!
은행 셀프 서비스 터미널 시스템
*************************************
0 .---- 계정을 엽니 다
1.----------------------------------------------------------------------------------------------------------------------------
2 .---- 예금
3 .----- 철수
4 .----- 출구
*************************************
수행 할 기능을 선택하십시오.
데이터는 사용자 계정에서 공제됩니다. 사용자가 데이터를 다시 검색하면 변경된 계정 금액을 볼 수 있습니다.
사용자가 4에 들어가면 시스템이 종료됩니다.
삼. 설계 요구 사항
(1) 패키지 1 : com.bank.unionpay는 UnionPay를 의미합니다.이 패키지 아래에 추가하십시오.
쿼리 잔액, 예금, 인출 등과 같은 추상 방법을 포함하여 은행 카드의 인터페이스를 나타냅니다.
ATM 기계를 나타내는 추상 클래스를 나타내고, 은행 카드 유형 객체를 속성 또는 매개 변수로 사용하고, 쿼리 잔액, 예금, 인출 등과 같은 인스턴스 메소드를 구현하고, 계정 개방을 추상 방법으로 추가합니다.
ABC, ICBC, CCB 및 BOC를 포함한 4 개의 주요 은행의 열거 유형을 나타냅니다. 중국의 농업 은행, 중국 산업 및 상업 은행, CCB 및 중국 은행을 각각 대표합니다.
(2) 패키지 2 : com.bank.abc는 중국의 농업 은행을 나타내며이 패키지 아래에 추가하십시오.
은행 유형 (열거 유형, 상수 = ABC), 은행 이름 (문자열), 은행 카드 목록 (세트) 등을 포함하여 싱글 톤 패턴에서 은행 클래스를 정의하십시오.
은행 카드의 구현 클래스 정의 - 속성을 포함한 저축 카드 : 은행 유형 (열거 유형 = ABC), 이름, ID 번호, 카드 번호, 암호, 잔액; 잔액, 예금, 인출 등을위한 방법을 구현합니다.
속성을 포함하여 ATM 기계의 서브 클래스를 정의하십시오. 새로 열린 은행 카드가 은행의 은행 카드 목록에 추가됩니다.
저축 카드의 서브 클래스 - 신용 카드, 속성 추가 : 초과 인출 한도, 철회 방법을 다시 작성하며 최대 인출 금액은 잔액 + 초과 인출 한계의 합보다 클 수 없습니다.
(3) 패키지 3 : com.bank.test는 테스트를 나타냅니다.이 패키지 아래에 메인 메소드가있는 테스트 클래스를 추가하여 프로젝트에 필요한 시뮬레이션 된 ATM 기계의 기능을 실현합니다.
다음 기능을 선택하십시오.
단일 상태 모드에서 ICBC를 구현하고 기본적으로 테스트 클래스에 여러 뱅크 카드를 추가하고 농업 은행의 ATM 기계에서 크로스 뱅크 쿼리 및 입금 및 인출 기능을 구현하십시오.
패키지 1 : com.bank.unionPay
1. 은행 카드 초록 클래스
package com.bank.unionpay; public interface yinhangka {public void cun (); public void qu (); public void getyu ();}2. 은행 유형을 열었습니다
package com.bank.unionpay; public enum yinhang {ABC ( "농업 은행"), ICBC ( "산업 및 상업"), CCB ( "CCB"), BOC ( "Bank of China"); 개인 건축 방법 Private Yinhang (String Yinhang) {this.yinhang = yinhang = yinhang; this.yinhang;}}3. ATM 클래스
package com.bank.unionpay; import com.bank.abc.yinhanglei; Public Abstract Class atm {private yinhanglei yhl; // 은행 클래스 속성 Private Double Yue; // 변수 yuepublic double getyue () {return yue;} public void setyue (double yue) {this.yue = yue;} // 쿼리 메소드 public void yue () {system.out.println ( "카드의 균형은 :" +this.yue); cun) {if (cun <0) {System.out.println ( "입력 IS 부정확");} else {this.yue+= cun; system.out.println ( "카드의 균형은 다음과 같습니다. 불충분 한 ");} else {this.yue- = qu; system.out.println ("카드의 균형은 "+this.yue);}} // 계정 개방 추상 방법을 정의합니다 void kaihu ();}4. 메인 인터페이스 클래스
package com.bank.unionpay; import java.util.arraylist; import java.util.list; import java.util.scanner; public class zujiemian {public void zhujiemian () {System.out.out.println System "); system.out.println (); System.out.println ("**************************** "); System.out.println (); list <string> li = new Arraylist <string> (); li.add ("Account Opening "); li.add ("query "); li.add ("예금 "); li.add ("exit "); li.add ("invoice "); li.add ("exit "); for (int i = 0; i <5; i ++) {system.out.println (i+"-----"----- "+li.get (i));} system.out.println (); system.out.println ("************************************** "); system.out.println (); system.pont 공연하다: ");}}패키지 2 : com.bank.abc
1. ATM2 계정 오프닝 범주
package com.bank.abc; import java.util.random; import java.util.scanner; import com.bank.unionpay.atm; import com.bank.unionpay.yinhang; public class atm2는 atm {private yinhang yhl = yinhang.abc; @OverRidePublic void kaihu () {// 계정 오프닝 메소드 // 이름을 입력하십시오 Cuxuka Cxk = new Cuxuka (); try {스캐너 sc1 = new 스캐너 (System.in); System.out.println ( "이름을 입력하십시오 :"); String st = sc1.nextline (); cxk.setname (st); ID 카드 번호 : "); for (int ig = 0; ig> = 0; ig ++) {스캐너 sc2 = 새 스캐너 (system.in); String str = sc2.nextline (); String st1 = "// d {15} | // d {17} [// dxx] [// dxx]"; if (str.matches (st1)) {cxk.setshenfen (str); break;} else {System.out.println (입력 된 ID 번호는 18 자리 ID 번호가 아닙니다. 비밀번호 : "); for (int ig = 0; ig> = 0; ig ++) {스캐너 sc3 = 새 스캐너 (system.in); 문자열 pass = sc3.nextline (); String mm ="// d {6} "; if (pass.matches (mm)) {cxk.setpassword (pass;} else} else the the the the the the the the the the the the the the the the the the the the the the the the the the intect. 비밀번호 ");}} // 6 자리 저축 카드 번호를 생성합니다. 무작위 a = new random (); int [] ch = new int [6]; StringBuilder st = new StringBuilder (); String S; for (int i = 0; i <6; i ++) {ch [i] = a.nextint (9);} for (intger c : ch) {str.append (c);} s = str.tostring (); cxk.setcard (s); // 생성 된 데이터를 은행 카드 목록으로 가져옵니다. yinhanglei.getyinhanglei (). map.put (cxk.getcard (), cxk); system.out.println ( "당신의 새 카드 번호는"+cxk.getcard ()); System.out.println ( "계정 오프닝이 성공적, 사용해 주셔서 감사합니다")} catch (예외 e) {System.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out.out. 잘못된");}}}2. 저축 카드 카테고리
package com.bank.abc; import java.util.scanner; import com.bank.unionpay.yinhang; import com.bank.unionpay.yinhangka; public class cuxuka는 yinhangka {// 개인 문자열 이름; 개인 문자열; // 개인 문자열; // ();@returedPublic String toString () {return "name =" + name + "/t/n" + "id card =" + shenfen + "/t/n" + " +" + " +" + "/t/n" + "계정 금액 =" + balance; getName () {return name;} public void setName (문자열 이름) {this.name = name;} public string getShenfen () {return shenfen;} public void setshenfen (string shenfen) {this.shenfen = shenfen;} public string getCard ({return card;}) {string card; public string getpassword () {return password;} public void setpassword (문자열 비밀번호) {this.password = password;} public double getBalance () {return balance;} public void setBalance (repint void setBalance (double balance) {this.balance = 밸런스; cuxuka (); cu1.chaxun (); 스캐너 sc2 = 새 스캐너 (system.in); system.out.println ( "입금하려는 금액을 입력하십시오 :"); double cun = sc2.nextdouble (); // 입금 방법을 구현하면 (cun <0) {system.out.println ( "데이터가 자동으로 사용되면 시스템이 자동으로 존재합니다. ");} else {this.balance+= cun; yinhanglei.getyinhanglei (). map.get (cu1.card) .SetBalance (balance); system.out.println ("부인이 성공, 남은 상태입니다 금액 "+yinhangei.getyinhanglei (). map.get (cu1.card) .getBalance ());}} // 쿼리 메소드 public void chaxun () {while (true) {scanner sc = new Scanner (System.In); System.out.println ("query를 입력하고 싶다. "; (string temp : yinhanglei.getyinhanglei (). map.keyset ()) {if (s.equals (temp)) {this.card = s;}} if (s.equals (card)) // 카드 번호 {int i = 0; system.out.println ( "비밀번호를 입력하십시오 스캐너 (system.in); String st1 = sc1.nextline (); if (st1.equals (yinhanglei.getyinhanglei (). map.get (s) .getpassword ())) {System.out.println ( "쿼리중인 계정 정보 IS : "); System.out.println (); System.out.println ("********************************* "); System.out.println (); System.out.println ("이름 ID 번호 카드 번호 금액 "); system.out.println (); system.out.println (yinhanglei.getyinhanglei ()); break;} else {i ++; if (i == 3) {System.out.println ("비밀번호 입력 오류가 3 번 더 많음 "); {system.out.out.out.out.out.out.pprint.println ("Password -onput 오류 ");}}}} else {system.out.println ("카드 번호가 잘못 입력되어 있는지 확인하십시오 ");}}} catch (예외 e) {system.out.println ("입력이 잘못되었습니다 ");} break;}} // @overridepublic void qu () {cux u = new} cuxuka (); cu.chaxun (); 스캐너 sc1 = 새 스캐너 (system.in); system.out.println ( "철회 할 금액을 입력하십시오 :"); double qu = sc1.nextDouble (); 인출 방법을 구현하십시오. if (qu <balance) {this.balance- = qu; yinhanglei.getyinhanglei (). map.get (cu.card) .setbalance (balance); system.out.println ( "철수는 성공적이므로 나머지 금액은"+ yinhange.getyinhanglei (). map.get (cu.card) {System.out.println ( "입력 한 데이터가 유효하지 않으면 시스템이 자동으로 종료됩니다! ") ;;} else {system.out.println ("불충분 한 균형 ");}}@atredridepublic void getyu () {// 균형 계산 cuxuka cu = new cuxuka (); system.out.println ("나머지 금액 "+cu.getBalance ());3. 싱글 톤 모델 뱅킹 카테고리
package com.bank.abc; import java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; import com.bank.unionpay.yinhang; public class yinhangle {// bank private yinhang yinhang = new string <bant strest <bang. ArrayList <> (); public map <string, cuxuka> map = new Hashmap <> (); // 개인 구조 방법 private yinhanglei () {super ();} private static yinhangei bank = new Yinhanglei (); public static yinhanglei getyinhanglei () {return bank;}}.4. 신용 카드 카테고리
package com.bank.abc; public class Xinyongka는 cuxuka를 확장합니다. {// 자신의 속성을 구성합니다. 개인 속성을 구성합니다 프리즈 개인 double touzhi; public double gettouzhi (return touzhi;} public void settouzhi (double touzhi) {this.touzhi = touzhi;} // Rewrite the Double qu (Double qu). 메소드 if ((touzhi+getBalance ())> = qu) {System.out.println ( "OverDraw Amer"+(qu-getBalance ()) ;;} else {system.out.println ( "최대 초과 도입수보다 더 많이 인출 할 수 없음") ;;}}}패키지 3 : com.bank.test
1. 테스트 클래스
package com.bank.test; import java.util.arraylist; import java.util.list; import java.util.scanner; import com.bank.abc.atm2; import com.bank.abc.cuxuka; import com.bank.unionpay.atm; problic static vord {problic class test1 {import com.bank.bank.abc.cuxuka; 메인 인터페이스 만들기 Cuxuka Cxk = New Cuxuka (); // 메인 인터페이스 Zujiemian zjm = new Zujiemian (); // 예외를 초과하는 메인 인터페이스 Zujiemian Zjm = Instantiate Zujiemian Zjm = Instantiate Zujiemian zujiemian (int i = 0; i> = 0; i ++) {zjm.zhujm.zhuj.zhujiemian (zjm.zhujme) 스캐너 (system.in); int in = sc.nextint (); // 입력 번호가 인터페이스 번호를 충족하는지 여부를 방어 atm2 (); atm2.kaihu (); system.out.println ( "***********************************"); System.out.println ( "계정 개방 함수로 선택한); System.out.println (); 계속;} // query 함수 if (in == 1) {System.out.println ( "************************************************"; System.out.println ( "쿼리 함수로 선택한"); cxk.chaxun (); 계속;} // default function if (in == 2) {System.out.println ( "**************************************************"; System.out.println ( "귀하의 선택은 입금 함수입니다"); CXK.CUN (); 계속;} // 철수 함수 if (in == 3) {system.out.println ( "*************************************"; System.out.println ( "귀하의 선택은 철수 함수입니다"); cxk.qu (); 계속;} // exit function (in == 4) {System.out.println ( "사용 하시다! "); break;}} // print else {system.out.println ("선택한 메뉴는 존재하지 않습니다! ");}} // 예외는 인쇄} catch (예외 e) {system.out.println ("입력이 잘못되었습니다 ");}}}결과:
위는 편집자가 소개 한 Java 시뮬레이션 은행 셀프 서비스 터미널 시스템입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!