赞
踩
目录
这次的相比于上次改动不是很大,添加了登录、注册功能,还有在添加的同时直接将数据写入文件中;在对密码进行判断时,使用了正则表达式进行判断。
这次所分的模块:
这次运行main方法时,首先进入登录,注册界面
- # 导入管理系统模块
- from managerSystem import *
-
- # if条件判断,保证当前程序运行才运行管理系统
- if __name__ == "__main__":
- # 创建实例对象
-
- manager_user = StudentManager()
- manager_user.register()
这两个模块就是抽象出来两个类,student和user,并定义一些对应属性
- # 学员类
- class Student():
- # 初始化魔法方法
- def __init__(self, name, gender, tel):
- self.name = name
- self.gender = gender
- self.tel = tel
-
- # “魔法”方法,当使用print输出对象的时候只要自己定义了__str__(self)方法,
- # 那么就会打印从在这个方法中return的数据。
- def __str__(self):
- return f"姓名:{self.name},性别:{self.gender},电话:{self.tel}"
-
- # t = Student("aa","女",23)
- # print(t)
-
'运行
- class Unser():
- def __init__(self, username, password):
- self.username = username
- self.password = password
-
- def __str__(self):
- # “魔法”方法,当使用print输出对象的时候只要自己定义了__str__(self)方法,
- # 那么就会打印从在这个方法中return的数据。
- return f"用户名:{self.username},密码:{self.password}"
-
- # u = Unser("ss",123)
- # print(u)
'运行
代码如下:
- # 主界面代码
- # 导入user,student模块
- from student import *
- from user import *
-
- # 使用正则表达式时,需要引入 re 库
- import re
-
-
- class StudentManager():
- def __init__(self):
- # 初始化,创建空列表
- self.student_list = []
- self.user_list = []
-
- def register(self):
- print("欢迎来的登录界面")
- while True:
- print("请输入你想要做的操作: a/注册,b/登录")
- register_way = input("请输入:")
- if register_way == "a":
- # 注册
- username = input("请输入用户名:")
- password = input("请输入密码:")
- # 下面通过正则表达式来对密码进行判断
- ret = re.match(r"^[123456789]\d{5}$", password)
- if ret:
- user = Unser(username, password)
- self.user_list.append(user)
- # 进行验证
- print("你注册的用户为:")
- print(self.user_list)
- print(user)
- print("是否确认注册:Y/是,N/否")
- confirm = input("请输入:")
- if confirm == "Y":
- self.save_user()
- elif confirm == "N":
- print("没有保存")
- else:
- print("你输入有误")
- else:
- print("你输入的密码不符合规范,请重新注册")
-
-
-
-
-
- # 登录
- elif register_way == "b":
-
- # 加载用户信息
- self.load_user()
- register_username = input("请输入账号")
- register_password = input("请输入密码")
- # 遍历列表
- for i in self.user_list:
- if i.username == register_username and i.password == register_password:
- # 登录成功
- # 创建实例对象,调用run()方法
- student_manager = StudentManager()
- student_manager.run()
- print("用户名或密码错误,请重新登录。")
-
-
-
- else:
- print("你的选择有误,")
-
- # 定义程序入口函数
- # 1.加载数据
- # 2.功能菜单
- # 3.输入功能序号
- # 4.执行不同功能
- def run(self):
- # 加载学员信息
- self.load_student()
-
- while True:
- # 这是在类里面调用实例方法,调用功能菜单函数
- self.show_menu()
- menu_num = int(input("请输入功能序号 :"))
- if menu_num == 1:
- # 添加学员
- self.add_student()
- elif menu_num == 2:
- # 删除学员
- self.del_student()
- elif menu_num == 3:
- # 修改学员信息
- self.modify_student()
- elif menu_num == 4:
- # 查询学员信息
- self.search_student()
- elif menu_num == 5:
- # 显示所有学员信息
- self.show_student()
- elif menu_num == 6:
- # 保存学员信息
- self.save_student()
- elif menu_num == 7:
- # 退出
- break
-
- # 系统功能函数
-
- # 功能菜单
- # 不涉及对象和对象数据,定义静态方法
- @staticmethod
- def show_menu():
- print("-------------------欢迎来到学员信息管理系统-------------")
- print("请选择下方功能")
- print("1.添加学员")
- print("2.删除学员")
- print("3.修改学员信息")
- print("4.查询学员信息")
- print("5.显示所有学员")
- # print("6.保存学员信息")
- print("7.退出系统")
- # 定义实例属性,用列表来储存每个学员信息
-
- # 添加学员
-
- def add_student(self):
- # 用户输入,姓名,性别,手机号
-
- name = input("请输入你的姓名 :")
-
- gender = input("请输入你的性别 :")
- if gender == "男" or gender == "女":
- tel = input("请输入你的手机号/6位整数字 :")
- # 利用try语句可以实现判段电话号是否是6位整数
- try:
- tel_number = int(tel)
- except:
- print("你输入的手机号有误,请重新操作")
- else:
- tel_len = len(tel)
- if tel_len == 6:
- # 创建学员对象,需先导入Student类,即先导入student模块
- student = Student(name, gender, tel)
-
- # 将学员数据存储到列表中
- self.student_list.append(student)
-
- # 验证一下
- print(self.student_list)
- print("你添加的信息为:")
- print(student)
-
- else:
- print("你输入的电话有误,请重新操作")
- else:
- print("你输入的性别有误,请重新操作")
- confirm = input("是否确认:Y/是,N/否")
- if confirm == "Y":
- self.save_student()
- elif confirm == "N":
- print("没有保存")
- else:
- print("你输入有误")
- # tel = input("请输入你的手机号/6位整数字 :")
-
- # 删除学员
- def del_student(self):
- # 按照姓名来删除学员
- del_name = input("请输入要删除的学员姓名")
- # 遍历列表,查找
- for i in self.student_list:
- if del_name == i.name:
-
- # 删除学员对象
- self.student_list.remove(i)
- print("删除成功")
- # 没有找到,打印没有查到信息
- else:
- print("没有查找到此学员信息")
- # 再次打印列表,查看是否删除
- print(self.student_list)
-
- # 修改学员
- def modify_student(self):
- # 输入目标学员姓名
- modify_name = input("请输入你所要修改的学员信息:")
- # 遍历列表查找是否存在,有则修改,无则提示不存在信息
- for i in self.student_list:
- if modify_name == i.name:
- # 更新学员信息
- i.name = input("请输入学员姓名:")
- i.gender = input("请输入学员性别:")
- i.tel = input("请输入学员电话:")
- print(f"修改的学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
- break
- else:
- print("没有此学员信息")
-
- # 查询学员信息(按照姓名或电话查找)
- def search_student(self):
-
- print("查询方式a/姓名查询,b/电话查询")
- search_way = input("请输入:")
- if search_way == "a":
- search_name = input("请输入你所有查询的姓名:")
- for i in self.student_list:
- if i.name == search_name:
- print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
- break
-
- else:
- print("没有查到此学员信息")
-
- elif search_way == "b":
- search_tel = input("请输入你所查询的电话:")
- for i in self.student_list:
- if i.tel == search_tel:
- print(f"此学员信息为:姓名:{i.name},性别:{i.gender},电话:{i.tel}")
- break
-
- else:
- print("没有查到此学员信息")
- else:
- print("你输入的信息有误,请重新输入")
-
- # 显示所有学员
- def show_student(self):
- print("学员信息如下:")
- # 遍历输出
- for i in self.student_list:
- print(f"姓名:{i.name},性别:{i.gender},电话:{i.tel}")
-
- # 保存学员信息
- def save_student(self):
- # 打开文件
- r = open("student.txt", "w")
- # 文件写入数据先将列表中学员对象转为字典,再写入文件
- new_student_list = [i.__dict__ for i in self.student_list]
- # 写入,再将字典转换为字符串
- r.write(str(new_student_list))
- # 换行功能
- r.write("\r\n")
- # 关闭文件
- r.close()
- print("保存成功")
-
- # 加载学员信息
- def load_student(self):
- # 如果文件存在则以只读模式打开,否则以写入模式打开
- try:
- r = open("student.txt", "r")
- except:
- r = open("student.txt", "w")
- else:
- # 读取数据,读取出的数据是字符串类型,先将其还原为字典,
- data = r.read()
- # eval函数就是实现list、dict、tuple与str之间的转化
- new_list = eval(data)
- self.student_list = [Student(i["name"], i["gender"], i["tel"]) for i in new_list]
- finally:
- r.close()
-
- def save_user(self):
- # 打开文件
- r = open("user.txt", "w")
- # 文件写入数据先将列表中学员对象转为字典,再写入文件
- new_user_list = [i.__dict__ for i in self.user_list]
- # 写入,但需先将列表转换为字符串
- # str函数把list,dict,tuple转为为字符串
- r.write(str(new_user_list))
- r.write("\r\n")
- # 关闭文件
- r.close()
- print("保存成功")
-
- # 加载用户信息
- def load_user(self):
- # 如果文件存在则以只读模式打开,否则以写入模式打开
- try:
- r = open("user.txt", "r")
- except:
- r = open("user.txt", "w")
- else:
- # 读取数据,读取出的数据是字符串类型,先将其还原为字典,
- data = r.read()
- new_user_list = eval(data)
- self.user_list = [Unser(i["username"], i["password"]) for i in new_user_list]
- finally:
- r.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。