import os
import sys
import time
import pickle
class Student(object):
def __init__(self, name, xuehao, number, address, note):
self.name = name
self.xuehao = xuehao
self.number = number
self.address = address
self.note = note
class ClassBook(object):
def __init__(self):
self.students = []
self.filename = 'classbook.data'
def save(self):
f = open(self.filename, 'wb')
pickle.dump(self.students, f)
f.close()
def load(self):
if not os.path.exists(self.filename):
return
f = open(self.filename, 'rb')
self.students = pickle.load(f)
f.close()
def add_student(self):
name = input('姓名: ')
xuehao = input('学号: ')
number = input('电话号码: ')
address = input('地址: ')
note = input('备注: ')
student = Student(name, xuehao, number, address, note)
self.students.append(student)
self.save()
def del_student(self):
xuehao = input('学号: ')
for i, student in enumerate(self.students):
if student.xuehao == xuehao:
del self.students[i]
self.save()
return
print('没有找到学号为%s的学生' % xuehao)
def show_all(self):
for student in self.students:
print('姓名: %s, 学号: %s, 电话号码: %s, 地址: %s, 备注: %s' % (student.name, student.xuehao, student.number, student.address, student.note))
def change(self):
xuehao = input('学号: ')
for student in self.students:
if student.xuehao == xuehao:
student.name = input('姓名: ')
student.xuehao = input('学号: ')
student.number = input('电话号码: ')
student.address = input('地址: ')
student.note = input('备注: ')
self.save()
return
print('没有找到学号为%s的学生' % xuehao)
def search(self):
xuehao = input('学号: ')
for student in self.students:
if student.xuehao == xuehao:
print('姓名: %s, 学号: %s, 电话号码: %s, 地址: %s, 备注: %s' % (student.name, student.xuehao, student.number, student.address, student.note))
return
print('没有找到学号为%s的学生' % xuehao)
def sort(self):
self.students.sort(key=lambda student: student.xuehao)
self.save()
def main_menu():
classbook = ClassBook()
classbook.load()
fbook = None
while True:
print ('''
∽∽∽∽∽∽∽∽∽∽班级花名册∽∽∽∽∽∽∽∽∽∽
1.创建通讯录 2.添加新同学
3.删除同学信息 4.显示所有信息
5.修改同学信息 6.查询同学信息
7.进行学号排序 8.关闭花名册
∽∽∽∽∽∽∽∽∽欢迎您的使用∽∽∽∽∽∽∽∽∽∽
温馨提示:若连续三次输入错误,系统将自动关闭!!!
''')
choice = input('请选择: ')
if choice == '1':
classbook.students = []
classbook.save()
elif choice == '2':
classbook.add_student()
elif choice == '3':
classbook.del_student()
elif choice == '4':
classbook.show_all()
elif choice == '5':
classbook.change()
elif choice == '6':
classbook.search()
elif choice == '7':
classbook.sort()
elif choice == '8':
print('谢谢使用班级花名册,欢迎下次使用!')
sys.exit(0)
else:
print ('输入有误,请从新选择!')
if __name__ == '__main__':
main_menu()
def change_xx(i, n, fbook=None):
c = 0
j = 0
while True:
print("请选择需要修改的选项:\n1.姓名 2.学号 3.电话号码 4.地址 5.备注 6.修改全部\n\n")
print("请选择: ")
c = int(input())
if c > 6 or c < 1:
if j == 1:
print("请注意,已连续两次输入错误,连续三次输入错误系统将自动关闭!请确定后重新选择!\n\n")
if j == 2:
print("已连续三次输入错误,系统自动关闭!\n")
if j == 0:
print("输入有误,请从新选择!\n")
j += 1
if j == 3: # 若连续三次输入错误,自动关闭系统
exit(0)
if c <= 6 and c >= 1:
break
print("请根据提示输入新的信息:\n")
if c == 1:
print("姓名: ")
fbook[i].name = input()
if c == 2:
print("学号: ")
fbook[i].xuehao = input()
if c == 3:
print("电话号码: ")
fbook[i].number = input()
if c == 4:
print("地址: ")
fbook[i].address = input()
if c == 5:
print("备注: ")
fbook[i].note = input()
if c == 6:
print("姓名\t 学号\t\t电话号码\t地址\t\t备注\n")
fbook[i].name, fbook[i].xuehao, fbook[i].number, fbook[i].address, fbook[i].note = input().split()
def main():
main_menu()
def set_up(fbook=None):
n=1
print("请根据提示输入信息!")
print("姓名\t 学号\t\t电话号码\t地址\t 备注")
fbook[0].name=input()
fbook[0].xuehao=input()
fbook[0].number=input()
fbook[0].address=input()
fbook[0].note=input()
save(n)
print("通讯录创建成功!")
main_menu()
def add_student():
n=count()
x=1
while x==1:
print("请根据提示输入信息,按Enter结束!")
print("姓名\t 学号\t\t电话号码\t地址\t 备注")
fbook[n].name=input()
fbook[n].xuehao=input()
fbook[n].number=input()
fbook[n].address=input()
fbook[n].note=input()
save(n+1)
print("已保存!\n")
n+=1
print("是否继续添加? (1).是 (2).返回菜单 \n请选择: ")
x=int(input())
main_menu()
def del_student():
s=book()
n=count()
k=-1
j=0
d=0
while k==-1:
print("请输入要删除的同学姓名: ")
s.name=input()
for i in range(n):
if s.name==fbook[i].name:
k=i
s=fbook[i]
d+=1
if d>1:
print("姓名\t 学号\t\t电话号码\t地址\t 备注")
for i in range(n):
if s.name==fbook[i].name:
print("%s\t%s\t%s\t%s\t\t%s"%(fbook[i].name,fbook[i].xuehao,fbook[i].number,fbook[i].address,fbook[i].note))
print("因有同学姓名相同,请输入要删除的同学学号: ")
s.xuehao=input()
for i in range(n):
if s.xuehao==fbook[i].xuehao:
k=i
s=fbook[i]
if k==-1:
if j==1:
print("请注意,已连续两次输入错误,连续三次输入错误系统将自动关闭!请确定后重新输入!\n\n")
if j==2:
print("已连续三次输入错误,系统自动关闭!\n")
if j==0:
print("没有此同学记录,请重新输入!\n\n")
j+=1
if j==3:
exit(0)
print("姓名\t 学号\t\t电话号码\t地址\t 备注")
print("%s\t%s\t%s\t%s\t%s"%(fbook[k].name,fbook[k].xuehao,fbook[k].number,fbook[k].address,fbook[k].note))
print("确定删除此同学信息? (1).是 (2).取消并返回菜单 \n请选择: ")
d1=int(input())
if d1==1:
fbook[k].name=''
save(n)
else:
main_menu()
print("已删除.\n\n")
print("是否继续操作? (1).是 (2).否,返回菜单 \n请选择: ")
d2=int(input())
if d2==1:
del_student()
else:
main_menu()
def show_all(fbook=None):
n = count()
print("姓名\t 学号\t\t电话号码\t地址\t 备注\n")
for i in range(n):
print("%s\t%s\t%s\t%s\t%s\n" % (
fbook[i].name, fbook[i].xuehao, fbook[i].number, fbook[i].address, fbook[i].note))
print("共有%d 记录\n" % n)
print("按任意键返回菜单!\n")
input()
main_menu()
def search():
s = book()
n = count()
while True:
k = -1
while True:
s.name = input("请输入要查询的同学姓名: ")
for i in range(n):
if s.name == fbook[i].name:
k = i
s = fbook[i]
print("姓名\t 学号\t\t电话号码\t地址\t 备注\n")
print("%s\t%s\t%s\t%s\t%s\n\n" % (
fbook[k].name, fbook[k].xuehao, fbook[k].number, fbook[k].address, fbook[k].note))
if k == -1:
print("没有此同学记录,请重新输入!\n\n")
print("是否继续查询? (1).是 (2).否,返回菜单 \n请选择: ")
d1 = int(input())
if d1 == 2:
break
main_menu()
def change():
x = book()
n = count()
while True:
d = 0
k = -1
while True:
x.name = input("请输入要修改的同学姓名: ")
for i in range(n):
if x.name == fbook[i].name:
k = i
x = fbook[i]
print("姓名\t 学号\t\t电话号码\t地址\t 备注\n")
print("%s\t%s\t%s\t%s\t%s\n\n" % (
fbook[k].name, fbook[k].xuehao, fbook[k].number, fbook[k].address, fbook[k].note))
d += 1
if d > 1:
k1 = k
x.xuehao = input("因有同学姓名相同,请输入要修改的同学学号: ")
for i in range(k1):
if x.xuehao == fbook[i].xuehao:
k = i
x = fbook[i]
print("姓名\t 学号\t\t电话号码\t地址\t 备注\n")
print("%s\t%s\t%s\t%s\t%s\n\n" % (
fbook[k].name, fbook[k].xuehao, fbook[k].number, fbook[k].address, fbook[k].note))
if k == -1:
print("没有此同学记录,请重新输入!\n\n")
change_xx(k, n)
save(n)
print("\n修改成功! 修改后信息如下: \n")
print("姓名\t 学号\t\t电话号码\t地址\t 备注\n")
print("%s\t%s\t%s\t%s\t%s\n\n" % (
fbook[k].name, fbook[k].xuehao, fbook[k].number, fbook[k].address, fbook[k].note))
print("是否继续修改信息? (1).是 (2).否,返回菜单 \n请选择: ")
d1 = int(input())
if d1 == 2:
break
main_menu()
def sort():
fp = open("fbook.txt", "r")
fbook = []
for line in fp:
fbook.append(line.split())
fp.close()
for i in range(len(fbook) - 1):
for k in range(len(fbook) - i - 1):
if fbook[k][1] > fbook[k + 1][1]:
z = fbook[k]
fbook[k] = fbook[k + 1]
fbook[k + 1] = z
fp = open("fbook.txt", "w")
for i in range(len(fbook)):
fp.write(fbook[i][0] + '\t' + fbook[i][1] + '\t' + fbook[i][2] + '\t' + fbook[i][3] + '\t' + fbook[i][4] + '\n')
fp.close()
print("学号排序完成,结果如下: ")
print("姓名 学号 电话号码 地址 备注")
fp = open("fbook.txt", "r")
for line in fp:
print(line)
fp.close()
print(" 共有%d 记录." % len(fbook))
print("按任意键返回菜单!")
input()
main_menu()
def save(fbook):
fp = open("fbook.txt", "w")
for i in range(len(fbook)):
fp.write(fbook[i][0] + '\t' + fbook[i][1] + '\t' + fbook[i][2] + '\t' + fbook[i][3] + '\t' + fbook[i][4] + '\n')
fp.close()
def count():
fp = open("fbook.txt", "r")
fbook = []
for line in fp:
fbook.append(line.split())
fp.close()
return len(fbook)