VB.NET 机房收费系统项目总结
从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了。项目做完了,真有一种如释重负的感觉。
下面我将从文档、UML图,代码这三个方面来进行总结,重点是前两方面内容。
一、文档
1.1可行性分析报告和项目开发计划
这两个文档主要是确定软件系统是否值得开发,搞清楚问题的性质,确定系统的目标和规模,从技术,经济和社会等方面分析论证项目的可行性。还有对此项目的开发做个总体的规划,内容有:项目的背景,项目概述,计划,人员及组织分工,交付期限。为软件的开发进行详细的计划。可行性分析报告和项目开发计划是给开发单位看的。
1.2需求分析。
是用户对项目软件系统在功能、行为、性能设计约束方面的期望。软件对软硬件的需求。需求分析是用户、分析人员和系统设计人员共同参与讨论编写,是为系统设计提出“做什么”的。一个很有用的设计文档,是系统开发的灵魂。
1.3概要设计和详细设计
1.3.1概要设计
概要设计将系统划分成模块结构形式,决定每个模块要完成的功能,每个模块之间的调用关系。概要设计主要包含:功能、处理流程、数据结构、运行等做设计。概要设计是高级设计人员和有丰富经验的开发人员一起编写。
1.3.2 详细设计
描述模块执行过程、局部数据组织、控制流和每一步具体家用要求及实现设计。为编程人员提供每一个功能的数据输入,输出、设计方法、流程逻辑、接口、存储分配、注释设计、测试计划。此文档是由每一个程序人员参与编写。
编写完一遍文档发现,整个系统已经开发了三分之一了。
二、UML图
定义:采用参与者与用例作为基本元素,以不同的视角展现系统的功能型需求。在需求分析的时候要画用例图。
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 try
Try
<所要测试的代码>
Catch ex As Exception
<如果出现异常则执行这个语句>
Finally
<最后执行的代码>
end try
四、其他博客链接
五、总结
VB.NET 机房收费系统项目开发完成,个人不管是在技术还是在思想上都是收益颇丰的。此次项目的完成不仅给自己打开了一扇新窗,开始拨云见日;同时也给自己打开了一片的新的天地,以后的学习将会是高屋建瓴,势不可当!
VB.NET 机房收费系统项目总结的更多相关文章
- VB.NET机房收费系统总结
总感觉这次机房收费系统非常有份量,一直没有下手总结,从2014-7-27至2014-9-29.这中间有太多故事和成长.首先说一下两次机房收费系统的不同,它是我们从面向过程向面向对象的一个转变.在.NE ...
- vb.net机房收费系统之组合查询
我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...
- VB.NET<机房收费系统个人重构版>你都学会了什么(之五)
接着上篇我们说的配置文件,今天我们来说一下接口. 1.UML图 2.三层架构 3.Sqlhelper 4.配置文件 5.接口 6.设计模式 什么是接口呢?我们可以将接口理解为用于沟通的中介的抽象化.可 ...
- 小结:VB.NET机房收费系统个人版
经过几天的缝缝补补,自己的个人版最终OK了,!或许是由于有第一次的机房收费系统的经验,这次做,感觉很亲切. 在业务逻辑方面,沿袭曾经的逻辑.做了一点升级.可是修改不大. 在数据库方面,感觉自己从一个小 ...
- vb.net机房收费系统——存储过程
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xdd19910505/article/details/35574125 一.使用背景 ...
- 【vb.net机房收费系统】之sqlhelper 标签: 数据库 2015-05-17 10:47 819人阅读 评论(15)
在敲机房收费重构版的时候,用到了sqlhelper,当时不知道怎么开始,各种听别人说,张晗说,一定要用sqlhelper,特别好用,我当时没有用balabala~当时一听,哎哎哎,这个高级,要搞一搞, ...
- 【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集 标签: vb.net继承 2015-05-02 15:19 1012人阅读
在敲到组合查询这个功能的时候,需要用到窗体的继承,但是在新建继承窗体的时候,出现了错误(没有包含要从继承的组件的已生成程序集).如下图: 问题的产生:当时没怎么注意,也不知道怎么弄的,最后反正是继承上 ...
- vb.net机房收费系统之配置文件
总是听到说用反射+配置文件访问数据库,那配置文件到底什么东西? 1.定义: 配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置, ...
- VB.NET版机房收费系统---报表
报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之1039移动
题目 解决代码及点评 /* 39. 有n个整数,编程序将前面的各个数依次向后移动k个位置, 最后k个数移到最前边的k个位置(见下图,其中n=8,k=3). */ # ...
- 通过 Spring RestTemplate 调用带请求体的 Delete 方法(Delete With Request Body)
Spring 框架的RestTemplate 类定义了一些我们在通过 java 代码调用 Rest 服务时经常需要用到的方法,使得我们通过 java 调用 rest 服务时更加方便.简单.但是 Res ...
- Swift - final关键字的介绍,以及使用场景
final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作.Swift中,final关键字可以在class.func和var前修饰. 通常大家都认为使用final可以更好 ...
- 关于android的nfc问题
最近在研究android的nfc问题 首先再网上有很多关于android nfc 读写的问题,但是大多数都是关于Mifare Classic类型卡的读写,我百试不得骑解,于是自己写了一些程序供大家参考 ...
- paip.php 配置ZEND DEBUGGER 断点调试for cli..
paip.php 配置ZENDDEBUGGER 断点调试for cli.. 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:/ ...
- 解决cocoapods在64位iOS7系统以下的警告问题
今天碰到一个非常奇怪的问题.XCODE提示这种警告 Pods was rejected as an implicit dependency for 'libPods.a' because its ar ...
- JAVA中字符串比較equals()和equalsIgnoreCase()的差别
.使用equals( )方法比較两个字符串是否相等.它具有例如以下的一般形式: boolean equals(Object str) 这里str是一个用来与调用字符串(String)对象做比較的字符串 ...
- mssql 返回表的创建语句
if OBJECT_ID('sp_create_table_sql','P') is not null drop proc sp_create_table_sql go create proc sp_ ...
- Linux账号管理(一)
整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ 管理员的工作中,相当重要的一环就是“管理账号”.因为整个系统都是你在 ...
- ASP.NET - 上传图片方法(单张)
/// <summary> /// 上传图片 /// </summary> /// <param name="fileupload">上传的控件 ...