小练习-----银行提款机系统

Posted 独孤_败天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小练习-----银行提款机系统相关的知识,希望对你有一定的参考价值。

技术分享图片

 

技术分享图片
‘‘‘
人
类名: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

 

以上是关于小练习-----银行提款机系统的主要内容,如果未能解决你的问题,请参考以下文章

使用Java实现数据库编程—06 项目:银行ATM取款机系统

向银行系统添加利率和透支费

基于JavaSwing ATM取款机系统的设计和实现

求解C++模拟银行排队问题

提款机转账多久到账?

提款机转账多久到账?