欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?

 更新時間:2021年04月08日 10:34:44   作者:stan Z  
這篇文章主要介紹了Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

這個只是使用面向?qū)ο蟮姆椒▽懙?構(gòu)思和學(xué)生管理系統(tǒng)(JSON模塊)是一樣的

file_manager.py

"""
Project: ClassStudent
Creator: 貓貓
Create time: 2021-03-04 08:18
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
base_dir = 'files/'  # 定義一個變量 文件路徑

# 讀文件的函數(shù)
def read_file(file_name):
    try:
        with open(base_dir + file_name, 'r', encoding='utf8') as file:
            content = file.read()
            return content
    except FileNotFoundError:
        print('文件未找到')

def write_file(file_name):
    with open(base_dir + file_name, 'w', encoding='utf8') as file:
        pass

def write_json(file_name, data):
    with open(base_dir + file_name, 'w', encoding='utf8') as file:
        import json
        json.dump(data, file)

def read_json(file_name, default_data):
    try:
        with open(base_dir + file_name, 'r', encoding='utf8') as file:
            import json
            return json.load(file)
    except FileNotFoundError:
        # print('文件未找到')
        return default_data

tools.py

"""
Project: ClassStudent
Creator: 貓貓
Create time: 2021-03-04 08:20
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
# 加密密碼
import hashlib
def encrypt_password(passwd, x='zhumaogouniu'):
    h = hashlib.sha256()
    h.update(passwd.encode('utf8'))
    h.update(x.encode('utf8'))
    return h.hexdigest()

model.py

"""
Project: ClassStudent
Creator: 貓貓
Create time: 2021-03-04 08:18
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""

class Teacher(object):
    def __init__(self, name, password):
        import tools
        self.name = name
        self.password = tools.encrypt_password(password)

class Student(object):
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def __str__(self):
        return f'{self.name},{self.age},{self.gender}'

index.py

"""
Project: ClassStudent
Creator: 貓貓
Create time: 2021-03-04 12:08
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
# 1.導(dǎo)入管理系統(tǒng)模塊
import sys
import file_manager  # 導(dǎo)入自己寫的讀取文件模塊
import model
import managerSystem

def register():
    # 讀取文件,查看文件里是否有數(shù)據(jù)。如果文件不存在,默認(rèn)是一個字典
    data = file_manager.read_json('data.json', {})
    while True:
        teacher_name = input('請輸入賬號(2~6位):')
        if not 2 <= len(teacher_name) <= 6:
            print('賬號不符合要求,請重新輸入!')
        else:
            break
    if teacher_name in data:
        print('注冊失敗!該賬號已經(jīng)被注冊!')
        return

    while True:
        password = input('請輸入密碼(6~12位):')
        if not 6 <= len(password) <= 12:
            print('密碼不符合要求,請重新輸入!')
        else:
            break

    # 用戶名密碼都已經(jīng)輸入正確以后 將用戶名和密碼以key:value形式儲存
    # 可以創(chuàng)建一個teacher對象
    t = model.Teacher(teacher_name, password)
    data[t.name] = t.password
    file_manager.write_json('data.json', data)

def login():
    # 讀取文件,查看文件里是否有數(shù)據(jù)。如果文件不存在,默認(rèn)是一個字典
    data = file_manager.read_json('data.json', {})
    teacher_name = input('請輸入老師賬號:')

    if teacher_name not in data:
        print('登錄失敗!該賬號沒有注冊!')
        return
    password = input('請輸入密碼:')
    import tools
    if data[teacher_name] == tools.encrypt_password(password):
        managerSystem.name = teacher_name
        print('登錄成功')
        student_manager= managerSystem.StudentManager()
        student_manager.run()

    else:
        print('密碼錯誤,登陸失敗!')
def start():
    content = file_manager.read_file('welcome.txt')
    while True:
        operate = input(content + '\n請選擇(1-3):')
        if operate == '1':
            print('登錄')
            login()
        elif operate == '2':
            print('注冊')
            register()
        elif operate == '3':
            print('退出')
            # break   # 把循環(huán)退出
            # exit(0)   # 退出整個程序
            sys.exit(0)  # 退出程序
        else:
            print('輸入有誤!')

# 2.啟動管理系統(tǒng)
# 保證是當(dāng)前文件運(yùn)行才啟動管理系統(tǒng) : if -- 創(chuàng)建對象 并且調(diào)用run方法
if __name__ == '__main__':
    start()

managerSystem.py

"""
Project: ClassStudent
Creator: 貓貓
Create time: 2021-03-04 16:12
IDE: PyCharm
Introduction:https://blog.csdn.net/Cantevenl/article/details/115439530
"""
import file_manager
from model import *

name = ''
class StudentManager(object):
    def __init__(self):
        # 存儲學(xué)院數(shù)據(jù) -- 列表
        self.student_list = []


    # 一.程序入口函數(shù)
    def run(self):
        # 1.加載文件里面的學(xué)員數(shù)據(jù)
        self.load_student()
        while True:
            # 2.顯示功能菜單
            self.show_menu()
            # 3.用戶輸入目標(biāo)功能序號
            menu_num = input('請輸入你需要的功能序號:')

            # 4.根據(jù)用戶輸入的序號執(zhí)行不同的功能
            if menu_num == '1':
                self.add_student()
            elif menu_num == '2':
                self.del_student()
            elif menu_num == '3':
                self.modify_student()
            elif menu_num == '4':
                self.search_student()
            elif menu_num == '5':
                self.show_student()
            elif menu_num == '6':
                self.sava_student()
            elif menu_num == '7':
                break
            else:
                print('輸入錯誤')

    # 二。系統(tǒng)功能函數(shù)
    # 2.1 顯示功能菜單 ---- 這種方法一般需要使用靜態(tài)方法
    @staticmethod
    def show_menu():
        content = file_manager.read_file('students_page.txt')
        print(content)

    # 增加
    def add_student(self):
        # 1.用戶輸入信息
        name = input('請輸入你的姓名:')
        age = input('請輸入你的年齡:')
        gender = input('請輸入你的性別:')

        # 2. 創(chuàng)建學(xué)員對象 -- 類 先導(dǎo)入student模塊,在創(chuàng)建對象
        student = Student(name, age, gender)

        # 3.將該對象添加到學(xué)員列表
        self.student_list.append(student)

        print(self.student_list)
        print(student)

    # 刪除
    def del_student(self):
        del_name = input('請輸入要刪除的學(xué)生名字:')

        # 遍歷列表 有的話就刪除沒有就提示
        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                break
        else:
            print('查無此人')

        print(self.student_list)

    # 修改
    def modify_student(self):
        modify_name = input('請輸入要修改的學(xué)生名字:')

        for i in self.student_list:
            if i.name == modify_name:
                i.name = self.new_input(i.name, '請輸入新修改的名字[回車則不修改]:')
                i.age = self.new_input(i.age, '請輸入新修改的年齡[回車則不修改]:')
                i.gender = self.new_input(i.gender, '請輸入新修改的性別[回車則不修改]:')
                print(f'修改學(xué)員信息成功,姓名 {i.name},年齡 {i.age},性別 {i.gender}')
                break
        else:
            print('查無此人')

    # 查找
    def search_student(self):
        search_name = input('請輸入想查找的學(xué)生名字:')

        for i in self.student_list:
            if i.name == search_name:
                print(f'姓名 {i.name},年齡 {i.age},性別 {i.gender}')
                break
        else:
            print('查無此人')

    # 顯示全部學(xué)生
    def show_student(self):
        print('姓名\t\t年齡\t性別')
        for i in self.student_list:
            print(f'{i.name}\t\t{i.age}\t\t{i.gender}')

    # 保存學(xué)員信息
    def sava_student(self):
        # 1.打開文件
        file = open('files/student.data', 'w')

        # 2.數(shù)據(jù)寫入文件
        # 2.1 [學(xué)員對象] 轉(zhuǎn)換成 [字典]
        # 使用列表推導(dǎo)式
        new_list = [i.__dict__ for i in self.student_list]

        # 2.2 文件寫入 字符串?dāng)?shù)據(jù)
        file.write(str(new_list))
        file.close()

    # 加載信息
    def load_student(self):
        try:
            file = open('files/student.data', 'r')
        except FileNotFoundError:
            file = open('files/student.data', 'w')
        else:
            # 1.讀取數(shù)據(jù)
            data = file.read()
            # 2.文件中讀取的數(shù)據(jù)都是字符串且字符串內(nèi)部為字典數(shù)據(jù),
            # 故需要轉(zhuǎn)換數(shù)據(jù)類型再轉(zhuǎn)換字典為對象后存儲到學(xué)院列表
            new_list = eval(data)
            # 創(chuàng)建學(xué)生類
            self.student_list = [Student(i['name'], i['age'], i['gender']) for i in new_list]
        finally:
            pass
            # 3.關(guān)閉文件
        file.close()

    # 重寫的input方法
    def new_input(self, old, new):
        input_str = input(new)

        if len(input_str) > 0:
            return input_str
        else:
            return old

執(zhí)行效果

在這里插入圖片描述
在這里插入圖片描述

到此這篇關(guān)于Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?的文章就介紹到這了,更多相關(guān)python學(xué)生管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的類與對象之描述符詳解

    Python中的類與對象之描述符詳解

    這篇文章主要介紹了Python中的描述符詳解,屬于Python學(xué)習(xí)過程中類與對象的基本知識,需要的朋友可以參考下
    2015-03-03
  • python字符串大小寫轉(zhuǎn)換的三種方法

    python字符串大小寫轉(zhuǎn)換的三種方法

    本文主要介紹了python字符串大小寫轉(zhuǎn)換的三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python字符串的多行輸出的實(shí)例詳解

    python字符串的多行輸出的實(shí)例詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python字符串的多行輸出的實(shí)例詳解內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。
    2021-06-06
  • Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解

    Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解

    這篇文章主要介紹了Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 淺談matplotlib 繪制梯度下降求解過程

    淺談matplotlib 繪制梯度下降求解過程

    這篇文章主要介紹了淺談matplotlib 繪制梯度下降求解過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn)

    Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn)

    本文主要介紹了Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python+fuzzywuzzy計(jì)算兩個字符串之間的相似度

    Python+fuzzywuzzy計(jì)算兩個字符串之間的相似度

    fuzzywuzzy?可以計(jì)算兩個字符串之間的相似度,它依據(jù)?Levenshtein?Distance?算法來進(jìn)行計(jì)算,該算法又叫?Edit?Distance?算法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-09-09
  • python實(shí)現(xiàn)字典合并的五種方法(附示例代碼)

    python實(shí)現(xiàn)字典合并的五種方法(附示例代碼)

    在Python中,有多種方法可以通過使用各種函數(shù)和構(gòu)造函數(shù)來合并字典,在本文中,我們將討論一些合并字典的方法,并通過代碼示例講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-04-04
  • 解決anaconda安裝pytorch報錯找不到包的問題

    解決anaconda安裝pytorch報錯找不到包的問題

    這篇文章主要介紹了解決anaconda安裝pytorch報錯找不到包的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • python中的裝飾器該如何使用

    python中的裝飾器該如何使用

    裝飾器經(jīng)常被用于有切面需求的場景,較為經(jīng)典的有插入日志、性能測試、事務(wù)處理等。裝飾器是解決這類問題的絕佳設(shè)計(jì),有了裝飾器,我們就可以抽離出大量函數(shù)中與函數(shù)功能本身無關(guān)的雷同代碼并繼續(xù)重用。裝飾器的作用就是為已經(jīng)存在的對象添加額外的功能。
    2021-06-06

最新評論