管理信息系统

2022-09-19  本文已影响0人  山猪打不过家猪

1.目的

image.png

2.异常处理

2.1 常见异常
image.png
image.png
2.2 异常处理使用
image.png

3. 程序模块的封装

3.1 添加类库

4. 用户登录

4.1管理员
namespace DAL
{
    /// <summary>
    /// 管理员数据访问类
    /// </summary>
    public class SysAdminService
    {
        /// <summary>
        /// 根据登录账号和密码登录
        /// </summary>
        /// <param name="objAdmin">封装了登录账号和密码的管理员对象</param>
        /// <returns>返回包含管理员信息的对象</returns>
        public SysAdmin AdminLogin(SysAdmin objAdmin)
        {
            //组合SQL语句
            string sql = "select AdminName from Admins where LoginId={0}  and LoginPwd='{1}'";
            sql = string.Format(sql, objAdmin.LoginId, objAdmin.LoginPwd);
            //从数据库中查询
            SqlDataReader objReader = SQLHelper.GetReader(sql);
            if (objReader.Read())
            {
                objAdmin.AdminName = objReader["AdminName"].ToString();
            }
            else
            {
                objAdmin = null;//如果登录不成功,则将当前对象清空
            }
            objReader.Close();
            //返回结果
            return objAdmin;
        }
    }
}

注意:面向对象的思维就是,传进来的是对象,封装处理的也是对象,最后返回的也是对象,不管什么时候处理数据,都应该以对象为中心

namespace Models
{
    /// <summary>
    /// 管理员实体类
    /// </summary>
    public class SysAdmin
    {
        public int LoginId { get; set; }
        public string AdminName { get; set; }
        public string LoginPwd { get; set; }
    }
}

        //登录
        private void btnLogin_Click(object sender, EventArgs e)
        {
            //【1】数据验证
            if (this.txtLoginId.Text.Trim().Length == 0)
            {
                MessageBox.Show("请输入登录账号!", "登录提示");
                this.txtLoginId.Focus();
                return;
            }
            if (this.txtLoginPwd.Text.Trim().Length == 0)
            {
                MessageBox.Show("请输入登录密码!", "登录提示");
                this.txtLoginPwd.Focus();
                return;
            }
            //【2】封装对象(实际封装的是用户登录账号和密码)
            SysAdmin objAdmin = new SysAdmin()
            {
                LoginId = Convert.ToInt32(this.txtLoginId.Text.Trim()),
                LoginPwd = this.txtLoginPwd.Text.Trim()
            };
            //【3】和后台交互,判断登录信息是否正确
            try
            {
                objAdmin = objAdminService.AdminLogin(objAdmin);
                if (objAdmin != null)//如果登录成功
                {
                    //保存登录信息
                    Program.objCurrentAdmin = objAdmin;
                    //设置登录窗体的返回值
                    this.DialogResult = DialogResult.OK;
                    //关闭窗体
                    this.Close();
                }
                else
                {
                    MessageBox.Show("登录账号或密码有误!", "登录提示");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据访问出现异常,登录失败!具体原因:" + ex.Message);
            }

        }
        //关闭
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
public static Models.SysAdmin objCurrentAdmin = null;
4.2 编写通用验证类

各种注册,表格的长度和字符限制;例如姓名不能超过8个字符


image.png
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Text.RegularExpressions;

namespace StudentManager.Common
{
    /// <summary>
    /// 通用验证类
    /// </summary>
    class DataValidate
    {
        /// <summary>
        /// 验证正整数
        /// </summary>     
        public static bool IsInteger(string txt)
        {
            Regex objReg = new Regex(@"^[1-9]\d*$");
            return objReg.IsMatch(txt);
        }
        /// <summary>
        /// 验证是否是Email
        /// </summary>     
        public static bool IsEmail(string txt)
        {
            Regex objReg = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
            return objReg.IsMatch(txt);
        }
        /// <summary>
        /// 验证身份证
        /// </summary>     
        public static bool IsIdentityCard(string txt)
        {
            Regex objReg = new Regex(@"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$");
            return objReg.IsMatch(txt);
        }
        //...其他正则表达式的验证,请学员自己根据所给正则表达式自己添加相应的方法
    }
}

if (!Common.DataValidate.lsldentityCard(this.txtStudentldNo.Text.Trim())
{
MessageBox.Show("身份证号不符合要求!”,"验证提示");
this.txtStudentldNo.Focus();
return;
}

5. 基于OOP实现功能

一般从底层开始往上层写

上一篇下一篇

猜你喜欢

热点阅读