團隊名稱-衝刺日誌(第六天)
阿新 • • 發佈:2021-06-27
這個作業屬於哪個課程 | 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群總之就是瘋狂問,問問題又不收費 | 使用者部分的實現 |
陳強 | / | / | / |
黎志洋 | / | / | / |
羅宇樑 | / | / | / |
喻達龍 | / | / | / |
陳子揚 | / | / | / |
(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% |