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()