本文链接:http://blog.csdn.net/jiuqiyuliang/article/details/8049656
本文作者:廊坊师范学院九期信息技术提高班 于亮
机房收费系统基本算是竣工了,但是学到了很多的东西,我们先从宏观再到微观,一点点的介绍学习的过程。
开始做机房收费系统的时候,没有很好地认识到需求分析的重要,也没有很重视,总觉得反正自己不懂就不懂着做吧,就胡乱点了一天,知道一个大概就开始动工了。当机房收费系统做到多半时,所有的问题都暴露出来了。数据库中少数据需要改,数据库改了,更得需要改代码,涉及到错误表的所有窗体都需要重新修改。
机房收费系统给我上了一堂教育课,深刻体会到了需求的重要性,没有需求,何谈编程,更不用谈数据库以及数据结构、表与表之间的关系,没有需求不意味什么都没有也差不多。即使你将数据库以及代码做完了,但是用户的需求和功能要求基本等于零,相当于没有该工程。
简单的说,需求:用户有什么样的要求,工程应该符合什么条件和具有什么功能。
需求分析:对需求进行分析,就是解决问题,要输入什么数据,得到什么结果,最后应该输出什么。
时间是贯穿机房收费系统始终的线索,时时刻刻都陪伴在系统的左右。恋人说,时间是感情最好的疗伤药,可以冲淡一切。对于程序员来说,时间是数据记录最有效的手段,虽然隐身,但如影随行。
学生完成上机其实挺简单只有三步:先注册,登录上机、下机,但是过程却很复杂。
值班老师分为三个级别:一般教师、操作员、管理员。
宏观到这里了,下面介绍一下微观,微观涉及到细节,代码指定是少不了的部分,代码的实现为解决需求中的问题。代码是编程中最简单的过程,也是编程中技术含量最低的层次。有了需求和数据表,任何一个“码农”都可以做到。
机房收费系统中最让人头疼当数三个条件的组合查询:
代码展示如下:
Private Sub cmdChk_Click()
Dim strFld(3) As String '字段
Dim strRelate(2) As String '组合关系
'判断字段名1是否为空,为空提示信息
If cmbFld1.Text = "" Then
MsgBox "请选择第一个字段名!", vbOKOnly + vbExclamation, "提示"
cmbFld1.SetFocus
Exit Sub
End If
Select Case cmbFld1.ListIndex
Case 0
strFld(0) = "card_No"
Case 1
strFld(0) = "student_Name"
Case 2
strFld(0) = "onday"
Case 3
strFld(0) = "ontime"
Case 4
strFld(0) = "offday"
Case 5
strFld(0) = "offtime"
Case 6
strFld(0) = "consumemoney"
Case 7
strFld(0) = "remainmoney"
Case 8
strFld(0) = "status"
End Select
'判断操作符1是否为空,为空提示信息
If cmbString1.Text = "" Then
MsgBox "请选择第一个操作符!", vbOKOnly + vbExclamation, "提示"
cmbString1.SetFocus
Exit Sub
End If
'当选择字段2时
Select Case cmbFld2.ListIndex
Case 0
strFld(1) = "card_No"
Case 1
strFld(1) = "student_Name"
Case 2
strFld(1) = "onday"
Case 3
strFld(1) = "ontime"
Case 4
strFld(1) = "offday"
Case 5
strFld(1) = "offtime"
Case 6
strFld(1) = "consumemoney"
Case 7
strFld(1) = "remainmoney"
Case 8
strFld(1) = "status"
End Select
Select Case cmbRelate1.ListIndex
Case 0
strRelate(0) = "and"
Case 1
strRelate(0) = "or"
End Select
' '******************************************************************
'当选择字段3时
Select Case cmbFld3.ListIndex
Case 0
strFld(2) = "card_No"
Case 1
strFld(2) = "student_Name"
Case 2
strFld(2) = "onday"
Case 3
strFld(2) = "ontime"
Case 4
strFld(2) = "offday"
Case 5
strFld(2) = "offtime"
Case 6
strFld(2) = "consumemoney"
Case 7
strFld(2) = "remainmoney"
Case 8
strFld(2) = "status"
End Select
Select Case cmbRelate2.ListIndex
Case 0
strRelate(1) = "and"
Case 1
strRelate(1) = "or"
End Select
'*************************************************************
'判断要查询的内容是否为空,为空提示信息
If txtChk1.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第一个查询内容!", vbOKOnly + vbExclamation, "提示"
txtChk1.SetFocus
Exit Sub
End If
'第一个组合关系
If cmbRelate1.Text = "" Then
'判断第一个组合关系是否为空,若为空,提示信息
If (cmbFld2.Text <> "" Or cmbString2.Text <> "" Or txtChk2.Text <> "") And cmbRelate1.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第一个组合关系!", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If
'查询记录
strLineSQL = "select * from line_info where " & strFld(0) & "" & Trim$(cmbString1.Text) & " '" & Trim$(txtChk1.Text) & "'"
Set adoLineRst = ExecuteSQL(strLineSQL, strLineMsg)
If adoLineRst.EOF Then
mshflgStuLogonInfo.clear
MsgBox "没有此记录", vbOKOnly + vbExclamation, "提示"
Exit Sub
Else
Call ViewData '查询数据
End If
Else
'第二个组合关系
If cmbRelate2.Text = "" Then
'判断字段2是否为空,为空提示信息
If cmbFld2.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第二个字段名!", vbOKOnly + vbExclamation, "提示"
cmbFld2.SetFocus
Exit Sub
End If
'判断操作符2是否为空,为空提示信息
If cmbString2.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第二个操作符!", vbOKOnly + vbExclamation, "提示"
cmbString2.SetFocus
Exit Sub
End If
'判断要查询的内容是否为空,为空提示信息
If txtChk2.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第二个查询内容!", vbOKOnly + vbExclamation, "提示"
txtChk2.SetFocus
Exit Sub
End If
'判断第二个组合关系是否为空,若为空,提示信息
If (cmbFld3.Text <> "" Or cmbString3.Text <> "" Or txtChk3.Text <> "") And cmbRelate2.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第二个组合关系!", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If
'查询记录
strLineSQL = "select * from line_info where " & strFld(0) & " " & Trim$(cmbString1.Text) & vbCrLf _
& "'" & Trim$(txtChk1.Text) & "'" & " " & strRelate(0) & " " & strFld(1) & " " & Trim$(cmbString2.Text) & " '" & Trim$(txtChk2.Text) & "'"
'strtxtSQL = "select * from Up where" & Trim$(cboFileName1.Tag) & " " & Trim$(cboSign1.Text) & "'" & Trim$(txtInquire1.Text) & ""
'" & Trim$(cboRelation1.Tag) & "" &Trim(cboFileName2.Tag) & " " & Trim$(cboSign2.Text) &"
'" & Trim$(txtInquire2.Text) & "'"
Set adoLineRst = ExecuteSQL(strLineSQL, strLineMsg)
If adoLineRst.EOF Then
mshflgStuLogonInfo.clear
MsgBox "没有此记录", vbOKOnly + vbExclamation, "提示"
Exit Sub
Else
Call ViewData '查询数据
End If
Else
'查询并显示符合三个条件的记录
If cmbFld3.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第三个字段名!", vbOKOnly + vbExclamation, "提示"
cmbFld3.SetFocus
Exit Sub
End If
'判断操作符3是否为空,为空提示信息
If cmbString3.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第三个操作符!", vbOKOnly + vbExclamation, "提示"
cmbString3.SetFocus
Exit Sub
End If
'判断要查询的内容是否为空,为空提示信息
If txtChk3.Text = "" Then
mshflgStuLogonInfo.clear
MsgBox "请选择第三个查询内容!", vbOKOnly + vbExclamation, "提示"
txtChk3.SetFocus
Exit Sub
End If
strLineSQL = "select * from line_info where" & " " & strFld(0) & " " & Trim$(cmbString1.Text) & vbCrLf _
& " '" & Trim$(txtChk1.Text) & "'" & " " & strRelate(0) & " " & strFld(1) & " " & Trim$(cmbString2.Text) & vbCrLf _
& " '" & Trim$(txtChk2.Text) & "'" & " " & strRelate(1) & " " & strFld(2) & " " & Trim$(cmbString3.Text) & vbCrLf _
& " '" & Trim$(txtChk2.Text) & "'"
Set adoLineRst = ExecuteSQL(strLineSQL, strLineMsg)
If adoLineRst.EOF Then
mshflgStuLogonInfo.clear
MsgBox "没有此记录", vbOKOnly + vbExclamation, "提示"
Exit Sub
Else
Call ViewData '查询数据
End If
End If
End If
End Sub
Private Sub Form_Load()
'显示cmbfld1的内容
cmbFld1.AddItem "卡号"
cmbFld1.AddItem "姓名"
cmbFld1.AddItem "上机日期"
cmbFld1.AddItem "上机时间"
cmbFld1.AddItem "下机日期"
cmbFld1.AddItem "下机时间"
cmbFld1.AddItem "消费金额"
cmbFld1.AddItem "余额"
cmbFld1.AddItem "备注"
'显示cmbfld2的内容
cmbFld2.AddItem "卡号"
cmbFld2.AddItem "姓名"
cmbFld2.AddItem "上机日期"
cmbFld2.AddItem "上机时间"
cmbFld2.AddItem "下机日期"
cmbFld2.AddItem "下机时间"
cmbFld2.AddItem "消费金额"
cmbFld2.AddItem "余额"
cmbFld2.AddItem "备注"
'显示cmbfld3的内容
cmbFld3.AddItem "卡号"
cmbFld3.AddItem "姓名"
cmbFld3.AddItem "上机日期"
cmbFld3.AddItem "上机时间"
cmbFld3.AddItem "下机日期"
cmbFld3.AddItem "下机时间"
cmbFld3.AddItem "消费金额"
cmbFld3.AddItem "余额"
cmbFld3.AddItem "备注"
'显示cmbString1的内容
cmbString1.AddItem "="
cmbString1.AddItem "<"
cmbString1.AddItem ">"
cmbString1.AddItem "<>"
'显示cmbString2的内容
cmbString2.AddItem "="
cmbString2.AddItem "<"
cmbString2.AddItem ">"
cmbString2.AddItem "<>"
'显示cmbString3的内容
cmbString3.AddItem "="
cmbString3.AddItem "<"
cmbString3.AddItem ">"
cmbString3.AddItem "<>"
'显示cmbrelate1的内容
cmbRelate1.AddItem "与"
cmbRelate1.AddItem "或"
'显示cmbrelate2的内容
cmbRelate2.AddItem "与"
cmbRelate2.AddItem "或"
End Sub
Public Function ViewData()
With mshflgStuLogonInfo
.Rows = 1
.CellAlignment = 4
.TextMatrix(0, 0) = "卡号"
.TextMatrix(0, 1) = "姓名"
.TextMatrix(0, 2) = "上机日期"
.TextMatrix(0, 3) = "上机时间"
.TextMatrix(0, 4) = "下机日期"
.TextMatrix(0, 5) = "下机时间"
.TextMatrix(0, 6) = "消费金额"
.TextMatrix(0, 7) = "余额"
.TextMatrix(0, 8) = "备注"
End With
’显示查询的内容
Do While Not adoLineRst.EOF
With mshflgStuLogonInfo
.Rows = .Rows + 1
.CellAlignment = 4
.TextMatrix(.Rows - 1, 0) = Trim$(adoLineRst.Fields("card_No"))
.TextMatrix(.Rows - 1, 1) = Trim$(adoLineRst.Fields("student_Name"))
.TextMatrix(.Rows - 1, 2) = Trim$(adoLineRst.Fields("onday"))
.TextMatrix(.Rows - 1, 3) = Trim$(adoLineRst.Fields("offtime"))
.TextMatrix(.Rows - 1, 4) = Trim$(adoLineRst.Fields("offday"))
.TextMatrix(.Rows - 1, 5) = Trim$(adoLineRst.Fields("offtime"))
.TextMatrix(.Rows - 1, 6) = Trim$(adoLineRst.Fields("consumemoney"))
.TextMatrix(.Rows - 1, 7) = Trim$(adoLineRst.Fields("remainmoney"))
.TextMatrix(.Rows - 1, 8) = Trim$(adoLineRst.Fields("status"))
adoLineRst.MoveNext
End With
Loop
'释放记录集
adoLineRst.Close
End Function
其实说实话,上面的代码并不是很完美,还存在一点逻辑上的错误:从图中可以看出,当执行两个组合查询同时执行时,我们的初衷要先执行第一个组合关系再执行第二个组合关系。
若第一个组合关系为“或”,第二个组合关系为“与”,这是就出错误,计算机不仅没有按照我们的要求执行,反而先执行的“与”关系,再执行“或”。对于解决一般问题当然没有任何问题,就当是给自己时时刻刻的提醒吧。
机房收费系统虽然已经告一段落,但是学习并没有因此止步,革命尚未成功,同志更需要努力。
软件工程的学习是很简单的,希望我的分享对您有帮助,并希望大家提供宝贵的建议。
相关推荐
总结,软件工程是一门涵盖广泛领域的学科,涉及到从需求获取到软件上线的每一个细节。理解并掌握这些知识点对于软件开发者和管理者来说至关重要,因为它们构成了高效、高质量软件开发的基础。通过深入学习《软件工程...
《软件工程第七版》是软件开发领域的一本权威教材,由Ian Sommerville撰写。这本书深入探讨了软件开发的各个方面,包括需求分析、设计、实现、测试和维护等关键环节。课后答案提供了对书中理论知识和实践问题的解答...
一类过程是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类过程是支持过程,包括软件配置管理、软件工程管理,软件工程过程、软件工程工具写方法、软件质量。 本书的目的是帮助读者...
1. **需求工程**:这是软件开发的第一步,包括需求获取、需求分析、需求定义和需求验证。它要求开发者理解用户的需求,制定出明确、可行的软件规格说明。 2. **软件设计**:设计阶段包括概要设计和详细设计。概要...
"软件需求分析文档模板详解" 软件需求分析文档模板是软件开发过程中的一个重要文档,它记录了软件开发的需求分析结果,用于指导软件的设计和开发。本文档模板对软件需求分析文档的内容进行了详细的定义,包括软件...
《软件工程师真题及详解》是一份集合了2008年上半年至2009年上半年软件设计师考试试题的宝贵资源,旨在帮助考生深入理解和掌握软件工程领域的核心知识点。这份资料包含了大量的实际考试题目,每一道题目都配备了详尽...
3. 软件工程的解决方案:软件工程通过引入一系列规范化的开发阶段,如问题定义与可行性研究、需求分析、软件设计、编码与单元测试、集成测试和系统测试,以及后期的运行维护,以确保软件的质量和适应性。每个阶段都...
软件工程期末考试试卷集带...本资源摘要信息涵盖了软件工程的多个方面,包括软件定义、数据流图、模块设计、软件可靠性、风险分析、软件著作权登记等知识点,为软件工程专业的学生和从业者提供了一份详细的知识点总结。
在IT领域,软件工程是一门极其重要的学科,它涵盖了软件开发的全过程,包括需求分析、设计、编码、测试以及维护等阶段。对于学生而言,掌握软件工程的基本理论和实践技能至关重要,而课后习题是巩固知识、提升能力的...
### 软件需求分析法则:提升软件质量的关键 #### 引言 在软件开发过程中,需求分析被视为项目成功与否的基石。一个清晰且全面的需求分析不仅有助于开发团队明确目标,还能有效避免后期的返工和修改,确保项目的顺利...
在IT项目开发过程中,软件需求分析是至关重要的第一步,它确定了项目的方向和目标,为后续的设计、编码、测试等环节提供了明确的指导。根据给定的“软件需求分析报告”概览,我们可以深入探讨以下几个关键的知识点:...
### 软件工程-2....通过以上分析,我们可以清楚地了解到软件工程项目从立项到需求分析的具体过程,以及如何构建有效的数据流图来指导软件开发。这些知识对于理解和执行软件工程项目的初期阶段至关重要。
《软件工程与实践研究详解》是一份全面探讨软件开发过程的综合资料,涵盖了从项目启动到维护的各个环节,以及软件质量管理和能力成熟度模型(CMM)的基础知识。以下是各部分详细解读: 1. **需求工程**:MSE2-需求...
9. **软件需求分析**:这是软件开发过程的关键阶段,旨在明确软件的功能、性能、接口和约束等需求,确保软件能够满足用户的实际需求。 10. **软件测试方法**:白盒测试(也称结构测试)关注软件的内部结构和逻辑,...
在软件工程领域,UML(统一建模语言)是一种标准化的建模工具,用于描述、构建和文档化软件系统的各种视图。本资料包详细涵盖了UML中的九种主要图表,帮助你深入理解和掌握这些图的画法及其应用场景。下面我们将逐一...
【需求分析师面试题】知识点详解: 1. 需求收集与分析: 需求分析师在面试中经常被问及如何有效地收集需求。这涉及到与不同干系人的沟通技巧,包括用户、管理层、技术人员等,理解他们的期望和问题。面试者应展示...