版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 一、緒論- 3 -</p><p> 1.1概要描述- 3 -</p><p> 1.2 團(tuán)隊(duì)分工- 3 -</p><p> 二、 系統(tǒng)需求分析- 4 -</p><p> 2.1功能需求- 4 -</p><p> 三、系統(tǒng)設(shè)計(jì)- 6 -</p><p
2、> 3.1系統(tǒng)采用的邏輯以及物理結(jié)構(gòu)- 6 -</p><p> 3.2系統(tǒng)的開(kāi)發(fā)環(huán)境選擇- 6 -</p><p> 3.3系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)(個(gè)人負(fù)責(zé)程序涉及的數(shù)據(jù)庫(kù))- 6 -</p><p> 四、系統(tǒng)實(shí)現(xiàn)及測(cè)試- 9 -</p><p> 4.1系統(tǒng)模塊功能介紹- 9 -</p><p&g
3、t; 4.2系統(tǒng)實(shí)現(xiàn)過(guò)程中遇到的主要疑難問(wèn)題和解決方案- 17 -</p><p> 4.3系統(tǒng)實(shí)現(xiàn)的特色之處(包括技術(shù)和功能)- 18 -</p><p> 4.4 系統(tǒng)測(cè)試- 18 -</p><p> 五、總結(jié)- 18 -</p><p> 5.1不足- 18 -</p><p> 5.2
4、總結(jié)- 19 -</p><p> 參考文獻(xiàn)- 19 -</p><p><b> 附錄- 20 -</b></p><p><b> 一、緒論</b></p><p><b> 1.1概要描述</b></p><p> 課程設(shè)計(jì)管理系統(tǒng)
5、,實(shí)現(xiàn)課程信息管理的電子化,減輕管理人員的負(fù)擔(dān)。管理人員能夠很好對(duì)課程進(jìn)行管理。長(zhǎng)期以來(lái),學(xué)?;径际鞘褂脗鹘y(tǒng)人工的方式管理學(xué)生課程信息,效率低、保密性差,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,使用計(jì)算機(jī)來(lái)管理課程信息已經(jīng)成為發(fā)展趨勢(shì)。這樣可以提高學(xué)生選課和成績(jī)管理工作的效率,圍繞此管理所需要的學(xué)生個(gè)人信息、課程和任課教師信息、所選課程信息進(jìn)行管理及維護(hù)。</p><p><b> 1.2 團(tuán)隊(duì)分工</b
6、></p><p><b> 二、 系統(tǒng)需求分析</b></p><p><b> 2.1功能需求</b></p><p> 系統(tǒng)整體的用例圖如下:</p><p> 圖2.1 系統(tǒng)用例圖</p><p> 管理員對(duì)課程信息進(jìn)行增加、刪除、編輯和查看;教師打印
7、選課學(xué)生名單、班級(jí)成績(jī)表、查看課程;學(xué)生可以查看自己已選課程的成績(jī)、打印班級(jí)課程表、查詢課程。需要注意的是,由于課程設(shè)計(jì)任務(wù)書表達(dá)的不明確,所以我們將管理員和教師的功能合并到教師角色中。數(shù)據(jù)流圖如下:</p><p><b> 圖2.2 數(shù)據(jù)流圖</b></p><p><b> 圖2.3 數(shù)據(jù)流圖</b></p><p&
8、gt;<b> 三、系統(tǒng)設(shè)計(jì)</b></p><p> 3.1系統(tǒng)采用的邏輯以及物理結(jié)構(gòu)</p><p><b> 圖3.1</b></p><p> 3.2系統(tǒng)的開(kāi)發(fā)環(huán)境選擇</p><p> ?。?)使用web的開(kāi)發(fā)環(huán)境是myeclipse 10;</p><p>
9、; ?。?)數(shù)據(jù)庫(kù)使用的是SQL sserverr 2008。</p><p> 3.3系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)(個(gè)人負(fù)責(zé)程序涉及的數(shù)據(jù)庫(kù))</p><p> 表3.1 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)</p><p> 表3.2 班級(jí)信息表class</p><p> 表3.3 教師信息表teacher</p><p> 表3.4
10、院系信息表college</p><p> 表3.5 課程信息表class</p><p> 表3.6 學(xué)生信息表student</p><p> 表3.7 選課信息表xuanke</p><p> 表3.8 選課表 xuanke</p><p> 圖3.2 E-R關(guān)系圖</p><p
11、><b> 四、系統(tǒng)實(shí)現(xiàn)及測(cè)試</b></p><p> 4.1系統(tǒng)模塊功能介紹</p><p><b> 用戶身份:教師</b></p><p> 當(dāng)用戶登錄系統(tǒng)后,如果他的身份是管理員,那么他可以對(duì)學(xué)生信息進(jìn)行增加、刪除、修改和查詢。</p><p><b> 圖4.1
12、</b></p><p> 以下代碼為循環(huán)讀出數(shù)據(jù)庫(kù)總學(xué)生信息值:</p><p><b> <% </b></p><p> while(rs.next()){</p><p><b> %></b></p><p><b> &
13、lt;tr></b></p><p> <td><%=rs.getString("num") %></td></p><p> <td><%=rs.getString("name") %></td></p><p> <td&
14、gt;<%=rs.getString("sex") %></td></p><p> <td><%=rs.getString("birth") %></td></p><p> <td><%=rs.getString("jg") %></
15、td></p><p> <td><%=rs.getString("mz") %></td></p><p> <td><%=rs.getString("class") %></td></p><p> <td><a href
16、="tea_xsgl_edit.jsp?id=<%=rs.getString("num") %>&cla=<%= rs.getString("class")%>">編輯</a> <a href="javascript:btnDelete('<%=rs.getString("
17、;num") %>')">刪除</a></td></p><p><b> </tr></b></p><p><b> <%} %></b></p><p> 當(dāng)點(diǎn)擊增加按鈕時(shí)就會(huì)出現(xiàn)增加界面,顯示出學(xué)生管理信息表中所有的字段,
18、對(duì)于存在關(guān)聯(lián)的字段的選項(xiàng)則從關(guān)聯(lián)表中讀出所有數(shù)據(jù),以下拉列表的形式或者單選框的形式顯示出來(lái),方便用戶選擇,不需要手動(dòng)寫入,直接從下拉框或單選框中獲取即可。如果不填寫課程編號(hào)或其他任何一個(gè)選項(xiàng),就點(diǎn)擊提交按鈕,就會(huì)出現(xiàn)提示框,提醒你要將信息填寫完整,否則無(wú)法提交。上方有一個(gè)功能菜單導(dǎo)航,用戶可以通過(guò)這些超鏈接直接進(jìn)入到教師角色可以進(jìn)行操作的其他界面。</p><p><b> 圖4.2</b>
19、;</p><p> 從數(shù)據(jù)庫(kù)中獲取課程種類下拉框中的值,代碼如下:</p><p><b> <tr></b></p><p> <td>班級(jí)</td></p><p><b> <td></b></p><p>
20、<select name="newclass"></p><p> <% while(rs.next()){%></p><p> <option><%=rs.getString("num") %></option></p><p><b> <
21、% }%></b></p><p><b> </select></b></p><p><b> </td></b></p><p><b> </tr></b></p><p><b> 圖4.3<
22、;/b></p><p> 當(dāng)用戶點(diǎn)擊圖表3右側(cè)的編輯按鈕,程序首先將這一行所對(duì)應(yīng)的課程信息的主鍵值傳給編輯處理界面,編輯頁(yè)面接受主鍵值后,根據(jù)主鍵值從student表中讀出這一列所對(duì)應(yīng)的數(shù)據(jù)顯示在如下界面中。教師可以對(duì)課程中的任意一個(gè)信息進(jìn)行更改。對(duì)于像性別、班級(jí)這些選擇可以直接從單選框和下拉框中更改,不需要手動(dòng)輸入數(shù)據(jù)。</p><p><b> 圖4.3</
23、b></p><p> 當(dāng)用戶點(diǎn)擊刪除按鈕時(shí),程序同樣將這一行對(duì)應(yīng)的主鍵值傳給刪除處理界面,同時(shí)會(huì)通過(guò)javascript彈出一個(gè)對(duì)話框,問(wèn)用戶是否確定刪除,如果點(diǎn)擊確定,則將與傳過(guò)來(lái)的主鍵相對(duì)應(yīng)的一整行刪除掉;如果點(diǎn)擊取消,就不對(duì)這一行進(jìn)行處理,原始數(shù)據(jù)保留。相關(guān)代碼如下:</p><p><b> <script></b></p>
24、<p> function btnDelete(id){</p><p> if(confirm("確認(rèn)刪除該條記錄嗎?"))</p><p> location.href="tea_xsgl_del.jsp?id="+id;</p><p><b> }</b></p>
25、<p><b> </script></b></p><p><b> 用戶身份:學(xué)生</b></p><p> 當(dāng)?shù)顷懙挠脩羰菍W(xué)生,他可以查詢個(gè)人信息、進(jìn)行課程信息查詢、進(jìn)行選課操作、查詢成績(jī)。</p><p><b> 圖4.4</b></p>&l
26、t;p> 當(dāng)用戶點(diǎn)擊上方選課信息時(shí),會(huì)顯示所有的課程信息,包括課程編號(hào)、課程名稱和狀態(tài)。如果該門課可選,則會(huì)在狀態(tài)列里顯示選擇按鈕,當(dāng)用戶點(diǎn)擊選擇按鈕之后則會(huì)顯示已選提醒用戶該門課已經(jīng)選擇了。顯示如下:</p><p><b> 圖4.5</b></p><p><b> 登陸頁(yè)面</b></p><p>
27、當(dāng)用戶在進(jìn)入系統(tǒng)之前,進(jìn)入登陸界面,會(huì)看到如下頁(yè)面:</p><p><b> 圖4.6</b></p><p> 用戶需要輸入用戶名、密碼,選擇身份,才能點(diǎn)擊登陸按鈕進(jìn)行登陸,而且要求密碼長(zhǎng)度在6-10位之間。如果三個(gè)中有一個(gè)沒(méi)有輸入或者選擇,則會(huì)通過(guò)javascript彈出一個(gè)對(duì)話框,提醒用戶輸入完整。相關(guān)實(shí)現(xiàn)的代碼如下:</p><p&g
28、t; <script language="javascript"></p><p> function checkForm(){</p><p> var user=document.myForm.username.value;</p><p> if(user==""){</p><p
29、> alert("用戶名不能為空!");</p><p> document.myForm.username.focus();</p><p> return false;</p><p><b> }</b></p><p> var pwd=document.myForm.user
30、pwd.value;</p><p> if((pwd.length<6)||(pwd.length>10)){</p><p> alert("密碼長(zhǎng)度在6到10位之間!");</p><p> return false;</p><p><b> }</b></p>
31、<p> var sf=document.myForm.usersf;</p><p> var flag=false;</p><p> for(var i=0;i<sf.length;i++){</p><p> if(sf[i].checked)</p><p> flag=true;</p>
32、<p><b> }</b></p><p> if(!flag){</p><p> alert("身份不能為空!");</p><p> return false;</p><p><b> }</b></p><p><
33、b> }</b></p><p><b> </script></b></p><p> 如果用戶全部填寫,就會(huì)將表單信息提交到服務(wù)器loginProc.jsp程序進(jìn)行相關(guān)處理。程序會(huì)根據(jù)用戶選擇的身份,進(jìn)入相關(guān)的數(shù)據(jù)庫(kù)進(jìn)行身份比對(duì),判斷用戶名和密碼是否一致。如果用戶名或密碼有一個(gè)不正確,則會(huì)跳轉(zhuǎn)到登陸錯(cuò)誤界面,如下圖:</p
34、><p><b> 圖4.7</b></p><p> 如果用戶名和密碼都正確,則會(huì)跳轉(zhuǎn)到響應(yīng)身份吧的主頁(yè)面。</p><p><b> 程序判定代碼如下:</b></p><p> while(rs.next()){</p><p> if(rs.getString(
35、"num").equals(name))</p><p> flag = true;</p><p><b> }</b></p><p><b> if(flag){</b></p><p> sql = "select password from stude
36、nt where num = ?";</p><p> pstm = conn.prepareStatement(sql);</p><p> pstm.setString(1,name);</p><p> rs = pstm.executeQuery();</p><p> while(rs.next()){</p
37、><p> tpwd = rs.getString("password");</p><p><b> }</b></p><p> if(tpwd.equals(pwd)){</p><p> Cookie cookie1 = new Cookie("userName",na
38、me);</p><p> Cookie cookie2 = new Cookie("userPwd",pwd);</p><p> cookie1.setMaxAge(60*60);</p><p> cookie2.setMaxAge(60*60);</p><p> response.addCookie(co
39、okie1);</p><p> response.addCookie(cookie2);</p><p> session.setAttribute("username",name);</p><p> response.sendRedirect("student/student.jsp");</p>&
40、lt;p><b> }else</b></p><p> response.sendRedirect("error.html");</p><p> 4.2系統(tǒng)實(shí)現(xiàn)過(guò)程中遇到的主要疑難問(wèn)題和解決方案</p><p> 問(wèn)題一:課程信息管理的主模塊顯示不出來(lái)。</p><p> 解決方案
41、:sql語(yǔ)句錯(cuò)誤,沒(méi)有考慮表之間的關(guān)聯(lián),當(dāng)查詢包含外鍵的表時(shí)應(yīng)該將關(guān) 聯(lián)字段與主鍵值進(jìn)行連接。</p><p> 問(wèn)題二:在各分功能進(jìn)行刪除和編輯時(shí),因?yàn)閿?shù)據(jù)庫(kù)各表之間的關(guān)聯(lián)性,無(wú)法對(duì)其直接操作。</p><p> 解決方案:在進(jìn)行刪除和編輯前,要對(duì)其外鍵先進(jìn)行操作,再對(duì)其本身進(jìn)行操作。</p><p> 問(wèn)題三:修改課程信息時(shí),修改后的信息無(wú)法保存;<
42、;/p><p> 解決方案:PreparedStatement對(duì)象必須使用占位符,不能直接傳遞變量值。</p><p> 問(wèn)題四:進(jìn)行分頁(yè)時(shí)已經(jīng)將代碼完全拷貝進(jìn)去了,可是提交時(shí)還是出現(xiàn)“只進(jìn)結(jié)果集不支持請(qǐng)求的操作”的錯(cuò)誤:</p><p> 解決方案:Statement stm=conn.createStatement();傳遞一個(gè)參數(shù)“ResultSet.TYP
43、E_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY”,問(wèn)題就解決了。</p><p> 問(wèn)題五:界面布局不合理,不美觀;</p><p> 解決方案:熟悉diV的使用,給需要修改樣式的元素套一個(gè)diV,通過(guò)css對(duì)布局進(jìn)行修改和美化;然后借鑒合肥學(xué)院的教務(wù)管理系統(tǒng)的UI,我們對(duì)其進(jìn)行了截圖和參考,然后完善了自己的頁(yè)面布局。</p>
44、<p> 4.3系統(tǒng)實(shí)現(xiàn)的特色之處(包括技術(shù)和功能)</p><p> 系統(tǒng)的基本功能都是平時(shí)課堂中學(xué)習(xí)的內(nèi)容,主要就是添加了分頁(yè)功能。我們?cè)赨I設(shè)計(jì)上,參照了合肥學(xué)院的教務(wù)管理系統(tǒng),對(duì)于常規(guī)的界面進(jìn)行了簡(jiǎn)單的美化。</p><p><b> 4.4 系統(tǒng)測(cè)試</b></p><p> 進(jìn)行多次試驗(yàn),將數(shù)據(jù)庫(kù)中已有的信息進(jìn)
45、行修改,觀察數(shù)據(jù)庫(kù)中的值是否有改變;登陸時(shí)輸入錯(cuò)誤信息,觀察是否能登陸到頁(yè)面??傮w測(cè)試方案就是多次試驗(yàn)觀察結(jié)果?;竟δ芸梢詫?shí)現(xiàn)。</p><p><b> 五、總結(jié)</b></p><p><b> 5.1不足</b></p><p> (1) 數(shù)據(jù)庫(kù)設(shè)計(jì)不合理,導(dǎo)致后序程序開(kāi)發(fā)總是在不斷的修改,這樣可能導(dǎo)致系統(tǒng)產(chǎn)
46、生更多的安全隱患,對(duì)系統(tǒng)的整體開(kāi)發(fā)很不利。</p><p> (2) 界面功能單一,只是實(shí)現(xiàn)了課程設(shè)計(jì)中老師要求的內(nèi)容,沒(méi)有對(duì)其進(jìn)行擴(kuò)充,只是簡(jiǎn)單的增刪改查。</p><p> (3) 因?yàn)檎n程設(shè)計(jì)任務(wù)書表達(dá)不明確,再加上我們團(tuán)隊(duì)對(duì)其理解和人物樹(shù)有出入,系統(tǒng)沒(méi)有管理員的角色,將管理員的所有功能合并到了教師角色中,可能會(huì)對(duì)用戶使用上造成不便。</p><p>&l
47、t;b> 5.2 總結(jié)</b></p><p> 作為本小組的組長(zhǎng),我較稱職的完成了我的工作,在缺少一人的情況下,我們3位成員較成功的完成了5人題。從開(kāi)始的系統(tǒng)分析與功能設(shè)計(jì)到分工再到整合最后在一起調(diào)試BUG等,我們3位成員一起成長(zhǎng),雖然過(guò)程中有許多磕磕絆絆,但是在我們的努力下全都一一克服了。</p><p> 課程設(shè)計(jì)這段時(shí)間使我對(duì)web有了更深層次的了解,以前在
48、瀏覽網(wǎng)頁(yè)時(shí),覺(jué)得它是一個(gè)很神秘的東西,好像很難做出來(lái);上第一堂課時(shí),我非常不相信張老師說(shuō)的“等我們上完這學(xué)期后大家都能做出這些網(wǎng)頁(yè)”這句話。但是通過(guò)這段時(shí)間的實(shí)踐,我也可以做出這些網(wǎng)頁(yè)了,雖然我現(xiàn)在的技術(shù)不是很精細(xì),做出來(lái)的網(wǎng)頁(yè)也不夠美觀,功能可能也比較簡(jiǎn)單,但是我還是很開(kāi)心,畢竟我在往前走,我在進(jìn)步。</p><p> 在課程設(shè)計(jì)中我遇到很多問(wèn)題,首先是數(shù)據(jù)庫(kù)設(shè)計(jì)的問(wèn)題。在沒(méi)有真正開(kāi)始編代碼的時(shí)候,我們只是簡(jiǎn)
49、單的設(shè)計(jì)了一下數(shù)據(jù)庫(kù),并沒(méi)有深入的考慮當(dāng)我們真正開(kāi)發(fā)起來(lái)那些表之間應(yīng)該有什么關(guān)系,只是按照任務(wù)書中直白的書面要求,對(duì)應(yīng)的建了十幾個(gè)表,可是當(dāng)我們實(shí)際開(kāi)發(fā)時(shí),慢慢發(fā)現(xiàn)問(wèn)題很多,只能一點(diǎn)一點(diǎn)的去補(bǔ)救,所以我現(xiàn)在很明確一點(diǎn),就是以后做課程設(shè)計(jì)的時(shí)候一定要花足夠的時(shí)間設(shè)計(jì)出一個(gè)合理完善的數(shù)據(jù)庫(kù)。</p><p> 除此之外,這兩周的時(shí)間讓我對(duì)web知識(shí)理解的更深一些,因?yàn)橄到y(tǒng)需要我們將平時(shí)學(xué)到的所有知識(shí)融會(huì)貫通,同時(shí)善
50、于利用身邊的資源,有不懂的問(wèn)題可以向老師或同學(xué)請(qǐng)教,也可以通過(guò)網(wǎng)絡(luò)獲得我們想要的知識(shí)。就像這次課程設(shè)計(jì),我了解到了分頁(yè)的方法,雖然不能解釋分頁(yè)每一行代碼的意思,但是大致明白是怎么用的。</p><p> 當(dāng)然我的能力還是很有限的,通過(guò)這次的課程設(shè)計(jì),我大致明確了以后的任務(wù),要好好學(xué)習(xí)java和javaEE。對(duì)于問(wèn)題不僅要知道其然,還要知道其所以然。</p><p><b>
51、參考文獻(xiàn)</b></p><p> [1] 鄒建.深入淺出--SQL SERVER 2005開(kāi)發(fā)、管理與應(yīng)用實(shí)例.人民郵電出版社,2008年.</p><p> [2] 樊月華.Web技術(shù)應(yīng)用基礎(chǔ).清華大學(xué)出版社, 2013年.</p><p> [3] 飛思科技產(chǎn)品研發(fā)著:JSP應(yīng)用開(kāi)發(fā)詳解(第二版),電子工業(yè)出版社, 2004年.</p&
52、gt;<p> [4] 張洪偉著:Tomcat Web開(kāi)發(fā)及整合應(yīng)用,清華大學(xué)出版社, 2006年.</p><p> [5] 陳剛著:Eclipse從入門到精通(第2版),清華大學(xué)出版社, 2007年.</p><p> [6] 史濟(jì)民等著:軟件工程—原理、方法與應(yīng)用(第3版),高等教育出版社, 2013年.</p><p> [7] 朱福喜
53、著:面向?qū)ο笈cJava程序設(shè)計(jì),清華大學(xué)出版社, 2011年.</p><p> [8] 鄭人杰等著:軟件測(cè)試,人民郵電出版社, 2014年.</p><p> [9] 趙彥著:JavaEE框架技術(shù)進(jìn)階式教程,清華大學(xué)出版社, 2014年.</p><p> [10] 耿祥義著:Java課程報(bào)告,清華大學(xué)出版社, 2013年.</p><p
54、> [11] 肖磊等著:Java實(shí)用教程,人民郵電出版社, 2013年.</p><p><b> 附錄</b></p><p> 1、index.jsp</p><p> <%@ page language="java" import="java.util.*" pageEncodi
55、ng="UTF-8"%></p><p><b> <%</b></p><p> String path = request.getContextPath();</p><p> String basePath = request.getScheme()+"://"+request.g
56、etServerName()+":"+request.getServerPort()+path+"/";</p><p><b> %></b></p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
57、;</p><p><b> <html></b></p><p><b> <head></b></p><p> <base href="<%=basePath%>"></p><p> <title>My
58、JSP 'index.jsp' starting page</title></p><p> <meta http-equiv="pragma" content="no-cache"></p><p> <meta http-equiv="cache-control" conten
59、t="no-cache"></p><p> <meta http-equiv="expires" content="0"> </p><p> <meta http-equiv="keywords" content="keyword1,keyword2,keywor
60、d3"></p><p> <meta http-equiv="description" content="This is my page"></p><p><b> <!--</b></p><p> <link rel="stylesheet&
61、quot; type="text/css" href="styles.css"></p><p><b> --></b></p><p><b> </head></b></p><p><b> <body></b>
62、</p><p> This is my JSP page. <br></p><p><b> </body></b></p><p><b> </html></b></p><p> 2、login.jsp</p><p>
63、 <%@ page language="java" contentType="text/html; charset=UTF-8"</p><p> pageEncoding="UTF-8"%></p><p> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
64、 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></p><p><b> <html></b></p><p><b> <head></b></p><p> <meta http
65、-equiv="Content-Type" content="text/html; charset=UTF-8"></p><p> <title>歡迎使用課程管理系統(tǒng)</title></p><p> <link href="css/login.css" rel="stylesh
66、eet" /></p><p> <script language="javascript"></p><p> function checkForm(){</p><p> var user=document.myForm.username.value;</p><p> if(use
67、r==""){</p><p> alert("用戶名不能為空!");</p><p> document.myForm.username.focus();</p><p> return false;</p><p><b> }</b></p><p
68、> var pwd=document.myForm.userpwd.value;</p><p> if((pwd.length<6)||(pwd.length>10)){</p><p> alert("密碼長(zhǎng)度在6到10位之間!");</p><p> return false;</p><p&g
69、t;<b> }</b></p><p> var sf=document.myForm.usersf;</p><p> var flag=false;</p><p> for(var i=0;i<sf.length;i++){</p><p> if(sf[i].checked)</p>
70、<p> flag=true;</p><p><b> }</b></p><p> if(!flag){</p><p> alert("身份不能為空!");</p><p> return false;</p><p><b> }&
71、lt;/b></p><p><b> }</b></p><p><b> </script></b></p><p><b> </head></b></p><p><b> <body></b>&l
72、t;/p><p><b> <% </b></p><p> String loginUserName="",loginUserPwd="";</p><p> Cookie[] cookies = request.getCookies();</p><p> if(co
73、okies!=null){</p><p> int len = cookies.length;</p><p> for(int i = 0; i<len; i++){</p><p> Cookie cookie1 = cookies[i];</p><p> if(cookie1.getName().equals(&quo
74、t;userName"))</p><p> loginUserName = cookie1.getValue();</p><p> else if(cookie1.getName().equals("userPwd"))</p><p> loginUserPwd = cookie1.getValue();</p>
75、<p><b> } </b></p><p><b> } </b></p><p><b> %></b></p><p> <div class="outer"></p><p> <div cl
76、ass="inner"></p><p> <form action="loginProc.jsp" method="post" name="myForm" onsubmit="return checkForm();"></p><p><b> <ta
77、ble></b></p><p><b> <tr></b></p><p> <td height="36px" class="size">用戶名:</td></p><p> <td><input type="te
78、xt" name="username" value="<%=loginUserName%>"/></td></p><p><b> </tr></b></p><p><b> <tr></b></p><p>
79、 <td height="36px" class="size">密 碼:</td></p><p> <td><input type="password" name="userpwd" value="<%=loginUserPwd%>
80、;"/></td></p><p><b> </tr></b></p><p><b> <tr></b></p><p> <td height="36px" colspan="2"></p>&
81、lt;p> <center class="size"></p><p> <input type="radio" name="usersf" value="xs"/>學(xué)生 </p><p> <input type="radio"
82、name="usersf" value="js"/>教師 </p><p><b> </center></b></p><p><b> </td></b></p><p><b> </tr></b
83、></p><p><b> <tr></b></p><p> <td height="36px" colspan="2" align="center"></p><p> <input type="submit" val
84、ue="" class="button1"/> </p><p> <input type="reset" value="" class="button2"/></p><p><b> </td
85、></b></p><p><b> </tr></b></p><p><b> </table></b></p><p><b> </form></b></p><p><b> </div&g
86、t;</b></p><p><b> </div></b></p><p><b> </body></b></p><p><b> </html></b></p><p> 3、loginProc.jsp</p
87、><p> <%@ page language="java" contentType="text/html; charset=UTF-8"</p><p> pageEncoding="UTF-8" import="java.sql.*"%></p><p> <!D
88、OCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></p><p><b> <html></b></p><p><b> <head>
89、</b></p><p> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></p><p> <title>用戶名密碼審核</title></p><p><b> </
90、head></b></p><p><b> <body></b></p><p><b> <% </b></p><p> Connection conn = null;</p><p> PreparedStatement pstm = null;
91、</p><p> ResultSet rs = null;</p><p> String tpwd = null;</p><p> String name = request.getParameter("username");</p><p> String pwd = request.getParamete
92、r("userpwd");</p><p> String sf = request.getParameter("usersf");</p><p> boolean flag = false;</p><p> Class.forName("com.microsoft.sqlserver.jdbc.SQLSe
93、rverDriver"); </p><p> String url = "jdbc:sqlserver://localhost:1433;databasename=kcglxt";</p><p> conn = DriverManager.getConnection(url,"sa","123456");<
94、/p><p> if(sf.equals("xs"))</p><p><b> {</b></p><p> String sql = "select num from student where num in (select studentnum from choose)";</p>
95、<p> pstm = conn.prepareStatement(sql);</p><p> rs = pstm.executeQuery();</p><p> while(rs.next()){</p><p> if(rs.getString("num").equals(name))</p><p&
96、gt; flag = true;</p><p><b> }</b></p><p><b> if(flag){</b></p><p> sql = "select password from student where num = ?";</p><p> ps
97、tm = conn.prepareStatement(sql);</p><p> pstm.setString(1,name);</p><p> rs = pstm.executeQuery();</p><p> while(rs.next()){</p><p> tpwd = rs.getString("passw
98、ord");</p><p><b> }</b></p><p> if(tpwd.equals(pwd)){</p><p> Cookie cookie1 = new Cookie("userName",name);</p><p> Cookie cookie2 = new
99、Cookie("userPwd",pwd);</p><p> cookie1.setMaxAge(60*60);</p><p> cookie2.setMaxAge(60*60);</p><p> response.addCookie(cookie1);</p><p> response.addCookie
100、(cookie2);</p><p> session.setAttribute("username",name);</p><p> response.sendRedirect("student/student.jsp");</p><p><b> }else</b></p>&l
101、t;p> response.sendRedirect("error.html");</p><p><b> }</b></p><p><b> else</b></p><p> response.sendRedirect("error.html");</p&
102、gt;<p><b> }</b></p><p> else if(sf.equals("js"))</p><p><b> {</b></p><p> String sql = "select num from teacher";</p>
103、<p> pstm = conn.prepareStatement(sql);</p><p> rs = pstm.executeQuery();</p><p> while(rs.next()){</p><p> if(rs.getString("num").equals(name))</p><p&
104、gt; flag = true;</p><p><b> }</b></p><p><b> if(flag){</b></p><p> sql = "select password from teacher where num = ?";</p><p> ps
105、tm = conn.prepareStatement(sql);</p><p> pstm.setString(1,name);</p><p> rs = pstm.executeQuery();</p><p> while(rs.next()){</p><p> tpwd = rs.getString("passw
106、ord");</p><p><b> }</b></p><p> if(tpwd.equals(pwd)){</p><p> Cookie cookie1 = new Cookie("userName",name);</p><p> Cookie cookie2 = new
107、Cookie("userPwd",pwd);</p><p> cookie1.setMaxAge(60*60);</p><p> cookie2.setMaxAge(60*60);</p><p> response.addCookie(cookie1);</p><p> response.addCookie
108、(cookie2);</p><p> session.setAttribute("username",name);</p><p> response.sendRedirect("teacher/teacher.jsp");</p><p><b> }else</b></p>&l
109、t;p> response.sendRedirect("error.html");</p><p><b> }else</b></p><p> response.sendRedirect("error.html");</p><p><b> }</b></p
110、><p><b> %></b></p><p><b> </body></b></p><p><b> </html></b></p><p> 4、std_cf.jsp</p><p> <%@ page
111、 language="java" contentType="text/html; charset=UTF-8"</p><p> pageEncoding="UTF-8" import="java.sql.*"%></p><p> <!DOCTYPE html PUBLIC "-//
112、W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></p><p><b> <html></b></p><p><b> <head></b></p><p&
113、gt; <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></p><p> <title>課程管理系統(tǒng)——查分</title></p><p> <link href="../css/std.css"
114、; rel="stylesheet" /></p><p><b> </head></b></p><p><b> <body></b></p><p><b> <%</b></p><p> Connect
115、ion conn = null;</p><p> PreparedStatement pstm = null;</p><p> ResultSet rs = null;</p><p> Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); </p>
116、<p> String url = "jdbc:sqlserver://localhost:1433;databasename=kcglxt";</p><p> conn = DriverManager.getConnection(url,"sa","123456"); </p><p> String id =
117、 (String)session.getAttribute("username");</p><p> String name = (String)session.getAttribute("name");</p><p> String sql = "select course.name,grade from course,choos
118、e where studentnum = ? and coursenum = course.num";</p><p> pstm = conn.prepareStatement(sql);</p><p> pstm.setString(1,id);</p><p> rs = pstm.executeQuery();</p><
119、;p><b> %></b></p><p> <div class="bg"></p><p> <div class="div1"></p><p> <table class="size"></p><p
120、><b> <tr></b></p><p> <td width="95px" align="center"><a href="std_grxx.jsp">個(gè)人信息</a></td></p><p> <td width=&quo
121、t;95px" align="center"><a href="std_kcxx.jsp">課程信息</a></td></p><p> <td width="95px" align="center"><a href="std_xk.jsp"&
122、gt;選 課</a></td></p><p> <td width="113px" align="center"><a href="std_cf.jsp">查 分</a><
123、;/td></p><p> <td width="95px" align="center"><a href="student.jsp">返回首頁(yè)</a></td></p><p><b> </tr></b></p><
124、;p><b> </table></b></p><p><b> </div></b></p><p> <div class="div2"></p><p><b> 當(dāng)前位置——查分</b></p><p&
125、gt;<b> </div></b></p><p> <div class="div3"></p><p> 歡迎您:<%= id%> <%= name%> <a href="../login.jsp">注銷</a>
126、; <a href="std_xgmm.jsp">修改密碼</a></p><p><b> </div></b></p><p> <div class="div4"></p><p> <table style="
127、color:#11449E" bgcolor="#F2F6FB" border="3" cellpadding="8" cellspacing="3" bordercolor="#C8DEFC"></p><p><b> <tr></b></p>
128、<p> <th>課程名</th></p><p> <th>成績(jī)</th></p><p><b> </tr></b></p><p> <% while(rs.next()){%></p><p><b> <
129、;tr></b></p><p> <td><%= rs.getString("name")%></td></p><p> <% if(rs.getString("grade")==null){%></p><p> <td>未錄入</
130、td></p><p> <% }else{%></p><p> <td><%= rs.getString("grade")%></td></p><p><b> <% }%></b></p><p><b> &
131、lt;/tr></b></p><p><b> <% }%></b></p><p><b> </table></b></p><p> <input style="color:#11449E;background-color:#F2F6FB;border
132、:solid #99B9E2 1px;cursor:pointer;" type="button" value="打印成績(jī)" onclick="window.print();"/></p><p><b> </div></b></p><p><b> </d
133、iv></b></p><p><b> <%</b></p><p> conn.close();</p><p> pstm.close();</p><p> rs.close(); </p><p><b> %></b><
134、;/p><p><b> </body></b></p><p><b> </html></b></p><p> 5、std_grxx.jsp</p><p> <%@ page language="java" contentType=&qu
135、ot;text/html; charset=UTF-8"</p><p> pageEncoding="UTF-8" import="java.sql.*"%></p><p> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
136、"http://www.w3.org/TR/html4/loose.dtd"></p><p><b> <html></b></p><p><b> <head></b></p><p> <meta http-equiv="Content-Typ
137、e" content="text/html; charset=UTF-8"></p><p> <title>課程管理系統(tǒng)——個(gè)人信息</title></p><p> <link href="../css/std.css" rel="stylesheet" /></p
138、><p><b> </head></b></p><p><b> <body></b></p><p><b> <%</b></p><p> Connection conn = null;</p><p> P
139、reparedStatement pstm1 = null;</p><p> PreparedStatement pstm2 = null;</p><p> ResultSet rs1 = null;</p><p> ResultSet rs2 = null;</p><p> Class.forName("com.m
140、icrosoft.sqlserver.jdbc.SQLServerDriver"); </p><p> String url = "jdbc:sqlserver://localhost:1433;databasename=kcglxt";</p><p> conn = DriverManager.getConnection(url,"sa&q
141、uot;,"123456"); </p><p> String id = (String)session.getAttribute("username");</p><p> String name = (String)session.getAttribute("name");</p><p> S
142、tring sql1 = "select * from student where num = ?";</p><p> String sql2 = "select name from class where num = (select class from student where num = ?)";</p><p> pstm1 = co
143、nn.prepareStatement(sql1);</p><p> pstm1.setString(1,id);</p><p> rs1 = pstm1.executeQuery();</p><p> pstm2 = conn.prepareStatement(sql2);</p><p> pstm2.setString(1
144、,id);</p><p> rs2 = pstm2.executeQuery();</p><p> rs1.next();</p><p> rs2.next();</p><p><b> %></b></p><p> <div class="bg"
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- web課程設(shè)計(jì)(宿舍管理系統(tǒng))
- web課程設(shè)計(jì)--酒店管理系統(tǒng)
- web課程設(shè)計(jì)酒店管理系統(tǒng)
- web課程設(shè)計(jì)-- 選課注冊(cè)管理系統(tǒng)
- web課程設(shè)計(jì)----基于web的成績(jī)管理系統(tǒng)
- 課程設(shè)計(jì)---java web圖書管理系統(tǒng)
- 學(xué)生管理系統(tǒng)——web課程設(shè)計(jì)報(bào)告 (2)
- web課程設(shè)計(jì).學(xué)生成績(jī)管理系統(tǒng)
- web課程設(shè)計(jì)人事管理系統(tǒng)
- web課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- web課程設(shè)計(jì)--用戶信息管理系統(tǒng)
- web課程設(shè)計(jì)
- 《web系統(tǒng)開(kāi)發(fā)課程設(shè)計(jì)》
- web課程設(shè)計(jì)人事信息管理系統(tǒng)
- web課程設(shè)計(jì)人事信息管理系統(tǒng)
- 基于web的圖書管理系統(tǒng)課程設(shè)計(jì)
- web課程設(shè)計(jì) 《web網(wǎng)絡(luò)編程技術(shù)》課程設(shè)計(jì)報(bào)告
- web課程設(shè)計(jì)——網(wǎng)上書店管理系統(tǒng)報(bào)告
- web課程設(shè)計(jì)報(bào)告--網(wǎng)上書店管理系統(tǒng)
- web課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論