鱼C论坛

 找回密码
 立即注册
查看: 2275|回复: 0

[作品展示] 简易用户信息收集器

[复制链接]
发表于 2022-7-28 00:00:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本人新手,请大家多多支持

  1. #简易用户信息收集程序
  2. #请不要随意在name里添加文字
  3. #如果您要测试代码,请修改77行的 字典.txt 的地址,这里还没有完善,谅解!
  4. #窗口大小以及字体都没改,有时间再调整
  5. #其中小部分代码借鉴于小甲鱼课后作业的思路
  6. #写了部分注释,不明白的可以直接问
  7. #信息可以保存
  8. #有建议改进方法,创新设计或者bug随时指出,谢谢!
  9. #本人自学入门一个月刚刚初三毕业,第一个用心写的项目,没什么创意,请大家多多包涵


  10. import easygui as g
  11. import os



  12. def save():
  13.         msg="请填写内容"
  14.         title="用户信息填写"
  15.         problem=[" *用户名"," *真实姓名"," 固定电话"," *手机号码"," QQ"," *E-mail"]
  16.         Inp=g.multenterbox(msg,title,problem)

  17.         while True:
  18.                 next_problem=""#这是一个收集带未填写的带'*'的信息栏的名称
  19.                 if Inp==None:#如果点了Cancle(取消),Inp就等于None
  20.                         break
  21.                 for i in range(len(Inp)):
  22.                         problem_=problem[i].strip()   #" *用户名"左边有一个空格,为了美观,在下面判断是否有*,要去空格。不过也可以 if "*" in problem[i]
  23.                         if problem_[0]=="*" and Inp[i]=="":
  24.                                 next_problem+="%s不能为空\n\n"%problem_

  25.                 if next_problem=="" and Inp[0] not in name:   #如果带*的都填了,而且用户没和name里的重复(这里的name是个字典,key=用户名,value=TXT的path,每一个用户信息都有一个txt文档保存起来的)
  26.                         a=g.filesavebox(msg="选择文件夹",title="另存为")
  27.                         name[Inp[0]]=a+".txt"   #存入字典
  28.                         with open(a+".txt","w") as f:
  29.                                 
  30.                                 f.write(str(Inp)+"\n")
  31.                         break

  32.                 Inp=g.multenterbox(next_problem,title,problem,Inp)

  33. def read():
  34.         while True:
  35.                 read_=g.enterbox(msg="请输入查找对象的文件名")
  36.                 if read_ in name:
  37.                         if "\n" in name[read_]:   #判断"\n"是因为储存在name里的用户名地址里有"\n",防止地址出错,详细的解释继续看
  38.                                 path_=name[read_].replace("\n","")
  39.                         else:
  40.                                 path_=name[read_]
  41.                         try:        #这里是解决打开读取用户信息时有中文的情况,有中文的txt的编码是ANSI
  42.                                 with open(path_,encoding='utf-8') as f:   #utf-8,纯英文字母的
  43.                                         text=f.read()
  44.                                         msg=read_
  45.                                         title="读取"
  46.                                         g.textbox(msg,title,text)
  47.                                         break
  48.                         except:
  49.                                 with open(path_,encoding='gbk') as f:#utf-8   #gbk,处理用户信息的中文
  50.                                         text=f.read()
  51.                                         msg=read_
  52.                                         title="读取"
  53.                                         g.textbox(msg,title,text)
  54.                                         break
  55.                 else:
  56.                         g.msgbox("没有找到此用户信息")
  57.                         break
  58.                
  59. def del_():
  60.         del_inp=g.enterbox(msg="请输入你要删除的用户的用户名:")
  61.         if del_inp in name:
  62.                 if "\n" in name[del_inp]:   #也是为了避免路径错误
  63.                         path_=name[del_inp].replace("\n","")
  64.                 else:
  65.                         path_=name[del_inp]
  66.                 os.remove(path_)   #先删除用户信息txt
  67.                 del name[del_inp]   #再删除name里的用户
  68.                
  69.                
  70. #函数部分                       
  71. #------------------------------
  72. #准备name
  73. name={}
  74. dict_path="D:\\py\\新建文件夹\\字典.txt"   #首先先将字典.txt里的内容一行一行提取并且存入字典,每一行都是键和值,两者用空格分开
  75. with open(dict_path,"r",encoding='gbk') as dict_name:#  防止中文
  76.         if dict_name.read()!="":   #如果是初次打开就是 ""
  77.                 dict_name.seek(0)   #回归指针
  78.                 for line in dict_name.readlines():
  79.                         line_=line.split(" ")#以空格分开
  80.                         k=line_[0]
  81.                         v=line_[1]
  82.                         name[k]=v
  83.                        

  84. while True:
  85.        
  86.         msg="请选择操作【save:存入】【read:查看】【exit:退出】【del:删除】:"
  87.         title="初始界面"
  88.         choices=('save[1]','read[2]','del[3]','exit[4]')           #[]
  89.         first_inp=g.buttonbox(msg,title,choices)
  90.         if first_inp=="save[1]":
  91.                 save()
  92.         elif first_inp=="read[2]":
  93.                 read()
  94.         elif first_inp=="del[3]":
  95.                 del_()
  96.         elif first_inp=="exit[4]":
  97.                 break
  98.         else:
  99.                 g.msgbox("输入错误【save:存入】【read:查看】【exit:退出】【del_:删除】",ok_button="好的")
  100.         
  101. #将name里的信息存入 字典.txt
  102. with open(dict_path,"w") as dict_name:
  103.         for k,v in name.items():
  104.                 if k!=list(name.keys())[-1] and "\n" not in v:
  105.                         dict_name.write(str(k)+" "+str(v)+"\n")
  106.                 else:
  107.                         dict_name.write(str(k)+" "+str(v))
  108. g.msgbox("成功退出")


复制代码

评分

参与人数 2荣誉 +1 贡献 +3 收起 理由
python爱好者. + 1 鱼C有你更精彩^_^
青出于蓝 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 18:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表