1. 程式人生 > >學生選課系統

學生選課系統

程序 初始 urn __main__ with func 提交 課程 拼接

#ADM.py
#-*-coding:utf-8 -*-
__author__ = MrChu
import hashlib
class GetMd5:#MD5加密
    @classmethod
    def get_md5(self,msg):
        md5=hashlib.md5(bsalt!@#$%^&*)#加鹽
        md5.update(msg.encode(utf-8))
        return md5.hexdigest()
class Course:#課程類
    all_course_list=[]#所有課程列表
    @classmethod
    
def add_new_course(cls,course): Course.all_course_list.append(course) class Administrators:#管理員類 def __init__(self,name,pwd):#管理員初始化方法 self.adm_list=[]#管理員賬號列表 self.stu_list=[]#學生賬號列表 self.name=name#賬號 self.pwd=pwd#密碼 self.gongNeng_list =[new_Course
,new_student,show_all_course,show_all_student,show_all_stu_course]#功能列表 def login(self,name,pwd):#管理員登錄方法 with open(administrators.txt,mode=r,encoding=utf-8)as f:#讀取管理員信息文件 for line in f: if line==‘‘:#去空行 continue self.adm_list.append(line.strip().split(
|)[0])#把管理員賬號放到管理員類的管理員賬號列表 if name+|+GetMd5.get_md5(pwd) ==line.strip():#拼接傳入的name和加鹽的pwd,與文件數據作對比 print(登錄成功) self.main_run()#運行管理員主程序方法 break else: print(登錄失敗,請重新輸入) def main_run(self):#管理員主程序方法 with open(student.txt,mode=r,encoding=utf-8)as f:#讀學生的文件 for line in f: if line==‘‘:#去空行 continue self.stu_list.append(line.strip().split(|)[0])#把學生賬號添加到管理員類的學生賬號列表 with open(course.txt,mode=r,encoding=utf-8)as f:#讀取課程文件 for line in f: if line==‘‘:#去空行 continue Course.all_course_list.append(line.strip())#把所有的課程放到課程類的課程列表中 print(歡迎進入管理員課程維護系統) while 1: print(1.創建課程) print(2.創建學生賬號) print(3.查看所有課程) print(4.查看所有學生) print(5.查看所有學生的選課情況) num=input(請選擇要操作的序號(按Q退出維護系統)>>>) if num.upper()==Q: break func=getattr(self,self.gongNeng_list[int(num)-1])#反射通過輸入的值運行相應的方法 func() def new_Course(self):#創建新課程 while 1: course=input(請輸入新建課程(按Q退出):) if course.upper() == Q: break if course in Course.all_course_list:#如果輸入課程在課程類全部課程列表中 print(已有此課程) else: Course.add_new_course(course)#把課程添加到課程類全部課程列表中 with open(course.txt,mode=a,encoding=utf-8)as f:#在課程文件中追加寫入新課程 f.write(course+\n) print(創建課程成功) def new_student(self):#創建新的學生對象 while 1: name=input(請輸入創建賬號(按Q退出):) if name.upper()==Q: break psd=input(請輸入創建密碼:) for el in self.stu_list:#遍歷管理員類的學生賬號列表 if name==el:#如果有此賬號 print(已有此賬號) else: self.stu_list.append(name)#把學生賬號添加入管理員類的學生賬號列表 with open(student.txt,mode=a,encoding=utf-8)as f:#追加寫入學生信息文件 f.write(name+|+GetMd5.get_md5(psd)+\n) print(創建學生賬號成功) def show_all_course(self):#顯示所有課程方法 print(現有課程有:) for el in Course.all_course_list: print(el) def show_all_student(self):#顯示所有學生方法 print(所有的學生有:) for el in self.stu_list: print(el) def show_all_stu_course(self):#顯示所有學生的選課信息方法 with open(student_chioce_course.txt, mode=r, encoding=utf-8)as f: for line in f: print(line.strip()) def zhuce(self,name,psd):#註冊管理員方法 with open(administrators.txt,mode=r,encoding=utf-8)as f:#讀取管理員信息文件 for line in f: if line==‘‘: continue self.adm_list.append(line.strip().split(|)[0])#把管理員賬號放到管理員類的管理員賬號列表 if name in self.adm_list:#判斷賬號是否存在 print(已經存在此管理員) else: with open(administrators.txt, mode=a, encoding=utf-8)as f:#把新創建的管理員賬號秘密追加寫入管理員信息文件 f.write(name + | + GetMd5.get_md5(psd) + \n)#賬號拼接加鹽密碼寫入 print(創建管理員賬號成功)
#STU.py
#-*-coding:utf-8 -*-
__author__ = MrChu
import hashlib
class GetMd5:#MD5加密
    @classmethod
    def get_md5(self,msg):
        md5=hashlib.md5(bsalt!@#$%^&*)#加鹽
        md5.update(msg.encode(utf-8))
        return md5.hexdigest()
class Course:#課程類
    all_course_list=[]#所有課程列表
    @classmethod
    def add_new_course(cls,course):
        Course.all_course_list.append(course)
class Student:#學生類
    def __init__(self,name,pwd):#學生初始化方法
        self.choiced_course_name_lst=[]#已經選課姓名列表
        self.name=name #學生賬號
        self.pwd=GetMd5.get_md5(pwd) #學生密碼
        self.course_list=[]#學生已選課程列表
        self.gongNeng_list=[show_all_course,choice_course,show_chioce_course,del_course]#功能列表
        self.dic={}#存放每個學生已經選課的情況
    def __str__(self):#打印學生對象的方法
        return 學生賬號對象
    def login(self,name,pwd):#學生登錄方法
        with open(student_chioce_course.txt,mode=r,encoding=utf-8)as f:#讀取學生已經選取的課程文件
            for line in f:
                if line==‘‘:
                    continue
                self.choiced_course_name_lst.append(line.strip().split(|)[0])#截取已經選課學生姓名放入學生類已經選課姓名列表
        with open(student.txt, mode=r, encoding=utf-8)as f:#讀學生文件
            for line in f:
                if name+|+GetMd5.get_md5(pwd) == line.strip():#拼接傳入的name和pwd與文件中的數據對比
                    if self.name in self.choiced_course_name_lst:
                        print(此學生已經提交了選課方案,不能再次登陸)
                        break
                    else:
                        print(登錄成功)
                        self.main_run()#運行主程序方法
                        break
            else:
                print(登錄失敗,請重新輸入)
    def main_run(self):#主程序方法
        with open(course.txt,mode=r,encoding=utf-8)as f:#讀全部的課程文件
            for line in f:
                if line==‘‘:#去除空行
                    continue
                Course.all_course_list.append(line.strip())#把所有的課程放到課程類的課程列表中
        print(歡迎進入學生選課系統)
        while 1:
            print(1.查看所有課程)
            print(2.選擇課程)
            print(3.查看所選課程)
            print(4.刪除已選課程)
            num=input(請選擇要操作的序號(按Q退出)>>>)
            if num.upper()==Q:
                response=self.tiJiao()
                if response==1:
                    break
            func=getattr(self,self.gongNeng_list[int(num)-1])#反射通過輸入的值運行相應的方法
            func()
    def show_all_course(self):#顯示所有課程的方法
        print(現有課程有:)
        for el in Course.all_course_list:#遍歷課程類的全部課程列表
            print(el)
    def choice_course(self):#選課的方法
        while 1:

                course = input(請輸入要添加的課程(按Q退出,):)
                if course.upper() == Q:
                    break
                if course in Course.all_course_list:#所選課程在課程類的全部課程列表中,可以選課
                    self.course_list.append(course)#把課程放到學生對象的已選課程列表
                    print(添加成功)
                else:
                    print(沒有此課程)
    def show_chioce_course(self):#顯示所選課程列表
        print(您所選的課程有:)
        for el in self.course_list:#遍歷學生對象的已選課程列表
            print(el)
    def del_course(self):#刪除學生已選課程列表的內容
        while 1:
            course = input(請輸入要刪除的課程(按Q退出):)
            if course.upper()==Q:
                break
            if course in self.course_list:
                self.course_list.remove(course)
                print(刪除成功)
            else:
                print(沒有此課程)
    def tiJiao(self):#提交按鈕方法
        content=input(您是否確認提交選課,確認後不可修改,輸入 Y 或者 N ?)
        if content.upper()==Y:
            course_str = ‘‘  # 設置一個空字符串
            for el in self.course_list:  # 遍歷學生對象的已選課程列表
                course_str += el + |  # 動態拼接已選的所有課程
            course_str = course_str.rstrip(|)  # 去除右邊的‘|‘
            with open(student_chioce_course.txt, mode=a, encoding=utf-8)as f:  # 打開學生已選課程文件
                f.write(self.name + | + course_str + \n)  # 拼接學生姓名寫入學生的選課信息
            return 1
        elif content.upper()==N:
            return 0
        else:
            print(輸入有誤)
            return -1
#main.py
#-*-coding:utf-8 -*-
__author__ = MrChu
import STU
import ADM
class Run:
    @classmethod
    def login(self):
        while 1:
            print(1.管理員登錄)
            print(2.學生登錄)
            print(3.註冊管理員賬號)
            num = input("請選擇登錄方式(按‘Q‘退出程序)>>>")
            if num.upper() == Q:
                break
            if int(num) == 1:
                while 1:
                    name = input(請輸入登錄賬號(按Q返回主登錄頁面):)
                    if name.upper() == Q:
                        break
                    pwd = input(請輸入密碼:)
                    ad=ADM.Administrators(name,pwd)
                    func=getattr(ad,login)
                    func(name,pwd)
            elif int(num)==2:
                while 1:
                    name = input(請輸入登錄賬號(按Q返回主登錄頁面):)
                    if name.upper() == Q:
                        break
                    pwd = input(請輸入密碼)
                    stu=STU.Student(name,pwd)
                    func=getattr(stu,login)
                    func(name,pwd)
            elif int(num) == 3:
                while 1:
                    name = input(請輸入註冊賬號(按Q返回主登錄頁面):)
                    if name.upper() == Q:
                        break
                    pwd = input(請輸入密碼)
                    ad = ADM.Administrators(name, pwd)
                    func = getattr(ad, zhuce)
                    func(name, pwd)

if __name__=="__main__":
    Run.login()

學生選課系統