您的位置 首页 新闻

PHP之校花评比项目

本文主要用到了以下内容 前端页面布局 使用 Jquery 控制页面效果和操作 Cookie 使用 Ajax 方式与后台交互 PHP 操作 MySQL 完成数据查询 PHP 实现埃洛…

本文主要用到了以下内容

前端页面布局 使用 Jquery 控制页面效果和操作 Cookie 使用 Ajax 方式与后台交互 PHP 操作 MySQL 完成数据查询 PHP 实现埃洛等级分系统算法

开启服务器

$ php -S localhost:8080 #端口可自定义 将localhost改成0.0.0.0可以在公网访问

项目制作

2.1 项目简介

评选过程:

介绍: 校花排名页面随机产生两个女生(名字做了处理) , 比较两个女生的颜值, 然后利用鼠标点击选择一个你认为较漂亮的女生,随后数据自动提交到数据后台处理, 页面会自动刷新,再次随机产生两个女生,再次选择比较, 依次达到不断更新颜值的作用。 上方进度条可以显示你的进度,当进行10次选择以后, 页面自动弹到排名页面, 显示美女排名 ,以及校花。

想法来自《社交网络》,所以这里教程的步骤也跟着扎克伯格的脚步来进行。

排名算法

数据库

首先按照上面提供的方法开启数据库服务。进入并创建数据库:

$ mysql -u root $ mysql> CREATE DATABASE beauty DEFAULT CHARSET utf8 COLLATE utf8_general_ci; $ mysql> use beauty;

设计 stu 数据表:

数据库存储女生信息.(id,姓名,图片,颜值)

CREATE TABLE `stu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu` varchar(255) DEFAULT NULL, `img` varchar(255) DEFAULT NULL, `score` int(20) NOT NULL DEFAULT ‘1400’, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=78 DEFAULT CHARSET=utf8; SET FOREIGN_KEY_CHECKS=1;

填充部分示例数据:

INSERT INTO `stu` VALUES (‘1’, ‘Mary’, ‘imgs/1.jpg’, ‘1400’), (‘2’, ‘Nancy’, ‘imgs/2.jpg’, ‘1400’), (‘3’, ‘Kacy’, ‘imgs/3.jpg’, ‘1400’), (‘4’, ‘Judegli’, ‘imgs/4.jpg’, ‘1400’), (‘5’, ‘Kacy1’, ‘imgs/7.jpg’, ‘1400’), (‘6’, ‘Judegli1’, ‘imgs/6.jpg’, ‘1400’);

前端布局

前端设计采用 bootstrap 响应式布局,适合任何设备使用。主要布局如下(具体看下载下来的页面代码):

index.php :

query($sql); while ($row = $result->fetch_assoc()) { $results[] = $row; } ?> Campus campus Belle ranking selection

0% Complete

$value) { ?>

Campus campus Belle ranking selection

www.shiyanlou.com

同理,在排名列表中,我们也需要做类似的处理展示:

ranklist.php :

query($sql); while ($row = $result->fetch_assoc()) { $results[] = $row; } ?> Campus campus Belle ranking selection

$value) { ?>

美女颜值排行表
SectionNameRankScore

PHP 后台处理

后台主要分为两个部分:数据库部分和颜值计算部分。

数据库操作辅助类

使用此类可以很方便的操作数据库。

DBMysql.php :

query(‘SET NAMES utf8’); return $dbc; } }

定义了一个数据库连接方法,使用 mysqli 建立mysql 连接,设置字符编码,返回连接对象。

颜值计算类

此类根据埃洛等级分系统设计算法,实现读取、计算、更新颜值的操作。

query($sql)); return $info[‘score’]; } public function updateScore($Ra,$id) { self::$db->query(“UPDATE `stu` SET `score` = $Ra WHERE `id` = $id”); } public function expect($Ra,$Rb) { $Ea = 1/(1+pow(10,($Rb-$Rb)/400)); return $Ea; } public function calculateScore($Ra,$Ea,$num) { $Ra = $Ra + self::$K*($num-$Ea); return $Ra; } public function selectStu() { $id1 = $_POST[‘stu1’]; $id2 = $_POST[‘stu2’]; $victoryid = $_POST[‘vid’]; return $this->getScore($id1,$id2,$victoryid); } public function getScore($id1,$id2,$victoryid) { $Ra = $this->queryScore($id1); $Rb = $this->queryScore($id2); if ($Ra & $Rb) { $Ea = $this->expect($Ra, $Rb); $Eb = $this->expect($Rb, $Ra); $Ra = $this->calculateScore($Ra, $Ea, 1-$victoryid); $Rb = $this->calculateScore($Rb, $Eb, $victoryid); $Rab = array($Ra,$Rb); $this->updateScore($Ra, $id1); $this->updateScore($Rb, $id2); return $Rab; } else { return false; } } } $Rank = new Rank(); $Rank->selectStu();

代码示例讲解:若前端页面展示的两位女生的 id 为 3 和 7,若用户选择 3,则 js 向后台传递的数据为 3,7,0,后台处理 女生 a 的 id 为3,女生 b 的 id 为7,获胜的 id 为 0 ,表示第一个获胜,则本轮真实得分 :a 的得分为 1,b 的得分为 0。计算调整后分数时:$Ra = $this->calculateScore($Ra, $Ea, 1); $Rb = $this->calculateScore($Rb, $Eb, 0);,代码中使用 1-$victoryid 和 $victoryid 来处理。

现在进入 Beauty 目录,开启 PHP 内置服务器,打开浏览器就可以看到效果了。

源码地址

校花排名项目

访问地址:Campus campus Belle ranking selection

参考链接:校花是怎么评出来的? – 实验楼

效果如下

本文来自网络,不代表Xnewv立场,转载请注明出处:https://xnewv.com/2267.html

为您推荐

联系我们

联系我们

18873343099

在线咨询: QQ交谈

邮箱: [email protected]

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部