




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
/HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGYOracle數(shù)據(jù)庫系統(tǒng)應(yīng)用課程設(shè)計(jì)報(bào)告課設(shè)題目:學(xué)生成績管理系統(tǒng)專業(yè):軟件工程班級:K1373-4姓名:汪敏成績:完成日期:2016年6月20日-2016年6月26日指導(dǎo)教師:徐洪勝目錄前言…………………2需求分析……………3系統(tǒng)設(shè)計(jì)……………4數(shù)據(jù)庫設(shè)計(jì)…………6程序運(yùn)行……………17實(shí)習(xí)總結(jié)……………18附錄…………………34一、前言學(xué)生成績管理是一個(gè)學(xué)校必不可少的部分,隨著計(jì)算機(jī)和計(jì)算機(jī)知識的普及,學(xué)生成績管理系統(tǒng)得到了更大的發(fā)展空間,通過對學(xué)生考試管理系統(tǒng)的開發(fā),可以提高校務(wù)人員的工作效率。學(xué)生成績管理是一個(gè)學(xué)校不可缺少的部分,一個(gè)良好的學(xué)生成績管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?。學(xué)生考試管理系統(tǒng)對學(xué)校加強(qiáng)學(xué)生考試管理有著極其重要的作用.由于各個(gè)大學(xué)都在持續(xù)擴(kuò)招,學(xué)生的數(shù)量日益龐大,對于如何管理如此龐大的學(xué)生考試數(shù)據(jù)顯得更為復(fù)雜,傳統(tǒng)的手工成績管理不僅工作量大,而且容易出現(xiàn)問題,如:效率低、保密性差,另外時(shí)間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護(hù)都帶來了不少的困難。已不能適應(yīng)時(shí)代的發(fā)展。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識,它已進(jìn)入人類社會的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對學(xué)生成績信息進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點(diǎn)。例:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高管理者管理的效率,也是學(xué)校走向科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)設(shè)計(jì)這樣一套學(xué)生成考試?yán)碥浖蔀楹苡斜匾氖虑?二、需求分析1.功能需求學(xué)生基本信息及所選科目成績的錄入或?qū)搿;拘畔⒌牟樵儭卜窒?、班級;分科目與修改。對每系或每班各科成績進(jìn)行分析〔即求單科平均成績、及格率和優(yōu)秀率;對所開課程的成績分析〔求其平均成績,最高分和最低分;對學(xué)生考試成績進(jìn)行排名〔單科按系別或班級進(jìn)行排名,對每一個(gè)班級,同一學(xué)期學(xué)生總體成績進(jìn)行排名,并顯示各科成績信息不及格情況的統(tǒng)計(jì)、導(dǎo)出、打印2.系統(tǒng)需求該學(xué)生成績管理系統(tǒng)采用java語言開發(fā)研制,JavaBean作為行為模型,servlet作為響應(yīng)服務(wù)器,DIV+CSS+javascript設(shè)計(jì)網(wǎng)頁,oracle作為數(shù)據(jù)存儲。在完成用戶需求同時(shí),完成條件查詢等功能。針對學(xué)生成績及其數(shù)據(jù)特點(diǎn),可以全面實(shí)現(xiàn)對學(xué)生成績的插入、查詢、修改、刪除和輸出等功能的計(jì)算機(jī)管理。它能使學(xué)生成績數(shù)據(jù)的工作人員從繁重的工作中解脫出來,大大減輕了工作量,減少人為的工作失誤,全面提高學(xué)生成績管理的效率,從而使學(xué)校對于學(xué)生成績的管理水平和技術(shù)水平躍上一個(gè)新的臺階。3.系統(tǒng)開發(fā)環(huán)境1.開發(fā)語言:java+jsp2.開發(fā)工具:IE8.0,Tomcat,jdk1.7,dreamweaver3.數(shù)據(jù)庫:Oracle10g4.文檔編寫工具:word5.服務(wù)器端運(yùn)行環(huán)境:oracle10g,Tomcat,jdk1.76.客戶端運(yùn)行環(huán)境:瀏覽器三、系統(tǒng)設(shè)計(jì)1.功能模塊學(xué)生成績管理系統(tǒng)學(xué)生成績管理系統(tǒng)學(xué)生信息顯示信息輸入學(xué)生信息顯示信息輸入顯示全部信息照片上傳備注學(xué)分輸入出生日期輸入專業(yè)輸入性別選擇姓名輸入學(xué)號輸入顯示全部信息照片上傳備注學(xué)分輸入出生日期輸入專業(yè)輸入性別選擇姓名輸入學(xué)號輸入開始2.系統(tǒng)流程圖開始輸入學(xué)生信息輸入學(xué)生信息保存學(xué)生信息保存學(xué)生信息查詢學(xué)生信息查詢學(xué)生信息顯示學(xué)生信息顯示學(xué)生信息結(jié)束結(jié)束四、數(shù)據(jù)庫設(shè)計(jì)1.數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)學(xué)生表〔XSB字段名數(shù)據(jù)類型是否為空說明XHchar<6>Notnull學(xué)號〔主鍵XMchar<10>Notnull姓名XBchar<4>Notnull性別CSSJdate出生日期ZYchar<12>null專業(yè)ZXFNumber<2>null總學(xué)分BZVarchar2〔200NULL備注課程表〔KSB字段名數(shù)據(jù)類型是否為空說明KCHChar<3>Notnull課程號〔主鍵KCMchar<23>Notnull課程名KKXQNumber<1>NULLl開課學(xué)期XSNumber<2>NULL學(xué)時(shí)XFNumber<1>Notnull學(xué)分成績表〔CJB字段名數(shù)據(jù)類型是否為空說明XHchar<6>Notnull學(xué)號〔聯(lián)合主鍵KCHchar<3>Notnull課程號〔聯(lián)合主鍵CJNummber〔2NULL成績2.實(shí)體聯(lián)系圖管理學(xué)時(shí)課程名課程信息開課時(shí)期課程號出生時(shí)間總學(xué)分備注專業(yè)性別姓名學(xué)號學(xué)生信息管理學(xué)時(shí)課程名課程信息開課時(shí)期課程號出生時(shí)間總學(xué)分備注專業(yè)性別姓名學(xué)號學(xué)生信息管理管理學(xué)號課程號成績成績信息學(xué)分學(xué)生成績管理系統(tǒng)3.數(shù)據(jù)庫源代碼管理管理學(xué)號課程號成績成績信息學(xué)分學(xué)生成績管理系統(tǒng)/*創(chuàng)建表XSCP*/DROPTABLEXSZPCREATETABLEXSZP<XHchar<6>NOTNULLPRIMARYKEY,ZPblobNULL>;/*創(chuàng)建表KCB*/DROPTABLEKCBCREATETABLEKCB<KCHchar<3>NOTNULLPRIMARYKEY,KCMchar<23>NOTNULL,KKXQnumber<1>NULL,XSnumber<2>NULL,XFnumber<1>NOTNULL>;select*fromKCBInsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'101','計(jì)算機(jī)基礎(chǔ)',1,80,5>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'102','程序設(shè)計(jì)與語言',2,68,4>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'206','離散數(shù)學(xué)',4,68,4>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'208','數(shù)據(jù)結(jié)構(gòu)',5,68,4>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'210','計(jì)算機(jī)原理',5,85,5>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'209','操作系統(tǒng)',6,68,4>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'212','數(shù)據(jù)庫原理',7,68,4>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'301','計(jì)算機(jī)網(wǎng)絡(luò)',7,51,3>;InsertintoKCB<KCH,KCM,KKXQ,XS,XF>values<'302','軟件工程',7,51,3>;/*創(chuàng)建表CJB*/DROPTABLECJBCREATETABLECJB<XHchar<6>NOTNULL,KCHchar<3>NOTNULL,CJnumber<2>NULL,PRIMARYKEY<XH,KCH>>;select*fromCJBInsertintoCJB<XH,KCH,CJ>values<'101101','101',80>;InsertintoCJB<XH,KCH,CJ>values<'101101','102',78>;InsertintoCJB<XH,KCH,CJ>values<'101101','206',76>;InsertintoCJB<XH,KCH,CJ>values<'101103','101',62>;InsertintoCJB<XH,KCH,CJ>values<'101103','102',70>;InsertintoCJB<XH,KCH,CJ>values<'101103','206',81>;InsertintoCJB<XH,KCH,CJ>values<'101104','101',90>;InsertintoCJB<XH,KCH,CJ>values<'101104','102',84>;InsertintoCJB<XH,KCH,CJ>values<'101104','206',65>;InsertintoCJB<XH,KCH,CJ>values<'101102','102',78>;InsertintoCJB<XH,KCH,CJ>values<'101102','206',78>;InsertintoCJB<XH,KCH,CJ>values<'101106','101',65>;InsertintoCJB<XH,KCH,CJ>values<'101106','102',71>;InsertintoCJB<XH,KCH,CJ>values<'101106','206',80>;InsertintoCJB<XH,KCH,CJ>values<'101107','101',78>;InsertintoCJB<XH,KCH,CJ>values<'101107','102',80>;InsertintoCJB<XH,KCH,CJ>values<'101107','206',68>;InsertintoCJB<XH,KCH,CJ>values<'101108','101',85>;InsertintoCJB<XH,KCH,CJ>values<'101108','102',64>;InsertintoCJB<XH,KCH,CJ>values<'101108','206',87>;InsertintoCJB<XH,KCH,CJ>values<'101109','101',66>;InsertintoCJB<XH,KCH,CJ>values<'101109','102',83>;InsertintoCJB<XH,KCH,CJ>values<'101109','206',70>;InsertintoCJB<XH,KCH,CJ>values<'101110','101',95>;InsertintoCJB<XH,KCH,CJ>values<'101110','102',90>;InsertintoCJB<XH,KCH,CJ>values<'101110','206',89>;InsertintoCJB<XH,KCH,CJ>values<'101111','101',91>;InsertintoCJB<XH,KCH,CJ>values<'101111','102',70>;InsertintoCJB<XH,KCH,CJ>values<'101111','206',76>;InsertintoCJB<XH,KCH,CJ>values<'101113','101',63>;InsertintoCJB<XH,KCH,CJ>values<'101113','102',79>;InsertintoCJB<XH,KCH,CJ>values<'101113','206',60>;InsertintoCJB<XH,KCH,CJ>values<'101201','101',80>;InsertintoCJB<XH,KCH,CJ>values<'101202','101',65>;InsertintoCJB<XH,KCH,CJ>values<'101203','101',87>;InsertintoCJB<XH,KCH,CJ>values<'101204','101',91>;InsertintoCJB<XH,KCH,CJ>values<'101210','101',76>;InsertintoCJB<XH,KCH,CJ>values<'101216','101',81>;InsertintoCJB<XH,KCH,CJ>values<'101218','101',70>;InsertintoCJB<XH,KCH,CJ>values<'101220','101',82>;InsertintoCJB<XH,KCH,CJ>values<'101221','101',76>;InsertintoCJB<XH,KCH,CJ>values<'101241','101',90>;/*創(chuàng)建視圖XS_KC_CJ*/CREATEVIEWXS_KC_CJASSELECTXSB.XH,XSB.XM,XSB.ZY,KCB.KCH,KCB.KCM,CJB.CJFROMXSBCROSSJOINKCBLEFTOUTERJOINCJBONCJB.XH=XSB.XHANDCJB.KCH=KCB.KCH;/*創(chuàng)建觸發(fā)器*/CREATEORREPLACETRIGGERxs_deleteAFTERDELETEONXSBFOREACHROWDECLAREPRAGMAAUTONOMOUS_TRANSACTION;/*聲明自治事務(wù)*/BEGINDELETEFROMCJBWHEREXH=:OLD.XH;DELETEFROMXSZPWHEREXH=:OLD.XH;COMMIT;END;/*創(chuàng)建完整性約束*/ALTERTABLECJBADDCONSTRAINTFK_KCFOREIGNKEY<KCH>REFERENCESKCB<KCH>ONDELETECASCADE;/*創(chuàng)建存儲過程CJ_Data*/CREATEORREPLACEPROCEDURECJ_Data<in_xhINchar,in_kchINchar,in_cjINnumber>ASin_countnumber;in_xfnumber:=0;in_cjb_cjnumber:=0;BEGINSELECTXFINTOin_xfFROMKCBWHEREKCH=in_kch;SELECTCOUNT<*>INTOin_countFROMCJBWHEREXH=in_xhANDKCH=in_kch;IFin_count>0THENSELECTCJINTOin_cjb_cjFROMCJBWHEREXH=in_xhANDKCH=in_kch;DELETEFROMCJBWHEREXH=in_xhANDKCH=in_kch;IFin_cjb_cj>=60THENUPDATEXSBSETZXF=ZXF-in_xfWHEREXH=in_xh;ENDIF;ENDIF;IFin_cj<>-1THENINSERTINTOCJBVALUES<in_xh,in_kch,in_cj>;IFin_cj>=60THENUPDATEXSBSETZXF=ZXF+in_xfWHEREXH=in_xh;ENDIF;ENDIF;COMMIT;END;程序運(yùn)行表的建立①學(xué)生表②課程表③成績表實(shí)驗(yàn)總結(jié)雖然只是很小很簡單的系統(tǒng),但是不僅僅是對這階段學(xué)習(xí)的知識的一個(gè)鞏固,對項(xiàng)目的開發(fā)又多增了一層了解和領(lǐng)悟。經(jīng)過這次課程設(shè)計(jì)的鍛煉,我對數(shù)據(jù)庫存儲過程、觸發(fā)器、PL/SQL編程掌握的更加牢固,對oracle10g的體系結(jié)構(gòu)有了更深的理解,對sql語句進(jìn)行了一次復(fù)習(xí),對jsp學(xué)習(xí)也有很大提升,受益匪淺。在這次課程設(shè)計(jì)中,我也發(fā)現(xiàn)了許多不足之處:前期的準(zhǔn)備還不足,需求分析不完善,這就導(dǎo)致了在項(xiàng)目開發(fā)過程中還出現(xiàn)了功能反復(fù)修改的情況。數(shù)據(jù)庫設(shè)計(jì)不夠完善,沒多方面的考慮完善,導(dǎo)致在編碼過程中還多次的修改數(shù)據(jù)庫。整體項(xiàng)目框架沒規(guī)劃好,項(xiàng)目的前期就應(yīng)該把項(xiàng)目的整體框架和包類,列出和規(guī)范分類,這樣能使在其后編碼階段統(tǒng)一的模塊化的編碼,也能給整合項(xiàng)目的時(shí)候節(jié)省時(shí)間。數(shù)據(jù)庫文字編碼和項(xiàng)目開發(fā)工具文字編碼不一致,導(dǎo)致中期測試時(shí)輸入數(shù)據(jù)庫的中文數(shù)據(jù)變成亂碼,經(jīng)老師指導(dǎo)統(tǒng)一改為utf-8后解決系統(tǒng)還存在許多問題,如界面不夠友好,美化不好,不符合軟件工程的要求等最后感謝老師對我的指導(dǎo)和建議,在實(shí)訓(xùn)期間我遇到了許多困難,老師總是很認(rèn)真的為我解答,通過老師的細(xì)心指導(dǎo)使我們在數(shù)據(jù)庫設(shè)計(jì)方面的知識得到了擴(kuò)充,懂得了許多以前不知道的知識,使我學(xué)習(xí)到了許多專業(yè)知識及數(shù)據(jù)庫設(shè)計(jì)方面的寶貴經(jīng)驗(yàn)。通過本次課程設(shè)計(jì),我從指導(dǎo)老師身上學(xué)到了很多東西,老師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)的精神和深厚的理論水平都使我收益匪淺,并給我留下了深刻的印象。老師在整個(gè)設(shè)計(jì)過程中,幫助我解決了不少的難題,給予了我巨大的幫助和鼓勵(lì),并細(xì)心的為我介紹在數(shù)據(jù)庫設(shè)計(jì)方面的知識,這使我得到不少的長進(jìn),這對于我以后的工作和學(xué)習(xí)都起著巨大的影響。附錄:程序代碼packageorg.jdbc;importjava.sql.*;publicclassDBConn{privateConnectionconn=null;publicDBConn<>{this.conn=this.getConnection<>; //獲取數(shù)據(jù)庫連接 }/**獲取連接類*/publicConnectiongetConnection<>{try{/*下面是連接Oracle的代碼*//*加載Oracle的jdbc驅(qū)動程序*/ Class.forName<"oracle.jdbc.driver.OracleDriver">;//連接到驅(qū)動程序系統(tǒng)中已經(jīng)注冊的驅(qū)動程序,將會被依次進(jìn)行裝載和連接//直到找到一個(gè)正確的驅(qū)動程序?yàn)橹筩onn=DriverManager.getConnection<"jdbc:oracle:thin:@localhost:1521:XSCJ","SCOTT","tiger">;//建立了到Oracle的連接 }catch<Exceptione>{ e.printStackTrace<>; }returnconn; }publicConnectiongetConn<>{ //返回一個(gè)Connectionreturnconn; }}packageorg.jdbc;importjava.sql.*;importjava.util.*;importorg.vo.*;publicclassScoreJdbc{ privateConnectionconn=null; privateResultSetrs=null; privatePreparedStatementpsmt=null; publicScoreJdbc<>{ } publicConnectiongetConn<>{ try{ if<this.conn==null||this.conn.isClosed<>>{ DBConnmc=newDBConn<>; //創(chuàng)建連接 this.conn=mc.getConn<>; //獲取Connection對象 } }catch<SQLExceptione>{ e.printStackTrace<>; } returnconn; } /**查詢所有課程*/ publicListshowCourse<>throwsSQLException{ Stringsql="select*fromKCB"; List<Course>courseList=newArrayList<Course><>; try{ psmt=this.getConn<>.prepareStatement<sql>; rs=psmt.executeQuery<>; /*讀出所有課程號和課程名放入studentLis中*/ while<rs.next<>>{ Coursecourse=newCourse<>; course.setKch<rs.getString<"kch">>; course.setKcm<rs.getString<"kcm">>; courseList.add<course>; //將課程信息加入到ArrayList容器中 } returncourseList; //返回給控制器 }catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ psmt.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } try{ conn.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } } returncourseList; } /**查詢所有學(xué)生*/ publicList<Student>showStudent<>throwsSQLException{ Stringsql="select*fromXSB"; List<Student>studentList=newArrayList<Student><>; try{ psmt=this.getConn<>.prepareStatement<sql>; rs=psmt.executeQuery<>; /*讀出所有學(xué)生學(xué)號和姓名放入studentLis中*/ while<rs.next<>>{ Studentstudent=newStudent<>; student.setXh<rs.getString<"xh">>; student.setXm<rs.getString<"xm">>; studentList.add<student>; } returnstudentList; //返回給控制器 }catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ psmt.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } try{ conn.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } } returnstudentList; } /**添加成績*/ publicScoreaddScore<Scorescore>{ CallableStatementstmt=null; try{ conn=this.getConn<>; stmt=conn.prepareCall<"{callCJ_Data<?,?,?>}">; //為調(diào)用CJ_Data存儲過程準(zhǔn)備 stmt.setString<1,score.getXh<>>; //輸入存儲過程的第1個(gè)參數(shù) stmt.setString<2,score.getKch<>>; //輸入存儲過程的第2個(gè)參數(shù) stmt.setInt<3,score.getCj<>>; //輸入存儲過程的第3個(gè)參數(shù) stmt.executeUpdate<>; //調(diào)用CJ_Data存儲過程,執(zhí)行語句 }catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ stmt.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } try{ conn.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } } returnscore; }}packageorg.jdbc;importjava.sql.*;importjava.util.ArrayList;importjava.util.List;importorg.vo.*;publicclassStudentJdbc{ privateConnectionconn=null; privatePreparedStatementpsmt=null; privateResultSetrs=null; publicStudentJdbc<>{ } /**獲取數(shù)據(jù)庫連接*/ publicConnectiongetConn<>{ try{ if<this.conn==null||this.conn.isClosed<>>{ DBConnmc=newDBConn<>; //創(chuàng)建數(shù)據(jù)庫連接類 this.conn=mc.getConn<>; //獲取Connection對象 } }catch<SQLExceptione>{ e.printStackTrace<>; } returnconn; } /**添加學(xué)生*/ publicStudentaddStudent<Studentstudent>{ Stringsql1="insertintoXSB<xh,xm,xb,cssj,zy,zxf,bz>values<?,?,?,?,?,?,?>"; Stringsql2="insertintoXSZP<xh,zp>values<?,?>"; try{ psmt=this.getConn<>.prepareStatement<sql1>; //預(yù)編譯語句 psmt.setString<1,student.getXh<>>; //收集數(shù)據(jù) psmt.setString<2,student.getXm<>>; psmt.setString<3,student.getXb<>>; psmt.setTimestamp<4,newTimestamp<student.getCssj<>.getTime<>>>; //插入時(shí)間值 psmt.setString<5,student.getZy<>>; psmt.setInt<6,student.getZxf<>>; psmt.setString<7,student.getBz<>>; psmt.execute<>; //執(zhí)行語句 psmt=this.getConn<>.prepareStatement<sql2>; //預(yù)編譯語句 psmt.setString<1,student.getXh<>>; //收集數(shù)據(jù) psmt.setBytes<2,student.getZp<>>; psmt.execute<>; //執(zhí)行語句 }catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ psmt.close<>; //關(guān)閉PreparedStatement對象 }catch<SQLExceptione>{ e.printStackTrace<>; } try{ conn.close<>; //關(guān)閉Connection對象 }catch<SQLExceptione>{ e.printStackTrace<>; } } returnstudent; //返回Student對象給Action } /**查詢所有學(xué)生*/ publicListshowStudent<>throwsSQLException{ Stringsql="select*fromXSB"; //創(chuàng)建一個(gè)ArrayList容器,將從數(shù)據(jù)庫中查詢的學(xué)生信息存放在容器中 ListstudentList=newArrayList<>; try{ psmt=this.getConn<>.prepareStatement<sql>; rs=psmt.executeQuery<>; //執(zhí)行語句,返回所查詢的學(xué)生信息 //讀取ResultSet中的數(shù)據(jù),放入到ArrayList中 while<rs.next<>>{ Studentstudent=newStudent<>; student.setXh<rs.getString<"xh">>; //給student對象賦值 student.setXm<rs.getString<"xm">>; student.setXb<rs.getString<"xb">>; student.setCssj<rs.getDate<"cssj">>; student.setZy<rs.getString<"zy">>; student.setZxf<rs.getInt<"zxf">>; student.setBz<rs.getString<"bz">>; studentList.add<student>; //將student對象放入到ArrayList中 } returnstudentList; //返回給控制器 }catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ if<rs!=null>{ rs.close<>; rs=null; } if<psmt!=null>{ psmt.close<>; psmt=null; } if<conn!=null>{ conn.close<>; conn=null; } }catch<SQLExceptione>{ e.printStackTrace<>; } } returnstudentList; } /**查詢一個(gè)學(xué)生*/ publicStudentshowOneStudent<Stringxh>{ ResultSetrs=null; Stringsql1="select*fromXSBwherexh="+xh; Stringsql2="selectzpfromXSZPwherexh="+xh; Studentstudent=newStudent<>; try{ psmt=this.getConn<>.prepareStatement<sql1>; rs=psmt.executeQuery<>; /**查詢一個(gè)學(xué)生*/ while<rs.next<>>{ student.setXh<rs.getString<"xh">>; student.setXm<rs.getString<"xm">>; student.setXb<rs.getString<"xb">>; student.setCssj<rs.getDate<"cssj">>; student.setZy<rs.getString<"zy">>; student.setZxf<rs.getInt<"zxf">>; student.setBz<rs.getString<"bz">>; } psmt=this.getConn<>.prepareStatement<sql2>; rs=psmt.executeQuery<>; while<rs.next<>> { student.setZp<rs.getBytes<"zp">>; } }catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ psmt.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } try{ conn.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } } returnstudent; } /**刪除一個(gè)學(xué)生*/ publicvoiddeleteStudent<Stringxh>{ Stringsql="deletefromXSBwherexh="+xh; try{ psmt=this.getConn<>.prepareStatement<sql>; psmt.execute<>; //將該學(xué)生的信息從數(shù)據(jù)庫中刪除 }catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ psmt.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } try{ conn.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } } } /**更新一個(gè)學(xué)生*/ publicStudentupdateSaveStudent<Studentstudent>{ Stringsql1="updateXSBsetxh=?,xm=?,xb=?,cssj=?,zy=?,zxf=?,bz=?wherexh="+student.getXh<>; Stringsql2="updateXSZPsetxh=?,zp=?wherexh="+student.getXh<>; try{ psmt=this.getConn<>.prepareStatement<sql1>; psmt.setString<1,student.getXh<>>; psmt.setString<2,student.getXm<>>; psmt.setString<3,student.getXb<>>; System.out.println<student.getCssj<>>; psmt.setTimestamp<4,newTimestamp<student.getCssj<>.getTime<>>>; psmt.setString<5,student.getZy<>>; psmt.setInt<6,student.getZxf<>>; psmt.setString<7,student.getBz<>>; psmt.execute<>; //更新學(xué)生基本信息 psmt=this.getConn<>.prepareStatement<sql2>; psmt.setString<1,student.getXh<>>; psmt.setBytes<2,student.getZp<>>; psmt.execute<>; //更新學(xué)生照片信息 } catch<Exceptione>{ e.printStackTrace<>; }finally{ try{ psmt.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } try{ conn.close<>; }catch<SQLExceptione>{ e.printStackTrace<>; } } returnstudent; //返回給控制器 }}Struts2配置文件:<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "/dtds/struts-2.0.dtd"><struts> <packagename="default"extends="struts-default"> <!--添加學(xué)生信息--> <actionname="addStudent"class="org.action.StudentAction"> <resultname="success">/addStudent_success.jsp</result> <resultname="error">/addStudent.jsp</result> <resultname="input">/addStudent.jsp</result> </action> <!--查詢所有學(xué)生--><actionname="showAllStudent"class="org.action.StudentAction"method="showAllStudent"> <resultname="success">/showStudent.jsp</result></action><!--查詢一個(gè)學(xué)生--><actionname="showOneStudent"class="org.action.StudentAction"method="showOneStudent"> <resultname="success">/showOneStudent.jsp</result></action><actionname="getImage"class="org.action.StudentAction"method="getImage"></action> <!--刪除學(xué)生--><actionname="deleteStudent"class="org.action.StudentAction"method="deleteStudent"> <resultname="success">/showAllStudent.jsp</result></action><!--查詢要更新的學(xué)生信息--><actionname="updateStudent"class="org.action.StudentAction"method="showOneStudent"> <resultname="success">/updateStudent.jsp</result></action><!--更新學(xué)生信息-->ction"method="updateSaveStudent"> <resultname="success">/showAllStudent.jsp</result></action> <!--查詢學(xué)生和課程信息--><actionname="showAllScore"class="org.action.ScoreAction"method="showAllScore"> <resultname="success">/showScore.jsp</result></action><!--添加學(xué)生成績-->reAction"method="addScore"> <resultname="success">/addScore_success.jsp</result></action> </package></struts>showStudent.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><bodybgcolor="D9DFAA"background="image/bgcolor1.jpg"style="background-repeat:no-repeat;background-position:center"><center><h2>學(xué)生信息一覽</h2><hr> <tableborder="1"> <tralign="center"> <td>學(xué)號</td><td>姓名</td><td>性別</td><td>專業(yè)</td> <td>出生時(shí)間</td><td>總學(xué)分</td><td>備注</td><td>詳細(xì)信息</td> <tdcolspan="2">操作</td> </tr> <s:iteratorvalue="#request.studentList"id="xs"> <tr> <td><s:propertyvalue="#xs.xh"/></td> <td><s:propertyvalue="#xs.xm"/></td> <td><s:propertyvalue="#xs.xb"/></td> <td><s:propertyvalue="#xs.zy"/></td> <td><s:datename="#xs.cssj"format="yyyy-MM-dd"/></td> <td><s:propertyvalue="#xs.zxf"/></td> <td><s:propertyvalue="#xs.bz"/></td> <td><ahref="showOneStudent.action?student.xh=<s:propertyvalue="#xs.xh"/>">詳細(xì)信息 </a></td> <td><ahref="deleteStudent.action?student.xh=<s:propertyvalue="#xs.xh"/>"onClick= "if<!confirm<'確定刪除該信息嗎?'>>returnfalse;elsereturntrue;">刪除</a></td> <td><ahref="updateStudent.action?student.xh=<s:propertyvalue="#xs.xh"/>">修改</a></td> </tr> </s:iterator></table><p></p></center></body></html>Showscore.jsp<%@pagelanguage="java"pageEncoding="utf-8"%><%@ tagliburi="/struts-tags"prefix="s"%><html><bodybgcolor="D9DFAA"background="image/bgcolor1.jpg"style="background-repeat:no-repeat;background-position:center"> <center> <h3>錄入學(xué)生成績</h3><hr> <s:formaction="addScore"method="post"> <tableborder="1"cellspacing="1"cellpadding="8"width="400"> <tr> <tdwidth="100">請選擇學(xué)生:</td> <td> <selectname="score.xh"> <s
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自來水承包協(xié)議書
- 環(huán)保項(xiàng)目投資合作協(xié)議
- 風(fēng)心病病人的觀察與護(hù)理
- 空間環(huán)境監(jiān)測系統(tǒng)相關(guān)項(xiàng)目投資計(jì)劃書
- 農(nóng)業(yè)機(jī)械采購和技術(shù)支持服務(wù)合同協(xié)議
- 洗滌劑用4A沸石相關(guān)行業(yè)投資規(guī)劃報(bào)告范本
- 視頻監(jiān)控施工合同
- 傳真件有效協(xié)議
- CF未來行業(yè)分析模板
- 小王子里的友誼故事解讀
- 《中國古代寓言故事》導(dǎo)讀課教學(xué)設(shè)計(jì)
- 樂器之長笛精品課件
- 西方文明史(第五版)英文版全書ppt完整版課件整本書電子教案最全教學(xué)教程
- 胸膜疾病課件
- ISO-IEC17025-2017實(shí)驗(yàn)室管理體系全套程序文件
- 挖掘機(jī)液壓原理動作分解
- (高清版)輻射供暖供冷技術(shù)規(guī)程JGJ142-2012
- 重慶危險(xiǎn)性較大的分部分項(xiàng)工程安全管理實(shí)施細(xì)則
- 三菱 PLC FX2N-4AD 4DA 模擬量模塊教材(課堂PPT)
- 有機(jī)金屬化學(xué)1
- JIT標(biāo)準(zhǔn)作業(yè)作業(yè)指導(dǎo)書
評論
0/150
提交評論