美文网首页
day_4 实现ATM机取款、查询余额、退出等功能

day_4 实现ATM机取款、查询余额、退出等功能

作者: DKider | 来源:发表于2019-06-16 19:46 被阅读0次

    取款

    这是接着昨天存款的功能写的,我发现存款和取款就是差在一个加一个减而已。

        def withdrawal(self):
            """用来实现在线取款功能"""
            money = input("请输入金额:")
            if self._db.update_user(self._current_user,
                                    "balance", int(money) -
                                               self._current_user.get_balance()):
                self._current_user.set_balance(int(money) -
                                               self._current_user.get_balance())
                status = "成功"
                print("取成功")
            else:
                status = "失败"
                print("取款失败")
            item = Item(self._current_user, "取款", int(money), status)
            if self._db.insert_log(item):
                return True
    
    

    接下来是查询余额、和退出

    但是这两个功能实现起来太简单了,就直接代码了,也懒得测试了。

    # -----------------查询余额------------------
        def check_money(self):
            print(self._current_user)
            return True
    
        # -----------------退出账号------------------
        def quit(self):
            self._current_user = None
    

    接下来就是写run()方法来调用这些个方法了,如何让他们之间的逻辑完整。

    ATM机首先应该是插卡,然后识别卡号,输入密码登录的这样的一种功能,但是我现在肯定不能直接去做一个RFID卡来,那不现实,所以,就把流程改成:

    如果有卡则先登陆。没有卡先注册,所以一开始就只有两个选项,所以就是下面这样。

        def run(self):
            while True:
                print("欢迎使用------DK--ATM 机-------------\n")
                print("1. 登录\n")
                print("2. 注册\n")
                print("------------------------------------\n")
                code = input("(1/2):")
                if code == '1':
                    self._login()
                    break
                elif code == '2':
                    self.open_an_account()
                    break
            self.menu()
    

    下面的menu是一个现实所有功能的方法:

        def menu(self):
            """"""
            while True:
                print(self._current_user)
                print("1. 存款\n")
                print("2. 取款\n")
                print("3. 查询\n")
                print("4. 退出\n")
                print('-' * 36)
                code = input("(1/2/3/4):")
                if code == '1':
                    self.deposit()
                elif code == '2':
                    self.withdrawal()
                elif code == '3':
                    self.check_money()
                elif code == '4':
                    self.quit()
                    break
    

    最后使用的效果如下:


    image.png image.png image.png image.png image.png

    。。。emmmmm好像不太对,怎么取了200就成 - 的了呢????

    奥。原来是前面的取款的时候减错了,。。

    现在改过来:

        def withdrawal(self):
            """用来实现在线取款功能"""
            money = input("请输入金额:")
            if self._db.update_user(self._current_user,
                                    "balance", self._current_user.get_balance() -
                                               int(money)):
                self._current_user.set_balance(self._current_user.get_balance() -
                                               int(money))
                status = "成功"
                print("取款成功")
            else:
                status = "失败"
                print("取款失败")
            item = Item(self._current_user, "取款", int(money), status)
            if self._db.insert_log(item):
                return True
    
    

    现在用前面注册的来登录:

    image.png image.png image.png image.png image.png

    emmmm 还有点小瑕疵。就是,我退出当前账号后并不是想退出程序,而是换一个账号,现在需要把他换成退出登陆的当前的账号后,返回那一个登录和注册的界面。

        def quit(self):
            self._current_user = None
            self.run()
            return True
    

    现在改成这样就好了,在推车当前登录的账号后,就直接回到第一个菜单。

    image.png

    就像现在这样,嗯么么么,差不对都完成了吧!!!!

    恭喜恭喜,同喜同喜。

    奥对了,还有数据库的相关记录还么有看。

    image.png

    相关文章

      网友评论

          本文标题:day_4 实现ATM机取款、查询余额、退出等功能

          本文链接:https://www.haomeiwen.com/subject/oxgwfctx.html