团队任务描述:
在确定完分组,并对于敏捷开发做了相应的了解之后,我们团队开始了第一次的冲刺。对于我们团队的第一次的Scrum冲刺,我们团队开展了团队会议。首先,我们明确了我们的目标,对其进行了相对初步的规划。其次,对我们的任务进行了分解,针对团队成员的特点,兴趣爱好以及擅长的方面进行了大致的分工。每个人完成自己的那部分,然后把大家的内容都结合在一起,一步一步的完成第一次确定的任务需求。
用户故事
xx璇总是不想自己那快递,于是注册了一个账号,让别人帮自己领快递。
xx璇完成了注册,于是登陆了快递代领系统。
团队分工情况说明:
1.谢翊璇———————模拟客户
2.全超—————————产品负责人
3.郑舒壬———————Scrum负责人
4.唐祥安———————需求分析
5.谭轲、齐博————前端、后端程序
6.刘魁、郑盛渤——数据库编程
团队第一次任务完成情况描述:
1.初步确定了需求。
2.类图和活动图。
3.数据库存储用户数据的表建立。
4.用户数据的增删改查代码完成。
用例图:
活动图:
个人任务描述:
完成用户登录、注册的前后端。
个人任务完成情况描述:
datebase.php文件
- 作用:连接数据库,以及数据库相关函数
- 语言:php、mysql
reg.php文件
- 作用:用户注册,包含前段和后端
- 语言:php、mysql、html、js
login.php文件
- 作用:用户登录,包含前段和后端
- 语言:php、mysql、html、js
user.css
- 作用:用户登录、注册页面的样式
- 语言:css
captcha.php
- 作用:用户注册页面的验证码
- 语言:php
用户登录
用户注册
部分代码预览
用户登录页面代码预览:
<script>
$(document).ready(function(){
//页面加载完成后 执行以下代码
//alert($(".text").length);
$("#cmdLogin").css("display","inline-block");
$("#cmdLogin").click(function(){
if(isBlank("txtUserName","red"))
{
alert("用户名不能为空");
return false;//阻止了 submit行为
}
if(isBlank("txtUserPwd","blue"))
{
alert("密码不能为空");
return false;//阻止了 submit行为
}
})
})
</script>
<div class="main-body">
<div class="login">
<form method="post">
<table class="mytable regtable">
<tr>
<th></th>
<th class="righttd">用户登录</th>
</tr>
<tr>
<td class="lefttd">用户名:</td>
<td class="righttd"><input type="text" name="userName" id="txtUserName" class="text"/></td>
</tr>
<tr>
<td class="lefttd">密码:</td>
<td class="righttd"><input type="password" name="userPwd" id="txtUserPwd" class="text"/></td>
</tr>
<tr>
<td></td>
<td class="righttd" >
<input type="submit" value="登录" name="cmdLogin" id="cmdLogin" class="readyShow" />
</td>
</tr>
<tr>
<td></td>
<td>没有账号?<a href="index.php?type=reg">请注册</a></td>
</tr>
<?php
if ($_POST){
$name=I('userName','post','html');
$password=I('userPwd','post','string');
$sql="SELECT `user_id`,`user_name`,`user_pwd` FROM `user` WHERE user_name='$name'";
$user=do_query($sql);
$row=mysqli_fetch_array($user);
if ($row){
if ($password==$row['user_pwd']){
$_SESSION['user']=['id'=>$row['user_id'],'name'=>$row['user_name'],'pwd'=>$row['user_pwd']];
redirect('index.php?type=comment');
} else echo " <tr>
<td></td>
<td>账号或密码错误</td>
</tr>";
}
else echo " <tr>
<td></td>
<td>用户名不存在</td>
</tr>";
}
?>
</table>
<script>
</script>
</form>
</div></div>
验证码部分代码:
public function captcha_create($count=5){
$charset = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; //随机因子
$code = ''; //保存生成的验证码
//生成随机码
$len = strlen($charset) - 1;
for($i=0; $i<$count; $i++) {
$code .= $charset[rand(0, $len)];
}
return $code; //返回验证码文本
}
//生成验证码$count表示生成位数
public function captcha_show($code){
//创建图片资源
$im = imagecreate($x=250, $y=62);
//随机生成背景颜色
imagecolorallocate($im, rand(50,200), rand(0,155), rand(0,155));
//设置字体颜色和样式
$fontColor = imagecolorallocate($im, 255, 255, 255);
$fontStyle = "../tpl/file/captcha.ttf";
//生成指定长度的验证码
for($i=0, $len=strlen($code); $i<$len; ++$i){
imagettftext($im,
30, //字符尺寸
rand(0,20) - rand(0,25), //随机设置字符倾斜角度
32 + $i*40, rand(30,50), //随机设置字符坐标
$fontColor, //字符颜色
$fontStyle, //字符样式
$code[$i] //字符内容
);
}
//添加8个干扰线
for($i=0; $i<8; ++$i){
//随机生成干扰线颜色
$lineColor = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
//随机生成干扰线
imageline($im, rand(0, $x), 0, rand(0, $x), $y, $lineColor);
}
//添加250个噪点
for($i=0; $i<250; ++$i) {
//随机生成噪点位置
imagesetpixel($im, rand(0, $x), rand(0, $y), $fontColor);
}
//设置发送的信息头内容
header('Content-type:image/png');
//输出图片
imagepng($im);
//释放图片所占内存
imagedestroy($im);
}
}