赞
踩
目录
编写这个学生管理系统需要使用pymysql这个库去连接数据库
这个学生管理系统我做的很简陋,只做了增删改查和展示所有学生信息5个模块,大家可以做得更详细一点增加其他的功能模块,在这里仅供大家参考,希望能给刚开始学习python的同学一点参考
- import pymysql
- #定义数据库连接参数
- host = '127.0.0.1'
- port = 3306
- db = 'student'
- user = 'root'
- password = 'root'
- #创建连接
- con = pymysql.connect(host=host,
- port=port,
- db=db,
- user=user,
- password=password)
- #创建游标对象
- cur = con.cursor()
- #编写sql语句
- sql = """
- create table if not exists students(
- ids varchar(20) not null primary key,
- name varchar(30) not null,
- age int(2),
- gender varchar(10) not null,
- classes varchar(200) not null
- )
- """
- try:
- #执行sql语句
- cur.execute(sql)
- print('创建成功')
- except Exception as e:
- print(e)
- print('创表失败')
- finally:
- #关闭连接
- con.close()
- #数据库自动检测是否断开并自动连接
- def select_db():
- # 检查连接是否断开,如果断开就进行重连
- con.ping(reconnect=True)
- cur.execute(sql)
- # 使用 fetchall() 获取查询结果
- data = cur.fetchall()
- return data
- #菜单
- def menu():
- print("1.增加学生信息")
- print("2.删除学生信息")
- print("3.查找学生信息")
- print("4.修改学生信息")
- print("5.展示所有学生信息")
- print("0.退出系统")
- choose = input("请输入你的操作:")
- return choose
- #定义主函数
- def main():
-
- print("+----------------------------------------+")
- print("| 欢迎进入学生管理系统 |")
- print("+----------------------------------------+")
- while True:
- choose = menu()
- #增加学生信息
- if choose == '1':
- add()
- #删除学生信息
- elif choose == '2':
- delete()
- #查找学生信息
- elif choose == '3':
- fund()
- #改变学生信息
- elif choose == '4':
- amend()
- #展示所有学生信息
- elif choose == '5':
- show()
- elif choose == '0':
- print("你已退出学生管理系统!!!!")
- #非法输入
- else:
- print("输入错误,请冲向输入!!")
- #添加学生信息
- def add():
- select_db()
- #创建游标对象
- cur = con.cursor(pymysql.cursors.SSCursor)
- print("增加学生信息开始")
- while True:
- try:
- ids = input("请输入学号:")
- name = input("请输入学生姓名:")
- age = input("亲输入学生年龄")
- gender = input("请输入学生性别:")
- classes = input("请输入学生班级:")
- values = [ids, name, age, gender, classes]
- if gender not in ("男", "女"):
- print("输入错误,请输入男或女!")
- # 执行sql,将数据录入数据库
- sql = 'insert into students(ids,name,age,gender,classes) values(%s,%s,%s,%s,%s)'
- cur.execute(sql, values)
- if True:
- # 提交事务
- con.commit()
- print('添加学生信息成功')
- answer = input('是否继续添加学生信息:“yes"or"no"\n')
- if answer != 'yes':
- break
- else:
- continue
- except Exception as e:
- print(e)
- # 数据回滚,保护数据库
- con.rollback()
- print('添加学生信息失败')
- finally:
- print("[增加学生信息结束]")
- con.close()
- #删除学生信息
- def delete():
- select_db()
- # 创建游标对象
- cur = con.cursor(pymysql.cursors.SSCursor)
- print("删除学生信息开始")
- while True:
- try:
- ids = input("请输入你要删除的学生学号:")
- sql = 'delete from students where ids=%s'
- con.commit()
- # 执行sql将数据从数据库中删除
- cur.execute(sql, ids)
- if True:
- # 提交事务
- con.commit()
- print('删除学生信息成功')
- answer = input('是否继续删除学生信息:“yes"or"no"')
- if answer != 'yes':
- break
- else:
- continue
- except:
- # 数据回滚,保护数据库
- con.rollback()
- print('删除学生信息失败')
- finally:
- print("删除学生信息结束")
- con.close()
- #修改学生信息
- def amend():
- select_db()
- # 创建游标对象
- cur = con.cursor(pymysql.cursors.SSCursor)
- print("修改学生信息开始")
- while True:
- ids = input("请输入你要修改信息学生的学号:")
- if ids != '':
- name = input("请输入你要修改信息学生的姓名:")
- age = input("请输入你要修改信息学生的年龄:")
- gender = input("请输入你要修改信息学生的性别:")
- classes = input("请输入你要修改信息学生的班级:")
- try:
- sql = f'update students set ids={ids},name={name},age={age},gender={gender},classes={classes}'
- #执行sql,修改数据库数据
- cur.execute(sql)
- con.commit()
- except:
- print("修改失败")
- con.rollback()
- finally:
- print("修改学生信息结束")
- answer = input('是否继续修改学生信息:”yes“or"no"')
- if answer != 'yes':
- break
- else:
- continue
- else:
- print('输入错误请重新输入')
- continue
- con.close()
- #查找学生信息
- def fund():
- select_db()
- # 创建游标对象
- cur = con.cursor(pymysql.cursors.SSCursor)
- print("查找学生信息开始")
- while True:
- try:
- mode = input('按学号查找请输入:1,按姓名查找请输入:2')
- if mode =='1':
- ids = input("请输入你需要查找到学生学号:")
- sql = 'select from students where ids=%s'
- cur.execute(sql, ids)
- con.commit()
- print(cur.fetchall())
- answer = input('是否继续查找学生信息:”yes“or”no“')
- if answer != 'yes':
- break
- else:
- continue
- elif mode == '2':
- name = input("请输入你需要查找的学生姓名:")
- sql = 'select from students where name=%s'
- cur.execute(sql, name)
- con.commit()
- print(cur.fetchall())
- answer = input('是否继续查找学生信息:”yes“or”no“')
- if answer != 'yes':
- break
- else:
- continue
- else:
- print("你的输入有误,请重新输入")
- continue
- except:
- # 数据回滚,保护数据库
- con.rollback()
- finally:
- print("查询学生信息结束")
- con.close()
- def show():
- select_db()
- # 创建游标对象
- cur = con.cursor(pymysql.cursors.SSCursor)
- sql = f'select * from students'
- cur.execute(sql)
- all = cur.fetchall()
- # print(len(all), type(all))
- format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}'
- print(format_title.format('ID', '姓名', '性别', '年龄'))
- format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}'
- for record in all:
- print(format_data.format(record[0], record[1], record[2], record[3]))
- con.close()
- if __name__ == '__main__':
- main()
我把所有代码都放在这里了,里面也都有详细注释,大家应该都能看懂,希望我的这篇发文能够帮助那些还在学习python的同学,这只是一个很基础的小项目,希望大家能都自己都能跑一下代码感受一下,今天的分享就到此为止了,谢谢大家。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。