|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本人新手,请大家多多支持
- #简易用户信息收集程序
- #请不要随意在name里添加文字
- #如果您要测试代码,请修改77行的 字典.txt 的地址,这里还没有完善,谅解!
- #窗口大小以及字体都没改,有时间再调整
- #其中小部分代码借鉴于小甲鱼课后作业的思路
- #写了部分注释,不明白的可以直接问
- #信息可以保存
- #有建议改进方法,创新设计或者bug随时指出,谢谢!
- #本人自学入门一个月刚刚初三毕业,第一个用心写的项目,没什么创意,请大家多多包涵
- import easygui as g
- import os
- def save():
- msg="请填写内容"
- title="用户信息填写"
- problem=[" *用户名"," *真实姓名"," 固定电话"," *手机号码"," QQ"," *E-mail"]
- Inp=g.multenterbox(msg,title,problem)
- while True:
- next_problem=""#这是一个收集带未填写的带'*'的信息栏的名称
- if Inp==None:#如果点了Cancle(取消),Inp就等于None
- break
- for i in range(len(Inp)):
- problem_=problem[i].strip() #" *用户名"左边有一个空格,为了美观,在下面判断是否有*,要去空格。不过也可以 if "*" in problem[i]
- if problem_[0]=="*" and Inp[i]=="":
- next_problem+="%s不能为空\n\n"%problem_
- if next_problem=="" and Inp[0] not in name: #如果带*的都填了,而且用户没和name里的重复(这里的name是个字典,key=用户名,value=TXT的path,每一个用户信息都有一个txt文档保存起来的)
- a=g.filesavebox(msg="选择文件夹",title="另存为")
- name[Inp[0]]=a+".txt" #存入字典
- with open(a+".txt","w") as f:
-
- f.write(str(Inp)+"\n")
- break
- Inp=g.multenterbox(next_problem,title,problem,Inp)
- def read():
- while True:
- read_=g.enterbox(msg="请输入查找对象的文件名")
- if read_ in name:
- if "\n" in name[read_]: #判断"\n"是因为储存在name里的用户名地址里有"\n",防止地址出错,详细的解释继续看
- path_=name[read_].replace("\n","")
- else:
- path_=name[read_]
- try: #这里是解决打开读取用户信息时有中文的情况,有中文的txt的编码是ANSI
- with open(path_,encoding='utf-8') as f: #utf-8,纯英文字母的
- text=f.read()
- msg=read_
- title="读取"
- g.textbox(msg,title,text)
- break
- except:
- with open(path_,encoding='gbk') as f:#utf-8 #gbk,处理用户信息的中文
- text=f.read()
- msg=read_
- title="读取"
- g.textbox(msg,title,text)
- break
- else:
- g.msgbox("没有找到此用户信息")
- break
-
- def del_():
- del_inp=g.enterbox(msg="请输入你要删除的用户的用户名:")
- if del_inp in name:
- if "\n" in name[del_inp]: #也是为了避免路径错误
- path_=name[del_inp].replace("\n","")
- else:
- path_=name[del_inp]
- os.remove(path_) #先删除用户信息txt
- del name[del_inp] #再删除name里的用户
-
-
- #函数部分
- #------------------------------
- #准备name
- name={}
- dict_path="D:\\py\\新建文件夹\\字典.txt" #首先先将字典.txt里的内容一行一行提取并且存入字典,每一行都是键和值,两者用空格分开
- with open(dict_path,"r",encoding='gbk') as dict_name:# 防止中文
- if dict_name.read()!="": #如果是初次打开就是 ""
- dict_name.seek(0) #回归指针
- for line in dict_name.readlines():
- line_=line.split(" ")#以空格分开
- k=line_[0]
- v=line_[1]
- name[k]=v
-
- while True:
-
- msg="请选择操作【save:存入】【read:查看】【exit:退出】【del:删除】:"
- title="初始界面"
- choices=('save[1]','read[2]','del[3]','exit[4]') #[]
- first_inp=g.buttonbox(msg,title,choices)
- if first_inp=="save[1]":
- save()
- elif first_inp=="read[2]":
- read()
- elif first_inp=="del[3]":
- del_()
- elif first_inp=="exit[4]":
- break
- else:
- g.msgbox("输入错误【save:存入】【read:查看】【exit:退出】【del_:删除】",ok_button="好的")
-
- #将name里的信息存入 字典.txt
- with open(dict_path,"w") as dict_name:
- for k,v in name.items():
- if k!=list(name.keys())[-1] and "\n" not in v:
- dict_name.write(str(k)+" "+str(v)+"\n")
- else:
- dict_name.write(str(k)+" "+str(v))
- g.msgbox("成功退出")
复制代码 |
评分
-
查看全部评分
|