团队名称-冲刺日志(第六天)

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018/homework/12064
这个作业的目标 清晰自己的项目到底进行到了哪一天,完成度到底如何
小组的组号和队名 第二组冰菓不是冰葉组
小组的队长姓名 贺勇

SCRUM部分:

每个成员描述:

(1)我今天的进度(完成了哪些任务,花了多少时间,还剩余多少时间),今天遇到了哪些问题,今天解决了哪些问题,(参见前面计划的要求),明天的计划。(可以以表格形式列出)

今天的进度 遇到的问题 解决问题方法 明天的计划
贺勇负责的管理员对查询到的数据进行增删改除 好多好多,点击无效,点击报错,点击后404都有,连接不到数据库都来了 在网上疯狂找资料,问了问强的离谱大佬,加了一些相关QQ群总之就是疯狂问,问问题又不收费 用户部分的实现
陈强 界面的设计和功能实现 界面的展示效果较差 查找相关的UI网站或者是特效网站 用户剩余部分功能
黎志洋 / / /
罗宇梁 / / /
喻达龙 / / /
陈子扬 / / /

(2)团队成员的工作如果是开发工作必须有代码签入,给出签入记录对应的Issue内容与链接,代码必须每天可执行(当天截屏,没有倒扣分)

代码

用户登录检测

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
	//public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";//定义数据库驱动程序
	public static final String DBURL = "jdbc:mysql://localhost:3306/mesige?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";//数据库链接地址
	public static final String DBUSER = "root";//数据库连接用户名
	public static final String DBPASS = "changw1164816347";//数据库连接密码
%>
<%
	Connection conn = null;//声明数据库连接对象
	PreparedStatement pstmt = null;//声明数据库操作
	ResultSet rs = null;//声明数据库结果集
	boolean flag = false;//定义标志位
	String name = null;//接受用户的真实姓名
	String acount = request.getParameter("acount");
    String password = request.getParameter("password");
%>
<%
	try {
		Class.forName(DBDRIVER);//加载驱动程序
		conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);//取得数据库连接
		//编写要使用的SqL语句,验证用户id和密码,如果正确,则取数真实姓名
		String sql = "SELECT admId FROM userinformation WHERE acount=? AND passwords=?";
		System.out.print("ssss");
		pstmt = conn.prepareStatement(sql);//实例化数据库操作对象
		pstmt.setString(1,acount);//设置查询所需的内容
		pstmt.setString(2,request.getParameter("password"));//设置查询所需的内容
		rs = pstmt.executeQuery();//执行查询
		if (rs.next()) {//如果可以查询到,则表示合法用户
			name = rs.getString(1);//取出真实姓名
			System.out.print(name);
			flag = true;//修改标志位,如果为true,表示登陆成功
		}
	} catch (Exception e) {
		System.out.println(e);
	} finally {
		try {//关闭操作会抛出异常,使用try catch处理
			rs.close();//关闭查询对象
			pstmt.close();//关闭操作对象
			conn.close();//关闭数据库连接
		} catch (Exception e) {}
	}
%>
<%
	if (flag&&acount!=""&&password!="") {//登陆成功,跳转到成功页面
%>
		<jsp:forward page="newinterface.jsp">
		    <jsp:param name="username" value="<%=name%>"/>
		</jsp:forward>
<%
	} else {//登陆失败,跳转到失败页面
%>
		<h1>账号或密码错误</h1>
<%	
	}
%>
</body>
</html>

注册账号

   <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册界面</title>
    <link rel="stylesheet" href="CSS/register.css">
</head>
<body>
 <div class="container">
        <h4>账户注册</h4>
        <form action="register2.jsp" method="POST">
            <div class="xt Admid">
                <label for="admId">
                    <span>平台账号<span>*</span></span>
                    <small></small>
                </label>
                <input type="text" name="admId1" id="admId"/>
            </div>
            <div class="xt Acount">
                <label for="acountt">
                    <span>用户名<span>*</span></span>
                    <small></small>
                </label>
                <input type="text" name="acount" id="acountt"/>
                <span>(最好填学号)</span>
            </div>
            <div class="xt email">
                <label for="E-mail">
                    <span>E-mail<span>*</span></span>
                    <small></small>
                </label>
                <input type="text" name="Email" id="E-mail"/>
                <span>请确保邮件的真实性,方便交流</span>
            </div>
            <div class="xt ps">
                <label for="passwordd">
                    <span>密码<span>*</span></span>
                    <small></small>
                </label>
                <input type="password" name="password" id="passwordd"/>
            </div>
            <div class="xt ps">
                <label for="passwordd">
                    <span>再次输入密码<span>*</span></span>
                    <small></small>
                </label>
                <input type="password" name="password" id="passwordd"/>
            </div>
            
            <input type="submit" value="注册" class="xt"/>
        </form>
    </div>
    <script>
    var i=document.createElement("i");
i.style.cssText="color: #dc3545"
var input=document.getElementsByTagName("input");
var Csstext="26px 26px 32px #489dcf, -26px -26px 32px #62d5ff, -26px -26px 32px #489dcf, 26px 26px 32px #62d5ff";
var T1=false;
var T2=false;
var T3=false;
var T4=false;
var T5=false;
if(input[0].value!=""){
    T1=true;
}
if(input[1].value!=""){
    T1=true;
}
if(input[2].value!=""){
    T1=true;
}
if(input[3].value!=""){
    T1=true;
}

input[0].onclick = function() {
    console.log("sd");
    input[0].style.cssText="box-shadow: #007bff 5px 5px 3px,#007bff -5px -5px 3px,#007bff -5px 5px 3px,#007bff 5px -5px 3px;";
};
input[0].onblur = function() {
    input[0].style.cssText="box-shadow: none";
    if(input[0].value==""&&T1==false){
        i.innerText="必选";
        var small=document.getElementsByTagName("small")[0];
        small.appendChild(i);
        // small.html("<i>必选</i>")
    }else {
        i.innerText="";
    }
};


var i2=document.createElement("i");
i2.style.cssText="color: #dc3545";

input[1].onclick = function() {
    console.log("sd");
    input[1].style.cssText="box-shadow: #007bff 5px 5px 3px,#007bff -5px -5px 3px,#007bff -5px 5px 3px,#007bff 5px -5px 3px;";
};
input[1].onblur = function() {
    input[1].style.cssText="box-shadow: none";
    if(input[1].value==""&&T2==false){
        i2.innerText="必选";
        var small=document.getElementsByTagName("small")[1];
        small.appendChild(i2);
        // small.html("<i>必选</i>")
    }else {
        i2.innerText="";
    }
};

var i3=document.createElement("i");
i3.style.cssText="color: #dc3545";
input[2].onclick = function() {
    // console.log("sd");
    input[2].style.cssText="box-shadow: #007bff 5px 5px 3px,#007bff -5px -5px 3px,#007bff -5px 5px 3px,#007bff 5px -5px 3px;";
};
input[2].onblur = function() {
    let reg_email = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;
    input[2].style.cssText="box-shadow: none";
    if(!reg_email.test(input[2].value)){
        i3.innerText="邮箱不正确";
        if(input[2].value==""&&T3==false){
            i3.innerText="必选";
        }
        var small=document.getElementsByTagName("small")[2];
        small.appendChild(i3);
        // small.html("<i>必选</i>")
    }else {
        i3.innerText="";
    }
};


var i4=document.createElement("i");
i4.style.cssText="color: #dc3545";
input[3].onclick = function() {
    console.log("sd");
    input[3].style.cssText="box-shadow: #007bff 5px 5px 3px,#007bff -5px -5px 3px,#007bff -5px 5px 3px,#007bff 5px -5px 3px;";
};
input[3].onblur = function() {
    input[3].style.cssText="box-shadow: none";
    if(input[3].value==""&&T4==false){
        i4.innerText="必选";
        var small=document.getElementsByTagName("small")[3];
        small.appendChild(i4);
        // small.html("<i>必选</i>")
    }else {
        i4.innerText="";
    }
}


var i5=document.createElement("i");
i5.style.cssText="color: #dc3545";
input[4].onclick = function() {
    
    input[4].style.cssText="box-shadow: #007bff 5px 5px 3px,#007bff -5px -5px 3px,#007bff -5px 5px 3px,#007bff 5px -5px 3px;";
};
input[4].onblur = function() {
    console.log("sd");
    input[4].style.cssText="box-shadow: none";
    if(input[4].value!=input[3].value){
        i5.innerText="密码不相同";
        if(input[4].value==""&&T5==false){
            i5.innerText="必选";
            console.log(i5.innerText);
            // small.html("<i>必选</i>")
        }
        var small=document.getElementsByTagName("small")[4];
        small.appendChild(i5);
    }else {
        i5.innerText="";
    }
}
    </script>
</body>
</html>

商品展示界面

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import="dao.newinterfaceDAO"%>
<%@ page import="kechensheji.newinterfaces"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首页</title>
<link rel="stylesheet" href="CSS/newinterfacecss.css">
<base href="<%=basePath%>">

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta name="viewport" content="width=device-width,initial-scale=1.0">

</head>
<body>
<div class="container">
        <div class="header">
            <h2>二手交易平台</h2>
            <nav>
                <ul>
                    <li><a href="release.html">发布信息</a></li>
                    <li><a href="search2.jsp">搜索</a></li>
                    <li>账户名: <a href="Administration.jsp?admId=<%=request.getParameter("username")%>"><%=request.getParameter("username")%></a></li>
                </ul>
            </nav>
        </div>
        <div class="main">   
          <%
            newinterfaceDAO itemsDao = new newinterfaceDAO();
            ArrayList<newinterfaces> list = itemsDao.getAllnewinterfaces();
            if(list!=null&&list.size()>0){
                for(int i=0;i<list.size();i++){
                    newinterfaces item = list.get(i);
                    System.out.println("das");
          %>
           <div>
               <a href="information.jsp?id=<%=item.getGoodId()%>&name=<%=request.getParameter("username")%>"><img src="<%=item.getImg()%>"alt="照片"></a>
           </div>
          <!-- 商品循环结束  -->
          <%
                }
            }
           %>
        </div>
</div>
</body>
</html>

商品详细界面

<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.*"%>
<%@ page import="dao.newinterfaceDAO" %>
<%@ page import="kechensheji.newinterfaces"  %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

    <base href="<%=basePath%>">
    <link rel="stylesheet" href="CSS/information.css">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
<title>信息</title>
</head>
<body>
        <div class="container">
        <%
            newinterfaceDAO itemsDao = new newinterfaceDAO();
            newinterfaces item = itemsDao.getNewinterfaceById(Integer.valueOf(request.getParameter("id")));
            //newinterfaces item = itemsDao.getNewinterfaceById(Integer.valueOf(1));
            if(item!=null){
         %>
            <div id="box">
                <img src="<%=item.getImg()%>" width="200" height="200">
                <div id="move"></div>
                <div id="bimg">
                	 <img src="<%=item.getImg()%>" id="b_bimg">
                </div>
            </div>
            <div>
            <div>
            <span>商品编号:</span><p><%=item.getGoodId()%></p>
            </div>
            <div>
            <span>商品标题:</span><p><%=item.getTopic() %></p>
            </div>
            <div>
            <span>商品类型:</span><p><%=item.getTtype() %></p>
            </div>
            <div>
            <span>商品价格:</span><p><%=item.getPrice() %></p>
            </div>
            <div>
            <span>电子邮箱:</span><p><%=item.getEmail() %></p>
            </div>
         <%
            }
         %>
         <script> 
             var bbox = document.getElementById("box");
             var bmove = document.getElementById("move");
             var bbimg = document.getElementById("bimg");
             var b_bimg = document.getElementById("b_bimg");
             
             bbox.onmouseover = function(){//鼠标移动到box上显示大图片和选框
                 bbimg.style.display = "block";
                 bmove.style.display = "block";
             }
             
             bbox.onmouseout = function(){//鼠标移开box不显示大图片和选框
                 bbimg.style.display = "none";
                 bmove.style.display = "none";
             }
             
             bbox.onmousemove = function(e){
            	 var x = e.clientX;//鼠标相对于视口的位置
                 var y = e.clientY;
                 var t = bbox.offsetTop;//box相对于视口的位置
                 var l = bbox.offsetLeft;
                 var _left = x - l - bmove.offsetWidth/2;//计算move的位置
                 var _top = y - t -bmove.offsetHeight/2;	
                 if(_top<=0){//滑到box的最顶部
                   _top = 0;
                 }
                 else if(_top>=bbox.offsetHeight-bmove.offsetHeight)//滑到box的最底部
                   _top = bbox.offsetHeight-bmove.offsetHeight ;
                 if(_left<=0){//滑到box的最左边
                   _left=0;
                 }
                 else if(_left>=bbox.offsetWidth-bmove.offsetWidth)//滑到box的最右边
                   _left=bbox.offsetWidth-bmove.offsetWidth ;
                 bmove.style.top = _top +"px";//设置move的位置
                 bmove.style.left = _left + "px";
                 var w = _left/(bbox.offsetWidth-bmove.offsetWidth);//计算移动的比例
                 var h = _top/(bbox.offsetHeight-bmove.offsetHeight);
                 var b_bimg_top = (b_bimg.offsetHeight-bbimg.offsetHeight)*h;//计算大图的位置
                 var b_bimg_left = (b_bimg.offsetWidth-bbimg.offsetWidth)*w;
                 b_bimg.style.top = -b_bimg_top + "px";//设置大图的位置信息
                 b_bimg.style.left = -b_bimg_left + "px";
             }
             
         </script>
          <!--  <input type="button" value="添加"> -->
           <!--<span><a href="message2.jsp?name=<%=request.getParameter("name")%>" style="text-decoration: none;">发表留言</a></span>-->
    </div>
</body>
</html>

截图

一、登陆界面

二、注册界面

三、商品界面

四、商品详细界面

1.放大功能

(3)团队成员的工作如果是测试等其他工作,那要有具体的结果(截屏,测试报告等)

测试详情见测试总结

(4)SCRUM 会议的照片一张,会议照片应该是每天冲刺会议的真实非摆拍照片,可以挡住脸保护隐私。照片如果出现复用的情况倒扣分。

(5)至少一张项目程序/模块的最新(运行)截图。

登陆前

登陆后

注册前

注册后


PM 报告:

(1)整个项目预期的任务量 (任务量 = 所有工作的预期时间)和 目前已经花的时间 (所有记录的 ‘已经花费的时间’),还剩余的时间(所有工作的 ‘剩余时间’)

任务量完成度 已花费时间 剩余时间
十分之六 七天半 四天半

(2)PM 画出燃尽图

(3)画出一个“任务总量变化线”,体现在工作中发现了多少以前没有想到的事情。

工作中发现了多少以前没有想到的事情:商品的布局不够美观,所以将其改为瀑布流式的布局

(4)表格形式列出每名成员的贡献比

小组成员 贡献比
贺勇 18%
陈强 24%
喻达龙 16%
罗宇梁 16%
陈子杨 16%
黎志洋 16%
posted @ 2021-06-27 17:28  冰菓不是冰葉  阅读(68)  评论(0)    收藏  举报