目录
教学资源
教学运行
提醒实验9: 三层架构系统开发 返回
实验课程:
C#数据库系统开发
开课学院:
商学院
开课专业:
信息管理与信息系统
教材:
软件:
实验指导:
实验介绍

实验9: 三层架构系统开发

一、实验名称和性质

 

所属课程

C#数据库系统设计

实验名称

三层结构系统开发

实验学时

2

实验性质

□验证  □综合 □设计

必做/选做

□必做 □选做

 

二、实验目的

1.        了解三层架构系统开发。

2.        了解UIBLLDAL之间的依赖关系。

3.        了解三层之间的数据传递。

三、实验的软硬件环境要求

硬件环境要求:

         PC机(单机)

 

使用的软件名称、版本号以及模块:

         Windows XP下的SQL Server 2005(或 SQL Server 2008

四、知识准备

1. 三层架构(3-tier architecture)就是将整个业务应用划分为:表现层(Presentation layer)、业务逻辑层(Application layer)、数据访问层(Data access layer)。

 

 

2. 三层架构中三层之间的依赖关系:用户界面层→业务逻辑层→数据访问层。

 

3. 三层结构的搭建:

(1)建立用户界面项目(UI):新建项目→Windows窗体应用程序(解决方案是:创建新解决方案);

(2)建立业务逻辑项目(BLL):新建项目→类库(解决方案是:添入解决方案);

(3)建立数据访问项目(DAL):新建项目→类库(解决方案是:添入解决方案);

(4)建立实体模型项目(Models):新建项目→类库(解决方案是:添入解决方案);

(5)添加各层之间的依赖关系(添加引用):

UI引用BLL和Models,BLL引用DAL和Models,DAL引用Models.

 

五、实验内容

(一)验证性试验

1.搭建三层架构

(1)建立用户界面项目(UI):新建项目→Windows窗体应用程序(解决方案是:创建新解决方案);

(2)建立业务逻辑项目(BLL):新建项目→类库(解决方案是:添入解决方案);

(3)建立数据访问项目(DAL):新建项目→类库(解决方案是:添入解决方案);

(4)建立实体模型项目(Models):新建项目→类库(解决方案是:添入解决方案);

(5)添加各层之间的依赖关系(添加引用):

UI引用BLL和Models,BLL引用DAL和Models,DAL引用Models.

2. Models项目中添加类UserInfo

public class UserInfo

    {

        publicUserInfo()

        {}

        #region Model

        private string_userid;

        private string_userpwd;

        /// <summary>

        ///

        /// </summary>

        public string userID

        {

            set{ _userid=value;}

            get{return _userid;}

        }

        /// <summary>

        ///

        /// </summary>

        public string userPWD

        {

            set{ _userpwd=value;}

            get{return _userpwd;}

        }

        /// <summary>

        ///

        /// </summary>

        #endregion Model

 

    }

 

 

3. DAL项目中添加类UserInfoDAL

using Models;

public class UserInfoDAL       

   {

        public UserInfoDAL()

        {

        }

        public bool Exists(string userID,string userPWD)

        {

           string sqlStr="select userID from userInfo where userID=@userID and userPWD=@userPWD";

           string connStr = "server=.;database=student;integrated security=true";

           SqlConnection conn = new SqlConnection(connStr);

          SqlCommand cmd = new SqlCommand(sqlStr, conn);

          cmd.Parameters.Add("@userID", System.Data.SqlDbType.VarChar, 10);

          cmd.Parameters["@userID"].Value = userID;

          cmd.Parameters.Add("@userPWD", System.Data.SqlDbType.VarChar, 10);

          cmd.Parameters["@userPWD"].Value = userPWD;         

           conn.Open();

           SqlDataReader sdr = cmd.ExecuteReader();

           if (sdr.Read())

           {

               return true;

           }

           else

           {

               return false;

           }          

        }

   }

 

4. BLL项目中添加类UserInfoBLL

using DAL;

using Models;

public class UserInfoBLL

    {

       public UserInfoBLL()

       {

       }

       UserInfoDAL dal = new UserInfoDAL();

       public bool Exists(string userID,string userPWD)

       {

           return dal.Exists(userID,userPWD);

       }

    }

 

5. 将用户界面项目UI中窗体设计如下:

控件及属性

控件

属性

属性值

文本框1

Name

txtUserID

文本框2

Name

txtUserPWD

PassWordChar

*

标签1

Text

账号:

标签2

Text

密码:

命令按钮1

Name

btnLogin

Text

登录

命令按钮2

Name

btnCancel

Text

取消

using BLL;

using Models ;

……….

UserInfoBLL userBLL = new UserInfoBLL();

private void btnLogin_Click(object sender, EventArgse)

        {

            UserInfo  theUser;

            stringuserID,userPWD;

            userID = txtUserID.Text;

            userPWD = txtUserPWD.Text;

            if(userBLL.Exists(userID, userPWD))

            {

                MessageBox.Show("valid user");

            }

            else

            {

                MessageBox.Show("invalid user,ID or Password is wrong!");

            }

        }

 

6.从菜单“项目”选择UI属性,在项目属性窗口的启动对象选择“UI.Program”。

 

7.在UserInfoDAL中添加方法Insert();

public int Insert(UserInfotheUser)

        {

            stringsqlStr = "insert into userInfo(userID,userPWD) values(@userID ,@userPWD)";

            stringconnStr = "server=.;database=student;integrated security=true";

            SqlConnectionconn = new SqlConnection(connStr);

            SqlCommandcmd = new SqlCommand(sqlStr, conn);

            cmd.Parameters.Add("@userID", System.Data.SqlDbType.VarChar, 10);

            cmd.Parameters["@userID"].Value = theUser .userID ;

            cmd.Parameters.Add("@userPWD", System.Data.SqlDbType.VarChar, 10);

            cmd.Parameters["@userPWD"].Value = theUser .userPWD ;

            conn.Open();

            intrecNum=cmd.ExecuteNonQuery();

            conn.Close();

            returnrecNum;

        }

8.在UserInfoBLL中添加方法Insert();

public int Insert(UserInfotheUser)

        {

            returndal.Insert(theUser);

        }

 

 

9. 在项目加入窗体UserInfoDetails,窗体界面如下

控件及属性

控件

属性

属性值

文本框1

Name

txtUserID

文本框2

Name

txtUserPWD

PassWordChar

*

文本框2

Name

txtRepeatPWD

PassWordChar

*

命令按钮1

Name

btnAdd

Text

Add

命令按钮2

Name

btnUpdate

Text

Update

 

private void btnAdd_Click(object sender, EventArgs e)

        {

            if(txtUserID.Text == "")

            {

                MessageBox.Show("账号不能为空!");

            }

            else

            {

                if(txtUserPWD.Text != txtRepeatPWD.Text)

                {

                    MessageBox.Show("2次输入的密码不一致!");

 

                }

                else

                {

                    UserInfotheUser = new UserInfo();

                    theUser.userID = txtUserID.Text;

                    theUser.userPWD = txtUserPWD.Text;

                    UserInfoBLLuserInfoBLL = new UserInfoBLL();

                    inti = userInfoBLL.Insert(theUser);

                    if(i >= 0)

                    {

                        MessageBox.Show("记录已经插入!");

                    }

                }

            }

           

        }

 

10.将用户界面项目UI中窗体Form1中的btnLogin_Click()事件中的

private void btnLogin_Click(object sender, EventArgse)

        {

            UserInfo  theUser;

            stringuserID,userPWD;

            userID = txtUserID.Text;

            userPWD = txtUserPWD.Text;

            if(userBLL.Exists(userID, userPWD))

            {

                UserInfoDetails frm=new UserInfoDetails();

                frm.Show();

            }

            else

            {

                MessageBox.Show("invalid user,ID or Password is wrong!");

            }

        }

 

 

 

(二)设计性试验

1. 在验证性实验建立的三层架构编程完成用户信息表UserInfo的修改和删除操作。

2. 在验证性实验建立的三层架构编程完成学生信息表s的插入、修改和删除操作。