编写一个简版的数据库维护框架03-父窗口界面

news2024/9/22 9:39:24

框架的主要内容就是创建一个父类Form,实现基本逻辑。使用时,这些逻辑就无需用户实现。用户只需按照规则,设计好界面即可。

一、简版界面

界面如下:
在这里插入图片描述
界面分为两大部分,查询定位和数据维护

查询定位

查询定位将根据前面的数据库设计原则,默认对数据库中的 name 字段进行查询,查询方式采用模糊方式。

数据维护

数据维护分为三部分,数据输入和显示区域,控制按钮区域以及信息显示区域。注意,所有的数据项,都要在标题下面的GroupBox中。
为了显示的灵活性,从用 splitPanel进行分割。

二、界面元素分解

分解思路, 数据的维护包括展示和保存两步骤,关键点就是将数据库表字段和界面元素映射起来,这样就可以利用代码对其进行控制。

查询项

查询内容是一个结果集,可以利用C#的DataGridView进行存贮和展示,鼠标点击数据时,可以获得这一行的内容,包括每个column 的名字,利用这个名字可以和界面上的元素建立联系。

输入和显示项

主表普通项:1NF 范畴的数据中的简单数据类型,数字,字符和日期型数据,可以和C#控件类型直接映射
引用项:3NF 范畴的数据,一般是主表记录一个外键,或许有冗余信息,而其他有关数据再引用表中,为了界面内容明确清晰,有时候需要将引用表内容显示出来。
例如:
有下面两张表
主表是:
在这里插入图片描述
引用表是(民族表)
在这里插入图片描述
注意stdents 中的
ethnic_pk 外键,引用 ethnic 的主键
ethnic_name 冗余内容,为 ethnic 中 name
我们的要求的是:
界面上显示 ethnic_name 并且可以更新主表中的 ethnic_name 和 ethnic_pk,
界面上辅助显示 ethnic 中的 abrev 和location等等, 不需要更新到主表中。
因此必须要想办法区分这两种数据。

1)普通项数据映射

主表名称:采用固定的成员变量记录主表名称,感觉我们前面的约定,其主键也是确定的,即PK。
主键值:采用固定的成员变量记录主键值

其余字段

字符型:采用 TextBox 或者是MaskedTextBox
其中枚举数据 可以使用 ComboBox,例如录入 性别,星期 这种简单的且固定的属性;
数字型:NumericUpDown
日期型:DateTimePicker

2)引用型数据映射

由于要输入引用表的主键,因此要有类似comboBox之类的行为,但是引用主键的值如果暴露给用户,是很突兀和奇怪的,因此要隐藏记录这个值,显示具有意义的文字,例如上例中的民族名称或者简称。
采用 DataGridView 完成这一功能,显示文字信息,而主键内容进行隐藏。同时增加相关信息的修改功能,例如其余信息的相应变化。
为了操作一致性,实现一个控件,另DataGridView 为其一个成员变量,新控件增加Text 属性,从而使DataGridView 的赋值和取值操作和普通控件一致,这样后台处理过程就比较简单了。
为了实现冗余数据和引用表数据的区分,利用Panel容器分别作为这些项的容器,在tag中标明他们的属性。

3)Tag的使用约定

为了不影响VS的正常开发流程,不打算增加新的控件,利用现有的控件完场这些规则的定义,这样减少开发使用中的学习成本。
采用简单字符进行内容的标定,不准备采用功能更加强大的Json格式。
tag中的内容包括:约束属性(非空,唯一性),提示信息,实体属性(表和字段名)

4) 映射元素记录

根据上述约定和命名规则,可以完成数据表内容和界面元素的映射,为了操作方便,需要将符合上述要求的界面元素记录到集合中,这样方便后续处理。

控制项

增加:需要的功能,清空界面,设置默认值(简版不支持)
删除:删除当前数据记录
修改:设置修改标记,并且将界面元素设置为可以修改的状态
保存:根据时增加还是修改属性,生成insert 或者update 语句
退出:退市时当期系统。

信息提示

提供状态过程的信息,包括数据有效性判断,保存数据成功与否的提示。

工具包实现

为了完成上述功能,需要实现一个工具包类,采用静态函数,这样方便使用。
功能包括:
1、字段名称提取功能,可以有多个,从控件名称中,从tag中等等
2、控件遍历和判断
3、有效性检查

下面将进入代码阶段

MaraSun 2023-02-03 BJFWDQ

ps:
昌平线南段明天试运行,本人出行将更加方便,地铁站只有300米左右的距离。是记。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非极大值抑制NMS与柔性非极大抑制Soft-NMS的python实现

非极大值抑制NMS的python实现 什么是非极大值抑制 非极大值抑制的主要目的是为了消除多余的框,找到最佳的物体检测的位置。 比如我们想要检测手的时候, RCNN网络在训练之后会给出许多个预测框(比图上的更多), 我们先通过他们的置信度筛选出一批不符合的框, 剩下如图…

智能BI与传统报表的区别是什么?

随着企业信息化的深入, 企业的信息化系统日益增多。各个信息化系统也随着应用的逐渐深入, 随之产生大量的信息数据。面对已成几何级增长的数据量, 如何从中提取有效数据, 如何将数据转换为有价值的数据? 成为企业面临的问题之一。 其实与数据相关的工具除了传统报表还有如今火…

百度网盘普通用户如何上传单文件最大4G文件。window split命令如何分割文件上传。

普通用户使用百度网盘Web端上传文件时,单文件最大支持1G大小;使用网盘PC客户端上传文件时,单文件最大支持4G;如果您需要上传大于4G文件,可充值百度网盘会员,其中:1、百度网盘会员使用网盘PC客户…

案例:DNN进行分类

7.2 案例:DNN进行分类 学习目标 目标 知道tf.data.Dataset的API使用知道tf.feature_columnAPI使用知道tf.estimatorAPI使用应用 无 7.2.1 数据集介绍 对鸢尾花进行分类:概览 本文档中的示例程序构建并测试了一个模型,此模型根据鸢尾花的花…

《MFC编程》:MFC程序执行流程

《MFC编程》:MFC程序启动《MFC编程》:MFC程序启动入口函数执行流程CWinApp的成员视频链接《MFC编程》:MFC程序启动 入口函数 MFC程序的入口函数与win32程序一样,都是从WinMain入口。 但是MFC库已经实现了WinMain函数&#xff0…

ORA-65096: invalid common user or role 解决方法

问题描述 oracle 12C 创建数据库时报错: ORA-65096: invalid common user or role name例如: SQL> create user rui identified by oracle;create user rui identified by oracle* ERROR at line 1: ORA-65096: invalid common user or role name原…

记录1-两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案…

分享111个JS图片切换特效,总有一款适合您

分享111个图片切换,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 111个图片切换下载链接:https://pan.baidu.com/s/1iGzOzU3WZbjBF21dZzoH9w?pwdqi5u 提取码:qi…

Linux常见指令大全(二)

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

2023年第一篇来谈谈效率

晚上临走的时候和同事聊了聊关于效率的问题,暂且称呼为A同学。借着和A同学的这次畅谈记录下这段时间的所负责的数据迁移过程。 数据迁移的整体内容并不复杂。主要内容如下 我们在做事情的时候总会遇到这件事情所关联的其他问题。 不要带着情绪去工作 书写脚本的时候…

【HBase高级】6. HBase数据结构(下)——LSM树数据结构、布隆过滤器、StoreFiles(HFile)结构

5.3 LSM树数据结构 1、简介 传统关系型数据库,一般都选择使用B树作为索引结构,而在大数据场景下,HBase、Kudu这些存储引擎选择的是LSM树。LSM树,即日志结构合并树(Log-Structured Merge-Tree)。 LSM树主要目标是快速建立索引B树…

redis加锁的几种方法

1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时,…

3.4 内部类

文章目录1.概述2.特点3.内部类入门案例4.成员内部类4.1 被private修饰4.2 被static修饰5.局部内部类6.匿名内部类1.概述 如果一个类存在的意义就是为指定的另一个类,可以把这个类放入另一个类的内部。 就是把类定义在类的内部的情况就可以形成内部类的形式。 A类中…

【内网安全】——CS操作指南(二)

作者名:白昼安全主页面链接: 主页传送门创作初心: 一切为了她座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日emo:关心和细节吗?注意:我这里的cs…

Android MVI框架的使用

AndroidMviFrame AndroidMviFrame 是一个Android简单易用的项目框架 文档下面会对框架中所使用的一些核心技术进行阐述。该框架作为技术积累的产物,会一直更新维护,如果有技术方面的谈论或者框架中的错误点,可以在 GitHub 上提 Issues&…

DAMA认证(CDGA/CDGP)证书好考吗

随着数字化经济的不断发展,企业对数据重视程度越来越高,致使越来越多得数字人关注到DAMA认证。很多小伙伴都会有这样的疑问,DAMA认证(CDGA/CDGP认证)好考吗?通过率怎么样?今天小编就在这里做一下简单的说明…

UniRx之操作符详解-Linq语法

前言 UniRx中由很多操作符,注意要分为三类 Linq操作符,和Linq语法风格一致Rx操作符,从Rx.Net库继承下来的操作符。UniRx操作符,UniRx针对Unity的独有操作符。 Rx和Linq Linq是微软的一项技术,新增一种自然查询的SQ…

时间序列预测

问题简介 简单来说,时间序列是按照时间顺序,按照一定的时间间隔取得的一系列观测值,比如我们上边提到的国内生产总值,消费者物价指数,利率,汇率,股票价格等等。时间间隔可以是日,周…

数字IC设计 Synopsys EDA Tools的安装补充

数字IC Synopsys 七件套的Ubuntu安装步骤 推荐大佬的安装教程,本人亲测可用,在这里表示十分感谢! 数字IC设计的第一步——Synopsys EDA Tools的安装 跟着大佬的教程仔细点可以一步到位的! 在这里备忘本人遇到的几个粗心导致的问…

浅谈Spring IoC容器

目录 1.IoC容器 2.依赖注入 1.IoC容器 IOC: Inversion of Control,是一种设计思想。 在spring框架中,Spring 通过IoC容器进行管理所有Java对象的实例化和初始化,控制对象与对象之间的依赖关系。 IoC管理的对象称为Bean,它与使…