#Author:msq
#Time:2019/11/16 import re
import os filename = "person.txt" def menu():
#输出菜单
print(' '*5+'-'*15+"信息管理系统"+'-'*15)
print(' '*5+'='*16+"功能菜单"+'='*16)
print(''' 1 录入个人信息
2 查找个人信息
3 删除个人信息
4 修改个人信息
5 排序
6 统计总人数
7 显示所有信息
0 退出系统 ''')
print(' '*5+'='*36)
print(' '*5+"提示:通过数字选择菜单")
print(' '*5+'-'*36) #1.录入个人信息
def insert():
personList = []
make =True
while make:
name = input("请输入姓名(如张三):")
sex = input("请输入性别:")
age = int(input("请输入年龄:"))
id = input("请输入身份证号:")
occupation = input("请输入职业(如学生):") person = {"name": name, "sex": sex, "age": age, "id": id, "occupation": occupation}
personList.append(person)
inputList = input("是否继续添加?(y/n):")
if inputList == 'y':
make = True
else:
make = False
save(personList)
print("信息录入完毕!!!") #保存信息到文件
def save(person):
try:
person_txt = open(filename, 'a')#以追加的模式打开
except Exception as e:
person_txt = open(filename, 'w')#文件不存在就创建文件并打开
for info in person:
person_txt.write(str(info)+"\n") #执行存储,添加换行符
person_txt.close() #2.查找个人信息
def search():
make =True
person_query = []
while make:
name = ''
if os.path.exists(filename):
mode = input("按照姓名查询输入1:按照身份证号查询输入2:")
if mode == '1':
name = input("请输入姓名(如张三):")
elif mode == '2':
id = input("请输入身份证号:")
else :
print("您的输入有误,请重新输入!")
search()
with open(filename, 'r') as file:
person = file.readlines()
for list in person:
d = dict(eval(list))
if name is not "":
if d['name'] == name:
person_query.append(d)
elif id is not "":
if d["id"] == id:
person_query.append(d)
show_person(person_query)
person_query.clear()
inputMark = input("是否继续查询?(y/n):")
if inputMark == 'y':
make = True
else:
make = False
else:
print("暂未保存数据信息...")
return #3.删除个人信息
def delete():
mark =True
while mark:
person_name = input("请输入要删除人的姓名:")
if person_name is not "":
if os.path.exists(filename):
with open(filename,'r') as rfile:
person_old = rfile.readlines()
else:
person_old = []
ifdel = False #标记是否删除
if person_old: #如果存在
with open(filename,'w') as wfile:
d = {} #定义空字典
for list in person_old:
d = dict(eval(list))
if d["name"] != person_name: #找到该条数据并替换成空字典
wfile.write(str(d)+"\n")
else:
ifdel = True #标记已经删除
if ifdel:
print("name为%s个人信息已经被删除了..." % person_name)
else:
print("没有找到name为%s的个人信息" %person_name)
else:
print("不存在这个人的信息")
break
show()
inputMark = input("是否继续删除?(y/n):")
if inputMark == 'y':
mark = True
else:
mark = False #4.修改个人信息
def modify():
show() #显示全部数据
if os.path.exists(filename):
with open(filename,'r') as rfile:
person_old = rfile.readlines()
else:
return
person_name = input("请输入要修改的人的姓名:")
with open(filename, 'w') as wfile:
for person in person_old:
d =dict(eval(person))
if d["name"] == person_name:
print("找到了该条信息可以修改^_^")
while True: #输入要修改的信息
d["name"] = input("请输入姓名:")
d["sex"] = input("请输入性别")
d["age"] = input("请输入年龄")
d["id"] =input("请输入身份证号")
d["occupation"] = input("请输入职业")
else:
break
person = str(d)
wfile.write(person+"\n")
print("修改成功^_^")
else:
wfile.write(person)
mark = input("是否继续修改其他信息?(y/n)")
if mark == 'y':
modify() #5.排序
def sort():
if os.path.exists(filename):
with open(filename, 'r') as rfile:
person_old = rfile.readlines()
person_new = []
for list in person_old:
d = dict(eval(list))
person_new.append(d)
else:
return
asOrder = input("请选择(0升序;1降序):")
if asOrder == '0':
asOrderBool = False
elif asOrder == '1':
asOrderBool = True
else:
print("您输入的信息有误,请重新输入!")
sort()
mode = input("请输入排序方式(1按名字排序;2按身份证号排序):")
if mode == '1':
person_new.sort(key=lambda x: x["name"], reverse=asOrderBool)
elif mode == '2':
person_new.sort(key=lambda x: x["id"], reverse=asOrderBool)
else:
print("您输入的信息有误,请重新输入!")
sort()
show_person(person_new) #6.统计总人数
def total():
if os.path.exists(filename):
with open(filename, 'r') as rfile:
person_old = rfile.readlines()
if person_old:
print("一共有%d条数据"%len(person_old))
else:
print("还没录入学生信息")
else:
print("暂未保存数据信息") #7.显示所有信息
def show():
person_new = []
if os.path.exists(filename):
with open(filename, 'r') as rfile:
person_old = rfile.readlines()
for list in person_old:
person_new.append(eval(list))
if person_new:
show_person(person_new)
else:
print("暂未保存数据信息")
#显示某个人信息
def show_person(personList):
if not personList:
print("无效的数据")
return
'''
format_title = "{:^5}\t{:^5}\t{:^5}\t{:^10}\t{:5}"
print(format_title.format("名字", "性别", "年龄", "身份证号", "职业"))
format_data = "{:^5}\t{:^5}\t{:^5}\t{:^10}\t{:5}"
for info in personList:
print(format_data.format((info.get("name"), info.get("sex"), info.get("age"), info.get("id"), info.get("occupation"))))
''' print("名字", " 性别", " 年龄", "身份证号", " 职业")
for info in personList:
print(info.get("name")+' ', info.get("sex")+' ', str(info.get("age"))+' ', info.get("id")+' ', info.get("occupation")) #0.退出系统
def main():
ctrl = True #标记是否退出系统
while(ctrl):
menu()
option = input("请选择:")
option_str = re.sub("\D", "", option) #提取数字
if option_str in ['0','1','2','3','4','5','6','7']:
option_int = int(option_str)
if option_int == 0:
print("您已经退出信息管理系统!")
ctrl = False
elif option_int == 1:
insert()
elif option_int == 2:
search()
elif option_int == 3:
delete()
elif option_int == 4:
modify()
elif option_int == 5:
sort()
elif option_int == 6:
total()
elif option_int == 7:
show() if __name__=='__main__':
main()

Python之小型信息管理系统的更多相关文章

  1. python 简单的信息管理系统

    #!/usr/bin/python #coding=utf-8 import io import os import time FileRead = io.open('callingcard','r' ...

  2. python 04 学生信息管理系统

    今天任务不多,做了学生信息管理系统1.0,使用字典存储学生个体信息,列表存储学生字典.注意dict定义要在循环体内,若定义成全局变量或循环体外,则旧数据会被新数据覆盖.dict属于可变类型数据,内容改 ...

  3. 1、纯python编写学生信息管理系统

    1.效果图 2.python code: class studentSys(object): ''' _init_(self) 被称为类的构造函数或初始化方法, self 代表类的实例,self 在定 ...

  4. python之学生信息管理系统

    1 #!usr/bin/python 2 #encoding=utf-8 3 4 #1. 打印学生管理系统界面 5 def printStd(): 6 print ("*"*50) ...

  5. 用C语言制作小型商品信息管理系统过程中的问题

    大神请默默飘过... 以下是第一次制作时的源码: // 商品信息管理.cpp : 定义控制台应用程序的入口点. // // 小型商品信息管理系统.cpp : 定义控制台应用程序的入口点. // #in ...

  6. Python 员工信息管理系统

    学Python将近一个月了,第一次写了两百多行代码,一个很简单的脚本. 员工信息管理系统: 需求: 1.管理员账户能够增加,删除,修改,查询员工信息,并且设置管理员账户. 2.普通账户可以查看所有员工 ...

  7. Python基础案例练习:制作学生信息管理系统

    一.前言 学生信息管理系统,相信大家或多或少都有做过 最近看很多学生作业都是制作一个学生信息管理系统 于是,今天带大家做一个简单的学生信息管理系统 二.开发环境: 我用到的开发环境 Python 3. ...

  8. Python学生信息管理系统的开发

    # 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...

  9. python 写简单的职员信息管理系统

    职员信息管理系统要求依次从键盘录入每位员工的信息,包括姓名.员工id.身份证号要求:1.身份证号十八位,要求除了第18位可以为x,其余都只能为数字2.id须由5位数字组成3.否则提示用户重新输入不符合 ...

随机推荐

  1. windows10远程桌面,出现“出现身份验证错误 要求的函数不受支持...”等错误解决方法

    windows家庭普通版,更新补丁后无法远程连接windows server2012,出现以下报错: 解决方法: 1.win + R打开运行,输入 regedit,回车进入注册表 2.找到以下路径 \ ...

  2. 角色移动优化【Unity2D自学之路】

    自学unity2D独立游戏开发,第一篇自学笔记.在场景中添加角色,并给角色添加Rigidbody2D刚体组件.collection2D碰撞体组件,c#脚本组件控制人物移动和跳跃.c#脚本组件内容如下, ...

  3. XCode8 安装模拟器

    1.下载模拟器 参考:http://blog.csdn.net/piratest/article/details/52538978 参考:http://blog.csdn.net/zhangao008 ...

  4. iOS 构建静态库

    一..a 文件静态库打包 打开 Xcode 创建一个新的 Static Library 工程,取名 MyStaticLibrary. 创建工程完毕后,系统自动创建了一个同名类,添加一个方法用于测试. ...

  5. Python——图像手绘效果

    1.图像的RGB色彩模式 PIL PIL, Python Image Library PIL库是一个具有强大图像处理能力的第三方库 在命令行下的安装方法: pip install pillow fro ...

  6. 移动端rem布局实现(vw)

    什么是rem?在W3C官网上是这样描述的:“font size of the root element (根元素的字体大小)”.就是说rem是相当于html的,因为网页的默认字体大小是 16px,所以 ...

  7. js拖拽效果的实现及原理

    元素拖拽分成3个步骤:按下鼠标,移动鼠标,松开鼠标. 拖拽原理:按下拖拽元素后开始监听文档中鼠标移动事件,然后再监听鼠标松开事件:鼠标移动时,元素div要随着鼠标一起移动,需要计算元素div位移的距离 ...

  8. 字符串学习笔记(二)---- StringBuffer

    一.相关介绍 1.StringBuffer介绍 StringBuffer对象是字符串缓冲区对象,用于存放数据的容器 2.StringBuffer特点 StringBuffer(字符串缓冲区对象)的长度 ...

  9. PTA数据结构与算法题目集(中文) 7-24

    PTA数据结构与算法题目集(中文)  7-24 7-24 树种统计 (25 分)   随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类.请编写程序帮助研究人员统计每种树的数量,计算每种树 ...

  10. 【docker linux】linux系统镜像转化为docker镜像

    概述 使用docker安装linux的同学都知道,你在docker提供的仓库安装linux系统,你就会体验到最精简的.最纯净的linux系统,当然,他会精简到你连ifconfig命令都需要自己配置,恰 ...