#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. ES6中async与await的使用方法

    promise的使用方法 promise简介 是异步编程的一种解决方案.从语法上说,Promise 是一个对象,从它可以获取异步操作的消息.解决回调函数嵌套过多的情况 const promise =n ...

  2. iOS 响应链

    一.UIResponder app 使用响应者对象接收和处理事件,只有继承 UIResponder 的类,才能处理事件. UIApplication.UIView.UIViewController 都 ...

  3. 数据结构与算法复习-----leetcodeOJ题解

    Isomorphic Strings Given two strings s and t, determine if they are isomorphic. Two strings are isom ...

  4. spring-cloud-gateway降级

    前言 本文主要研究一下 spring cloud gateway 如何集成 hystrix. 当下游接口负载很大,或者接口不通等其他原因导致超时,如果接口不熔断的话将会影响到下游接口得不到喘息,网关也 ...

  5. 第一个AWK程序的尝试

    为了统计API的访问,需要读取8个G的数据,所以学习了下文本处理神器,AWK.简单实例如下: # 以\t分割的文本 awk -F "\t" ' //获取小时的函数 function ...

  6. STL之list函数解析

    STL之list函数解析 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用 ...

  7. 【Python3爬虫】反反爬之破解同程旅游加密参数 antitoken

    一.前言简介 在现在各个网站使用的反爬措施中,使用 JavaScript 加密算是很常用的了,通常会使用 JavaScript 加密某个参数,例如 token 或者 sign.在这次的例子中,就采取了 ...

  8. 使用错误代码对象进行C++错误处理

    原文发表于codeproject,由本人翻译整理分享于此. 前言 我已经使用了本文描述的代码和机制近20年了,到目前为止,我还没有找到更好的方法来处理大型C++项目中的错误.最初的想法是从一篇文章(D ...

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

    PTA数据结构与算法题目集(中文)  7-27 7-27 家谱处理 (30 分)   人类学研究对于家族很感兴趣,于是研究人员搜集了一些家族的家谱进行研究.实验中,使用计算机处理家谱.为了实现这个目的 ...

  10. 【PHP】流程控制

    一.      顺序结构 a)    PHP的脚本从上到下,从左往右的执行顺序就是顺序结构! 二.      分支结构 a)    单一的分支结构 If ( 条件表达式 ) { 程序体: } 执行过程 ...