小練習-----銀行提款機系統
阿新 • • 發佈:2018-11-01
''' 人 類名:Person 屬性: 姓名 身份證號 電話號 卡 卡 類名:Card 屬性:卡號 密碼 餘額 行為: 銀行 類名:bank 屬性:使用者列表 提款機 提款機 類名:ATM 屬性:使用者字典 行為: 開戶 查詢 取款 儲存 轉賬 改密 鎖定 解鎖 補卡 銷戶 管理員 類名:admin 屬性: 行為:管理員介面 管理員登入 系統功能介面 退出 ''' from admin import Admin from atm import ATM import time,pickle,os def main(): #儲存所有使用者資訊main.py# 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()
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 str1atm.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 0admin.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=carduser.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=Falsecard.py