利用Python实现学生信息管理系统的完整实例
作者:Miku丨无形 时间:2022-03-12 10:35:03
项目要求:
读完题目,首先我们要确定程序思路
我们要全部通过类去实现
也就是 我们要实现管理员、学生、讲师、课程、教师五个类
管理员类
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('当前所有的课程信息为:')
for i in cou.data:
print(i)
print()
def see_student(self):
print('当前所有的学生信息为:')
for i in stu.data:
print(i)
print()
def see_student_course(self):
print('当前所有学生的选课信息为:')
for i in stu.data:
print(i['姓名'], '的选课信息为:', i['课程'])
print()
def set_course(self):
name = input('请输入你想添加的课程名')
c = [i['名称'] for i in cou.data]
if name in c:
print('你准备添加的课程 已经存在')
else:
cou.data.append({'名称': name, '人数': 0})
print('添加成功!')
print()
def set_student(self):
name = input('请输入你想添加的学生的姓名')
ID = input('请输入此学生的ID')
if ID in [i['ID'] for i in stu.data]:
print('这个ID已经存在,添加失败')
return
print('学生账号默认密码123456')
password = 123456
stu.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
print('添加成功!')
print()
def set_teacher(self):
name = input('请输入你想添加的老师的姓名')
ID = input('请输入此老师的ID')
if ID in [i['ID'] for i in tea.data]:
print('这个ID已经存在,添加失败')
return
print('老师账号默认密码123456')
password = 123456
tea.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
print('添加成功!')
print()
def app_teacher_to_class(self):
t_name = input('请输入你想操作的老师名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老师不存在,请重新操作')
return
c_name = input('请输入你想让该老师任课的班级')
if c_name not in [i['班名'] for i in cla.data]:
print('你想让老师任教的班级不存在,请重新操作')
return
for i in tea.data:
if i['姓名'] == t_name:
i['班级'] = c_name
for i in cla.data:
if i['班名'] == c_name:
i['任课老师'] = t_name
print('操作成功')
def set_class(self):
name = input('请输入你想创建的班级的名称:')
if name in [i['班名'] for i in cla.data]:
print('你想创建的班级已经存在,请重新操作')
return
if int(input('是否添加任课老师,是输入1,否输入0')):
t_name = input('请输入你想添加的老师名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老师不存在,请重新操作')
return
else:
t_name = ''
s_name_list = []
while int(input('是否添加学生,是输入1,否输入0')):
s_name = input('输入你想添加的学生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的学生不存在,请重新操作')
return
else:
s_name_list.append(s_name)
s_name = ''
if s_name_list == []:
cla.data.append({'班名': name, '任课老师': t_name, '学生': s_name})
print('操作成功')
else:
cla.data.append({'班名': name, '任课老师': t_name,
'学生': s_name.join(s_name_list)})
print('操作成功')
def app_student_to_class(self):
s_name = input('请输入你想操作的学生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的学生不存在,请重新操作')
return
c_name = input('请输入你想让该学生进入的班级')
if c_name not in [i['班名'] for i in cla.data]:
print('你想让学生进入的班级不存在,请重新操作')
return
for i in stu.data:
if i['姓名'] == s_name:
i['班级'] = 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('当前所有的课程信息为:')
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('请输入你想选择的课程名:')
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['人数'] = int(i['人数']) + 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('当前所有的课程信息为:')
for i in cou.data:
print(i)
print()
def see_class(self):
print('所教班级为:', self.login_data['班级'])
print()
def see_class_student(self):
print('所教班级中的学生为:')
for i in cla.data:
if i['班名'] == self.login_data['班级']:
print(i['学生'])
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('当前所有的课程信息为:')
for i in cou.data:
print(i)
print()
def see_student(self):
print('当前所有的学生信息为:')
for i in stu.data:
print(i)
print()
def see_student_course(self):
print('当前所有学生的选课信息为:')
for i in stu.data:
print(i['姓名'], '的选课信息为:', i['课程'])
print()
def set_course(self):
name = input('请输入你想添加的课程名')
c = [i['名称'] for i in cou.data]
if name in c:
print('你准备添加的课程 已经存在')
else:
cou.data.append({'名称': name, '人数': 0})
print('添加成功!')
print()
def set_student(self):
name = input('请输入你想添加的学生的姓名')
ID = input('请输入此学生的ID')
if ID in [i['ID'] for i in stu.data]:
print('这个ID已经存在,添加失败')
return
print('学生账号默认密码123456')
password = 123456
stu.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
print('添加成功!')
print()
def set_teacher(self):
name = input('请输入你想添加的老师的姓名')
ID = input('请输入此老师的ID')
if ID in [i['ID'] for i in tea.data]:
print('这个ID已经存在,添加失败')
return
print('老师账号默认密码123456')
password = 123456
tea.data.append({'姓名': name, 'ID': ID, '密码': password, '课程': ''})
print('添加成功!')
print()
def app_teacher_to_class(self):
t_name = input('请输入你想操作的老师名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老师不存在,请重新操作')
return
c_name = input('请输入你想让该老师任课的班级')
if c_name not in [i['班名'] for i in cla.data]:
print('你想让老师任教的班级不存在,请重新操作')
return
for i in tea.data:
if i['姓名'] == t_name:
i['班级'] = c_name
for i in cla.data:
if i['班名'] == c_name:
i['任课老师'] = t_name
print('操作成功')
def set_class(self):
name = input('请输入你想创建的班级的名称:')
if name in [i['班名'] for i in cla.data]:
print('你想创建的班级已经存在,请重新操作')
return
if int(input('是否添加任课老师,是输入1,否输入0')):
t_name = input('请输入你想添加的老师名')
if t_name not in [i['姓名'] for i in tea.data]:
print('你想操作的老师不存在,请重新操作')
return
else:
t_name = ''
s_name_list = []
while int(input('是否添加学生,是输入1,否输入0')):
s_name = input('输入你想添加的学生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的学生不存在,请重新操作')
return
else:
s_name_list.append(s_name)
s_name = ''
if s_name_list == []:
cla.data.append({'班名': name, '任课老师': t_name, '学生': s_name})
print('操作成功')
else:
cla.data.append({'班名': name, '任课老师': t_name,
'学生': s_name.join(s_name_list)})
print('操作成功')
def app_student_to_class(self):
s_name = input('请输入你想操作的学生名')
if s_name not in [i['姓名'] for i in stu.data]:
print('你想操作的学生不存在,请重新操作')
return
c_name = input('请输入你想让该学生进入的班级')
if c_name not in [i['班名'] for i in cla.data]:
print('你想让学生进入的班级不存在,请重新操作')
return
for i in stu.data:
if i['姓名'] == s_name:
i['班级'] = 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('当前所有的课程信息为:')
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('请输入你想选择的课程名:')
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['人数'] = int(i['人数']) + 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('当前所有的课程信息为:')
for i in cou.data:
print(i)
print()
def see_class(self):
print('所教班级为:', self.login_data['班级'])
print()
def see_class_student(self):
print('所教班级中的学生为:')
for i in cla.data:
if i['班名'] == self.login_data['班级']:
print(i['学生'])
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
# 判断是否为学生
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('欢迎来到久的学生选课系统')
time.sleep(0.5)
print('正在加载中~')
adm = Administration()
stu = Student()
cou = Course()
tea = Teacher()
cla = Classroom()
time.sleep(0.3)
print('加载完毕')
while True:
ID = input('请输入你的账号:')
password = input('请输入你的密码:')
flag = login(ID, password)
if not flag:
print('输入的账号或密码错误')
flag_1 = int(input('是否重新登录 重新登录输入1 取消登录输入0'))
if flag_1:
continue
else:
break
elif flag == 1:
print('欢迎管理员')
break
elif flag == 2:
print('欢迎学生')
break
elif flag == 3:
print('欢迎老师')
break
if flag == 1:
while True:
check = int(
input(
'1.创建课程\n2.创建学生账号\n3.查看所有课程\n4.查看所有学生\n5.查看所有学生的选课信息\n6.创建讲师'
'\n7.为讲师指定班级\n8.创建班级\n9.为学生指定班级\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.查看所教班级\n3.查看班级中的学生\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('数据存储中~')
adm.save()
tea.save()
stu.save()
cla.save()
cou.save()
time.sleep(0.5)
print('感谢您的使用!')
整个系统的数据全部单独存在,并存储在csv文件中
效果图:
来源:https://blog.csdn.net/Miku_wx/article/details/111832882
标签:python,学生信息管理系统
0
投稿
猜你喜欢
HTML 5 V.S. XHTML 2:HTML5倍受青睐,XHTML2处境尴尬
2009-06-08 12:57:00
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2023-06-11 00:32:26
几款黑体的测试和介绍
2008-07-18 17:09:00
xml文件调用css
2008-09-05 17:12:00
asp制作验证码的方法
2008-05-08 12:50:00
Python模拟键盘输入自动登录TGP
2021-11-04 11:27:22
python 进程间数据共享multiProcess.Manger实现解析
2021-03-25 14:06:53
pandas Dataframe实现批量修改值的方法
2022-12-19 21:52:59
oracle 在一个存储过程中调用另一个返回游标的存储过程
2009-09-26 18:54:00
Css 清除浮动
2008-09-15 18:47:00
去掉运行JavaScript时IE产生的警告栏
2008-09-11 18:07:00
sql中 RecordCount=-1问题
2008-03-02 17:18:00
asp将table生成excel文件(xls)
2011-03-07 11:17:00
细化解析:Mysql数据库对文件操作的封装
2008-11-27 16:32:00
Python机器学习NLP自然语言处理基本操作词袋模型
2023-08-20 06:23:30
ASP 统计某字符串中“A”出现过的次数
2010-08-12 10:17:00
javascript闭包的秘密
2008-09-28 20:39:00
Linux 发邮件磁盘空间监控(python)
2022-03-15 09:17:24
asp.net 上传下载输出二进制流实现代码
2023-06-28 16:06:05
asp数组使用特法
2009-05-11 12:43:00