JavaWeb編程技術(shù)課程設(shè)計(jì)報(bào)告_第1頁
JavaWeb編程技術(shù)課程設(shè)計(jì)報(bào)告_第2頁
JavaWeb編程技術(shù)課程設(shè)計(jì)報(bào)告_第3頁
JavaWeb編程技術(shù)課程設(shè)計(jì)報(bào)告_第4頁
JavaWeb編程技術(shù)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

-.z.摘要隨著信息技術(shù)的發(fā)展,計(jì)算機(jī)已被廣泛的應(yīng)用于社會(huì)的各個(gè)領(lǐng)域,成為推動(dòng)社會(huì)發(fā)展的技術(shù)動(dòng)力。而在計(jì)算機(jī)應(yīng)用中,軟件的作用十分突出,軟件已經(jīng)發(fā)展成為信息技術(shù)的核心,主導(dǎo)著信息產(chǎn)品的開發(fā)和信息技術(shù)市場(chǎng)的進(jìn)一步的開拓。項(xiàng)目管理系統(tǒng),就是項(xiàng)目的管理者應(yīng)用專門管理項(xiàng)目的系統(tǒng)軟件,在有限的資源約束下,運(yùn)用系統(tǒng)的觀點(diǎn)、方法和理論,對(duì)項(xiàng)目涉及的全部工作進(jìn)行有效地管理。它從項(xiàng)目的投資決策開始到項(xiàng)目結(jié)束的全過程進(jìn)行計(jì)劃、組織、指揮、協(xié)調(diào)、控制和評(píng)價(jià),以實(shí)現(xiàn)項(xiàng)目的目標(biāo)。本文闡述了一個(gè)基于JavaWeb設(shè)計(jì)的項(xiàng)目管理系統(tǒng),采用MVC的三層設(shè)計(jì)模式Jsp-Servlet-JavaBean.即前端由Jsp網(wǎng)頁實(shí)現(xiàn)邏輯,后臺(tái)通過對(duì)數(shù)據(jù)庫的操作實(shí)現(xiàn)數(shù)據(jù)邏輯。結(jié)合傳統(tǒng)的管理,為了解決企業(yè)項(xiàng)目管理過程中的工作任務(wù)管理問題,本系統(tǒng)實(shí)現(xiàn)了對(duì)項(xiàng)目的增加、刪除、修改、查詢,進(jìn)一步對(duì)項(xiàng)目進(jìn)行按任務(wù)分配和追蹤,實(shí)現(xiàn)了中小型企業(yè)對(duì)項(xiàng)目的管理。關(guān)鍵詞:項(xiàng)目管理MVC任務(wù)分配目錄TOC\o"1-3"\h\u5256摘要III16201目錄IV131731需求分析1221.1問題描述1193191.2系統(tǒng)需求139562概要設(shè)計(jì)2254242.1系統(tǒng)總體結(jié)構(gòu)245302.2管理員信息管理功能模塊2113573詳細(xì)設(shè)計(jì)4163473.1數(shù)據(jù)庫設(shè)計(jì)471893.1.1E-R圖設(shè)計(jì):4163133.1.2數(shù)據(jù)字典5303403.2界面設(shè)計(jì)6196943.3公共類設(shè)計(jì)11311053.3.1工具框架層.cqust.Util11173493.3.2實(shí)體模型層.cqust.Bean1158093.3.3數(shù)據(jù)接口層.cqust.Dao13255203.4登陸模塊設(shè)計(jì)20231963.5修改密碼模塊設(shè)計(jì)2137234系統(tǒng)測(cè)試22208235總結(jié)2813081參考文獻(xiàn)2932145致30-.z.1需求分析1.1問題描述在網(wǎng)絡(luò)飛速發(fā)展的今天,網(wǎng)絡(luò)給人們帶來了很多便利,越來越來的管理網(wǎng)絡(luò)化?;趥鹘y(tǒng)管理系統(tǒng)許多不方便,公司項(xiàng)目的管理系統(tǒng)希望得到改善,不再局限于傳統(tǒng)項(xiàng)目管理,因此希望經(jīng)過項(xiàng)目的在線分配后能方便更好的管理與分配,在線項(xiàng)目管理對(duì)將每個(gè)項(xiàng)目的管理劃分為無數(shù)個(gè)小任務(wù),能更好的對(duì)任務(wù)的分配,同時(shí)對(duì)任務(wù)的進(jìn)度的了解。1.2系統(tǒng)需求在該中,用戶類型分為:管理員、普通員工,本系統(tǒng)以及功能設(shè)計(jì)都根據(jù)傳統(tǒng)的項(xiàng)目管理,進(jìn)行了以下需求分析: 管理員登陸后能夠?qū)ο到y(tǒng)的所有信息進(jìn)行管理,如項(xiàng)目管理,任務(wù)管理,人員管理以及個(gè)人信息的維護(hù)。項(xiàng)目管理主要功能為:(1)新增項(xiàng)目:新增項(xiàng)目編號(hào)、名稱、項(xiàng)目進(jìn)度、負(fù)責(zé)人、(申請(qǐng)時(shí)間)、(審核狀態(tài))(2)刪除項(xiàng)目:對(duì)已經(jīng)完成的項(xiàng)目和停止的項(xiàng)目進(jìn)行刪除,以免對(duì)系統(tǒng)的冗余(3)修改項(xiàng)目:修改項(xiàng)目名稱、修改項(xiàng)目負(fù)責(zé)人、修改項(xiàng)目進(jìn)度,對(duì)項(xiàng)目進(jìn)度的更新是依賴于各個(gè)任務(wù)的進(jìn)度。人員管理主要功能:(1)新增員工:員工編號(hào)、員工名、性別、聯(lián)系方式(2)刪除:刪除沒有任務(wù)的員工(3)修改員工:修改指定員工各信息。任務(wù)管理的主要功能為:(1)分配任務(wù):根據(jù)新添加的任務(wù)對(duì)其分配,如任務(wù)編號(hào)、項(xiàng)目名、員工、任務(wù)、進(jìn)度(2)修改任務(wù):對(duì)任務(wù)的各項(xiàng)信息進(jìn)行維護(hù),如任務(wù)的權(quán)值。查詢的主要功能為:對(duì)項(xiàng)目信息及分配情況的查詢,能更好的把握項(xiàng)目的進(jìn)度情況。(1)查詢員工:查詢員工各項(xiàng)信息(2)查詢項(xiàng)目:查詢項(xiàng)目各項(xiàng)信息(3)查詢?nèi)蝿?wù):查詢?nèi)蝿?wù)各項(xiàng)信息員工登陸后能夠查詢個(gè)人參與的任務(wù)以及進(jìn)度,方便自己對(duì)工時(shí)的管理,隨著員工進(jìn)度的更新,整個(gè)項(xiàng)目的進(jìn)度會(huì)進(jìn)行更新,也可以對(duì)個(gè)人的信息的維護(hù)。2概要設(shè)計(jì)2.1系統(tǒng)總體結(jié)構(gòu)圖2.1系統(tǒng)結(jié)構(gòu)圖2.2管理員信息管理功能模塊管理員信息功能模塊設(shè)計(jì)如下圖2.2所示:圖2.2管理員功能圖3詳細(xì)設(shè)計(jì)3.1數(shù)據(jù)庫設(shè)計(jì)3.1.1E-R圖設(shè)計(jì):數(shù)據(jù)庫采用PowerDesigner設(shè)計(jì),包括概念模型、物理模型以及數(shù)據(jù)字典,E-R圖如下圖3.1所示:圖3.1數(shù)據(jù)庫E-R圖3.1.2數(shù)據(jù)字典表3.1實(shí)體T01管理員信息表的屬性的清單名稱代碼數(shù)據(jù)類型長度管理員編號(hào)anoVARCHAR2(50)50管理員密碼apassVARCHAR2(50)50管理員名字anameVARCHAR2(50)50表3.2實(shí)體T02項(xiàng)目表的屬性的清單名稱代碼數(shù)據(jù)類型長度項(xiàng)目編號(hào)pidVARCHAR2(30)30管理員編號(hào)anoVARCHAR2(50)50項(xiàng)目名稱pnameVARCHAR2(30)30項(xiàng)目負(fù)責(zé)人pleaderVARCHAR2(30)30項(xiàng)目申請(qǐng)時(shí)間ptimeDATE項(xiàng)目進(jìn)度progressINTEGERreviewerVARCHAR2(30)30表3.3實(shí)體T03員工信息表的屬性的清單名稱代碼數(shù)據(jù)類型長度員工編號(hào)snoVARCHAR2(50)50密碼spassVARCHAR2(50)50員工snameVARCHAR2(50)50員工性別se*VARCHAR2(10)10手機(jī)phoneVARCHAR2(20)20表3.4實(shí)體T04任務(wù)表的屬性的清單名稱代碼數(shù)據(jù)類型長度任務(wù)編號(hào)tnoVARCHAR2(50)50員工編號(hào)snoVARCHAR2(50)50項(xiàng)目編號(hào)pidVARCHAR2(30)30任務(wù)名dutyVARCHAR2(50)50任務(wù)進(jìn)度tprogressINTEGER分配權(quán)值ratioINTEGER3.2界面設(shè)計(jì) 本主要頁面為管理員主頁、項(xiàng)目信息界面、任務(wù)信息界面、人員管理界面以及個(gè)人主頁,分別對(duì)應(yīng)頁面為inde*.jsp、project.jsp、task.jsp、staff.jsp、staffinde*.jsp、userpage.jsp.以下為管理里員主界面inde*.jsp部分代碼:<%pagelanguage="java"contentType="te*t/html;charset=utf-8"pageEncoding="utf-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""./TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="te*t/html;charset=utf-8"><linkrel="stylesheet"href="css/bootstrap.css"><linkrel="stylesheet"href="css/font-awesome.css"><linkrel="stylesheet"href="css/inde*.css"><!--修改自Bootstrap官方Demon,你可以按自己的喜好制定CSS樣式--><linkrel="stylesheet"href="css/font-change.css"><!--將默認(rèn)字體從宋體換成微軟雅黑(個(gè)人比較喜歡微軟雅黑,移動(dòng)端和桌面端顯示效果比較接近)--><scripttype="te*t/javascript"src="js/jquery-1.12.3.min.js"></script><scripttype="te*t/javascript"src="js/bootstrap.min.js"></script><title>主頁面</title><scripttype="te*t/javascript">functioncheck(){if(confirm("您確定要退出嗎"")){window.location.href="leave.jsp"}}/* *對(duì)選中的標(biāo)簽激活active狀態(tài),對(duì)先前處于active狀態(tài)但之后未被選中的標(biāo)簽取消active *(實(shí)現(xiàn)左側(cè)菜單中的標(biāo)簽點(diǎn)擊后變色的效果) */ $(document).ready(function(){ $('ul.nav>li').click(function(e){//e.preventDefault(); 加上這句則導(dǎo)航的<a>標(biāo)簽會(huì)失效 $('ul.nav>li').removeClass('active'); $(this).addClass('active'); }); });/* *解決aja*返回的頁面中含有javascript的辦法: *把*mlHttp.responseTe*t中的腳本都抽取出來,不管AJA*加載的HTML包含多少個(gè)腳本塊,我們對(duì)找出來的腳本塊都調(diào)用eval方法執(zhí)行它即可 */functione*ecuteScript(html) {varreg=/<script[^>]*>([^\*00]+)$/i;//對(duì)整段HTML片段按<\/script>拆分varhtmlBlock=html.split("<\/script>");for(variinhtmlBlock) {varblocks;//匹配正則表達(dá)式的容數(shù)組,blocks[1]就是真正的一段腳本容,因?yàn)榍懊鎟eg定義我們用了括號(hào)進(jìn)行了捕獲分組if(blocks=htmlBlock[i].match(reg)) {//清除可能存在的注釋標(biāo)記,對(duì)于注釋結(jié)尾-->可以忽略處理,eval一樣能正常工作varcode=blocks[1].replace(/<!--/,'');try { eval(code)//執(zhí)行腳本 }catch(e) { } } } }functionshowAtRight(url){var*mlHttp;if(window.*MLHttpRequest){//codeforIE7+,Firefo*,Chrome,Opera,Safari *mlHttp=new*MLHttpRequest(); //創(chuàng)建*MLHttpRequest對(duì)象 }else{//codeforIE6,IE5 *mlHttp=newActive*Object("Microsoft.*MLHTTP"); } *mlHttp.onreadystatechange=function(){ //onreadystatechange—當(dāng)readystate變化時(shí)調(diào)用后面的方法if(*mlHttp.readyState==4){//*mlHttp.readyState==4 —— finisheddownloadingresponseif(*mlHttp.status==200){//*mlHttp.status==200 —— 服務(wù)器反饋正常 document.getElementById("content").innerHTML=*mlHttp.responseTe*t; //重設(shè)頁面中id="content"的div里的容 e*ecuteScript(*mlHttp.responseTe*t); //執(zhí)行從服務(wù)器返回的頁面容里包含的JavaScript函數(shù) }//錯(cuò)誤狀態(tài)處理elseif(*mlHttp.status==404){ alert("出錯(cuò)了?(錯(cuò)誤代碼:404NotFound),……!");/*對(duì)404的處理*/return; }elseif(*mlHttp.status==403){ alert("出錯(cuò)了?(錯(cuò)誤代碼:403Forbidden),……");/*對(duì)403的處理*/return; }else{ alert("出錯(cuò)了?(錯(cuò)誤代碼:"+request.status+"),……");/*對(duì)出現(xiàn)了其他錯(cuò)誤代碼所示錯(cuò)誤的處理*/return; } } }//把請(qǐng)求發(fā)送到服務(wù)器上的指定文件(url指向的文件)進(jìn)行處理 *mlHttp.open("GET",url,true); //true表示異步處理 *mlHttp.send(); } </script></head><body><!--頂部菜單====================================--><navclass="navbarnavbar-inversenavbar-fi*ed-top"><divclass="container"><divclass="navbar-header"><buttontype="button"class="navbar-togglecollapsed"data-toggle="collapse"data-target="*navbar"><spanclass="sr-only">Togglenavigation</span><spanclass="icon-bar"></span><spanclass="icon-bar"></span><spanclass="icon-bar"></span></button><aclass="navbar-brand"href="inde*.jsp">項(xiàng)目管理系統(tǒng)</a><center><fontcolor="red">管理員:<%=session.getAttribute("username1")%></font></center></div><divid="navbar"class="navbar-collapsecollapse"><ulclass="navnavbar-navnavbar-right"><li><ahref="***"onclick="showAtRight('addproject.jsp')"><iclass="fafa-users"></i> 添加新項(xiàng)目<spanclass="sr-only">(current)</span></a></li><li><ahref="***"onclick="showAtRight('arrangeTask.jsp')"><iclass="fafa-globe"></i> 任務(wù)分配<spanclass="sr-only">(current)</span></a></li><li><ahref="***"onclick="showAtRight('addstaff.jsp')"><iclass="fafa-users"></i> 增加員工<spanclass="sr-only">(current)</span></a></li></ul></div></div></nav><!--左側(cè)菜單選項(xiàng)=========================================--><divclass="container-fluid"><divclass="row-fluie"><divclass="col-sm-3col-md-2sidebar"><ulclass="navnav-sidebar"><!--一級(jí)菜單--><liclass="active"><ahref="***"> 系統(tǒng)主菜單<spanclass="sr-only">(current)</span></a></li><li><ahref="***"onclick="showAtRight('project.jsp')"><iclass="fafa-globe"></i> 項(xiàng)目信息<spanclass="sr-only">(current)</span></a></li><li><ahref="***"onclick="showAtRight('task.jsp')"><iclass="fafa-globe"></i> 任務(wù)維護(hù)<spanclass="sr-only">(current)</span></a></li><li><ahref="***"onclick="showAtRight('staff.jsp')"><iclass="fafa-user"></i> 員工信息維護(hù)<spanclass="sr-only">(current)</span></a></li><li><ahref="***"onclick="showAtRight('updatepass.jsp')"><iclass="fafa-file-te*t"></i> 修改密碼<spanclass="sr-only">(current)</span></a></li><li><ahref="***"onclick="check()"><iclass="fafa-file-te*t"></i> 退出系統(tǒng)<spanclass="sr-only">(current)</span></a></li></ul></div></div></div><divclass="col-sm-9col-sm-offset-3col-md-10col-md-offset-2main"><h1class="header">控制臺(tái)<small>   歡迎使用項(xiàng)目后臺(tái)管理系統(tǒng)</small></h1><divid="content"></div></div></body></html>3.3公共類設(shè)計(jì)本主要分為四層,分別是Util、Model、Dao以及Control.其中前四層為公共類,其中Util包封裝了所有的工具類,Model包封裝了實(shí)體類,Dao包封裝了一些對(duì)實(shí)體類實(shí)例化以及從數(shù)據(jù)庫讀寫數(shù)據(jù)等類,是對(duì)所有實(shí)體以及對(duì)實(shí)體操作方法的封裝,Control為對(duì)頁面控制的Servlet類。3.3.1工具框架層.cqust.Util該層里僅有一個(gè)判斷是否輸入為空的類,代碼如下:package.cqust.util;publicclassStringUtil{publicstaticbooleanisEmpty(Stringstr){if("".equals(str)||str==null){returntrue; }else{returnfalse; } }publicstaticbooleanisNotEmpty(Stringstr){if(!"".equals(str)&&str!=null){returntrue; }else{returnfalse; } }}3.3.2實(shí)體模型層.cqust.Bean 在該層下有四個(gè)類,為Admin.java、Staff.java、Project.java、Task.java分別對(duì)應(yīng)數(shù)據(jù)庫的四個(gè)表,例如主要的項(xiàng)目類Project.java代碼如下:publicclassProjectimplementsSerializable{privateStringpid;privateStringpname;privateStringano;privateStringpleader;privateDateptime;privateintprogress;publicProject(){super();//TODOAuto-generatedconstructorstub}publicProject(Stringpid,Stringpname,Stringano,Stringpleader,Dateptime,intprogress){super();this.pid=pid;this.pname=pname;this.ano=ano;this.pleader=pleader;this.ptime=ptime;gress=progress;}publicStringgetPid(){returnpid;}publicvoidsetPid(Stringpid){this.pid=pid;}publicStringgetPname(){returnpname;}publicvoidsetPname(Stringpname){this.pname=pname;}publicStringgetAno(){returnano;}publicvoidsetAno(Stringano){this.ano=ano;}publicStringgetPleader(){returnpleader;}publicvoidsetPleader(Stringpleader){this.pleader=pleader;}publicDategetPtime(){returnptime;}publicvoidsetPtime(Dateptime){this.ptime=ptime;}publicintgetProgress(){returnprogress;}publicvoidsetProgress(intprogress){gress=progress;}}3.3.3數(shù)據(jù)接口層.cqust.Dao 該層同樣也有四個(gè)類,為AdminDao.java、StaffDao.java、ProjectDao.java、taskDao.java分別對(duì)應(yīng)實(shí)體類包的四個(gè)類,用于對(duì)實(shí)體類的實(shí)例化,從數(shù)據(jù)庫讀寫數(shù)據(jù)。例如對(duì)任務(wù)的管理taskDao.java,代碼如下:主要實(shí)現(xiàn)的為任務(wù)的操作,任務(wù)分頁顯示在界面上,任務(wù)的增修改以及對(duì)進(jìn)度的更新。publicclasstaskDaoe*tendsBaseDao{/** *查詢?nèi)蝿?wù)信息分頁顯示 **returnlist */publicList<Task>getTaskByPage(intpageSize,intpageNow){ List<Task>list=newArrayList<Task>(); Connectionconn;try{conn=getConnection(); Stringsql="selecttop"+pageSize+"*fromdbo.taskwheretnonotin(selecttop(("-1)*")tnofromdbo.task)"; PreparedStatementpstatement=conn.prepareStatement(sql);pstatement.setInt(1,pageNow);pstatement.setInt(2,pageSize); ResultSetrs=pstatement.e*ecuteQuery();while(rs.ne*t()){ Tasktask=newTask(); Stringtno=rs.getString("tno"); Stringsno=rs.getString("sno"); Stringpid=rs.getString("pid"); Stringtname=rs.getString("tname");inttprogress=rs.getInt("tprogress");intratio=rs.getInt("ratio");task=newTask(tno,sno,pid,tname,tprogress,ratio);list.add(task); } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returnlist; }/** *獲取任務(wù)表記錄分頁的總數(shù) * *returnt2 */publicintPageCount(){intrecordCount=0,t1=0,t2=0; Connectioncon=null; PreparedStatementpsta=null; ResultSetrs=null; Stringsql="select*fromdbo.task";try{con=getConnection();psta=con.prepareStatement(sql);rs=psta.e*ecuteQuery();while(rs.ne*t()){recordCount++; }t1=recordCount%3;t2=recordCount/3; }catch(E*ceptione){e.printStackTrace(); }if(t1!=0){t2=t2+1;} System.out.println(t2);returnt2; }/** *通過編號(hào)查詢?nèi)蝿?wù)信息 * *returntask */publicTaskfindTaskByid(Stringid){ Connectionconn=null; Tasktask=null;try{conn=getConnection(); Stringsql="select*fromdbo.taskwheretno=""; PreparedStatementpsmt=conn.prepareStatement(sql);psmt.setString(1,id); ResultSetrs=psmt.e*ecuteQuery();while(rs.ne*t()){ Stringtno=rs.getString("tno"); Stringsno=rs.getString("sno"); Stringpid=rs.getString("pid"); Stringtname=rs.getString("tname");inttprogress=rs.getInt("tprogress");intratio=rs.getInt("ratio");task=newTask(tno,sno,pid,tname,tprogress,ratio); } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returntask; }//通過編號(hào)查詢?nèi)蝿?wù)信息publicTaskfindSnoByid(Stringsid){ Connectionconn=null; Tasktask=null;try{conn=getConnection(); Stringsql="select*fromdbo.taskwheresno=""; PreparedStatementpsmt=conn.prepareStatement(sql);psmt.setString(1,sid); ResultSetrs=psmt.e*ecuteQuery();while(rs.ne*t()){ Stringtno=rs.getString("tno"); Stringsno=rs.getString("sno"); Stringpid=rs.getString("pid"); Stringtname=rs.getString("tname");inttprogress=rs.getInt("tprogress");intratio=rs.getInt("ratio");task=newTask(tno,sno,pid,tname,tprogress,ratio); } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returntask; }//通過項(xiàng)目編號(hào)查詢?nèi)蝿?wù)信息publicbooleanfindPidByid(Stringpid){ Connectionconn=null;booleanflag=false;try{conn=getConnection(); Stringsql="select*fromdbo.taskwherepid=""; PreparedStatementpsmt=conn.prepareStatement(sql);psmt.setString(1,pid); ResultSetrs=psmt.e*ecuteQuery();if(rs.ne*t()){flag=true; }else{flag=false; } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returnflag; }publicList<Task>getTaskBySno(Stringsid){ List<Task>list=newArrayList<Task>(); Connectionconn;try{conn=getConnection(); Stringsql="select*fromdbo.taskwheresno=""; PreparedStatementpstatement=conn.prepareStatement(sql);pstatement.setString(1,sid); ResultSetrs=pstatement.e*ecuteQuery();while(rs.ne*t()){ Tasktask=newTask(); Stringtno=rs.getString("tno"); Stringsno=rs.getString("sno"); Stringpid=rs.getString("pid"); Stringtname=rs.getString("tname");inttprogress=rs.getInt("tprogress");intratio=rs.getInt("ratio");task=newTask(tno,sno,pid,tname,tprogress,ratio);list.add(task); } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returnlist; }/** *更新任務(wù)進(jìn)度 * *paramtask *returnflag */publicbooleanupdateTask(Tasktask){booleanflag=false; Connectionconn=null;try{conn=getConnection(); Stringsql="updatedbo.tasksettno=",sno=",pid=",tname=",tprogress=",ratio="wheretno=""; PreparedStatementpsmt=conn.prepareStatement(sql);psmt.setString(1,task.getTno());psmt.setString(2,task.getSno());psmt.setString(3,task.getPid());psmt.setString(4,task.getTname());psmt.setInt(5,task.getTprogress());psmt.setInt(6,task.getRatio());psmt.setString(7,task.getTno());inti=psmt.e*ecuteUpdate();if(i==1){flag=true; System.out.println("修改成功?。?!"); } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returnflag; }/** *分配任務(wù)信息 * *paramtask *returnflag */publicbooleanaddTaskInfo(Tasktask){ Connectionconn=null;booleanflag=false;try{conn=getConnection(); Stringsql="insertintodbo.task(tno,sno,pid,tname,tprogress,ratio)values(",",",",",")"; PreparedStatementpsmt=conn.prepareStatement(sql);psmt.setString(1,task.getTno());psmt.setString(2,task.getSno());psmt.setString(3,task.getPid());psmt.setString(4,task.getTname());psmt.setInt(5,task.getTprogress());psmt.setInt(6,task.getRatio());inti=psmt.e*ecuteUpdate();if(i==1){flag=true; System.out.println("添加成功?。?!"); } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returnflag; }/** *更新任務(wù)進(jìn)度 * *param *return */publicvoidmodifyProgress(Stringpid,Stringsno,intprogress){ Connectionconn=null;try{conn=getConnection(); Stringsql="updatedbo.tasksettprogress="wherepid="andsno=""; PreparedStatementpsmt=conn.prepareStatement(sql);psmt.setInt(1,progress);psmt.setString(2,pid);psmt.setString(3,sno);inti=psmt.e*ecuteUpdate();if(i==1){ System.out.println("更新任務(wù)進(jìn)度成功!?。?); }else{ System.out.println("更新任務(wù)進(jìn)度失?。。。。。?); } }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); } }/** *獲取同項(xiàng)目中所有員工進(jìn)度的總和 * *param *return */publicintsumTotalProgress(Stringproid){inttempValue=0,temp=0;intcount=0; Connectionconn;try{conn=getConnection(); Stringsql="select*fromdbo.taskwherepid=""; PreparedStatementpstatement=conn.prepareStatement(sql);pstatement.setString(1,proid); ResultSetrs=pstatement.e*ecuteQuery();while(rs.ne*t()){count++;inttprogress=rs.getInt("tprogress");intratio=rs.getInt("ratio");temp+=tprogress*ratio; System.out.println("tprogress="+tprogress); }tempValue=temp/100; System.out.println(count); System.out.println("tempValue="+tempValue); }catch(E*ceptione){//TODOAuto-generatedcatchblocke.printStackTrace(); }returntempValue; }}3.4登陸模塊設(shè)計(jì)登錄的校驗(yàn)loginServlet,其中根據(jù)下拉框不同的選擇的用戶,進(jìn)入不同的主界面。利于系統(tǒng)的管理:protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletE*ception,IOE*ception{//TODOAuto-generatedmethodstubrequest.setCharacterEncoding("utf-8");//解決亂碼問題 Stringpath=""; Stringusername=request.getParameter("username"); Stringpassword=request.getParameter("password");if(StringUtil.isEmpty(username)||StringUtil.isEmpty(password)){request.setAttribute("error1","用戶名和密碼不能為空!");path="login.jsp"; } StaffDaostd=newStaffDao(); Staffsta1=newStaff(); Staffstaff=newStaff(username,password); adminDaoado=newadminDao(); Adminad1=newAdmin(); Adminadmin=newAdmin(username,password); HttpSessionsession=request.getSession(); Stringtype=request.getParameter("type");if("staff".equals(type)){if(std.isLogin(staff)!=null){sta1=std.isLogin(staff);path="staffinde*.jsp";request.setAttribute("username2",sta1.getSname());session.setAttribute("username2",sta1.getSname()); }else{session.setAttribute("error1","用戶名或密碼錯(cuò)誤!");path="login.jsp"; } }elseif("manager".equals(type)){if(ado.isLogin(admin)!=null){ad1=ado.isLogin(admin);path="inde*.js

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論