VC++/MFC Window编程原创教程文件夹

C++课程设计来着。但还没学过数据,也还没理解过三层架构,就把这个作业深化点来做了。尽管要做的这个人事管理系统看起来是挺简单的,无非就是处理员工信息。但事情就是那样,仅仅有动手了才知道什么叫做现实。

    一開始是没想要用三层架构的,我们小组人员能力參差不齐,那就仅仅能从控制台(黑窗体)做起。后来我想做三层架构的时候,发现这是对的。从网上理解到的资料:三层有3层:表现层(UI)、业务逻辑层(BLL)、数据訪问层(DAL)。最好是从逻辑层做起,而我们做的适合控制台的代码,应该就是逻辑层的代码。如今我要在BLL调用DAL的数据,然后在UI调用BLL的数据,就能够实现三层架构了。

(如今是2012-11-06的理解,而且在逻辑层数据已经做得差点儿相同的情况下动手。后面添加的理解再加在这里:11-07,写了一遍DAL的代码,能够保存起来,以后能够略微改动就直接应用其它软件;功能插件化的话,直接加到BLL层就能够给软件加多一个插件了;须要改动数据库类型,仅仅须要改动DAL层就可以;)

     一步步開始,首先是设计员工信息的属性。一份员工信息表,我须要记录的信息有:编号,姓名,性别,年龄,学历,电话,所属部门,职位,入职时间,工资,邮箱。(11-08開始做UI层的时候,发现还有些数据还须要处理,比方管理员账户password,员工图像,在职或离职或实习,员工改动信息后记录备份能够看调职信息,这些后面再考虑吧,先放着);

    然后我要写一些函数处理这些信息:增、删、查、改、排序。

    接下来就是类的设计。是要一開始就创建MFC呢还是先创建控制台方便调试?我也不清楚,但我写这篇文章的时候,类的设计与实现,一个组员都已经做好了,我看懂后就直接拿来用了。所以本教程直接创建MFC单文档(项目名称Staff)!

     本来是想先做BLL层的,但组员提供的是訪问文本类型的数据操作,直接改成数据库訪问的方式感觉乱乱的,所以就先写DAL层吧。DAL层就是专门写处理数据库数据的函数。我如今理解的DAL层,就仅仅放简单的全部数据操作函数就好,然后在BLL层针对不同功能调用DAL函数。上层不直接操作数据库,对后期程序的功能增添或者维护应该会非常有帮助。

    连接数据库也是非常麻烦的事,从零開始自学总是要走非常多弯路的,搞了好几天,我才找到一个比較简单的连接方式【ADO数据库訪问】(最简单的是通过MFC创建向导直接生成数据库类,但那样不利于理解)。 

    開始!

    1.下载安装Microsoft Office Access 2003 

    2. 使用Microsoft Office Access 2003 新建数据库(名字为:StaffMessage.mdb),保存在D:\data,双击使用设计器创建表,填写信息例如以下:

        

                                                                                                                                (后面发现设计少了年龄,再补上去吧)

        注意:id---数据类型为数字--光标定在数字那里,以下能够选择整形;phone和workTime是长整形,salary是单精度型,其他都是默认文本类型。

        关闭表的时候会提示保存,保存名字为StaffMessage,提示尚没有定义主键,选择是。 

    3.把这个数据库文件加入到你计算机的数据源。 

        控制面板--管理工具--数据源--用户DSN--加入--Microsoft Access Driver(*.mdb)--完毕:数据源名为StaffMessage,数据库选择D:\data\StaffMessage.mdb。(加入的时候,把Microsoft Office Access 2003 关了,不然可能加不了)

    4. 以下是添加头文件(StaffDAL.h),我就贴图片就好了。完毕程序后再把源程序代码发上来。



    5.头文件的类包括的东西,临时就想到这些。DAL层做了一天,做得怎么快的原因,是由于我之前练习过,理解过,如今就整理整齐转过来而已。一层一层步骤我也按顺序写了,方便以后改动的时候不乱。接下来是类的实现代码,写在了StaffDAL.cpp 。































写完这些,就先測试一下。View类加入个StaffDAL sdal;菜单条加多一个button,加入button处理函数。写上

sdal.Connect();

sdal.AddNew();//能够在这个函数改动m_id等值測试
sdal.Close();

//我执行点击时,出现错误。起初是数据源名字写成而连不上数据库,改动好之后,点击button,提示内存错误是否继续,点击继续,能够继续执行。第二次添加记录的时候就不提示错误了,所以预计是由于原来的表是空表的原因。 

程序做到这里,我也写完到这里,第一节结束,其他部分能不能实现还是未知数呵呵。先发了,然后吃饭去咯(曾经写的教程都是存在草稿箱一段时间的。。。)。

MFC原创:三层架构01(人事管理系统)DAL的更多相关文章

  1. 【转】asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别

    原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275866 首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BL ...

  2. asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别 转载自:http://blog.csdn.net/luoyeyu1989/article/details/8275866

    首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BLL(业务逻辑层).WEB层各司其职,意在职责分离. MVC是 Model-View-Controller,严格说这三个加起来 ...

  3. Entity Framework 之三层架构

    今天,我们谈一下如何用Entity Framework构建一个三层架构.即包括DAL层,BLL层和MODEL层.我们先看一下目录结构,如下图: 目录中,我们有Web层,AVON.DMS.Model是实 ...

  4. 浅析MVC模式与三层架构的区别01

    三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI ...

  5. MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等

    SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...

  6. 【转】.NET 三层架构 中 DAL+IDAL+Model+BLL+Web

    其实三层架构是一个程序最基本的 在.Net开发中通常是多层开发 比如说 BLL 就是business Logic laywer(业务逻辑层) 他只负责向数据提供者也就是DAL调用数据 然后传递给 客户 ...

  7. ASP.NET的三层架构(DAL,BLL,UI)

    ASP.NET的三层架构(DAL,BLL,UI) BLL   是业务逻辑层   Business   Logic   Layer DAL   是数据访问层   Data   Access   Laye ...

  8. C#中三层架构UI、BLL、DAL、Model实际操作

    三层架构分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL)再加上实体类库(Model) 转载请注明出自朱朱家园https://blog.csdn.net/zhgl7688 1.实体类库( ...

  9. 三层架构BLL+DAL+Model & MVC & MVVM

    三层架构 - 国内版 Binghttps://cn.bing.com/search?FORM=U227DF&PC=U227&q=%E4%B8%89%E5%B1%82%E6%9E%B6% ...

随机推荐

  1. Js打开新窗口拦截问题整理

    一.js打开新窗口,经常被拦截 //js打开新窗口,经常被拦截 //指定本窗口打开,可以使用 window.open('http://www.tianma3798.cn', '_self'); //不 ...

  2. 修复 status 为 unusable 的 index

    以DBA权限登陆,执行以下脚本即可. declare     -- 指向所有 UNUSABLE 状态的 index 的游标      cursor c is        select index_n ...

  3. 静默安装ORACLE【weber出品必属精品】

    安装配置系统环境安装linux ,所有服务都不选择,只是选择安装开发工具,不要安装防火墙(当然也可以在后面关闭) 打开终端,执行如下命令,检查安装包,没有的都要安装 make, glibc, liba ...

  4. startActivityForResult

    Activity提供了startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Ac ...

  5. Backbone学习笔记

    model model的get和set是对model.attributes进行操作,并不是直接对model进行操作 collection collection.set()会触发相应的add,remov ...

  6. css3动画和jquery动画使用中要注意的问题

    前一阵子写demo的时候遇到这样一个问题,就是给元素添加css3或者jquery动画时,在动画结束前不能准确取到元素的css属性. 1. css3动画讨论 先看代码: html: <div id ...

  7. 自己寫的 Loading JS插件

    本文為原創文章,轉載請注明出處,謝謝./** * @author samkin.yang * @version 1.0 */var $_yxj = new SamkinLoading(); (func ...

  8. Python3 如何优雅地使用正则表达式(详解二)

    使用正则表达式 现在我们开始来写一些简单的正则表达式吧.Python 通过 re 模块为正则表达式引擎提供一个接口,同时允许你将正则表达式编译成模式对象,并用它们来进行匹配. 小甲鱼解释:re 模块是 ...

  9. jquery编写插件

    jquery编写插件的方法    版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三 ...

  10. 机器人操作系统ROS | 简介篇

    同样,从个人微信公众号Nao(ID:qRobotics)搬运. 前言 先放一个ROS Industrial一周年剪辑视频. ROS已经发布八周年了,在国外科研机构中非常受欢迎.目前,以美国西南研究院为 ...