Python3 & ?向?qū)ο蟀咐▽W(xué)生管理系統(tǒng))

使??向?qū)ο缶幊趟枷胪瓿蓪W(xué)生管理系統(tǒng)的開發(fā),具體需求如下:
系統(tǒng)要求:學(xué)生數(shù)據(jù)存儲在指定?件中
系統(tǒng)功能:添加學(xué)生、刪除學(xué)生、修改學(xué)生信息、查詢學(xué)生信息、顯示所有學(xué)生信息、保存學(xué)生信息及退出系統(tǒng)等功能。

1、準(zhǔn)備文件
創(chuàng)建項(xiàng)目目錄:學(xué)生管理系統(tǒng)
需要py文件:
程序???件:Main.py
學(xué)員?件:Student.py
管理系統(tǒng)?件:StudentManager.py


image.png

2、代碼實(shí)現(xiàn)
Main.py 為項(xiàng)目運(yùn)行入口

from StudentManager import *
if __name__ == '__main__':
    studentManager = StudentManager()
    studentManager.run()

Student.py
學(xué)生信息包含:姓名、性別、?機(jī)號;所以在初始化方法中設(shè)置屬性
添加 str 魔法?法,?便查看學(xué)生對象信息

class Student():
    def __init__(self,name,sex,phone):
        self.name = name
        self.sex = sex
        self.phone = phone

    def __str__(self):
        return f"{self.name},{self.sex},{self.phone}"

StudentManager.py用于實(shí)現(xiàn)對學(xué)生的各種操作

from  Student import *

class StudentManager():
    def __init__(self):
        self.student_list = []

    @staticmethod
    def menu():
        print('請選擇如下功能-----------------')
        print('1:添加學(xué)員')
        print('2:刪除學(xué)員')
        print('3:修改學(xué)員信息')
        print('4:查詢學(xué)員信息')
        print('5:顯示所有學(xué)員信息')
        print('6:保存學(xué)員信息')
        print('7:退出系統(tǒng)')

    def run(self):
        self.load_student()
        while True:
            self.menu()
            number = int(input("輸入你要選擇的菜單序號:"))
            if number == 1:
                self.add_student()
            elif number == 2:
                self.delete_student()
            elif number ==3:
                self.update_student()
            elif number == 4:
                self.search_student()
            elif number == 5:
                self.show_all()
            elif number ==6:
                self.save_student()
            elif number == 7:
                break

    def add_student(self):
        name = input("請輸入學(xué)生姓名:")
        sex = input("請輸入學(xué)生性別:")
        phone = input("請輸入學(xué)生電話:")
        for s in self.student_list:
            if s.phone == phone :
                print("該學(xué)生已存在~")
                break
        else:
            ss = Student(name, sex, phone)
            self.student_list.append(ss)



    def update_student(self):
        name = input("請輸入學(xué)生姓名:")
        for ss in self.student_list:
            if name == ss.name:
                ss.sex = input("請輸入學(xué)生性別:")
                ss.phone = input("請輸入學(xué)生電話:")
                print(f"修改學(xué)生{name}的性別為{ss.sex},電話為{ss.phone}")
                break
        else:
            print("查無此人~")

    def delete_student(self):
        name = input("請輸入要刪除的學(xué)生姓名:")
        for ss in self.student_list:
            if name == ss.name:
                self.student_list.remove(ss)
                break
        else:
            print("查無此人~")

    def search_student(self):
        name = input("請輸入要查詢的學(xué)生姓名:")
        for ss in self.student_list:
            if name == ss.name:
                print(f"學(xué)生{name}的性別為{ss.sex},電話為{ss.phone}")
                break
        else:
            print("查無此人~")

    def show_all(self):
        print("姓名\t性別\t電話")
        for ss in self.student_list:
            print(f"{ss.name}\t{ss.sex}\t{ss.phone}")

    def save_student(self):
        file = open("student.txt",'w')

        #方法一
        for ss in self.student_list:
            file.write(str(ss.__dict__)+"\n")

        # 方法二 ?件寫?的數(shù)據(jù)不能是學(xué)員對象的內(nèi)存地址,需要把學(xué)員數(shù)據(jù)轉(zhuǎn)換成列表字典數(shù)據(jù)再做存儲
        # data_list = [s.__dict__  for s in self.student_list]
        # print(data_list)
        #?件內(nèi)數(shù)據(jù)要求為字符串類型,故需要先轉(zhuǎn)換數(shù)據(jù)類型為字符串才能?件寫?數(shù)據(jù)
        # file.write(str(data_list))

        file.close()

    def load_student(self):
        try:
            file = open("student.txt","r")
        except:
            file = open("student.txt","w")
        else:
            data = file.read()
            if len(data)>0:
                stu_list = eval(data)
                self.student_list = [Student(i['name'],i['sex'],i['phone'])  for i in stu_list]
            else:
                self.student_list =[]
        finally:
            file.close()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容