C#三层架构 简单实例分析(3)
3-3-3 界面层的设计
界面层的设计,部署恰当控件后,把功能实现代码放在恰当控件的恰当事件中。课程删除时,界面上主要的功能如下:
1、 按下删除按钮,实现课程记录的删除 (1)代码放在按钮的CLICK事件中;
(2)代码设计思路:首先进行控件的输入正确性验证;将控件的值放在某变量中;利用此变量作为实参,调用业务逻辑类对象的DelCourse()方法,删除记录;最后刷新浏览。
? 任务的设计思路
1、在DAL项目中CourseAccess类,添加删除课程的方法。 2、在BLL项目中CourseBiz类,添加课程删除相关方法。 3、优化界面层代码,调用业务逻辑层类的方法,实现删除。 ? 任务的实施
1、在CourseAccess类中,添加如下方法: 删除课程,注意形参是课程号
///
/// 根据课程号删除课程 ///
///
public int DelCourse(string courseId) {
string strSql = string.Format(\courseId='{0}'\, courseId);
return DBHelper.ExecNonQuery(strSql); }
2、在CourseBiz类中,添加如下方法:
///
/// 判断逻辑,删|除课程 //
///
public void DelCourse(string courseId) {
if (!courseAccess.Exist(courseId)) {
MessageBox.Show(\此课程号不存在,请重新输入\); return; }
if (courseAccess.DelCourse(courseId) > 0) MessageBox.Show(\添加成功\); else
MessageBox.Show(\添加失败\); }
3、界面层重构的代码如下:
private void buttonDel_Click(object sender, EventArgs e)
{
if (textBox4.Text == String.Empty) {
MessageBox.Show(\请输入课程编号\); return; }
string courId = textBox4.Text.Trim(); CourseBiz cb= new CourseBiz(); cb.DelCourse(courId); }
此时运行系统,记录删除的部分就是由这3层实现的,界面层按下“删除”按钮后,调用BLL层的void DelCourse(string courseId)方法,此方法又调用DAL层的bool Exist(string courseId) 和int DelCourse(string courseId)方法,它们再调用DBHelper中的具体数据记录操作方法。也是一个标准的3层架构调用机制。
UI层代码重构BLL层 void DelCourse(string courseId)DAL层 int DelCourse(string courseId)bool Exist(string courseId)
图3.10 课程删除的3层调用流程
? 举一反三 1、
--------------------------------------------------------------------------------------------------------------------------
任务3-4:课程浏览的3层实现
? 效果与描述
在上面2个任务中,利用3层架构,实现了课程记录的添加和删除。在记录添加和删除后,都需要重新刷新课程表的浏览;在窗体加载时,也需要在数据网格中浏览课程表当前所有记录。基于3层架构的课程记录浏览还未实现。
记录浏览的业务流程比较简单,就是再窗体加载时,添加、删除记录后,浏览课程表当前的而所有记录。记录浏览在本质上就是:给数据网格提供数据源。数据源要求是1个数据表DateTable,或者是1种集合:如数组、集合、泛型集合等。
根据业务需求,从底到高来设计每层。在课程表的数据访问层类,添加浏览方法,将课程表的当前所有记录取出,并放入集合。在课程管理的业务逻辑层类,添加浏览方法,调用数据访问层的新方法,取得此集合;最后,在界面层,在恰当控件的恰当事件里,调用业务逻辑层的浏览方法。 本任务的设计流程如记录添加的设计流程,不再赘述。
? 相关知识与技能
在本任务中,需要用到新的知识点:集合和泛型集合。 3-4-1 泛型集合的定义与使用
集合好比容器,将一系列相似的对象组合在一起,集合中包含的对象称为集合元素。.NET 中,集合可分为泛型集合类和非泛型集合类。泛型集合类一般位于system.Collections.Generic命名空间,非泛型集合类位于System.Collections命名空间,除此之外,在System.Collection. Specialized命名空间中也包含了一些有用的集合类。
1、非泛型集合System.Collections命名空间下的.NET非泛型集合类如下所示: System.Collections.ArrayList:数组集合类 System.Collections.BitArray:布尔集合类 System.Collections.Queue:队列 System.Collections.Stack:堆栈
System.Collections.Hashtable:哈希表
System.Collections.SortedList:排序集合类
非泛型集合操作直观,但由于集合中的对象是Object类型,如果集合中需要存放其它类型的对象,则每次使用都必须进行繁琐的类型转换。因此,一般情况下,泛型集合用的比较多。
2、泛型
泛型就好比Word中的模板,在定义Word模板时,对具体编辑哪种类型的文档是未知的。在.NET中,泛型提供了类、结构、接口和方法的模板,定义泛型时的具体类型也是未知的。
例如,可以定义一个泛型类:
class FX
private T x; public FX(){} public FX(T x) {
this.x = x; }
public T num() {
return x; } }
此类表示一种模板,此模板中包含一个字段,2个构造函数,和一个返回字段值的方法,字段和方法的类型都是未知的。
实例化此类可以是:
FX
FX
在3层结构的应用程序中,用到的泛型集合System.Collections.Generic命名空间下的.NET泛型集合类主要是:System.Collections.Generic .List类。查阅msdn的List(Of T) 类,
对泛型集合进行定义和使用。
(1)定义
List<T> 集合名 = new List<T>(); 表示定义1个List类的泛型集合,集合中对象的类型为T。其中的T就是所要使用的类型,既可以是简单类型,如string、int,也可以是用户自定义类型如course类。
(2)属性
Count:获取集合中实际包含的元素数 Item:获取或设置指定索引处的元素 (3)方法
Add(T item):将对象添加到 List 的结尾处。 例如以下代码: class Person {
private string name; private int age; public Person() {}
public Person(string name, int age) {this.name=name; this.age=age;} }
private void button1_Click(object sender, EventArgs e) {
List
int age = Conver …… 此处隐藏:3050字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




