#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. Mybatis 小记

    1,mybatis 中 $ # 区别 mybatis 动态传参的两种方式 #{ }在动态解析的时候,会将#{ } 解析为一个预编译阶段的一个标记符号?,在预处理阶段才会替换 ${ }在动态解析的时候, ...

  2. CSS盒子模型(boeder)+浮动(float)+定位(position)

    盒子的上下层:margin--background-color--background-image--padding--content--border(最外层) 计算一个盒子宽 =  内容的宽(wid ...

  3. javascript实现组合列表框中元素移动效果

    应用背景:在页面中有两个列表框,需要把其中一个列表框的元素移动到另一个列表框 .  实现的基本思想: (1)编写init方法对两个列表框进行初始化: (2)为body添加onload事件调用init方 ...

  4. CentOS下的Docker离线安装

    Linux下离线安装Docker 一.基础环境 1.操作系统:CentOS 7.3 2.Docker版本:18.06.1 官方下载地址(打不开可能很慢) 3.百度云Docker 18.06.1地址:h ...

  5. 细数Java项目中用过的配置文件(ini 篇)

    Java 菜鸟,会把可变的配置信息写死在代码里:Java 老鸟,会把可变的配置信息提取到配置文件中.坊间流传这么一句非科学的衡量标准,来评判程序员的级别. 那么,项目中的配置信息,你平时都是怎样来实现 ...

  6. 面试常问的 Java 虚拟机运行时数据区

    写在前面 本文描述的有关于 JVM 的运行时数据区是基于 HotSpot 虚拟机. 概述 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以 ...

  7. iOS开发|从小公司到进大厂,我的进阶学习之旅!

    iOS高级进发 OC源码下载地址 苹果开发文档 如何阅读苹果开发文档 GNUstep是GNU计划的项目之一,它将Cocoa的OC库重新开源实现了一遍 源码地址:http://www.gnustep.o ...

  8. Light of future-冲刺Day 6

    目录 1.SCRUM部分: 每个成员进度 SCRUM 会议的照片 签入记录 代码运行截图 用户浏览界面 订单详情界面 管理员浏览界面 新增后台界面 2.PM 报告: 时间表 燃尽图 任务总量变化曲线 ...

  9. mac 升级到mavericks 安装php扩展现问题

    mac 升级到mavericks 安装php扩展现以下问题 grep: /usr/include/php/main/php.h: No such file or directory grep: /us ...

  10. 【电商】性能测试网站搭建:XAMPP1.8+DBShop1.3

    1.安装准备 1.1软件版本 XAMPP的版本:XAMPP 1.8.2 DBShop的版本:DBShop 1.3   1.2.安装环境 我的环境:win10 win7,win10都可以运行的,安装步骤 ...