运动会管理系统
1.配置:pycharm2022.3专业版.(使用pycharm社区版也可以的)
解释器:python3.11解释器
数据库:MySQL Workbench 8.0
我们直接开始代码演示:
1.我们需要用到的模块:
from pymysql import connect # 用pycharm来连接数据库
from pyecharts import options as opts # 可视化相关库
from pyecharts.charts import Pie # 画图库引用饼图模块
from pyecharts.globals import ThemeType # pyecharts画图主题
import random
import os # 与操作系统交互的方法库
import sys #与 Python 解释器及其环境交互的模块
2.pycharm连接数据库并选择mysql中我们要用到的数据库,这里默认使用本地root连接即可:
# 构建mysql数据库的连接
conn = connect(
host="localhost", # 主机名
port=3306, # 默认端口
user="root", # 使用主机
password="******", # 本地mysql账户密码,用自己的密码
autocommit=True # 自动确认提交本地的操作
)
cursor = conn.cursor() # 获取游标对象
conn.select_db("school") # 选择数据库
3.注!:在执行一下代码的时候先在上面你连接的数据库中建好以下四个表(否者程序会报错哦):
admin , referee , player , score ,
有对管理员的信息管理函数,以及设置了项目的登陆模式:
cursor.execute("select * from admin") # 在pycharm内来执行MySQL中的代码指令
def index(admin_no, admin_passwd):
cursor.execute("select * from admin where admin_no='" + admin_no + "'")
tel = cursor.fetchone()
if tel[2] == admin_passwd: # 管理员密码为111111
print("登录成功") # 这里只有管理员一号才可以登录程序应用!!!
else:
print("用户或密码错误")
# 管理员插入
def admin_insert(admin_no, admin_name, admin_passwd, admin_tel):
cursor.execute(
"insert into admin values('" + admin_no + "','" + admin_name + "','" + admin_passwd + "','" + admin_tel + "')")
conn.commit()
# 管理员更改
def admin_update(admin_noo):
admin_no = input("更改的编号:")
admin_name = input("更改的姓名:")
admin_passwd = input("更改的密码:")
admin_tel = input("更改的电话:")
cursor.execute(
"update admin set admin_no='" + admin_no + "',admin_name='" + admin_name + "',admin_passwd='" + admin_passwd + "',admin_tel='" + admin_tel + "' where admin_no='" + admin_noo + "'")
conn.commit()
# 管理员删除
def admin_delete(admin_no): # 管理员
cursor.execute("delete from admin where admin_no='" + admin_no + "'")
conn.commit()
数据表admin样式:
4.对裁判的相关信息的修改操作函数
# 裁判插入
def referee_insert(referee_no, referee_name, referee_sex, referee_dept):
cursor.execute(
"insert into referee values('" + referee_no + "','" + referee_name + "','" + referee_sex + "','" + referee_dept + "')")
conn.commit()
# 裁判更改
def referee_update(referee_noo):
referee_no = input("更改的编号:")
referee_name = input("更改的姓名;")
referee_sex = input("更改的性别:")
referee_dept = input("更改的项目:")
cursor.execute(
"update referee set referee_no='" + referee_no + "',referee_name='" + referee_name + "',referee_sex='" + referee_sex + "',referee_dept='" + referee_dept + "' where referee_no='" + referee_noo + "'")
conn.commit()
# 裁判删除
def referee_delete(referee_no):
cursor.execute("delete from referee where referee_no='" + referee_no + "'")
conn.commit()
referee表简单演示:
5.参赛运动动员的信息修改:
# 运动员更改
def player_update(player_noo):
player_no = input("更改的编号:")
player_name = input("更改的姓名;")
player_sex = input("更改的性别:")
player_dept = input("更改的项目:")
player_age = input("更改的年龄:")
cursor.execute(
"update player set player_no='" + player_no + "',player_name='" + player_name + "',player_sex='" + player_sex + "',player_dept='" + player_dept + "',player_age='" + player_age + "' where player_no='" + player_noo + "'")
conn.commit()
# 运动员删除
def player_delete(player_no):
cursor.execute("delete from player where player_no='" + player_no + "'")
conn.commit()
player表样式:
6.运动员分数的增删改查:
# 分数插入
def score_insert(score_no, score_pno, score_dno, score_sno, score_score):
cursor.execute(
"insert into score values('" + score_no + "','" + score_pno + "','" + score_dno + "','" + score_sno + "','" + score_score + "')")
# 分数更改
def score_update(score_noo):
score_no = input("更改的成绩编号:")
score_pno = input("更改的选手编号;")
score_dno = input("更改的项目编号:")
score_sno = input("更改的排名:")
score_score = input("更改的成绩:")
cursor.execute(
"update score set score_no='" + score_no + "',score_pno='" + score_pno + "',score_dno='" + score_dno + "',score_sno='" + score_sno + "',score_score='" + score_score + "' where score_no='" + score_noo + "'")
conn.commit()
# 分数删除
def score_delete(score_no):
cursor.execute("delete from score where score_no='" + score_no + "'")
conn.commit()
分数表样式:
7.对运动会的简单可视化:
这里给出一个简单的可视化代码根据自己的需求来用哦
# html饼状图网页可视化
def demo_pie():
pie = Pie()
staff = ['运动员', '裁判员', '成绩', '其他', '管理员']
num = [players, refereers, scorers, additional, adminers]
pie.add("", [list(z) for z in zip(staff, num)])
pie.set_global_opts(
title_opts=opts.TitleOpts(title="运动会各人员pie图"),
legend_opts=opts.LegendOpts(is_show=True),
toolbox_opts=opts.ToolboxOpts(is_show=True),
)
theme = ThemeType.HALLOWEEN # 调用了globers文件中的_ThemeType模块 中的主题
pie.render("sports_pie.html") # 文件名称
执行此代码后会在同一目录下生成一个名为sports_pie的html代码,可以在pycharm中打开,也可以在网页中打开:如
双击html文件得:(仅为部分html)