這個(gè)只是使用面向?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/' # 定義一個(gè)變量 文件路徑 # 讀文件的函數(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)是一個(gè)字典 data = file_manager.read_json('data.json', {}) while True: teacher_name = input('請(qǐng)輸入賬號(hào)(2~6位):') if not 2 = len(teacher_name) = 6: print('賬號(hào)不符合要求,請(qǐng)重新輸入!') else: break if teacher_name in data: print('注冊(cè)失敗!該賬號(hào)已經(jīng)被注冊(cè)!') return while True: password = input('請(qǐng)輸入密碼(6~12位):') if not 6 = len(password) = 12: print('密碼不符合要求,請(qǐng)重新輸入!') else: break # 用戶名密碼都已經(jīng)輸入正確以后 將用戶名和密碼以key:value形式儲(chǔ)存 # 可以創(chuàng)建一個(gè)teacher對(duì)象 t = model.Teacher(teacher_name, password) data[t.name] = t.password file_manager.write_json('data.json', data) def login(): # 讀取文件,查看文件里是否有數(shù)據(jù)。如果文件不存在,默認(rèn)是一個(gè)字典 data = file_manager.read_json('data.json', {}) teacher_name = input('請(qǐng)輸入老師賬號(hào):') if teacher_name not in data: print('登錄失敗!該賬號(hào)沒有注冊(cè)!') return password = input('請(qǐng)輸入密碼:') import tools if data[teacher_name] == tools.encrypt_password(password): managerSystem.name = teacher_name print('登錄成功') student_manager= managerSystem.StudentManager() student_manager.run() else: print('密碼錯(cuò)誤,登陸失敗!') def start(): content = file_manager.read_file('welcome.txt') while True: operate = input(content + '\n請(qǐng)選擇(1-3):') if operate == '1': print('登錄') login() elif operate == '2': print('注冊(cè)') register() elif operate == '3': print('退出') # break # 把循環(huán)退出 # exit(0) # 退出整個(gè)程序 sys.exit(0) # 退出程序 else: print('輸入有誤!') # 2.啟動(dòng)管理系統(tǒng) # 保證是當(dāng)前文件運(yùn)行才啟動(dòng)管理系統(tǒng) : if -- 創(chuàng)建對(duì)象 并且調(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): # 存儲(chǔ)學(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)功能序號(hào) menu_num = input('請(qǐng)輸入你需要的功能序號(hào):') # 4.根據(jù)用戶輸入的序號(hào)執(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('輸入錯(cuò)誤') # 二。系統(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('請(qǐng)輸入你的姓名:') age = input('請(qǐng)輸入你的年齡:') gender = input('請(qǐng)輸入你的性別:') # 2. 創(chuàng)建學(xué)員對(duì)象 -- 類 先導(dǎo)入student模塊,在創(chuàng)建對(duì)象 student = Student(name, age, gender) # 3.將該對(duì)象添加到學(xué)員列表 self.student_list.append(student) print(self.student_list) print(student) # 刪除 def del_student(self): del_name = input('請(qǐng)輸入要?jiǎng)h除的學(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('請(qǐng)輸入要修改的學(xué)生名字:') for i in self.student_list: if i.name == modify_name: i.name = self.new_input(i.name, '請(qǐng)輸入新修改的名字[回車則不修改]:') i.age = self.new_input(i.age, '請(qǐng)輸入新修改的年齡[回車則不修改]:') i.gender = self.new_input(i.gender, '請(qǐng)輸入新修改的性別[回車則不修改]:') print(f'修改學(xué)員信息成功,姓名 {i.name},年齡 {i.age},性別 {i.gender}') break else: print('查無此人') # 查找 def search_student(self): search_name = input('請(qǐng)輸入想查找的學(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é)員對(duì)象] 轉(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)換字典為對(duì)象后存儲(chǔ)到學(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:衡水 股票 江蘇 湖州 呼和浩特 畢節(jié) 駐馬店 中山
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?》,本文關(guān)鍵詞 Python,實(shí)現(xiàn),學(xué)生,管理系統(tǒng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。