利用Python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的完整實(shí)例
項(xiàng)目要求:

讀完題目,首先我們要確定程序思路
我們要全部通過類去實(shí)現(xiàn)
也就是 我們要實(shí)現(xiàn)管理員、學(xué)生、講師、課程、教師五個(gè)類
管理員類
class Administration(object):
def __init__(self):
self.data = self.__load()
self.login_data = {}
def __load(self) -> list:
try:
Adm = open('Administration.csv', 'r')
readers = csv.DictReader(Adm)
Adm_dict = [dict(i) for i in readers]
Adm.close()
return Adm_dict
except Exception:
print('文件讀取失敗')
def see_course(self):
print('當(dāng)前所有的課程信息為:')
for i in cou.data:
print(i)
print()
def see_student(self):
print('當(dāng)前所有的學(xué)生信息為:')
for i in stu.data:
print(i)
print()
def see_student_course(self):
print('當(dāng)前所有學(xué)生的選課信息為:')
for i in stu.data:
print(i['姓名'], '的選課信息為:', i['課程'])
print()
def set_course(self):
name = input('請(qǐng)輸入你想添加的課程名')
c = [i['名稱'] for i in cou.data]
if name in c:
print('你準(zhǔn)備添加的課程 已經(jīng)存在')
else:
cou.data.append({'名稱': name, '人數(shù)': 0})
print('添加成功!')
print()
def set_student(self):
name = input('請(qǐng)輸入你想添加的學(xué)生的姓名')
ID = input('請(qǐng)輸入此學(xué)生的ID')
if ID in [i['ID'] for i in stu.data]:
print('這個(gè)ID已經(jīng)存在,添加失敗')
return
print('學(xué)生賬號(hào)默認(rèn)密碼123456')
password = 123456
stu.data.append({'姓名': name, 'ID': ID, '密碼': password, '課程': ''})
print('添加成功!')
print()
def set_teacher(self):
name = input('請(qǐng)輸入你想添加的老師的姓名')
ID = input('請(qǐng)輸入此老師的ID')
if ID in [i['ID'] for i in tea.data]:
print('這個(gè)ID已經(jīng)存在,添加失敗')
return
print('老師賬號(hào)默認(rèn)密碼123456')
password = 123456
tea.data.append({'姓名': name, 'ID': ID, '密碼': password, '課程': ''})
print('添加成功!')
print()
def app_teacher_to_class(self):
t_name = input('請(qǐng)輸入你想操作的老師名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老師不存在,請(qǐng)重新操作')
return
c_name = input('請(qǐng)輸入你想讓該老師任課的班級(jí)')
if c_name not in [i['班名'] for i in cla.data]:
print('你想讓老師任教的班級(jí)不存在,請(qǐng)重新操作')
return
for i in tea.data:
if i['姓名'] == t_name:
i['班級(jí)'] = c_name
for i in cla.data:
if i['班名'] == c_name:
i['任課老師'] = t_name
print('操作成功')
def set_class(self):
name = input('請(qǐng)輸入你想創(chuàng)建的班級(jí)的名稱:')
if name in [i['班名'] for i in cla.data]:
print('你想創(chuàng)建的班級(jí)已經(jīng)存在,請(qǐng)重新操作')
return
if int(input('是否添加任課老師,是輸入1,否輸入0')):
t_name = input('請(qǐng)輸入你想添加的老師名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老師不存在,請(qǐng)重新操作')
return
else:
t_name = ''
s_name_list = []
while int(input('是否添加學(xué)生,是輸入1,否輸入0')):
s_name = input('輸入你想添加的學(xué)生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的學(xué)生不存在,請(qǐng)重新操作')
return
else:
s_name_list.append(s_name)
s_name = ''
if s_name_list == []:
cla.data.append({'班名': name, '任課老師': t_name, '學(xué)生': s_name})
print('操作成功')
else:
cla.data.append({'班名': name, '任課老師': t_name,
'學(xué)生': s_name.join(s_name_list)})
print('操作成功')
def app_student_to_class(self):
s_name = input('請(qǐng)輸入你想操作的學(xué)生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的學(xué)生不存在,請(qǐng)重新操作')
return
c_name = input('請(qǐng)輸入你想讓該學(xué)生進(jìn)入的班級(jí)')
if c_name not in [i['班名'] for i in cla.data]:
print('你想讓學(xué)生進(jìn)入的班級(jí)不存在,請(qǐng)重新操作')
return
for i in stu.data:
if i['姓名'] == s_name:
i['班級(jí)'] = c_name
for i in cla.data:
if i['班名'] == c_name:
i['任課老師'] = s_name
print('操作成功')
def save(self):
try:
j = open('Administration.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
j.close()
except Exception:
print('文件讀取失敗')
學(xué)生類
class Student(object):
def __init__(self):
self.data = self.__load()
self.login_data = {}
def __load(self):
try:
Stu = open('Student.csv', 'r')
readers = csv.DictReader(Stu)
Stu_dict = [dict(i) for i in readers]
Stu.close()
return Stu_dict
except Exception:
print('文件讀取失敗')
def see_course(self):
print('當(dāng)前所有的課程信息為:')
for i in cou.data:
print(i)
print()
def choice_course(self):
# print(self.data)
c = [i['名稱'] for i in cou.data]
c_name = input('請(qǐng)輸入你想選擇的課程名:')
if c_name not in c:
print('你選擇的課程不在課程列表中')
return
else:
self.login_data['課程']: str = self.login_data['課程'] + c_name + ' '
for i in cou.data:
if i['名稱'] == c_name:
i['人數(shù)'] = int(i['人數(shù)']) + 1
print('操作成功')
def see_own_course(self):
if self.login_data['課程'] == '':
print('你未選擇任何課程')
else:
print(self.login_data['課程'])
def save(self):
try:
j = open('Student.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
課程類
class Course(object):
def __init__(self):
self.data = self.__load()
def __load(self):
try:
Cou = open('Course.csv', 'r')
readers = csv.DictReader(Cou)
Cou_dict = [dict(i) for i in readers]
Cou.close()
return Cou_dict
except Exception:
print('文件讀取失敗')
def save(self):
try:
j = open('Course.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
教室類
class Classroom(object):
def __init__(self):
self.data = self.__load()
def __load(self):
try:
Cla = open('Classroom.csv', 'r')
readers = csv.DictReader(Cla)
Cla_dict = [dict(i) for i in readers]
Cla.close()
return Cla_dict
except Exception:
print('文件讀取失敗')
def save(self):
try:
j = open('Classroom.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
教師類
class Teacher(object):
def __init__(self):
self.data = self.__load()
self.login_data = {}
def __load(self):
try:
Tea = open('Teacher.csv', 'r')
readers = csv.DictReader(Tea)
Tea_dict = [dict(i) for i in readers]
Tea.close()
return Tea_dict
except Exception:
print('文件讀取失敗')
def see_course(self):
print('當(dāng)前所有的課程信息為:')
for i in cou.data:
print(i)
print()
def see_class(self):
print('所教班級(jí)為:', self.login_data['班級(jí)'])
print()
def see_class_student(self):
print('所教班級(jí)中的學(xué)生為:')
for i in cla.data:
if i['班名'] == self.login_data['班級(jí)']:
print(i['學(xué)生'])
print()
def save(self):
try:
j = open('Teacher.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
完整代碼如下:
import csv
import time
class Administration(object):
def __init__(self):
self.data = self.__load()
self.login_data = {}
def __load(self) -> list:
try:
Adm = open('Administration.csv', 'r')
readers = csv.DictReader(Adm)
Adm_dict = [dict(i) for i in readers]
Adm.close()
return Adm_dict
except Exception:
print('文件讀取失敗')
def see_course(self):
print('當(dāng)前所有的課程信息為:')
for i in cou.data:
print(i)
print()
def see_student(self):
print('當(dāng)前所有的學(xué)生信息為:')
for i in stu.data:
print(i)
print()
def see_student_course(self):
print('當(dāng)前所有學(xué)生的選課信息為:')
for i in stu.data:
print(i['姓名'], '的選課信息為:', i['課程'])
print()
def set_course(self):
name = input('請(qǐng)輸入你想添加的課程名')
c = [i['名稱'] for i in cou.data]
if name in c:
print('你準(zhǔn)備添加的課程 已經(jīng)存在')
else:
cou.data.append({'名稱': name, '人數(shù)': 0})
print('添加成功!')
print()
def set_student(self):
name = input('請(qǐng)輸入你想添加的學(xué)生的姓名')
ID = input('請(qǐng)輸入此學(xué)生的ID')
if ID in [i['ID'] for i in stu.data]:
print('這個(gè)ID已經(jīng)存在,添加失敗')
return
print('學(xué)生賬號(hào)默認(rèn)密碼123456')
password = 123456
stu.data.append({'姓名': name, 'ID': ID, '密碼': password, '課程': ''})
print('添加成功!')
print()
def set_teacher(self):
name = input('請(qǐng)輸入你想添加的老師的姓名')
ID = input('請(qǐng)輸入此老師的ID')
if ID in [i['ID'] for i in tea.data]:
print('這個(gè)ID已經(jīng)存在,添加失敗')
return
print('老師賬號(hào)默認(rèn)密碼123456')
password = 123456
tea.data.append({'姓名': name, 'ID': ID, '密碼': password, '課程': ''})
print('添加成功!')
print()
def app_teacher_to_class(self):
t_name = input('請(qǐng)輸入你想操作的老師名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老師不存在,請(qǐng)重新操作')
return
c_name = input('請(qǐng)輸入你想讓該老師任課的班級(jí)')
if c_name not in [i['班名'] for i in cla.data]:
print('你想讓老師任教的班級(jí)不存在,請(qǐng)重新操作')
return
for i in tea.data:
if i['姓名'] == t_name:
i['班級(jí)'] = c_name
for i in cla.data:
if i['班名'] == c_name:
i['任課老師'] = t_name
print('操作成功')
def set_class(self):
name = input('請(qǐng)輸入你想創(chuàng)建的班級(jí)的名稱:')
if name in [i['班名'] for i in cla.data]:
print('你想創(chuàng)建的班級(jí)已經(jīng)存在,請(qǐng)重新操作')
return
if int(input('是否添加任課老師,是輸入1,否輸入0')):
t_name = input('請(qǐng)輸入你想添加的老師名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老師不存在,請(qǐng)重新操作')
return
else:
t_name = ''
s_name_list = []
while int(input('是否添加學(xué)生,是輸入1,否輸入0')):
s_name = input('輸入你想添加的學(xué)生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的學(xué)生不存在,請(qǐng)重新操作')
return
else:
s_name_list.append(s_name)
s_name = ''
if s_name_list == []:
cla.data.append({'班名': name, '任課老師': t_name, '學(xué)生': s_name})
print('操作成功')
else:
cla.data.append({'班名': name, '任課老師': t_name,
'學(xué)生': s_name.join(s_name_list)})
print('操作成功')
def app_student_to_class(self):
s_name = input('請(qǐng)輸入你想操作的學(xué)生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的學(xué)生不存在,請(qǐng)重新操作')
return
c_name = input('請(qǐng)輸入你想讓該學(xué)生進(jìn)入的班級(jí)')
if c_name not in [i['班名'] for i in cla.data]:
print('你想讓學(xué)生進(jìn)入的班級(jí)不存在,請(qǐng)重新操作')
return
for i in stu.data:
if i['姓名'] == s_name:
i['班級(jí)'] = c_name
for i in cla.data:
if i['班名'] == c_name:
i['任課老師'] = s_name
print('操作成功')
def save(self):
try:
j = open('Administration.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
j.close()
except Exception:
print('文件讀取失敗')
class Student(object):
def __init__(self):
self.data = self.__load()
self.login_data = {}
def __load(self):
try:
Stu = open('Student.csv', 'r')
readers = csv.DictReader(Stu)
Stu_dict = [dict(i) for i in readers]
Stu.close()
return Stu_dict
except Exception:
print('文件讀取失敗')
def see_course(self):
print('當(dāng)前所有的課程信息為:')
for i in cou.data:
print(i)
print()
def choice_course(self):
# print(self.data)
c = [i['名稱'] for i in cou.data]
c_name = input('請(qǐng)輸入你想選擇的課程名:')
if c_name not in c:
print('你選擇的課程不在課程列表中')
return
else:
self.login_data['課程']: str = self.login_data['課程'] + c_name + ' '
for i in cou.data:
if i['名稱'] == c_name:
i['人數(shù)'] = int(i['人數(shù)']) + 1
print('操作成功')
def see_own_course(self):
if self.login_data['課程'] == '':
print('你未選擇任何課程')
else:
print(self.login_data['課程'])
def save(self):
try:
j = open('Student.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
class Course(object):
def __init__(self):
self.data = self.__load()
def __load(self):
try:
Cou = open('Course.csv', 'r')
readers = csv.DictReader(Cou)
Cou_dict = [dict(i) for i in readers]
Cou.close()
return Cou_dict
except Exception:
print('文件讀取失敗')
def save(self):
try:
j = open('Course.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
class Classroom(object):
def __init__(self):
self.data = self.__load()
def __load(self):
try:
Cla = open('Classroom.csv', 'r')
readers = csv.DictReader(Cla)
Cla_dict = [dict(i) for i in readers]
Cla.close()
return Cla_dict
except Exception:
print('文件讀取失敗')
def save(self):
try:
j = open('Classroom.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
class Teacher(object):
def __init__(self):
self.data = self.__load()
self.login_data = {}
def __load(self):
try:
Tea = open('Teacher.csv', 'r')
readers = csv.DictReader(Tea)
Tea_dict = [dict(i) for i in readers]
Tea.close()
return Tea_dict
except Exception:
print('文件讀取失敗')
def see_course(self):
print('當(dāng)前所有的課程信息為:')
for i in cou.data:
print(i)
print()
def see_class(self):
print('所教班級(jí)為:', self.login_data['班級(jí)'])
print()
def see_class_student(self):
print('所教班級(jí)中的學(xué)生為:')
for i in cla.data:
if i['班名'] == self.login_data['班級(jí)']:
print(i['學(xué)生'])
print()
def save(self):
try:
j = open('Teacher.csv', 'w')
writer = csv.writer(j)
writer.writerow(list(self.data[0].keys()))
data = [list(i.values()) for i in self.data]
writer.writerows(data)
except Exception:
print('文件讀取失敗')
def login(ID, password) -> int:
# 判斷是否為管理員
for i in adm.data:
if ID == i['ID'] and password == i['密碼']:
adm.login_data = i
return 1
# 判斷是否為學(xué)生
for i in stu.data:
if ID == i['ID'] and password == i['密碼']:
stu.login_data = i
return 2
# 判斷是否為老師
for i in tea.data:
if ID == i['ID'] and password == i['密碼']:
tea.login_data = i
return 3
return 0
if __name__ == '__main__':
print('歡迎來到久的學(xué)生選課系統(tǒng)')
time.sleep(0.5)
print('正在加載中~')
adm = Administration()
stu = Student()
cou = Course()
tea = Teacher()
cla = Classroom()
time.sleep(0.3)
print('加載完畢')
while True:
ID = input('請(qǐng)輸入你的賬號(hào):')
password = input('請(qǐng)輸入你的密碼:')
flag = login(ID, password)
if not flag:
print('輸入的賬號(hào)或密碼錯(cuò)誤')
flag_1 = int(input('是否重新登錄 重新登錄輸入1 取消登錄輸入0'))
if flag_1:
continue
else:
break
elif flag == 1:
print('歡迎管理員')
break
elif flag == 2:
print('歡迎學(xué)生')
break
elif flag == 3:
print('歡迎老師')
break
if flag == 1:
while True:
check = int(
input(
'1.創(chuàng)建課程\n2.創(chuàng)建學(xué)生賬號(hào)\n3.查看所有課程\n4.查看所有學(xué)生\n5.查看所有學(xué)生的選課信息\n6.創(chuàng)建講師'
'\n7.為講師指定班級(jí)\n8.創(chuàng)建班級(jí)\n9.為學(xué)生指定班級(jí)\n10.退出程序'))
if check == 1:
adm.set_course()
elif check == 2:
adm.set_student()
elif check == 3:
adm.see_course()
elif check == 4:
adm.see_student()
elif check == 5:
adm.see_student_course()
elif check == 6:
adm.set_teacher()
elif check == 7:
adm.app_teacher_to_class()
elif check == 8:
adm.set_class()
elif check == 9:
adm.app_student_to_class()
elif check == 10:
break
elif flag == 2:
while True:
check = int(input('1.查看所有課程\n2.查看所選課程\n3.選擇課程\n4.退出程序'))
if check == 1:
stu.see_course()
elif check == 2:
stu.see_own_course()
elif check == 3:
stu.choice_course()
elif check == 4:
break
elif flag == 3:
while True:
check = int(input('1.查看所有課程\n2.查看所教班級(jí)\n3.查看班級(jí)中的學(xué)生\n4.退出程序'))
if check == 1:
tea.see_course()
elif check == 2:
tea.see_class()
elif check == 3:
tea.see_class_student()
elif check == 4:
break
print('數(shù)據(jù)存儲(chǔ)中~')
adm.save()
tea.save()
stu.save()
cla.save()
cou.save()
time.sleep(0.5)
print('感謝您的使用!')
整個(gè)系統(tǒng)的數(shù)據(jù)全部單獨(dú)存在,并存儲(chǔ)在csv文件中
效果圖:

總結(jié)
到此這篇關(guān)于利用Python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 教你用python實(shí)現(xiàn)一個(gè)無界面的小型圖書管理系統(tǒng)
- python實(shí)現(xiàn)學(xué)生管理系統(tǒng)源碼
- 基于python實(shí)現(xiàn)銀行管理系統(tǒng)
- 基于python實(shí)現(xiàn)圖書管理系統(tǒng)
- python實(shí)現(xiàn)簡易名片管理系統(tǒng)
- Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的代碼(JSON模塊)
- python實(shí)現(xiàn)學(xué)生通訊錄管理系統(tǒng)
- 使用python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- 教你用Python實(shí)現(xiàn)簡易版學(xué)生信息管理系統(tǒng)(含源碼)
相關(guān)文章
python一招完美搞定Chromedriver的自動(dòng)更新問題
這篇文章主要介紹了python一招完美搞定Chromedriver的自動(dòng)更新,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
100 個(gè) Python 小例子(練習(xí)題一)
這篇文章主要介紹 Python 小例子,有數(shù)字組合、個(gè)稅計(jì)算、完全平方數(shù)、三數(shù)排序、斐波那契數(shù)列、copy、九九乘法表、暫停一秒輸出等多個(gè)實(shí)例,需要的朋友可以參考一下2021-10-10
關(guān)于Python ImportError: No module named&nb
最近多個(gè)小伙伴兒問“ImportError: No module named xxx“,應(yīng)該怎么樣解決,下面小編給大家?guī)砹岁P(guān)于Python ImportError: No module named 通用解決方法,感興趣的朋友一起看看吧2022-11-11
使用Python設(shè)置Excel單元格數(shù)字的顯示格式
Python語言可以幫助我們靈活設(shè)置Excel單元格的數(shù)字格式,保證數(shù)據(jù)的一致性與專業(yè)標(biāo)準(zhǔn),本文將介紹如何使用Python對(duì)Excel工作表中單元格的數(shù)字格式進(jìn)行設(shè)置,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
Python如何使用WebSocket實(shí)現(xiàn)實(shí)時(shí)Web應(yīng)用
這篇文章主要介紹了Python使用WebSocket實(shí)現(xiàn)實(shí)時(shí)Web應(yīng)用,Django?Channels?提供了強(qiáng)大的功能,使得在?Django?中實(shí)現(xiàn)實(shí)時(shí)功能變得更加容易,你可以在此基礎(chǔ)上擴(kuò)展,添加更多功能和復(fù)雜的邏輯,需要的朋友可以參考下2024-08-08
Python的爬蟲包Beautiful Soup中用正則表達(dá)式來搜索
這篇文章主要介紹了Python的爬蟲包Beautiful Soup中用正則表達(dá)式來搜索的技巧,包括使用正則表達(dá)式去搜索多種可能的關(guān)鍵字以及查找屬性值未知的標(biāo)簽等,需要的朋友可以參考下2016-01-01
python優(yōu)化數(shù)據(jù)預(yù)處理方法Pandas pipe詳解
在本文中,我們將重點(diǎn)討論一個(gè)將多個(gè)預(yù)處理操作組織成單個(gè)操作的特定函數(shù):pipe。我將通過示例方式來展示如何使用它,讓我們從數(shù)據(jù)創(chuàng)建數(shù)據(jù)幀開始吧2021-11-11

