目录
一、欢迎界面
===================================
** 欢迎来到学生管理系统 **
♦️ 1. 登 录
♦️ 2. 注 册
♦️ 3. 退 出
===================================
1.登录
(1)登录成功后可进入学生信息管理界面
(2)账号不存在,提示账号有误
(3)密码有误,提示登陆失败
# 登录函数
def login():
# 读取已经注册的用户信息
user_info = read_file('user_info.txt', {})
user_name = str(input('请输入用户名:'))
password = str(input('请输入密码:'))
# 判断用户是否存在
if user_name not in user_info:
print('账号不存在!')
# 判断密码是否正确
elif password != user_info[user_name]:
print('密码有误,登陆失败!')
else:
print('登录成功!')
# 进入学生信息管理界面
stu_manage()
2.注册
(1)注册成功,将注册信息写入文本。可使用{‘user_name’:’password’} 字典格式。
(2)判断账号、密码长度,不服的要求提示 不符合要求,重新输入
(3)账号存在,提示 用户名已存在
# 注册函数
def register():
# 读取已经注册的用户信息
user_info = read_file('user_info.txt', {})
while True:
user_name = str(input('请输入用户名:'))
# 判断用户名长度是否符合要求
if len(user_name) < 6 or len(user_name) > 12:
print('用户名长度应在6到12之间,请重新输入!')
continue
# 判断用户名是否存在
if user_name in user_info:
print('用户名已存在,请重新输入!')
continue
break
while True:
password = str(input('请输入密码:'))
# 判断密码长度是否符合要求
if len(password) < 6 or len(password) > 12:
print('密码长度应在6到12之间,请重新输入!')
continue
break
# 将用户注册信息保存到文件中
with open('../file/user_info.txt', 'a', encoding='utf8') as f: # 改为覆盖写入模式(w)
f.write(f'{user_name},{password}\n')
print('注册成功!')
二、学生信息管理界面
====================================
🌺🌺欢迎:
♥ 1. 添加学生
♥ 2. 查看学生
♥ 3. 删除学生
♥ 4. 返回
======================================
定义学生类Student:
# 学生类
class Student:
def __init__(self, name, age, sex, tel):
self.name = name
self.age = age
self.sex = sex
self.tel = tel
def __repr__(self):
return f"姓名:{self.name}\t年龄:{self.age}\t性别:{self.sex}\t电话:{self.tel}\n"
定义学生信息管理类StudentInfoManager:
# 学生信息管理类
class StudentInfoManager:
以下功能实现都会加在此类中。
1.添加学生
# 添加学生
@staticmethod
def add_student():
name = input("请输入学生姓名:")
age = int(input("请输入学生年龄:"))
while True: # 循环验证学生性别输入是否合法
sex = input("请输入学生性别(男/女):")
if sex == '男' or sex == '女':
break
else:
print("输入错误,请重新输入!")
while True: # 循环验证学生电话输入是否合法
tel = input("请输入学生电话(11):")
if len(tel) != 11:
print("电话号码长度不正确,请重新输入!")
else:
with open("../file/student_info.txt", "r+", encoding='utf8') as f:
if os.path.getsize("../file/student_info.txt") == 0:
data = {"all_students": [], "num": 0}
else:
data = json.load(f)
exist = False
for student in data["all_students"]:
if student["tel"] == tel:
exist = True
break
if exist:
print("该电话已被使用,请重新输入!")
else:
break
stu = Student(name, age, sex, tel)
with open("../file/student_info.txt", "r+", encoding='utf8') as f:
if os.path.getsize("../file/student_info.txt") == 0:
data = {"all_students": [], "num": 0}
else:
data = json.load(f)
data["all_students"].append(stu.__dict__)
data["num"] += 1
f.seek(0)
json.dump(data, f, ensure_ascii=False)
f.truncate()
print("学生信息已添加成功!")
2.查看学生
(1)查看所有学生,显示所有学生信息
# 查看所有学生
@staticmethod
def show_students():
with open("../file/student_info.txt", "r", encoding='utf8') as f:
try:
data = json.load(f)
for i, stu in enumerate(data["all_students"], 1):
print(f"{i}. {Student(**stu)}")
except:
print('当前没有录入学生信息')
(2)根据姓名查找
# 根据姓名查找学生
@staticmethod
def search_student_by_name():
name = input('请输入要查看的姓名:')
with open("../file/student_info.txt", "r", encoding='utf8') as f:
data = json.load(f)
for i, stu in enumerate(data["all_students"], 1):
if stu["name"] == name:
print(f"学生信息如下:\n{i}. {Student(**stu)}")
return True
print(f"未找到姓名为{name}的学生!")
return False
3.删除学生
(1)按照姓名删除
输入姓名,展示带标号的学生信息,输入要删除的学生编号,实现学生信息在文本中的删除
# 删除学生
@staticmethod
def delete_student_by_name():
name = input('请输入要删除的姓名:')
with open("../file/student_info.txt", "r+", encoding='utf8') as f:
data = json.load(f)
new_data = {"all_students": [], "num": data["num"] - 1}
for i, stu in enumerate(data["all_students"], 1):
if stu["name"] == name:
print(f"学生信息如下:\n{i}. {Student(**stu)}")
choice = input("是否删除该学生信息?(Y/N)").strip().lower()
if choice == "y":
continue
new_data["all_students"].append(stu)
f.seek(0)
json.dump(new_data, f, ensure_ascii=False)
f.truncate()
print(f"学生信息已删除!")
def add_info(self):
pass
def search_info(self):
pass
def delete_info(self):
pass
4.学生信息管理界面
# 学生信息管理
def stu_manage():
# 学生类
student_manager = StudentInfoManager()
while True:
# 学生信息管理界面
content = read_text('student_page.txt')
print(content)
# 选择操作
option = input("请选择操作:")
if option == "1":
student_manager.add_student()
elif option == "2":
while True:
choice = input('请选择查看方式\n\t1.查看所有学生\n\t2.根据学生姓名查找\n\t3.返回\n请选择:')
if choice == '1':
student_manager.show_students()
elif choice == '2':
student_manager.search_student_by_name()
elif choice == '3':
break
else:
print("输入错误,请重新输入!")
elif option == "3":
student_manager.delete_student_by_name()
elif option == '4':
break
else:
print("输入错误,请重新输入")
三.部分文件及功能函数
1.功能函数:
# 读取文件信息
def read_file(file_name, x):
file_path = '../file/' + file_name
user = {}
# 如果文件不存在或者文件为空,则创建空 JSON 对象
if not os.path.exists(file_path) or os.path.getsize(file_path) == 0:
with open(file_path, 'w', encoding='utf8') as f:
f.write('{}')
try:
# 读取文件内容
with open(file_path, 'r', encoding='utf8') as f:
for line in f:
line = line.strip()
if not line:
continue
username, password = line.split(',')
user[username] = password
return user
except:
return x
# 读取文本信息
def read_text(file_name):
file_path = '../file/' + file_name
# 如果文件不存在或者文件为空,则创建空 JSON 对象
if not os.path.exists(file_path) or os.path.getsize(file_path) == 0:
with open(file_path, 'w', encoding='utf8') as f:
f.write('{}')
with open(file_path, 'r', encoding='utf8') as f:
content = f.read()
return content
2.文件展示
(1)student_info.txt储存学生信息
(2)user_info.txt储存用户信息
(3)welcome.txt欢迎界面
===================================
** 欢迎来到学生管理系统 **
♦️ 1. 登 录
♦️ 2. 注 册
♦️ 3. 退 出
===================================
(4)student_page.txt学生管理界面
====================================
🌺🌺欢迎:
♥ 1. 添加学生
♥ 2. 查看学生
♥ 3. 删除学生
♥ 4. 返回
====================================
3.代码
(1)index.py储存以上功能函数以及定义的类
(2)main.py主程序入口
import index
# 主程序入口
while True:
# 欢迎界面
content = index.read_text('welcome.txt')
print(content)
# 选择操作
option = input("请选择操作:")
if option == "1":
index.login()
elif option == "2":
index.register()
elif option == "3":
break
else:
print("输入错误,请重新输入!")
四.代码运行(部分功能展示截图)