MFC原创:三层架构03(人事管理系统)BLL以及总体说明

      终于写到这一步了。头和尾基本弄好了,就差弄条线把它们连接起来。今天有个同学问什么是三层架构,我说我也还不怎么理解清楚,只知道个大概:界面设计---系统功能实现代码---数据库操作代码可以分开来分工编写,最后加上接口(其实就是让三个层的数据可以互相赋值给对方)。说是这么简单,但实际操作,一不注意就会感到很乱,一旦真的是分工来做,估计会更乱。今天(11-13)弄了挺久,刚刚实现一个功能,在UI层输入数据,把数据传到BLL的add函数,add函数再调用DAL的AddNew函数,在这过程中,BLL层和DAL层相应都做了修改。为什么开发软件要先写很长一段时间的需求分析和开发文档,可能后面会慢慢理解到了……

这里是当初做控制台的数据流程图:
     

这里只需要把文本储存的操作函数换成DAL的数据库操作函数,但当初设计的时候,是没考虑要做数据库和界面的,所以要修改的地方还是挺多的。

BLL层可以说的地方不多,主要:

1.      在构造函数中调用DALstaffdal.Connect()连接数据库。

2.      在析构函数中要delete链表,并且staffdal.Close()关闭数据库。

3.      起初没有使用友类,后面才使用了友类。数据交换接口(类似ExchangeUItoBLL)有些有参数有些没有。起初没有设计好,所以位置也没有统一放,这样看起来就可能会有点乱。后来想想,除了DALDATA(数据库)的数据交换接口需要写在DAL层,其它接口好像都可以写在BLL层。使用了友类,上层调用下层数据,就可以直接访问下层的私有变量。上层传输数据到下层,就用参数传值的方式给下层使用。
-----------------------
总体说明:
-----------------------
 

 

 

分为11个区域,下面针对各个区域进行说明。

界面为FormView窗口,关联CLeftFormAddView

利用窗口切分的方法显示界面窗口,代码区域:CMainFrame::OnCreateClient()。使用的类有:CSplitterWnd(用于切分窗口);CRect(用于获取窗口大小)。

零:启动软件,区域3456控件不可用,区域8控件不可见;

不需代码实现,添加控件资源的时候,直接设置相关属性。

一:点击1,将CLeftFormAddView指针传到11,显示对话框,正确输入账号密码,1不可用,3456可用。

         添加Dialog资源(IDD_DIALOG_LOGIN),关联类CDialogLogin

         显示窗口并传指针代码区域:CLeftFormAddView::OnBnClickedButtonLogin()

         操作相关控件属性代码区域:CDialogLogin::OnBnClickedOk()

二:点击2,区域1可用,3456不可用

         代码区域:CLeftFormAddView::OnBnClickedButtonEnd()

三:点击3,3不可用,区域8控件可见可用,9控件标题变:确认添加。

         点击按钮3,触发函数CLeftFormAddView::OnBnClickedButtonAdd()。调用ChangeState(1)。规定区域3456调用ChangeState()使用的参数分别是1234(增查改删);

         状态改变供调用的函数CLeftFormAddView::ChangeState(int m_iState)

四:类似“三”。显示区域7

五:类似“三”。

六:类似“三”。

七:Combo控件选择“编号”或“姓名”,Edit控件写入查询值,点击查询,区域11显示结果。按“编号”查询最多只有1个结果,按“姓名”查询可能有多个结果。

         查询按钮代码区域:CLeftFormAddView::OnBnClickedButtonQueryYes()

         查询的大概方法(以“编号”为例):Edit控件的值保存到其关联的变量m_query_edit

。通过调用StaffBLL类的find_id(m_query_edit)得到对应值在链表的地址。再将该员工资料添加到区域11

八:分别关联CLeftFormAddView的私有变量m_id,m_name,m_sex,m_age,m_educationBackground,m_phone,m_department,m_position,m_workTime,m_salary,m_email

九:添加、查询、修改、删除数据。

         CLeftFormAddView设置私有变量m_iConfirm,在点击3456时进行赋值,所以在点击9的时候CLeftFormAddView::OnBnClickedButtonComfirm(),就可以根据iConfirm调用不同的函数

         以“添加”为例:CLeftFormAddView::AddComfirm()

         1:区域8填好员工信息后,通过UpdateData(true);m_id等变量就接收到控件显示的值。

         2:区域11显示添加的员工信息

         3:调用StaffBLLadd()函数。

staffbll.add(m_id,m_name,m_sex,m_age,m_educationBackground,

                            m_phone,m_department,m_position,m_workTime,m_salary,m_email);

这时把m_id等变量传给了StaffBLL,在这里new StaffMessage结构体保存新的员工数据。然后调用staffdal.ExchangeBLLtoDAL(p->id,p->name,p->sex,p->age,p->educationBackground,p->phone,

                            p->department,p->position,p->workTime,p->salary,p->email);//更新数据到DAL

此时再调用StaffDALAddNew()函数,通过ExchangeDALtoDATA()DAL层接收到的数据存到数据库。

十:将数据库的所有记录显示到区域11

         代码区域:CLeftFormAddView::OnBnClickedButtonQueryAll()

         通过staffbll.load()将数据库数据提取出来,保存到链表。然后就可以讲链表数据显示到区域11了。

十一:单击区域11列出的记录的编号,区域8显示对应的员工数据,可以根据区域56进行修改或删除。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值