版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一、緒論 -3-1.1概要描述 -3-1.2團(tuán)隊(duì)分工 -3-二、系統(tǒng)需求分析 -4-2.1功能需求 -4-三、系統(tǒng)設(shè)計(jì) -6-3.1系統(tǒng)采用的邏輯以及物理結(jié)構(gòu) -6-3.2系統(tǒng)的開發(fā)環(huán)境選擇 -6-3.3系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)(個(gè)人負(fù)責(zé)程序涉及的數(shù)據(jù)庫) -6-四、系統(tǒng)實(shí)現(xiàn)及測試 -9-4.1系統(tǒng)模塊功能介紹 -9-4.2系統(tǒng)實(shí)現(xiàn)過程中遇到的主要疑難問題和解決方案 -17-4.3系統(tǒng)實(shí)現(xiàn)的特色之處(包括技術(shù)和功能) -18-4.4系統(tǒng)測試 -18-五、總結(jié) -18-5.1不足 -18-5.2總結(jié) -19-參考文獻(xiàn) -19-附錄 -20-一、緒論1.1概要描述課程設(shè)計(jì)管理系統(tǒng),實(shí)現(xiàn)課程信息管理的電子化,減輕管理人員的負(fù)擔(dān)。管理人員能夠很好對課程進(jìn)行管理。長期以來,學(xué)?;径际鞘褂脗鹘y(tǒng)人工的方式管理學(xué)生課程信息,效率低、保密性差,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,使用計(jì)算機(jī)來管理課程信息已經(jīng)成為發(fā)展趨勢。這樣可以提高學(xué)生選課和成績管理工作的效率,圍繞此管理所需要的學(xué)生個(gè)人信息、課程和任課教師信息、所選課程信息進(jìn)行管理及維護(hù)。1.2團(tuán)隊(duì)分工二、系統(tǒng)需求分析2.1功能需求系統(tǒng)整體的用例圖如下:圖2.1系統(tǒng)用例圖管理員對課程信息進(jìn)行增加、刪除、編輯和查看;教師打印選課學(xué)生名單、班級成績表、查看課程;學(xué)生可以查看自己已選課程的成績、打印班級課程表、查詢課程。需要注意的是,由于課程設(shè)計(jì)任務(wù)書表達(dá)的不明確,所以我們將管理員和教師的功能合并到教師角色中。數(shù)據(jù)流圖如下:圖2.2數(shù)據(jù)流圖圖2.3數(shù)據(jù)流圖三、系統(tǒng)設(shè)計(jì)3.1系統(tǒng)采用的邏輯以及物理結(jié)構(gòu)圖3.13.2系統(tǒng)的開發(fā)環(huán)境選擇(1)使用web的開發(fā)環(huán)境是myeclipse10;(2)數(shù)據(jù)庫使用的是SQLsserverr2008。3.3系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)(個(gè)人負(fù)責(zé)程序涉及的數(shù)據(jù)庫)表3.1系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)表名功能說明選課表(choose)存放選課信息班級表(class)存放班級信息院系表(college)存放院系信息課程表(course)存放課程信息專業(yè)表(major)存放專業(yè)信息學(xué)生表(student)存放學(xué)生信息教師表(teacher)存放教師信息表3.2班級信息表class序號字段名類型是否為空是否主鍵描述1numVarcher否是主鍵、班級編號2nameVarchar否否班級名稱3teacherVarchar否否班級輔導(dǎo)員4timeVarchar否否入學(xué)時(shí)間5majorVarchar否否專業(yè)表3.3教師信息表teacher序號字段名類型是否為空是否主鍵描述1numVarchar否是主鍵、教師編號2nameVarchar否否教師姓名3courseVarchar否否教師姓名4passwordVarchar否否密碼表3.4院系信息表college序號字段名類型是否為空是否主鍵描述1numVarchar否是主鍵、系編號2nameVarchar否否院系名稱表3.5課程信息表class序號字段名類型是否為空是否主鍵描述1numVarchar否是主鍵、課程編號2nameVarchar否否課程名稱3timeVarchar否否課程學(xué)時(shí)4scoreVarchar否否學(xué)分5styleVarchar否否課程類型6starttimeVarchar否否課程開始時(shí)間7endtimeVarchar否否課程結(jié)束時(shí)間8classroomVarchar否否教室9teacherVarchar否否任課教師10allamountInt否否總?cè)藬?shù)11nowamountInt否否當(dāng)前人數(shù)12conditionVarchar否否課程狀態(tài)表3.6學(xué)生信息表student序號字段名類型是否為空是否主鍵描述1numnchar否是主鍵、學(xué)生學(xué)號2namenchar否否學(xué)生姓名3sexVarchar否否學(xué)生性別4birthVarchar否否學(xué)生出生日期5jgVarchar否否學(xué)生籍貫6mzVarchar否否學(xué)生名族7classVarchar否否學(xué)生班所在級8passwordVarchar否否密碼表3.7選課信息表xuanke序號字段名類型是否為空是否主鍵描述1numInt否是自增主鍵、選課編號2studentnumVarchar否否學(xué)生編號3coursenumVarchar否否課程編號4gradeVarchar否否成績表3.8選課表xuanke序號字段名類型是否為空是否主鍵描述1XuankexhInt否是自增主鍵2CxhInt否否課程信息表主鍵3sgradeVarchar否否課程分?jǐn)?shù)4TxhInt否否教師主鍵 圖3.2E-R關(guān)系圖四、系統(tǒng)實(shí)現(xiàn)及測試4.1系統(tǒng)模塊功能介紹用戶身份:教師當(dāng)用戶登錄系統(tǒng)后,如果他的身份是管理員,那么他可以對學(xué)生信息進(jìn)行增加、刪除、修改和查詢。圖4.1以下代碼為循環(huán)讀出數(shù)據(jù)庫總學(xué)生信息值:<% while(rs.next()){ %> <tr> <td><%=rs.getString("num")%></td> <td><%=rs.getString("name")%></td> <td><%=rs.getString("sex")%></td> <td><%=rs.getString("birth")%></td> <td><%=rs.getString("jg")%></td> <td><%=rs.getString("mz")%></td> <td><%=rs.getString("class")%></td> <td><ahref="tea_xsgl_edit.jsp?id=<%=rs.getString("num")%>&cla=<%=rs.getString("class")%>">編輯</a> <ahref="javascript:btnDelete('<%=rs.getString("num")%>')">刪除</a></td> </tr> <%}%>當(dāng)點(diǎn)擊增加按鈕時(shí)就會出現(xiàn)增加界面,顯示出學(xué)生管理信息表中所有的字段,對于存在關(guān)聯(lián)的字段的選項(xiàng)則從關(guān)聯(lián)表中讀出所有數(shù)據(jù),以下拉列表的形式或者單選框的形式顯示出來,方便用戶選擇,不需要手動寫入,直接從下拉框或單選框中獲取即可。如果不填寫課程編號或其他任何一個(gè)選項(xiàng),就點(diǎn)擊提交按鈕,就會出現(xiàn)提示框,提醒你要將信息填寫完整,否則無法提交。上方有一個(gè)功能菜單導(dǎo)航,用戶可以通過這些超鏈接直接進(jìn)入到教師角色可以進(jìn)行操作的其他界面。圖4.2從數(shù)據(jù)庫中獲取課程種類下拉框中的值,代碼如下:<tr> <td>班級</td> <td> <selectname="newclass"> <%while(rs.next()){%> <option><%=rs.getString("num")%></option> <%}%> </select> </td> </tr>圖4.3當(dāng)用戶點(diǎn)擊圖表3右側(cè)的編輯按鈕,程序首先將這一行所對應(yīng)的課程信息的主鍵值傳給編輯處理界面,編輯頁面接受主鍵值后,根據(jù)主鍵值從student表中讀出這一列所對應(yīng)的數(shù)據(jù)顯示在如下界面中。教師可以對課程中的任意一個(gè)信息進(jìn)行更改。對于像性別、班級這些選擇可以直接從單選框和下拉框中更改,不需要手動輸入數(shù)據(jù)。圖4.3當(dāng)用戶點(diǎn)擊刪除按鈕時(shí),程序同樣將這一行對應(yīng)的主鍵值傳給刪除處理界面,同時(shí)會通過javascript彈出一個(gè)對話框,問用戶是否確定刪除,如果點(diǎn)擊確定,則將與傳過來的主鍵相對應(yīng)的一整行刪除掉;如果點(diǎn)擊取消,就不對這一行進(jìn)行處理,原始數(shù)據(jù)保留。相關(guān)代碼如下:<script> functionbtnDelete(id){ if(confirm("確認(rèn)刪除該條記錄嗎?")) location.href="tea_xsgl_del.jsp?id="+id; }</script>用戶身份:學(xué)生當(dāng)?shù)顷懙挠脩羰菍W(xué)生,他可以查詢個(gè)人信息、進(jìn)行課程信息查詢、進(jìn)行選課操作、查詢成績。圖4.4當(dāng)用戶點(diǎn)擊上方選課信息時(shí),會顯示所有的課程信息,包括課程編號、課程名稱和狀態(tài)。如果該門課可選,則會在狀態(tài)列里顯示選擇按鈕,當(dāng)用戶點(diǎn)擊選擇按鈕之后則會顯示已選提醒用戶該門課已經(jīng)選擇了。顯示如下:圖4.5登陸頁面當(dāng)用戶在進(jìn)入系統(tǒng)之前,進(jìn)入登陸界面,會看到如下頁面:圖4.6用戶需要輸入用戶名、密碼,選擇身份,才能點(diǎn)擊登陸按鈕進(jìn)行登陸,而且要求密碼長度在6-10位之間。如果三個(gè)中有一個(gè)沒有輸入或者選擇,則會通過javascript彈出一個(gè)對話框,提醒用戶輸入完整。相關(guān)實(shí)現(xiàn)的代碼如下:<scriptlanguage="javascript"> functioncheckForm(){ varuser=document.myForm.username.value; if(user==""){ alert("用戶名不能為空!"); document.myForm.username.focus(); returnfalse; } varpwd=document.myForm.userpwd.value; if((pwd.length<6)||(pwd.length>10)){ alert("密碼長度在6到10位之間!"); returnfalse; } varsf=document.myForm.usersf; varflag=false; for(vari=0;i<sf.length;i++){ if(sf[i].checked) flag=true; } if(!flag){ alert("身份不能為空!"); returnfalse; } } </script>如果用戶全部填寫,就會將表單信息提交到服務(wù)器loginProc.jsp程序進(jìn)行相關(guān)處理。程序會根據(jù)用戶選擇的身份,進(jìn)入相關(guān)的數(shù)據(jù)庫進(jìn)行身份比對,判斷用戶名和密碼是否一致。如果用戶名或密碼有一個(gè)不正確,則會跳轉(zhuǎn)到登陸錯誤界面,如下圖:圖4.7如果用戶名和密碼都正確,則會跳轉(zhuǎn)到響應(yīng)身份吧的主頁面。程序判定代碼如下:while(rs.next()){ if(rs.getString("num").equals(name)) flag=true; } if(flag){ sql="selectpasswordfromstudentwherenum=?"; pstm=conn.prepareStatement(sql); pstm.setString(1,name); rs=pstm.executeQuery(); while(rs.next()){ tpwd=rs.getString("password"); } if(tpwd.equals(pwd)){ Cookiecookie1=newCookie("userName",name); Cookiecookie2=newCookie("userPwd",pwd); cookie1.setMaxAge(60*60); cookie2.setMaxAge(60*60); response.addCookie(cookie1); response.addCookie(cookie2); session.setAttribute("username",name); response.sendRedirect("student/student.jsp"); }else response.sendRedirect("error.html");4.2系統(tǒng)實(shí)現(xiàn)過程中遇到的主要疑難問題和解決方案問題一:課程信息管理的主模塊顯示不出來。解決方案:sql語句錯誤,沒有考慮表之間的關(guān)聯(lián),當(dāng)查詢包含外鍵的表時(shí)應(yīng)該將關(guān)聯(lián)字段與主鍵值進(jìn)行連接。問題二:在各分功能進(jìn)行刪除和編輯時(shí),因?yàn)閿?shù)據(jù)庫各表之間的關(guān)聯(lián)性,無法對其直接操作。解決方案:在進(jìn)行刪除和編輯前,要對其外鍵先進(jìn)行操作,再對其本身進(jìn)行操作。問題三:修改課程信息時(shí),修改后的信息無法保存;解決方案:PreparedStatement對象必須使用占位符,不能直接傳遞變量值。問題四:進(jìn)行分頁時(shí)已經(jīng)將代碼完全拷貝進(jìn)去了,可是提交時(shí)還是出現(xiàn)“只進(jìn)結(jié)果集不支持請求的操作”的錯誤:解決方案:Statementstm=conn.createStatement();傳遞一個(gè)參數(shù)“ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY”,問題就解決了。問題五:界面布局不合理,不美觀;解決方案:熟悉diV的使用,給需要修改樣式的元素套一個(gè)diV,通過css對布局進(jìn)行修改和美化;然后借鑒合肥學(xué)院的教務(wù)管理系統(tǒng)的UI,我們對其進(jìn)行了截圖和參考,然后完善了自己的頁面布局。4.3系統(tǒng)實(shí)現(xiàn)的特色之處(包括技術(shù)和功能)系統(tǒng)的基本功能都是平時(shí)課堂中學(xué)習(xí)的內(nèi)容,主要就是添加了分頁功能。我們在UI設(shè)計(jì)上,參照了合肥學(xué)院的教務(wù)管理系統(tǒng),對于常規(guī)的界面進(jìn)行了簡單的美化。4.4系統(tǒng)測試進(jìn)行多次試驗(yàn),將數(shù)據(jù)庫中已有的信息進(jìn)行修改,觀察數(shù)據(jù)庫中的值是否有改變;登陸時(shí)輸入錯誤信息,觀察是否能登陸到頁面??傮w測試方案就是多次試驗(yàn)觀察結(jié)果。基本功能可以實(shí)現(xiàn)。五、總結(jié)5.1不足(1)數(shù)據(jù)庫設(shè)計(jì)不合理,導(dǎo)致后序程序開發(fā)總是在不斷的修改,這樣可能導(dǎo)致系統(tǒng)產(chǎn)生更多的安全隱患,對系統(tǒng)的整體開發(fā)很不利。(2)界面功能單一,只是實(shí)現(xiàn)了課程設(shè)計(jì)中老師要求的內(nèi)容,沒有對其進(jìn)行擴(kuò)充,只是簡單的增刪改查。(3)因?yàn)檎n程設(shè)計(jì)任務(wù)書表達(dá)不明確,再加上我們團(tuán)隊(duì)對其理解和人物樹有出入,系統(tǒng)沒有管理員的角色,將管理員的所有功能合并到了教師角色中,可能會對用戶使用上造成不便。5.2總結(jié)作為本小組的組長,我較稱職的完成了我的工作,在缺少一人的情況下,我們3位成員較成功的完成了5人題。從開始的系統(tǒng)分析與功能設(shè)計(jì)到分工再到整合最后在一起調(diào)試BUG等,我們3位成員一起成長,雖然過程中有許多磕磕絆絆,但是在我們的努力下全都一一克服了。課程設(shè)計(jì)這段時(shí)間使我對web有了更深層次的了解,以前在瀏覽網(wǎng)頁時(shí),覺得它是一個(gè)很神秘的東西,好像很難做出來;上第一堂課時(shí),我非常不相信張老師說的“等我們上完這學(xué)期后大家都能做出這些網(wǎng)頁”這句話。但是通過這段時(shí)間的實(shí)踐,我也可以做出這些網(wǎng)頁了,雖然我現(xiàn)在的技術(shù)不是很精細(xì),做出來的網(wǎng)頁也不夠美觀,功能可能也比較簡單,但是我還是很開心,畢竟我在往前走,我在進(jìn)步。在課程設(shè)計(jì)中我遇到很多問題,首先是數(shù)據(jù)庫設(shè)計(jì)的問題。在沒有真正開始編代碼的時(shí)候,我們只是簡單的設(shè)計(jì)了一下數(shù)據(jù)庫,并沒有深入的考慮當(dāng)我們真正開發(fā)起來那些表之間應(yīng)該有什么關(guān)系,只是按照任務(wù)書中直白的書面要求,對應(yīng)的建了十幾個(gè)表,可是當(dāng)我們實(shí)際開發(fā)時(shí),慢慢發(fā)現(xiàn)問題很多,只能一點(diǎn)一點(diǎn)的去補(bǔ)救,所以我現(xiàn)在很明確一點(diǎn),就是以后做課程設(shè)計(jì)的時(shí)候一定要花足夠的時(shí)間設(shè)計(jì)出一個(gè)合理完善的數(shù)據(jù)庫。除此之外,這兩周的時(shí)間讓我對web知識理解的更深一些,因?yàn)橄到y(tǒng)需要我們將平時(shí)學(xué)到的所有知識融會貫通,同時(shí)善于利用身邊的資源,有不懂的問題可以向老師或同學(xué)請教,也可以通過網(wǎng)絡(luò)獲得我們想要的知識。就像這次課程設(shè)計(jì),我了解到了分頁的方法,雖然不能解釋分頁每一行代碼的意思,但是大致明白是怎么用的。當(dāng)然我的能力還是很有限的,通過這次的課程設(shè)計(jì),我大致明確了以后的任務(wù),要好好學(xué)習(xí)java和javaEE。對于問題不僅要知道其然,還要知道其所以然。參考文獻(xiàn)[1]鄒建.深入淺出--SQLSERVER2005開發(fā)、管理與應(yīng)用實(shí)例.人民郵電出版社,2008年.[2]樊月華.Web技術(shù)應(yīng)用基礎(chǔ).清華大學(xué)出版社,2013年.[3]飛思科技產(chǎn)品研發(fā)著:JSP應(yīng)用開發(fā)詳解(第二版),電子工業(yè)出版社,2004年.[4]張洪偉著:TomcatWeb開發(fā)及整合應(yīng)用,清華大學(xué)出版社,2006年.[5]陳剛著:Eclipse從入門到精通(第2版),清華大學(xué)出版社,2007年.[6]史濟(jì)民等著:軟件工程—原理、方法與應(yīng)用(第3版),高等教育出版社,2013年.[7]朱福喜著:面向?qū)ο笈cJava程序設(shè)計(jì),清華大學(xué)出版社,2011年.[8]鄭人杰等著:軟件測試,人民郵電出版社,2014年.[9]趙彥著:JavaEE框架技術(shù)進(jìn)階式教程,清華大學(xué)出版社,2014年.[10]耿祥義著:Java課程報(bào)告,清華大學(xué)出版社,2013年.[11]肖磊等著:Java實(shí)用教程,人民郵電出版社,2013年.附錄1、index.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><title>MyJSP'index.jsp'startingpage</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --></head><body>ThisismyJSPpage.<br></body></html>2、login.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>歡迎使用課程管理系統(tǒng)</title><linkhref="css/login.css"rel="stylesheet"/> <scriptlanguage="javascript"> functioncheckForm(){ varuser=document.myForm.username.value; if(user==""){ alert("用戶名不能為空!"); document.myForm.username.focus(); returnfalse; } varpwd=document.myForm.userpwd.value; if((pwd.length<6)||(pwd.length>10)){ alert("密碼長度在6到10位之間!"); returnfalse; } varsf=document.myForm.usersf; varflag=false; for(vari=0;i<sf.length;i++){ if(sf[i].checked) flag=true; } if(!flag){ alert("身份不能為空!"); returnfalse; } } </script></head><body><% StringloginUserName="",loginUserPwd=""; Cookie[]cookies=request.getCookies(); if(cookies!=null){ intlen=cookies.length; for(inti=0;i<len;i++){ Cookiecookie1=cookies[i]; if(cookie1.getName().equals("userName")) loginUserName=cookie1.getValue(); elseif(cookie1.getName().equals("userPwd")) loginUserPwd=cookie1.getValue(); } }%> <divclass="outer"> <divclass="inner"> <formaction="loginProc.jsp"method="post"name="myForm"onsubmit="returncheckForm();"> <table> <tr> <tdheight="36px"class="size">用戶名:</td> <td><inputtype="text"name="username"value="<%=loginUserName%>"/></td> </tr> <tr> <tdheight="36px"class="size">密 碼:</td> <td><inputtype="password"name="userpwd"value="<%=loginUserPwd%>"/></td> </tr> <tr> <tdheight="36px"colspan="2"> <centerclass="size"> <inputtype="radio"name="usersf"value="xs"/>學(xué)生 <inputtype="radio"name="usersf"value="js"/>教師 </center> </td> </tr> <tr> <tdheight="36px"colspan="2"align="center"> <inputtype="submit"value=""class="button1"/> <inputtype="reset"value=""class="button2"/> </td> </tr> </table> </form> </div> </div></body></html>3、loginProc.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"import="java.sql.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>用戶名密碼審核</title></head><body> <% Connectionconn=null; PreparedStatementpstm=null; ResultSetrs=null; Stringtpwd=null; Stringname=request.getParameter("username"); Stringpwd=request.getParameter("userpwd"); Stringsf=request.getParameter("usersf"); booleanflag=false; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Stringurl="jdbc:sqlserver://localhost:1433;databasename=kcglxt"; conn=DriverManager.getConnection(url,"sa","123456"); if(sf.equals("xs")) { Stringsql="selectnumfromstudentwherenumin(selectstudentnumfromchoose)"; pstm=conn.prepareStatement(sql); rs=pstm.executeQuery(); while(rs.next()){ if(rs.getString("num").equals(name)) flag=true; } if(flag){ sql="selectpasswordfromstudentwherenum=?"; pstm=conn.prepareStatement(sql); pstm.setString(1,name); rs=pstm.executeQuery(); while(rs.next()){ tpwd=rs.getString("password"); } if(tpwd.equals(pwd)){ Cookiecookie1=newCookie("userName",name); Cookiecookie2=newCookie("userPwd",pwd); cookie1.setMaxAge(60*60); cookie2.setMaxAge(60*60); response.addCookie(cookie1); response.addCookie(cookie2); session.setAttribute("username",name); response.sendRedirect("student/student.jsp"); }else response.sendRedirect("error.html"); } else response.sendRedirect("error.html"); } elseif(sf.equals("js")) { Stringsql="selectnumfromteacher"; pstm=conn.prepareStatement(sql); rs=pstm.executeQuery(); while(rs.next()){ if(rs.getString("num").equals(name)) flag=true; } if(flag){ sql="selectpasswordfromteacherwherenum=?"; pstm=conn.prepareStatement(sql); pstm.setString(1,name); rs=pstm.executeQuery(); while(rs.next()){ tpwd=rs.getString("password"); } if(tpwd.equals(pwd)){ Cookiecookie1=newCookie("userName",name); Cookiecookie2=newCookie("userPwd",pwd); cookie1.setMaxAge(60*60); cookie2.setMaxAge(60*60); response.addCookie(cookie1); response.addCookie(cookie2); session.setAttribute("username",name); response.sendRedirect("teacher/teacher.jsp"); }else response.sendRedirect("error.html"); }else response.sendRedirect("error.html"); }%></body></html>4、std_cf.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"import="java.sql.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>課程管理系統(tǒng)——查分</title><linkhref="../css/std.css"rel="stylesheet"/></head><body> <% Connectionconn=null; PreparedStatementpstm=null; ResultSetrs=null; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Stringurl="jdbc:sqlserver://localhost:1433;databasename=kcglxt"; conn=DriverManager.getConnection(url,"sa","123456"); Stringid=(String)session.getAttribute("username"); Stringname=(String)session.getAttribute("name"); Stringsql="select,gradefromcourse,choosewherestudentnum=?andcoursenum=course.num"; pstm=conn.prepareStatement(sql); pstm.setString(1,id); rs=pstm.executeQuery(); %><divclass="bg"> <divclass="div1"> <tableclass="size"> <tr> <tdwidth="95px"align="center"><ahref="std_grxx.jsp">個(gè)人信息</a></td> <tdwidth="95px"align="center"><ahref="std_kcxx.jsp">課程信息</a></td> <tdwidth="95px"align="center"><ahref="std_xk.jsp">選 課</a></td> <tdwidth="113px"align="center"><ahref="std_cf.jsp">查 分</a></td> <tdwidth="95px"align="center"><ahref="student.jsp">返回首頁</a></td> </tr> </table> </div> <divclass="div2"> 當(dāng)前位置——查分 </div> <divclass="div3"> 歡迎您:<%=id%> <%=name%> <ahref="../login.jsp">注銷</a> <ahref="std_xgmm.jsp">修改密碼</a> </div> <divclass="div4"> <tablestyle="color:#11449E"bgcolor="#F2F6FB"border="3"cellpadding="8"cellspacing="3"bordercolor="#C8DEFC"> <tr> <th>課程名</th> <th>成績</th> </tr> <%while(rs.next()){%> <tr> <td><%=rs.getString("name")%></td> <%if(rs.getString("grade")==null){%> <td>未錄入</td> <%}else{%> <td><%=rs.getString("grade")%></td> <%}%> </tr> <%}%> </table> <inputstyle="color:#11449E;background-color:#F2F6FB;border:solid#99B9E21px;cursor:pointer;"type="button"value="打印成績"onclick="window.print();"/> </div></div><% conn.close(); pstm.close(); rs.close();%></body></html>5、std_grxx.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"import="java.sql.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>課程管理系統(tǒng)——個(gè)人信息</title><linkhref="../css/std.css"rel="stylesheet"/></head><body> <% Connectionconn=null; PreparedStatementpstm1=null; PreparedStatementpstm2=null; ResultSetrs1=null; ResultSetrs2=null; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Stringurl="jdbc:sqlserver://localhost:1433;databasename=kcglxt"; conn=DriverManager.getConnection(url,"sa","123456"); Stringid=(String)session.getAttribute("username"); Stringname=(String)session.getAttribute("name"); Stringsql1="select*fromstudentwherenum=?"; Stringsql2="selectnamefromclasswherenum=(selectclassfromstudentwherenum=?)"; pstm1=conn.prepareStatement(sql1); pstm1.setString(1,id); rs1=pstm1.executeQuery(); pstm2=conn.prepareStatement(sql2); pstm2.setString(1,id); rs2=pstm2.executeQuery(); rs1.next(); rs2.next(); %><divclass="bg"> <divclass="div1"> <tableclass="size"> <tr> <tdwidth="95px"align="center"><ahref="std_grxx.jsp">個(gè)人信息</a></td> <tdwidth="95px"align="center"><ahref="std_kcxx.jsp">課程信息</a></td> <tdwidth="95px"align="center"><ahref="std_xk.jsp">選 課</a></td> <tdwidth="113px"align="center"><ahref="std_cf.jsp">查 分</a></td> <tdwidth="95px"align="center"><ahref="student.jsp">返回首頁</a></td> </tr> </table> </div> <divclass="div2"> 當(dāng)前位置——個(gè)人信息 </div> <divclass="div3"> 歡迎您:<%=id%> <%=name%> <ahref="../login.jsp">注銷</a> <ahref="std_xgmm.jsp">修改密碼</a> </div> <divclass="div4"> <tablestyle="color:#11449E"bgcolor="#F2F6FB"border="3"cellpadding="8"cellspacing="3"bordercolor="#C8DEFC"> <tr> <th>學(xué)號</th> <th>姓名</th> <th>性別</th> <th>出生日期</th> <th>籍貫</th> <th>民族</th> <th>班級</th> </tr> <tr> <td><%=rs1.getString("num")%></td> <td><%=rs1.getString("name")%></td> <td><%=rs1.getString("sex")%></td> <td><%=rs1.getString("birth")%></td> <td><%=rs1.getString("jg")%></td> <td><%=rs1.getString("mz")%></td> <td><%=rs2.getString("name")%></td> </tr> </table> </div></div><% conn.close(); pstm1.close();pstm2.close(); rs1.close();rs2.close();%></body></html>6、std_kcxx.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"import="java.sql.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>課程管理系統(tǒng)——課程信息</title> <scriptlanguage="javascript"> functionbtnDelete(num){ if(confirm("你確認(rèn)刪除嗎?")){ alert("刪除成功!"); location.href="std_kcxxProc.jsp?num="+num; } } </script><linkhref="../css/std.css"rel="stylesheet"/></head><body> <% Connectionconn=null; PreparedStatementpstm=null; ResultSetrs=null; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Stringurl="jdbc:sqlserver://localhost:1433;databasename=kcglxt"; conn=DriverManager.getConnection(url,"sa","123456"); Stringid=(String)session.getAttribute("username"); Stringname=(String)session.getAttribute("name"); Stringsql="select*fromcoursewherecourse.numin(selectcoursenumfromchoosewherestudentnum=?)"; pstm=conn.prepareStatement(sql); pstm.setString(1,id); rs=pstm.executeQuery(); %><divclass="bg"> <divclass="div1"> <tableclass="size"> <tr> <tdwidth="95px"align="center"><ahref="std_grxx.jsp">個(gè)人信息</a></td> <tdwidth="95px"align="center"><ahref="std_kcxx.jsp">課程信息</a></td> <tdwidth="95px"align="center"><ahref="std_xk.jsp">選 課</a></td> <tdwidth="113px"align="center"><ahref="std_cf.jsp">查 分</a></td> <tdwidth="95px"align="center"><ahref="student.jsp">返回首頁</a></td> </tr> </table> </div> <divclass="div2"> 當(dāng)前位置——課程信息 </div> <divclass="div3"> 歡迎您:<%=id%> <%=name%> <ahref="../login.jsp">注銷</a> <ahref="std_xgmm.jsp">修改密碼</a> </div> <divclass="div4"> <tablestyle="color:#11449E"bgcolor="#F2F6FB"border="3"cellpadding="8"cellspacing="3"bordercolor="#C8DEFC"> <tr> <th>課程編號</th> <th>課程名</th> <th>學(xué)時(shí)</th> <th>學(xué)分</th> <th>課程類別</th> <th>開始時(shí)間</th> <th>結(jié)束時(shí)間</th> <th>教室</th> <th>教師</th> <th>總?cè)藬?shù)</th> <th>當(dāng)前人數(shù)</th> <th>狀態(tài)</th> <th>操作</th> </tr> <%while(rs.next()){%> <tr> <td><%=rs.getString("num")%></td> <td><%=rs.getString("name")%></td> <td><%=rs.getString("time")%></td> <td><%=rs.getString("score")%></td> <td><%=rs.getString("style")%></td> <td><%=rs.getString("starttime")%></td> <td><%=rs.getString("endtime")%></td> <td><%=rs.getString("classroom")%></td> <td><%=rs.getString("teacher")%></td> <td><%=rs.getString("allamount")%></td> <td><%=rs.getString("nowamount")%></td> <td><%=rs.getString("condition")%></td> <td><ahref="javascript:btnDelete('<%=rs.getString("num")%>')">刪除</a></td> </tr> <%}%> </table> <inputstyle="color:#11449E;background-color:#F2F6FB;border:solid#99B9E21px;cursor:pointer;"type="button"value="打印課程表"onclick="window.print();"/> </div></div><% conn.close(); pstm.close(); rs.close();%></body></html>7、std_kcxxProc.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"import="java.sql.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title></title></head><body> <% Connectionconn=null; PreparedStatementpstm=null; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Stringurl="jdbc:sqlserver://localhost:1433;databasename=kcglxt"; conn=DriverManager.getConnection(url,"sa","123456"); Stringnum=request.getParameter("num"); Stringsql="deletefromchoosewherecoursenum=?"; pstm=conn.prepareStatement(sql); pstm.setString(1,num); pstm.executeUpdate(); sql="updatecoursesetnowamount=nowamount-1wherenum=?"; pstm=conn.prepareStatement(sql); pstm.setString(1,num); pstm.executeUpdate(); response.sendRedirect("std_kcxx.jsp"); %></body></html>8、std_xgmm.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>Inserttitlehere</title><linkhref="../css/std.css"rel="stylesheet"/><scriptlanguage="javascript"> functioncheckForm1(){ varuser=document.myForm1.username.value; if(user==""){ alert("用戶名不能為空!"); document.myForm1.username.focus(); returnfalse; } varpwd=document.myForm1.oldmima.value; if((pwd.length<6)||(pwd.length>10)){ alert("密碼長度在6到10位之間!"); returnfalse; } varpwd1=parseInt(document.myForm1.newmima.value); varpwd2=parseInt(document.myForm1.newmima1.value); if(pwd1!=pwd2) { alert("兩次輸入的密碼不相同!"); returnfalse; } } </script></head><body><divclass="bg"> <divclass="div1"> <tableclass="size"> <tr> <tdwidth="95px"align="center"><ahref="std_grxx.jsp">個(gè)人信息</a></td> <tdwidth="95px"align="center"><ahref="std_kcxx.jsp">課程信息</a></td> <tdwidth="95px"align="center"><ahref="std_xk.jsp">選 課</a></td> <tdwidth="113px"align="center"><ahref="std_cf.jsp">查 分</a></td> <tdwidth="95px"align="center"><ahref="student.jsp">返回首頁</a></td> </tr> </table> </div> <divclass="div2"> 當(dāng)前位置——修改密碼 </div> <divclass="div3"> 歡迎您:<%=(String)session.getAttribute("username")%> <%=(String)session.getAttribute("name")%> <ahref="../login.jsp">注銷</a> </div> <divclass="div4"> <formaction="std_xgmmProc.jsp"method="post"name="myForm1"onsubmit="returncheckForm1();"> <tablestyle="color:#11449E"bgcolor="#F2F6FB"border="3"cellpadding="8"cellspacing="3"bordercolor="#C8DEFC"> <tr> <thcolspan="2">修改密碼</th> </tr> <tr> <tdalign="center">用戶名:</td> <td><inputtype="text"name="username"value=""/></td> </tr> <tr> <tdalign="center">原密碼:</td> <td><inputtype="password"name="oldmima"value=""/></td> </tr> <tr> <tdalign="center">新密碼:</td> <td><inputtype="password"name="newmima"/></td> </tr> <tr> <tdalign="center">確認(rèn)密碼:</td> <td><inputtype="password"name="newmima1"/></td> </tr> <tr> <tdcolspan="2"align="center"> <inputtype="submit"value="確定"/> <inputtype="reset"value="重置"/> </td> </tr> </table> </form> </div></div></body></html>9、std_xgmmProc.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"import="java.sql.*"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><basehref="<%=basePath%>"><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>MyJSP'xgmmProc.jsp'startingpage</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --></head><body><% request.setCharacterEncoding("utf-8"); Connectionconn=null; PreparedStatementpstm=null; ResultSetrs=null; Stringtpwd=null; PreparedStatementpstm2=null; Stringname=request.getParameter("username"); Stringpwd=request.getParameter("oldmima"); Stringnpwd=request.getParameter("newmima"); Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Stringurl="jdbc:sqlserver://localhost:1433;databasename=kcglxt"; conn=DriverManager.getConnection(url,"sa","123456"); Stringsql="selectpasswordfromstudentwherenum=?"; Stringsql1="updatestudentsetpassword=?wherenum=?"; pstm=conn.prepareStatement(sql); pstm.setString(1,name); pstm2=conn.prepareStatement(sql1); pstm2.setString(1,npwd); pstm2.setString(2,name); rs=pstm.executeQuery(); while(rs.next()){ tpwd=rs.getString("password"); } if(tpwd.equals(pwd)){ pstm2.executeUpdate(); } else response.sendRedirect("error.html"); response.sendRedirect("student.jsp"); %></body></html>10、std_xk.jsp<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"import="java.sql.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"""><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>課程管理系統(tǒng)——選課</title><linkhref="../css/std.css"rel="stylesheet"/></head><body> <% Connectionconn=null; PreparedStatementpstm1=null; PreparedStatementpstm2=null; ResultSetrs1=null; ResultSetrs2=null; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Stringurl="jdbc:sqlserver://localhost:1433;databasename=kcglxt"; conn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《砌體結(jié)構(gòu)章》課件
- 《電壓比較器的應(yīng)用》課件
- 單位管理制度合并選集【人力資源管理篇】十篇
- 單位管理制度分享匯編人力資源管理篇
- 單位管理制度呈現(xiàn)合集人力資源管理篇
- 寒假自習(xí)課 25春初中道德與法治八年級下冊教學(xué)課件 第三單元 第五課 第3課時(shí) 基本經(jīng)濟(jì)制度
- 《員工考績計(jì)算》課件
- 中國風(fēng)國潮風(fēng)古風(fēng)模板120
- 2013年高考語文試卷(福建)(空白卷)
- 建材行業(yè)會計(jì)資金運(yùn)作監(jiān)督工作總結(jié)
- 餐飲店購銷合同
- 文化資源數(shù)字化技術(shù)有哪些
- 2023年杭州聯(lián)合銀行校園招聘筆試歷年高頻考點(diǎn)試題答案詳解
- 灌裝軋蓋機(jī)和供瓶機(jī)設(shè)備驗(yàn)證方案
- 《國家中藥飲片炮制規(guī)范》全文
- 《鈷鉧潭西小丘記》教學(xué)設(shè)計(jì)(部級優(yōu)課)語文教案
- 人教版五年級下冊數(shù)學(xué)講義
- 安全工器具-變壓器絕緣油課件
- 瓦楞紙箱工藝流程演示文稿
- 神通數(shù)據(jù)庫管理系統(tǒng)v7.0企業(yè)版-3概要設(shè)計(jì)說明書
- 安置房項(xiàng)目二次結(jié)構(gòu)磚砌體工程專項(xiàng)施工方案培訓(xùn)資料
評論
0/150
提交評論