上机十 文件的读取
第一题
编写程序,实现根据地址码对照表和身份证号码查询居民常住户口所在县的功能。
运行结果如下:
请输入身份证前6位:110109
门头沟区
#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2023 - 2023 Cry, Inc. All Rights Reserved
#
# @Time : 2023/11/30 18:49
# @Author : Cry
# @File : one.py
# @IDE : PyCharm
# 编写程序,实现根据地址码对照表和身份证号码查询居民常住户口所在县的功能。
# 运行结果如下:
# 请输入身份证前6位:110109
# 门头沟区
import json
import os.path
class query_system():
data={}
def __init__(self):
if (os.path.exists('address.json')):
with open('address.json', 'r', encoding='utf-8') as f:
self.data = json.loads(f.read())
else:
print("address.json文件不存在,开始创建....")
self.chuli_data()
# print(self.data)
def digui(self,jsons):
if(jsons!={}):
for i in jsons.keys():
k,v=i.split("&")
self.data[v]=k
# new_jsons = json.loads(jsons[i])
self.digui(jsons[i])
def chuli_data(self):
# https://pan.baidu.com/s/1v0be8bL4BWGNuZtEKUR9bg?pwd=1234 获取地址码大全
if not os.path.exists("json.json"):
print("json.json文件不存在,请下载!https://pan.baidu.com/s/1v0be8bL4BWGNuZtEKUR9bg?pwd=1234")
return
with open("json.json","r",encoding='utf-8') as f:
datas=f.read()
jsons=json.loads(datas)
# print(jsons)
self.digui(jsons)
# print(self.data)
print("创建地址文件address.json成功!!!")
with open('address.json','w',encoding='utf-8') as f:
f.write(json.dumps(self.data,ensure_ascii=False))
def get_num(self,num):
return self.data[num]
if __name__=="__main__":
q=query_system()
num=input("请输入身份证前6为:")
if len(num)==6 and str.isdigit(num):
print(q.get_num(num))
第二题
编写通讯录程序,该程序可接收用户输入的姓名、电话、QQ号码、邮箱等信息,将这些信息保存到“通讯录.txt”文件中,实现新建联系人功能;可根据用户输入的联系人姓名查找联系人,展示联系人的姓名、电话、QQ号码、邮箱等信息,实现查询联系人功能。
#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2023 - 2023 Cry, Inc. All Rights Reserved
#
# @Time : 2023/11/30 18:50
# @Author : Cry
# @File : two.py
# @IDE : PyCharm
# 编写通讯录程序,该程序可接收用户输入的姓名、电话、QQ号码、邮箱等信息,
# 将这些信息保存到“通讯录.txt”文件中,
# 实现新建联系人功能;
# 可根据用户输入的联系人姓名查找联系人,
# 展示联系人的姓名、电话、QQ号码、邮箱等信息,
# 实现查询联系人功能。
import json
import os.path
class tongXunLu:
data={}
# 便于随时增加功能
funs={"1":'新建联系人','2':'查询联系人','3':'查看所有联系人','4':'保存','5':'修改联系人','6':'删除联系人','0':'退出系统',}
# 初始化通讯录,判断是否文件是否有联系人,没有联系人就data为{}
def load_data(self):
# 用r会报错,用a+会追加,需要a+ 加上seek(0)
with open("tongXunLu.json",'a+',encoding='utf-8') as f:
f.seek(0)
for i in f.readlines():
print(i)
if i!="":
line=json.loads(i.strip())
self.data[line['name']]=line
def __init__(self):
self.load_data()
def save(self):
with open("tongXunLu.json",'w+',encoding="utf-8") as f:
for k,v in self.data.items():
f.write(json.dumps(v,ensure_ascii=False)+'\n')
def hello(self):
print("*"*20)
print("欢迎使用[通讯录]V1.0")
for k,v in self.funs.items():
print(f"{k}.{v}")
print("*"*20)
self.choice_fun()
def choice_fun(self):
fun = input("请选择操作功能:")
while(True):
if(fun=='1'):
print("*"*6+self.funs[fun]+"*"*6)
self.insert_person()
elif fun=='2':
print("*" * 6 + self.funs[fun] + "*" * 6)
self.query_user()
elif fun=='3':
self.getAll()
elif fun=='4':
self.save()
elif fun=='5':
self.update_user()
elif fun=='6':
self.delete_user()
else:
print("选项出错,程序退出")
break
fun = input("请选择操作功能:")
#修改需要重新把整个data写入文件
def update_user(self):
name = input("请输入你要修改的用户姓名:")
while (name not in self.data.keys()):
flag=input("姓名不存在,是否为你添加用户?(是为y,否为n):")
if(flag=="y"):
self.insert_person(name)
return
name = input("请再次输入你要修改的用户姓名:")
if (name == 'exit'):
break
while(True):
inputs=input("请输入要输入的项目和值,空格隔开(name phone qq email),(exit 退出):")
if(inputs=="exit"):
break
data,value=inputs.split(" ")
if data=="name":
#如果修改了姓名,需要删除原来的
temp_data=self.data[name]
del self.data[name]
self.data[value]=temp_data
name=value
self.data[name][data]=value
self.save()
print("修改完成")
def delete_user(self):
name=input("请输入姓名:")
while(name not in self.data.keys()):
print("姓名不存在,请重新输入,或输入exit退出:")
name = input("请输入姓名:")
if(name=='exit'):
break
del self.data[name]
self.save()
print("删除用户成功")
def insert_person(self,name=None):
if name==None:
name=input("请输入姓名:")
else:
name=name
while(name in self.data.keys()):
print("姓名已存在,请重新输入,或输入exit退出:")
name = input("请输入姓名:")
if(name=='exit'):
break
phone=input("请输入电话:")
qq=input("请输入QQ号码:")
email=input("请输入邮箱:")
self.data[name]={"name":name,
"phone":phone,
"qq":qq,
"email":email}
print(f"成功添加{name}为联系人")
with open("tongXunLu.json",'a+') as f:
f.write(json.dumps(self.data[name],ensure_ascii=False)+"\n")
def query_user(self):
name=input("请输入姓名:")
if name in self.data.keys():
print(self.data[name])
def getAll(self):
if(self.data=={}):
print("无联系人")
for vs in self.data.keys():
print(f"====={vs}======")
for k,v in self.data[vs].items():
print(f"{k}:{v}")
def insertOne(self,name,json):
self.data[name]=json
if __name__=='__main__':
tongXunLu=tongXunLu()
tongXunLu.hello()
文章介绍了两个Python程序,一个是根据身份证前6位查询居民常住户口所在县,另一个是创建通讯录程序,用于添加、查询和管理联系人信息。
4030

被折叠的 条评论
为什么被折叠?



