一个窗体实现四个功能——组合查询

在做“机房”的过程中,有很多相同功能的窗体,在敲第一次的时候由于是处在学习和练习的阶段,对于重复的功能和代码还是比较待见的。因为初次在很菜的情况下自主建立一个系统,总想着多练练,能熟练些,不能说是背(也背不了),但想将其形成常识。

每次进步一点点。这次再做,虽说换了一种语言,但业务逻辑方面需要思考就少了很多。再加之,在此之前学习了设计模式。说起设计模式,心里没底,还好设计模式的讲解语言通俗易懂,常以小故事的形式进行引导。设计模式的目的是将程序设计成可复用性强、灵活性好、安全性高、性能稳定的软件。设计模式很重要的设计手段就是抽象和封装。重要的工具就是接口,运用接口,大大加强程序内部模块之间、软件之间的兼容性。

下面就是在抽象思想的指导下,对“机房”中具有极大相似度的四个组合信息查询窗体进行抽象合并,用一个窗体进实现。

四窗体“学生基本信息维护、学生上机状态查询、学生上机统计信息查询、操作员工作记录”对应各种的四功能。

1.信息查询,首要问题是解决查询条件的问题。

组合查询的条件到了确定功能确定以后,条件不再受数据表的影响,因为功能已唯一确定了对应的数据表,所有可以把所要查询的数据表的判断提前到窗体选择的时候。当数据表一确定,接下来的查询就只与界面信息有关系,而没有其他顾虑了。

查询条件既然由界面控制和获得,那么将界面信息做成一整套,封装起来,以便以前面进行衔接。

2.返回ComboBox中选定的项

界面信息,捕获后能直接使用的,没什么可说的,简单地传递就行。

界面信息,捕获后不能直接用,与数据库表的列名不符的,显示的是中文,便于用户的理解;而数据表中用英文(字母)命名,所以需要转化。

下面是最值得说的,其他的就“外孙打灯笼”。

    Public Function chargefield1database() As String  '返回cmbnName1
        Dim field1 As String
        Select Case cmbName1.SelectedIndex
            Case 0
                field1 = "CardID"
                Return field1
            Case 1
                field1 = "UserID"
                Return field1
            Case 2
                field1 = "UserName"
                Return field1
            Case 3
                field1 = "Sex"
                Return field1
            Case 4
                field1 = "Department"
                Return field1
            Case 5
                field1 = "Grade"
                Return field1
            Case 6
                field1 = "stuClass"
                Return field1
        End Select
        Return Nothing
    End Function</span>
时间: 2024-10-13 00:33:15

一个窗体实现四个功能——组合查询的相关文章

组合查询功能实现

前言 这是我的第二篇文章,这是我之前做的ERP项目的时候设计实现的.在这个ERP系统中,功能比较多,表设计的时候建立了很多业务表.对于一些业务表需要执行很多查询,客户要求针对不同的字段进行查询,基于我们之前的设计,针对不同的查询条件设计不同的DAL方法,通过不同的方法签名来实现客户的对于不同条件查询的要求.但是这种解决方案会让程序员很被动,久而久之整个DAL层会显得很臃肿. 面对这样的困境,考虑是否可以实现用一个通用的DAL方法来代替所有的不同筛选条件查询方法,因为这些查询方法内部的逻辑是一样的

组合查询——如何使用窗体的继承达到事半功倍?

一个优秀的程序员就是要尽可能减少自己的代码量.我们日常的工作或者学习中都有可能遇到多个窗体结构类似,或者大同小异的情况,这时候如果在每个窗体都写一遍代码,或者纯粹的复制粘贴就太水了.想要偷懒的时候正是我们发现和创造的机会,我们的祖先也是这么过来的. 我在做机房收费系统个人重构版的时候,就遇到了基本数据维护.查看上机状态.上机信息统计和操作员工作记录四个窗体都组要用到组合查询而且窗体结构一致. 四个窗体中除了字段名不一致,其他的内容都一样,这种情况下我们用窗体的继承最合适了.在父窗体中写好公共的部

SQL必知必会 笔记 第十四章 组合查询

14.1组合查询 多数SQL查询都只包含从一个或多个表中返回单条SELECT语句.但是,SQL与允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回.这些组合查询通常称为并(union)或符合查询(compound query). 有两种基本情况,其中需要使用组合查询. (1)在单个查询中从不同的表类似返回结构数据. (2)对单个表执行多个查询,按单个查询返回数据. 14.2创建组合查询 可用UNION操作符来组合数条SQL查询.利用UNION,可给出多条SELECT语句,将

四十五 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询

bool查询说明 filter:[],字段的过滤,不参与打分must:[],如果有多个查询,都必须满足[并且]should:[],如果有多个查询,满足一个或者多个都匹配[或者]must_not:[],相反查询词一个都不满足的就匹配[取反,非] # bool查询 # 老版本的filtered已经被bool替换 #用 bool 包括 must should must_not filter 来完成 #格式如下: #bool:{ # "filter":[], 字段的过滤,不参与打分 # &qu

机房重构(5)——模板方法实现组合查询

在敲机房收费过程中,我们会发现很多窗体除了一些细微的差别外,基本是一模一样的,功能的实现也是大同小异.在第一次机房收费的时候,我们都是"好学生",尽管代码重复率极高,还是按部就班的一个个的实现.但在学习了设计模式,机房重构的现在,再傻傻的重复代码,就不是明智之举了. 整个收费系统中,总计有四个组合查询的功能(界面如图),为了提高代码复用率,提高效率,就引入了模板方法实现. 模板方法模式,定义了一个操作中的算法的骨架,把一些步骤延迟到子类当中.它使得子类可以不改变一个算法的结构即可重定义

重构之路 组合查询之传递SQL字符串

既然是使用VB.NET语言对机房收费系统进行重构,那么无可避免的要去解决组合查询的问题,在VB版的实现中这是一个难点,不过大家还是依靠自己或者共同的智慧解决了这个看似复杂的问题. 如今编程的语言不同是一方面,更重要的是系统的结构不一样了,采用了三层架构去实现系统,这样一来就要考虑组合查询的在三层结构中的实现方法.当然,组合查询的核心办法是不变的,都是通过将查询的各个条件组装成SQL查询语句的where子句来实现的,问题就是这个where子句的组装在哪里完成? 如果放在U层完成,那么我们向下传递的

机房重构之模版方法模式-组合查询

机房收费系统中,一个比较让人纠结功能就是组合查询,不仅仅是代码比较多,而且大多都是重复的代码,也正是因为如此,才比较适合模版方法模式. 一.基本介绍 模版方式模式是定义一个操作中的算法的骨架,而将步骤延迟到子类中. 模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤. 类图 二.具体实现 1.建立模板父窗体 添加Windows窗体,设计模板界面(如下图),并在模板窗体里写入抽象出来的类和方法的代码. '**************************************

组合查询——怎样使用窗口的继承达到事半功倍?

一个优秀的程序猿就是要尽可能降低自己的代码量.我们日常的工作或者学习中都有可能遇到多个窗口结构类似,或者大同小异的情况,这时候假设在每一个窗口都写一遍代码,或者纯粹的复制粘贴就太水了.想要偷懒的时候正是我们发现和创造的机会,我们的祖先也是这么过来的. 我在做机房收费系统个人重构版的时候,就遇到了基本数据维护.查看上机状态.上机信息统计和操作员工作记录四个窗口都组要用到组合查询并且窗口结构一致. 四个窗口中除了字段名不一致,其它的内容都一样,这样的情况下我们用窗口的继承最合适了.在父窗口中写好公共

重构之路 组合查询之传参+存储过程

上篇博文给大家一起讨论了实现组合查询的一种方法,即在U层将select语句的where子句部分组装好,赋给一个字符串变量,传到D层然后与select子句组成完整的sql语句,之后执行,返回查询结果,就是这么简单,但是博文的结尾也留下了一个疑问,这种方法的安全性有点欠佳,有没有相对好一点的办法呢? 答案是肯定的,这次我们一起来看看我实现的另一种方法.首先给大家简单介绍一下这种方法的思路,其实也比较简单,最初我是想在程序代码里写sql查询语句的,然后将组合查询的各个条件的值当做实体参数(现在实体层定