Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?
前言
這個只是使用面向?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)文章希望大家以后多多支持腳本之家!
- python版學(xué)生管理系統(tǒng)
- python實(shí)現(xiàn)學(xué)生管理系統(tǒng)
- python學(xué)生管理系統(tǒng)代碼實(shí)現(xiàn)
- 基于python實(shí)現(xiàn)學(xué)生管理系統(tǒng)
- 詳解用python實(shí)現(xiàn)基本的學(xué)生管理系統(tǒng)(文件存儲版)(python3)
- 用python實(shí)現(xiàn)學(xué)生管理系統(tǒng)
- 基于Python實(shí)現(xiàn)簡單學(xué)生管理系統(tǒng)
- python實(shí)現(xiàn)學(xué)生管理系統(tǒng)源碼
- Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)(面向?qū)ο蟀?
- 手把手教你做python學(xué)生管理系統(tǒng)
相關(guān)文章
Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解
這篇文章主要介紹了Python 實(shí)現(xiàn)靜態(tài)鏈表案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn)
本文主要介紹了Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python+fuzzywuzzy計(jì)算兩個字符串之間的相似度
fuzzywuzzy?可以計(jì)算兩個字符串之間的相似度,它依據(jù)?Levenshtein?Distance?算法來進(jìn)行計(jì)算,該算法又叫?Edit?Distance?算法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09python實(shí)現(xiàn)字典合并的五種方法(附示例代碼)
在Python中,有多種方法可以通過使用各種函數(shù)和構(gòu)造函數(shù)來合并字典,在本文中,我們將討論一些合并字典的方法,并通過代碼示例講解的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2024-04-04