一)逻辑思路
二)学生管理系统基本框架
三)对学生信息的增删改查(包括注册登录功能)
一)学生系统思路-注册登录
二)学生系统思路-操作界面(登录成功之后直接进入操作页面)
二)代码框架思路(这段代码是思路,完整的代码在后面)
class Student_System(): # 定义一个类,存放这个系统函数,方法
def student_system(self): # 封装一个学生信息管理系统的方法
while True: # 条件循环
self.student_page() # 调用学生信息管理页面的函数
num = input("请输入你的选项:") # self表示自己人,在同一类里面去调用方法
if num == "1": # 根据用户的输入去调用对应的功能
print("添加学生信息的功能")
self.student_add() # 调用增加学生信息的函数
elif num == "2":
print("删除学生信息的功能")
self.student_del()
elif num == "3":
print("修改学生信息的功能")
self.student_update()
elif num == "4":
print("查询指定学生信息")
self.student_get_one()
elif num == "5":
print("查询所有人的信息")
self.student_get_all() # 调用获取所有学生信息的函数
elif num == "q":
print("退出系统")
break
else:
print("输入错误,请重新输入")
一)对数据库的操作
# 注意,对数据库的操作,前提你有数据库,有对应的表和数据
# 在common包下创建一个play_msyql.py文件
# 存放对于数据库的操作的函数
# 1.导包(导入操作数据库的第三方库)
import pymysql
def play_mysql(sql): # 把sql设置为形参,让用户做输入,相当于设置了一个变量,对应的值让用户调函数的时候给
# 2.创建连接
mysql1 = pymysql.connect(host="localhost", user="root", password="",
port=3306, database="student", charset="utf8")
cursor1 = mysql1.cursor() # 3.创建游标
# sql = "select * from user;" # 4.定义一个sql语句,查user表中所有的数据
cursor1.execute(sql) # 5.把数据给游标
mysql1.commit() # 6.点击提交
data = cursor1.fetchall() # 7.获取所有的数据
cursor1.close() # 8.断开游标
mysql1.close() # 9.断开连接
return data
二)完整的学生系统代码
# 在工程下新建一个common包,在common包里面创建一个student_system.py文件
# 存放对于学生信息管理系统增删改查的方法api
# 定义一个学生信息管理系统类
from common.play_mysql import * # 导入对于数据库操作的函数
# 类里面的def叫方法,如果def是在类的外面,定格写的叫函数
class Student_System(): # 定义一个类,存放这个系统函数,方法
def student_main(self): # 整个系统的主程序
while True: # 条件循环
self.user_login_page() # 调用函数进入循环之后第一步就是调用了注册登录页面
num = input("请输入你的选项:")
if num == "1": # 根据用户的输入去调用对应的功能
print("进入登录页面")
self.user_login() # 调用实现登录功能的函数
elif num == "2":
print("进入注册页面")
self.user_register() # 调用实现注册功能的函数
elif num == "q":
print("退出系统")
break # 退出系统之后就结束循环
else:
print("输入错误,请重新输入")
input("按回车继续")
def user_register(self):
"""用户注册功能"""
# 用户输入数据之后去校验是否存在,数据是在数据库里面,所以需要访问数据库做查询
# 调用访问数据库的函数,# 如何在字符串里面引用变量
try:
name = input("请输入你的用户名:")
if name != '':
pwd = input("请输入你的密码:")
if pwd != '':
sql = f"select * from user;" # 查询所有的信息(('admin', 'admin123'), ('张三', '123456'),)
# 判断用户是否在数据库里面,跟数据库中的数据做对比,需要对比多次
for value in play_mysql(sql): # value = ('admin', 'admin123'),判断用户在数据库里面
if name == value[0]:
print("用户已存在,请重新输入")
break # 如果循环结束,发现在里面,就退出循环
else: # for else语句,当for循环正常结束,就运行else
# 把数据写入数据库,sql语句中insert into语句
sql = f"insert into user(name, password) values('{name}', '{pwd}');"
play_mysql(sql) # 调用函数运行sql语句
print("注册成功,你现在可以去登录了")
else:
print("密码不能为空")
else:
print("用户名不能为空")
except Exception as e:
print("输入有误,请重新输入:", e)
def user_login(self):
"""用户登录功能"""
try:
name = input("请输入你的用户名:")
if name != '':
pwd = input("请输入你的密码:")
# 用户输入数据之后去校验是否存在,数据是在数据库里面,所以需要访问数据库做查询
if pwd != '':
sql = f"select * from user;" # 查询所有的信息
# 判断用户是否在数据库里面,跟数据库中的数据做对比,需要对比多次
for value in play_mysql(sql): # (('admin', 'admin123'), ('张三', '123456'),)
if name == value[0] and pwd == value[1]: # value = ('admin', 'admin123'),判断用户和密码
print("登录成功,进入学生信息系统")
self.student_system() # 登录成功之后调用学生信息管理系统,进入选择页面
break # 如果循环不是通过break结束,就去运行else
else: # for else语句,当for循环正常结束,就运行else
print("用户名或密码错误,请重新输入")
else:
print("密码不能为空")
else:
print("用户名不能为空")
except Exception as e:
print("输入有误,请重新输入:", e)
def user_login_page(self):
"""注册登录选择页面"""
print("----->学生管理系统<-----")
print("1 -> 登录")
print("2 -> 注册")
print("q -> 退出")
print("----------------------")
def student_page(self):
# 1.先输出页面信息
print("------------->学生管理系统<--------------")
print("1 -> 添加学生信息 2 -> 删除学生信息")
print("3 -> 修改学生信息 4 -> 查询指定学生信息")
print("5 -> 查询所有学生信息 q -> 退出系统")
print("----------------------------------------")
def student_add(self):
"""添加学生信息"""
try:
sid = int(input("请输入你的学号:")) # 从键盘上获取的都是字符串类型
if sid != '': # 如果不为空,就去考虑用户是否在表里面
sql = f"select * from student;" # 查询所有的信息
# 判断用户是否在数据库里面,跟数据库中的数据做对比,需要对比多次
for value in play_mysql(sql): # ((20230001, '张三', 20), (20230002, '王五', 20))
if sid == value[0]: # value = (20230001, '张三', 20),判断用户在数据库里面
print("用户已存在,请重新输入")
break # 如果循环结束,发现在里面,就退出循环
else: # for else语句,当for循环正常结束,就运行else
name = input("请输入你的姓名:")
age = int(input("请输入你的年龄:"))
# 把数据写入数据库,sql语句中insert into语句
sql = f"insert into student(id, name, age) values('{sid}', '{name}', '{age}');"
play_mysql(sql) # 调用函数运行sql语句
print("添加成功")
else:
print("学号不能为空,请重新输入")
except Exception as e:
print("输入有误,请重新输入:", e)
def student_del(self):
"""删除学生信息"""
try:
sid = int(input("请输入你的学号:")) # 从键盘上获取的都是字符串类型
if sid != '':
sql = f"select * from student;" # 查询所有的信息
for value in play_mysql(sql): # ((20230001, '张三', 20), (20230002, '王五', 20))
if sid == value[0]: # value遍历取值,依次为(20230001, '张三', 20)
sql = f"delete from student where id = {sid};" # 删除指定数据的值
play_mysql(sql) # 调用操作数据库的函数,运行sql语句
print("删除成功")
break
else: # for else语句,当for循环正常结束,就运行else
print("用户不存在,请重新输入")
else:
print("输入的数据不能为空")
except Exception as e: # 把报错信息保存到变量e里面
print("输入的数据有误:", e)
def student_update(self):
# 修改学生信息
try:
sid = int(input("请输入你的学号:")) # 从键盘上获取的都是字符串类型
sql = "select * from student;" # 查询学生表中所有的信息
# print(play_mysql(sql)) # (20230001, '张三', 20)
for value in play_mysql(sql): # value的值依次小元组
if sid == value[0]: # 当用户存在的时候,可以去修改,用户去给数据
name = input("请输入修改后姓名:")
age = input("请输入修改后年龄:")
sql = f"update student set name = '{name}', age = {age} where id = {sid};"
play_mysql(sql) # 调用数据库函数,执行修改的语句
print("修改成功")
break
else:
print("用户不存在,请重新输入")
except Exception as e:
print("输入有误:", e)
def student_get_one(self):
# 查询指定的学生信息
try:
sid = int(input("请输入你的学号:")) # 从键盘上获取的都是字符串类型
sql = "select * from student;" # 查询学生表中所有的信息,返回的是双重元组
for value in play_mysql(sql): # value的值依次小元组
if sid == value[0]: # 当用户存在的时候,可以去修改,用户去给数据
print(f"学号:{value[0]} 姓名:{value[1]} 年龄:{value[2]}")
break
else:
print("用户不存在")
except ValueError as e:
print("输入的信息有误:", e)
def student_get_all(self):
# 获取所有的学生信息
sql = "select * from student;" # 查询学生表中所有的信息,返回的是双重元组
print("学号\t\t\t姓名\t\t年龄")
for value in play_mysql(sql): # (20230001, '张三', 20)
print(f"{value[0]}\t{value[1]}\t\t{value[2]}")
def student_system(self):
while True: # 条件循环
self.student_page() # self表示自己人,在同一类里面去调用方法
num = input("请输入你的选项:")
if num == "1": # 根据用户的输入去调用对应的功能
print("添加学生信息的功能")
self.student_add() # 调用增加学生信息的函数
elif num == "2":
print("删除学生信息的功能")
self.student_del()
elif num == "3":
print("修改学生信息的功能")
self.student_update()
elif num == "4":
print("查询指定学生信息")
self.student_get_one()
elif num == "5":
print("查询所有人的信息")
self.student_get_all() # 调用获取所有学生信息的函数
elif num == "q":
print("退出系统")
break
else:
print("输入错误,请重新输入")
三)运行pyhton程序代码
from common.student_system import * # 导入学生系统里面所有的代码
if __name__ == '__main__':
user = Student_System() # 实例化一个对象
user.student_main() # 调用学生系统主程序
# user.student_get_all() # 单独调用某一个方法
四)最后实现的界面
1.登录页面
2.注册页面
3.添加学生页面
4.删除用户数据
5.修改用户数据
6.查询指定学生信息
7.查询所有学生信息