目标

  1. 了解⾯向对象开发过程中类内部功能的分析⽅法
  2. 了解常⽤系统功能
    1. 添加
    2. 删改
    3. 修改
    4. 查询

系统需求

使用面向对象编程思想完成学员管理系统的开发,具体如下:

  1. 系统要求:学员数据存储在数据库中
  2. 系统功能:添加学员,删除学员,修改学员信息,查询学员信息,显示所有学员信息

准备程序文件

1.分析

  1. 学员
  2. 管理系统

注意:为方便维护,一般一个角色一个程序文件,项目要有主程序入口,习惯为main.py

2.创建程序文件

程序文件如下:

  • 程序入口文件:main.py
  • 学员文件:student.py
  • 管理系统文件:managerSystem.py

书写程序

student.py

需求:

  • 学员信息包含:姓名、性别、⼿机号;
  • 添加 __str__ ⽅法,⽅便查看学员对象信息
class Student(object):def __init__(self, name, gender, tel):# 姓名、性别、手机号self.name = nameself.gender = genderself.tel = teldef __str__(self):return f'{self.name}, {self.gender}, {self.tel}'

managerSystem.py

需求:

  • 存储数据的位置:数据库

    • 增删改查
  • 存储数据的形式
  • 系统功能
    • 添加
    • 删除
    • 修改
    • 查询
    • 显示所有信息
from student import *
import pymysql
#数据库名称
DBhost = 'localhost'
DBuser = 'root'
DBpassword = '*******'#数据库系统
DBname = 'dbtest'
class StudentManager(object):def __init__(self):# 存储学员数据 -- 列表self.student_list = ()#存储学员数据--数据库try:self.db = pymysql.connect(host=DBhost, user=DBuser, password=DBpassword, database=DBname)print("数据库连接成功!")self.cur = self.db.cursor()  # 声明一个游标# self.cur.execute('DROP TABLE IF EXISTS studentmassage')# # 用户输入姓名、性别、手机号# sql = "CREATE table studentmassage(Name char(20) NOT NULL,sex char(30),idcard char(20))"  # 表头标签 双引号!# self.cur.execute(sql)  # execute执行sql语句except pymysql.Error as a:print("数据库连接失败!" + str(a))# 一. 程序入口函数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)sql1 = "insert into studentmassage(Name,sex,idcard)value(%s,%s,%s)"# 3. 将该对象添加到学员数据库value = (student.name,student.gender,student.tel)#添加信息#print(value)self.cur.execute(sql1,value)#执行语句self.db.commit()#数据提交# 2.3 删除学员def del_student(self):# 1. 用户输入目标学员姓名del_name = input('请输入要删除的学员姓名:')sql3 = "select Name from studentmassage" #按名字查询数据库self.cur.execute(sql3)results1 = self.cur.fetchall()#返回的名字的元组# print(results1)u=0#标志变量for ty in results1:#循环遍历name = ty[0]if name == del_name:#判断名字是否存在u=1sql2 = "delete from studentmassage where Name =%s"self.cur.execute(sql2, del_name)#删除名字的操作self.db.commit()if u==0:print("查无此人!")# 2.4 修改学员信息def modify_student(self):# 1. 用户输入目标学员姓名modify_name = input('请输入要修改的学员姓名:')sql3 = "select Name from studentmassage"self.cur.execute(sql3)results1 = self.cur.fetchall()u = 0for ty in results1:name = ty[0]if name == modify_name:u = 1sql2 = "delete from studentmassage where Name =%s"# newname = input("请输入新名字:")# newsex = input("请输入性别:")# newtel = input("请输入手机号:")self.cur.execute(sql2,modify_name)#删除姓名self.db.commit()self.add_student()#执行新添加breakif u == 0:print("查无此人!")# 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}')#         break# else:#     print('查无此人!')# 2.5 查询学员信息def search_student(self):# 1. 用户输入目标学员姓名search_name = input('请输入您要搜索的学员姓名:')sqlselect = "select * from studentmassage"self.cur.execute(sqlselect)results1 = self.cur.fetchall()  # 接收查询的信息,是一个元组#print(results1)# 2. 遍历列表。如果学员存在打印学员信息,否则提示学员不存在h=1for i in results1:name = i[0]gread = i[1]stuid = i[2]if search_name == name:print(f'姓名是{name}, 性别是{gread}, 手机号是{stuid}')h = 0if h==1:print('查无此人!')# 2.6 显示所有学员信息def show_student(self):sql4 = "select Name,sex,idcard from studentmassage"self.cur.execute(sql4)results2 = self.cur.fetchall()print(results2)# 2.7 保存学员信息def save_student(self):pass# 2.8 加载学员信息def load_student(self):pass

里面包含所有的功能,如果要添加功能需要自己定义def,然后在菜单页面添加相应操作

main.py

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

总结

  • 函数

    • 定义和调用
    • 参数的使用
  • 面向对象
    • 定义类
    • 创建对象
    • 定义和调用实例属性
    • 定义和调用实例方法
  • 数据类型
    • 数据库形式存储

面向对象版学员管理系统(存储数据库)相关推荐

  1. python面相对象编程超市系统_python面向对象编程: 面向对象版学员管理系统

    转载自https://www.cnblogs.com/LynHome/archive/2020/04/06/12650318.html 详细解读请参考https://www.cnblogs.com/b ...

  2. ORM版学员管理系统

    ORM版学员管理系统 班级表 表结构 class Class(models.Model):id = models.AutoField(primary_key=True) # 主键cname = mod ...

  3. ORM版学员管理系统2

    学生信息管理 展示学生信息 URL部分 url(r'^student_list/', app01_views.student_list, name="student_list"), ...

  4. 【Python】面向对象版学生管理系统(文末有源代码)

  5. Python学员管理系统进阶版

    Python学员管理系统进阶版 整合基础,使用面向对象的方式做学员管理系统 文章目录 Python学员管理系统进阶版 前言 一.系统需求 1.创建程序文件 2.书写程序 3.管理系统框架 二.功能函数 ...

  6. Python 实现学生管理系统(面向对象版)

    目标 1.了解面向对象开发过程中类内部功能的分析方法 2.了解常用系统的功能:添加.删除.修改.查询 一.项目需求 使用面向对象编程思想完成学员管理系统的开发,具体如下: 1.系统要求:学员数据存储在 ...

  7. 本地数据库IndexedDB - 学员管理系统之登录(一)

    IndexedDB是浏览器提供的本地数据库,它可以被网页脚本创建和操作.IndexedDB允许存储大量数据,提供查找接口,还能建立索引.这些都是LocalStorage或Cookie不具备的.就数据库 ...

  8. mysql数据库小系统_Mysql数据库基础小实例 学员管理系统菜单

    package test; import java.sql.*; import java.util.Scanner; public class testSql002_StudentTest { /** ...

  9. Java+MySQL学生选课与成绩管理系统(数据库版)

    一.项目要求 学生选课与成绩管理系统(数据库版) 1.配置MySQL数据库 2.利用java+MySQL实现系统各个功能 3.功能包括: (1)系统交互界面,如下图所示 (2)学生信息的增删改查.学生 ...

  10. 药品进销存系统mysql_jsp70039药品进销存管理系统 双数据库 mysql版

    jsp70039药品进销存管理系统 双数据库 mysql版 该设计有演示视频 100%能运行 买重包换 保密发送 一校一份 编号: jsp70039 语言+数据库: jsp+sql2008+mysql ...

最新文章

  1. mysql通过中间表实现数据的“部分复制”
  2. java 增量编译_java增量构建关于lambda表达式的问题
  3. python100行代码-python代码统计 100行
  4. JS一起学01:css复习、js基础知识、事件、参数、函数、网页换肤、if判断、className问题、浏览器执行顺序
  5. Zookeeper 服务注册中心
  6. windows 2012 AD域报错ladp非法绑定
  7. 10.08-vscode-plantuml建模
  8. linux 系统终端字体改变,linux系统终端修改字体的方法
  9. 一文学会 SSH 服务!
  10. WINDOWS 2008的trustedinstallerexe占用过多CPU导致服务器性能下降的问题处理
  11. 拓端tecdat|python在Scikit-learn中用决策树和随机森林预测NBA获胜者
  12. jsSIP-demo(完整源码加注释)
  13. [转]UBB代码解析规范
  14. 一个牛人给JAVA初学者的建议【转】
  15. 教你如何下载抖音视频的背景音乐?是音乐不是视频哦
  16. LSDB和SPF算法
  17. 8、某网络拓扑如图所示,路由器R1通过接口E1、E2分别连接局域网1、局域网2,通过接口L0连接路由器R2,并通过路由器R2连接域名服务器与互联网。R1的L0接口的IP地址是202.118.2.1/2
  18. 机器学习 | 样本不平衡问题处理方法
  19. 思科交换机基础--11三层交换机ACL配置
  20. linux arm关闭光栅,基于Linux的光栅检测系统的软件设计与实现.pdf

热门文章

  1. 这是一个猜数字的游戏。判断输入的第1个字符,略过其余的字符。
  2. 图像灰度共生矩阵cooc_feature_image.hdev
  3. Excel数字小写金额转换汉字大写金额公式的简单设置
  4. 基于FPGA的2FSK调制解调器
  5. 只会增删改查的程序员出路在哪里?
  6. 3D资产大掌柜—Connecter
  7. 彻底搞清楚library cache lock的成因和解决方法(转)
  8. Leetcode PHP题解D1:宝石与石头
  9. SU-03T语音模块的使用(小智语音控制LED灯)
  10. Android友盟统计