day_3 ATM實(shí)現(xiàn)相關(guān)功能

首先我們要做的就是登陸的方法了。

因?yàn)樯婕暗綇臄?shù)據(jù)庫中查找用戶的操作娄琉,所以我們需要用到前面的 DBHelper 類壹士,因?yàn)槊恳粋€(gè)方法都要使用數(shù)據(jù)庫,所以我把 db 作為 class 的一個(gè)屬性羔砾。

from User import User
from Item import Item
from DBHelper import DBHelper


class ATM:
    """定義ATM機(jī)的類"""
    def __init__(self):
        self._current_user = None
        self._db = DBHelper()

    # ------------登錄--------------------------
    def _login(self):
        while True:
            print("登錄ATM")
            number = input("請(qǐng)輸入卡號(hào):\n")
            db_user = self._db.get_user(number)
            if db_user:
                password = input("請(qǐng)輸入密碼:\n")
                if db_user.get_password() == password:
                    user = User(db_user.get_name(), db_user.get_number(),
                                password,
                                db_user.get_balance())
                    self._current_user = user
                    print("歡迎",user,"登錄")
                    return number
            print("賬戶或密碼錯(cuò)誤")

經(jīng)過調(diào)試,最終實(shí)現(xiàn)了初步的登錄功能:

image.png

用的是我室友名
正常來說偶妖,用戶登錄也是應(yīng)該做記錄的姜凄,不過這里我就不寫這么多了。
簡單實(shí)現(xiàn)就好趾访。

在用戶進(jìn)行登錄之后态秧,系統(tǒng)應(yīng)該提供菜單選項(xiàng),用來給用戶選擇操作選項(xiàng)扼鞋。
后來想想之前的記錄的問題申鱼,填寫信息的時(shí)候好像要求的是真實(shí)姓名,所以姓名是不能改的所以那個(gè)問題也就沒有了云头。

在線注冊(cè)功能:

是實(shí)現(xiàn)用戶直接注冊(cè)一個(gè)新的賬戶的功能润讥。用戶的卡號(hào)現(xiàn)在是由用戶自己輸入,而不是有系統(tǒng)自動(dòng)分配盘寡,所以還有待改進(jìn)楚殿。

    def open_an_account(self):
        """在線開戶功能"""
        while True:
            name = input("請(qǐng)輸入用戶名:")
            if name == "quit":
                return False
            password = input("請(qǐng)輸入密碼")
            re_password = input("請(qǐng)?jiān)俅屋斎朊艽a")
            number = input("請(qǐng)輸入卡號(hào)")
            # TODO 先讓用戶輸入卡號(hào), 正常來講應(yīng)該由系統(tǒng)分配
            if re_password == password:
                user = User(name, number, password, 0)
                self._db.insert_user(user)
                return True
            else:
                print("兩次輸入的密碼不符!請(qǐng)重新注冊(cè)")

這里倒是還沒出什么大問題竿痰。

image.png
image.png

現(xiàn)在有一點(diǎn)遺憾就是輸入密碼的那一塊脆粥,現(xiàn)在把密碼輸入變成*號(hào),那樣會(huì)更有安全性影涉,現(xiàn)在輸入密碼基本上是不會(huì)錯(cuò)的变隔。

在線銷戶

有了開戶功能,就有銷戶功能蟹倾。
銷戶是有個(gè)重要的事匣缘,所以需要再三確認(rèn):
于是就有了下面的代碼:

    def closing_an_account(self):
        """在線銷戶功能猖闪,刪除user表中額數(shù)據(jù)和log中的日志"""
        n = 3
        while n:
            password = input("請(qǐng)輸入密碼")
            if self._current_user.get_password() == password:
                confirm = input("請(qǐng)輸入“注銷賬戶”")
                if confirm == "注銷賬戶":
                    self._db.del_user(self._current_user.get_number())
                    return True
                else:
                    print("輸入錯(cuò)誤!/")
            else:
                print("密碼錯(cuò)誤肌厨,請(qǐng)重新輸入")
            n -= 1

從數(shù)據(jù)庫把室友的號(hào)刪了培慌,,

你號(hào)沒了柑爸!

接下來就是更改用戶摩瑪?shù)姆椒耍盒姨澁?dāng)時(shí)寫好了更改數(shù)據(jù)庫的方法吵护,現(xiàn)在寫起來事半功倍。

    def change_password(self):
        """在ATM機(jī)上一般是改不了密碼的表鳍,其他的幾個(gè)屬性也是改不了的馅而,但是
        我在DBHelper里寫的相關(guān)方法卻可以更改所有的屬性。"""
        n = 3
        while n:
            old_password = input("請(qǐng)輸入舊密碼")
            new_password = input("請(qǐng)輸入新密碼")
            re_new_password = input("請(qǐng)?jiān)俅屋斎胄旅艽a")
            if old_password == self._current_user.get_password():
                if new_password == re_new_password:
                    self._db.update_user(self._current_user, "password",
                                         new_password)
                    return True
                else:
                    print("新密碼不一致")
            else:
                print("密碼不正確")
            n = n-1
image.png

接下來是存款的功能:

中間有點(diǎn)小插曲譬圣,不過還是完成了瓮恭,本來不想實(shí)現(xiàn)日志添加的,但是還是實(shí)現(xiàn)了厘熟,為了試一試屯蹦,為了給室友加點(diǎn)存款,就先寫個(gè)循環(huán)盯漂。

    def deposit(self):
        """存款余額"""
        money = input("請(qǐng)輸入金額:")
        if self._db.update_user(self._current_user, "balance", int(money) +
                             self._current_user.get_balance()):
            status = "成功"
            print("存款成功")
        else:
            status = "失敗"
            print("存款失敗")
        item = Item(self._current_user, "存款", 1000, status)
        if self._db.insert_log(item):
            return True
image.png
image.png

。笨农。就缆。。谒亦。竭宰。emmmmm不對(duì),為什么都是1000

奧原來是前面記錄寫的有問題份招,我都寫1000切揭,,锁摔,但是也不對(duì)啊廓旬,余額都沒變呀。谐腰。孕豹。。但是


image.png

user表中的數(shù)據(jù)卻變了十气。励背。。

這是怎么回事砸西、叶眉、址儒、、衅疙、莲趣、
奧!~~~我明白了炼蛤,因?yàn)槲腋淖兞藬?shù)據(jù)庫中的數(shù)據(jù)妖爷,但是當(dāng)前的程序運(yùn)行時(shí),我的用戶的信息是么變的所以理朋。絮识。。

嗽上。所以我在改變用戶數(shù)據(jù)的時(shí)候就把ATM機(jī)的當(dāng)前用戶的屬性改變次舌。于是就有了下面的代碼:

    def deposit(self):
        """存款"""
        money = input("請(qǐng)輸入金額:")
        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

image.png

現(xiàn)在好了。兽愤。睡覺了.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末彼念,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子浅萧,更是在濱河造成了極大的恐慌逐沙,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洼畅,死亡現(xiàn)場離奇詭異吩案,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帝簇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門徘郭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丧肴,你說我怎么就攤上這事残揉。” “怎么了芋浮?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵抱环,是天一觀的道長。 經(jīng)常有香客問我纸巷,道長江醇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任何暇,我火速辦了婚禮陶夜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裆站。我一直安慰自己条辟,他們只是感情好黔夭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羽嫡,像睡著了一般本姥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杭棵,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天婚惫,我揣著相機(jī)與錄音,去河邊找鬼魂爪。 笑死先舷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滓侍。 我是一名探鬼主播蒋川,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼撩笆!你這毒婦竟也來了捺球?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤夕冲,失蹤者是張志新(化名)和其女友劉穎氮兵,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歹鱼,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泣栈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了醉冤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秩霍。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篙悯,死狀恐怖蚁阳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸽照,我是刑警寧澤螺捐,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站矮燎,受9級(jí)特大地震影響定血,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诞外,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一澜沟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峡谊,春花似錦茫虽、人聲如沸刊苍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽正什。三九已至,卻和暖如春号杏,著一層夾襖步出監(jiān)牢的瞬間婴氮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工盾致, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留主经,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓绰上,卻偏偏與公主長得像旨怠,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜈块,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一鉴腻、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 5,723評(píng)論 0 10
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,089評(píng)論 1 32
  • (心會(huì)) 背疼 其實(shí)源于 有愛一直在給你撐腰
    風(fēng)鳴心會(huì)閱讀 307評(píng)論 0 6
  • 高山流水唯有他知,若他已故百揭,我將何尋爽哎? 白鳳第一次見她,是因?yàn)楹湍f的一個(gè)賭注器一,他輸了课锌。他就只能跟墨鴉去看看那個(gè)不...
    良風(fēng)南城下閱讀 220評(píng)論 0 0