一、需求分析
-
學生管理系統(tǒng)所具備功能
- 登錄及注冊管理賬號
- 對學生信息要可以實現(xiàn)基本的增刪改查功能
- 可以顯示出所有的學生信息
- 將學生信息以及管理賬戶信息保存至對應(yīng)文件
系統(tǒng)分析
-
系統(tǒng)管理登錄模塊
1)管理員登錄模塊
2) 管理員注冊模塊
-
學生信息管理模塊
1)添加學生信息模塊
2)刪除學生信息模塊
3)修改學生信息模塊
4)查詢學生信息模塊
5)顯示學生信息模塊
6)保存數(shù)據(jù)模塊
詳細代碼
1、StudentT類
import os
class StudentT(object):
def __init__(self):
self.student_list=[]
self.student_dict={}
#學生管理系統(tǒng)界面
@staticmethod
def jiemian():
print("┌--------------------------┐")
print("│ 學生管理系統(tǒng) │")
print("│**************************│")
print("│ 1:添加學生信息 │")
print("│ 2:刪除學生信息 │")
print("│ 3:修改學生信息 │")
print("│ 4:查詢學生信息 │")
print("│ 5:顯示所有學生 │")
print("│ 6:保存數(shù)據(jù) │")
print("│ 7:退出系統(tǒng) │")
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-----查詢結(jié)果界面-----\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-----查詢結(jié)果界面-----\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暫無數(shù)據(jù)!\n")
#設(shè)置用戶不輸入內(nèi)容返回原值,輸入內(nèi)容返回新內(nèi)容
def new_input(self,yuanzhi,message):
self.input_str=input(message)
if len(self.input_str) > 1:
return self.input_str
else:
return yuanzhi
#保存學生數(shù)據(jù)至文件中
def save_file(self):
f = open("./information/student.txt", 'w', encoding='utf-8')
f.write(str(self.student_list))
f.close()
print("\n數(shù)據(jù)保存成功!\n")
#將學生數(shù)據(jù)讀取至變量中
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)
#保存管理員數(shù)據(jù)至文件中
def save_staff(self):
f = open("./information/staff.txt", 'w', encoding='utf-8')
f.write(str(self.user_pwd))
f.close()
#將管理員數(shù)據(jù)讀取至變量中
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()#將管理員數(shù)據(jù)讀取至變量中
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()#將管理員數(shù)據(jù)讀取至變量中
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()#保存管理員數(shù)據(jù)至文件中
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("* 學生管理系統(tǒng)登陸界面 *")
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("輸入錯誤,請重新輸入")
#學生管理系統(tǒng)
def student(self):
super().read_file()
while True:
#調(diào)用student_tools模塊中的界面函數(shù)
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()
#保存數(shù)據(jù)至文件中
elif x=='6':
super().save_file()
#退出學生管理系統(tǒng),返回上一層登錄界面系統(tǒng)
elif x=='7':
print()
print("成功退出學生管理系統(tǒng)!")
break
else:
print("\n輸入錯誤,請重新輸入\n")
#調(diào)用最先執(zhí)行的登錄界面函數(shù)
if __name__=='__main__':
wtt=Student()
wtt.inspect()
wtt.dljiemian()
注:將 StudentT類 保存為student_tools.py文件,若修改次文件名則需對應(yīng)修改Student類第二行;若運行次系統(tǒng)側(cè)運行Student類所保存的文件即可。