Maison >Java >javaDidacticiel >Étapes et exemples de code pour implémenter le système de simulation ATM en Java
(1) Analyse de sélection de sujet
(2) Environnement de développement
Environnement de développement, choisissez IDEA, le logiciel de développement Java, basé sur la version JDK1.8, pour développer ce programme de simulation ATM sur la fenêtre locale.
(1) Conception du module fonctionnel
Après avoir analysé le sujet, ce programme de simulation ATM est divisé en deux modules : côté administrateur et mode utilisateur. Parmi eux, l'administrateur a pour fonctions d'interroger tous les comptes, d'exporter toutes les informations de compte vers des fichiers et de se déconnecter. Le module utilisateur a des fonctions telles que la demande de solde, le transfert ATM, le dépôt ATM, le retrait ATM, la modification du mot de passe, la demande d'enregistrement de transaction, l'enregistrement d'exportation, le remboursement de carte, etc.
Le schéma fonctionnel total du système est le suivant :
(2) Organigramme
Le processus global du système est le suivant : l'utilisateur sélectionne la connexion administrateur ou la connexion en mode utilisateur via l'interface principale, puis entre le mot de passe du compte défini par le système. Après une connexion réussie, accédez à la page de fonction principale correspondante pour effectuer les opérations associées.
Lorsque l'administrateur se connecte au backend, il déterminera si le mot de passe et le numéro de compte sont corrects, connectez-vous, sinon cela entraînera un échec. Après vous être connecté en arrière-plan, vous pouvez utiliser et afficher toutes les fonctions utilisateur. Ensuite, le système interrogera toutes les informations utilisateur définies et les affichera sur le panneau de console. Cliquez sur la fonction d'exportation d'enregistrement pour exporter toutes les informations de compte dans un fichier txt dans le même répertoire que le programme jar actuel.
Lorsque l'utilisateur se connecte, il est jugé si le mot de passe du compte est correct. S'il est incorrect, le nombre d'erreurs de compte sera de +1. Lorsque le nombre atteint 3, le compte sera verrouillé et ne pourra pas être connecté. Lorsque le mot de passe du compte saisi est correct, il sera déterminé si le compte est verrouillé. Sinon, connectez-vous, accédez à l'interface principale de l'utilisateur et effectuez les opérations associées.
L'organigramme du module administrateur est le suivant :
L'organigramme global du module utilisateur est le suivant :
(3) Conception de la structure des fichiers et des classes
Ce programme de simulation ATM est développé à l’aide d’un logiciel d’édition d’idées. Le projet est divisé en trois packages : admin (administrateur), client (utilisateur) et données (données ATM).
La classe AdminManage est écrite sous le package admin, qui est responsable de l'initialisation de l'interface administrateur et de la mise en œuvre de toutes les fonctions de l'administrateur. La classe client du package Client implémente l'interface du module utilisateur, définit les boutons de commande pertinents et implémente les fonctions de surveillance respectives. Afin de réduire la conception de l'interface, un panneau d'informations de sortie est utilisé au milieu de l'interface utilisateur, de sorte que la fonction. les résultats sont imprimés dans le panneau. Sortez et simulez les informations d'interface du guichet automatique.
Il existe la classe ATMData, la classe Card et la classe CustomerAccount sous le package Data. La classe Card est la représentation codée de la carte bancaire de l'utilisateur. Elle encapsule les informations pertinentes de la carte bancaire dans un objet Java de base, conforme aux caractéristiques orientées objet de Java. Parmi eux, customerAccount est une sous-classe de la classe card. Sur la base de la carte, de nombreux comportements d'utilisateur sont ajoutés, tels que les dépôts, les retraits, les demandes de solde, etc. La classe ATMData est une classe très importante pour ce programme. Elle encapsule toutes les informations initiales sur les comptes de ce programme, ainsi que les opérations telles que le transfert, l'obtention de tous les comptes et la connexion. Conçu de cette manière, le traitement des données et la conception de l'interface peuvent être séparés pour éviter un code d'interface utilisateur excessif et long.
La structure du fichier est la suivante, dans laquelle les informations d'image requises par ce programme sont stockées dans le dossier de ressources :
Les modules fonctionnels de ce système ne sont pas écrits en détail ici, mais plusieurs principaux sont répertoriés ici Description de la fonction :
(1) Fonction de retrait
Le code de la fonction de retrait est conçu dans la classe customerAccount, et le paramètre entrant est le montant du retrait. Déterminez d'abord si le montant est un multiple de 100, puis déterminez s'il est supérieur à 5 000 (la question exige qu'un seul retrait ne puisse pas être supérieur à 5 000), puis déterminez si le solde du compte courant est supérieur ou égal à le montant obtenu. Une fois ces conditions remplies, le montant du compte courant est recalculé et le relevé de retrait est ajouté au relevé de transaction du compte courant.
La logique du code de base est la suivante :
if (money % 100 != 0) { return false; } if (money > 5000) { return false; } int currentMoney = getMoney(); if (currentMoney < money) { return false; } //取款 int result = currentMoney - money; setMoney(result); //添加交易记录 List<String> operationRecod = getOperationRecod(); operationRecod.add("【" + LocalDateTime.now().format(dateTimeFormatter) + "】 ATM 取款 [" + money + "]元,当前余额[" + result + "]元");
(2) Fonction de dépôt
Le paramètre de cette méthode est le montant du dépôt. Tout d'abord, déterminez si le montant est un multiple de 100. Si la vérification réussit, recalculez. le solde du compte courant, puis ajoutez l'enregistrement de la transaction sur le compte courant.
La logique du code de base est la suivante :
if (money % 100 != 0) { return false; } //余额 int countMoney = getMoney() + money; setMoney(countMoney); //记录交易记录 List<String> operationRecod = getOperationRecod(); operationRecod.add("【" + LocalDateTime.now().format(dateTimeFormatter) + "】 ATM 存款 [" + money + "]元,当前余额[" + countMoney + "]元"); return true;
(3) Fonction de connexion utilisateur
Les paramètres d'entrée de la méthode de connexion utilisateur sont le compte et le mot de passe. Tout d'abord, déterminez si le compte existe et faites correspondre tous les comptes définis par le. système participant. Sinon, il échoue. Si tel est le cas, il sera jugé si le compte est verrouillé. S'il est verrouillé, il ne peut pas être connecté. S'il n'est pas verrouillé, il sera jugé si le mot de passe est correct. S'il est incorrect, le nombre d'erreurs. dans le compte courant sera +1 (si le nombre d'erreurs de compte = 3, le compte sera verrouillé). Si le mot de passe est correct, la connexion réussira et vous serez redirigé vers l'interface principale.
Le code de base est le suivant :
//Un compte existe-t-il ?
if (allAccount.containsKey(number)) { CustomerAccount account = allAccount.get(number); //判断账号是否被锁定 if (account.getErrorCount() >= 3) { JOptionPane.showMessageDialog(null, "登录失败!该账号疑似已被锁定", "提示消息", JOptionPane.WARNING_MESSAGE); return null; //密码是否一致 } else if (account.getPassword().equals(pwd)) { //重置错误次数 account.setErrorCount(0); return account; } account.setErrorCount(account.getErrorCount() + 1); if (account.getErrorCount() >= 3) { //锁定账户 account.setStatus(1); } } else { //提示错误消息 JOptionPane.showMessageDialog(null, "登录失败!卡号或密码错误", "提示消息", JOptionPane.WARNING_MESSAGE); }
Il existe de nombreuses fonctions, je ne les enregistrerai donc pas une par une ici. Seuls les tests de plusieurs fonctions principales sont enregistrés ici.
(1) Retrait aux distributeurs automatiques
Testez la fonction de retrait comme indiqué sur l'image ci-dessous. Le montant initial est de 10 000 yuans. Retirez respectivement 3 000, 6 000 et 5 000. Les deux derniers sont des données d'erreur. Un seul retrait ne peut pas dépasser 5 000 yuans. Plus tard, lorsque le solde sera de 3 000, 5 000 seront retirés. La fonction de retrait test ne peut pas être découverte.
Résultats des tests :
On peut voir que le fonctionnement est normal et que les résultats des tests de saisie de données légaux et illégaux sont conformes aux attentes.
(2) Virement ATM
Test de transfert, le compte cible doit exister, et le solde doit être supérieur au montant à transférer, et aucun découvert n'est autorisé. Les données de test consistent à saisir un compte inexistant et un montant de transfert supérieur au solde actuel.
Entrez un compte inexistant et les résultats du test sont les suivants :
Entrez un compte et un montant normaux. Les résultats du test sont les suivants. À ce stade, connectez-vous au compte cible et vérifiez les enregistrements de transaction. pour voir que le transfert a atteint avec succès le compte cible.
Entrez des données incorrectes qui sont supérieures au solde actuel. Les résultats du test sont les suivants. On peut voir que le test de la fonction de transfert est normal.
(3) Changer le mot de passe
Pour changer le mot de passe, vous devez saisir le mot de passe d'origine, et il peut être modifié s'il est le même. Le nouveau mot de passe doit comporter plus de 6 caractères, et les 6 caractères ne peuvent pas être exactement les mêmes. Le mot de passe saisi pour la troisième fois sert à confirmer le nouveau mot de passe et doit être le même que le mot de passe saisi pour la deuxième fois.
Les mots de passe d'origine sont tous 123456 et les données incorrectes saisies sont 111111. Les résultats des tests sont les suivants :
Les résultats des tests de saisie de données de moins de 6 chiffres et de saisie correcte de données normales sont les suivants :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!