2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目 錄</b></p><p><b>  1 緒論3</b></p><p>  1.1 背景介紹3</p><p>  1.1.1 項(xiàng)目開發(fā)背景3</p><p>  1.1.2 研究目標(biāo)4</p><p>  1.2 相關(guān)技術(shù)介紹

2、4</p><p>  1.2.1 B/S模式4</p><p>  1.2.2 JavaEE4</p><p>  1.2.3 MySQL5</p><p>  1.2.4 AJAX5</p><p>  1.3 可行性分析5</p><p>  1.4 系統(tǒng)環(huán)境配置5</p

3、><p>  1.4.1安裝jdk5</p><p>  1.4.2安裝tomcat5</p><p>  1.4.3安裝MySQL6</p><p>  1.4.4系統(tǒng)布署6</p><p><b>  2 系統(tǒng)分析6</b></p><p><b>  

4、2.1架構(gòu)分析6</b></p><p><b>  3 系統(tǒng)設(shè)計(jì)6</b></p><p>  3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)6</p><p>  4 系統(tǒng)功能實(shí)現(xiàn)9</p><p>  4.1 后臺(tái)管理系統(tǒng)9</p><p>  4.1.1 登錄后臺(tái)管理系統(tǒng)9</p>

5、<p>  4.1.2住戶管理模塊10</p><p>  4.1.3設(shè)備管理模塊11</p><p>  4.1.4 人事管理模塊11</p><p>  4.1.5部門管理模塊14</p><p>  4.1.6 財(cái)務(wù)管理模塊15</p><p>  4.1.7 房產(chǎn)管理模塊17</

6、p><p>  4.1.8 系統(tǒng)管理模塊19</p><p><b>  5 測(cè)試21</b></p><p>  5.1 web系統(tǒng)測(cè)試21</p><p>  5.1.1 界面測(cè)試21</p><p>  5.1.2 功能測(cè)試22</p><p>  5.1.3

7、性能測(cè)試22</p><p>  5.1.4 可用性測(cè)試22</p><p><b>  參考文獻(xiàn):22</b></p><p>  附錄 主要代碼25</p><p><b>  摘要</b></p><p>  基于目前小區(qū)物業(yè)管理模式以及計(jì)算機(jī)技術(shù)的不斷進(jìn)步

8、和發(fā)展,用計(jì)算機(jī)操作的小區(qū)物業(yè)管理系統(tǒng)是為小區(qū)管理者和小區(qū)用戶更好的維護(hù)各項(xiàng)物業(yè)管理業(yè)務(wù)而開發(fā)的管理軟件。本系統(tǒng)應(yīng)用JavaEE技術(shù)和MySql數(shù)據(jù)庫(kù)系統(tǒng)組件來構(gòu)成應(yīng)用服務(wù)系統(tǒng),實(shí)現(xiàn)方便快捷的前端Web登陸和查詢,以及后臺(tái)管理員進(jìn)行各項(xiàng)物業(yè)管理。本系統(tǒng)分為七個(gè)模塊:住戶管理模塊、設(shè)備管理模塊、人事管理模塊、部門管理模塊、財(cái)務(wù)管理模塊、房產(chǎn)管理模塊、系統(tǒng)管理模塊;本系統(tǒng)運(yùn)用方便、操作簡(jiǎn)單,效率很高。</p><p>

9、;  關(guān)鍵詞 物業(yè)管理、JavaEE、MySql、web、人事管理模塊、系統(tǒng)管理模塊</p><p><b>  1 緒論</b></p><p><b>  1.1 背景介紹</b></p><p>  1.1.1 項(xiàng)目開發(fā)背景</p><p>  隨著我國(guó)經(jīng)濟(jì)發(fā)展和城市開發(fā),住宅小區(qū)越來越成為居

10、住的主流,小區(qū)物業(yè)管理是針對(duì)當(dāng)代社會(huì)這一市場(chǎng)需要應(yīng)運(yùn)而生的。用計(jì)算機(jī)操作的小區(qū)物業(yè)管理系統(tǒng)是為小區(qū)管理者和小區(qū)用戶更好的維護(hù)各項(xiàng)物業(yè)管理業(yè)務(wù)處理工作而開發(fā)的管理軟件,根據(jù)需求分析,實(shí)現(xiàn)小區(qū)管理業(yè)務(wù),效益已越來越明顯。因此,開發(fā)這樣一套小區(qū)物業(yè)管理系統(tǒng)軟件成為很有必要的事情,在本文中將就本次畢業(yè)設(shè)計(jì)我所開發(fā)的小區(qū)物業(yè)管理系統(tǒng),談?wù)勂溟_發(fā)過程和所涉及到的問題及解決方法。</p><p>  1.1.2 研究目標(biāo)<

11、;/p><p>  研究目標(biāo)是利用JavaEE開發(fā)基于SSH框架的小區(qū)物業(yè)管理系統(tǒng),實(shí)現(xiàn)小區(qū)物業(yè)管理的全部功能且便于維護(hù)更新。</p><p>  1.2 相關(guān)技術(shù)介紹</p><p>  1.2.1 SSH框架</p><p>  SSH 為 struts+spring+hibernate的一個(gè)集成框架,是目前較流行的一種Web應(yīng)用程序開源框

12、架。</p><p>  集成SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層,以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護(hù)方便的Web應(yīng)用程序。其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對(duì)持久層提供支持,Spring做管理,管理struts和hibernate。具體做法是:用面向?qū)ο蟮姆治?/p>

13、方法根據(jù)需求提出一些模型,將這些模型實(shí)現(xiàn)為基本的Java對(duì)象,然后編寫基本的DAO(Data Access Objects)接口,并給出Hibernate的DAO實(shí)現(xiàn),采用Hibernate架構(gòu)實(shí)現(xiàn)的DAO類來實(shí)現(xiàn)Java類與數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換和訪問,最后由Spring做管理,管理struts和hibernate。</p><p>  系統(tǒng)的基本業(yè)務(wù)流程是: 在表示層中,首先通過JSP頁面實(shí)現(xiàn)交互界面,負(fù)責(zé)接收請(qǐng)求

14、(Request)和傳送響應(yīng)(Response),然后Struts根據(jù)配置文件(struts-config.xml)將ActionServlet接收到的Request委派給相應(yīng)的Action處理。在業(yè)務(wù)層中,管理服務(wù)組件的Spring IoC容器負(fù)責(zé)向Action提供業(yè)務(wù)模型(Model)組件和該組件的協(xié)作對(duì)象數(shù)據(jù)處理(DAO)組件完成業(yè)務(wù)邏輯,并提供事務(wù)處理、緩沖池等容器組件以提升系統(tǒng)性能和保證數(shù)據(jù)的完整性。而在持久層中,則依賴于Hi

15、bernate的對(duì)象化映射和數(shù)據(jù)庫(kù)交互,處理DAO組件請(qǐng)求的數(shù)據(jù),并返回處理結(jié)果。</p><p>  采用上述開發(fā)模型,不僅實(shí)現(xiàn)了視圖、控制器與模型的徹底分離,而且還實(shí)現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離。這樣無論前端如何變化,模型層只需很少的改動(dòng),并且數(shù)據(jù)庫(kù)的變化也不會(huì)對(duì)前端有所影響,大大提高了系統(tǒng)的可復(fù)用性。而且由于不同層之間耦合度小,有利于團(tuán)隊(duì)成員并行工作,大大提高了開發(fā)效率。</p><p&

16、gt;  1.2.2 JavaEE</p><p>  JavaEE是一種利用Java 平臺(tái)來簡(jiǎn)化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問題的體系結(jié)構(gòu)。JavaEE技術(shù)的基礎(chǔ)就是核心Java平臺(tái),JavaEE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如"編寫一次、隨處運(yùn)行"的特性、方便存取數(shù)據(jù)庫(kù)的JDBC API、CORBA技術(shù)以及能夠在Internet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時(shí)還提供了對(duì) E

17、JB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個(gè)能夠使企業(yè)開發(fā)者大幅縮短投放市場(chǎng)時(shí)間的體系結(jié)構(gòu)。 </p><p>  JavaEE體系結(jié)構(gòu)提供中間層集成框架用來滿足無需太多費(fèi)用而又需要高可用性、高可靠性以及可擴(kuò)展性的應(yīng)用的需求。通過提供統(tǒng)一的開發(fā)平臺(tái),JavaEE降低了開發(fā)多層應(yīng)用的

18、費(fèi)用和復(fù)雜性,同時(shí)提供對(duì)現(xiàn)有應(yīng)用程序集成強(qiáng)有力支持,完全支持Enterprise JavaBeans,有良好的向?qū)еС执虬筒渴饝?yīng)用,添加目錄支持,增強(qiáng)了安全機(jī)制,提高了性能。</p><p>  1.2.3 MySQL</p><p>  MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),與其他的大型數(shù)據(jù)庫(kù)例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小

19、、功能有限(MySQL Cluster的功能和效率都相對(duì)比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對(duì)于一般的個(gè)人使用者和中小型企業(yè)來說,MySQL提供的功能已經(jīng)綽綽有余,而且由于MySQL是開源軟件,因此可以大大降低總體成本。 </p><p>  1.2.4 AJAX </p><p>  AJAX 不是一種新的編程語言,而是一種用于創(chuàng)建更好更快以及交互性更強(qiáng)的 Web 應(yīng)用程序的

20、技術(shù)。</p><p>  通過 AJAX,JavaScript可使用 JavaScript 的 XMLHttpRequest 對(duì)象來直接與服務(wù)器進(jìn)行通信。通過這個(gè)對(duì)象,JavaScript 可在不重載頁面的情況與 Web 服務(wù)器交換數(shù)據(jù)。</p><p>  AJAX 在瀏覽器與 Web 服務(wù)器之間使用異步數(shù)據(jù)傳輸(HTTP 請(qǐng)求),這樣就可使網(wǎng)頁從服務(wù)器請(qǐng)求少量的信息,而不是整個(gè)頁面。

21、AJAX 可使因特網(wǎng)應(yīng)用程序更小、更快,更友好。JavaScript XML HTML CSS 在 AJAX 中使用的 Web 標(biāo)準(zhǔn)已被良好定義,并被所有的主流瀏覽器支持。AJAX 應(yīng)用程序獨(dú)立于瀏覽器和平臺(tái)。 </p><p>  Web 應(yīng)用程序較桌面應(yīng)用程序有諸多優(yōu)勢(shì);它們能夠涉及廣大的用戶,它們更易安裝及維護(hù),也更易開發(fā)。不過,因特網(wǎng)應(yīng)用程序并不像傳統(tǒng)的桌面應(yīng)用程序那樣完善且友好。通過 AJAX,因特網(wǎng)應(yīng)

22、用程序可以變得更完善,更友好。</p><p><b>  1.3 可行性分析</b></p><p>  該系統(tǒng)所需硬件設(shè)備,市場(chǎng)上銷售且價(jià)格較低,甚至可以使用原有的設(shè)備,軟件上,操作系統(tǒng)采用Windows系列操作系統(tǒng),數(shù)據(jù)庫(kù)管理系統(tǒng)采用mysql,這些軟件在MIS開發(fā)中已被大量應(yīng)用,技術(shù)上都比較成熟。因此在技術(shù)上是可行的。</p><p>

23、  1.4 系統(tǒng)環(huán)境配置</p><p>  1.4.1安裝jdk</p><p>  本系統(tǒng)使用jdk1.6開發(fā)。下載安裝后,配置path環(huán)境變量。</p><p>  1.4.2安裝tomcat</p><p>  本系統(tǒng)使用tomcat6.0作為web服務(wù)器,啟動(dòng)前需設(shè)置java_home環(huán)境變量。</p><p&g

24、t;  1.4.3安裝MySQL</p><p>  本系統(tǒng)使用MySQL作為后臺(tái)數(shù)據(jù)庫(kù)。 </p><p><b>  1.4.4系統(tǒng)布署</b></p><p>  將項(xiàng)目文件復(fù)制到tomcat6.0的安裝路徑下的webapps目錄下。啟動(dòng)tomcat,打開瀏覽器即可使用系統(tǒng)。</p><p><b>  

25、2 系統(tǒng)分析</b></p><p><b>  2.1架構(gòu)分析</b></p><p><b>  架構(gòu)分析如下:</b></p><p>  1.邏輯架構(gòu):JSP+JavaBean +Database</p><p>  (1)JSP負(fù)責(zé)頁面表現(xiàn)</p><p&g

26、t;  (2)JavaBean負(fù)責(zé)業(yè)務(wù)邏輯</p><p>  (3)Database負(fù)責(zé)數(shù)據(jù)持久化操作</p><p>  2.物理架構(gòu):Web服務(wù)器一臺(tái),Database服務(wù)器一臺(tái)</p><p>  3.技術(shù)解決方案:WebServer-Tomcat6.0,Database-MySQL</p><p><b>  3 系統(tǒng)設(shè)計(jì)

27、</b></p><p><b>  3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p>  設(shè)計(jì)數(shù)據(jù)庫(kù)物理結(jié)構(gòu)主要表如下:</p><p>  1. user用戶表</p><p>  表3-1 用戶信息表</p><p>  2. resident信息表</p><p&

28、gt;  表3-2 resident信息表</p><p>  3. emp員工信息表</p><p>  表3-3 車位信息表</p><p>  4.Agepart年齡段信息表</p><p>  表3-4 車位出租信息表</p><p>  5.Askleave請(qǐng)假情況表</p><p&

29、gt;  表3-5 用水量表</p><p><b>  6. 樓棟信息表</b></p><p>  表3-6 用電量表</p><p><b>  7. 學(xué)位信息表</b></p><p>  表3-7 燃?xì)庥昧勘?lt;/p><p>  8.Department部門信

30、息表</p><p>  表3-8水、電、燃?xì)鈨r(jià)格及物業(yè)費(fèi)表</p><p>  9.Unit單元信息表</p><p><b>  表3-9收費(fèi)信息表</b></p><p>  10.Room房間信息表</p><p>  表3-10物業(yè)費(fèi)用表</p><p><

31、b>  4 系統(tǒng)功能實(shí)現(xiàn)</b></p><p>  4.1 后臺(tái)管理系統(tǒng)</p><p>  4.1.1 登錄后臺(tái)管理系統(tǒng)</p><p>  登錄界面設(shè)計(jì)如圖4-1,管理員輸入正確賬號(hào),密碼即可登錄系統(tǒng)。</p><p><b>  圖4-1登錄界面</b></p><p>

32、  登錄系統(tǒng)后進(jìn)入首頁界面如圖4-2。</p><p><b>  圖4—2系統(tǒng)界面</b></p><p>  4.1.2住戶管理模塊</p><p>  作為物業(yè)管理系統(tǒng),住戶資料管理是最基本的管理功能,如圖4-3界面用以查看住戶詳細(xì)資料。</p><p>  圖4-3住戶資料列表</p><p&

33、gt;  4.1.3設(shè)備管理模塊</p><p>  該模塊實(shí)現(xiàn)對(duì)小區(qū)內(nèi)各項(xiàng)公共設(shè)備(如:路燈、排水,取暖,電,用水,煤氣管等)的管理,為各項(xiàng)設(shè)備建立信息檔案,記錄各設(shè)備檢查\維修\保養(yǎng)記錄。具體又分為設(shè)備登記、設(shè)備報(bào)修、設(shè)備檢查和設(shè)備保養(yǎng)這四個(gè)子模塊。 </p><p>  使用ajax異步驗(yàn)證</p><p>  4.1.4 人事管理模塊</p>

34、<p>  該模塊主要是針對(duì)物業(yè)管理部門內(nèi)部的工作人員的,實(shí)現(xiàn)對(duì)物業(yè)管理人員、保安/保潔人員的管理。包括:?jiǎn)T工信息錄入、查詢、工資管理、員工考勤記錄和員工考核記錄這幾個(gè)子模塊。 </p><p><b>  添加員工</b></p><p>  圖4-4是添加員工的操作界面:</p><p><b>  圖4-4 添加員工&

35、lt;/b></p><p><b>  關(guān)鍵代碼如下</b></p><p><b>  //添加員工信息</b></p><p>  private void add(HttpServletRequest request, HttpServletResponse response) {</p>&l

36、t;p>  //判斷員工編號(hào)是否存在</p><p>  boolean flag=false;</p><p>  Emp emp=(Emp) request.getAttribute("obj");</p><p>  flag=es.isExist(emp.getEmpno());</p><p>  in

37、t flagresult=0;</p><p><b>  if(flag){</b></p><p>  //如果員工編號(hào)已存在</p><p>  flagresult=1;</p><p>  request.setAttribute("flagresult", flagresult);<

38、/p><p><b>  try {</b></p><p>  request.getRequestDispatcher("renshiguanli/addEmp.jsp").forward(request, response);</p><p>  } catch (ServletException e) {</p&g

39、t;<p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p>  } catch (IOException e) {</p><p>  // TODO Auto-generated catch block</p><p>  

40、e.printStackTrace();</p><p><b>  }</b></p><p><b>  }else{</b></p><p>  //如果員工編號(hào)不存在</p><p>  flagresult=0;</p><p>  request.setAttri

41、bute("flagresult", flagresult);</p><p><b>  //得到圖片的路徑</b></p><p>  String imgpath=emp.getImgpath();</p><p><b>  //得到圖片格式</b></p><p>  

42、if(imgpath!=null && imgpath.length()>0){</p><p>  String format=imgpath.substring(imgpath.lastIndexOf(".")+1);</p><p>  //得到圖片的預(yù)處理路徑</p><p>  String previmgpath

43、=imgpath.substring(0, imgpath.lastIndexOf("."))+"previmg"+imgpath.substring(imgpath.lastIndexOf("."));</p><p>  File src=new File(imgpath);</p><p>  File des=new Fi

44、le(previmgpath);</p><p>  ImageUtil.getPreImage(src, des, format);</p><p>  emp.setPrevimgpath(previmgpath);</p><p><b>  }</b></p><p>  int result=0;</p&

45、gt;<p>  result=es.add(emp);</p><p>  //成功添加員工,就要把他的考勤初始化</p><p>  addEmpcheck(emp);</p><p>  String fileName=request.getParameter("fileName");</p><p

46、>  request.setAttribute("result", result);</p><p><b>  try {</b></p><p>  request.getRequestDispatcher("renshiguanli/addEmp.jsp").forward(request, response);&l

47、t;/p><p>  } catch (ServletException e) {</p><p>  e.printStackTrace();</p><p>  } catch (IOException e) {</p><p>  e.printStackTrace();</p><p><b>  }&l

48、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //運(yùn)用反射保存</b></p><p>  public int save(Object obj) {</p><p>  C

49、lass clazz = obj.getClass();</p><p>  String sql = "insert into t_"+clazz.getSimpleName().toLowerCase()+" values(null";</p><p>  Field[] fs = clazz.getDeclaredFields();</p

50、><p>  List list = new ArrayList();</p><p>  for(int i=1;i<fs.length;i++){</p><p>  sql += ",?"; </p><p>  String fieldName = fs[i].getName();</p><

51、p>  Method m = null;</p><p><b>  try {</b></p><p>  m = clazz.getDeclaredMethod(BeanUtil.getGetter(fieldName));</p><p>  list.add(m.invoke(obj));</p><p>

52、  } catch ( Exception e) {</p><p>  e.printStackTrace();</p><p><b>  } </b></p><p><b>  }</b></p><p>  sql += ")";</p><p&g

53、t;  System.out.println(sql);</p><p>  return this.updateData(sql, list.toArray());</p><p><b>  }</b></p><p>  4.1.5部門管理模塊</p><p>  查看部門信息如圖4-5</p>&l

54、t;p>  圖4-5部門信息列表</p><p>  單擊部門名稱的時(shí)候,會(huì)彈出部門的詳細(xì)信息如圖4-6</p><p>  修改部門信息關(guān)鍵代碼:</p><p>  <script type="text/javascript"></p><p>  var chart = new FusionChar

55、ts("Charts/Column3D.swf", "ChartId", "400", "300", "0", "0");</p><p>  var rs = "${depData}" ;</p><p>  var rs1= rs.replace(

56、/\\"/g,"\"");</p><p>  chart.setXMLData(rs1); </p><p>  chart.render("chartdiv");</p><p>  function myJS(a,b,c){</p><p>  alert(a+&quo

57、t;人數(shù):"+c);</p><p><b>  }</b></p><p><b>  圖4-6 部門信息</b></p><p>  4.1.6 財(cái)務(wù)管理模塊</p><p>  該模塊主要實(shí)現(xiàn)對(duì)已經(jīng)入住的住戶進(jìn)行費(fèi)用(物業(yè)管理費(fèi)、水費(fèi)、電費(fèi)和煤氣費(fèi),暖氣費(fèi))繳納的各方面管理,具體包括

58、以下幾個(gè)部分:收費(fèi)類別設(shè)置、收費(fèi)項(xiàng)目設(shè)置、計(jì)量單位設(shè)置、表設(shè)置、用戶抄表、應(yīng)收款和收款單等。</p><p>  查看收費(fèi)項(xiàng)目如圖4-7</p><p>  圖4-7 查看收費(fèi)項(xiàng)目</p><p>  添加收費(fèi)項(xiàng)目如圖4-8</p><p>  圖4-8 添加收費(fèi)項(xiàng)目</p><p>  查詢收費(fèi)項(xiàng)目并分頁關(guān)鍵代碼如下

59、:</p><p>  4.1.7 房產(chǎn)管理模塊</p><p><b>  房產(chǎn)管理</b></p><p>  主要包括添加樓棟、樓棟列表、添加單元、添加房間類型、房間類型列表、添加房間和房產(chǎn)住戶信息列表功能如圖4-9。</p><p><b>  圖4-9 房產(chǎn)管理</b></p>

60、<p><b>  添加樓棟</b></p><p>  根據(jù)房產(chǎn)開發(fā)計(jì)劃,對(duì)于新建的樓棟進(jìn)行添加。</p><p>  包括js前臺(tái)的動(dòng)態(tài)驗(yàn)證如圖4-10</p><p>  圖4-10 樓棟添加</p><p><b>  樓棟列表顯示</b></p><p&g

61、t;  顯示樓棟的詳細(xì)信息,包括分頁如圖4-11</p><p><b>  圖4-11樓棟列表</b></p><p>  樓棟的編輯如圖4-12</p><p>  圖4-12 樓棟的編輯</p><p>  樓棟的刪除js代碼如下:</p><p>  4.1.8 系統(tǒng)管理模塊</p&

62、gt;<p>  系統(tǒng)管理模塊是整個(gè)物業(yè)管理系統(tǒng)的核心,在區(qū)分不同用戶的使用權(quán)限、加強(qiáng)軟件使用安全性和保證數(shù)據(jù)安全方面起著關(guān)鍵的作用。具體包括:用戶管理(增刪改查加分頁)、更改密碼、數(shù)據(jù)庫(kù)備份、恢復(fù)這幾個(gè)子模塊。 </p><p>  賬戶添加主要代碼如下:</p><p>  賬號(hào)異步驗(yàn)證是利用ajax實(shí)現(xiàn)</p><p>  $.post('

63、;userServlet.action',{'username':val,'cmd':'checkUserName'},function(result){</p><p>  if(result=="true"){</p><p>  $("#unamemsg").html('<i

64、><font color=red>賬號(hào)已經(jīng)存在!</font></i>');</p><p>  unameFlag = false;</p><p><b>  }else{</b></p><p>  $("#unamemsg").html('<i>&

65、lt;font color=blue>該賬戶可用</font></i>');</p><p>  unameFlag = true;</p><p><b>  }</b></p><p><b>  });</b></p><p>  密碼強(qiáng)度檢測(cè)是利用正則表

66、達(dá)式和css實(shí)現(xiàn)</p><p>  $("#password").keyup(function(){</p><p>  var val = $(this).val();</p><p>  if(val.length<3 || val.length>10){</p><p>  $("#pwdms

67、g").html('<i><font color=red>密碼長(zhǎng)度為3-10位!</font></i>');</p><p>  pwdFlag = false;</p><p><b>  }</b></p><p><b>  else{</b>

68、</p><p>  $("#pwdmsg").html('');</p><p>  var digit = /[0-9]+/; //數(shù)字</p><p>  var letter = /[a-zA-Z]+/; //字母</p><p>  var special = /[\-~!@#$%^&am

69、p;*]+/; //特殊字符</p><p>  if(!(digit.test(val) && letter.test(val))){</p><p>  $("#pwdmsg1").css("display","block");</p><p><b>  }else{<

70、/b></p><p>  $("#pwdmsg1").css("display","none");</p><p><b>  }</b></p><p>  if(digit.test(val) && letter.test(val) && !

71、special.test(val)){</p><p>  $("#pwdmsg1").css("display","block");</p><p>  $("#pwdmsg2").css("display","block");</p><p>

72、<b>  }else{</b></p><p>  $("#pwdmsg2").css("display","none");</p><p><b>  }</b></p><p>  if(digit.test(val) && letter.t

73、est(val) && special.test(val)){</p><p>  $("#pwdmsg1").css("display","block");</p><p>  $("#pwdmsg2").css("display","block");&

74、lt;/p><p>  $("#pwdmsg3").css("display","block");</p><p><b>  }else{</b></p><p>  $("#pwdmsg3").css("display","none&q

75、uot;);</p><p><b>  }</b></p><p>  pwdFlag = true;</p><p><b>  }</b></p><p><b>  });</b></p><p>  使用功能點(diǎn):賬號(hào)異步驗(yàn)證如圖4-13,密碼強(qiáng)

76、度動(dòng)態(tài)檢測(cè)如圖4-14</p><p>  圖4-13 賬號(hào)異步校驗(yàn)</p><p>  圖4-14 密碼強(qiáng)度動(dòng)態(tài)檢測(cè)</p><p><b>  5 測(cè)試</b></p><p>  5.1 web系統(tǒng)測(cè)試</p><p>  由于web應(yīng)用與用戶直接相關(guān),又通常需要承受長(zhǎng)時(shí)間的大量操作,因此w

77、eb項(xiàng)目的功能和性能都必須經(jīng)過可靠的驗(yàn)證。這就要經(jīng)過web項(xiàng)目的全面測(cè)試。Web應(yīng)用程序測(cè)試與其它任何一種類型的應(yīng)用程序測(cè)試相比沒有太大差別。</p><p>  web測(cè)試包括界面測(cè)試、功能測(cè)試、性能測(cè)試、可用性測(cè)試。</p><p>  5.1.1 界面測(cè)試</p><p>  界面是軟件與用戶交互的最直接的層,界面的好壞決定用戶對(duì)軟件的第一印象。而且設(shè)計(jì)良好的

78、界面能夠引導(dǎo)用戶自己完成相應(yīng)的操作,起到向?qū)У淖饔?。同時(shí)界面如同人的面孔,具有吸引用戶的直接優(yōu)勢(shì)。設(shè)計(jì)合理的界面能給用戶帶來輕松愉悅的感受和成功的感覺,相反由于界面設(shè)計(jì)的失敗,讓用戶有挫敗感,再實(shí)用強(qiáng)大的功能都可能在用戶的畏懼與放棄中付諸東流。目前界面的設(shè)計(jì)引起軟件設(shè)計(jì)人員的重視的程度還遠(yuǎn)遠(yuǎn)不夠,直到最近網(wǎng)頁制作的興起,才受到專家的青睞。而且設(shè)計(jì)良好的界面由于需要具有藝術(shù)美的天賦而遭拒絕。</p><p>  5

79、.1.2 功能測(cè)試</p><p>  功能測(cè)試就是對(duì)產(chǎn)品的各功能進(jìn)行驗(yàn)證,根據(jù)功能測(cè)試用例,逐項(xiàng)測(cè)試,檢查產(chǎn)品是否達(dá)到用戶要求的功能。</p><p>  功能測(cè)試也叫黑盒子測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,只需考慮各個(gè)功能,不需要考慮整個(gè)軟件的內(nèi)部結(jié)構(gòu)及代碼.一般從軟件產(chǎn)品的界面、架構(gòu)出發(fā),按照需求編寫出來的測(cè)試用例,輸入數(shù)據(jù)在預(yù)期結(jié)果和實(shí)際結(jié)果之間進(jìn)行評(píng)測(cè),進(jìn)而提出更加使產(chǎn)品達(dá)到用戶使用的要求。&

80、lt;/p><p>  黑盒測(cè)試試圖發(fā)現(xiàn)以下類型的錯(cuò)誤: </p><p>  1)功能錯(cuò)誤或遺漏; </p><p><b>  2)界面錯(cuò)誤; </b></p><p>  3)數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫(kù)訪問錯(cuò)誤; </p><p><b>  4)性能錯(cuò)誤; </b></p

81、><p>  5)初始化和終止錯(cuò)誤。</p><p>  5.1.3 性能測(cè)試</p><p>  性能測(cè)試是通過自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。負(fù)載測(cè)試和壓力測(cè)試都屬于性能測(cè)試,兩者可以結(jié)合進(jìn)行。通過負(fù)載測(cè)試,確定在各種工作負(fù)載下系統(tǒng)的性能,目標(biāo)是測(cè)試當(dāng)負(fù)載逐漸增加時(shí),系統(tǒng)各項(xiàng)性能指標(biāo)的變化情況。壓力測(cè)試是通過確定一個(gè)

82、系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。</p><p>  性能測(cè)試在軟件的質(zhì)量保證中起著重要的作用,它包括的測(cè)試內(nèi)容豐富多樣。中國(guó)軟件評(píng)測(cè)中心將性能測(cè)試概括為三個(gè)方面:應(yīng)用在客戶端性能的測(cè)試、應(yīng)用在網(wǎng)絡(luò)上性能的測(cè)試和應(yīng)用在服務(wù)器端性能的測(cè)試。通常情況下,三方面有效、合理的結(jié)合,可以達(dá)到對(duì)系統(tǒng)性能全面的分析和瓶頸的預(yù)測(cè)。</p><p>  5.1.4 可用

83、性測(cè)試</p><p>  可用性測(cè)試是指,讓一群有代表性的用戶嘗試對(duì)產(chǎn)品進(jìn)行典型操作,同時(shí)觀察員和開發(fā)人員在一旁觀察,聆聽,做記錄。該產(chǎn)品可能是一個(gè)網(wǎng)站,軟件,或者其他任何產(chǎn)品,它可能尚未成型。測(cè)試可以是早期的紙上原型測(cè)試,也可以是后期成品的測(cè)試。</p><p><b>  參考文獻(xiàn):</b></p><p>  [1] 王志儒.住宅小區(qū)物

84、業(yè)管理[M].中國(guó)建筑工業(yè)出版社,1998,57-58.[2] 沈瑞珠,劉墨玲.物業(yè)智能化管理技術(shù)[M].中國(guó)輕工業(yè)出版社,2001,156-157.</p><p>  [3] 莫繼紅.計(jì)算機(jī)在生活小區(qū)物業(yè)管理中的應(yīng)用[J].電腦與信息技術(shù),1997(1): 29-30.</p><p>  [4] 趙海林.物業(yè)管理計(jì)算機(jī)化[M].華中師范大學(xué)出版社,1998, 89-92</p

85、><p>  [5] Blake Schwendiman.Php4 Developer' s Guide[M].US:McGrawHillProfessional,2000, 171-178.[6] James B.Rishel.HVAC[M].West Chester,Ohio:Systecon Inc:183-191.</p><p>  [7]Cay S.Horstmann、G

86、ary Cornell著.陳昊鵬、王浩、姚建平等譯.JAVA2核心技術(shù)[M].機(jī)械工業(yè)出版社,2005,182-183</p><p>  [8]Bruce Eckel.Thinking in Java Fourth Edition[M].President,MindView,Inc, 2005,</p><p><b>  22-23</b></p>

87、<p>  [9]Nicholas C.Zakas. Professional JavaScript for Web Developers 2nd Edition[M].Wiley Publishing,Inc,2008,67-70</p><p>  [10]Hans Bergsten.JavaServer Pages First Edition[M]. O’Reilly Media, Inc .De

88、cemeber 2000,88-93</p><p>  [11]劉德明.精典物業(yè)管理方案[M].黃河出版社,2005.2,102-106</p><p>  [12]JAVA核心技術(shù)</p><p>  [13]閻宏.JAVA與模式[M].電子工業(yè)出版社,2002.10,328-330</p><p><b>  附錄 主要代

89、碼</b></p><p>  利用反射封裝的對(duì)數(shù)據(jù)的增刪改查。</p><p>  public Object getCount(String sql, Object[] params) {</p><p>  Connection conn = null;</p><p>  PreparedStatement pst = n

90、ull;</p><p>  ResultSet rs = null;</p><p>  Object obj = null;</p><p>  conn = DBUtil.getConnection();</p><p>  pst = DBUtil.getPreparedStatement(conn, sql);</p>

91、<p><b>  try {</b></p><p>  if(params!=null){</p><p>  for (int i = 0; i < params.length; i++) {</p><p>  pst.setObject(i + 1, params[i]);</p><p>&

92、lt;b>  }</b></p><p><b>  }</b></p><p>  rs = pst.executeQuery();</p><p>  while(rs.next()){</p><p>  obj = rs.getObject(1);</p><p><

93、;b>  }</b></p><p>  }catch(Exception e){</p><p>  e.printStackTrace();</p><p><b>  }finally{</b></p><p>  DBUtil.closeAll(rs, pst, conn);</p>

94、<p><b>  }</b></p><p>  return obj;</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public Object getRowFields(String sq

95、l, Object[] params, Class clazz) {</p><p>  List list = getRowsFields(sql,params,clazz);</p><p>  Object obj = null;</p><p>  if(list!=null && list.size()>0){</p>

96、<p>  obj = list.get(0);</p><p><b>  }</b></p><p>  return obj;</p><p><b>  }</b></p><p><b>  @Override</b></p><p>

97、;  public List getRowsFields(String sql, Object[] params, Class clazz) {</p><p>  Connection conn = null;</p><p>  PreparedStatement pst = null;</p><p>  ResultSet rs = null;</p&

98、gt;<p>  List list = new ArrayList();</p><p>  conn = DBUtil.getConnection();</p><p>  pst = DBUtil.getPreparedStatement(conn, sql);</p><p><b>  try {</b></p&g

99、t;<p>  if(params!=null){</p><p>  for (int i = 0; i < params.length; i++) {</p><p>  pst.setObject(i + 1, params[i]);</p><p><b>  }</b></p><p>&l

100、t;b>  }</b></p><p>  rs = pst.executeQuery();</p><p>  ResultSetMetaData rsmd = rs.getMetaData();</p><p>  while(rs.next()){</p><p>  Object obj = clazz.newIns

101、tance();</p><p>  for(int i=0;i<rsmd.getColumnCount();i++){</p><p>  String fieldName = rsmd.getColumnName(i+1);</p><p>  Field f = clazz.getDeclaredField(fieldName);</p>

102、<p>  Method m = clazz.getDeclaredMethod(BeanUtil.getSetter(fieldName), f.getType());</p><p>  Object v = rs.getObject(fieldName);</p><p>  if(v!=null){</p><p>  if("int&q

103、uot;.equals(f.getType().getName())){</p><p>  m.invoke(obj, Integer.parseInt(v+""));</p><p><b>  }else{</b></p><p>  m.invoke(obj, v);</p><p><

104、b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  list.add(obj);</p><p><b>  }</b></p><p>  } catch (Exce

105、ption e) {</p><p>  e.printStackTrace();</p><p><b>  }finally{</b></p><p>  DBUtil.closeAll(rs, pst, conn);</p><p><b>  }</b></p><p&g

106、t;  return list;</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public int updateData(String sql, Object[] params) {</p><p>  Connection c

107、onn = null;</p><p>  PreparedStatement pst = null;</p><p>  int number = 1;</p><p>  conn = DBUtil.getConnection();</p><p>  pst = DBUtil.getPreparedStatement(conn, sql

108、);</p><p><b>  try {</b></p><p>  if(params!=null){</p><p>  for (int i = 0; i < params.length; i++) {</p><p>  pst.setObject(i + 1, params[i]);</p>

109、;<p><b>  }</b></p><p><b>  }</b></p><p>  pst.executeUpdate();</p><p>  }catch(Exception e){</p><p>  e.printStackTrace();</p>&l

110、t;p>  number = 0;</p><p><b>  }finally{</b></p><p>  DBUtil.close(pst, conn);</p><p><b>  }</b></p><p>  return number;</p><p>&

111、lt;b>  }</b></p><p>  public static void main(String[] args) {</p><p>  String name = "haha111";</p><p>  BaseDao bs= new BaseDaoImpl();</p><p>  Res

112、ident rs=(Resident) new BaseDaoImpl().getRowFields("select * from t_resident ",null,Resident.class );</p><p>  System.out.println(rs.getBuild_id());</p><p>  /*List list = new BaseDaoI

113、mpl().getRowsFields("select * from t_resident",null ,Resident.class);</p><p>  for (Iterator iterator = list.iterator(); iterator.hasNext();) {</p><p>  Resident object = (Resident) it

114、erator.next();</p><p>  System.out.println(object.getRsdname());</p><p><b>  }*/</b></p><p>  /*Resident r =(Resident)new BaseDaoImpl().getRowFields("select * from

115、t_resident where age=? and degree=?", new Object[]{33,7}, Resident.class);</p><p>  System.out.println(r.getRsdname());*/</p><p>  /*Object obj = new BaseDaoImpl().getCount("select cou

116、nt(*) from t_resident",null);</p><p>  Number n = (Number)obj;</p><p>  System.out.println(n.intValue());*/</p><p>  //int number = new BaseDaoImpl().updateData("delete

117、from t_resident where id=?",new Object[]{771});</p><p>  //System.out.println(number);</p><p>  //new BaseDaoImpl().saveOrUpdate(new Build());</p><p>  /*for(int i=30;i<

118、300;i++){</p><p>  Resident r = new Resident("rsd"+i, 0, "1234567890"+i,(i+2),</p><p>  "12345678987654321"+i);</p><p>  new BaseDaoImpl().save(r);<

119、/p><p><b>  }*/</b></p><p>  /*GooglePageUtil page = new BaseDaoImpl().findByGooglePage("select * from t_resident where gender=?", new Object[]{1},Resident.class ,</p>

120、<p>  1, 10, 10); */</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public int save(Object obj) {</p><p>  Class clazz = obj.getClass

121、();</p><p>  String sql = "insert into t_"+clazz.getSimpleName().toLowerCase()+" values(null";</p><p>  Field[] fs = clazz.getDeclaredFields();</p><p>  List lis

122、t = new ArrayList();</p><p>  for(int i=1;i<fs.length;i++){</p><p>  sql += ",?"; </p><p>  String fieldName = fs[i].getName();</p><p>  Method m = null;&l

123、t;/p><p><b>  try {</b></p><p>  m = clazz.getDeclaredMethod(BeanUtil.getGetter(fieldName));</p><p>  list.add(m.invoke(obj));</p><p>  } catch ( Exception e)

124、{</p><p>  e.printStackTrace();</p><p><b>  } </b></p><p><b>  }</b></p><p>  sql += ")";</p><p>  System.out.println(sq

125、l);</p><p>  return this.updateData(sql, list.toArray());</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public int update(Object obj) {&l

126、t;/p><p>  Class clazz = obj.getClass();</p><p>  String sql = "update t_"+clazz.getSimpleName().toLowerCase()+" set ";</p><p>  Field[] fs = clazz.getDeclaredField

127、s();</p><p>  List list = new ArrayList();</p><p>  for(int i=1;i<fs.length;i++){</p><p>  sql += fs[i].getName()+"=?,"; </p><p>  String fieldName = fs[i]

128、.getName();</p><p>  Method m = null;</p><p><b>  try {</b></p><p>  m = clazz.getDeclaredMethod(BeanUtil.getGetter(fieldName));</p><p>  list.add(m.invoke(

129、obj));</p><p>  } catch ( Exception e) {</p><p>  e.printStackTrace();</p><p><b>  } </b></p><p><b>  }</b></p><p>  sql = sql.sub

130、string(0,sql.length()-1);</p><p>  sql += " where id =?";</p><p>  Method getId = null;</p><p><b>  try {</b></p><p>  getId = clazz.getDeclaredMe

溫馨提示

  • 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. 眾賞文庫(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論