当前位置:   article > 正文

mysql+php数据库大作业之世界杯比赛系统_php大作业

php大作业

这一版本bug较多,建议看新文章

前言

原项目bug比较多,后面进行了大量优化

说明:此项目为本人大三数据库课程的课程大作业。由于只学习过相关的sql知识,对于前端的知识并不是很了解,只花了一周的时间来学习前端,所以此版本只能算是一个阉割版,有很多功能还未实现,希望以后能有机会继续学习,如果此项目有什么问题也欢迎指正

项目链接
提取码:1111

PHP项目学习之世界杯比赛系统

主要配置

php5.4.45,mysql8.0.12,Apache2.4.39,编辑软件为vscode,使用前端架构为php+js+css,整个项目使用的主要框架为layui,数据展示使用的是echarts

主要功能:

1.登录功能

在这里插入图片描述
如图所示,此登录系统参考了一位前端大佬的,只修改了矢量图而已,并且只设计了登录功能,未设计注册功能,注册可以直接将数据添加到后台数据库中

2.用户管理

1.用户表的查(增删改功能未实现)

在这里插入图片描述
如图所示,使用的是layui的数据表格框架,非常实用

查功能:
在这里插入图片描述

3.用户分布

在这里插入图片描述
使用的是echarts来显示各省市的用户分布情况,其数据也是和后台数据库实时更新的

3.球员管理

1.对球员表进行增删改查

查功能:
在这里插入图片描述
修改功能:
在这里插入图片描述
添加功能:
在这里插入图片描述
删除功能:
在这里插入图片描述
注意点:球员的队伍名实际是参照球队表的主键id,然后显示的时候是用连接查询来显示队伍名的,所以在添加球员时其队伍id必须是真实存在在球队表中的
在这里插入图片描述

4.球队管理

1.球队表(增删改查)

在这里插入图片描述
主要功能和球员管理一样

2.胜率图

在这里插入图片描述
根据表中的字段夺冠胜率实时更新的

说明:球队表中的当家球星也是引用球员表的主键id,因此球队表和球员表实际上是相互引用和参照的关系
在这里插入图片描述

5.比赛管理

主要功能对比赛的增删改,对事件的添加,详细使用可以看B站视频

在这里插入图片描述
至于有些功能还未实现,比如右上角的对于用户个人信息的查看,密码修改等功能,因为本系统注重于比赛系统的设计,对于用户的设计并不是重中之重,所以就放弃了设计这个功能

项目使用教程

1.配置php运行环境

下载phpstudy,随便一篇博客均可http://t.csdn.cn/E4MGo

2.安装好阿帕奇和mysql

要求:这两项能正常启动(如果mysql版本不对或者和本机mysql造成冲突的自行上网搜资料解决,一般可以改端口)

在这里插入图片描述

如何判断mysql能否使用,如果使用Navicat可以在连接mysql进行连接测试

在这里插入图片描述
在这里插入图片描述

3.创建域名

注意这四个地方

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3eevFhW-1671515479790)(C:\Users\86159\AppData\Roaming\Typora\typora-user-images\1671371474333.png)]

端口号不一定为85,不为80且其他常用端口都行

注意,根目录要放在phpstudy安装的WWW目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6brWsRLj-1671515479791)(C:\Users\86159\AppData\Roaming\Typora\typora-user-images\1671371557113.png)]

这里需要将worldcup项目直接复制进WWW内,建议新建一个worldcup文件夹再将压缩包解压到文件夹内

最终目录如下

因此在phpstudy中选择根目录时直接选择这个文件夹即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vn5pK8jv-1671515479791)(C:\Users\86159\AppData\Roaming\Typora\typora-user-images\1671371711903.png)]

然后最后的php版本推荐5.4

4.创建数据库

两种方式,一种是在phpstudy创建,不过完成此操作需要修改root密码,如果在这里创建数据库需要记住用户名和密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RRrsw6XY-1671515479791)(C:\Users\86159\AppData\Roaming\Typora\typora-user-images\1671371775841.png)]

第二种直接在mysql导入提前准备好的worldcup.sql文件,里面已经包括了创建数据库,创建表,实体完整性和参照完整性和用户自定义完整性和一些基础的数据,以及触发器和存储过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMv4EGHx-1671515479792)(C:\Users\86159\AppData\Roaming\Typora\typora-user-images\1671371987508.png)]

5.修改php的数据库连接配置

打开项目中的mysqli_connect.php文件,只需将这四部分修改成对应创建数据库的参数即可连接成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xF1gyKL0-1671515479792)(C:\Users\86159\AppData\Roaming\Typora\typora-user-images\1671372080254.png)]

6.导入数据

第一步,导入球队数据,直接在相应的表导入球队表.csv

第二步,导入球员数据,步骤同上

第三步,导入用户数据

直接运行以下python程序自动生成1000个用户数据(注意修改其中的mysql连接配置)

import random as r
import time
import pymysql
import random


def random_name():
    # 删减部分,比较大众化姓氏
    firstName = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻水云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳鲍史唐费岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅卞齐康伍余元卜顾孟平" \
                "黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计成戴宋茅庞熊纪舒屈项祝董粱杜阮席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田胡凌霍万柯卢莫房缪干解应宗丁宣邓郁单杭洪包诸左石崔吉" \
                "龚程邢滑裴陆荣翁荀羊甄家封芮储靳邴松井富乌焦巴弓牧隗山谷车侯伊宁仇祖武符刘景詹束龙叶幸司韶黎乔苍双闻莘劳逄姬冉宰桂牛寿通边燕冀尚农温庄晏瞿茹习鱼容向古戈终居衡步都耿满弘国文东殴沃曾关红游盖益桓公晋楚闫"
    # 百家姓全部姓氏
    # firstName = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平" \
    #             "黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董粱杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经房裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮" \
    #             "龚程嵇邢滑裴陆荣翁荀羊於惠甄麴家封芮羿储靳汲邴糜松井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭厉戎祖武符刘景詹束龙叶幸司韶郜黎蓟薄印宿白怀蒲邰从鄂索咸籍赖卓蔺屠蒙池乔阴欎胥能苍" \
    #             "双闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍舄璩桑桂濮牛寿通边扈燕冀郏浦尚农温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎戈廖庾终暨居衡步都耿满弘匡国文寇广禄阙东殴殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空" \
    #             "曾毋沙乜养鞠须丰巢关蒯相查後荆红游竺权逯盖益桓公晋楚闫法汝鄢涂钦归海帅缑亢况后有琴梁丘左丘商牟佘佴伯赏南宫墨哈谯笪年爱阳佟言福百家姓终"
    # 百家姓中双姓氏
    firstName2 = "万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳淳于单于太叔申屠公孙仲孙轩辕令狐钟离宇文长孙慕容鲜于闾丘司徒司空亓官司寇仉督子颛孙端木巫马公西漆雕乐正壤驷公良拓跋夹谷宰父谷梁段干百里东郭南门呼延羊舌微生梁丘左丘东门西门南宫南宫"
    # 女孩名字
    girl = '秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽'
    # 男孩名字
    boy = '伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘'
    # 名
    name = '中笑贝凯歌易仁器义礼智信友上都卡被好无九加电金马钰玉忠孝'
    # 10%的机遇生成双数姓氏
    if random.choice(range(100)) > 10:
        firstName_name = firstName[random.choice(range(len(firstName)))]
    else:
        i = random.choice(range(len(firstName2)))
        firstName_name = firstName2[i:i + 2]

    sex = random.choice(range(2))
    if sex > 0:
        last_name = girl[random.choice(range(len(girl)))]
    else:
        last_name = boy[random.choice(range(len(boy)))]
    return firstName_name, last_name

def phone():
    # 随机手机号
    prelist = ["130", "131", "132", "133", "134", "135", "136", "137", "138", "139",
               "147", "150", "151", "152", "153", "155", "156", "157", "158", "159",
               "185", "187", "188", "189"]
    # print(random.choice(prelist) + "".join(random.choice("0123456789") for i in range(8)))
    num2 = r.choice(prelist) + ''.join(r.choice('0123456789') for i in range(8))
    return num2

def addres():
    # 随机地址
    preaddres = ["北京","天津","上海","重庆","河北","河南",
                 "云南","辽宁","黑龙江","湖南","安徽","山东","新疆","江苏","浙江","江西"
                 ,"湖北","广西","甘肃","山西","内蒙古","陕西","吉林","福建","贵州","广东","青海","西藏","四川",
                 "宁夏","海南","台湾","香港","澳门"]
    num2 = r.choice(preaddres)
    return num2


a1=(1976,1,1,0,0,0,0,0,0) #设置开始日期时间元组(1976-01-01 00:00:00)

a2=(2010,12,31,23,59,59,0,0,0) #设置结束日期时间元组(1990-12-31 23:59:59)

start=time.mktime(a1) #生成开始时间戳

end=time.mktime(a2) #生成结束时间戳

#随机生成10个日期字符串

name=[]
passwd1=[]
gender1=[1,2]
for i in range(1000):
    firstName_name, last_name = random_name()
    name2=(firstName_name + last_name).rstrip() #去掉末尾空格后的名字
    if name2 not in name: #名字存入列表中,且没有重名
        name.append(name2)
        

cur = conn.cursor()
for i in range(97, 123):
    passwd1.append(chr(i))  # 得到字母字符并放入列表
for i in range(48, 58):
    passwd1.append(chr(i))  # 得到数字字符并放入列表
for i in range(len(name)): #插入数据
    age=random.randint(10,100)
    vote=random.randint(1,32)
    t = random.randint(start, end)  # 在开始和结束时间戳中随机取出一个
    date_touple = time.localtime(t)  # 将时间戳生成时间元组
    date = time.strftime("%Y-%m-%d", date_touple)  # 将时间元组转成格式化字符串(1976-05-21)
    str1 = ''.join(random.choices(passwd1, k=8))  # 随机生成8位密码的列表,并将其转换成字符串的形式
    gender=r.choice(gender1)
    cur.execute("insert into user(userName,userPassword,gender,birthday,age,voteTeam,phone,address) values(%s,%s,%s,%s,%s,%s,%s,%s)",(name[i],str1,gender,date,age,vote,phone(),addres()))#注意用法

cur.execute('select * from user') #查询数据

for s in cur.fetchall():
    print(s)

conn.commit()
cur.close()
conn.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101

开头需要连接数据库,代码如下,修改对应参数即可在这里插入图片描述

7.开始使用

最后在本地计算机随便一个浏览器输入刚才创建的域名加上端口号即可正常使用本系统

如果还不能使用建议网上查找如何运行php项目的教程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/684795
推荐阅读
相关标签
  

闽ICP备14008679号