险种缴费记录管理
entity
record.py
class Record(object):
# 给对象添加属性
def __init__(self, id, date, type, money, moneyType):
self.id = id
self.date = date
self.type = type
self.money = money
self.moneyType = moneyType
#toString
def __str__(self):
return f"{self.id} {self.date} {self.type} {self.money} {self.moneyType}"
# 测试
# 实例化一个对象
# record = Record(1, "202101", "企业基本养老保险", "228.74", "个人缴纳")
# print(record)
# 测试
if __name__ == "__main__": #测试类一般写完后不需要删除,但是不删除的其他模块调用recode模块的时候,测试类默认会被调用输出,所以添加这行代码,意思当前模块调用则运行输出,其他模块调用则不运行输出
record = Record(1, "202101", "企业基本养老保险", "228.74", "个人缴纳")
print(record)
print(record.__dict__) #将recode记录以字典的形式输出,只要调用__dict__方法即可
manage dao (data access object:数据访问对象)
recordManager.py
from entity.record import *
class RecordManager(object):
def __init__(self):
self.records = [] # 列表用来保存所有的record信息
@staticmethod
def getFunctionList(): # 此方法不需要传递参数,且跟外部没有关系,所以可以定义为类方法,当然如果用普通方法也没有问题
# 获取功能列表
print("*" * 25)
print("1.添加险种缴费记录")
print("2.删除险种缴费记录")
print("3.修改险种缴费记录")
print("4.查询单个险种缴费记录")
print("5.查询所有险种缴费记录")
print("6.退出")
print("*" * 25)
def add(self):
"""添加险种缴费记录"""
id = input("请输入要添加的险种缴费记录编号:")
date = input("请输入要添加的险种缴费记录日期:")
type = input("请输入要添加的险种缴费记录类型:")
money = input("请输入要添加的险种缴费记录金额:")
moneyType = input("请输入要添加的险种缴费款项:")
record = Record(id, date, type, money, moneyType) # 把控制台输入的数据传递给recode对象
self.records.append(record) # 定义一个recodes列表,在列表中追加recode记录,相当于把recode存到recodes列表中
# print(self.records) #列表中存放的是一个对象,所以打印输出的是内存地址,而在java中,只要这个对象toString就行啦,但是这里需要把对象转字典类型
# print("添加成功")
self.saveToFile() # 调用把记录存到文件中的方法
print("添加成功")
def delete(self):
"""删除险种缴费记录"""
id = input("请输入要删除的险种缴费记录编号:")
for record in self.records:
if record.id == id:
self.records.remove(record)
print("删除成功")
self.saveToFile() # 重新保存列表记录
break
else:
print("没有此记录")
def update(self):
"""修改险种缴费记录"""
id = input("请输入要修改的险种缴费记录编号:")
for record in self.records:
if record.id == id:
record.date = input(f"请输入修改后的险种缴费记录日期,原为{record.date}:")
record.type = input(f"请输入修改后的险种缴费记录类型,原为{record.type}:")
record.money = input(f"请输入修改后的险种缴费记录金额,原为{record.money}:")
record.moneyType = input(f"请输入修改后的险种缴费记录款项,原为{record.moneyType}:")
print("修改成功")
self.saveToFile() # 重新保存列表记录
break
else:
print("请输入正确的编号")
def listById(self):
"""查询单个险种缴费记录"""
id = input("请输入要查询的险种缴费记录编号:")
for record in self.records:
if record.id == id:
print(record)
break
else:
print("没有该记录")
def listAll(self):
"""查询所有险种缴费记录:读取文件"""
try:
f = open("records.txt", "r", encoding="UTF-8")
content = f.read()
print(type(content)) # 字符串
# 把content转成 列表
newRecords = eval(content) # 把字符串转成任意类型,都是eval()
print(type(newRecords)) # 列表
# 把列表转对象 Record()
self.records = [Record(record['id'], record['date'], record['type'], record['money'], record['moneyType']) for
record in newRecords]
for record in self.records:
print(record) # 对象
else:
print(f"共查询到{len(self.records)}条记录")
except FileNotFoundError:
print("暂无数据,请添加数据")
def saveToFile(self):
f = open("records.txt", "w", encoding="UTF-8")
# f.write(self.records) # 报错: write() argument must be str, not list
# f.close()
newRecords = [record.__dict__ for record in self.records] # 循环records列表,将列表中的对象转成map字典,再存到文件中
f.write(str(newRecords))
f.close()
main.py 控制台
from manage.recordManager import *
recordManager = RecordManager()
while True:
recordManager.getFunctionList()
num = int(input("请输入要操作的指令:"))
if num == 1:
recordManager.add()
elif num == 2:
recordManager.delete()
elif num == 3:
recordManager.update()
elif num == 4:
recordManager.listById()
elif num == 5:
recordManager.listAll()
elif num == 6:
print("感谢使用")
break
else:
print("请输入正确的指令")
运行效果
-
新增
查出新增内容
-
删除
-
更新
在从新新增多条内容,好进行修改
查看是否修改完成
-
查询
-
退出