Python学生信息管理系统详解(MySQL版)

前言

  • Hello 大家好我是小余,今天给大家带来一个算是我的第一个完整的程序。
  • 友情提醒:在该代码的SQL语句中请用 %s 充当占位符,不要用 {} ,避免出错。
  • 还有一点,execute() 是执行SQL语句的,而commit() 是写入的。
  • 另外可能有时候游标会有报错,在本程序里我创建的是SScursor 流式游标,小余也对游标不熟,若代码运行出了问题,还请各位自行百度解决,也可以留言、私信。

数据库结构

数据源

21262174 余星舟 女 18 21大数据1班 大数据应用与技术 人工智能与大数据学院
21262175 肖琪锋 男 18 2021级软件2班 软件技术 人工智能与大数据学院
21262176 李鑫林 女 18 2021级软件3班 软件技术 人工智能与大数据学院
21262177 王春元 男 19 2021级数据1班 大数据应用与技术 人工智能与大数据学院
21262178 邓安杰 男 19 2021级软件3班 软件技术 人工智能与大数据学院
21262179 叶心仪 女 19 2021级软件3班 软件技术 人工智能与大数据学院
21262180 尹驰宇 男 19 21软件3班 软件技术 信息工程学院

一、导入MySQL模块,并建立MySQL链接。

  • 如果有小伙伴导入MySQL报错的话,请参照小余的置顶博客哦(有一篇专门讲了module安装)
  • 图中就是我们需要链接MySQL的步骤,至于connect的时候建议大家还是按照关键字(代码中红色字字体)来写入,不然可能无法识别

二、建立主程序

  • 和上一个文本版的一样建立一个主程序,只不过这次的主程序把原来的login 里面的验证身份加进来了。

三、建立主菜单

  • 这个也是最基本的建设哦

四、开始编写程序

(一)、查询

1、查询菜单

  • 该菜单和上面的菜单差不多哦

2、按学号查询

  • 若我们不用for循环遍历输出:
  • 下面是我们输出的结果
  • 想必大家看到了吧,若不用for循环遍历输出的话,就会是这样,虽然说依旧输出了,但是不美观是吧。

3、按姓名查询

  • 我们添加一个按姓名查询来预防查询学号不成,但确实有这个人

  • 按姓名查询的格式和按学号一样,只不过数据不同。

(二)、删除记录

1、删除记录的菜单

  • 虽然我觉得这个菜单有点多余

2、删除学生记录

(三)、增加记学生记录

  • 若是sqlite3那么就要用add.Rowcount来提取影响的行数

(四)、修改记录

总结

  • 总的来说MySQL版本比TXT版本好做的多,耗时少(当然那时候的txt是独立做出来的),对于这次的代码其实并不是最终的版本,只能说是能完成所有的需求,因为有一些是可以打包的代码并没有打包,因为对于定义函数之后括号内的内容调用有些不熟练,所以就没有再打包了,该版本也可以算是MySQL的成功版本了,大家好好观看吧。
  • 有什么建议大家就留言哦,不懂的,错了的,不管是注释还是代码都可以留言私信

源码

'''
function:StudentsInformationManageSystem
author:Sherry
Time:2021.12.26
'''
import pymysql
#定义数据库链接参数
host = '127.0.0.1' #或者用local host
port = 3306
db = 'student'
user = 'root'
password = '111111'
conn = pymysql.connect(host=host, port=port, db=db, user=user, password=password)
def non():
 cursor = conn.cursor(pymysql.cursors.SSCursor) #流式游标,默认返回元组
 return cursor
#插入学生记录
def add_student():
 cursor = non()
 id = int(input('学号:'))
 name = input('姓名:')
 genden = input('性别:')
 age = int(input('年龄:'))
 garden = str(input('班级:'))
 major = input('专业:')
 college = input('学院:')
 add = cursor.execute("insert into stu (id, name, genden, age, class, major, college)\
 values(%s, %s, %s, %s, %s, %s, %s)", (id, name, genden, age, garden, major, college))
 if add == 1:
 conn.commit()
 print('插入成功!')
 else:
 print('插入失败!')
#按学号查询
def Q_by_id():
 cursor = non()
 choose_id = int(input('请输入学号:'))
 cursor.execute('select * from stu where id =%s', (choose_id))
 student = cursor.fetchall()
 for student in student:
 print('{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6]))
 re = input('\n是否继续查询y/n:')
 if re == 'y':
 Q_by_id()
 else:
 query_student()
#按姓名查询(以防学号输入错误)
def Q_by_name():
 cursor = non()
 choose_name = input('请输入姓名:')
 cursor.execute('select * from stu where name =%s', (choose_name))
 students = cursor.fetchall()
 for student in students:
 print('{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6]))
 re = input('\n是否继续查询y/n:')
 if re == 'y':
 Q_by_name()
 else:
 query_student()
#查询所有学生
def Q_all():
 cursor = non()
 cursor.execute('select * from stu')
 students = cursor.fetchall()
 for student in students:
 print('{}\t{}\t{}\t{}\t{}\t{}\t{}' .format(student[0], student[1], student[2], student[3], student[4], student[5], student[6]))
#查询的菜单
def query_student():
 while True:
 print('查询学生记录')
 print('================')
 print('1、按学号查询学生记录')
 print('2、按姓名查询学生记录')
 print('3、查询全部学生记录')
 print('4、返回上级菜单')
 print('=================')
 mc3 = int(input('请输入菜单号:'))
 if mc3 == 1:
 Q_by_id()
 elif mc3 == 2:
 Q_by_name()
 elif mc3 == 3:
 Q_all()
 else:
 break
#删除学生记录
def D_student():
 cursor = non()
 id = int(input('输入想要删除学生的学号:'))
 affect = cursor.execute('delete from stu where id = %s', (id))
 if affect == 1:
 conn.commit()
 print('删除成功!')
 else:
 print('删除失败!')
#删除的菜单
def delete_student():
 print('============================')
 print('1、删除学生信息')
 print('2、回到上一级菜单')
 print('============================')
 mc4 = int(input('Input menu number:'))
 if mc4 == 1:
 D_student()
 elif mc4 == 2:
 login()
#修改字段值
def modify_student():
 cursor = non()
 ID = int(input('请输入想要修改学生的学号:'))
 cursor.execute('select * from stu where id = %s', (ID))
 if cursor.fetchall() == []:
 print('未查找到学号是{}的学生'.format(ID))
 mc3 = input('是否重新查询?y/n')
 if mc3 == 'y':
 modify_student()
 else:
 login()
 else:
 print('==============')
 print('1、修改姓名')
 print('2、修改性别')
 print('3、修改年龄')
 print('4、修改班级')
 print('5、修改专业')
 print('6、修改学院')
 print('7、返回上级菜单')
 print('==============')
 mc2 = int(input('请输入菜单号:'))
 if mc2 == 1:
 name = input('请输入修改后的值:')
 a = cursor.execute('update stu set name = %s where id = %s', (name, ID))
 if a > 1:
 conn.commit()
 print('修改成功!')
 else:
 print('修改失败!')
 elif mc2 == 2:
 sex = input('请输入修改后的值:')
 a = cursor.execute('update stu set genden = %s where id = %s', (sex, ID))
 if a > 1:
 conn.commit()
 print('修改成功!')
 else:
 print('修改失败!')
 elif mc2 == 3:
 age = int(input('请输入修改后的值:'))
 a = cursor.execute('update stu set age = %s where id = %s', (age, ID))
 if a > 1:
 conn.commit()
 print('修改成功!')
 else:
 print('修改失败!')
 elif mc2 == 4:
 garden = input('请输入修改后的值:')
 a = cursor.execute('update stu set class = %s where id = %s', (garden, ID))
 if a > 1:
 conn.commit()
 print('修改成功!')
 else:
 print('修改失败!')
 elif mc2 == 5:
 major = input('请输入修改后的值:')
 a = cursor.execute('update stu set major = %s where id = %s', (major, ID))
 if a > 1:
 conn.commit()
 print('修改成功!')
 else:
 print('修改失败!')
 elif mc2 == 6:
 college = input('请输入修改后的值:')
 a = cursor.execute('update stu set college = %s where id = %s', (college, ID))
 if a > 1:
 conn.commit()
 print('修改成功!')
 else:
 print('修改失败!')
 else:
 login()
#登入后的菜单----展开
def login():
 while True:
 print('学生管理系统')
 print('================')
 print('1、增加学生记录')
 print('2、查询学生记录')
 print('3、修改学生记录')
 print('4、删除学生记录')
 print('5、返回上级菜单')
 print('=================')
 mc2 = int(input('输入菜单号:'))
 if mc2 == 1:
 add_student()
 elif mc2 == 2:
 query_student()
 elif mc2 == 3:
 modify_student()
 elif mc2 == 4:
 delete_student()
 else:
 break
#主程序
while True:
 print('登录系统')
 print('=========')
 print('1、登录')
 print('2、退出')
 print('=========')
 mc1 = int(input('输入菜单号:'))
 if mc1 == 1:
 username = input('请输入用户名:')
 password = input('请输入密码:')
 if username == 'admin' and password == '111111':
 login()
 else:
 print('账号或密码错误!')
 elif mc1 == 2:
 print('感谢使用!')
 break
作者:姓余的原文地址:https://blog.csdn.net/weixin_53547097/article/details/122175974

%s 个评论

要回复文章请先登录注册