school management system
说明:先运行管理员界面建学校信息,后面随意。
结构
main.py
from school_view import school_main from student_view import student_main from teacher_view import teacher_main type_user = ["管理员","教师","学生"] while True: for i in range(len(type_user)): print(i,type_user[i]) choice_view = input("选择身份-->") if choice_view.isdigit(): choice_view = int(choice_view) if choice_view == 0: school_main.main() elif choice_view == 1: teacher_main.main() elif choice_view == 2: student_main.main() else: print("请按要求输入") else: print("请按要求输入")
school.list.py
import os def list(): s_list = [] for filename in os.listdir(os.path.dirname(os.path.abspath(__file__))): if "school_info_" in filename: s_list.append(filename.strip("\n").split("_")[2]) for i in s_list: print(i)
school_member.main.py
class school_member(object): def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender def tell(self): pass
school_main.py
import sys,os class School(object): def __init__(self,name,addr): self.name = name self.addr = addr def school_establish(): school_course = [] school_name = input("学校名称:") school_addr = input("学校地址:") while True: course = input("开设的课程或输入q结束输入:") if course == "q": break else: teacher_salary = input("教师工资:") if teacher_salary.isdigit(): teacher_salary = int(teacher_salary) else: print("请输入数字") student_tuition = input("学生学费:") if student_tuition.isdigit(): student_tuition = int(student_tuition) else: print("请输入数字") school_course.append((course,teacher_salary,student_tuition)) s = School(school_name,school_addr) if os.path.exists("school_info_school_name"): print("该学校名已存在") else: f = open("school_info_%s"%school_name,"w",encoding="utf-8") f.write(school_name) f.write(":") f.write(school_addr) f.write("\n") for item in school_course: f.write(str(item[0])) f.write(":") f.write(str(item[1])) f.write(":") f.write(str(item[2])) f.write("\n") f.close() def register(): while True: name = input("用户名:") passwd = input("密码:") passwd_again = input("再次输入密码:") if passwd != passwd_again: print("两次密码不一致") else: if os.path.exists("%s"%name): print("用户名已存在") else: f = open("%s"%name,"w",encoding="utf-8") f.write(name) f.write(":") f.write(passwd) f.close() break def login(): global manager_login manager_login = { "name": None, "password": None, "if_login": False } name = input("用户名:") f = open("%s"%name,"r",encoding="utf-8") for line in f: if name in line: passwd = input("密码:") username = line.strip("\n").split(":")[0] password = line.strip("\n").split(":")[1] if username == name and password == passwd: manager_login["name"] = name manager_login["password"] = passwd manager_login["if_login"] = True print("%s登录成功,请选择操作"%name) return True else: print("密码错误") return False else: print("用户不存在") return False f.close() def look_for_student(): try: f = open("student_info","r",encoding="utf-8") for line in f: print(line) except FileNotFoundError as e: print("还没有开始招生") def look_for_teacher(): try: f = open("teacher_info","r",encoding="utf-8") for line in f: print(line) except FileNotFoundError as e: print("还没有开始招老师") def del_student(): Flag = True if Flag == False: del Flag while Flag: del_name = input("所要删除的用户名:") f = open("student_info", "r", encoding="utf-8") for line in f: if del_name in line: f_new = open("student_info.bak", "w", encoding="utf-8") for line in f: if del_name not in line: f_new.write(line) else: continue f_new.close() f = open("student_info", "w", encoding="utf-8") f_new = open("student_info.bak", "r", encoding="utf-8") for line in f_new: f.write(line) print("删除成功") Flag = False break elif line == "\n": print("此用户不存在") break else: continue f.close() def del_teacher(): Flag = True if Flag == False: del Flag while Flag: del_name = input("所要删除的用户名:") f = open("teacher_info","r",encoding="utf-8") for line in f: if del_name in line: f_new = open("teacher_info.bak", "w", encoding="utf-8") for line in f: if del_name not in line: f_new.write(line) else: continue f_new.close() f = open("teacher_info","w", encoding="utf-8") f_new = open("teacher_info.bak","r",encoding="utf-8") for line in f_new: f.write(line) print("删除成功") Flag = False break elif del_name not in line: print("test") continue f.close() def main(): while True: choice_login_register = input("0 注册\n1 登录\n2 返回\n3 退出\n-->") if choice_login_register.isdigit(): choice_login_register = int(choice_login_register) if choice_login_register == 0: register() elif choice_login_register == 1: if login(): while True: print("0 查询学生信息\n1 查询教师信息\n2 删除学生信息\n3 删除教师信息\n4 新建学校信息") choice = input("-->") if choice.isdigit(): choice = int(choice) if choice == 0: look_for_student() elif choice == 1: look_for_teacher() elif choice == 2: del_student() elif choice == 3: del_teacher() elif choice == 4: school_establish() elif choice == 4: break elif choice == 5: exit() else: print("请按要求输入") elif choice_login_register == 2: break elif choice_login_register == 3: quit() else: print("请输入正确的数字编号") else: print("输入格式错误")
student.main.py
import sys,os t_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(t_dir) from school_member import school_member_main from main_view import school_list class Student(school_member_main.school_member): def __init__(self,name,age,gender,course,tuition): super(Student,self).__init__(name,age,gender) self.course = course self.tuition = tuition def register(): Flag1 = True Flag2 = True Flag3 = True Flag4 = True if Flag1 == False and Flag2 == False and Flag3 == False and Flag4: del Flag1,Flag2,Flag3,Flag4 while Flag3: name = input("用户名:") Flag5 = True while Flag4: try: f = open("student_info", "r", encoding="utf-8") for line in f: if name in line: print("用户名已存在") Flag5 = False break f.close() if Flag5 == False: break else: passwd = input("密码:") passwd_again = input("请再次输入密码:") if passwd != passwd_again: print("两次密码不一致") else: age = input("年龄:") s_gender = input("性别 男/女:") while Flag1: print("可选学校:") school_list.list() choice_school = input("请选择学校:") while Flag2: try: f = open("school_info_%s" % choice_school, "r", encoding="utf-8") for line in f: if choice_school not in line: print(line.strip("\n").split(":")[0]) f.close() choice_course = input("请选择课程:") f = open("school_info_%s" % choice_school, "r+", encoding="utf-8") for line in f: if choice_course in line: s_course = line.strip("\n").split(":")[0] s_tuition = line.strip("\n").split(":")[2] pay_tuition = input("请交%s元学费:" % s_tuition) if pay_tuition == s_tuition: s = Student(name, age, gender=s_gender, tuition=s_tuition, course=s_course) f = open("student_info", "a+", encoding="utf-8") f.write(name) f.write(":") f.write(passwd) f.write(":") f.write(age) f.write(":") f.write(s_gender) f.write(":") f.write(s_course) f.write(":") f.write(s_tuition) f.write("\n") f.close() print("注册成功") Flag4 = False Flag3 = False Flag2 = False Flag1 = False break else: print("请确定你的金额") except FileNotFoundError as e: print("没有这个学校,请重新输入") break except FileNotFoundError as e: f = open("student_info", "w", encoding="utf-8") f.close() def login(): global student_login student_login = { "name":None, "password":None, "if_login":False } name = input("用户名:") f = open("student_info","r",encoding="utf-8") for line in f: if name in line: username = line.strip("\n").split(":")[0] passwd = input("密码:") pass_wd = line.strip("\n").split(":")[1] if name == username and pass_wd == passwd: student_login["name"] = name student_login["password"] = passwd student_login["if_login"] = True print("登录成功") return True else: print("用户名或密码错误") return False def look_for_grade(): f = open("student_info", "r", encoding="utf-8") for line in f: if student_login["if_login"] == True: if student_login["name"] in line: course = line.strip("\n").split(":")[4] f = open("student_grade_%s" % course, "r", encoding="utf-8") for line in f: if student_login["name"] in line: print(course,":",line.strip("\n").split(":")[1]) f.close() break else: print("请先登录") f.close() def look_for_self(): f = open("student_info", "r", encoding="utf-8") for line in f: if student_login["if_login"] == True: if student_login["name"] in line: print(line) break def main(): while True: print("0 注册\n1 登录\n2 返回\n3 退出") choice_register_login = input("-->") if choice_register_login.isdigit(): choice_register_login = int(choice_register_login) if choice_register_login == 0: register() elif choice_register_login == 1: if login(): while True: print("0 查询成绩\n1 查询身份信息\n2 返回\n3 退出") choice = input("-->") if choice.isdigit(): choice = int(choice) if choice == 0: look_for_grade() elif choice == 1: look_for_self() elif choice == 2: break elif choice == 3: exit() else: print("请按要求输入") elif choice_register_login == 2: break elif choice_register_login == 3: exit() else: print("请按要求输入")
teacher_main.py
import sys,os t_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(t_dir) from school_member import school_member_main from main_view import school_list teacher_login = { "name":None, "password":None, "if_login":False } class Teacher(school_member_main.school_member): def __init__(self,name,age,gender,salary,course): super(Teacher,self).__init__(name,age,gender) self.salary = salary self.course = course def register(): Flag1 = True Flag2 = True Flag3 = True Flag4 = True if Flag1 == False and Flag2 == False and Flag3 == False and Flag4 == False: del Flag1,Flag2,Flag3,Flag4 while Flag3: name = input("用户名:") Flag5 = True while Flag4: try: f = open("teacher_info","r",encoding="utf-8") for line in f: if name in line: print("用户名已存在") Flag5 = False break f.close() if Flag5 == False: break else: passwd = input("密码:") passwd_again = input("请再次输入密码:") if passwd != passwd_again: print("两次密码不一致") else: age = input("年龄:") gender = input("性别 男/女:") while Flag1: print("可选学校:") school_list.list() choice_school = input("请选择学校:") while Flag2: try: f = open("school_info_%s" % choice_school, "r", encoding="utf-8") for line in f: if choice_school not in line: print(line.strip("\n").split(":")[0]) f.close() choice_course = input("请选择课程:") f = open("school_info_%s" % choice_school, "r+", encoding="utf-8") for line in f: if choice_course in line: t_course = line.strip("\n").split(":")[0] t_salary = line.strip("\n").split(":")[1] t = Teacher(name, age, gender, salary=t_salary, course=t_course) f = open("teacher_info", "a+", encoding="utf-8") f.write(name) f.write(":") f.write(passwd) f.write(":") f.write(age) f.write(":") f.write(gender) f.write(":") f.write(t_salary) f.write(":") f.write(t_course) f.write("\n") print("注册成功") print("你的工资为每月%s元"%t_salary) f.close() Flag4 = False Flag3 = False Flag2 = False Flag1 = False break except FileNotFoundError as e: print("没有这个学校,请重新输入") break except FileNotFoundError as e: f = open("teacher_info","w",encoding="utf-8") f.close() def login(): global teacher_login name = input("用户名:") passwd = input("密码:") try: f = open("teacher_info", "r", encoding="utf-8") for line in f: if name in line: username = line.strip("\n").split(":")[0] pass_wd = line.strip("\n").split(":")[1] if name == username and pass_wd == passwd: teacher_login["name"] = name teacher_login["password"] = passwd teacher_login["if_login"] = True print("登录成功") return True else: print("用户名或密码错误") return False elif line == "\n": print("用户不存在") return False except FileNotFoundError as e: print("你还没有注册") def look_for_self(): f = open("teacher_info","r",encoding="utf-8") for line in f: if teacher_login["if_login"] == True: if teacher_login["name"] in line: print(line) break else: print("请先登录") def look_for_student(): f = open("teacher_info","r",encoding="utf-8") for line in f: if teacher_login["if_login"] == True: if teacher_login["name"] in line: course = line.strip("\n").split(":")[5] try: f = open("student_info","r",encoding="utf-8") for line in f: if course in line: s_info = [] s_info.append(line.strip("\n").split(":")[0]) s_info.append(line.strip("\n").split(":")[2]) s_info.append(line.strip("\n").split(":")[3]) print(s_info[0],s_info[1],s_info[2]) f.close() except FileNotFoundError as e: print("还没有为学生打分") else: print("请先登录") f.close() def record_grade(): f = open("teacher_info", "r", encoding="utf-8") for line in f: if teacher_login["if_login"] == True: if teacher_login["name"] in line: course = line.strip("\n").split(":")[5] try: f = open("student_info", "r", encoding="utf-8") f_grade = open("student_grade_%s"%course,"w",encoding="utf-8") for line in f: if course in line: s = line.strip("\n").split(":")[0] f_grade.write("%s:"%s) f_grade.write(input("%s:"%s)) f_grade.write("\n") f.close() f_grade.close() print("完成") break except FileNotFoundError as e: print("还没有开始招收学生") else: print("请先登录") f.close() def look_for_grade(): f = open("teacher_info", "r", encoding="utf-8") for line in f: if teacher_login["if_login"] == True: if teacher_login["name"] in line: course = line.strip("\n").split(":")[5] try: f = open("student_grade_%s"% course,"r",encoding="utf-8") for line in f: print(line) f.close() break except FileNotFoundError as e: print("还没有开始招收学生") else: print("请先登录") f.close() def main(): while True: print("0 注册\n1 登录\n2 返回\n3 退出") choice_register_login = input("-->") if choice_register_login.isdigit(): choice_register_login = int(choice_register_login) if choice_register_login == 0: register() elif choice_register_login == 1: if login(): while True: print("0 查询详细信息\n1 查询班级学生信息\n2 记录班级学生成绩\n3 " "查询学生成绩\n4 返回\n5 退出") choice = input("-->") if choice.isdigit(): choice = int(choice) if choice == 0: look_for_self() elif choice == 1: look_for_student() elif choice == 2: record_grade() elif choice == 3: look_for_grade() elif choice == 4: break elif choice == 5: exit() else: print("请按要求输入") elif choice_register_login == 2: break elif choice_register_login == 3: exit() else: print("请按要求输入")