un. Ce système simule les utilisateurs bancaires utilisant des machines ATM pour ouvrir un compte, interroger, déposer et retirer de l'argent, et nécessite la programmation d'être implémentée à l'aide du langage Java.
illustrer:
1. Pour les exceptions d'entrée de données, vous pouvez utiliser le mécanisme de gestion des exceptions Java pour le gérer.
2. Le score sera évalué d'une manière qui combine l'implémentation fonctionnelle avec la normativité du code.
3. Si vous avez des questions sur les exigences du projet, vous pouvez me contacter à tout moment en laissant un message QQ pour consultation.
4. Pendant les vacances de la fête nationale, les enseignants sont en service dans l'entreprise tous les jours. Je suis en service à l'entreprise le 4 octobre et je vais travailler normalement le 7 octobre. Tout le monde est invité à venir dans l'entreprise pour faire des projets.
deux. Exigences fonctionnelles du projet:
Le projet commence à s'exécuter et affiche le menu principal comme:
Système de terminal en libre-service bancaire
************************************
0 .----- Ouvrez un compte
1 .---------------------------------------------------------------------------------------------------------------------------
2 .----- dépôt
3 .----- Retrait
4 .------
************************************
Veuillez sélectionner la fonction que vous souhaitez effectuer:
À l'heure actuelle, l'utilisateur peut sélectionner la fonction qu'il souhaite implémenter via l'entrée du clavier. Si l'entrée n'est pas 0, 1, 2, 3, 4, le système invite:
Le menu que vous avez sélectionné n'existe pas!
Veuillez resélectionner:
Demandez à l'utilisateur de réintégrer les données pour la sélection du menu!
Lorsque l'utilisateur entre 0, la fonction de requête sera entrée: invite système:
************************************
Vous avez choisi la fonction d'ouverture du compte
Veuillez saisir votre nom:
Pour le moment, l'utilisateur doit entrer son nom. Une fois l'entrée terminée, le système invite:
Veuillez saisir votre numéro d'identification:
Pour le moment, l'utilisateur doit entrer le numéro d'identification à 18 chiffres. Si la vérification échoue et nécessite une entrée continue, le système invite:
Veuillez saisir votre mot de passe:
À l'heure actuelle, l'utilisateur doit entrer un mot de passe numérique pur à 6 chiffres. Si la vérification échoue et nécessite une entrée continue, le système invite une fois la vérification transmise:
L'ouverture du compte a réussi, merci de l'avoir utilisée!
Système de terminal en libre-service bancaire
************************************
0 .----- Ouvrez un compte
1 .---------------------------------------------------------------------------------------------------------------------------
2 .----- dépôt
3 .----- Retrait
4 .------
************************************
Veuillez sélectionner la fonction que vous souhaitez effectuer:
Lorsque l'utilisateur entre 1, la fonction de requête sera entrée: invite système:
************************************
Vous avez choisi la fonction de requête
Veuillez saisir le numéro de carte que vous souhaitez interroger:
À l'heure actuelle, l'utilisateur doit entrer le numéro de carte de requête et le système vérifiera le numéro de carte. Si le numéro de carte n'existe pas, il invite: le numéro de carte que vous avez entré n'existe pas, veuillez vous réintégrer:
Veuillez saisir le numéro de carte que vous souhaitez interroger:
Rassemblez dans le numéro de carte. Lorsque l'utilisateur entre le numéro de carte correct, l'invite est:
Veuillez saisir votre mot de passe:
À l'heure actuelle, l'utilisateur doit entrer un mot de passe numérique pur à 6 chiffres. Si la vérification échoue et nécessite une entrée continue (jusqu'à 3 fois), le système affichera les informations actuelles du compte utilisateur et entrera dans le menu principal après la vérification:
Les informations de compte que vous interrogent est:
************************************
Nom ID Numéro de carte Numéro de carte Montant
Zhang Sanfeng420106198410112062 11111111111111.0
Système de terminal en libre-service bancaire
************************************
0 .----- Ouvrez un compte
1 .---------------------------------------------------------------------------------------------------------------------------
2 .----- dépôt
3 .----- Retrait
4 .------
************************************
Veuillez sélectionner la fonction que vous souhaitez effectuer:
Lorsque l'utilisateur entre 2, la fonction de dépôt sera entrée: invite du système:
************************************
Votre choix est la fonction de dépôt
Veuillez saisir le numéro de carte que vous souhaitez déposer:
À l'heure actuelle, l'utilisateur doit entrer le numéro de carte du dépôt et le système vérifiera le numéro de carte. Si le numéro de carte n'existe pas, l'invite est:
Le numéro de carte que vous avez entré n'existe pas, veuillez vous réintégrer:
Veuillez saisir le numéro de carte que vous souhaitez déposer:
Rassemblez dans le numéro de carte. Lorsque l'utilisateur entre le numéro de carte correct, l'invite est:
Veuillez saisir votre mot de passe:
À l'heure actuelle, l'utilisateur doit entrer un mot de passe numérique pur à 6 chiffres. Si la vérification échoue et nécessite une entrée continue (jusqu'à 3 fois), le système affichera les informations actuelles du compte utilisateur et entrera dans le menu principal après la vérification:
Les informations de compte que vous souhaitez déposer sont:
************************************
Nom ID Numéro de carte Numéro de carte Montant
Zhang Sanfeng420106198410112062 11111111111111.0
Veuillez saisir le montant que vous souhaitez déposer:
Pour le moment, l'utilisateur doit saisir le montant du dépôt et le système jugera le montant. Si les données d'entrée sont inférieures ou égales à 0, elle sera invitée:
Les données que vous avez entrées sont non valides et le système quittera automatiquement! Merci d'avoir utilisé
Système de terminal en libre-service bancaire
************************************
0 .----- Ouvrez un compte
1 .---------------------------------------------------------------------------------------------------------------------------
2 .----- dépôt
3 .----- Retrait
4 .------
************************************
Veuillez sélectionner la fonction que vous souhaitez effectuer:
Si l'utilisateur entre les données légalement, le système invite le succès du dépôt et revient au menu principal:
Le dépôt a réussi, merci de l'avoir utilisé!
Système de terminal en libre-service bancaire
************************************
0 .----- Ouvrez un compte
1 .---------------------------------------------------------------------------------------------------------------------------
2 .----- dépôt
3 .----- Retrait
4 .------
************************************
Veuillez sélectionner la fonction que vous souhaitez effectuer:
Les données seront déposées dans le compte d'utilisateur. Si l'utilisateur recherche à nouveau les données, il peut voir le montant du compte modifié. (Remarque: ce système utilise des fichiers pour le stockage de données, donc si l'utilisateur redémarre le programme, les données seront lues à partir du fichier et réinitialisées en mémoire! Cette fonction est facultative, vous pouvez vous référer à la sérialisation et à la désérialisation des objets ou JSON)
Lorsque l'utilisateur entre 3, la fonction de retrait sera entrée: invite du système:
************************************
Veuillez saisir le numéro de carte que vous souhaitez retirer en tant que fonction de retrait:
Pour le moment, l'utilisateur doit entrer le numéro de carte pour le retrait. Le système vérifiera le numéro de carte. Si le numéro de carte n'existe pas, il sera invité:
Le numéro de carte que vous avez entré n'existe pas, veuillez vous réintégrer:
Veuillez saisir le numéro de carte que vous souhaitez retirer:
Rassemblez dans le numéro de carte. Lorsque l'utilisateur entre le numéro de carte correct, l'invite est:
Veuillez saisir votre mot de passe:
À l'heure actuelle, l'utilisateur doit entrer un mot de passe numérique pur à 6 chiffres. Si la vérification échoue et nécessite une entrée continue (jusqu'à 3 fois), le système affichera les informations actuelles du compte utilisateur et entrera dans le menu principal après la vérification:
Les informations de compte que vous souhaitez retirer est:
************************************
Nom ID Numéro de carte Numéro de carte Montant
Zhang Sanfeng420106198410112062 11111111111111.0
Veuillez saisir le montant que vous souhaitez retirer:
Pour le moment, l'utilisateur doit saisir le montant du retrait et le système jugera le montant. Si les données d'entrée sont inférieures à 0 ou supérieures au montant total du compte, l'invite est:
Les données que vous avez entrées sont non valides et le système quittera automatiquement! Merci d'avoir utilisé
Système de terminal en libre-service bancaire
************************************
0 .----- Ouvrez un compte
1 .---------------------------------------------------------------------------------------------------------------------------
2 .----- dépôt
3 .----- Retrait
4 .------
************************************
Veuillez sélectionner la fonction que vous souhaitez effectuer:
Si l'utilisateur entre les données légalement, le système invite le succès du retrait et revient au menu principal:
Le retrait a réussi, merci de l'avoir utilisé!
Système de terminal en libre-service bancaire
************************************
0 .----- Ouvrez un compte
1 .---------------------------------------------------------------------------------------------------------------------------
2 .----- dépôt
3 .----- Retrait
4 .------
************************************
Veuillez sélectionner la fonction que vous souhaitez effectuer:
Les données seront déduites du compte de l'utilisateur. Si l'utilisateur recherche à nouveau les données, il peut voir le montant du compte modifié.
Lorsque l'utilisateur entre 4, le système quittera.
trois. Exigences de conception
(1) Package un: com.bank.unionpay signifie UnionPay, ajoutez-le dans ce package:
Il représente l'interface à une carte bancaire, y compris des méthodes abstraites telles que le solde de requête, le dépôt, le retrait, etc.
Il représente une classe abstraite qui représente la machine ATM, utilise des objets de type de carte bancaire comme attributs ou paramètres, implémente des méthodes d'instance telles que les bilans de requête, les dépôts, les retraits, etc., et ajoute l'ouverture du compte comme méthode abstraite.
Il représente les types d'énumération des quatre principales banques: y compris ABC, ICBC, CCB et BOC; Il représente respectivement la Banque agricole de Chine, la Banque industrielle et commerciale de Chine, le CCB et la Banque de Chine.
(2) Package 2: com.bank.abc représente la Banque agricole de Chine, l'ajouter dans ce package:
Définissez la classe bancaire dans un modèle singleton, y compris les attributs: type de banque (type d'énumération, constant = ABC), nom de banque (chaîne), liste de cartes bancaires (ensemble), etc.
Définissez la classe d'implémentation de la carte bancaire - une carte d'épargne, y compris les attributs: type de banque (type d'énumération = ABC), nom, numéro d'identification, numéro de carte, mot de passe, solde; Mettre en œuvre des méthodes pour interroger le solde, le dépôt, le retrait, etc.
Définissez la sous-classe de la machine ATM, y compris les attributs: type de banque (type d'énumération, constant = ABC), implémentant la méthode d'ouverture du compte, parmi laquelle seule une carte d'économie peut être ouverte, le numéro de carte est un numéro aléatoire à 6 chiffres, qui est automatiquement généré. La carte bancaire nouvellement ouverte est ajoutée à la liste des cartes bancaires de la banque.
Définissez la sous-classe de la carte d'épargne - carte de crédit, ajoutez des attributs: limite de découvert, réécriture de la méthode de retrait et contrôlez le montant maximal de retrait ne peut pas être supérieur à la somme de la limite de décroche + décroche.
(3) Package 3: com.bank.test représente les tests, ajoutez une classe de test avec la méthode principale sous ce package pour réaliser la fonction des machines ATM simulées requises par le projet.
Choisissez les fonctions suivantes:
Implémentez ICBC en mode à un seul État, ajoutez plusieurs cartes bancaires à la classe de test par défaut et implémentez des fonctions de requête et de dépôt et de retrait sur la machine ATM de la banque agricole.
Package 1: com.bank.unionpay
1. Classe de résumé de la carte bancaire
package com.bank.unionpay; interface publique yinhangka {public void cun (); public void qu (); public void getyu ();}2. Énumérer les types de banques
Package com.bank.UnionPay; public Enum Yinhang {ABC ("Agricultural Bank"), ICBC ("Industrial and Commercial"), CCB ("CCB"), BOC ("Banque de Chine"); chaîne finale privée Yinhang; // Méthode de construction privée Yinhang (String yinhang) {this.yinhang = yinhang;} public getname () {) this.yinhang;}}3. Classe ATM
package com.bank.unionpay; import com.bank.abc.yinhanglei; classe abstraite publique atm {private yinhanglei yhl; // Attribut de classe bancaire Private Double Yue; // variable yuepublic double getyue () {return yue;} public void Setyue (double yue) {this.yue = yue;} // méthode de requête publique void yue () {system.out.println ("Le solde sur la carte est:" + this.yue);} // méthode par défaut public cun public (double (double cun) {if (cun <0) {System.out.println ("l'entrée est incorrecte");} else {this.yue + = cun; System.out.println ("Balance sur la carte est:" + this.yue);}} // Méthode de retrait public Void Qu (Double qu) insuffisant ");} else {this.yue- = qu; System.out.println (" L'équilibre sur la carte est: "+ this.yue);}} // définir la méthode abstraite d'ouverture du compte abstrait public void kaihu ();}4. Classe d'interface principale
package com.bank.unionpay; import java.util.arraylist; import java.util.list; import java.util.scanner; public class zujiemian {public void zhujiemian () {System.out.println ("Banque Terminal d'auto-service bancaire System "); System.out.println (); System.out.println (" ******************************** "); System.out.println (); list <string> li = new ArrayList <string> (); li.addd (" compte Ouverture "); li.add (" query "); li.add (" dépôt "); li.add (" exit "); li.add (" facture "); li.add (" exit "); pour (int (int i = 0; i <5; i ++) {System.out.println (i + "------" + li.get (i));} System.out.println (); System.out.println ("***************************"); System.out.println (s'il vous plait au système. effectuer: ");}}Package 2: com.bank.abc
1. Catégorie d'ouverture du compte ATM2
package com.bank.abc; importer java.util.random; import java.util.scanner; import com.bank.unionpay.atm; import com.bank.unionpay.yinhang; classe publique atm2 étend atm {private yinhang yhl = yinhang.abc; @OverridePublic void kaihu () {// Méthode d'ouverture du compte // entre le nom cuxuka cxk = new Cuxuka (); try {scanner sc1 = new scanner (System.in); System.out.println ("s'il vous plaît entrez votre nom:"); String st = sc1.nextline (); Cxk.SetName (ST); // Entrer le système de carte d'identité. Votre numéro de carte d'identité: "); pour (int ig = 0; ig> = 0; ig ++) {Scanner SC2 = new Scanner (System.in); String str = sc2.NextLine (); String ST1 = "// d {15} | // d {17} [// dxx]"; if (str.matches (st1)) {cxk.setshenfen (str); break;} else {System.out.println ("Le numéro d'identification du compte n'est pas le numéro d'identification à 18 digit Mot de passe: "); pour (int ig = 0; ig> = 0; ig ++) {Scanner SC3 = new Scanner (System.in); String Pass = SC3.NextLine (); String mm =" // d {6} "; if (pass.matches (mm)) {cxk.setpassword (pass);} else {System.out.PrintLn (s'y placerait. mot de passe ");}} // générer un numéro de carte de sauvegarde à 6 chiffres aléatoire a = new random (); int [] ch = new int [6]; stringBuilder str = new StringBuilder (); String s; for (int i = 0; i <6; i ++) {ch [i] = a.nextint (9);} pour (INGER c: ch) {str.append (c);} s = str.ToString (); cxk.setcard (s); // importe les données générées dans la liste des cartes bancaires yinhanglei.getyinhanglei (). list.add (cxk.getcard ()); // importe les données générées dans la carte de carte bancaire Liste de la carte de la carte bancaire Liste Yinhanglei.getyinhanglei (). Map.put (cxk.getcard (), cxk); System.out.println ("Votre nouveau numéro de carte est:" + cxk.getcard ()); System.out.println ("l'ouverture du compte est réussie, merci pour l'utilisation");} catch (exception e) {System.out.out.printLn ("Entrée est" incorrect ");}}}2. Catégorie de carte d'épargne
Package com.bank.abc; importer java.util.scanner; import com.bank.unionpay.yinhang; import com.bank.unionpay.yinhangka; classe publique Cuxuka implémente yinhangka {// attribut de carte privée yinhang yinhang; name de chaîne privée; nom de la chaîne privée; carte privée de la chaîne de chagtille; (); @ OverRidePublic String toString () {return "name =" + name + "/ t / n" + "id card =" + shenfen + "/ t / n" + "card numéro =" + card + "/ t / n" + "comptymont =" + bancan getName () {Nom de retour;} public void setName (nom de chaîne) {this.name = name;} public String Getshenfen () {return shenfen;} public void Setshenfen (String shenfen) {this.shenfen = shenfen;} public string getcard () {return card;} public setcard voidcard (string) {this.card = return card carte;} public String getPassword () {return mot de passe;} public void setPassword (String Motword) {this.password = mot de passe;} public double getBalance () {return Balance;} public void setBalance (double bilan) {this.balance = Balance;} // dépôt @OverRidepublic Void Cun () {Cuxuka Cu1 = new Cuxuka (); cu1.chaxun (); scanner sc2 = new scanner (System.in); System.out.println ("Veuillez saisir le montant que vous souhaitez déposer:"); double Cun = sc2.nextDouble (); // Implémentez la méthode de dépôt si (cun <0) {System.out.trintln ("Les données que vous avez entrées sont invalid, le système exitera automatiquement! Merci d'utiliser ");} else {this.balance + = cun; yinhanglei.getyinhanglei (). Map.get (cu1.card) .setBalance (bancal); System.out.println (" Avis de responsabilité, restant restant Montant "+ yinhanglei.getyinhanglei (). map.get (cu1.card) .getBalance ());}} // Méthode de requête publique void chaxun () {while (true) {try {scanner sc = new scanner (System.in); System.out.println (" s'il vous plaît entrer le numéro de carte que vous voulez être Query: "); string s = sc.next Collection de cartes de YinHanglei pour (String Temp: yinHanglei.getyInHanglei (). Map.KeySet ()) {if (s.equals (temp)) {this.card = s;}} if (s.equals (card)) // Vérifier le numéro de carte {int i = 0; system.out.println ("s'il vous plaît entrez votre mot de passe:"); Scanner (System.in); String ST1 = SC1.NextLine (); if (st1.equal est: "); System.out.println (); System.out.println (" ************************************ "); System.out.println (); System.out.println (" Nom Numéro d'identification du numéro de carte Montant "); System.out.println (); System.out.println (yinHanglei.getyInHanglei (). Map.get (S)); Break;} else {i ++; if (i == 3) {System.out.println (" Motword Erry Error plus que 3 fois "); Break;} else {System.out.out.Println (" Mord-mot ERROR ");}}}} else {System.out.println (" Veuillez confirmer si le numéro de carte est incorrectement ");}}} catch (Exception e) {System.out.println (" Entrée est incorrect ");} Break Cuxuka (); cu.chaxun (); scanner sc1 = new scanner (System.in); System.out.println ("Veuillez saisir le montant que vous souhaitez retirer:"); double qu = sc1.nextDouble (); // implémenter la méthode de retrait if (qu <Balance) {this.balance- = qu; yinhanglei.getyinhanglei (). map.get (Cu.card) .setBalance (bilan); System.out.println ("le retrait est réussi, le montant restant est:" + yinhanglei.getyinhanglei (). {System.out.println ("Les données que vous avez entrées sont invalides, le système sortira automatiquement! Merci pour l'utilisation ") ;;} else {System.out.println (" Balance insuffisante ");}} @ OverRidepublic void geyu () {// Balance Calcul Cuxuka cu = new Cuxuka (); System.out.println (" Montant restant "+ cu.getBaliance ());}}3. Catégorie bancaire du modèle singleton
Package com.bank.abc; importer java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; import com.bank.unionpay.yinhang casse publique yinhanglei {// banc de classe attribue privée yinhang yinhang = yinhang.abc. ArrayList <> (); public map <String, cuxuka> map = new Hashmap <> (); // Méthode de construction privée Private YinHanglei () {super ();} Private Static YinHanglei Bank = New YinHanglei (); public static yinhanglei getyinhanglei () {Retour Bank;}}4. Catégorie de carte de crédit
Package com.bank.abc; classe publique Xinyongka étend Cuxuka {// construire votre propre attribut privé double Touzhi; public double getTouzhi () {return touzhi;} public void Settouzhi (double touzhi) {this.touzhi = touzhi;} // retirer la méthode de retrait du public if ((touzhi + getBalance ())> = qu) {System.out.println ("Montant de découverte" + (qu-getBalance ())) ;;} else {System.out.println ("ne peut pas se retirer plus que la quantité maximale de surdrawal") ;;}}}}Package 3: com.bank.test
1. Classe de test
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; importation com.bank.Unionpay.zujiemian; classe publique TESTI args) {// fabrication de l'interface principale cuxuka cxk = new Cuxuka (); // instanciera l'interface principale zujiemian zjm = new Zujiemian (); // en tête d'une exception essayez {// créer une boucle morte pour (int i = 0; i> = 0; i ++) {zjm.zhujiemian (); Scranner Sc = Scranner. in = sc.nextint (); // défendez si le nombre d'entrée répond au numéro d'interface if (in == 0 || in == 1 || in == 2 || in == 3 || in == 4) {// Fonction d'ouverture if (in == 0) {atm2 atm2 = new Atm2 (); atm2.kaihu (); system.out.println ("*********************************"); System.out.println ("vous avez sélectionné comme fonction d'ouverture du compte"); System.out.println (); Continuer;} // Requête de la fonction de requête if (in == 1) {System.out.println ("******************************"); System.out.println ("Vous avez sélectionné comme fonction de requête"); cxk.chaxun (); continu == 2) {System.out.println ("*********************************"); System.out.println ("Votre choix est la fonction de dépôt"); cxk.cun (); continue;} // fonction de retrait if (in == 3) {System.out.println ("***************************"); System.out.println ("Votre choix est la fonction de retrait"); cxk.qu (); continue;} // "); Break;}} // imprimez else {System.out.println (" Le menu que vous avez sélectionné n'existe pas! ");}} // exception lève l'impression} catch (exception e) {System.out.println (" Input est incorrect ");}}}résultat:
Ce qui précède est le système de terminal en libre-service Java Simulate Bank introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!