`

详解软件工程之第一要务需求分析

阅读更多

本文链接: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

其实说实话,上面的代码并不是很完美,还存在一点逻辑上的错误:从图中可以看出,当执行两个组合查询同时执行时,我们的初衷要先执行第一个组合关系再执行第二个组合关系。

若第一个组合关系为“或”,第二个组合关系为“与”,这是就出错误,计算机不仅没有按照我们的要求执行,反而先执行的“与”关系,再执行“或”。对于解决一般问题当然没有任何问题,就当是给自己时时刻刻的提醒吧。

机房收费系统虽然已经告一段落,但是学习并没有因此止步,革命尚未成功,同志更需要努力

 

 

软件工程的学习是很简单的,希望我的分享对您有帮助,并希望大家提供宝贵的建议。

详解软件工程之第一要务需求分析

详解软件工程之学习方法

详解软件工程之软件测试

详解软件工程之软工文档(总结篇)

 

 

分享到:
评论

相关推荐

    软件工程需求分析PPT

    本篇将围绕软件需求分析展开,探讨其核心概念、方法和流程。 首先,我们要明确需求分析的任务。需求分析的总任务是要确定系统应做什么,这涵盖了功能需求、性能需求、可靠性及可用性需求、错误处理机制、接口需求、...

    如何进行需求分析详解

    需求分析是软件开发过程中的核心环节,其目的是准确理解用户的需求并将其转化为可执行的规格说明,以便开发团队能够构建符合预期的系统。本文将详细探讨需求分析的重要性、任务、过程及其挑战。 首先,需求的定义...

    《软件工程导论》(第 6 版)1 - 13 章课后习题详解答案,解答全面细致 涵盖多领域,包括理论讲解、案例分析及设计方法等

    第 1 章介绍软件工程学概述,包括软件危机的定义、表现和原因,软件工程的定义、特性及消除软件危机的方法,还阐述了结构化范型和面向对象范型的要点及优缺点,并比较了不同软件生命周期模型。 第 2 章围绕可行性...

    软件工程详解软件工程详解

    总结,软件工程是一门涵盖广泛领域的学科,涉及到从需求获取到软件上线的每一个细节。理解并掌握这些知识点对于软件开发者和管理者来说至关重要,因为它们构成了高效、高质量软件开发的基础。通过深入学习《软件工程...

    软件工程第七版课后答案

    《软件工程第七版》是软件开发领域的一本权威教材,由Ian Sommerville撰写。这本书深入探讨了软件开发的各个方面,包括需求分析、设计、实现、测试和维护等关键环节。课后答案提供了对书中理论知识和实践问题的解答...

    《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 课后习题参考答案

    一类过程是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类过程是支持过程,包括软件配置管理、软件工程管理,软件工程过程、软件工程工具写方法、软件质量。 本书的目的是帮助读者...

    软件工程课后习题答案 软件工程 软件工程 软件工程

    1. **需求工程**:这是软件开发的第一步,包括需求获取、需求分析、需求定义和需求验证。它要求开发者理解用户的需求,制定出明确、可行的软件规格说明。 2. **软件设计**:设计阶段包括概要设计和详细设计。概要...

    软件需求分析文档模板

    "软件需求分析文档模板详解" 软件需求分析文档模板是软件开发过程中的一个重要文档,它记录了软件开发的需求分析结果,用于指导软件的设计和开发。本文档模板对软件需求分析文档的内容进行了详细的定义,包括软件...

    软件工程师真题及详解

    《软件工程师真题及详解》是一份集合了2008年上半年至2009年上半年软件设计师考试试题的宝贵资源,旨在帮助考生深入理解和掌握软件工程领域的核心知识点。这份资料包含了大量的实际考试题目,每一道题目都配备了详尽...

    软件开发需求分析详解

    首先,需求获取是需求分析的第一步,通常通过与利益相关者(如用户、管理层和业务专家)的访谈、问卷调查、观察和工作坊来进行。在这个过程中,开发者需要挖掘用户的核心问题,了解他们的期望,并识别潜在的业务规则...

    软件工程概论答案

    3. 软件工程的解决方案:软件工程通过引入一系列规范化的开发阶段,如问题定义与可行性研究、需求分析、软件设计、编码与单元测试、集成测试和系统测试,以及后期的运行维护,以确保软件的质量和适应性。每个阶段都...

    《软件工程》第四版课后答案与习题

    1. **需求工程**:软件开发的第一步是明确需求,这涉及到需求获取、分析、建模和文档化。学习者需要理解如何使用用例图、活动图、状态图等UML(统一建模语言)工具来表达需求,并掌握需求管理,确保需求的完整性和...

    软件工程期末考试试卷集(带答案)

    软件工程期末考试试卷集带...本资源摘要信息涵盖了软件工程的多个方面,包括软件定义、数据流图、模块设计、软件可靠性、风险分析、软件著作权登记等知识点,为软件工程专业的学生和从业者提供了一份详细的知识点总结。

    软件工程课后题答案

    首先,需求分析是软件开发的第一步,它关系到软件产品的功能定位和用户满意度。在需求分析阶段,学生需要学习如何收集用户需求、分析需求的合理性和可行性,以及如何将需求转化为具体的技术要求。课后习题中关于需求...

    软件工程中的软件开发基本流程详解

    1. 需求分析:这是软件开发的第一步,也是最重要的一步。在这个阶段,开发团队需要与客户或利益相关者进行深入沟通,了解他们的业务需求和期望功能。需求分析可能包括创建用户故事、用例图、业务流程图等,以明确...

    软件工程所有课后题答案word版

    1. **需求工程**:这一章探讨了如何有效地获取、分析和表达用户需求,包括需求的分类(功能性和非功能性需求)、需求获取的方法(如访谈、问卷调查)以及需求文档的编写(如需求规格说明书)。 2. **软件设计**:...

    软件工程需求分析模板

    ### 软件工程需求分析模板详解 #### 一、引言 在软件开发过程中,需求分析阶段至关重要,它直接关系到后续的设计、编码、测试等环节能否顺利进行。一个良好的需求分析文档不仅能够帮助开发团队更好地理解项目目标...

    ABAQUS结构工程分析及实例详解.pdf

    本书名为《ABAQUS结构工程分析及实例详解》,是王玉镯和傅传国编著的土木工程常用软件应用入门丛书之一,由中国建筑工业出版社于2010年出版发行。全书着重介绍了ABAQUS有限元软件在建筑结构分析中的应用,涵盖了包括...

Global site tag (gtag.js) - Google Analytics