《GZFramework框架开发日志》 03 登陆功能实现

一、重置工作目录为(接上一节)

git checkout -f chapter-01

二、数据库表结构

目录:$源码目录& / 资料 / GZFramework_System.pdm

数据库建模工具:PowerDesigner

PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题

数据库预览如下:

三、功能设计

使用代码生成器生成表dt_MyUser的Model结构

生成界面如下(注意红圈地方):

 

点击生成Mode结构并附加到项目GZFramework.Model中

 

代码生成器下载地址详见:

《GZFramework框架开发日志》 前言 软件及插件清单

登陆框设计如下:

点击登陆以后跳转到frmMain窗体

其中主要代码DAL:

 public class dalLogin
    {
        /// <summary>
        /// 验证用户名密码
        /// </summary>
        /// <param name="User"></param>
        /// <param name="Pwd"></param>
        /// <param name="dr"></param>
        /// <returns></returns>
        public bool VerifyPwd(string User, string Pwd, out DataRow dr)
        {
            const string sql = "SELECT TOP 1 * FROM  dbo.dt_MyUser WHERE [email protected] AND [Password][email protected]";
            DbCommandBase cmd = DbCommandBuilderFactory.BuildCommandText(sql);
            cmd.AddParam("@Accound", SqlDbType.VarChar, 20, User);
            cmd.AddParam("@Pwd", SqlDbType.VarChar, Pwd);
            DataTable dt = cmd.GetTable(Global.SystemDataBase, "dt_MyUser");

            dr = null;
            if (dt.Rows.Count > 0)
            {
                dr = dt.Rows[0];
                return true;
            }
            return false;
        }
    }

DAL层验证登陆代码

 

四、C# WinForm程序退出的方法

1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;

2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;

3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;

4.System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

 

关于  GZFramework.WinLibrary.SplashScreenServer.CloseForm();

显示长时间等待窗体:

可在frmMain的Load事件中添加长时间等待来模拟显示此窗体

private void frmMain_Load(object sender, EventArgs e)
{
    Thread.Sleep(5000);
    GZFramework.WinLibrary.SplashScreenServer.CloseForm();
}

 

本节完整代码副本工作目录

git checkout -f chapter-03

GZFramework开发框架交流群:288706356

时间: 2024-07-28 16:55:15

《GZFramework框架开发日志》 03 登陆功能实现的相关文章

《GZFramework框架开发日志》 前言 软件及插件清单

一.环境清单        VS2013        SQL2005        第三方插件:Devexpress v13.2        两个Nuget包:GZFramework.DB 和 GZFramework.WinLibrary 二.开发环境:.NET 4.0   三.下载地址           VS2013           SQL2005            第三方插件:Devexpress v13.2   四.框架最终效果图        框架开发日志系列把框架从无到有

《GZFramework框架开发日志》 02 数据库配置

一.引用程序包 在项目GZFramework.BLL中引入如下程序包: PM> Install-Package GZFramework.BLL -Version 3.0.5 添加完成后项目中新增了如下两个文件:   二.修改数据库连接 前言:我用的是MSSQL数据库 新增两个数据库:   打开GZFrameWorkDBConfig.cs 修改 DBConnection 类中 InitialConfig 方法   修改前: 修改后 注:关于类INIDBConfigzai在项目GZFramework

《GZFramework框架开发日志》 01 项目创建

一.创建项目结构 项目目录结构图如下: 修改各个项目生成目录为..\Debug. 其中项目GZFramework.SystemManage项目的生成目录为..\Debug\Modules (目的后面会介绍,为所有模块存放的位置) 二.添加项目Nuget包   暂停

从零开始编写自己的C#框架(15)——Web层后端登陆功能

对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置为启动项 2.添加引用 3.添加WebManage文件夹与Login.aspx文件 4.添加登陆页面HTML代码 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx

常规功能和模块自定义系统 (cfcmms)—030开发日志(创建ManyToMany的column5)

030开发日志(创建ManyToMany的column5) 现在对于这个字段来说,还剩最后一个功能了,那就是可以修改ManyToMany的值了.在grid的inline操作里面,是可以直接删除已有值,但是如果要新增的话,就必须要有一个新的界面了.下面来看看开发修改ManyToMany字段所需要的步骤. 1.创建一个修改窗口,在里面创建一个可check的树: 2?到后台请求数据,读取当前记录的所有的ManyToMany的可选项,并把已经选中的打勾: 3?根据读取到的数据更新树: 4?用户操作che

常规功能和模块自定义系统 (cfcmms)—032开发日志(用GoJS来绘制模块关系图)

032开发日志(用GoJS来绘制模块关系图) 本系统现在尚没有流程和图表的功能,现在感觉在操作模块的各种功能的时候如果有一个模块关系图,那么就会更直观.网上找了一些绘制图表的库,看了一下GoJS也不错,入门也比较容易.经过一些工作,对业务模块作了一个简单的关系图. GoJS的基础知识请看官网的介绍,在上面的模块图中,有模块节点和连线二种信息需要定义.用户业务模块数据都是由后台组织好后发送到前台的. 整个绘制流程图的界面模块是一个Panel,在render的时候从后台加载数据,然后绘制.js类如下

常规功能和模块自定义系统 (cfcmms)—029开发日志(创建ManyToMany的column4)

029开发日志(创建ManyToMany的column4) 根据以上几节的准备,在这一节中可以加入ManyToManyColumn.js了.先来看看做好的样子如下图: 单击文字链接可以显示该条记录的情况.按下删除按钮则会显示一个提示窗口,询问是否删除此项. 下面即为ManyToManyColumn.js的代码. /** * * ManyToMany记录的管理,将根据权限设置来显示修改或删除按钮 * * 蒋锋 2015.12.31 * */ Ext .define( 'app.module.wid

现代软件工程团队项目贝塔阶段_开发日志_2018.01.15-2018.01.19

现代软件工程团队项目贝塔阶段_开发日志_2018.01.15-2018.01.19 2018.01.15 已完成: 1.版本上线 1.1上线操作步骤 1.1.1将网站整体文件夹拷贝到keqi1 1.1.2修改microDefinition.php的数据库名和根目录名 1.1.3修改注册界面发送验证码后直接填充功能 1.1.4修改del的主id的class为hide 1.1.5重新运行根目录的111.php(消除红点,也就是消除服务器返回的多余字符) 1.2修复上线过程中遇到的bug  1.2.1

JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现

一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implements Interceptor{} //创建方式2: 继承AbstractInterceptor -> struts2的体贴 //帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,就可以只实现intercept方法 public class MyInterceptor2