zoukankan      html  css  js  c++  java
  • 修改程序登录入口,管理员操作

    一:经过两天的努力,今天终于解决了一系列让我头疼的问题,这些问题可很简单,写下来记住吧,解决方案资源管理器截图如下:

    二:登录入口选择的代码,program.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    
    namespace HYMSys.UI
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                login login = new login();
                login.ShowDialog();
                if (login.DialogResult == DialogResult.OK)//对话框的返回值为ok时运行HRMSys窗口
                {
                    Application.Run(new HRMSys());
                }
                //Application.Run(new login());
            }
        }
    }
    View Code

    登录的优化操作:

    1.login窗口的AccoptButton属性为登录按钮,CancleButton为关闭按钮,这样回车直接登录了和用Esc键直接关闭

    2.login窗口的MaximizeBox属性为:False

    3.login窗口的StartPosition属性为:CenterScreen

    三:OperatorListUI.cs代码,将管理员全部显示出来

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using HRMSys.DAL;
    using HRMSys.Model;
    
    namespace HYMSys.UI.SystemMgr
    {
        public partial class OperatorLisrUI : Form
        {
            public OperatorLisrUI()
            {
                InitializeComponent();
            }
            OperatorEditUI edit = new OperatorEditUI();
            /// <summary>
            /// 刷新数据
            /// </summary>
            private void loadSource()
            {
                OperatorDAL ope = new OperatorDAL();
               
                dataGridView1.DataSource =ope.GetListNotDelete();//dataGridView1.DataSource可以直接接收一个object数组
     
            }
            /// <summary>
            ///窗口启动自动加载数据没有被软删除的数据
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void OperatorLisrUI_Load(object sender, EventArgs e)
            {
    
                loadSource();
             
            }
            /// <summary>
            /// 添加管理员
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tsb_add_Click(object sender, EventArgs e)
            {
                
                edit.IsInsert = true;//不同窗口间传参数;
                edit.ShowDialog();
                if (edit.loadSouce == true)
                {
                    loadSource();
                }
                
            }
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tsb_delete_Click(object sender, EventArgs e)
            {
               
                OperatorDAL dal = new OperatorDAL();
                edit.EditingId = (Guid)dataGridView1.CurrentRow.Cells[0].Value;//取得id的值
                string name= (string)dataGridView1.CurrentRow.Cells[1].Value;
                if (MessageBox.Show("真的要删除--"+name+"--吗?", "警告", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    dal.softDelete(edit.EditingId);
                    edit.loadSouce = true;
                    
                }
                if (edit.loadSouce == true)
                {
                    loadSource();
                }
                
    
            }
            /// <summary>
            /// 编辑
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tsb_edit_Click(object sender, EventArgs e)
            {
               
               
                edit.IsInsert = false;//不同窗口间传参数;
    
                //edit.EditingId = dataGridView1.Rows[2].Cells[].Value;
                edit.EditingId = (Guid)dataGridView1.CurrentRow.Cells[0].Value;//取得id的值
                edit.ShowDialog();
                if(edit.loadSouce==true)
                {
                    loadSource();
                }
                
    
            }
    
           
        }
    }
    View Code

    此过程中遇到的问题:

    1.如何将datagridview中显示的是文字,而不是数据源的字段,只显示其中的三个字段,得到选中行的某单元格的内容如图:

    a.将datagridview列的属性HeaderText设置为显示的文字,DataPropertyName设置为数据源对应的字段名,这就实现了如图用户名下显示的数据源的UserName字段,如图操作:

    b.将数据源的所有字段都添加到datagridview列属性中,这样就不会出现自动添加以数据源字段为列属性了,将不用的列属性隐藏即可

    c.dataGridView1.CurrentRow.Cells[0].Value;//得到当前选中行的第一列单元格的内容

    三:OperatorDAL.cs的代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using HRMSys.Model;
    using System.Data.SqlClient;
    using System.Data;
    
    namespace HRMSys.DAL
    {
        public class OperatorDAL
        {
            /// <summary>
            /// 插入一个用户
            /// </summary>
            /// <param name="op"></param>
            public void insertUser(Operator op)
            {
                sqlhelper.ExecuteNon(@"insert into T_Operator (Id,UserName,Password,IsLocked,IsDelete,RealName) values (newid(),@UserName,@Password,0,0,@RealName)",
                                    new SqlParameter ("@UserName",op.UserName),
                                    new SqlParameter ("@Password",op.Password),
                                    new SqlParameter("@RealName",op.RealName));
            }
            
            /// <summary>
            /// 查询是否存在用户名
            /// </summary>
            /// <param name="name"></param>
            /// <returns></returns>
            public bool checkNameRepeat(string name)
            {
                DataTable table = sqlhelper.datatable("select * from T_Operator where UserName=@UserName",
                    new SqlParameter("@UserName", name));
                if (table.Rows.Count <= 0)
                    return true;//不存在
    
                else 
                    return false;//已存在
    
            }
            /// <summary>
            /// 将表的形式转换为vs的形式,给对象
            /// </summary>
            /// <param name="row"></param>
            /// <returns></returns>
            private Operator ToOperator(DataRow row)
            {
                Operator op = new Operator();
                op.Id = (Guid)row["Id"];//不加就可以检查用户名是否重复了
                op.UserName = (string)row["UserName"];
                op.Password = (string)row["Password"];
                op.IsLocked = (bool)row["IsLocked"];
                op.IsDelete=(bool)row["IsDelete"];
                op.RealName = (string)row["RealName"];
                return op;
            }
            /// <summary>
            ///查询指定username的一条数据
            /// </summary>
            /// <param name="name"></param>
            /// <returns></returns>
            public Operator loginUser(string name)
            {
                   DataTable table = sqlhelper.datatable("select * from T_Operator where UserName=@UserName and IsDelete=0 and IsLocked=0",
                       new SqlParameter("@UserName", name));
                   if (table.Rows.Count <= 0)
                       return null;
    
                   else if (table.Rows.Count > 1)
                       throw new Exception("用户名重复");
                   else
                   {
                       DataRow row = table.Rows[0];
                      
    
                       return ToOperator(row);
                   }
            }
            /// <summary>
            /// 锁定管理员更新管理员表
            /// </summary>
            /// <param name="op"></param>
            public void UpdateOperator(Operator op)
            {
                sqlhelper.ExecuteNon("update T_Operator set IsLocked=@IsLocked  where Id=@Id",
                    new SqlParameter("@IsLocked", op.IsLocked),
                    new SqlParameter("@id",op.Id));
     
            }
            /// <summary>
            /// 根据id软删除一条数据
            /// </summary>
            /// <param name="id"></param>
            public void softDelete(Guid id)
            {
                sqlhelper.ExecuteNon("update T_Operator set IsDelete=1 where Id=@Id",
                    new SqlParameter("@Id",id));
     
            }
            /// <summary>
            /// 得到没有软删除的所有数据
            /// </summary>
            /// <returns></returns>
            public Operator[] GetListNotDelete()
            {
                
                DataTable listOp=sqlhelper.datatable("select * from T_Operator where IsDelete=0");
                Operator[] op = new Operator[listOp.Rows.Count];
                for (int i = 0; i < listOp.Rows.Count; i++)
                {
                    op[i] = ToOperator(listOp.Rows[i]);
                }
                return op;
            }
            //得到指定Id的一条数据
            public Operator GetOpById(Guid id)
            {
    
                DataTable table = new DataTable();
               
              table=  sqlhelper.datatable("select * from T_Operator where Id=@Id",
                    new SqlParameter("@Id",id));
    
              if (table.Rows.Count <= 0)
                  return null;
    
              else if (table.Rows.Count > 1)
                  throw new Exception("ID重复");
              else
              {
                  return ToOperator(table.Rows[0]);
              }
            
    
            }
            //更新一条数据
            public void updateTwoByid(string username,string realname,Guid id)
            {//两个set间要有逗号UserName=@UserName ,RealName=@RealName
                sqlhelper.ExecuteNon("update T_Operator set UserName=@UserName ,RealName=@RealName where Id=@Id",
                    new SqlParameter("@UserName",username),
                    new SqlParameter("@RealName",realname),
                    new SqlParameter("@Id",id));
            }
            public void updateThreeByid(string username, string realname,string password,Guid id)
            {
    
    
                sqlhelper.ExecuteNon("update T_Operator set UserName=@UserName, RealName=@RealName,Password=@Password where Id=id",
                    new SqlParameter("@UserName", username),
                    new SqlParameter("@RealName", realname),
                    new SqlParameter("@Password",password)
                    );
            }
           
        }
    }
    View Code

    四:CommonHelper.cs和App.config的代码,将密码盐放到App.config中,CommonHelper.cs取到密码盐

    CommonHelper.cs代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Security.Cryptography;
    using System.Configuration;
    
    namespace HYMSys.UI
    {
      class CommonHelper
        {
            /// <summary>
            /// MD5加密算法,将添加的用户名和密码加密
            /// </summary>
            /// <param name="sDataIn"></param>
            /// <returns></returns>
            public static string GetMD5(string sDataIn)
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                byte[] bytValue, bytHash;
                bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn);
                bytHash = md5.ComputeHash(bytValue);
                md5.Clear();
                string sTemp = "";
                for (int i = 0; i < bytHash.Length; i++)
                {
                    sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
                }
                return sTemp.ToLower();
            }
          /// <summary>
          /// 取得密码盐
          /// </summary>
          /// <returns></returns>
            public static string getPasswordSalt()
            {
                string passwordSalt = ConfigurationManager.AppSettings["PasswodSalt"];
               return passwordSalt;
            }
        }
    }
    View Code

    App.config的代码:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name="constr" connectionString="server=.;database=HRMSysDB;uid=hrmsa;pwd=love@zhengzhou"/>
      </connectionStrings>
      <appSettings>
        <add key="PasswodSalt" value="Love@.>1"/>
      </appSettings>
    </configuration>

    五:OperatorEditUI.cs代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using HRMSys.Model;
    using HRMSys.DAL;
    
    namespace HYMSys.UI.SystemMgr
    {
        public partial class OperatorEditUI : Form
        {
            public OperatorEditUI()
            {
                InitializeComponent();
            }
            public bool IsInsert { get; set; }//是否插入
            public Guid EditingId { get; set; }//列表窗口的id,也是表的id
            public bool loadSouce { get; set; }//用来让编辑窗口关闭后刷新列表窗口
            /// <summary>
            /// 保存修改或插入
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btn_save_Click(object sender, EventArgs e)
            {
                if (IsInsert)
                {
                    Operator opp = new Operator();
                    OperatorDAL op = new OperatorDAL();
                    opp.Password = CommonHelper.GetMD5(tb_password.Text + CommonHelper.getPasswordSalt());
                    opp.UserName = tb_username.Text;
                    opp.RealName = tb_realname.Text;
                    op.insertUser(opp);
                    MessageBox.Show("添加成功");
    
    
    
                }
                else
                {
                    if (tb_password.Text.Length <= 0)
                    {
                        OperatorDAL op = new OperatorDAL();
                        op.updateTwoByid(tb_username.Text, tb_realname.Text, EditingId);
                        MessageBox.Show("更改成功");
    
                    }
                    else
                    {
                        string password = tb_password.Text;
                        password = CommonHelper.GetMD5(password + CommonHelper.getPasswordSalt());
                        OperatorDAL op = new OperatorDAL();
                        op.updateThreeByid(tb_username.Text, tb_realname.Text, password, EditingId);
                        MessageBox.Show("更改成功");
    
    
                    }
                }
    
    
    
            }
            /// <summary>
            /// 自动载入指定id数据
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void OperatorEditUI_Load(object sender, EventArgs e)
            {
                if (IsInsert)
                {
    
    
                }
                else
                {
                    OperatorDAL opda = new OperatorDAL();
                    Operator op = new Operator();
                    op = opda.GetOpById(EditingId);
                    tb_username.Text = op.UserName;
                    tb_realname.Text = op.RealName;
                }
            }
            /// <summary>
            /// 窗口关闭,将datagridview重新载入数据
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void OperatorEditUI_FormClosing(object sender, FormClosingEventArgs e)
            {
    
                loadSouce = true;
            }
            /// <summary>
            /// 取消时关闭窗口
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btn_cancle_Click(object sender, EventArgs e)
            {
                loadSouce = false;
                this.Close();
               
               
            }
        }
    }
    View Code

    六:更改应用程序的图标,在主程序上右键单击属性,得到如图界面,更改即可:

  • 相关阅读:
    POJ-1330 Nearest Common Ancestors(倍增的LCA)
    POJ-1442 Black Box(手写堆优化)
    POJ-2442 Sequence(手写堆优化)
    BZOJ2506 calc
    BZOJ3396 [Usaco2009 Jan]Total flow 水流
    BZOJ3570 DZY Loves Physics I
    BZOJ1101 [POI2007]Zap
    BZOJ1110 [POI2007]砝码Odw
    BZOJ1555 KD之死
    BZOJ3476 [Usaco2014 Mar]The Lazy Cow
  • 原文地址:https://www.cnblogs.com/hongmaju/p/3623338.html
Copyright © 2011-2022 走看看