#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. Java 垃圾回收机制方法,判断对象存活算法

    垃圾回收机制: 不定时去堆内存中清理不可达对象.不可达的对象并不会马上就会直接回收, 垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回 ...

  2. 模块 psutil 系统信息获取

    psutil模块介绍 psutil是一个开源切跨平台的库,其提供了便利的函数用来获取才做系统的信息,比如CPU,内存,磁盘,网络等.此外,psutil还可以用来进行进程管理,包括判断进程是否存在.获取 ...

  3. centos7中提升用户权限

    提升用户权限我看网上资源有两种方法,一种是修改/etc/sudoers/文件将新增的用户权限提升为和root一样的权限,这种方法不知道怎么回事我没用应用成功,这里我介绍第二种方法,第二种方法是更改/e ...

  4. 读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)

    前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的:于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:<读者来信>.如遇到本人能力有限难以解决的问题,我 ...

  5. hello world: 我的博客写作思路

    1. 本人计算机专业,研究生刚毕业,即将入职金融科技领域,决定借博客园平台写自己的博客,原因如下: 从小白到大白,离不开各大学习平台和技术博客的指导和分享,是时候回馈了. 借此机会整理自己从本科.研究 ...

  6. 001_创建一个sidebar切换页面

    Table Of Content 准备 基本思路 实现 我们期望实现这样的效果: ![](https://img2018.cnblogs.com/blog/1735896/202001/1735896 ...

  7. reuire代码优化之:r.js

    r.js是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小.减少对服务器的文件请求.要使用 ...

  8. docker下安装centos,并在其上搭建lnmp环境

    一.安装CentOs容器 1.进入docker下载CentOs,这里我使用的CentOs6.8 docker pull centos:6.8 2.创建容器 sudo docker run --priv ...

  9. 2017蓝桥杯承压计算(C++ B组)

    标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料.每块金属原料的外形.尺寸完全一致,但重量不同.金属材料被严格地堆放成金字塔形.                            ...

  10. Python爬虫系列(二):requests基础

    1.发送请求: import requests # 获取数据#r是一个 response 对象.包含请求返回的内容r = requests.get('https://github.com/timeli ...