python實現(xiàn)學生管理系統(tǒng)(文件操作,面向?qū)ο螅?/h2>

一、需求分析

  • 學生管理系統(tǒng)所具備功能
    1. 登錄及注冊管理賬號
    2. 對學生信息要可以實現(xiàn)基本的增刪改查功能
    3. 可以顯示出所有的學生信息
    4. 將學生信息以及管理賬戶信息保存至對應(yīng)文件

系統(tǒng)分析

  1. 系統(tǒng)管理登錄模塊

    1)管理員登錄模塊

    2) 管理員注冊模塊

  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類所保存的文件即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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