python5面向?qū)ο缶幊?/h2>

可迭代對象可以用list()取出,也可以用for循環(huán)遍歷,也可以用迭代器將其轉(zhuǎn)化。
(range,容器數(shù)據(jù)類型,迭代器都是可迭代對象)
迭代器的取值方案:
1. next() 調(diào)用一次獲取一次,直到數(shù)據(jù)被取完
2. list() 使用list函數(shù)直接取出迭代器中的所有數(shù)據(jù)
3. for 使用for循環(huán)遍歷迭代器的數(shù)據(jù)

ATM項目

總體思路是一定要在項目進行前做好需求分析,然后找出所有要用上的對象和成員

下面具體給出所有對象和成員以及編程時的注意點:

銀行卡對象:Card 存儲銀行卡信息

  • 卡號 cardid
    ? 密碼 password
    ? 余額。 money
    ? 是否鎖卡islock
    用戶對象:Person 存儲用戶信息
    ? 用戶名。 name
    ? 身份證號. userid
    ? 手機號. phone
    ? 卡. card. 銀行卡對象
    控制器對象: Controller 具體的操作控制類
    控制器對象中主要就是去實現(xiàn)ATM這個系統(tǒng)中的操作
    在上面定義的那十個方法
    init階段可以在初始化時完成對文件的讀取操作:這里從兩個文件夾中用pickle進行反序列化并且讀出來。作為兩個字典的數(shù)據(jù)類型。
  1. 注冊 :regiser 將個人信息添加到字典里
    cardobj = Card(cardnum,password) # 實例化并把卡號,密碼傳給Card類接收,并由card接收
    person = Person(name,userid,phone,cardobj) #把用戶名,身份證號,手機號,銀行卡對象傳給Person類接收,并由person用戶接收
    self.user_id_dict[userid] = cardnum 身份證:卡號
    self.user_dict[cardnum] = person 卡號:用戶對象

注冊階段注意要將隨機給的卡號還有各種信息

  1. 查詢:query
  2. 取款:get_money
  3. 存款:add_money
  4. 轉(zhuǎn)帳:save_money
  5. 鎖卡:lock
  6. 解卡:unlock
  7. 補卡:new_card
  8. 改密:change_pwd
    退出: save 保存時序列化后存入文件中

視圖對象: Views。 顯示操作界面的
1.歡迎界面 __showview 這里注意使用了私有成員,只能在當(dāng)前類的內(nèi)部去訪問和操作,不能在類的外部進行操作
2.選擇功能界面 choiceview #不是私有的了,其他我地方想調(diào)都可以

主函數(shù)Main()
主要負完成整體的功能流程運作。調(diào)用各個類。選擇直接在init的時候就將view()類以及對用戶選擇的判斷,從而調(diào)用相應(yīng)的功能。
注意導(dǎo)包方式,main函數(shù)只能用絕對路徑

數(shù)據(jù)的存儲用文件
用戶的卡號:user_dict user.txt
用戶的身份證:卡號 user_id_dict userid.txt

注意在測試時,可以在自己的模塊中加入
if name == 'main': #在當(dāng)前模塊作為主程序使用時執(zhí)行

注意在測試文件的時候,如果直接用空的文檔測試時會報錯
使用pickle.load(f)加載pickle文件時,報錯:EOFError: Ran out of input.
可能原因:文件為空。
嘗試向文件夾中寫點東西,還是會報錯unpickling stack underflow
總結(jié):
在使用pickle反序列化的時候,要預(yù)先導(dǎo)入二進制數(shù)據(jù)中存在的自定義類數(shù)據(jù)的類

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容