Python實現(xiàn)學生管理系統(tǒng)的完整代碼(面向?qū)ο?
更新時間:2021年04月08日 10:34:44 作者:stan Z
這篇文章主要介紹了Python實現(xiàn)學生管理系統(tǒng)的完整代碼(面向?qū)ο?,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
前言
這個只是使用面向?qū)ο蟮姆椒▽懙?構(gòu)思和學生管理系統(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.導入管理系統(tǒng)模塊
import sys
import file_manager # 導入自己寫的讀取文件模塊
import model
import managerSystem
def register():
# 讀取文件,查看文件里是否有數(shù)據(jù)。如果文件不存在,默認是一個字典
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ù)。如果文件不存在,默認是一個字典
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)
# 保證是當前文件運行才啟動管理系統(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):
# 存儲學院數(shù)據(jù) -- 列表
self.student_list = []
# 一.程序入口函數(shù)
def run(self):
# 1.加載文件里面的學員數(shù)據(jù)
self.load_student()
while True:
# 2.顯示功能菜單
self.show_menu()
# 3.用戶輸入目標功能序號
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)建學員對象 -- 類 先導入student模塊,在創(chuàng)建對象
student = Student(name, age, gender)
# 3.將該對象添加到學員列表
self.student_list.append(student)
print(self.student_list)
print(student)
# 刪除
def del_student(self):
del_name = input('請輸入要刪除的學生名字:')
# 遍歷列表 有的話就刪除沒有就提示
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('請輸入要修改的學生名字:')
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'修改學員信息成功,姓名 {i.name},年齡 {i.age},性別 {i.gender}')
break
else:
print('查無此人')
# 查找
def search_student(self):
search_name = input('請輸入想查找的學生名字:')
for i in self.student_list:
if i.name == search_name:
print(f'姓名 {i.name},年齡 {i.age},性別 {i.gender}')
break
else:
print('查無此人')
# 顯示全部學生
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}')
# 保存學員信息
def sava_student(self):
# 1.打開文件
file = open('files/student.data', 'w')
# 2.數(shù)據(jù)寫入文件
# 2.1 [學員對象] 轉(zhuǎn)換成 [字典]
# 使用列表推導式
new_list = [i.__dict__ for i in self.student_list]
# 2.2 文件寫入 字符串數(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)換字典為對象后存儲到學院列表
new_list = eval(data)
# 創(chuàng)建學生類
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實現(xiàn)學生管理系統(tǒng)的完整代碼(面向?qū)ο?的文章就介紹到這了,更多相關(guān)python學生管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關(guān)文章
Python數(shù)據(jù)容器dict(字典)的實現(xiàn)
本文主要介紹了Python數(shù)據(jù)容器dict(字典)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02
Python+fuzzywuzzy計算兩個字符串之間的相似度
fuzzywuzzy?可以計算兩個字符串之間的相似度,它依據(jù)?Levenshtein?Distance?算法來進行計算,該算法又叫?Edit?Distance?算法,感興趣的小伙伴可以跟隨小編一起學習一下2022-09-09
python實現(xiàn)字典合并的五種方法(附示例代碼)
在Python中,有多種方法可以通過使用各種函數(shù)和構(gòu)造函數(shù)來合并字典,在本文中,我們將討論一些合并字典的方法,并通過代碼示例講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下2024-04-04

