c# winfrom 学生管理系统 笔记

72 阅读2分钟

入口文件中,先显示登录页,登录成功后进入主页

namespace StudentManager
{
    internal static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // 创建登录窗体
            FrmUserLogin objUserLogin = new FrmUserLogin();
            DialogResult result = objUserLogin.ShowDialog();

            if (result == DialogResult.OK)
            {
                Application.Run(new FrmMain());
            }
            else {
                Application.Exit();
            }
            
            Application.Run(new FrmMain());
        }

        // 声明用户信息的全局变量
        public static SysAdmin currentAdmin = null;
    }
}

image.png

数据访问类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Data;
using System.Data.SqlClient;
using System.Configuration;  // 需要添加引用

namespace DAL
{
    /// <summary>
    /// 通用数据访问类
    /// </summary>
    class SQLHelper
    {
        // ConfigurationManager
        private static readonly string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();

        /// <summary>
        ///  执行增删改查
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static int Update(string sql) { 
            SqlConnection conn =  new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            {
                conn.Open();
                int result = cmd.ExecuteNonQuery();
                return result;
            }
            catch (Exception ex)
            {
                throw ex;

            }
            finally {
                conn.Close();
            }
        
        }

        /// <summary>
        /// 执行单一结果查询
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>

        public static object GetSingleResult(string sql) {

            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);

            try
            {
                conn.Open();
                object result = cmd.ExecuteScalar();
                return result;

            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally { 
                conn.Close ();
            }
        }
        /// <summary>
        /// 执行多结果查询
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static SqlDataReader GetReader(string sql) { 
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);

            try
            {
                conn.Open();
                SqlDataReader objReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return objReader;
            }
            catch (Exception ex) { 
                conn.Close();
                throw ex;
            }
        }

        /// <summary>
        /// 执行返回数据集的查询
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static DataSet GetDataSet(string sql) { 
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd); // 创建数据适配
            DataSet ds = new DataSet(); // 创建一个内存数据集

            try
            {
                conn.Open();
                da.Fill(ds); // 使用数据适配器填充数据集
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally { 
                conn.Close () ;
            }
        }

        /// <summary>
        /// 启用事务执行多条sql语句
        /// </summary>
        /// <param name="sqlList">sql语句列表</param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        public static bool UpdateByTran(List<string> sqlList) { 
            SqlConnection conn = new SqlConnection (connString);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;

            try
            {
                conn.Open();
                cmd.Transaction = conn.BeginTransaction(); // 开启事务
                foreach (string itemSql in sqlList)
                { // 循环提交sql语句
                    cmd.CommandText = itemSql;
                    cmd.ExecuteNonQuery();
                }
                cmd.Transaction.Commit();
                return true;
            }
            catch (Exception ex)
            {
                if (cmd.Transaction != null)
                {
                    cmd.Transaction.Rollback();// 回滚事务
                   
                }
                throw new Exception("调用事务方法UpdateByTran(List<string> sqlList)时出现错误");
            }
            finally {
                if (cmd.Transaction != null) 
                    cmd.Transaction = null;

                conn.Close ();
            }
        }

        /// <summary>
        /// 获取服务器的时候
        /// </summary>
        /// <returns></returns>

        public static DateTime GetServiceTime() {

            return Convert.ToDateTime(GetSingleResult("select getdate()"));
        }


    }
}

登录逻辑

private void btnLogin_Click(object sender, EventArgs e)
{

    // 1.数据验证
    if (this.txtLoginId.Text.Trim().Length == 0) {
        MessageBox.Show("请输入登录账号!", "提示信息");

        this.txtLoginId.Focus();
        return;
    }
    if (this.txLoginPwd.Text.Trim().Length == 0) {
        MessageBox.Show("请输入登录密码!", "提示信息");
        this.txLoginPwd.Focus();
        return ;
    }
    // 2.封装用户信息对象

    SysAdmin sysAdmin = new SysAdmin()
    {
        LoginId = Convert.ToInt32(this.txtLoginId.Text.Trim()),
        LoginPwd = this.txLoginPwd.Text.Trim(),
    };

    // 3调用后台登录方法
    try
    {
        // 全局保存数据 
        Program.currentAdmin = new AdminService().AdminLogin(sysAdmin);
        if (Program.currentAdmin != null)
        {
            this.DialogResult = DialogResult.OK;
        }
        else
        {
            MessageBox.Show("用户名或密码错误!", "提示信息");

        }
    }
    catch (Exception ex) {
        MessageBox.Show(ex.Message, "操作异常");
    }
}

这里要重点记住“全局变量” 在入口文件

image.png

在主页设置两个比例页面

image.png

image.png

image.png

image.png

image.png

image.png

弹出写法

image.png

添加学员笔记

页面布局

image.png

image.png

image.png

image.png

image.png

image.png

学员管理

image.png

image.png

image.png

image.png

窗口传值

 // 显示修改学员信息窗口 窗口之间的传值
 FrmEditStudent objEditStudent = new FrmEditStudent(objStudent);
 objEditStudent.ShowDialog();

image.png

image.png

image.png

image.png