VB.NET機房收費系統項目總結
從2013年5月3日——2013年8月20日曆時三個多月的.NET機房收費系統終於完成了。項目做完了,真有一種如釋重負的感覺。
下面我將從文檔、UML圖,代碼這三個方面來進行總結,重點是前兩方面內容。 一、文檔 1.1可行性分析報告和項目開發計劃
這兩個文檔主要是確定軟體系統是否值得開發,搞清楚問題的性質,確定系統的目標和規模,從技術,經濟和社會等方面分析論證項目的可行性。還有對此項目的開發做個總體的規劃,內容有:項目的背景,項目概述,計劃,人員及組織分工,交付期限。為軟體的開發進行詳細的計劃。可行性分析報告和項目開發計劃是給開發單位看的。 1.2需求分析。
是使用者對項目軟體系統在功能、行為、效能設計約束方面的期望。軟體對軟硬體的需求。需求分析是使用者、分析人員和系統設計人員共同參與討論編寫,是為系統設計提出“做什麼”的。一個很有用的設計文檔,是系統開發的靈魂。 1.3概要設計和詳細設計 1.3.1概要設計
概要設計將系統劃分成模組結構形式,決定每個模組要完成的功能,每個模組之間的調用關係。概要設計主要包含:功能、處理流程、資料結構、運行等做設計。概要設計是進階設計人員和有豐富經驗的開發人員一起編寫。 1.3.2 詳細設計
描述模組執行過程、局部資料群組織、控制流程和每一步具體家用要求及實現設計。為編程人員提供每一個功能的資料輸入,輸出、設計方法、流程邏輯、介面、儲存分配、注釋設計、測試計劃。此文檔是由每一個程式人員參與編寫。
編寫完一遍文檔發現,整個系統已經開發了三分之一了。 二、UML圖 1、使用案例圖
定義:採用參與者與用例作為基本元素,以不同的視角展現系統的功能型需求。在需求分析的時候要畫使用案例圖。
2、類圖
定義描述現實世界中問題的概念理解,類之間的關係有依賴、關聯、繼承,多態。每個類裡面有方法和屬性,方法要寫參數和傳回值。
3、包圖
包圖是在 UML 中用類似於檔案夾的符號表示的模型元素的組合。系統中的每個元素都只能為一個包所有,一個包可嵌套在另一個包中。使用包圖可以將相關元素歸入一個系統。
4、時序圖。
這個顯現了各個類之間各個層之間的邏輯關係。
5、部署圖。
顯現了系統編碼打包交付給使用者之後的部署。
6、狀態圖。
描述一個實體基於事件反應的動態行為,顯示了該實體如何根據當前所處的狀態對不同的事件做出反應的。
7、行為圖。
和狀態圖差不多基本上差不多,在這裡不做多餘贅述。 8、構件圖。
構件圖從軟體架構的角度來描述一個系統的主要功能,如系統分成幾個子系統,每個子系統包括哪些類、包和構件,它們之間的關係以及它們分配到哪些節點上等。使用構件圖可以清楚地看出系統的結構和功能。方便項目組的成員制定工作目標和瞭解工作情況,同時,最重要的一點是有利於軟體的複用。
三、代碼
開始編寫代碼的時候很迷茫,看了好多人的部落格但是還是不知道怎樣寫,登入的執行個體也實現了,但是一到真正的敲系統怎麼就特別的費勁。我就不斷反覆研究這個登入的例子,很是迷惑不解。最後還是在青峰師哥的指導下打通了我的任督二脈,一語驚醒夢中人。問題解開了,就開始了真正編寫代碼的曆程。說實話最難寫的是DAL層,BLL層UI層很簡單就是把得到的參數傳到BLL層中,BLL層在通過一些邏輯判斷,把想要查的資料賦給實體類然後傳到DAL層讓DAL層來進行資料庫的操作。下面我就寫下在.NET機房收費系統開發中學習到的一些簡單知識。 1、串連資料庫。
要想進行資料庫的操作就要串連資料庫,下面是在D層中敲寫的串連資料庫的代碼:
'串連字元 Privatestr_SqlConnection As String = "DataSource=192.168.24.196;Initial Catalog=Charge_sys;UserID=sa;Password=123456" '聲明一個的實體Public FunctionBasicD(ByVal enMoney As BasicDataE) AsEntity.BasicDataE ‘選取串連的資料庫 DimstrSqlstring2 As String strSqlstring2 = "select* from BasicData_Info" 'SqlConnection表示一個到 SQL Server 資料庫的開啟的串連。 Dimseting As String seting = str_SqlConnection DimMyConn As SqlConnection MyConn = New SqlConnection(seting) 'SqlCommand表示要對 SQL Server 資料庫執行的一個 Transact-SQL 陳述式或預存程序 DimMyCmd As SqlCommand MyCmd = New SqlCommand(strSqlstring2,MyConn) '開啟讀取() MyConn.Open() DimMyReader As SqlDataReader MyReader = MyCmd.ExecuteReader
說到D層還用了一個抽象類別SQLHelper,具體內容見部落格。
然後在DAL的每一類中調用一下就行了。
2、增、刪、改。
前面部落格也有寫過以上三個內容,實現的形式是一樣的,但是具體代碼卻不同,下面就簡單的貼一下代碼吧。
增加記錄:
''' 添加線上記錄 ''' </summary> ''' <param name="OnLineInfo"></param> ''' <returns></returns> ''' <remarks></remarks> Function AddOnLineInfo(ByVal OnLineInfo AsEntity.OnComputerInfo) As Entity.OnComputerInfo Dim strSQL As String = "insert into OnComputer_Info values(@StudentCardNumber,@StudentNumber,@StudentName,@StudentMajor,@StudentSex,@OnLineDate,@OnLineTime,@OperatorUseComputer)" Dim cmd As SqlCommand = New SqlCommand(strSQL, conn) '傳參數 cmd.Parameters.Add(New SqlParameter("@StudentCardNumber",OnLineInfo.StudentCardNumber)) cmd.Parameters.Add(New SqlParameter("@StudentNumber",OnLineInfo.StudentNumber)) cmd.Parameters.Add(New SqlParameter("@StudentName",OnLineInfo.StudentName)) cmd.Parameters.Add(NewSqlParameter("@StudentMajor", OnLineInfo.StudentMajor)) cmd.Parameters.Add(New SqlParameter("@StudentSex",OnLineInfo.StudentSex)) cmd.Parameters.Add(New SqlParameter("@OnLineDate",OnLineInfo.OnLineDate)) cmd.Parameters.Add(New SqlParameter("@OnLineTime",OnLineInfo.OnLineTime)) cmd.Parameters.Add(New SqlParameter("@OperatorUseComputer",OnLineInfo.OperatorUserComputer)) Try conn.Open() If (cmd.ExecuteNonQuery > 0)Then OnLineInfo.Success = True Else OnLineInfo.Success = False End If Return OnLineInfo Catch ex As Exception OnLineInfo.Success = False Return OnLineInfo Finally cmd.Dispose() conn.Close() End Try End Function
刪除記錄:
''' 刪除上機記錄 ''' </summary> ''' <paramname="OnLineInfo"></param> ''' <returns></returns> ''' <remarks></remarks> Function DeleteOnLineInfo(ByVal OnLineInfo AsEntity.OnComputerInfo) As Entity.OnComputerInfo '刪除記錄的語句 Dim strSQL As String = "delete from OnComputer_Info whereStudentCardNumber=@StudentCardNumber" Dim cmd As SqlCommand = New SqlCommand(strSQL, conn) cmd.Parameters.Add(New SqlParameter("StudentCardNumber",OnLineInfo.StudentCardNumber)) Try . conn.Open() If (cmd.ExecuteNonQuery > 0)Then OnLineInfo.Success = True Else OnLineInfo.Success = False End If Catch ex As Exception OnLineInfo.Success = False Finally cmd.Dispose() conn.Close() End Try Return OnLineInfo End Function
更改記錄:
''' <summary> ''' 更新工作記錄 ''' </summary> ''' <param name="WorkLogInfo"></param> ''' <returns></returns> ''' <remarks></remarks> Function UpdateWorkLogInfo(ByVal WorkLogInfo As Entity.WorkLogInfo) AsEntity.WorkLogInfo Dim strSql As String = "update WorkLog_Info set LogOutDate=@LogoutDate,LogoutTime =@LogoutTime,OperatorStatus =@OperatorStatus whereOperatorID =@OperatorID" Dim cmd As SqlCommand = New SqlCommand(strSql, conn) cmd.Parameters.Add(New SqlParameter("@OperatorID", WorkLogInfo.OperatorID)) cmd.Parameters.Add(New SqlParameter("@LogoutDate",WorkLogInfo.LogoutDate)) cmd.Parameters.Add(New SqlParameter("@LogoutTime",WorkLogInfo.LogoutTime)) cmd.Parameters.Add(New SqlParameter("@OperatorStatus", WorkLogInfo.OperatorStatus)) Try conn.Open() If (cmd.ExecuteNonQuery > 0)Then WorkLogInfo.Success = True Else WorkLogInfo.Success =False End If Return WorkLogInfo Catch ex As Exception Return WorkLogInfo Finally conn.Close() End Try . EndFunction
3、所用到的查詢的SQL語句
①簡單的SQL語句
update 表名 set 所要更新欄位 where 查詢的條件
insert into 表名values(所要添加的欄位(按照SQL表的順序排列))
select * from 表名 where 條件
②內容擴充
select OperatorIDas 教師,OperatorLevel as 使用者層級,LogonDate as 登入日期,LogonTime as 登入時間,OperatorUseComputer as機器名 fromWorkLog_Info where OperatorStatus=@OperatorStatus
這樣查出的記錄可以讓英文名欄位顯現出中文名字。
③select count(*) as count from 表名 where 記錄條件
查出合格記錄個數。
④select SUM(所要求和的欄位) as 所要求和的欄位 from 表名 where 條件
查詢出合格記錄並且所要求和的欄位進行求和。
⑤select top 1 * from 表名 order by 欄位名 fields
查出最近符合欄位條件的一行記錄。
4、DataSet DataTable DataReader DataGridView
DataSet DataTable DataReaderDataGridView的一些知識,前面部落格有介紹,在這裡不加以介紹,具體內容建部落格。 5、錯誤處理
Try..catch..finally...end tryTry<所要測試的代碼>Catch ex As Exception<如果出現異常則執行這個語句>Finally<最後執行的代碼>end try
四、其他部落格連結 淺析VB.NET方法建立: http://blog.csdn.net/xjc1278003262/article/details/9056085
運行程式VS2012彈出的不倫不類的問題 :http://blog.csdn.net/xjc1278003262/article/details/9395843
.Net 中DataTable和 DataRow的 區別與聯絡:http://blog.csdn.net/xjc1278003262/article/details/9817249
DataGridView控制項的使用和Excel表格的匯出: http://blog.csdn.net/xjc1278003262/article/details/9934221
圖解機房收費系統報表製作的全過程: http://blog.csdn.net/xjc1278003262/article/details/10077633
五、總結
VB.NET 機房收費系統項目開發完成,個人不管是在技術還是在思想上都是收益頗豐的。此次項目的完成不僅給自己開啟了一扇新窗,開始撥雲見日;同時也給自己開啟了一片的新的天地,以後的學習將會是高屋建瓴,勢不可當。