一个练习题,本人又做了一些功能的增加和完善。题目是:个人信息修改小程序。

IDE: Pycharm

OS: mac

功能需求:

1.输入管理员和密码,正确后登录系统,打印:

1. 打印个人信息
2. 修改个人信息
3. 修改密码
4. 添加个人信息

源码如下:

# 个人信息修改,查询小程序def print_personal_info(account_dic, username):"""print user info:param account_dic: all account's data:param username: username:return: None"""person_data = account_dic[username]info = '''------------------------Name:   %sAge:    %sJob:    %sDept:   %sPhone:  %s-------------------------'''%(person_data[0],person_data[2],person_data[3],person_data[4],person_data[5],)print(info)def save_back_to_file(account_dic):"""把account_dic 转成字符串格式, 写回文件:param account_dic::return:"""with open('account.txt', mode='a', encoding='utf-8') as f:f.seek(0)  # 回到文件头f.truncate()  # 清空原文件for k in account_dic:row = ','.join(account_dic[k])f.write('%s\n'%row)f.flush()def change_personal_info(account_dic, username):"""change user info,思路如下1.把这个人的每个信息打印出来,让其选择改哪个字段,用户选择了的数字,正好是字段的索引,这样直接把字段找出来改掉就可以了2.改完后,还要把这个新数据重新写回到account.txt,由于改完后的新数据是dict类型,还需把dict转成字符串后,再写回硬盘:param account_dic:all account's data:param username:username:return:None"""person_data = account_dic[username]# print('person data:', person_data)column_names = ['Name', 'Password', 'Age', 'Job', 'Dept', 'Phone']print('1. ' + person_data[0])for index, k in enumerate(person_data):if index > 1: #0 is username and 1 is passwordprint('%s. %s:%s'%(index, column_names[index],k))choice = input('[select column id to change]:').strip()if choice.isdigit():choice = int(choice)if choice > 0 and choice < len(person_data):   # index不能超出列表长度边界column_data = person_data[choice]  # 拿到修改的数据print('current value>:', column_data)new_val = input('new value>:').strip()if new_val: # 不能为空person_data[choice] = new_valprint(person_data)save_back_to_file(account_dic) # 改完写回文件else:print('不能为空....')# 修改密码
def change_password(account_dic, username):"""修改个人密码:param account_dic: 用户信息字典:param username: 用户名:return: None"""new_password = input('new password>:').strip()if new_password:  # 不能为空account_dic[username][1] = new_passwordsave_back_to_file(account_dic)  # 改完写回文件else:print('不能为空....')def add_personal_info(account_dic, username):"""增加个人信息:param account_dic: 用户信息字典:return: None"""# 要添加的个人信息password = input('请输入密码:')age = input('请输入年龄:')position = input('请输入工作:')depart = input('请输入部门')phone = input('请输入电话:')info = '''------------------------Name:       %s,Password:   %s,Age:        %s,Job:        %s,Dept:       %s,Phone:      %s-------------------------'''%(username, password, age, position, depart, phone)print(info)account_dic[username] = [username, password, age, position, depart, phone]save_back_to_file(account_dic)# 便于查询操作,把文件变成字典
account_file = 'account.txt'
accounts = {}
# 把账户数据从文件里读出来,变成dict,这样后面就好查询了
with open(account_file, 'r+', encoding='utf-8') as f:raw_data = f.readlines()  # 读取所有的行数据,列表形式for line in raw_data:line = line.strip()if not line.startswith('#'):items = line.split(',')  # 行数据变成列表accounts[items[0]] = items  # 用首个元素name当作accounts字典的键,行数据列表变成值# 主界面
menu = '''
1. 打印个人信息
2. 修改个人信息
3. 修改密码
4. 添加个人信息
'''
count = 0
while count < 3:username = input('Administrator:').strip()password = input('Password:').strip()if username in accounts:if password == accounts[username][1]:  # 字典的值的第2项是密码print('welcome %s'.center(50, '-') %username)while True:print(menu)user_choice = input('>>>').strip()if user_choice.isdigit():user_choice = int(user_choice)if user_choice == 1:print_personal_info(accounts, username)elif user_choice == 2:change_personal_info(accounts, username)elif user_choice == 3:change_password(accounts, username)elif user_choice == 4:username = input('请输入姓名:')add_personal_info(accounts, username)elif user_choice == 'q':exit('bye.')else:print('Wrong username or password!')else:print('Username does not exist!')count += 1
else:print('too many attempts')

运行结果如下图:

Python编程--个人信息修改小程序相关推荐

  1. 使用python完成的一个烟花小程序-厉害了,我用Python写了一个自动回复拜年信息的小程序!...

    大年三十到年初一,有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神.一位大神程序员今年就用python拯救了自己的新年假期.这里分享这位社区博主happycc ...

  2. python自动填写小程序表单_新年好!教大家用Python写一个自动回复拜年信息的小程序!...

    原标题:新年好!教大家用Python写一个自动回复拜年信息的小程序! 过年期间,想必大家都收到很多拜年信息吧!有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神 ...

  3. 纯 python 开发批量读取照片 Exif 信息的小程序

    自己动手写一些小程序解决工作中的问题,是学习 python 的高效途径.这中间会遇到一些不动手想不到的问题,一个一个地解决它们,你 python 开发水平就会突飞猛进! 本文总结一下实战 python ...

  4. 计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp校园服务微信小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  5. 学生学python编程---实现贪吃蛇小游戏+源码

    学生学python编程---实现贪吃蛇小游戏+源码 前言 主要设计 1.蛇的表示 2.蛇怎么移动? 3.玩家控制小蛇移动功能的实现 4.如何判定游戏结束? 应用知识点 1.python知识点 1.1 ...

  6. 计算机毕业设计Python+uniapp水果外卖销售小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp水果外卖销售小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  7. 计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp学生考勤系统小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  8. 计算机毕业设计Python+uniapp学生课堂考勤小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp学生课堂考勤小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  9. 计算机毕业设计Python+uniapp社区便利店销售小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp社区便利店销售小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyt ...

最新文章

  1. python生成订单号或生成任意序列
  2. m-orchastration system
  3. java8 list切片_Java8新特性_创建 Stream、流筛选与切片
  4. My First Window构造过程,SendMessage同步,PostMessage异步
  5. Java后端带参跨域访问_java后端解决请求跨域
  6. Java基础知识——Java集合详解
  7. linux运算_CentOS「linux」学习笔记22:算术运算符、逻辑运算符、关系运算符
  8. 大学c语言编程模板,c语言编程模板
  9. php密码怎么用md5,如何使用PHP使用MD5加密此密码?
  10. drawforeground只有鼠标事件进入才刷新_为什么移动鼠标会让操作系统跑得更快?...
  11. STM32工作笔记0098---Windows下的Linux环境_Cygwin_MinGW_MSYS_MSYS2_之间的关系
  12. java spark yarn_《Spark官方文档》在YARN上运行Spark
  13. NLP是百度的核心技术之一
  14. 【netlimiter】的使用
  15. word为什么前面空白但是字上不去?
  16. 计算机跨考专业基础差复试,跨考计算机过来人教你备考:从初试到复试
  17. 听java技术讲座心得体会_听讲座心得体会范文3篇
  18. linux14.04设置DNS,Ubuntu 16.04修改配置静态IP和DNS
  19. 信息安全建设之基于开源搭建零信任网关-原理篇
  20. Docker入门的亿点点学习

热门文章

  1. 【专题】经典DP问题(上)
  2. 如何计算冲突域和广播域-图解分析
  3. 利用Beacon 监控Tuxedo
  4. 【无标题】USB2514i USB HUB使用经验总结
  5. 解决linux系统网络时常断开的问题
  6. 利用Python将选择题、多选题导入Anki
  7. CCNA第三天(交换机)
  8. 通过站点优化记录规划书
  9. Android打开手机的手电筒
  10. 神经网络与深度学习-chapter2 反向传播算法