基于java和mysql的物業(yè)管理系統(tǒng)論文-修改(含源文件)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 緒論3</b></p><p>  1.1 背景介紹3</p><p>  1.1.1 項目開發(fā)背景3</p><p>  1.1.2 研究目標4</p><p>  1.2 相關技術介紹

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架構分析6</b></p><p><b>  3 系統(tǒng)設計6</b></p><p>  3.1 數據庫設計6</p><p>  4 系統(tǒng)功能實現9</p><p>  4.1 后臺管理系統(tǒng)9</p><p>  4.1.1 登錄后臺管理系統(tǒng)9</p>

5、<p>  4.1.2住戶管理模塊10</p><p>  4.1.3設備管理模塊11</p><p>  4.1.4 人事管理模塊11</p><p>  4.1.5部門管理模塊14</p><p>  4.1.6 財務管理模塊15</p><p>  4.1.7 房產管理模塊17</

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

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

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

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

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

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

12、架。</p><p>  集成SSH框架的系統(tǒng)從職責上分為四層:表示層、業(yè)務邏輯層、數據持久層和域模塊層,以幫助開發(fā)人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。其中使用Struts作為系統(tǒng)的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業(yè)務跳轉,利用Hibernate框架對持久層提供支持,Spring做管理,管理struts和hibernate。具體做法是:用面向對象的分析

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

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

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

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

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

18、費用和復雜性,同時提供對現有應用程序集成強有力支持,完全支持Enterprise JavaBeans,有良好的向導支持打包和部署應用,添加目錄支持,增強了安全機制,提高了性能。</p><p>  1.2.3 MySQL</p><p>  MySQL是一個小型關系型數據庫管理系統(tǒng),與其他的大型數據庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規(guī)模小

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

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

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

22、用程序可以變得更完善,更友好。</p><p><b>  1.3 可行性分析</b></p><p>  該系統(tǒng)所需硬件設備,市場上銷售且價格較低,甚至可以使用原有的設備,軟件上,操作系統(tǒng)采用Windows系列操作系統(tǒng),數據庫管理系統(tǒng)采用mysql,這些軟件在MIS開發(fā)中已被大量應用,技術上都比較成熟。因此在技術上是可行的。</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服務器,啟動前需設置java_home環(huán)境變量。</p><p&g

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

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

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

27、</b></p><p><b>  3.1 數據庫設計</b></p><p>  設計數據庫物理結構主要表如下:</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請假情況表</p><p&

29、gt;  表3-5 用水量表</p><p><b>  6. 樓棟信息表</b></p><p>  表3-6 用電量表</p><p><b>  7. 學位信息表</b></p><p>  表3-7 燃氣用量表</p><p>  8.Department部門信

30、息表</p><p>  表3-8水、電、燃氣價格及物業(yè)費表</p><p>  9.Unit單元信息表</p><p><b>  表3-9收費信息表</b></p><p>  10.Room房間信息表</p><p>  表3-10物業(yè)費用表</p><p><

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

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

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

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

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

36、t;p>  //判斷員工編號是否存在</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>  //如果員工編號已存在</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>  //如果員工編號不存在</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>  //得到圖片的預處理路徑</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>  //運用反射保存</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>  單擊部門名稱的時候,會彈出部門的詳細信息如圖4-6</p><p>  修改部門信息關鍵代碼:</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;人數:"+c);</p><p><b>  }</b></p><p><b>  圖4-6 部門信息</b></p><p>  4.1.6 財務管理模塊</p><p>  該模塊主要實現對已經入住的住戶進行費用(物業(yè)管理費、水費、電費和煤氣費,暖氣費)繳納的各方面管理,具體包括

58、以下幾個部分:收費類別設置、收費項目設置、計量單位設置、表設置、用戶抄表、應收款和收款單等。</p><p>  查看收費項目如圖4-7</p><p>  圖4-7 查看收費項目</p><p>  添加收費項目如圖4-8</p><p>  圖4-8 添加收費項目</p><p>  查詢收費項目并分頁關鍵代碼如下

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

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

61、t;  顯示樓棟的詳細信息,包括分頁如圖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)管理模塊是整個物業(yè)管理系統(tǒng)的核心,在區(qū)分不同用戶的使用權限、加強軟件使用安全性和保證數據安全方面起著關鍵的作用。具體包括:用戶管理(增刪改查加分頁)、更改密碼、數據庫備份、恢復這幾個子模塊。 </p><p>  賬戶添加主要代碼如下:</p><p>  賬號異步驗證是利用ajax實現</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>賬號已經存在!</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>  密碼強度檢測是利用正則表

66、達式和css實現</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>密碼長度為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]+/; //數字</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>  使用功能點:賬號異步驗證如圖4-13,密碼強

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

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

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

79、.1.2 功能測試</p><p>  功能測試就是對產品的各功能進行驗證,根據功能測試用例,逐項測試,檢查產品是否達到用戶要求的功能。</p><p>  功能測試也叫黑盒子測試或數據驅動測試,只需考慮各個功能,不需要考慮整個軟件的內部結構及代碼.一般從軟件產品的界面、架構出發(fā),按照需求編寫出來的測試用例,輸入數據在預期結果和實際結果之間進行評測,進而提出更加使產品達到用戶使用的要求。&

80、lt;/p><p>  黑盒測試試圖發(fā)現以下類型的錯誤: </p><p>  1)功能錯誤或遺漏; </p><p><b>  2)界面錯誤; </b></p><p>  3)數據結構或外部數據庫訪問錯誤; </p><p><b>  4)性能錯誤; </b></p

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

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

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

84、業(yè)管理[M].中國建筑工業(yè)出版社,1998,57-58.[2] 沈瑞珠,劉墨玲.物業(yè)智能化管理技術[M].中國輕工業(yè)出版社,2001,156-157.</p><p>  [3] 莫繼紅.計算機在生活小區(qū)物業(yè)管理中的應用[J].電腦與信息技術,1997(1): 29-30.</p><p>  [4] 趙海林.物業(yè)管理計算機化[M].華中師范大學出版社,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核心技術[M].機械工業(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核心技術</p><p>  [13]閻宏.JAVA與模式[M].電子工業(yè)出版社,2002.10,328-330</p><p><b>  附錄 主要代

89、碼</b></p><p>  利用反射封裝的對數據的增刪改查。</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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論