python5面向对象编程

可迭代对象可以用list()取出,也可以用for循环遍历,也可以用迭代器将其转化。
(range,容器数据类型,迭代器都是可迭代对象)
迭代器的取值方案:
1. next() 调用一次获取一次,直到数据被取完
2. list() 使用list函数直接取出迭代器中的所有数据
3. for 使用for循环遍历迭代器的数据

ATM项目

总体思路是一定要在项目进行前做好需求分析,然后找出所有要用上的对象和成员

下面具体给出所有对象和成员以及编程时的注意点:

银行卡对象:Card 存储银行卡信息

  • 卡号 cardid
    • 密码 password
    • 余额。 money
    • 是否锁卡islock
    用户对象:Person 存储用户信息
    • 用户名。 name
    • 身份证号. userid
    • 手机号. phone
    • 卡. card. 银行卡对象
    控制器对象: Controller 具体的操作控制类
    控制器对象中主要就是去实现ATM这个系统中的操作
    在上面定义的那十个方法
    init阶段可以在初始化时完成对文件的读取操作:这里从两个文件夹中用pickle进行反序列化并且读出来。作为两个字典的数据类型。
  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. 转帐:save_money
  5. 锁卡:lock
  6. 解卡:unlock
  7. 补卡:new_card
  8. 改密:change_pwd
    退出: save 保存时序列化后存入文件中

视图对象: Views。 显示操作界面的
1.欢迎界面 __showview 这里注意使用了私有成员,只能在当前类的内部去访问和操作,不能在类的外部进行操作
2.选择功能界面 choiceview #不是私有的了,其他我地方想调都可以

主函数Main()
主要负完成整体的功能流程运作。调用各个类。选择直接在init的时候就将view()类以及对用户选择的判断,从而调用相应的功能。
注意导包方式,main函数只能用绝对路径

数据的存储用文件
用户的卡号:user_dict user.txt
用户的身份证:卡号 user_id_dict userid.txt

注意在测试时,可以在自己的模块中加入
if name == 'main': #在当前模块作为主程序使用时执行

注意在测试文件的时候,如果直接用空的文档测试时会报错
使用pickle.load(f)加载pickle文件时,报错:EOFError: Ran out of input.
可能原因:文件为空。
尝试向文件夹中写点东西,还是会报错unpickling stack underflow
总结:
在使用pickle反序列化的时候,要预先导入二进制数据中存在的自定义类数据的类

你可能感兴趣的:(python5面向对象编程)