1. 程式人生 > >小練習-----銀行提款機系統

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

 

'''
人
類名:Person
屬性: 姓名  身份證號  電話號  卡

卡
類名:Card
屬性:卡號  密碼  餘額
行為:

銀行
類名:bank
屬性:使用者列表  提款機

提款機
類名:ATM
屬性:使用者字典
行為: 開戶 查詢 取款 儲存 轉賬 改密 鎖定 解鎖 補卡 銷戶

管理員
類名:admin
屬性:
行為:管理員介面  管理員登入 系統功能介面 退出
'''
from admin import Admin
from atm import ATM
import time,pickle,os
def main():
    #儲存所有使用者資訊
# all_user={} #列印介面 admin=Admin() #管理員開機 admin.printAdminView() if admin.admin_option(): return -1 #提款機物件 file_path = os.path.join(os.getcwd(), "all_users.txt") with open(file_path, "rb") as f: all_users = pickle.load(f) print(all_users) atm
=ATM(all_users) while True: # 管理員開機介面 admin.printSysFunctionView() #等待使用者操作 option=input("請輸入您的操作選項:").strip() if option=="1": print("開戶") atm.create_user() elif option=="2": atm.search_user_info() elif option=="
3": pass elif option=="4": pass elif option=="5": pass elif option=="6": pass elif option=="7": atm.lock_user() elif option=="8": atm.unlock_user() elif option=="9": pass elif option=="0": pass elif option=="t": if not admin.admin_option(): with open(file_path,"wb") as f: pickle.dump(atm.all_users,f) return -1 else: print("輸入有誤。請重新輸入。") time.sleep(2) if __name__=="__main__": main()
main.py
from card import Card
from user import User
import random
class ATM(object):
    def __init__(self,all_users):
        self.all_users=all_users
    def create_user(self):
        name=input("請輸入您的姓名:").strip()
        id_card=input("輸入您的身份證號碼:").strip()
        phone=input("請輸入您的電話號碼").strip()

        pre_store_money=int(input("請輸入預存款金額:").strip())
        if pre_store_money<0:
            print("預存款輸入有誤,開戶失敗")
            return -1
        one_passwd=input("請輸入密碼").strip()
        if not self.check_password(one_passwd):
            print("祕密輸入錯誤,開戶失敗。")
            return -1
        card_str=self.random_card_id()
        card=Card(card_str,one_passwd,pre_store_money)
        user=User(name,id_card,phone,card)
        self.all_users[card_str]=user
        print("開戶成功,請牢記卡號:%s和密碼:%s"%(card_str,one_passwd))

    def search_user_info(self):
        car_num=input("請輸入您的卡號").strip()
        user=self.all_users.get(car_num)
        if not user:
            print("該卡號不存在!查詢失敗。。。。。")
            return -1

        if user.card.card_lock:
            print("該卡已經被鎖定!!請解鎖後再使用其他功能。。。。")
        if not self.check_password(user.card.card_passwd):
            user.card.card_lock = True
            print("祕密錯誤。該卡已經被鎖定!!請解鎖後再使用其他功能。。。。")
            return -1
        print("賬號:%s    餘額:%d"%(user.card.card_id,user.card.card_money))
    def get_money(self):
        car_num = input("請輸入您的卡號").strip()
        user = self.all_users.get(car_num)
        if not user:
            print("該卡號不存在!取款失敗。。。。。")
            return -1

        if user.card.card_lock:
            print("該卡已經被鎖定!!請解鎖後再使用其他功能。。。。")
        if not self.check_password(user.card.card_passwd):
            user.card.card_lock = True
            print("祕密錯誤。該卡已經被鎖定!!請解鎖後再使用其他功能。。。。")
            return -1

        money=int(input("請輸入要取款金額").strip())
        if money>user.card.card_money:
            print("餘額不足,取款失敗。")
            return -1
        if money<user.card.card_money:
            print("金額錯誤,取款失敗。")
            return -1
        user.card.card_money-=money
        print("取款成功!!!賬號:%s    餘額:%d" % (user.card.card_id, user.card.card_money))

    def save_money(self):
        pass
    def transfer_money(self):
        pass
    def change_passwd(self):
        pass
    def lock_user(self):
        car_num=input("請輸入您的卡號").strip()
        user=self.all_users.get(car_num)
        if not user:
            print("該卡號不存在!鎖卡失敗。。。。。")
            return -1
        if user.card.card_lock:
            print("該卡已經被鎖定!!請解鎖後再使用其他功能。。。。")
        if not self.check_password(user.card.card_passwd):
            print("祕密錯誤。鎖卡失敗。。。。。。。")
            return -1
        temp_id_card=input("請輸入 您的身份證號碼:").strip()
        if temp_id_card != user.id_card:
            print("身份證號碼驗證錯誤。鎖卡失敗。。。。。。。")
            return -1
        user.card.card_lock=True
        print("鎖卡成功")
    def unlock_user(self):
        car_num = input("請輸入您的卡號").strip()
        user = self.all_users.get(car_num)
        if not user:
            print("該卡號不存在!解鎖失敗。。。。。")
            return -1
        if not user.card.card_lock:
            print("該卡沒有被鎖定!!無需解鎖。。。。")

        if not self.check_password(user.card.card_passwd):
            print("祕密錯誤。解卡失敗。。。。。。。")
            return -1
        temp_id_card=input("請輸入 您的身份證號碼:").strip()
        if temp_id_card != user.id_card:
            print("身份證號碼驗證錯誤。解卡失敗。。。。。。。")
            return -1
        user.card.card_lock=False
        print("解卡成功")
    def new_card(self):
        pass
    def kill_user(self):
        pass

    def check_password(self,real_passwd):
        for i in range(3):
            temp_passwd=input("請輸入密碼")
            if temp_passwd == real_passwd:
                return True
            else:
                print("密碼輸入錯誤。")
        return False

    def random_card_id(self):
        while True:

            str1=""
            for i in range(6):
                ch=chr(random.randrange(ord("0"),ord("9")+1))
                str1+=ch
            if not self.all_users.get(str1):
                return str1
            # if str1 in self.all_users:
            #     print("有人,重新來過。")
            # else:
            #     self.all_users[str1]=None
            #     return str1
atm.py
import time
class Admin(object):
    admin="1"
    password="1"

    def printAdminView(self):
        print("**************************************************************************")
        print("**************************************************************************")
        print("                           歡迎登入中國銀行                               ")
        print("**************************************************************************")
        print("**************************************************************************")

    def printSysFunctionView(self):
        print("**************************************************************************")
        print("*                  開戶(1)           查詢( 2)                        *")
        print("*                  取款(3)           存款( 4)                        *")
        print("*                  轉賬(5)           改密(6)                         *")
        print("*                  鎖定(7)           解鎖(8)                        *")
        print("*                  補卡(9)           銷戶(0)                         *")
        print("*                             退出(t)                                *")

    def admin_option(self):
        input_admin = input("請輸入管理員賬號:").strip()
        if self.admin != input_admin:
            print("輸入賬號有誤")
            return -1
        input_passwd = input("請輸入管理員密碼").strip()
        if self.password != input_passwd:
            print("祕密輸入有誤。")
            return -1
        print("操作成功!請稍後。。。。。。。。。")
        time.sleep(2)
        return 0
admin.py
class User(object):
    def __init__(self,name,id_card,phone,card):
        self.name=name
        self.id_card=id_card
        self.phone=phone
        self.card=card
user.py
class Card(object):
    def __init__(self,card_id,card_passwd,card_money):
        self.card_id=card_id
        self.card_passwd=card_passwd
        self.card_money=card_money
        self.card_lock=False
card.py