1.需要实现的功能

在一个文件里储存多个用户的个人信息,包含用户名、用户密码、年龄、职位、部门、手机号,用户数据结构如下:

yc,mima1234,25,master,biology,18771013309

jack,ycccycu,28,ceo,it,1312312314

rose,sad21312,23,model,art,213212421

输入用户名与密码,登陆系统,打印如下选项:

修改个人信息

打印个人信息

修改密码

退出程序

每个选项写一个方法

登陆输错3次,退出程序

2.程序流程简图:

3.程序源码

# -*- coding: utf-8 -*-

# 用户信息保存在UserList.txt中,格式为XX,XXXXXX,XXXXX用逗号分隔

# 被锁定的用名保存在LockList.txt中

import sys

import os

locked_user = open('LockList.txt','r+')

locked_name = locked_user.readlines()

def get_data(x): # 用来获取用户所有的信息表,并返回值

with open('UserList.txt', 'r') as user_file:

user_list = user_file.readlines()

user_file.close()

for user_line in user_list:

data_list = user_line.strip('\n').split(',')

user = data_list[0]

if user == x:

return data_list

else:

return False

def print_data(): # 用来打印用户信息的工具

data_list = get_data(username)

ifo = '''-------welcome to my city------

name: %s

age : %s

job : %s

Dept: %s

Phone: %s

''' % (data_list[0], data_list[2], data_list[3], data_list[4], data_list[5])

return print(ifo)

def change_data(x): # 用来修改用户信息的工具,包括修改密码

data_list = get_data(username)

f_name = 'UserList.txt'

f_new_name = "%s.new" % f_name

f = open(f_name, 'r+', encoding="utf-8")

f_new = open(f_new_name, 'w+', encoding='utf-8')

current_data = [data_list[0], data_list[2], data_list[3], data_list[4], data_list[5]]

if x == 1:

for index,item in enumerate(current_data):

print(index,item)

num = int(input('请输入你所需要更改的项目序号:'))

new_str = input('请输入你的新信息:')

current_data[num] = new_str # 进行内容的替换

current_data.insert(1, data_list[1])

else:

num = 1

new_str = input('请输入你的新信息:')

current_data.insert(1,new_str)

map(str, current_data)

str_line = ','.join(current_data)

for line in f.readlines():

old_list = line.strip('\n').split(',')

old_line = line.strip('\n')

current_user = old_list[0]

if current_user == username:

new_line = line.replace(old_line, str_line)

else:

new_line = line

f_new.write(new_line)

f.close()

f_new.close()

os.replace(f_new_name, f_name)

count = 0

while count < 3:

username = input("请输入你的用户名:")

for locked_line in locked_name:

if username == locked_line.strip('\n'):

print('该用户已被锁定')

sys.exit()

data_list = get_data(username)

if data_list:

passkey = data_list[1]

password = input("请输入你的密码:")

if password == passkey:

print("欢迎您的到来!")

# 进入用户信息修改功能

while True:

print('''

-------欢迎来的新世界-------

1.修改个人信息

2.打印个人信息

3.修改密码

4.退出程序

''')

choice = int(input('请输入你的选择:'))

if choice == 1:

change_data(1)

continue

elif choice == 2:

print_data()

continue

elif choice == 3:

change_data(3)

continue

else: # 输入其他选项将退出程序

sys.exit()

else:

count += 1

print("输入错误%s次,三次后将退出,并锁定用户!"%count)

if count == 3:

locked_user.write(username + '\n')

locked_user.close()

sys.exit()

break

else:

print("该用户不存在")

count += 1

continue

修改个人信息 python_修改个人信息的程序相关推荐

  1. 实现对学生信息的修改操作

    返回目录:<学生信息管理系统(Java+JSP)> 本篇博客主要实现对学生信息的修改操作: 步骤1.在学生信息的显示页面(即student.jsp页面)中,在表格最后增加一列"修 ...

  2. 用户控件(显示用户信息,修改用户名密码)的WebPart预览版

    *********************************************************************** *                            ...

  3. shell获取git最近一次提交信息_Git修改commit提交信息

    当进行一次commit提交的时候,可以附带简短的信息说明,代码如下:[Shell] 纯文本查看 复制代码$ commit -m "蚂蚁部落提交" 在-m命令后面跟着的"蚂 ...

  4. php v9 如何获取超级管理员权限,phpcms v9 增加后台管理员其他权限角色可以查看信息不能修改信息...

    phpcms v9 增加后台管理员其他角色可以查看信息不能修改信息 phpcms\modules\content\templates\content_list.tpl.php 这里面判断是不是管理员角 ...

  5. 修改git历史提交的commit信息

    本文是基于idea的操作,亲测可用 前言: 很多公司都会自定义 Git - 使用强制策略,那么他的commit信息就会有固定的格式,一旦不是这个格式,就会出现push失败 但是push失败,很多也只在 ...

  6. 修改Visual Studio类模板注释信息

    背景资料 在开发过程中,经常需要给新增的类和接口添加 public 修饰符和一些相关的注释信息,这个工作是机械而且枯燥的,这个可以通过修改VS自带的类模板来实现. 1.首先找到VS的安装目录,例如如下 ...

  7. 一级计算机考试修改信息书面申请表,医院信息科修改数据库申请单.doc

    医院信息科修改数据库申请单 医院信息科修改数据库申请单 篇一:医院操作系统及数据库变更申请单 操作系统及数据库变更申请单 ※保持一致.在重装结束后必须到计算机部重新验收,经验收无问题方可重新开通使用. ...

  8. 网页html修改,对学生信息进行修改网页html代码.doc

    对学生信息进行修改网页html代码 修改信息 QSsno=request.QueryString("sno") Fsname =request.form("sname&q ...

  9. 金色传说:SAP-ABAP-销售订单增强:记录销售订单修改信息和修改原因

    业务场景 为了记录从客户或经销商询单到正式下达销售订单的过程并分析,需要记录销售订单创建和修改时的关键信息,其中包括:客户.物料.订单数量.交货日期.更改原因. 解决方案 创建销售订单时自动记录关键信 ...

最新文章

  1. 最短路径算法——Dijkstra and Floyd算法
  2. 挽救Centos7.0
  3. JAVAWEB入门之IDEA与tomcat相关配置
  4. restful soap_Web服务面试问题– SOAP,RESTful
  5. win10电脑黑屏只有鼠标箭头_电脑开机就黑屏,只显示鼠标怎么办?别急,简单几步,轻松解决!...
  6. CAS(Central Authentication Service)——windows上简单搭建及測试
  7. 当前日期增加自然月(比如当前时间为3月31号,加上1个月,预期结果是4月30日,但是输出了5月1日)...
  8. kb931125—rootsupd_kb931125-rootsupd补丁下载
  9. c语言程序设计网站有哪些,C语言编程软件有哪些?
  10. 查询vue版本时报错:“文件名、目录名或卷标语法不正确“
  11. mongoDB数据库mong.conf配置文件的问题
  12. html5 阿狸照片展示,阿狸手抄报美观简洁图片5张
  13. Android Vold架构
  14. 逼近理想解法TOPSIS(python程序)
  15. 奔涌的IPv6背后,DHCPv6协议你了解多少?
  16. 欧几里得算法及其python实现
  17. 天池竞赛-淘宝穿衣搭配(数据预处理部分)
  18. Java教程笔记(完)
  19. oracle的安装实验报告,Oracle实验报告Oracle实验报告.doc
  20. html 加载高德地图,vue异步加载高德地图

热门文章

  1. QtGuid4.dll处有未经处理的异常,0xsdddddd5写入位置错误
  2. RPG游戏《黑暗之光》流程介绍与代码分析之(八):装备系统的实现
  3. MYSQL做BCV备份数据库,每天定时自动备份方案与实现
  4. fullcalendar显示出勤日_FullCalendar 日历插件中文说明文档
  5. rocketMQ-消息队列
  6. (PC+WAP)蓝色玻璃纤维制品网站pbootcms模板 营销型环保设备网站源码下载
  7. 服务器远程桌面一直正在配置,win10系统无法远程一直显示“正在配置远程会话”的详细方法...
  8. Hadoop详解(三)——MapReduce原理和执行过程,远程Debug,Writable序列化接口,MapReduce程序编写
  9. inlinehook NtCreateFile
  10. Error creating bean with name ‘org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping#0‘