C#模拟银行转账系统

来源:互联网 发布:excel表格两列数据匹配 编辑:程序博客网 时间:2024/04/30 02:55

类库:BankModel

创建类:Bank

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


namespace BankModel
{
    public class Bank
    {


        private string A_id;      //账号


        public string A_id1
        {
            get { return A_id; }
            set { A_id = value; }
        }
        private string A_pwd;  //密码


        public string A_pwd1
        {
            get { return A_pwd; }
            set { A_pwd = value; }
        }
        private string A_host;  //账户人姓名


        public string A_host1
        {
            get { return A_host; }
            set { A_host = value; }
        }
        private string A_state; //1 可用   2挂失    3冻结


        public string A_state1
        {
            get { return A_state; }
            set { A_state = value; }
        }
        private string A_left;  //账户内金额


        public string A_left1
        {
            get { return A_left; }
            set { A_left = value; }
        }
    }
}


类库:BankDAL  引用BankModel.dll文件

类:DALBank

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;


namespace BankDAL
{
    public class DALBank
    {
        public static int Bankpro(string proName, SqlParameter[] pars) { 
            //Sql脚本
            return DBHelper.CreateInstance().ExecPro(proName, pars);
        }
    }
}


类:DBHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;


namespace BankDAL
{
   internal class DBHelper
    {
       private  SqlConnection con=null;
       private SqlCommand cmd = null;


       private static DBHelper dbh = null;


       private  DBHelper() {
           con = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnectionBank"].ConnectionString);
       }


       public static DBHelper CreateInstance()
       {
           if (dbh==null)
           {
               dbh = new DBHelper();
           }
           return dbh;
       }


       /// <summary>
       /// 执行T-SQL存储过程
       /// </summary>
       /// <param name="proName">存储过程名</param>
       /// <param name="pars">参数列表</param>
       /// <returns></returns>
       public int ExecPro(string proName, SqlParameter[] pars)
       { 
           //命名对象
           cmd = new SqlCommand();
           //连接
           cmd.Connection = con;
           //类型
           cmd.CommandType = CommandType.StoredProcedure;
           //过程名
           cmd.CommandText = proName;
           //参数
           cmd.Parameters.AddRange(pars);


           try
           {
               con.Open();
               cmd.ExecuteNonQuery();
               //返回首参数值
               return Convert.ToInt32(pars[0].Value);
           }
           catch (Exception)
           {
               //系统异常
               return -1;
           }
           finally {
               con.Close();
           }
       }




       /// <summary>
       /// 执行Sql脚本
       /// </summary>
       /// <param name="strsql"></param>
       /// <returns></returns>
       public int EditSql(string strsql) {
           using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnectionBank"].ConnectionString))
           {
               cmd = new SqlCommand(strsql, conn);
               try
               {
                   con.Open();
                   //返回受影响行数
                   return cmd.ExecuteNonQuery();
               }
               catch (Exception)
               {
                   //系统异常
                   return -1;
               }
           }
       }
    }
}

创建类库:BankBLL  引用:BankDAL.dll文件

类:BLLBank

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using BankDAL;


namespace BankBLL
{
    public class BLLBank
    {
        public static int BankLogin(string id, string pwd) {


            //配置参数s
            SqlParameter[] pars = new SqlParameter[3];
            pars[0] = new SqlParameter("@flag", SqlDbType.Int);
            pars[0] .Direction=ParameterDirection.Output;
            //pars[0].Value = 0;




            pars[1] = new SqlParameter("@id", SqlDbType.Char, 9);
            pars[1].Value = id;


            pars[2] = new SqlParameter("@pwd",SqlDbType.Char,6);
            pars[2].Value = pwd;


            return DALBank.Bankpro("pro_AccountLogin", pars);
        }


        public static int BankTran(string fromId, string toId,double money) {


            SqlParameter[] pars = new SqlParameter[4];
            pars[0] = new SqlParameter("@flag", SqlDbType.Int);
            pars[0].Direction = ParameterDirection.Output;


            pars[1] = new SqlParameter("@fromId", SqlDbType.Char, 9);
            pars[1].Value = fromId;


            pars[2] = new SqlParameter("@toId", SqlDbType.Char, 9);
            pars[2].Value = toId;


            pars[3] = new SqlParameter("@money", SqlDbType.Money);
            pars[3].Value = money;


            return DALBank.Bankpro("pro_AccountTranTest",pars);
        }
    }
}


类库:BankUIL   引用:BankBLL.dll文件

窗体:FrmLogin

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 BankBLL;


namespace BankUIL
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLogin_Click(object sender, EventArgs e)
        {
            string id = this.mktbID.Text;
            string pwd = this.mktbPwd.Text;


            //正则验证
            int Loginresult = BLLBank.BankLogin(id, pwd);


            switch (Loginresult)
            {
                case -1:
                    {
                        MessageBox.Show("系统异常!");
                        break;
                    }
                case 0:
                    {
                        this.grbLogin.Enabled = false;
                        this.grbTran.Enabled = true;
                        break;
                    }
                case 1:
                    {
                        MessageBox.Show("用户名或密码错误!");
                        break;
                    }
                case 2:
                    {
                        MessageBox.Show("账号被锁定!");
                        break;
                    }
            }
        }


        /// <summary>
        /// 转账
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnTran_Click(object sender, EventArgs e)
        {
            string fromId = this.mktbID.Text;
            string toId = this.mktbtoId.Text;
            double money = (double)this.nudTranMoney.Value;


            int resultTran = BLLBank.BankTran(fromId,toId,money);
            switch (resultTran)
            {
                case -1:
                    {
                        MessageBox.Show("系统异常!");
                        break;
                    }


                case 0:
                    {
                        MessageBox.Show("转账成功!");
                        break;
                    }
                case 1:
                    {
                        MessageBox.Show("同一账户不能转账!");
                        break;
                    }
                case 2:
                    {
                        MessageBox.Show("转入账号不存在!");
                        break;
                    }
                case 3:
                    {
                        MessageBox.Show("转出账户余额不足!");
                        break;
                    }
                case 4:
                    {
                        MessageBox.Show("转入账号不能使用!");
                        break;
                    }
                case 5: 
                 {
                     MessageBox.Show("数据库异常!");
                     break;
                 }
            }
        }
    }
}

配置文件:App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="SqlConnectionBank" connectionString="server=192.168.20.48;database=BankDB;uid=admin;pwd=master"/>
  </connectionStrings>
</configuration>