ATM

这个作业属于哪个课程 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/
这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11477
这个作业的目标
学号 <3190704119>
class User: //用户信息存储
def __init__(self,name,id,tel,card):
    self.name = name
    self.id = id
    self.tel = tel
    self.card = card
@staticmethod
def xieru(x):
    path =os.path.join(os.getcwd(),'a.db')
    f = open(path,'wb')
    pickle.dump(x,f)
    f.close()
@staticmethod
def duqu():
    path = os.path.join(os.getcwd(),'a.db')
    f = open(path,'rb')
    a = pickle.load(f)
    f.close()
    return a

class Admin: //管理员账号
def init(self,name,passwd):
self.name = name
self.passwd = passwd

def login(self):
    for i in range(3):
        name = input('输入管理员账号:')
        passwd = input('输入管理员密码:')
        if name == self.name and passwd == self.passwd :
            print('登陆成功!')
            return True
        else:
            print('登录失败!')

class Card:
def init(self,num,money,pwd):
self.num = num
self.money = money
self.pwd = pwd
self.clock = False

import random

class Atm:
def init(self):
self.user_dict = {}

def welcome(self):
    print('*' * 30)
    print('*' + " " * 6 + '开户(1)' + '  ' + '查询(2)' + ' ' * 6 + '*')
    print("*" + " " * 6 + '取款(3)' + '  ' + '存款(4)' + ' ' * 6 + '*')
    print("*" + " " * 6 + '转账(5)' + '  ' + '改密(6)' + ' ' * 6 + '*')
    print("*" + " " * 6 + '锁定(7)' + '  ' + '解锁(8)' + ' ' * 6 + '*')
    print("*" + " " * 6 + '销户(9)' + '  ' + '退出(0)' + ' ' * 6 + '*')
    print('*' * 30)
def mkcard(self):
    cardid = ''
    for i in range(6):
        a = str(random.randint(0,9))
        cardid += a
    return cardid

if name == 'main':

atm = Atm()     //管理员身份进入
admin = Admin('余太龙','123456')



if admin.login():
    try:
        atm.user_dict = User.duqu()
    except Exception as e:
        print(' ')
    while True:
        atm.welcome()
        print(atm.user_dict)
        choice = int(input('请输入想要执行的操作:'))
        if choice == 1:          //开户
            name = input('输入姓名:')
            cid = input('身份证号:')
            tel = input('手机号:')
            pwd1 = input('输入密码:')
            pwd2 = input('再次确认密码:')
            if pwd1 == pwd2 :
                num = atm.mkcard()
                money = int(input('请输入开户金额(>=10$):'))
                if money < 10 :
                    print('金额太少,开户失败')
                    continue
                card = Card(num,money,pwd2)
                user = User(name,cid,tel,card)
                atm.user_dict[num] = user
                # User.xieru(fdy.user_dict)
                print('开户成功,您的卡号为:%s 卡上余额%.2f:'%(num,money))
            else:
                print('密码不一致,开户失败')


        elif choice == 2:      //查询
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                if user.card.clock == False:
                    for i in range(3):
                        pwd = input('请输入密码:')
                        if pwd == user.card.pwd:
                            print('卡号:%s 姓名:%s 手机号:%s 余额:%.2f¥'%
                                  (num,user.name,user.tel,user.card.money))
                            break
                        else:
                            print('密码错误!')
                    else:
                        print('密码错误三次,卡已被锁!')
                        user.card.clock = True

                        # '''此处切记要将字典信息再保存一遍'''
                        # User.xieru(fdy.user_dict)
                else:
                    print('此卡已锁,请先解锁!')
            else:
                print('卡号不存在!')


        elif choice == 3:               //取款
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                if user.card.clock == False:
                    for i in range(3):
                        pwd = input('请输入密码:')
                        if pwd == user.card.pwd:
                            qumoney = int(input('请输入取款金额:'))
                            if qumoney <= user.card.money:
                                user.card.money-=qumoney
                                # User.xieru(fdy.user_dict)
                                print('取款成功!卡上余额:%.2f¥'%(user.card.money))
                                break
                            else:
                                print('余额不足!')
                                break
                        else:
                            print('密码错误!')
                    else:
                        print('密码错误三次,卡已被锁!')
                        user.card.clock = True
                        # User.xieru(fdy.user_dict)
                else:
                    print('此卡已锁,请先解锁!')
            else:
                print('卡号不存在!')


        elif choice == 4:                      //存款
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                if user.card.clock == False:
                    for i in range(3):
                        pwd = input('请输入密码:')
                        if pwd == user.card.pwd:
                            qumoney = float(input('请输入存款金额:'))
                            user.card.money += qumoney
                            # User.xieru(fdy.user_dict)
                            print('存款成功!卡上余额:%.2f¥'%(user.card.money))
                            break
                        else:
                            print('密码错误!')
                    else:
                        print('密码错误三次,卡已被锁!')
                        user.card.clock = True
                        # User.xieru(fdy.user_dict)
                else:
                    print('此卡已锁,请先解锁!')
            else:
                print('卡号不存在!')


        elif choice == 5:            //转账
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                if user.card.clock == False:
                    for i in range(3):
                        pwd = input('请输入密码:')
                        if pwd == user.card.pwd:
                            qumoney = float(input('请输入转账金额:'))
                            num1 = input('请输入对方卡号:')
                            if num1 in atm.user_dict:
                                user1 = atm.user_dict.get(num1)
                                if qumoney <= user.card.money:
                                    print('y:确认转账 n:取消转账')
                                    answer = input('')
                                    if answer == 'y':
                                        user.card.money-=qumoney
                                        user1.card.money+=qumoney
                                        # User.xieru(fdy.user_dict)
                                        print('转账成功!卡上余额:%.2f¥'%(user.card.money))
                                        break
                                    elif answer == 'n':
                                        print('已取消转账!')
                                        break
                                else:
                                    print('金额不足!')
                                    break
                            else:
                                print('对方卡号不存在!')
                                break
                        else:
                            print('密码错误!')
                    else:
                        print('密码错误三次,卡已被锁!')
                        user.card.clock = True
                        # User.xieru(fdy.user_dict)
                else:
                    print('此卡已锁,请先解锁!')
            else:
                print('卡号不存在!')



        elif choice == 6:                 //修改密码
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                if user.card.clock == False:
                    for i in range(3):
                        pwd = input('请输入密码:')
                        if pwd == user.card.pwd:
                            pwd1 = input('请输入新的密码:')
                            pwd2 = input('请再次输入新的密码:')
                            if pwd1 == pwd2 :
                                user.card.pwd = pwd2
                                # User.xieru(fdy.user_dict)
                                print('密码修改成功!')
                                break
                        else:
                            print('密码错误!')

                    else:
                        print('密码错误三次,卡已被锁!')
                        user.card.clock = True
                        # User.xieru(fdy.user_dict)
                else:
                    print('此卡已锁,请先解锁!')
            else:
                print('卡号不存在!')


        elif choice == 7:              //冻结账户
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                pwd = input('请输入密码:')
                if pwd == user.card.pwd:
                    user.card.clock = True
                    # User.xieru(fdy.user_dict)
                    print('卡已锁!')
                else:
                    print('密码错误!')
            else:
                print('卡号无效!')


        elif choice == 8:                 //解冻
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                pwd = input('请输入密码:')
                if pwd == user.card.pwd:
                    user.card.clock = False
                    # User.xieru(fdy.user_dict)
                    print('卡已解锁!')
                else:
                    print('密码错误!')
            else:
                print('卡号无效!')


        elif choice == 9:                 //销户
            num = input('请输入卡号:')
            if num in atm.user_dict:
                user = atm.user_dict.get(num)
                if user.card.clock == False:
                    for i in range(3):
                        pwd = input('请输入密码:')
                        if pwd == user.card.pwd:
                            print('确定要销户吗?')
                            answer = input('y/n:')
                            if answer == 'y':
                                atm.user_dict.pop(num)
                                print('销户成功!')
                                User.xieru(atm.user_dict)
                                break
                            else:
                                print('已取消操作!')
                                break
                        else:
                            print('密码错误!')
                    else:
                        print('密码错误三次,卡已被锁!')
                        user.card.clock = True
                        # User.xieru(fdy.user_dict)
                else:
                    print('此卡已锁,请先解锁!')
            else:
                print('卡号不存在!')
        elif choice == 0:
            #程序正常退出保存数据(非正常退出则无法保存)
            User.xieru(atm.user_dict)
            break






posted on 2020-11-18 21:48  文皓的皓  阅读(199)  评论(0编辑  收藏  举报

导航