版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
./《Java程序設(shè)計》課程設(shè)計報告書課題名稱基于Java的教師檔案管理系統(tǒng)的設(shè)計姓名學(xué)號學(xué)院專業(yè)指導(dǎo)教師2016年6月28日一、設(shè)計任務(wù)及要求:1.采用B/S模式進(jìn)行開發(fā),其優(yōu)點(diǎn)是后臺與前臺處理層次分明,而且符合眾多已經(jīng)習(xí)慣網(wǎng)頁方式的用戶。2.采用面向?qū)ο蟮拈_發(fā)與設(shè)計理念。運(yùn)用面向?qū)ο蠹夹g(shù)的前提是對整體系統(tǒng)的高度和準(zhǔn)確抽象,通過它可以保證系統(tǒng)良好的框架,進(jìn)而帶來產(chǎn)品較強(qiáng)的穩(wěn)定性和運(yùn)行效率。3.采用模塊化設(shè)計。模塊化設(shè)計要求將整個系統(tǒng)劃分成基于小的模塊,有利于代碼的重載,簡化設(shè)計和實現(xiàn)過程。4.簡單方便的系統(tǒng)界面。設(shè)計簡單友好的系統(tǒng)界面,方便用戶較快的適應(yīng)系統(tǒng)的操作。5.速度優(yōu)先原則。由于此工具最重要的評測標(biāo)準(zhǔn)就是速度,因此在設(shè)計過程中,具體過程盡量做到資源占用少,速度快。6.設(shè)計既要突出重點(diǎn),又要細(xì)致周到。要符合設(shè)計需求,在有可能改進(jìn)的地方進(jìn)行擴(kuò)充,使系統(tǒng)更適應(yīng)用戶的需要。指導(dǎo)教師簽名:年月日二、指導(dǎo)教師評語:指導(dǎo)教師簽名:年月日三、成績驗收蓋章年月日基于Java的教師檔案管理系統(tǒng)系統(tǒng)設(shè)計譚維雋1設(shè)計目的長久以來,教職工的管理工作大多數(shù)都采用的是傳統(tǒng)的手工方式來記錄相關(guān)信息,這種管理方式存在很多缺點(diǎn),比如說,教職工信息、工資信息的錄入,查詢,更新,分析都要完全依賴管理人員的手工記錄和人工分析,人工記錄是相當(dāng)麻煩的。為滿足需求,決定采用各種編程語言JSP開發(fā)了基于B/S架構(gòu)的教師檔案管理系統(tǒng),教師檔案管理系統(tǒng)是涉及信息科學(xué)、數(shù)據(jù)計算和計算機(jī)技術(shù)的復(fù)雜的人機(jī)交互系統(tǒng)。通過這些系統(tǒng),可以對教職工和管理進(jìn)行智能化管理,有效地記錄并查詢教職工的各項情況,為管理者提供了諸多方便。2設(shè)計的主要容和要求2.1數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計我們知道,數(shù)據(jù)庫概念模型獨(dú)立于任何特定的數(shù)據(jù)庫管理系統(tǒng),因此,需要根據(jù)具體使用的數(shù)據(jù)庫管理系統(tǒng)的特點(diǎn)進(jìn)行轉(zhuǎn)換。即轉(zhuǎn)化為按計算機(jī)觀點(diǎn)處理的邏輯關(guān)系模型,E-R模型向關(guān)系數(shù)據(jù)庫模型轉(zhuǎn)換應(yīng)遵循下列原則:*每一個實體要轉(zhuǎn)換成一個關(guān)系*所有的主鍵必須定義非空〔NOTNULL*對于二元聯(lián)系應(yīng)按照一對多、弱對實、一對一、多對多等聯(lián)系來定義外鍵。根據(jù)E-R模型,教師檔案管理系統(tǒng)建立了以下邏輯數(shù)據(jù)結(jié)構(gòu),下面是各數(shù)據(jù)表的詳細(xì)說明?!?教師信息表主要是記錄了教師的基本信息。表結(jié)構(gòu)如表2.1所示。表2.1教師信息表<t_jaoshi>列名數(shù)據(jù)類型長度允許空是否主鍵說明idint4否是IDgonghaovarchar50否否教師號xingmingvarchar50否否xingbievarchar50否否性別nianlingvarchar20否否年齡shengrivarchar20否否出生日期gongzuovarchar50否否工作時間zhuanyevarchar50否否專業(yè)zhaopianvarchar50否否照片beizhuvarchar50否否備注信息<2>工資信息表主要是記錄了教職工工資的基本信息。表結(jié)構(gòu)如表2.2所示。表2.2工資信息表<t_gongzi>列名數(shù)據(jù)類型長度允許空是否主鍵說明idint4否是IDjsidvarchar50否否教師IDriqivarchar50否否工資月份gongzivarchar50否否工資數(shù)jiangjinvarchar20否否獎金<3>管理員信息表主要記錄的管理員的賬號信息,包括用戶名和密碼,表結(jié)構(gòu)如表2.3所示。表2.3管理員信息表<t_admin>列名數(shù)據(jù)類型長度允許空是否主鍵說明userIdint4否是編號userNamevarchar50否否用戶名userPwvarchar50否否密碼2.2數(shù)據(jù)庫的連接原理采用JDBC連接數(shù)據(jù)庫的方式,只需在工程中導(dǎo)入對應(yīng)數(shù)據(jù)庫的jar包,就可以方便的對數(shù)據(jù)庫進(jìn)行連接,在程序中,用Class.forName<>方法來加載驅(qū)動程序,在用DriverManager的getConnection〔方法就可以創(chuàng)建一個數(shù)據(jù)庫連接。程序采用的是DAO模式來操作數(shù)據(jù)庫,DAO<DataAccessObject,數(shù)據(jù)訪問對象>,是Java編程中的一種經(jīng)典模式,已被廣泛應(yīng)用,也是J2EE架構(gòu)中持久層框架的基礎(chǔ)知識,基于分層次式的軟件架構(gòu)來實現(xiàn)對數(shù)據(jù)庫的訪問操作。DAO模式的主要思想就是從抽象數(shù)據(jù)源獲取與操縱數(shù)據(jù)的方法。抽象數(shù)據(jù)的含義就是編寫應(yīng)用程序的程序員不必關(guān)心數(shù)據(jù)庫的物理位置,已經(jīng)是何種數(shù)據(jù)庫,只需使用封裝數(shù)據(jù)庫中表示記錄的數(shù)據(jù)對象即可。其思想如圖2.4所示:封裝使用封裝使用DataSourceDataAccessObjectBusinessObjectDataSourceDataAccessObjectBusinessObject創(chuàng)建/使用獲取/修改創(chuàng)建/使用獲取/修改DataTransferObjectDataTransferObject圖2.4DAO模式類圖圖中BussinessObject是業(yè)務(wù)對象,是使用DAO模式的客戶端;DataTransferObject數(shù)據(jù)傳輸對象,在應(yīng)用程序不同層次之間傳輸對象,在一個分布式應(yīng)用程序中,通常可以提高整理的性能;DataObjectAcces數(shù)據(jù)輸入/輸出對象封裝了對數(shù)據(jù)源的一些基本操作;DataSource指的是數(shù)據(jù)源。可以從圖中看出,DAO模式分離了業(yè)務(wù)邏輯和數(shù)據(jù)羅即將,是的編寫的軟件具有良好的層次式體系結(jié)構(gòu)。本系統(tǒng)為了方便數(shù)據(jù)庫的操作,主要使用DBContent的對象來接一個數(shù)據(jù)庫〔建立一個類DBContent,代碼如代碼1。2.3系統(tǒng)功能實現(xiàn)在管理信息系統(tǒng)的生命周期中,僅過了需求分析、系統(tǒng)設(shè)計等階段之后,便開始了系統(tǒng)實施階段。在系統(tǒng)分析和設(shè)計階段,系統(tǒng)開發(fā)工作主要是集中在邏輯、功能和技術(shù)設(shè)計上,系統(tǒng)實施階段要繼承此前面各個階段的工作成果,將技術(shù)設(shè)計轉(zhuǎn)化為物理實現(xiàn),因此系統(tǒng)實施的成果是系統(tǒng)分析和設(shè)計階段的結(jié)晶。2.3.1系統(tǒng)登陸頁1.描述:為了保證系統(tǒng)的安全性,要先使用本系統(tǒng)必須先登陸到系統(tǒng)中。2.在登陸頁面輸入用戶名和密碼以,選擇登陸身份后,點(diǎn)擊提交按鈕,跳轉(zhuǎn)到登陸的service中,在該service中會對用戶名,密碼,驗證碼進(jìn)行判斷,并根據(jù)相應(yīng)的用戶角色進(jìn)入對應(yīng)的頁面,代碼如代碼2。2.3.2系統(tǒng)主頁面1.描述:管理員主頁面:左方頁面展示了管理員可操作的七大功能,進(jìn)入相關(guān)的管理頁面可以到子菜單,并且高亮顯示,每個管理模塊下面都有相應(yīng)的子菜單。2.在每個jsp頁面將會對相關(guān)用戶進(jìn)行攔截操作,這樣可以提高安全性,防止用戶不經(jīng)過登陸頁面而進(jìn)入任何子菜單頁面,如代碼3:2.3.3教職工信息管理〔1教職工錄入1.描述:管理員輸入教職工相關(guān)正確信息后點(diǎn)擊錄入按鈕,如果是沒有輸入完整的信息,都會給出相應(yīng)的錯誤提示,不能錄入成功。輸入數(shù)據(jù)都通過form表單中定義的方法onsubmit="returncheckForm<>"來檢查,checkForm<>函數(shù)中是各種的校驗輸入數(shù)據(jù)的方式。2.流程圖如下圖4所示:〔2教職工管理1.描述:管理員點(diǎn)擊左側(cè)的菜單"教職工管理",頁面跳轉(zhuǎn)到做教職工界面,調(diào)用后臺的servlet類查詢所有教職工的信息。2.教職工管理關(guān)鍵代碼如代碼4:2.3.4工資信息管理〔1工資錄入1.描述:在此頁面主要是輸入工資數(shù)、獎金等信息,然后選擇教職工,所有信息都不能夠為空,是否為空也是通過form表單中的onsubmit="returncheckForm<>來檢查?!?工資信息管理1.描述:管理員點(diǎn)擊左側(cè)的菜單"工資管理",頁面跳轉(zhuǎn)到工資管理界面,調(diào)用后臺的gongziServlet類查詢出所有的工資信息,并把這些信息封轉(zhuǎn)到數(shù)據(jù)集合List中,綁定到request對象,然后頁面跳轉(zhuǎn)到相應(yīng)的jsp,顯示出來。2.工資管理關(guān)鍵代碼代碼5:〔3修改個人密碼1.描述:輸入用戶名和用戶的原有密碼,輸入新密碼以后點(diǎn)擊修改按鈕即可修改密碼成功?!?安全退出系統(tǒng)1.描述:點(diǎn)此按鈕回到系統(tǒng)的主頁面。2.關(guān)鍵代碼如代碼6。3整體設(shè)計方案4流程圖設(shè)計登陸系統(tǒng)登陸系統(tǒng)管理員錄入教職工信息管理員錄入教職工信息系統(tǒng)驗證教職工信息錄入成功結(jié)束通過未通過圖4教職工錄入流程圖5程序設(shè)計代碼1:publicDBContent<>{ StringCLASSFORNAME=".SqlServer.jdbc.Driver";//連接數(shù)據(jù)庫的驅(qū)動 Stringurl="jdbc:SqlServer://localhost:3306/jzggl"; Stringuser="root";//連接數(shù)據(jù)庫的用戶名 Stringpassword="root";//連接數(shù)據(jù)庫的密碼 try{ Class.forName<CLASSFORNAME>; con=DriverManager.getConnection<url,user,password>;//加載數(shù)據(jù)庫的驅(qū)動 stmt=con.createStatement<ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE>; } catch<Exceptionex>{ ex.printStackTrace<>; } } 代碼2publicStringlogin<StringuserName,StringuserPw,intuserType>{ try { Thread.sleep<700>; }catch<InterruptedExceptione> { //TODOAuto-generatedcatchblock e.printStackTrace<>; } Stringresult="no"; if<userType==0>//系統(tǒng)管理員登陸 { Stringsql="fromTAdminwhereuserName=?anduserPw=?"; Object[]con={userName,userPw}; ListadminList=adminDAO.getHibernateTemplate<>.find<sql,con>; if<adminList.size<>==0> { result="no"; } else { WebContextctx=WebContextFactory.get<>; HttpSessionsession=ctx.getSession<>; TAdminadmin=<TAdmin>adminList.get<0>; session.setAttribute<"userType",0>; session.setAttribute<"admin",admin>; result="yes"; } } if<userType==1> { } if<userType==2> { } returnresult; }代碼3if<session.getAttribute<"user">==null>{out.print<"<script>alert<'請先登錄!'>;window.open<'../index.jsp','_self'></script>">; }代碼4publicvoidjihuayuanAdd<HttpServletRequestreq,HttpServletResponseres>publicvoidjiaoshiDel<HttpServletRequestreq,HttpServletResponseres> { intid=Integer.parseInt<req.getParameter<"id">>; Stringdel="yes"; Stringsql="updatet_jiaoshisetdel=?whereid=?"; Object[]params={del,id}; DBmydb=newDB<>; mydb.doPstm<sql,params>; mydb.closed<>; req.setAttribute<"message","教師信息刪除成功!">; req.setAttribute<"path","jiaoshi?type=jiaoshiMana">;StringtargetURL="/common/success.jsp"; dispatch<targetURL,req,res>; } publicvoidjiaoshiUpd<HttpServletRequestreq,HttpServletResponseres> { intid=Integer.parseInt<req.getParameter<"id">>; Stringgonghao=req.getParameter<"gonghao">; Stringxingming=req.getParameter<"xingming">; Stringxingbie=req.getParameter<"xingbie">; Stringnianling=req.getParameter<"nianling">; Stringshengri=req.getParameter<"shengri">; Stringgongzuo=req.getParameter<"gongzuo">; Stringzhuanye=req.getParameter<"zhuanye">; Stringzhaopian=req.getParameter<"zhaopian">; Stringbeizhu=req.getParameter<"beizhu">; Stringsql="updatet_jiaoshisetgonghao=?,xingming=?,xingbie=?,nianling=?,shengri=?,gongzuo=?,zhuanye=?,zhaopian=?,beizhu=?whereid=?"; Object[]params={gonghao,xingming,xingbie,nianling,shengri,gongzuo,zhuanye,zhaopian,beizhu,id}; DBmydb=newDB<>; mydb.doPstm<sql,params>; mydb.closed<>; req.setAttribute<"message","教師信息修改成功!">; req.setAttribute<"path","jiaoshi?type=jiaoshiMana">;StringtargetURL="/common/success.jsp"; dispatch<targetURL,req,res>; } publicvoidjiaoshiAdd<HttpServletRequestreq,HttpServletResponseres> { Stringgonghao=req.getParameter<"gonghao">; Stringxingming=req.getParameter<"xingming">; Stringxingbie=req.getParameter<"xingbie">; Stringnianling=req.getParameter<"nianling">; Stringshengri=req.getParameter<"shengri">; Stringgongzuo=req.getParameter<"gongzuo">; Stringzhuanye=req.getParameter<"zhuanye">; Stringzhaopian=req.getParameter<"zhaopian">; Stringbeizhu=req.getParameter<"beizhu">; Stringdel="no"; Stringsql="insertintot_jiaoshi<gonghao,xingming,xingbie,nianling,shengri,gongzuo,zhuanye,zhaopian,beizhu,del>"+ "values<?,?,?,?,?,?,?,?,?,?>"; Object[]params={gonghao,xingming,xingbie,nianling,shengri,gongzuo,zhuanye,zhaopian,beizhu,del}; DBmydb=newDB<>; mydb.doPstm<sql,params>; mydb.closed<>; req.setAttribute<"message","教師信息添加成功!">; req.setAttribute<"path","jiaoshi?type=jiaoshiMana">;StringtargetURL="/common/success.jsp"; dispatch<targetURL,req,res>; } publicvoidjiaoshiMana<HttpServletRequestreq,HttpServletResponseres>throwsServletException,IOException { ListjiaoshiList=newArrayList<>; Stringsql="select*fromt_jiaoshiwheredel='no'"; Object[]params={}; DBmydb=newDB<>; try { mydb.doPstm<sql,params>; ResultSetrs=mydb.getRs<>; while<rs.next<>> { TJiaoshijiaoshi=newTJiaoshi<>; jiaoshi.setId<rs.getInt<"id">>; jiaoshi.setGonghao<rs.getString<"gonghao">>; jiaoshi.setXingming<rs.getString<"xingming">>; jiaoshi.setXingbie<rs.getString<"xingbie">>; jiaoshi.setNianling<rs.getString<"nianling">>; jiaoshi.setShengri<rs.getString<"shengri">>; jiaoshi.setGongzuo<rs.getString<"gongzuo">>; jiaoshi.setZhuanye<rs.getString<"zhuanye">>; jiaoshi.setZhaopian<rs.getString<"zhaopian">>; jiaoshi.setBeizhu<rs.getString<"beizhu">>; jiaoshiList.add<jiaoshi>; } rs.close<>; } catch<Exceptione> { e.printStackTrace<>; } mydb.closed<>; req.setAttribute<"jiaoshiList",jiaoshiList>; req.getRequestDispatcher<"admin/jiaoshi/jiaoshiMana.jsp">.forward<req,res>; }代碼5publicvoidgongziAdd<HttpServletRequestreq,HttpServletResponseres>{ intjsid=Integer.parseInt<req.getParameter<"jsid">>; Stringriqi=req.getParameter<"riqi">; Stringgongzi=req.getParameter<"gongzi">; Stringjiangjin=req.getParameter<"jiangjin">; Stringsql="insertintot_gongzi<jsid,riqi,gongzi,jiangjin>values<?,?,?,?>"; Object[]params={jsid,riqi,gongzi,jiangjin}; DBmydb=newDB<>; mydb.doPstm<sql,params>; mydb.closed<>; req.setAttribute<"message","教師工資添加成功">; req.setAttribute<"path","gongzi?type=gongziMana">;StringtargetURL="/common/success.jsp"; dispatch<targetURL,req,res>; } publicvoidjsList<HttpServletRequestreq,HttpServletResponseres>throwsServletException,IOException { ListjiaoshiList=newArrayList<>; Stringsql="select*fromt_jiaoshiwheredel='no'"; Object[]params={}; DBmydb=newDB<>; try { mydb.doPstm<sql,params>; ResultSetrs=mydb.getRs<>; while<rs.next<>> { TJiaoshijiaoshi=newTJiaoshi<>; jiaoshi.setId<rs.getInt<"id">>; jiaoshi.setGonghao<rs.getString<"gonghao">>; jiaoshi.setXingming<rs.getString<"xingming">>; jiaoshi.setXingbie<rs.getString<"xingbie">>; jiaoshi.setNianling<rs.getString<"nianling">>; jiaoshi.setShengri<rs.getString<"shengri">>; jiaoshi.setGongzuo<rs.getString<"gongzuo">>; jiaoshi.setZhuanye<rs.getString<"zhuanye">>; jiaoshi.setZhaopian<rs.getString<"zhaopian">>; jiaoshi.setBeizhu<rs.getString<"beizhu">>; jiaoshiList.add<jiaoshi>; } rs.close<>; } catch<Exceptione> { e.printStackTrace<>; } mydb.closed<>; req.setAttribute<"jiaoshiList",jiaoshiList>; req.getRequestDispatcher<"admin/gongzi/jsList.jsp">.forward<req,res>; } publicvoidtoAddGz<HttpServletRequestreq,HttpServletResponseres>throwsServletException,IOException { TJiaoshijiaoshi=newTJiaoshi<>; intjsid=Integer.parseInt<req.getParameter<"jsid">>; Stringsql="select*fromt_jiaoshiwhereid=?"; Object[]params={jsid}; DBmydb=newDB<>; try { mydb.doPstm<sql,params>; ResultSetrs=mydb.getRs<>; while<rs.next<>> { jiaoshi.setId<rs.getInt<"id">>; jiaoshi.setGonghao<rs.getString<"gonghao">>; jiaoshi.setXingming<rs.getString<"xingming">>; jiaoshi.setXingbie<rs.getString<"xingbie">>; jiaoshi.setNianling<rs.getString<"nianling">>; jiaoshi.setShengri<rs.getString<"shengri">>; jiaoshi.setGongzuo<rs.getString<"gongzuo">>; jiaoshi.setZhuanye<rs.getString<"zhuanye">>; jiaoshi.setZhaopian<rs.getString<"zhaopian">>; jiaoshi.setBeizhu<rs.getString<"beizhu">>; } rs.close<>; } catch<Exceptione> { e.printStackTrace<>; } mydb.closed<>; GregorianCalendargc=newGregorianCalendar<>; StringstrDate=DateUtils.formatDate2Str<gc.getTime<>,"yyyy-MM">; req.setAttribute<"strDate",strDate>; req.setAttribute<"jiaoshi",jiaoshi>; req.getRequestDispatcher<"admin/gongzi/gzAdd.jsp">.forward<req,res>; } publicvoidgongziMana<HttpServletRequestreq,HttpServletResponseres>throwsServletException,IOException { ListgongziList=newArrayList<>; Stringriqi=req.getParameter<"riqi">==null?"":req.getParameter<"riqi">; Stringsql="selecttb.xingming,ta.*fromt_gongzita,t_jiaoshitbwhereta.jsid=tb.id"; if<!<"".equals<riqi>>>{ sql+="andta.riqi='"+riqi+"'"; } Object[]params={}; DBmydb=newDB<>; try { mydb.doPstm<sql,params>; ResultSetrs=mydb.getRs<>; while<rs.next<>> { TGongzigongzi=newTGongzi<>; gongzi.setId<rs.getInt<"id">>; gongzi.setJsxm<rs.getString<"xingming">>; gongzi.setRiqi<rs.getString<"riqi">>; gongzi.setGongzi<rs.getString<"gongzi">>; gongzi.setJiangjin<rs.getString<"jiangjin">>; gongziList.add<gongzi>; } rs.close<>; } catch<Exceptione> { e.printStackTrace<>; } mydb.closed<>; req.setAttribute<"riqi",riqi>; req.setAttribute<"gongziList",gongziList>; req.getRequestDispatcher<"admin/gongzi/gongziMana.jsp">.forward<req,res>; }代碼6主要是通過javascript語句來實現(xiàn),item_word[8][4]="退出系統(tǒng)";item_link[8][4]="javascript:window.open<'../index.jsp','_self'>";代碼76系統(tǒng)測試6.1系統(tǒng)測試目的與意義系統(tǒng)測試是管理信息系統(tǒng)開發(fā)周期中一個十分重要而漫長的的階段。其重要性體現(xiàn)在他是保證系統(tǒng)質(zhì)量與可靠性的最后關(guān)口,是對整個系統(tǒng)開發(fā)過程包括系統(tǒng)分析、系統(tǒng)設(shè)計和系統(tǒng)實現(xiàn)的最終審查。系統(tǒng)測試的任務(wù)是盡可能徹底的檢查出程序中的錯誤,提高軟件系統(tǒng)的可靠性,其目的是檢驗系統(tǒng)"做得怎樣"。這這階段又可以分為三個步驟:模塊測試,測試每個模塊的程序是否正確;組裝測試,測試模塊之間的接口是否正確;確認(rèn)測試,測試整個軟件系統(tǒng)是否滿足用戶功能和性能的要求。測試發(fā)現(xiàn)問題之后要經(jīng)過調(diào)試找出錯誤原因和位置,然后進(jìn)行改正。是基于系統(tǒng)整體需求說明書的黑盒測試,應(yīng)覆蓋系統(tǒng)隨偶聯(lián)合的部件,系統(tǒng)測試是正對整個產(chǎn)品系統(tǒng)進(jìn)行的測試,目的是驗證系統(tǒng)是否滿足了需求規(guī)格的定義,找出需求規(guī)格不符合或與之矛盾的地方。6.2主頁面的登錄模塊測試測試流程:1.打開系統(tǒng)首頁,輸入錯誤的登錄信息2.登錄3.輸入正確的登錄信息4.登錄5.測試結(jié)果模塊名稱測試用例預(yù)期結(jié)果實際結(jié)果是否通過登錄模塊用戶名:null密碼:null彈出錯誤提示,請輸入用戶名登陸失敗,提示請輸入用戶名通過登錄模塊用戶名:m1密碼:null彈出錯誤提示,請輸入密碼失敗,提示輸入密碼通過登錄模塊用戶名:m1密碼:1彈出錯誤提示,用戶名或者密碼錯誤登陸失敗,提示用戶名或者密碼錯誤通過7設(shè)計總結(jié)本次課程設(shè)計將我大學(xué)所學(xué)的軟件工程理論知識用到了具體的實踐中去,深化了理論知識,同時也鍛煉了動手實踐能力。在這段日子里,我查閱了許多有關(guān)教師檔案管理信息系統(tǒng)的資料,翻閱了許多JSP的書籍,結(jié)合自己的經(jīng)驗,詳細(xì)調(diào)查了教職工管理的工作容與細(xì)節(jié),開發(fā)設(shè)計了這個教師檔案管理系統(tǒng),雖然企業(yè)每個學(xué)期都會有相應(yīng)課程的課程設(shè)計和實訓(xùn)來作為動手練習(xí)訓(xùn)練,不過在本次畢業(yè)設(shè)計具體的實踐的時候還是遇到了很多小問題,比如說在jsp頁面將輸入框設(shè)為不可用是添加屬性re
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)期學(xué)習(xí)總結(jié)模板
- 合伙開礦合同
- 2025年舟山b2貨運(yùn)資格證考試題庫
- 《正壓式呼吸器》課件
- 2025年揭陽交通運(yùn)輸從業(yè)資格證怎樣考試
- 2025年烏魯木齊貨運(yùn)從業(yè)資格證考試題庫答案解析大全
- 2025年江西貨運(yùn)從業(yè)資格證考試題目答案及解析
- 2025年蘭州貨運(yùn)從業(yè)資格證考試模擬考試題及答案
- 2025年錫林郭勒盟貨運(yùn)考試題庫
- 《壩上草原風(fēng)光》課件
- 物流行業(yè)疫情應(yīng)急處理及防控措施預(yù)案
- 江南大學(xué)《自然語言處理》2022-2023學(xué)年第一學(xué)期期末試卷
- 孕早期nt檢查課件
- 第十屆CAD制圖大賽試題
- 2024年世界職業(yè)院校技能大賽中職組“法律實務(wù)組”賽項考試題庫(含答案)
- 青島科技大學(xué)《憲法學(xué)》2021-2022學(xué)年期末試卷
- 2025年會計專業(yè)考試初級經(jīng)濟(jì)法基礎(chǔ)試卷及解答參考
- 2024年徐州市中考語文試卷(附答案解析)
- 公文寫作題庫(500道)
- 2023年《安徽大學(xué)學(xué)生手冊》在線考試學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 一封雞毛信的故事課件
評論
0/150
提交評論