python实现学生管理系统(文件操作,面向对象)
一、需求分析
- 学生管理系统所具备功能
- 登录及注册管理账号
- 对学生信息要可以实现基本的增删改查功能
- 可以显示出所有的学生信息
- 将学生信息以及管理账户信息保存至对应文件
系统分析
- 系统管理登录模块
1)管理员登录模块
2) 管理员注册模块 - 学生信息管理模块
1)添加学生信息模块
2)删除学生信息模块
3)修改学生信息模块
4)查询学生信息模块
5)显示学生信息模块
6)保存数据模块
详细代码
1、StudentT类
import os
class StudentT(object):
def __init__(self):
self.student_list=[]
self.student_dict={}
#学生管理系统界面
@staticmethod
def jiemian():
print("┌--------------------------┐")
print("│ 学生管理系统 │")
print("│**************************│")
print("│ 1:添加学生信息 │")
print("│ 2:删除学生信息 │")
print("│ 3:修改学生信息 │")
print("│ 4:查询学生信息 │")
print("│ 5:显示所有学生 │")
print("│ 6:保存数据 │")
print("│ 7:退出系统 │")
print("│==========================│")
print("└--------------------------┘")
#添加学生
def add(self):
number=input("请输入录入学生学号:")
t = 0
for student_dict_1 in self.student_list:
if number == student_dict_1["number"]:
t = 1
break
if t == 0:
name=input("请输入录入学生姓名:")
cls=input("请输入学生班级:")
age=input("请输入录入学生年龄:")
phone=input("请输入录入学生手机号:")
addr=input("请输入录入学生家庭住址:")
self.student_dict={"number":number,"name":name,"class":cls,"age":age,"phone":phone,"address":addr}
self.student_list.append(self.student_dict)
print()
print("-----添加学生信息界面-----")
print()
print("学号\t\t","姓名\t\t","班级\t\t","年龄\t\t","电话号\t\t\t","家庭住址\t\t")
print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(number,name,cls,age,phone,addr))
print()
print("录入成功!")
print()
else:
print("\n该学生以存在\n")
#删除学生
def dele(self):
number_del=input("请输入想要删除的学生学号:")
for student_dict_1 in self.student_list:
if number_del == student_dict_1["number"]:
self.student_list.remove(student_dict_1)
print("\n学号<%s>信息删除成功!\n" % number_del)
break
else:
print("\n您输入的学生学号错误,请重新输入\n")
#修改学生
def xiugai(self):
number_xiugai=input("请输入想要修改的学生学号:")
for student_dict_1 in self.student_list:
if number_xiugai == student_dict_1["number"]:
self.student_list.remove(student_dict_1)
print("\n-----修改界面-----\n")
print("学号\t\t","姓名\t\t","班级\t\t","年龄\t\t","电话号\t\t","家庭住址\t\t")
print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(student_dict_1["number"],
student_dict_1["name"],
student_dict_1["class"],
student_dict_1["age"],
student_dict_1["phone"],
student_dict_1["address"]))
#回车不修改
student_dict_1["number"]=self.new_input(student_dict_1["number"],"请输入修改后的学生学号[回车不修改]:")
student_dict_1["name"]=self.new_input(student_dict_1["name"],"请输入修改后的学生姓名[回车不修改]:")
student_dict_1["class"]=self.new_input(student_dict_1["class"],"请输入修改后的学生班级[回车不修改]:")
student_dict_1["age"]=self.new_input(student_dict_1["age"],"请输入修改后的学生年龄[回车不修改]:")
student_dict_1["phone"]=self.new_input(student_dict_1["phone"],"请输入修改后的学生手机号[回车不修改]:")
student_dict_1["address"]=self.new_input(student_dict_1["address"],"请输入修改后的学生家庭地址[回车不修改]:")
self.student_list.append(student_dict_1)
print("\n修改成功!\n")
break
else:
print("\n您输入的学生学号错误,请重新输入\n")
#查找学生
def find(self):
find_number=input("请输入需要查找的学生学号:")
t = 0
for student_dict_1 in self.student_list:
if find_number == student_dict_1["number"]:
t = 1
break
if t == 1:
print("\n-----查询结果界面-----\n")
print("学号\t\t","姓名\t\t","班级\t\t","年龄\t\t","电话号\t\t\t","家庭住址\t\t")
print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(student_dict_1["number"],
student_dict_1["name"],
student_dict_1["class"],
student_dict_1["age"],
student_dict_1["phone"],
student_dict_1["address"]))
else:
print("\n-----查询结果界面-----\n")
print("\n无此学生信息\n")
#显示所有学生信息
def showall(self):
if len(self.student_list)>0:
print()
print("-----显示所有学生信息-----")
print()
print("学号\t\t","姓名\t\t", "班级\t\t", "年龄\t\t", "电话号\t\t\t", "家庭住址\t\t")
for student_dict_1 in self.student_list:
print("%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s" %(student_dict_1["number"],
student_dict_1["name"],
student_dict_1["class"],
student_dict_1["age"],
student_dict_1["phone"],
student_dict_1["address"]))
else:
print("\n暂无数据!\n")
#设置用户不输入内容返回原值,输入内容返回新内容
def new_input(self,yuanzhi,message):
self.input_str=input(message)
if len(self.input_str) > 1:
return self.input_str
else:
return yuanzhi
#保存学生数据至文件中
def save_file(self):
f = open("./information/student.txt", 'w', encoding='utf-8')
f.write(str(self.student_list))
f.close()
print("\n数据保存成功!\n")
#将学生数据读取至变量中
def read_file(self):
if os.path.exists('./information/student.txt'):
f = open('./information/student.txt', 'r', encoding='utf-8')
ret = f.read()
self.student_list=eval(ret)
f.close()
2、Student类
import os
import student_tools
class Student(student_tools.StudentT):
def __init__(self):
self.user_pwd = []
student_tools.StudentT.__init__(self)
#保存管理员数据至文件中
def save_staff(self):
f = open("./information/staff.txt", 'w', encoding='utf-8')
f.write(str(self.user_pwd))
f.close()
#将管理员数据读取至变量中
def read_staff(self):
f = open('./information/staff.txt', 'r', encoding='utf-8')
ret = f.read()
self.user_pwd=eval(ret)
f.close()
#登录
def denglu(self):
self.read_staff()#将管理员数据读取至变量中
users = input("请输入您的用户名:")
pwds = input("请输入您的密码:")
user_pwd = users+"&"+pwds+"\n"
t = 0
for i in self.user_pwd:
if i == user_pwd:
t=1
break
if t == 1:
print("登录成功!")
self.student()
else:
print("账号或密码不正确!")
#注册
def zhuce(self):
self.read_staff()#将管理员数据读取至变量中
users=input("请输入您要注册的用户名:")
t = 0
for i in self.user_pwd:
if users+"&" in i:
t = 1
break
if t == 0:
pwds=input("请输入您要注册的密码:")
user_pwd = users+"&"+pwds+"\n"
self.user_pwd.append(user_pwd)
self.save_staff()#保存管理员数据至文件中
print("\n注册成功!\n")
else:
print("\n该账户已存在!\n")
#检测文件夹
def inspect(self):
cat = os.listdir() #获取目录
t = 1
#判断目录中是否有所需文件夹
for i in cat:
if i == "information":
t = 0
break
if t != 0:
#若没有则新建
os.mkdir("information")
#登录界面
def dljiemian(self):
while True:
print("----------------------------")
print("* 学生管理系统登陆界面 *")
print("* *")
print("* 1:登 录 *")
print("* 2:注 册 *")
print("* 3:退 出 *")
print("* *")
print("----------------------------")
xx=input("请输入您的选择:")
#1.登录
if xx=='1':
self.denglu()
elif xx=='2':
#2.注册
self.zhuce()
elif xx=='3':
#3.退出
print("\n欢迎再次使用!\n")
input("")
break
else:
print("输入错误,请重新输入")
#学生管理系统
def student(self):
super().read_file()
while True:
#调用student_tools模块中的界面函数
super().jiemian()
x=input("请输入您的选择:")
#添加学生
if x=='1':
super().add()
#删除学生
elif x=='2':
super().dele()
#修改学生
elif x=='3':
super().xiugai()
#查询学生
elif x=='4':
super().find()
#显示所有学生
elif x=='5':
super().showall()
#保存数据至文件中
elif x=='6':
super().save_file()
#退出学生管理系统,返回上一层登录界面系统
elif x=='7':
print()
print("成功退出学生管理系统!")
break
else:
print("\n输入错误,请重新输入\n")
#调用最先执行的登录界面函数
if __name__=='__main__':
wtt=Student()
wtt.inspect()
wtt.dljiemian()
注:将 StudentT类保存为student_tools.py
文件,若修改次文件名则需对应修改Student类第二行;若运行次系统侧运行Student类所保存的文件即可。