一、项目技术
开发语言:PHP
框架:原生php/thinkphp5
服务器:Apache
数据库:mysql 5.7
数据库工具:Navicat 11
运行软件:小皮phpStudy
浏览器:谷歌浏览器
二、项目内容和功能介绍
在追求健康与美的时代,女大学生群体对于身材管理和健康饮食愈发关注。PHP 女大学生卡路里跟踪与分析系统专为这一群体量身打造,通过便捷的功能与精准的数据处理,助力女大学生轻松掌握每日卡路里摄入与消耗情况,科学管理身材,养成健康生活习惯。
(一)后端开发(PHP 语言)
1.框架选用:
1.优先选取如 Laravel 或 ThinkPHP 等成熟且高效的 PHP 开发框架,借助其强大的路由功能,精准定义系统各个页面与功能模块的访问路径,确保用户请求能迅速准确地被相应控制器捕获处理。以模型 - 视图 - 控制器(MVC)架构模式为基石,清晰划分业务逻辑、数据处理与页面呈现的职责边界,极大提升代码的可读性、可维护性与扩展性。例如,在处理用户注册流程时,控制器接收前端提交的注册信息,调用模型层的验证方法校验学号唯一性、手机号码格式合法性,验证通过后将数据传递至数据库操作层完成存储,视图层则负责渲染注册成功提示页面,各环节紧密协作,有条不紊。
1.数据库交互:
1.选用 MySQL 或 PostgreSQL 等性能卓越的关系型数据库存储核心数据。精心设计用户表(包含用户 ID、学号、姓名、手机号码、身高、体重、年龄、注册时间、个人简介等字段)、食物表(食物 ID、食物名称、卡路里含量、食物分类、品牌、营养成分等字段)、饮食记录表(记录 ID、用户 ID、食物 ID、进食时间、进食量、摄入卡路里等字段)、运动表(运动 ID、运动名称、运动强度、卡路里消耗系数、运动描述等字段)、运动记录表(记录 ID、用户 ID、运动 ID、运动时间、运动消耗卡路里等字段)、目标表(目标 ID、用户 ID、目标类型、目标数值、开始时间、结束时间等字段)、管理员表(管理员 ID、姓名、联系方式、权限等级等字段)等多个数据表,依据业务逻辑合理构建主键、外键关联,实现数据的高效整合查询与深度分析。运用 PHP 的数据库扩展库(如 PDO 或 MySQLi),娴熟执行数据的增删改查操作,保障数据存储与读取的精准、及时。
1.接口设计:
1.严格遵循 RESTful 风格设计接口,保障前后端数据交互的流畅、规范。前端通过 GET 请求获取食物详情、运动消耗数据、社交圈子动态等,POST 请求用于提交用户注册、饮食记录、运动记录等操作,PUT 请求更新用户资料、目标设定等,DELETE 请求实现删除过期记录、退出社交活动等功能。接口设计兼顾前瞻性与扩展性,各接口紧密对应特定资源操作,为后续系统功能迭代升级预留充足空间。例如,当系统计划拓展在线直播健身课程功能时,只需依循既有接口设计规范,新增相应接口,即可无缝衔接前端与后端,高效实现功能拓展,不对现有系统架构造成冲击。
(二)前端开发
1.界面设计:
1.融合 HTML、CSS 和 JavaScript 技术,搭配 Vue.js 或 React 等前沿前端框架,匠心打造极致用户体验的界面。用户端聚焦卡路里管理便捷、社交互动活跃、视觉呈现美观,首页以健康目标进度醒目展示吸引目光,饮食记录操作简单,运动记录输入方便,社交圈子图文并茂;管理员端侧重系统运维精准、监管有力、决策辅助直观,系统配置界面严谨细致,用户管理数据可视化呈现,数据统计图表助力决策。同时,充分利用前端框架的自适应特性,针对桌面电脑、笔记本、平板电脑、手机等各类屏幕尺寸精细优化,确保页面布局合理、交互流畅,全方位适配用户多元访问场景。
1.交互功能实现:
1.巧用 JavaScript 在前端环境巧妙实现多元交互功能。用户注册登录时,前端实时校验输入信息合法性,如学号格式、手机号码长度,提交注册登录后,凭借 AJAX 技术或前端框架内置网络请求机制与后端紧密对接,实现页面无刷新更新,将注册登录数据安全、迅速送达服务器;用户录入饮食记录时,前端实时校验食物选择合理性、进食量数值范围,展示录入进度条,记录提交后通过网络请求与后端交互精准触发计算与统计流程;用户参与社交互动时,前端实现评论发表实时显示、点赞动画效果、帖子刷新无卡顿等功能,且在整个交互过程中,与后端 PHP 应用始终遵循 HTTP 协议交互,采用 JSON 数据格式传输数据。如前端向后端发送食物查询请求时,将查询条件(如食物名称、卡路里范围等)封装成 JSON 格式发送,后端处理后,处理后返回结果,前端据此渲染页面。同时,在用户修改信息、取消操作等交互流程中,严格遵循 HTTP 协议与数据格式规范,确保前后端交互安全、稳定、高效,为系统的流畅运行筑牢根基。
三、核心代码
部分代码:
require_once("./config.php");
class CommonController{
public function __construct()
{
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
header('Access-Control-Allow-Headers:Origin,Content-Type,Accept,token,X-Requested-With,device');
}
//公共方法文件
/**
* 获取头部token
**/
public function token(){
$token = $_SERVER['HTTP_TOKEN'];
if (!$token){
return false;
}
return $token;
}
/**
* 验证token和查询用户id
**/
public function checkToken(){
$token = $this->token();
$uid = $_SESSION[$token];
if (empty($uid)) return false;
return $uid;
}
/**
* curl请求
* post
* */
public function request_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
}
$postUrl = $url;
$curlPost = $param;
$curl = curl_init();//初始化curl
curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);// 设置是否检查服务器端的证书
$data = curl_exec($curl);//运行curl
curl_close($curl);
return $data;
}
/**
* 字段 累加
* $tables 数据表
* $id 数据id
* $column 字段
* $num 累加值
* */
public function andone($tables,$id,$column,$num=1){
$sqlcheck = "select `id`,`".$column."` from `".$tables."` where `id` =".$id;
$dataCheck = table_sql($sqlcheck);
$rows = 0;
while($row = $dataCheck->fetch_assoc()) {
$rows = $row[$column];
}
$sum = round($rows+$num);
$sql = "update `".$tables."` set ".$column." = ".$sum." where `id` =".$id;
table_sql($sql);
return true;
}
}
四、效果图