期末作业.php
header ("Content-type:text/html;charset=utf-8");
// 使用函数完成期末任务
//
/**
* 获得指定仓库的提交信息
* @param string $url 仓库地址,默认每次200个
* @return array 以数组形式返回提交的信息
*/
function getCommit($url='/api/v5/repos/DY12345678/DY/commits?=1&per_page=200') {
// 初始化curl工具
$ch = curl_init($url);
// 进行必要的配置
curl_setopt($ch, CURLOPT_HEADER, 0);
// 取消curl显示返回内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// 执行curl
$data = curl_exec($ch);
// 对data进行解码,将其从json格式转化为php数组
$data = json_decode($data, true);
curl_close($ch);
return $data;
}
// 使用函数输出每周作业提交次数
function getCommitByWeek(array $data) {
// 提取每一次作业的提交时间
$commitDate = array();
foreach ($data as $key => $value) {
$commitDate[$key] = strtotime($data[$key]['commit']['commiter']['date']);
}
return $commitDate;
}
/**
* 生成学期周次节点
* @param string $start 课程开始日期
* @return array 包含19周上课时间节点的数组
*/
function weekly($start = '-03-05') {
for ($i = 0; $i <20 ;$i++) {
$data[$i] = strtotime("+" . $i . " week", strtotime($start));
}
return $data;
}
/**
* 获取每周作业推送次数
* @param array $commits 学生作业推送信息数组
* @return array 学生每周作业推送次数
*/
function getCountByWeek(array $commitDate = array()) {
// 先得到学期时间节点
$week = weekly();
// 初始化数组
$array = array();
// 逐一比较
for ($i = 0; $i < 19; $i++) {
$array[$i] = 0;
foreach ($commitDate as $key => $value) {
if ($value >= $week[$i] && $value <= $week[$i + 1]) {
$array[$i]++;
}
}
}
return $array;
}
/**
* 生成作业总报告
* @param array $data 全部提交信息
* @return void
*/
function report(array $data, array $countByWeek) {
utf8();
echo '我的作业地址是:/DY12345678/DY.git' . '
';
echo '提交次数:' . count($data) . '次。
';
$num = 0;
$key = 0;
foreach ($countByWeek as $key => $value) {
echo '第' . ($key + 1) . '周提交作业' . $countByWeek[$key] . '次。
';
if($value > 0)
{
$num++;
}
}
echo '总共提交了'.$num.'次。
';
if($num*10 > 100)
$num = 100;
echo '最后期末得分'.($num*10).'分。
';
}
// 设置页面编码为utf-8
function utf8() {
header("Content-type:text/html;charset=utf-8");
}
// 取得指定仓库的提交信息
$data = getCommit('/api/v5/repos/DY12345678/DY/commits?page=1&per_page=200');
// var_dump($data);exit;
$commitDate = getCommitByWeek($data);
$countByWeek = getCountByWeek($commitDate);
$num = 0;
//report($data, $countByWeek);
?>
#app-1{
width: 80%;
margin:auto;
}
.btn{
cursor: pointer;
}
代炎的作业信息
<?php foreach ($countByWeek as $key => $value): ?>
<?php echo '第'.($key + 1).'周作业提交:
';
if($value > 0)
{
$num++;
}
?>
<?php echo $countByWeek[$key]?>平时成绩<?php
if($num > 10)
$num = 10;
echo ($num*10).'分'; ?>
一键复制
编辑
Web IDE
原始数据
按行查看
历史