神剑山庄资源网 Design By www.hcban.com
项目要求:
读完题目,首先我们要确定程序思路
我们要全部通过类去实现
也就是 我们要实现管理员、学生、讲师、课程、教师五个类
管理员类
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文件中
效果图:
总结
神剑山庄资源网 Design By www.hcban.com
神剑山庄资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
神剑山庄资源网 Design By www.hcban.com
暂无利用Python实现学生信息管理系统的完整实例的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月17日
2024年11月17日
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】