这里是当初做控制台的数据流程图:
这里只需要把文本储存的操作函数换成DAL的数据库操作函数,但当初设计的时候,是没考虑要做数据库和界面的,所以要修改的地方还是挺多的。
BLL层可以说的地方不多,主要:
1. 在构造函数中调用DAL的staffdal.Connect()连接数据库。
2. 在析构函数中要delete链表,并且staffdal.Close()关闭数据库。
3. 起初没有使用友类,后面才使用了友类。数据交换接口(类似ExchangeUItoBLL)有些有参数有些没有。起初没有设计好,所以位置也没有统一放,这样看起来就可能会有点乱。后来想想,除了DAL与DATA(数据库)的数据交换接口需要写在DAL层,其它接口好像都可以写在BLL层。使用了友类,上层调用下层数据,就可以直接访问下层的私有变量。上层传输数据到下层,就用参数传值的方式给下层使用。
-----------------------
总体说明:
-----------------------
分为11个区域,下面针对各个区域进行说明。
界面为FormView窗口,关联CLeftFormAddView。
利用窗口切分的方法显示界面窗口,代码区域:CMainFrame::OnCreateClient()。使用的类有:CSplitterWnd(用于切分窗口);CRect(用于获取窗口大小)。
零:启动软件,区域3、4、5、6控件不可用,区域8控件不可见;
不需代码实现,添加控件资源的时候,直接设置相关属性。
一:点击1,将CLeftFormAddView指针传到11,显示对话框,正确输入账号密码,1不可用,3、4、5、6可用。
添加Dialog资源(IDD_DIALOG_LOGIN),关联类CDialogLogin。
显示窗口并传指针代码区域:CLeftFormAddView::OnBnClickedButtonLogin()
操作相关控件属性代码区域:CDialogLogin::OnBnClickedOk()
二:点击2,区域1可用,3、4、5、6不可用
代码区域:CLeftFormAddView::OnBnClickedButtonEnd()
三:点击3,3不可用,区域8控件可见可用,9控件标题变:确认添加。
点击按钮3,触发函数CLeftFormAddView::OnBnClickedButtonAdd()。调用ChangeState(1)。规定区域3、4、5、6调用ChangeState()使用的参数分别是1、2、3、4(增查改删);
状态改变供调用的函数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,在点击3、4、5、6时进行赋值,所以在点击9的时候CLeftFormAddView::OnBnClickedButtonComfirm(),就可以根据iConfirm调用不同的函数
以“添加”为例:CLeftFormAddView::AddComfirm()
1:区域8填好员工信息后,通过UpdateData(true);m_id等变量就接收到控件显示的值。
2:区域11显示添加的员工信息
3:调用StaffBLL的add()函数。
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层
此时再调用StaffDAL的AddNew()函数,通过ExchangeDALtoDATA()把DAL层接收到的数据存到数据库。
十:将数据库的所有记录显示到区域11。
代码区域:CLeftFormAddView::OnBnClickedButtonQueryAll()
通过staffbll.load()将数据库数据提取出来,保存到链表。然后就可以讲链表数据显示到区域11了。
十一:单击区域11列出的记录的编号,区域8显示对应的员工数据,可以根据区域5、6进行修改或删除。