美文网首页
管理信息系统

管理信息系统

作者: 山猪打不过家猪 | 来源:发表于2022-09-19 17:39 被阅读0次

    1.目的

    image.png

    2.异常处理

    2.1 常见异常
    image.png
    image.png
    2.2 异常处理使用
    image.png
    • 自定义异常


      image.png

    3. 程序模块的封装

    3.1 添加类库
    • 问题:
      两个程序员开发计算器,A开发其他的模块,B开发calculator类,开发互不影响

    • 添加一个类库


      image.png
      image.png
    • 添加给CalDemo添加类库引用


      image.png
    • 其他项目使用
      复制这个dll就可以了


      image.png

    4. 用户登录

    4.1管理员
    • DLL层SysAdminService.cs
    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;
            }
        }
    }
    
    

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

    • Models层SysAdmin.cs
    namespace Models
    {
        /// <summary>
        /// 管理员实体类
        /// </summary>
        public class SysAdmin
        {
            public int LoginId { get; set; }
            public string AdminName { get; set; }
            public string LoginPwd { get; set; }
        }
    }
    
    
    • 业务层FrmUserLogin.cs
      部分登录逻辑
            //登录
            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实现功能

    一般从底层开始往上层写

    相关文章

      网友评论

          本文标题:管理信息系统

          本文链接:https://www.haomeiwen.com/subject/yxfvortx.html