واحد. يحاكي هذا النظام مستخدمي البنك باستخدام آلات الصراف الآلي لفتح حساب ، والاستعلام ، والإيداع وسحب الأموال ، ويتطلب تنفيذ البرمجة باستخدام لغة Java.
يوضح:
1. لاستثناءات إدخال البيانات ، يمكنك استخدام آلية معالجة استثناء Java للتعامل معها.
2. سيتم تقييم النتيجة بطريقة تجمع بين التنفيذ الوظيفي مع المعيار رمز.
3. إذا كان لديك أي أسئلة حول متطلبات المشروع ، فيمكنك الاتصال بي في أي وقت من خلال ترك رسالة QQ للتشاور.
4. خلال عطلة اليوم الوطني ، يكون المعلمون في الخدمة في الشركة كل يوم. أنا في الخدمة في الشركة في الرابع من أكتوبر وأذهب إلى العمل بشكل طبيعي في 7 أكتوبر. الجميع مرحب بهم للحضور إلى الشركة للقيام بالمشاريع.
اثنين. المتطلبات الوظيفية للمشروع:
يبدأ المشروع في التشغيل ويعرض القائمة الرئيسية على النحو التالي:
نظام محطة الخدمة الذاتية للبنك
************************************
0 .----- فتح حساب
1 .----------------------------------------------------------------------------------------------------------------------
2 .----- الإيداع
3 .----- الانسحاب
4 .------ الخروج
************************************
الرجاء تحديد الوظيفة التي تريد تنفيذها:
في هذا الوقت ، يمكن للمستخدم تحديد الوظيفة التي يريد تنفيذها من خلال إدخال لوحة المفاتيح. إذا لم يكن الإدخال 0 ، 1 ، 2 ، 3 ، 4 ، يطالب النظام:
القائمة التي حددتها غير موجودة!
من فضلك reflect:
اطلب من المستخدم إعادة إدخال البيانات لتحديد القائمة!
عندما يدخل المستخدم 0 ، سيتم إدخال وظيفة الاستعلام: موجه النظام:
************************************
لقد اخترت وظيفة فتح الحساب
الرجاء إدخال اسمك:
في هذا الوقت ، يحتاج المستخدم إلى إدخال اسمه. بعد اكتمال الإدخال ، يطالب النظام:
الرجاء إدخال رقم الهوية الخاص بك:
في هذا الوقت ، يحتاج المستخدم إلى إدخال رقم المعرف المكون من 18 رقماً. إذا فشل التحقق وتطلب مدخلات مستمرة ، يطالب النظام:
الرجاء إدخال كلمة المرور الخاصة بك:
في هذا الوقت ، يحتاج المستخدم إلى إدخال كلمة مرور رقمية خالصة مكونة من 6 أرقام. إذا فشل التحقق وتطلب مدخلات مستمرة ، فإن النظام يطالب بعد تمرير التحقق:
كان فتح الحساب ناجحًا ، شكرًا لك على استخدامه!
نظام محطة الخدمة الذاتية للبنك
************************************
0 .----- فتح حساب
1 .----------------------------------------------------------------------------------------------------------------------
2 .----- الإيداع
3 .----- الانسحاب
4 .------ الخروج
************************************
الرجاء تحديد الوظيفة التي تريد تنفيذها:
عندما يدخل المستخدم 1 ، سيتم إدخال وظيفة الاستعلام: موجه النظام:
************************************
اخترت وظيفة الاستعلام
الرجاء إدخال رقم البطاقة الذي تريد الاستعلام عنه:
في هذا الوقت ، يحتاج المستخدم إلى إدخال رقم بطاقة الاستعلام ، وسيقوم النظام بفحص رقم البطاقة. إذا لم يكن رقم البطاقة موجودًا ، فسوف يطالب: رقم البطاقة الذي أدخلته غير موجود ، يرجى إعادة الدخول:
الرجاء إدخال رقم البطاقة الذي تريد الاستعلام عنه:
أعد إدخال رقم البطاقة. عندما يدخل المستخدم رقم البطاقة الصحيح ، فإن المطالبة هي:
الرجاء إدخال كلمة المرور الخاصة بك:
في هذا الوقت ، يحتاج المستخدم إلى إدخال كلمة مرور رقمية خالصة مكونة من 6 أرقام. إذا فشل التحقق وتطلب إدخالًا مستمرًا (حتى 3 مرات) ، فسيقوم النظام بعرض معلومات حساب المستخدم الحالي وإدخال القائمة الرئيسية بعد تمرير التحقق:
معلومات الحساب التي تستفسر عنها هي:
************************************
رقم بطاقة بطاقة هوية الاسم مبلغ رقم بطاقة
Zhang Sanfeng420106198410112062 111111 12800.0
نظام محطة الخدمة الذاتية للبنك
************************************
0 .----- فتح حساب
1 .----------------------------------------------------------------------------------------------------------------------
2 .----- الإيداع
3 .----- الانسحاب
4 .------ الخروج
************************************
الرجاء تحديد الوظيفة التي تريد تنفيذها:
عندما يدخل المستخدم 2 ، سيتم إدخال وظيفة الإيداع: مطالبة النظام:
************************************
اختيارك هو وظيفة الإيداع
الرجاء إدخال رقم البطاقة الذي تريد إيداعه:
في هذا الوقت ، يحتاج المستخدم إلى إدخال رقم بطاقة الإيداع ، وسيقوم النظام بفحص رقم البطاقة. إذا لم يكن رقم البطاقة موجودًا ، فإن المطالبة هي:
رقم البطاقة الذي أدخلته غير موجود ، يرجى إعادة الدخول:
الرجاء إدخال رقم البطاقة الذي تريد إيداعه:
أعد إدخال رقم البطاقة. عندما يدخل المستخدم رقم البطاقة الصحيح ، فإن المطالبة هي:
الرجاء إدخال كلمة المرور الخاصة بك:
في هذا الوقت ، يحتاج المستخدم إلى إدخال كلمة مرور رقمية خالصة مكونة من 6 أرقام. إذا فشل التحقق وتطلب إدخالًا مستمرًا (حتى 3 مرات) ، فسيقوم النظام بعرض معلومات حساب المستخدم الحالي وإدخال القائمة الرئيسية بعد تمرير التحقق:
معلومات الحساب التي تريد إيداعها هي:
************************************
رقم بطاقة بطاقة هوية الاسم مبلغ رقم بطاقة
Zhang Sanfeng420106198410112062 111111 12800.0
الرجاء إدخال المبلغ الذي تريد إيداعه:
في هذا الوقت ، يتعين على المستخدم إدخال مبلغ الإيداع ، وسيحكم النظام على المبلغ. إذا كانت بيانات الإدخال أقل من أو تساوي 0 ، فسيتم مطالبتها:
البيانات التي أدخلتها غير صالحة وسيخرج النظام تلقائيًا! شكرا لاستخدام
نظام محطة الخدمة الذاتية للبنك
************************************
0 .----- فتح حساب
1 .----------------------------------------------------------------------------------------------------------------------
2 .----- الإيداع
3 .----- الانسحاب
4 .------ الخروج
************************************
الرجاء تحديد الوظيفة التي تريد تنفيذها:
إذا دخل المستخدم البيانات بشكل قانوني ، فإن النظام يطالب بأن الإيداع ناجحًا ويعود إلى القائمة الرئيسية:
كان الوديعة ناجحة ، شكرًا لك على استخدامه!
نظام محطة الخدمة الذاتية للبنك
************************************
0 .----- فتح حساب
1 .----------------------------------------------------------------------------------------------------------------------
2 .----- الإيداع
3 .----- الانسحاب
4 .------ الخروج
************************************
الرجاء تحديد الوظيفة التي تريد تنفيذها:
سيتم إيداع البيانات في حساب المستخدم. إذا بحث المستخدم في البيانات مرة أخرى ، فيمكنه رؤية مبلغ الحساب الذي تم تغييره. (ملاحظة: يستخدم هذا النظام ملفات لتخزين البيانات ، لذلك إذا قام المستخدم بإعادة تشغيل البرنامج ، فسيتم قراءة البيانات من الملف وإعادة تخصيصها إلى الذاكرة!
عندما يدخل المستخدم 3 ، سيتم إدخال وظيفة السحب: مطالبة النظام:
************************************
الرجاء إدخال رقم البطاقة الذي تريد سحبه كدالة السحب:
في هذا الوقت ، يحتاج المستخدم إلى إدخال رقم البطاقة للانسحاب. سيقوم النظام بفحص رقم البطاقة. إذا لم يكن رقم البطاقة موجودًا ، فسيتم مطالبته:
رقم البطاقة الذي أدخلته غير موجود ، يرجى إعادة الدخول:
الرجاء إدخال رقم البطاقة الذي تريد سحبه:
أعد إدخال رقم البطاقة. عندما يدخل المستخدم رقم البطاقة الصحيح ، فإن المطالبة هي:
الرجاء إدخال كلمة المرور الخاصة بك:
في هذا الوقت ، يحتاج المستخدم إلى إدخال كلمة مرور رقمية خالصة مكونة من 6 أرقام. إذا فشل التحقق وتطلب إدخالًا مستمرًا (حتى 3 مرات) ، فسيقوم النظام بعرض معلومات حساب المستخدم الحالي وإدخال القائمة الرئيسية بعد تمرير التحقق:
معلومات الحساب التي تريد سحبها هي:
************************************
رقم بطاقة بطاقة هوية الاسم مبلغ رقم بطاقة
Zhang Sanfeng420106198410112062 111111 12800.0
الرجاء إدخال المبلغ الذي تريد سحبه:
في هذا الوقت ، يتعين على المستخدم إدخال مبلغ السحب ، وسيحكم النظام على المبلغ. إذا كانت بيانات الإدخال أقل من 0 أو أكبر من المبلغ الإجمالي للحساب ، فإن المطالبة هي:
البيانات التي أدخلتها غير صالحة وسيخرج النظام تلقائيًا! شكرا لاستخدام
نظام محطة الخدمة الذاتية للبنك
************************************
0 .----- فتح حساب
1 .----------------------------------------------------------------------------------------------------------------------
2 .----- الإيداع
3 .----- الانسحاب
4 .------ الخروج
************************************
الرجاء تحديد الوظيفة التي تريد تنفيذها:
إذا أدخل المستخدم البيانات بشكل قانوني ، يطالب النظام بأن الانسحاب ناجح ويعود إلى القائمة الرئيسية:
كان الانسحاب ناجحًا ، شكرًا لك على استخدامه!
نظام محطة الخدمة الذاتية للبنك
************************************
0 .----- فتح حساب
1 .----------------------------------------------------------------------------------------------------------------------
2 .----- الإيداع
3 .----- الانسحاب
4 .------ الخروج
************************************
الرجاء تحديد الوظيفة التي تريد تنفيذها:
سيتم خصم البيانات من حساب المستخدم. إذا بحث المستخدم في البيانات مرة أخرى ، فيمكنه رؤية مبلغ الحساب الذي تم تغييره.
عندما يدخل المستخدم 4 ، سيخرج النظام.
ثلاثة. متطلبات التصميم
(1) الحزمة الأولى: com.bank.unionpay تعني UnionPay ، أضفها تحت هذه الحزمة:
ويمثل الواجهة لبطاقة مصرفية ، بما في ذلك الأساليب المجردة مثل الاستعلام عن رصيد ، إيداع ، الانسحاب ، إلخ.
إنه يمثل فئة مجردة تمثل جهاز ATM ، وتستخدم كائنات نوع البطاقة المصرفية كسمات أو معلمات ، وتنفذ طرق المثيل مثل أرصدة الاستعلام ، والودائع ، والسحب ، وما إلى ذلك ، ويضيف فتح الحساب كطريقة مجردة.
وهو يمثل أنواع التعداد للبنوك الأربعة الرئيسية: بما في ذلك ABC و ICBC و CCB و BOC ؛ ويمثل البنك الزراعي للصين ، البنك الصناعي والتجاري الصيني ، CCB ، وبنك الصين على التوالي.
(2) الحزمة 2: com.bank.abc يمثل البنك الزراعي الصيني ، أضفه تحت هذه الحزمة:
حدد فئة البنك في نمط Singleton ، بما في ذلك السمات: نوع البنك (نوع التعداد ، ثابت = ABC) ، الاسم المصرفي (السلسلة) ، قائمة البطاقات المصرفية (مجموعة) ، إلخ.
تحديد فئة التنفيذ الخاصة بالبطاقة المصرفية - بطاقة التوفير ، بما في ذلك السمات: نوع البنك (نوع التعداد = ABC) ، الاسم ، رقم الهوية ، رقم البطاقة ، كلمة المرور ، الرصيد ؛ تنفيذ طرق للاستعلام عن الرصيد ، الإيداع ، الانسحاب ، إلخ.
حدد الفئة الفرعية لآلة ATM ، بما في ذلك السمات: نوع البنك (نوع التعداد ، ثابت = ABC) ، تنفيذ طريقة فتح الحساب ، من بينها: يمكن فتح بطاقة التوفير فقط ، رقم البطاقة هو رقم عشوائي مكون من 6 أرقام ، والذي يتم إنشاؤه تلقائيًا. تتم إضافة البطاقة المصرفية التي تم افتتاحها حديثًا إلى قائمة البطاقات المصرفية للبنك.
تحديد الفئة الفرعية لبطاقة الادخار - بطاقة الائتمان ، إضافة السمات: الحد الأقصى لسحب السحب ، طريقة السحب ، والتحكم في الحد الأقصى لمبلغ السحب لا يمكن أن يكون أكبر من مجموع الرصيد + السحب على المكشوف.
(3) الحزمة 3: com.bank.test يمثل الاختبار ، أضف فئة اختبار ذات طريقة رئيسية ضمن هذه الحزمة لتحقيق وظيفة آلات ATM المحاكاة التي يتطلبها المشروع.
اختر الوظائف التالية:
قم بتنفيذ ICBC في وضع الحالة الواحدة ، وإضافة بطاقات مصرفية متعددة إلى فئة الاختبار افتراضيًا ، وتنفيذ وظائف الاستعلام والاستعداد للبنك عبر البنك المتقاطع على جهاز ATM للبنك الزراعي.
الحزمة 1: com.bank.unionpay
1. فئة بطاقة المصرفي
package com.bank.unionpay ؛ الواجهة العامة yinhangka {public void cun () ؛ public void qu () ؛ public void getyu () ؛}2. تعداد أنواع البنوك
package com.bank.unionpay ؛ enum enum yinhang {abc ("Bank Agricultural Bank") ، ICBC ("Industrial and Commercial") ، CCB ("CCB") ، BOC ("Bank of China") ؛ yinhang private ؛ // طريقة البناء الخاصة الخاصة yinhang (String yinhang) {that.yinhang = yinhang ؛ this.yinhang ؛}}3. فئة أجهزة الصراف الآلي
package com.bank.unionpay ؛ import com.bank.abc.yinhanglei ؛ public agract class {private Yinhanglei yhl ؛ // Pank Class Attribute Private Double Yue ؛ // متغير yuepublic double getyue () {return yue ؛} public void setyue (double yue) {this.yue = yue ؛ cun) {if (cun <0) {system.out.println ("الإدخال غير صحيح") ؛} آخر {this.yue+= cun ؛ system.out.println ("التوازن على البطاقة هو:"+this.yue) ؛ غير كافية ") ؛} آخر {this.yue- = qu ؛ system.out.println (" التوازن على البطاقة هو: "+this.yue) ؛}} // تحديد طريقة التجريدية لفتح الحساب التجريدي التجريدي kaihu () ؛}4. فئة الواجهة الرئيسية
package com.bank.unionpay ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ استيراد java.util.scanner ؛ الطبقة العامة Zujiemian {public void Zhujiemian () النظام ") ؛ system.out.println () ؛ system.out.println (" ****************************** ") ؛ system.out.println () ؛ list <string> li = new ArrayList <string> () ؛ li.add (" حساب الافتتاح ") ؛ li.add (" query ") ؛ li.add (" الإيداع ") ؛ li.add (" exit ") ؛ li.add (" فاتورة ") ؛ li.add (" exit ") ؛ for (int i = 0 ؛ i <5 ؛ i ++) {system.out.println (i+"------"+li.get (i)) ؛} system.out.println () ؛ system.out.println ("********************* يؤدي: ")؛}}الحزمة 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 adm2 يمتد Atm {private yinhang yhl = yinhang.abc ؛ Overridepublic void kaihu () {// طريقة فتح الحساب // أدخل اسم Cuxuka cxk = new cuxuka () ؛ جرب {scanner sc1 = new scanner (system.in) ؛ system.out.println ("الرجاء إدخال اسمك:") رقم بطاقة المعرف: ") ؛ لـ (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 ؛} آخر {system.out.println كلمة المرور: ") ؛ for (int ig = 0 ؛ ig> = 0 ؛ ig ++) {scanner sc3 = new scanner (system.in) ؛ string pass = sc3.nextline () ؛ string mm =" // d {6} "؛ if (pass.matches (mm)) كلمة المرور ") ؛}} // قم بإنشاء رقم بطاقة التوفير المكون من 6 أرقام عشوائي A = new Random () ؛ int [] ch = new int [6] c: ch) {str.append (c) ؛} s = str.toString () ؛ cxk.setcard (s) yinhanglei.getyinhanglei (). map.put (cxk.getcard () ، cxk) ؛ system.out.println ("رقم بطاقتك الجديد هو:"+cxk.getcard ()2. فئة بطاقة الادخار
package com.bank.abc ؛ استيراد java.util.scanner ؛ استيراد com.bank.unionpay.yinhang ؛ استيراد com.bank.unionpay.yinhangka ؛ فئة عامة cuxuka تنفذ بطاقة سلسلة خاصة ؛ private {// save card sentribute yinhang yinhang ؛ name private shenfen ؛ ()) getName () {return name ؛} public void setName (اسم السلسلة) {this.name = name ؛} السلسلة العامة getShenfen () {return Shenfen ؛} public void setshenfen (string shenfen) {this.shenfen = Shenfen ؛ card ؛} السلسلة العامة getPassword () {return password ؛} public void setPassword (سلسلة كلمة مرور) {this.password = password ؛} cuxuka () ؛ cu1.chaxun () ؛ الماسح الضوئي sc2 = new scanner (system.in) ؛ system.out.println ("الرجاء إدخال المبلغ الذي تريد إيداعه:") ؛ double cun = sc2.nextDouble () شكرًا لك على استخدام ") ؛} آخر {this.balance+= cun ؛ yinhanglei.getyinhanglei (). map.get (cu1.card). الطريقة public void chaxun () {بينما (true) {try {scanner sc = new scanner (system.in) ؛ system.out.println ("الرجاء إدخال رقم البطاقة الذي تريد الاستعلام عنه:") Temp: Yinhanglei.getyinhanglei (). map.keyset ()) {if (s.equals (temp)) {this.card = s ؛}} if (s.equals (card)) st1 = sc1.nextline () ؛ if (st1.equals (yinhanglei.getyinhanglei (). map.get (s) .gappassword ())) {system.out.println IS: المبلغ ") ؛ system.out.println () ؛ system.out.println (yinhanglei.getyinhanglei (). map.get (s)) ؛ break ؛} آخر {i ++ ؛ if (i == 3) {system.out.println (" خطأ في إدخال كلمة المرور أكثر من 3 مرات ") ؛ خطأ ") ؛}}}} آخر {system.out.println (" يرجى تأكيد ما إذا تم إدخال رقم البطاقة بشكل غير صحيح ") ؛}}} catch (استثناء e) {system.out.println ( cuxuka () ؛ cu.chaxun () ؛ الماسح الضوئي sc1 = ماسح ضوئي جديد (system.in) ؛ system.out.println ("الرجاء إدخال المبلغ الذي تريد سحبه:") ؛ double qu = sc1.nextdouble () ؛ // تنفيذ طريقة الانسحاب إذا (qu <balance) {this.balance- = qu ؛ yinhanglei.getyinhanglei (). map.get (cu.card) .Setbalance (التوازن) ؛ system.out.println ("الانسحاب ناجح ، المبلغ المتبقي هو:"+ yinhangle.getyinnanglei (). {system.out.println ("البيانات التي أدخلتها غير صالحة ، سيتم الخروج تلقائيًا! شكرًا على استخدام ") ؛؛} آخر {system.out.println (" رصيد غير كافٍ ") ؛}}@overridepublic void getyu () {// حساب التوازن cuxuka cu = new cuxuka () ؛ system.out.println (" المبلغ المتبقي "+cu.getbalance ()) ؛3. فئة المصرفية النموذجية المنفردة
package com.bank.abc ؛ استيراد java.util.arraylist ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ import com.bank.unionpay.yinhang ؛ public class yinhangle {// bank class attribute yinhang yinhang = ArrayList <> () ؛ الخريطة العامة <string ، cuxuka> map = new hashmap <> () ؛ // طريقة البناء الخاصة الخاصة yinhanglei () {super () ؛} private static yinhanglei bank = new yinhanglei () ؛4. فئة بطاقة الائتمان
package com.bank.abc ؛ فئة عامة Xinyongka تمتد cuxuka {// بناء سمة خاصة بك مزدوجة touzhi ؛ public double gettouzhi () {return touzhi ؛ الطريقة إذا ((Touzhi+getBalance ())> = qu) {system.out.println ("مبلغ Overdraw"+(Qu-getBalance ())) ؛؛} آخر {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 ؛ repare com.bank.abc.cuxuka ؛ Quality com.bank.unionpay.atm ؛ import com.bank.unionpay.zujiemian ؛ public kplic. args) {// صنع الواجهة الرئيسية cuxuka cxk = new cuxuka () ؛ // إنشاء الواجهة الرئيسية zujiemian zjm = new zujiemian () ؛ // أعلى استثناء حاول {// {scanner scanner (int i = 0 ؛ i> = 0 ؛ i ++) في = sc.nextint () ؛ // الدفاع عما إذا كان رقم الإدخال يفي برقم الواجهة إذا (في == 0 || في == 1 || في == 2 || في == 3 || في == 4) {// وظيفة فتح إذا (في == 0) {atm2 atm2 = جديد atm2 () ؛ atm2.kaihu () ؛ system.out.println ("************************************* if (في == 1) {system.out.println ("******************************") ؛ system.out.println ("لقد حددت كدالة الاستعلام") ؛ cxk.chaxun () ؛ متابعة ؛} // الوظيفة الافتراضية إذا (في في == 2) {system.out.println ("*********************************") ؛ system.out.println ("اختيارك هو دالة الإيداع") ؛ cxk.cun () ؛ متابعة ؛}/ وظيفة الانسحاب إذا (في == 3) {system.out.println ("***************************") ؛ system.out.println ("اختيارك هو وظيفة الانسحاب") ؛ cxk.qu () ؛ متابعة ؛} // وظيفة الخروج إذا (في == 4) ") ؛ break ؛}} // print else {system.out.println (" القائمة التي حددتها غير موجودة! ") ؛} // استثناء رميات الطباعة} catch (استثناء e) {system.out.println (" الإدخال غير صحيح ") ؛}}}نتيجة:
ما ورد أعلاه هو نظام المحطة الذاتية للخدمة الذاتية Java Simulated Bank التي أدخلها المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!