1、添加名片
2、删除名片
3、修改名片
4、查询名片
5、退出系统
6、要求:程序运行后,除非选择退出系统,否则重复执行功能
7、运行界面
参考代码:
default = ['张三', '男', '18']
card_all = [default]
while True:
print("************************** 名片管理器 **************************")
print("-------------------------- 1.添加名片 --------------------------")
print("-------------------------- 2.删除名片 --------------------------")
print("-------------------------- 3.修改名片 --------------------------")
print("-------------------------- 4.查询名片 --------------------------")
print("-------------------------- 5.查询所有 --------------------------")
print("-------------------------- 6.退出系统 --------------------------")
print("************************** 名片管理器 **************************")
action = int(input("请输入对应数字进行操作:"))
print("-" * 30) # 分隔线
if action == 1:
name = str(input("请输入姓名:"))
gender = str(input("请输入性别:"))
age = str(input("请输入年龄:"))
print("-" * 30) # 分隔线
name_card = [name, gender, age]
card_all.append(name_card)
print("【Information】:名片添加成功!")
print("-" * 30) # 分隔线
elif action == 2:
ID = str(input("请输入管理员账号:"))
password = str(input("请输入密码:"))
print("-" * 30) # 分隔线
if ID == "admin" or password == "123456":
name = str(input("请输入姓名:"))
gender = str(input("请输入性别:"))
age = str(input("请输入年龄:"))
print("-" * 30) # 分隔线
name_card = [name, gender, age]
if name_card in card_all:
card_all.remove(name_card)
print("删除成功!")
else:
print("【ERROR】:查无此人,请重新输入!")
else:
print("【ERROR】:账号或密码错误,请重新输入!")
elif action == 3:
ID = str(input("请输入管理员账号:"))
password = str(input("请输入密码:"))
print("-" * 30) # 分隔线
if ID == "admin" and password == "123456":
name = str(input("请输入姓名:"))
gender = str(input("请输入性别:"))
age = str(input("请输入年龄:"))
print("-" * 30) # 分隔线
name_card = [name, gender, age]
if name_card in card_all:
card_all.remove(name_card)
new_name = str(input("请输入修改后的姓名:"))
new_gender = str(input("请输入修改后的性别:"))
new_age = str(input("请输入修改后的年龄:"))
print("-" * 30) # 分隔线
new_name_card = [new_name, new_gender, new_age]
card_all.append(new_name_card)
print("修改成功!")
else:
print("【ERROR】:查无此人,请重新输入!")
else:
print("【ERROR】:账号或密码错误,请重新输入!")
elif action == 4:
ID = str(input("请输入管理员账号:"))
password = str(input("请输入管理员密码:"))
print("-" * 30) # 分隔线
if ID == "admin" and password == "123456":
seek = str(input("请输入名字,性别,或年龄之一:"))
print("-" * 40) # 分隔线
i = -1
k = 1
j = 1
while k <= len(card_all): # 可以用for循环直接找,不用这么麻烦,到下一版本修改
k += 1
i += 1
card = card_all[i]
if card.count(seek) == 0 and j < len(card_all):
j += 1
continue
elif card.count(seek) == 0 and j >= len(card_all):
print("【ERROR】:没有找到,请重新输入!")
else:
print(card)
else:
print("【ERROR】:账号或密码错误,请重新输入!")
elif action == 5:
ID = str(input("请输入管理员账号:"))
password = str(input("请输入密码:"))
print("-" * 30) # 分隔线
if ID == "admin" and password == "123456":
print("【INFO】:所有学生信息如下:")
print(card_all)
else:
print("【ERROR】:账号或密码错误,请重新输入!")
elif action == 6:
sign = input("【Information】:确定退出吗?(yes/no):")
if sign == "yes":
print("-" * 50)
print("【Information】:谢谢使用,您已成功退出系统!")
exit() # break 也可以
else:
continue
else:
print("【ERROR】:输入有误,请重新输入!")
将上述学生名片管理系统数据保存格式改成字典的形式
例如:
把: [[“关羽”, “40”, “男”],[“诸葛亮”, “45”, “男”]]
改成 [{“name”: “关羽”, “age”:“40”, “sex”: “男”},{“name”: “诸葛亮”, “age”:“45”, “sex”: “男”}]
参考答案:
info_list = [] # 用来存放所有学生数据,每一个学生的数据都是一个列表
username = "admin"
password = "123456"
while True:
# 1、界面
print("************************** 名片管理器 **************************")
print("-------------------------- 1.添加名片 --------------------------")
print("-------------------------- 2.删除名片 --------------------------")
print("-------------------------- 3.修改名片 --------------------------")
print("-------------------------- 4.查询名片 --------------------------")
print("-------------------------- 5.查询所有 --------------------------")
print("-------------------------- 6.退出系统 --------------------------")
print("************************** 名片管理器 **************************")
# 2、输入,接收用户的输入的数字,执行对应的操作
command = int(input("请输入1到6之间的数字,进行对应操作:"))
# 3、通过判断用户输入的数字是1,还是2,还是3... 执行对应的操作
if command == 1:
# 添加学生信息
# 让用户输入姓名、年龄、性别
name = input("请输入姓名:")
age = input("请输入年龄:")
sex = input("请输入性别:")
# [name, age, sex]
info_list.append({"name": name, "age": age, "sex": sex})
print("【INFO】:添加成功!")
elif command == 2:
# 删除学生信息
name = input("请输入姓名:")
# 遍历info_list这个列表(要找到这个人)
for i in info_list:
if name in i.values():
# 在这个列表中就执行删除#
info_list.remove(i)
print("【INFO】:删除成功!")
break # 已经找到这个人了,后面的人就不需要在遍历
else:
print("【ERROR】:查无此人!")
elif command == 3:
# 修改学生信息
name = input("请输入姓名:")
# 遍历info_list这个列表(要找到这个人)
for i in info_list:
if name in i.values():
# 在这个列表中就执行修改
age = input("请输入修改后的年龄:")
sex = input("请输入修改后的性别:")
# 格式:info_list[下标] =
info_list[info_list.index(i)] = {"name": name, "age": age, "sex": sex}
print("【INFO】:修改成功!")
break # 已经找到这个人了,后面的人就不需要在遍历
else:
print("【ERROR】:查无此人!")
elif command == 4:
# 查询学生信息
name = input("请输入姓名:")
# 遍历info_list这个列表(要找到这个人)
for i in info_list:
if name in i.values():
print("【INFO】:此人信息如下:%s" % i)
break # 已经找到这个人了,后面的人就不需要在遍历
else:
print("【ERROR】:查无此人!")
elif command == 5:
# 查询所有学生信息
uname = input("请输入管理员账号:")
upwd = input("请输入管理员密码:")
if uname == username and upwd == password:
print("【INFO】:所有学生信息如下:")
for i in info_list:
for k in i.values():
print(k, end="\t")
print()
else:
print("【ERROR】:账号或者密码错误!")
elif command == 6:
# 退出系统
# print("【INFO】:退出成功!谢谢使用!")
sign = input("【INFO】:确定要退出吗?(yes or no):")
if sign == "yes":
print("【INFO】:退出成功!谢谢使用!")
break
else:
continue
else:
print("【ERROR】:请重新输入1到5之间的数字!")
思路:
1.先定义全局变量
2.再定义函数
添加函数 add
查找函数 search
删除函数 remove
修改函数 alter
管理员账号密码验证函数 verify
3.完成主程序函数或界面,将所有内容整合打包
类似于:def main()
4.for 语句:
if 条件:
break
else:
# for循环自然结束的时候才会执行这里的代码!!!!
# 如果通过break结束的循环,那么这里的代码是不会执行!
参考代码:
# 定义全局变量
info_list = [{"name": '张三', "gender": '男', "age": 27}]
admin_id = "python"
password = "123456"
def add_info_name(): # 输入姓名
name = str(input("请输入姓名:"))
return name
def add_info_gender(): # 输入性别
while True:
gender = str(input("请输入性别:"))
if gender in "男女":
return gender
else:
print("【ERROR_1】:性别输入有误,请输入男或女!")
def add_info_age(): # 输入年龄
while True:
age = str(input("请输入年龄:"))
if age.isdigit() is True:
return age
else:
print("【ERROR_2】:年龄输入有误,请输入纯数字!")
def search(): # 按姓名查找
name = add_info_name()
for i in info_list:
if name in i.values():
print(i)
return
else:
print("【ERROR_3】:查无此人,请重新输入!")
def remove(): # 删除函数
name = add_info_name()
for i in info_list:
if name in i.values():
info_list.remove(i)
print("【INFO_1】:删除成功!")
return
else:
print("【ERROR_3】:查无此人,请重新输入!")
def alter(): # 修改函数
name = add_info_name()
for i in info_list:
if name in i.values():
info_list[info_list.index(i)] = {"name": name, "gender": add_info_gender(), "age": add_info_age()}
print("【INFO_2】:修改成功!")
return
else:
print("【ERROR_5】:查无此人,请重新输入!")
def verify():
ad = str(input("请输入管理员账号:"))
pd = str(input("请输入管理员密码:"))
if ad == admin_id and pd == password:
return True
else:
print("【ERROR_6】:管理员账号或密码错误,请重新输入!")
def main():
while True:
print("************************** 名片管理器 **************************")
print("-------------------------- 1.添加名片 --------------------------")
print("-------------------------- 2.删除名片 --------------------------")
print("-------------------------- 3.修改名片 --------------------------")
print("-------------------------- 4.查询名片 --------------------------")
print("-------------------------- 5.查询所有 --------------------------")
print("-------------------------- 6.退出系统 --------------------------")
print("************************** 名片管理器 **************************")
command = str(input("请输入对应数字进行操作:")) # 采用字符串形式,避免用户输入时报错
print("-" * 30) # 分隔线
if command == "1": # 采用字符串形式,避免用户输入时报错
dic = {"name": add_info_name(), "gender": add_info_gender(), "age": add_info_age()}
info_list.append(dic)
print("【INFO_3】:添加成功!")
elif command == "2":
if verify():
remove()
else:
pass
elif command == "3":
if verify():
alter()
else:
pass
elif command == "4":
if verify():
search()
else:
pass
elif command == "5":
if verify():
print("【INFO_4】:所有员工信息为:")
print(info_list)
else:
pass
elif command == "6":
print("【INFO_5】:谢谢使用,您已成功退出系统!")
exit()
else:
print("【ERROR_7】:输入有误,请重新输入相应数字进行操作!")
main()
要求:将数据保存在txt文件中
参考代码:
# 定义全局变量
import os
info_list = [] # 用来存放所有学生数据,每个学生的数据都是一个列表
filename = "info.txt"
admin_id = "python"
password = "123456"
def load_info(): # 每次打开程序都有对文件夹里的信息进行读取,所以要有登陆界面
global info_list
f = open(filename, "r", encoding="utf-8")
str1 = f.read()
info_list = eval(str1)
f.close()
def save_info(): # 添加信息后,退出程序时,需要将信息保存到文件夹
f = open(filename, "w", encoding="utf-8")
f.write(str(info_list))
f.close()
def add_info_name(): # 输入姓名
name = str(input("请输入姓名:"))
return name
def add_info_gender(): # 输入性别
while True:
gender = str(input("请输入性别:"))
if gender in "男女":
return gender
else:
print("【ERROR_1】:性别输入有误,请输入男或女!")
def add_info_age(): # 输入年龄
while True:
age = str(input("请输入年龄:"))
if age.isdigit() is True:
return age
else:
print("【ERROR_2】:年龄输入有误,请输入纯数字!")
def search(): # 按姓名查找
name = add_info_name()
for i in info_list:
if name in i.values():
print(i)
return
else:
print("【ERROR_3】:查无此人,请重新输入!")
def remove(): # 删除函数
name = add_info_name()
for i in info_list:
if name in i.values():
info_list.remove(i)
print("【INFO_1】:删除成功!")
return
else:
print("【ERROR_3】:查无此人,请重新输入!")
def alter(): # 修改函数
name = add_info_name()
for i in info_list:
if name in i.values():
info_list[info_list.index(i)] = {"name": name, "gender": add_info_gender(), "age": add_info_age()}
print("【INFO_2】:修改成功!")
return
else:
print("【ERROR_5】:查无此人,请重新输入!")
def verify():
ad = str(input("请输入管理员账号:"))
pd = str(input("请输入管理员密码:"))
if ad == admin_id and pd == password:
return True
else:
print("【ERROR_6】:管理员账号或密码错误,请重新输入!")
def main():
if os.path.exists(filename): # 判断这个文件是否存在,存在才加载
load_info()
else: # 不存在就创建,创建后也要记得加载数据
f = open(filename, "w")
f.write("[]")
f.close()
load_info()
while True:
print("************************** 名片管理器 **************************")
print("-------------------------- 1.添加名片 --------------------------")
print("-------------------------- 2.删除名片 --------------------------")
print("-------------------------- 3.修改名片 --------------------------")
print("-------------------------- 4.查询名片 --------------------------")
print("-------------------------- 5.查询所有 --------------------------")
print("-------------------------- 6.退出系统 --------------------------")
print("************************** 名片管理器 **************************")
command = str(input("请输入对应数字进行操作:")) # 采用字符串形式,避免用户输入时报错
print("-" * 30) # 分隔线
if command == "1": # 采用字符串形式,避免用户输入时报错
dic = {"name": add_info_name(), "gender": add_info_gender(), "age": add_info_age()}
info_list.append(dic)
print("【INFO_3】:添加成功!")
elif command == "2":
if verify():
remove()
else:
pass
elif command == "3":
if verify():
alter()
else:
pass
elif command == "4":
if verify():
search()
else:
pass
elif command == "5":
if verify():
print("【INFO_4】:所有员工信息为:")
print(info_list)
else:
pass
elif command == "6":
sign = input("确定要退出吗?是(y)或否(n):")
if sign == "y":
save_info() # 退出时一定要记得保存信息
print("【INFO_5】:谢谢使用,您已成功退出系统!")
exit()
else:
continue
else:
print("【ERROR_7】:输入有误,请重新输入相应数字进行操作!")
main()
要求:每次登陆时对文件夹里的信息进行读取,如果读取不到文件则抛出异常,通过 try…except…来完成。
参考代码:
# 定义全局变量
import os
info_list = [] # 用来存放所有学生数据,每个学生的数据都是一个列表
filename = "info.txt"
admin_id = "python"
password = "123456"
def load_info(): # 每次打开程序都有对文件夹里的信息进行读取,所以要有登陆界面
global info_list
try:
f = open(filename, "r", encoding="utf-8")
except FileNotFoundError:
# 捕获到“找不到文件”这个异常
# 创建文件
f = open(filename, "w", encoding="utf-8")
f.write("[]")
f.close()
f =open(filename, "r", encoding="utf-8")
str1 = f.read()
info_list = eval(str1)
f.close()
def save_info(): # 添加信息后,退出程序时,需要将信息保存到文件夹
f = open(filename, "w", encoding="utf-8")
f.write(str(info_list))
f.close()
def add_info_name(): # 输入姓名
name = str(input("请输入姓名:"))
return name
def add_info_gender(): # 输入性别
while True:
gender = str(input("请输入性别:"))
if gender in "男女":
return gender
else:
print("【ERROR_1】:性别输入有误,请输入男或女!")
def add_info_age(): # 输入年龄
while True:
age = str(input("请输入年龄:"))
if age.isdigit() is True:
return age
else:
print("【ERROR_2】:年龄输入有误,请输入纯数字!")
def search(): # 按姓名查找
name = add_info_name()
for i in info_list:
if name in i.values():
print(i)
return
else:
print("【ERROR_3】:查无此人,请重新输入!")
def remove(): # 删除函数
name = add_info_name()
for i in info_list:
if name in i.values():
info_list.remove(i)
print("【INFO_1】:删除成功!")
return
else:
print("【ERROR_3】:查无此人,请重新输入!")
def alter(): # 修改函数
name = add_info_name()
for i in info_list:
if name in i.values():
info_list[info_list.index(i)] = {"name": name, "gender": add_info_gender(), "age": add_info_age()}
print("【INFO_2】:修改成功!")
return
else:
print("【ERROR_5】:查无此人,请重新输入!")
def verify():
ad = str(input("请输入管理员账号:"))
pd = str(input("请输入管理员密码:"))
if ad == admin_id and pd == password:
return True
else:
print("【ERROR_6】:管理员账号或密码错误,请重新输入!")
def main():
load_info()
while True:
print("************************** 名片管理器 **************************")
print("-------------------------- 1.添加名片 --------------------------")
print("-------------------------- 2.删除名片 --------------------------")
print("-------------------------- 3.修改名片 --------------------------")
print("-------------------------- 4.查询名片 --------------------------")
print("-------------------------- 5.查询所有 --------------------------")
print("-------------------------- 6.退出系统 --------------------------")
print("************************** 名片管理器 **************************")
command = str(input("请输入对应数字进行操作:")) # 采用字符串形式,避免用户输入时报错
print("-" * 30) # 分隔线
if command == "1": # 采用字符串形式,避免用户输入时报错
dic = {"name": add_info_name(), "gender": add_info_gender(), "age": add_info_age()}
info_list.append(dic)
print("【INFO_3】:添加成功!")
elif command == "2":
if verify():
remove()
else:
pass
elif command == "3":
if verify():
alter()
else:
pass
elif command == "4":
if verify():
search()
else:
pass
elif command == "5":
if verify():
print("【INFO_4】:所有员工信息为:")
print(info_list)
else:
pass
elif command == "6":
sign = input("确定要退出吗?是(y)或否(n):")
if sign == "y":
save_info() # 退出时一定要记得保存信息
print("【INFO_5】:谢谢使用,您已成功退出系统!")
exit()
else:
continue
else:
print("【ERROR_7】:输入有误,请重新输入相应数字进行操作!")
if __name__ == "__main__": # 只有本文件才能调用的判定
main() # 入口函数