日期:2014-05-17  浏览次数:20859 次

基于COM技术的ATM自动存款机实现(C#版)

说明:程序是在.NET 4.0下用C#语言编写

      COM组件也是用C#编写

一.  功能需求: 

1. 能存款

2. 能取款

3. 能查询余额及交易明细

4. 能转账

5. 能修改密码

二.  总体设计计:

1.    客户端设计:

(1)  Admin类(登录窗体)

(2)  MainForm类(主窗体)

(3)  WithDraw类(取款窗体)

(4)  Deposit类(存款窗体)

(5)  TransForm类(转账窗体)

(6)  Query类(查询余额及明细窗体)

(7)  ModifyPwd类(修改密码窗体)

(8)  OpenAccountInfo类(开户窗体)

2.    COM组件端的函数设计:

(1)  连接数据库函数组

A.  ReadSqlConnString()(读取连接字符串)

B.  GetConnection()(打开与数据库的连接)

C.  Con_Close()(关闭与数据库的连接)

D.  GetDataSet()(将查询结果表填充在DataSet中)

(2)  Proc_Admin()(用户登录验证)

(3)  Manager_Admin(管理员登录验证)

(4)  WhithDraw()(取款)

(5)  Deposit()(存款)

(6)  TransForm()(转账)

(7)  Query()(查询)

(8)  ModifyPwd()(修改密码)

(9)  Proc_CreateAccount()(开户)

3.    数据库设计:

(1)     表设计

userInfo(用户信息表)

cardInfo(卡信息表)

transInfo(交易信息表)

manager(管理员信息表)

(2)     增加约束条件

如:设置主键

电话号码必须为数字

身份证号为18位

存款类型:活期、定期及定活两便三者之一

等约束。

(3)    创建存储过程

(proc_createAccount)开户存储过程

(proc_takeMoney)存取款存储过程

(proc_randCardNo)随机产生卡号存储过程

(proc_tranMoney)转账存储过程

三.  详细设计:

   1. 客户端设计:

(1)  登录窗体

(2)主窗体

(3)取款窗体

(4)存款窗体

(5)查询余额及明细窗体


(6)修改密码窗体

(7)开户窗体

 

2.COM组件端的函数设计:

(8) 连接数据库函数组

A.  ReadSqlConnString()(读取连接字符串)

#region 读取连接字符串
        ///<summary>
        ///
        ///</summary>
        public static string ReadSqlConString()
        {
            StreamReader sr = new StreamReader("DatabaseLinkString.ini");
            string DatabaseLinkString = "";
            while (!sr.EndOfStream)                    
            {
                DatabaseLinkString += sr.ReadLine();       
            }
            sr.Close();
            return DatabaseLinkString;
        }
        #endregion
B.GetConnection()(打开与数据库的连接)
#region 打开与数据库的连接
        ///<summary>
        ///打?¨°开a与??数oy据Y库a的ì?连¢?接¨?
        ///</summary>
        ///<returns>返¤|ì回?SqlConnection对?象¨?</returns>
        public static SqlConnection GetConnection()
        {
            try
            {
               // StrConn = ReadSqlConString1(ID,Pwd);
                StrConn = ReadSqlConString();
                conn = new SqlConnection(StrConn); //用??SqlConnection对?
                if (conn.State != ConnectionState.Open)
                    conn.Open(); //打开与数据库的连接¨?
                return conn; //返¤|ì回?SqlConnection对?象¨?
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

        }
        #endregion
C.Con_Close()(关闭与数据库的连接)
  #region 关?闭à?数oy据Y库a连¢?接¨?
        ///<summary>
        ///关?闭à?数oy据Y库a连¢?接¨?
        ///</summary>
        public void Con_Close()
        {
            if (conn.State == Con