python-archieve-projects/金融数据/Database_via_List.py

134 lines
3.7 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class student_entry:
def __init__(self, name, id, cls):
self.name = name
self.id = id
self.cls = cls
class database:
def __init__(self):
self.data = []
self._length = 0
self.data.append(['Name', 'ID', 'Class'])
self.data.append([])
def insert(self, entry):
stu = [entry.name, entry.id, entry.cls]
for entry in self.data[1]:
if stu[1] in entry:
print("主键 ID 重复,添加失败")
return
self.data[1].append(stu)
self._length += 1
print("添加成功!")
# 可使用任意属性删除
def delete(self, to_delete):
for i in range(0, self._length + 1):
if to_delete in self.data[1][i]:
del self.data[1][i]
return
print("不存在该记录")
def update(self, attr_name, old, new):
entry: list
for entry in self.data[1]:
if old in entry:
if attr_name == 'Name':
entry[0] = new
return
elif attr_name == 'ID':
entry[1] = new
return
elif attr_name == 'Class':
entry[2] = new
return
else:
print("没有该属性!")
return
print("没有该记录!")
def read(self, to_read):
for title in self.data[0]:
print(title, end='\t\t')
print('')
for entry in self.data[1]:
if to_read in entry:
for attr in entry:
print(attr, end='\t\t')
print('')
def print(self):
print("------------------")
for title in self.data[0]:
print(title, end='\t')
print('')
for entry in self.data[1]:
for attr in entry:
print(attr, end='\t')
print('')
def interact(db):
while 1:
print("----请选择操作, 输入0退出----")
print("1. 新增\t2. 删除")
print("3. 查找\t4. 修改\t5. 查看所有记录")
print("请输入:", end="")
op = eval(input())
while op > 5 or op < 0:
print("非法输入,请重新输入:", end="")
op = eval(input())
if op == 1:
name = input("请输入姓名:")
id = input("请输入学号:")
cls = input("请输入班级:")
db.insert(student_entry(name, id, cls))
db.print()
elif op == 2:
val = input("请输入要删除的姓名或学号:")
db.delete(val)
elif op == 3:
val = input("请输入要查找的姓名或学号:")
db.read(val)
elif op == 4:
val = input("请输入要修改的属性(Name/ID/Class)")
old = input("请输入要修改的值:")
new = input("请输入新值:")
db.update(val, old, new)
elif op == 5:
db.print()
else:
break
if __name__ == '__main__':
db = database()
print('-----增加两个初始数据-----')
stu1 = student_entry('刘燕', '0204284', '软件203班')
db.insert(stu1)
db.insert(student_entry('小明', '0204200', '软件222班'))
db.print()
interact(db)
# print('-----更新值-----')
# db.update('ID', '0204200', '0204211')
# db.update('Name', '小明', '小红')
# db.print()
#
# print('-----查找值-----')
# db.read('小红')
# db.read('软件203班')
#
# print('-----删除小红-----')
# db.delete('小红')
# db.print()