目标

1.了解面向对象开发过程中类内部功能的分析方法
2.了解常用系统的功能:添加、删除、修改、查询

一、项目需求

使用面向对象编程思想完成学员管理系统的开发,具体如下:
1.系统要求:学员数据存储在文件中
2.系统功能:实现增删改查学员信息、查询学员信息、显示所有学员信息、保存学员信息及退出系统等功能。

二、分析项目文件

1.程序入口文件
2.学员文件
3.管理系统文件

三、代码

1.学员文件:student.py:

class Student(object):def __init__(self, name, gender, tel):# 姓名、性别、手机号self.name = nameself.gender = genderself.tel = tel#查看学员信息def __str__(self):return f'{self.name}, {self.gender}, {self.tel}'

2.管理系统文件:managerSystem.py

from student import *class StudentManager(object):def __init__(self):# 存储学员数据 -- 列表self.student_list = []# 一. 程序入口函数def run(self):# 1. 加载文件里面的学员数据self.load_student()while True:# 2. 显示功能菜单self.show_menu()# 3. 用户输入目标功能序号menu_num = int(input('请输入您需要的功能序号:'))# 4. 根据用户输入的序号执行不同的功能 -- 如果用户输入1,执行添加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.save_student()elif menu_num == 7:# 退出系统 -- 退出循环break# 二. 系统功能函数# 2.1 显示功能菜单 -- 打印序号的功能对应关系 -- 静态@staticmethoddef show_menu():print('请选择如下功能:')print('1:添加学员')print('2:删除学员')print('3:修改学员信息')print('4:查询学员信息')print('5:显示所有学员信息')print('6:保存学员信息')print('7:退出系统')# 2.2 添加学员def add_student(self):# 1. 用户输入姓名、性别、手机号name = input('请输入您的姓名:')gender = input('请输入您的性别:')tel = input('请输入您的手机号:')# 2. 创建学员对象 -- 类 ?类在student文件里面  先导入student模块,再创建对象student = Student(name, gender, tel)# 3. 将该对象添加到学员列表self.student_list.append(student)print(self.student_list)print(student)# 2.3 删除学员def del_student(self):# 1. 用户输入目标学员姓名del_name = input('请输入要删除的学员姓名:')# 2. 遍历学员列表,如果用户输入的学员存在则删除学员对象,否则提示学员不存在for i in self.student_list:if del_name == i.name:# 删除该学员对象self.student_list.remove(i)breakelse:# 循环正常价结束执行的代码:循环结束都没有删除任何一个对象,所以说明用户输入的目标学员不存在print('查无此人!')print(self.student_list)# 2.4 修改学员信息def modify_student(self):# 1. 用户输入目标学员姓名modify_name = input('请输入要修改的学员姓名:')# 2. 遍历列表数据,如果学员存在修改姓名性别手机号,否则提示学员不存在for i in self.student_list:if modify_name == i.name:i.name = input('姓名:')i.gender = input('性别:')i.tel = input('手机号:')print(f'修改学员信息成功,姓名{i.name}, 性别{i.gender}, 手机号{i.tel}')breakelse:print('查无此人!')# 2.5 查询学员信息def search_student(self):# 1. 用户输入目标学员姓名search_name = input('请输入您要搜索的学员姓名:')# 2. 遍历列表。如果学员存在打印学员信息,否则提示学员不存在for i in self.student_list:if search_name == i.name:print(f'姓名是{i.name}, 性别是{i.gender}, 手机号是{i.tel}')breakelse:print('查无此人!')# 2.6 显示所有学员信息def show_student(self):# 1. 打印表头print('姓名\t性别\t手机号')# 2. 打印学员数据for i in self.student_list:print(f'{i.name}\t{i.gender}\t{i.tel}')# 2.7 保存学员信息def save_student(self):# 1. 打开文件f = open('student.data', 'w')# 2. 文件写入数据# 2.1 [学员对象] 转换成 [字典]new_list = [i.__dict__ for i in self.student_list]# 2.2 文件写入 字符串数据f.write(str(new_list))# 3. 关闭文件f.close()# 2.8 加载学员信息def load_student(self):# 1. 打开文件:尝试r打开,如果有异常wtry:f = open('student.data', 'r')except:f = open('student.data', 'w')else:# 2. 读取数据:文件读取出的数据是字符串还原列表类型;[{}] 转换 [学员对象]data = f.read()  # 字符串new_list = eval(data)self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]finally:# 3. 关闭文件f.close()

3.程序入口文件:main.py

# 1. 导入管理系统模块
from managerSystem import *# 2. 启动管理系统
# 保证是当前文件运行才启动管理系统:if --创建对象并调用run方法
if __name__ == '__main__':student_manager = StudentManager()student_manager.run()

四、总结

综合之前学过的各种知识点完成一个学生管理系统的项目,看完视频,做完例子,进一步的强化了对python知识点的掌握。因为学生管理系统案例里用到了各种知识点例如函数的定义和调用、面向对象里的定义类和创建对象、定义调用实例属性和实例方法、文件的读取写入等操作、数据类型增删改查数据的使用。通过对比之前的用函数完成的学生管理系统,这个面向对象版的要以面向对象的方式来看待问题,剥离之前版本的面向过程的思维。

Python 实现学生管理系统(面向对象版)相关推荐

  1. Python学生管理系统——面向对象版本

    Python练习题----学生管理系统(面向对象版本) 一. 题目要求: 学生信息管理:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.设计一个学生信息管理系统,使之提供以下功能: -- ...

  2. python学生管理系统-python实现学生管理系统

    python写的简单的学生管理系统,练习python语法. 可以运行在windows和linux下,python 2.7. #!/usr/local/bin/python # -*- coding:u ...

  3. Python实现学生管理系统(功能全面)

    标题Python实现学生管理系统 功能描述 1.分为两个界面:(1)登录和注册界面 (2)学生管理系统界面 2.登录功能和之前发布的图书管理系统相同,登录成功后可进入学生管理系统界面,这里不再叙述 3 ...

  4. python制作学生管理系统_Python——面向对象,简易学生信息管理系统

    一.概述 1.1涉及到的知识点 项目开发:创建项目,创建包,导入包: 面向对象:静态方法,继承,内置函数,自定义函数: 数据类型:列表,字典,字符串.列表.字典的转换和自动生成导向: 异常处理:捕获异 ...

  5. python gui学生管理系统(Python gui+MySQL数据库)

    原代码: Python题目:学生信息管理系统-高级版(图形界面+MySQL数据库)_清晨的光明-CSDN博客 本人改了一下代码, 成功跑了起来 改的地方: 1.自己本地创建一下数据库,命名为:stud ...

  6. 用python设计学生管理系统_python+tkinter实现学生管理系统

    本文实例为大家分享了python+tkinter实现学生管理系统的具体代码,供大家参考,具体内容如下 from tkinter import * from tkinter.messagebox imp ...

  7. 基于python高校学生管理系统

    随着高等院校学生数量的不断增长,管理学生信息的工作量越来越大.为了提高学生事务处理的高效快捷,达到提高高校教务办公自动化的目的和提高工作效率,适应二十一世纪教育现代化改革的要求,从而实现全面振兴教育的 ...

  8. 【python】学生管理系统GUI可视化界面版本

    关于学生管理系统GUI版本的实现 参考文献: (14条消息) 使用Python中的tkinter模块实现GUI界面的学生信息管理系统_基于tkinter的学生信息管理系统_Marshal_A的博客-C ...

  9. python写学生系统-用python编写学生管理系统

    #该程序在设计返回值时用了flag(标志)和i(标识下标): #之前在travers()函数的编写中for循环中缺少一个return导致在传递参数时会有错误: # 主要体现在修改和删除首个元素时!值得 ...

最新文章

  1. 全球及中国抓紧器行业十四五发展态势及前景规划建议报告2021-2027年版
  2. Gooogle Test中的TEST()宏代码分析
  3. 微软Silverlight==跨浏览器、跨客户平台的技术
  4. canvas绘制字体-属性设置2
  5. Spring中MultipartHttpServletRequest实现文件上传
  6. 高等数学-函数在线绘图工具推荐(精选好用)
  7. 人声歌姬语音合成器+全套拓展 – Yamaha Vocaloid 4.3.0 + ALL Libraries WiN
  8. 元转万元单位换算_度数单位换算(元换算成万元换算器)
  9. 一篇文章带你了解系统流程图和业务流程图的区别
  10. 如何将YouTube和其他网络视频投射到Kodi(例如Chromecast)
  11. 使用pdfbox-2.0.1.jar将pdf转换成图片,并且可自定义图片大小
  12. java设置随机数_java设置随机数教程
  13. 【综述】(MIT博士)林达华老师-quot;概率模型与计算机视觉”
  14. 怒肝半月!Python 学习路线+资源大汇总
  15. MYSQL中redo log和binlog之间的区别
  16. pthread_cond_destroy死锁卡住问题处理记录
  17. 视频教程-opencv应用实例-实战视频教学-计算机视觉
  18. android 名片识别 简书,nodejs实现名片识别
  19. 让window10停止更新的办法
  20. ros构建机器人运动学模型_ROS系统玩转自主移动机器人(5)-- ROS系统建模

热门文章

  1. 浅谈锂离子电池电模型参数的影响因素
  2. 技术和资金非瓶颈 宽带提速进展缓慢三大主因
  3. <Zhuuu_ZZ>数据库设计:吃货联盟
  4. 领卓教育科技有限公司毕业实习报告
  5. 在疫情影响后如何买房
  6. 一篇文章教你如何写数学建模的论文
  7. 多路由器组局域网设置要点
  8. 足球运动员身价估计(随机森林)
  9. 【Mindspore】深度学习、MindSpore使用与杂七杂八
  10. 计算机怎么截音乐,qq音乐电脑版如何截取一段音乐