描述
开 本: 32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302455028
项目实战篇以物流管理的基本业务功能为主线,使用Visual Studio 2013、SQL Server 2008等软件开发工具,综合应用Aspect of Programming(面向切面编程,简称AOP)、Inverse of Control(控制反转,简称IOC)等设计思想搭建具有低耦合度、易扩展、易维护的软件开发框架,并在该框架的基础上描述了物流管理系统子模板(包括角色管理、用户管理、接单、调度、返回车辆的报销、产值分析等功能)的分析、设计及开发过程。
本书适合软件工程师及高等院校计算机相关专业的学生阅读,也是网站设计师的参考用书。
部分基础篇
第1章搭建开发环境31.1安装Microsoft SQL Server 2008 R23
1.1.1简介3
1.1.2获取安装包3
1.1.3安装步骤3
1.1.4首次运行13
1.2安装Microsoft Visual
Studio 201315
1.2.1简介15
1.2.2获取安装包15
1.2.3安装步骤16
1.2.4首次运行16
1.3Nuget工具19
1.3.1简介19
1.3.2使用方法19
1.4安装Castle.NET19
1.4.1简介19
1.4.2安装步骤20
本章小结21
第2章ASP.NET MVC22
2.1MVC模式22
2.2认识ASP.NET MVC23
2.2.1ASP.NET MVC概述23
2.2.2MVC的优点24
2.2.3MVC 5的新特性24
2.2.4MVC程序的运行原理27
2.3Hello MVC28
2.4MVC Razor视图引擎34
2.4.1Hello Razor34
2.4.2Razor语法34
2.5MVC项目的结构38ASP.NET框架应用程序实战——软件开发工程师岗前***目录2.6路由39
2.6.1理解路由39
2.6.2路由表40
2.6.3添加路由41
2.6.4路由格式43
2.6.5默认路由43
2.6.6在URL模式中处理可变数量的段44
2.6.7添加路由约束45
2.7模型47
2.7.1模型的创建47
2.7.2模型的绑定49
2.7.3模型的验证54
2.8视图58
2.8.1认识视图58
2.8.2视图的类型58
2.8.3视图的创建61
2.8.4强类型视图62
2.8.5资源的引用63
2.9控制器66
2.9.1认识控制器66
2.9.2控制器的动作67
2.9.3控制器的结果67
2.9.4过滤器69
2.9.5MVC中的页面传值76
2.10HTML及URL帮助器80
2.10.1HTML帮助器80
2.10.2URL帮助器95
2.11实现登录97
本章小结102
第3章JQuery103
3.1JQuery简介103
3.2JQuery的基本功能103
3.2.1引用JQuery类库103
3.2.2选择器104
3.2.3将DOM对象转换成JQuery对象105
3.2.4操作DOM元素的集合106
3.3第三方插件及使用方法111
3.3.1校验控件formValidator111
3.3.2日期控件My97DatePicker119
3.4JQuery综合实例120
3.4.1需求描述120
3.4.2分析与实现120
3.5JQuery AJAX125
3.5.1$.get方法126
3.5.2$.post方法127
3.5.3$.AJAX方法129
3.6JQuery AJAX实例133
3.6.1需求描述133
3.6.2分析与实现133
本章小结138
第4章ORM139
4.1简介139
4.2ORM映射机制139
4.2.1实体映射139
4.2.2关系映射140
4.3映射原理141
4.4映射工具142
4.4.1NHibernate142
4.4.2Castle143
4.4.3Ibatis.NET144
4.4.4Entity Framework145
4.5Castle146
4.5.1准备环境146
4.5.2对象关系映射150
4.5.3延迟加载164
4.5.4实体对象的状态165
4.5.5查询表达式166
4.6综合练习168
4.6.1需求描述168
4.6.2分析与实现168
本章小节172
第二部分项目实战篇
第5章需求分析1755.1业务建模175
5.2需求分析176
5.2.1系统管理员176
5.2.2业务员177
5.2.3调度员178
5.2.4财务人员179
5.2.5决策分析人员179
本章小结180
第6章架构设计181
6.1面向对象设计的原则181
6.1.1单一职责原则181
6.1.2开放封闭原则184
6.1.3里氏替换原则188
6.1.4依赖倒置原则194
6.1.5接口隔离原则198
6.2实体对象模型198
6.2.1贫血模型198
6.2.2充血模型199
6.3架构设计原则200
6.3.1分离界面和实现200
6.3.2针对接口编程并降低耦合度200
6.4搭建系统框架203
6.4.1建立实体层204
6.4.2建立数据访问层205
6.4.3建立业务逻辑层211
6.4.4建立系统核心调试类215
6.4.5搭建UI层217
6.4.6添加项目的引用224
6.4.7配置Castle224
6.4.8建立生成数据库功能的页面227
6.4.9搭建单元测试228
本章小结228
第7章登录(强类型对象生成视图)229
7.1需求描述229
7.2功能设计229
7.3功能实现230
7.3.1模型映射的实现230
7.3.2数据访问层的实现232
7.3.3服务层的实现232
7.3.4业务逻辑层的实现232
7.3.5IOC映射配置233
7.3.6表示层功能的实现233
本章小结239
第8章系统的主页面240
8.1需求描述240
8.2功能设计240
8.3功能实现241
8.3.1创建公用样式241
8.3.2创建布局视图242
8.3.3计算内容区域的宽度和高度244
8.3.4加载功能菜单245
本章小结254
第9章角色权限管理255
9.1需求任务257
9.2功能设计257
9.3功能实现258
9.3.1模型映射的实现258
9.3.2数据访问层的实现260
9.3.3服务层的实现260
9.3.4事务逻辑层的实现261
9.3.5IOC映射的配置261
9.3.6表示层功能的实现261
本章小结286
第10章用户管理287
10.1需求描述287
10.2功能设计287
10.3功能实现288
10.3.1业务逻辑的实现288
10.3.2表示层功能的实现290
本章小结304
第11章接单管理305
11.1需求任务305
11.2功能设计306
11.3功能实现306
11.3.1模型映射的实现306
11.3.2数据访问层的实现315
11.3.3服务层的实现315
11.3.4事务逻辑层的实现316
11.3.5IOC映射的实现317
11.3.6表示层功能的实现318
本章小结330
第12章调度管理331
12.1需求任务331
12.2功能设计331
12.3功能实现332
12.3.1模型映射的实现332
12.3.2数据访问层的实现337
12.3.3服务层的实现337
12.3.4事务逻辑层的实现338
12.3.5IOC映射的实现339
12.3.6表示层功能的实现339
本章小结347
第13章返回车辆的报销348
13.1需求任务348
13.2功能设计348
13.3功能实现349
13.3.1模型映射的实现349
13.3.2数据访问层的实现353
13.3.3服务层的实现354
13.3.4事务逻辑层的实现354
13.3.5IOC映射的实现355
13.3.6表示层功能的实现356
本章小结364
第14章产值分析365
14.1需求任务365
14.2功能设计365
14.3功能实现366
14.3.1模型映射的实现366
14.3.2数据访问层的实现366
14.3.3服务层的实现368
14.3.4事务逻辑层的实现368
14.3.5表示层功能的实现369
本章小结377
第15章软件测试378
15.1软件测试的概念378
15.1.1单元测试任务379
15.1.2软件测试的类型381
15.1.3软件测试过程中的模型384
15.1.4测试步骤387
15.2测试驱动开发387
15.3常用的单元测试工具389
15.3.1NUnit389
15.3.2TestDriven.NET390
15.3.3Visual Studio Test Edition391
15.4VSTS单元测试391
15.4.1添加单元测试项目391
15.4.2配置运行环境391
15.4.3创建单元测试类394
15.4.4测试的断言方法397
15.4.5测试操作399
15.4.6代码覆盖率的结果401
15.5本章小结402
参考文献403
在近的10年里,信息技术产业的发展速度一直保持着较好的发展态势,对我国经济的快速发展有非常重要的影响。同时,信息技术产业在我国“十三五”期间被列为重点发展产业,在这样的市场和政策推动下,.NET(软件开发领域重要的软件开发平台之一)软件工程师的需求量必定大幅增加。 要培养一名合格的软件工程师,不但要掌握大量的计算机基础理论和软件开发专业知识,还必须具备良好的实践动手能力。计算机基础和专业理论知识一般在高等院校的教学过程中获得,实践动手能力则必须在实习、实训或实际工作岗位中才能得到较好地锻炼。目前,我国的高等教育在计算机基础和专业理论知识的教学方面做得非常出色,为软件工程师的人才培养打下了很好的理论基础,但在学生的实践动手能力培养方面,由于受到硬件、师资等各方面的约束,导致各高校无法很好地开展实习、实训环节,使得很大一部分学生的实践动手能力没有得到较好的锻炼,从而导致毕业学生的职位胜任能力低下。另一方面,对于那些即将毕业而又没能接受良好实践动手能力训练的学生来说,如果没有得到合适的、能有效提高实践动手能力的机会,学生无疑只能选择放弃。 软件工程师是一个对逻辑思维要求很强、动手能力要求很高的岗位,要达到软件工程师的任职基本要求,必须要有一本能切实提升实践动手能力的书籍。 本书分为基础篇和项目实战篇两部分。基础篇包括搭建开发环境、ASP.NET MVC、JQuery及ORM等内容,讲解这些知识时列举了大量的案例帮助读者理解基础理论,案例步骤采用Step by Step的方式进行讲解,降低了读者完成案例的难度。在基础篇的基础上,本书的第2部分以实际的商业项目(物流管理系统)开发过程为主线,开发工具使用Visaul Studio 2013,类库采用.NET FrameWork 4.5,并综合应用Castle.NET ORM、Aspect of Programming、Inverse of Control、JQuery、AJAX、MVC等市场上流行的软件开发思想和技术,突出技术与市场需求接轨。 本书不但讲解软件开发技术知识,而且引用了采用面向对象分析与设计和基于框架的软件开发思想,模拟软件公司真实的软件开发平台、环境和开发过程,有利于培养并提高.NET软件工程师的实践动手能力和工程化的软件项目实际操作能力,能较好地解决软件工程师实践动手能力低下的问题。 编写本书的两位作者均具备近10年的软件企业工作经历和6年高校软件工程本科专业人才培养规划、建设和教学实施经验,从技术上能有效地保证本书内容的先进性和实用性,并能从全书的结构组织上保证教学有一定的规律性。本书的第1章、第3~7章和第10章由李发陵编写;第2章、第8~9章、第11~15章由冷亚洪编写;全书由重庆工程学院软件工程专业2014级优秀学生王曾宇同学校稿。 本书的使用对象如下。 (1) 可以作为培训机构、应用型本科或软件类高职人才培养的实训教材。应用型人才培养过程中编程能力模块的学习顺序如下: 面向过程(C语言程序设计基础)软件开发思想→面向对象软件开发思想(C#面向对象程序设计)→Web应用程序设计→框架程序设计。本书基于软件开发框架编制,可作为框架程序设计或实训教学环节的参考书籍。 (2) 可以作为.NET软件工程师的岗前学习教材。本书讲解了市场上广泛应用的软件开发技术,体现了软件企业用人的需求。同时,本书项目实战篇中的功能实现是基于软件企业开发过程而组织的,可以实现软件工程师岗前到上岗阶段的无缝对接。 (3) 可以作为.NET软件工程师能力提升的书籍。目前有大量软件企业为了追求利益化,忽视员工技术的可持续性发展与培养,采用的技术仍停留在多年前的水平,员工技能原地踏步,得不到很好的提升。本书使用Castle.NET、AOP、IOC等市场流行的软件开发技术和规范的软件开发过程,辅助读者建立面向对象和框架软件的开发思想,能较好地起到开拓软件、开发思维,建立规范的工程化软件开发意识,提高技术和技能应用能力的作用。 本书提供案例和项目的全部源代码,可访问清华大学出版社的网站(http://www.tup.tsinghua.edu.cn)进行下载或通过作者的邮箱获取([email protected])。 在此,感谢为本书出版提供帮助的所有人,特别是感谢作者的家人在编稿过程中提供的精神支持和时间便利。 尽管作者竭尽所能保证正文和代码的质量,但由于时间有限,不当之处在所难免,如果读者在阅读过程中发现问题,请及时发邮件给我们,我们将及时予以回复。
作者2017年1月
JQuery3.1JQuery简介JQuery由John Resig、Brandon Aaron 和Jorn Zaefferer创建的,它是JavaScript的一个类库,凭借简洁的语法和跨平台的兼容性,简化了JavaScript的开发过程,其独特而又优雅的代码风格改变了传统JavaScript程序员的设计思想和编写程序的方式。JQuery设计者的目标是: 写的少,做得多(write less, do more)。JQuery的优势如下: (1) JQuery是开源产品,所有代码对外公开且完全免费,无论是商业项目还是企业产品都可以免费地使用。(2) 浏览器的兼容性。它可以支持所有目前正在使用的浏览器,同时它还修正了浏览器之间的差异,达到界面显示上的一致性。(3) 强大的选择器。它的选择器方式是CSS选择器定义的方法,对于Web前端开发人员来说,加大了开发速度,还不用考虑兼容的问题。(4) 完善的AJAX。JQuery将AJAX所有的操作都封装到了一个$.ajax()函数中,使开发者在处理AJAX时更加得心应手。(5) 丰富可靠的事件处理能力。JQuery提供了大量的事件处理函数,我们只要简单的几行代码就可以完成JavaScript几百行的效果。(6) 丰富的插件支持。JQuery通过多年的发展,已扩展出成千上万个操作简单、方便实用、美观大方的插件,开发者引用后即可使用,大大地降低了开发组件的工作量。(7) JQuery有完整的帮助文档,为初学者提供了大量的示例代码,大大地降低了学习的门槛。3.2JQuery的基本功能〖1〗3.2.1引用JQuery类库JQuery提供了很多Javascript类库,这些类库中包含大量的应用程序编程接口(Application Programming Interface,API)。要使用类库中的API,就必须在页面文件中添加对JQuery文件及类库文件的引用。引用步骤如下: ASP.NET框架应用程序实战——软件开发工程师岗前***第3章JQuery(1) 新建一个名为“JQuery练习”的ASP.Net Web应用程序MVC项目。(2) 右击该项目,依次选择“添加(D)”→“新建项(W)…”,在弹出的对话框中依次选择Web→HTML页,并将其命名为“引用JQuery.html”文件。(3) 单击“添加(A)”按钮,Visual Studio 2013将在“JQuery练习”项目中生成一个新的名为“引用JQuery.html”的文件。(4) 打开“引用JQuery.html”文件,在
元素。$(“p.intro”): 选取所有class=”intro” 的
元素。$(“p#demo”): 选取所有id=”demo” 的
元素。2. 使用XPath表达式来选择带有给定属性的元素$(“[href]”): 选取所有带有href属性的元素。$(“[href=’#’]”): 选取所有带有href值且等于“#”的元素。$(“[href!=’#’]”): 选取所有带有href值且不等于“#”的元素。$(“[href$=’.jpg’]”): 选取所有href值以“.jpg”结尾的元素。 【实例】获取页面中id为txtAge的元素并显示其属性id的值,获取页面上所有的段落标签并显示总数。 HTML代码如下:
这是段
这是第二段
这是第三段
实现步骤: (1) 打开“引用JQuery.html”页面。(2) 用上述HTML代码覆盖“”代码。(3) 在
标签中添加JavaScript方法的代码,如下所示。function count(){//alert()用于弹出提示框;//$(“#txtAge”): 获取id为txtAge的控件//attr()为JQuery内置函数,获取id的值alert($(“#txtAge”).attr(“id”)); alert($(“p”).length);//$(“p”)用于获取所有元素,返回一个数组,length用于得到数组的长度}(4) 在标签中为onload事件添加执行函数,该函数将在页面加载完成后执行,代码如下: (5) 右击,选择“在浏览器中查看”命令,程序的运行效果如图31所示。图31JQuery选择器的运行结果3.2.3将DOM对象转换成JQuery对象 文档对象模型(Document Object Model,DOM)是万维网联盟(The World Wide Web Consortium,W3C)组织推荐的处理可扩展标志语言的标准编程接口,它是以面向对象方式描述的文档模型。使用JQuery获得的MOM对象既包含了DOM对象的基本特性又进行了扩展,所以要使用JQeury操作DOM对象前需要对其进行转换,在JQuery中可以使用关键字“$()”将普通HTML DOM对象转换为JQuery DOM对象。如: $(document.getElementById(“msg”))为JQuery对象,转换后可以使用JQuery方法。3.2.4操作DOM元素的集合〖*4/5〗1. 获取集合中的元素对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq、get(n)方法或索引号获取。要注意,eq返回的是JQuery对象,而 get(n)和索引返回的是DOM元素对象。对于JQuery对象只能使用JQuery的方法,而DOM对象只能使用DOM的方法,如要获取第三个
$(“#msg”).text(); //返回id为msg的元素节点的文本内容。$(“#msg”).text(“new content“);//将“new content” 作为普通文本串写入id为msg的元素节点内容中,页面显示“new content”
$(“#msg”).height(); //返回id为msg的元素的高度$(“#msg”).height(“300”); //将id为msg的元素的高度设为300$(“#msg”).width(); //返回id为msg的元素的宽度$(“#msg”).width(“300”); //将id为msg的元素的宽度设为300
$(“input”).val(“); //返回表单输入框的value值$(“input”).val(“test”); //将表单输入框的value值设为test
$(“#msg”).click(); //触发id为msg的元素的单击事件$(“#msg”).click(fn); //为id为msg的元素单击事件添加函数同样,blur、focus、select、submit事件都可以有两种调用方法。3. 集合处理功能 对于JQuery返回的集合内容无须手工循环遍历并对每个对象分别做处理,JQuery已经提供了很方便的方法进行集合的处理。主要包括两种形式: //为索引为0、1、2的p元素分别设定不同的字体颜色$(“p”).each(function(i){this.style.color=[‘#f00′,’#0f0′,’#00f’][ i ]});//实现表格的隔行换色效果$(“tr”).each(function(i){this.style.backgroundColor=[‘#ccc’,’#fff’][i%2]});//为每个p元素增加了click事件,单击某个p元素则弹出其内容$(“p”).click(function(){alert($(this).html())});4. 扩展需要的功能$.extend({min: function(a, b){return a < b?a:b; },max: function(a, b){return a > b?a:b; }});//为JQuery扩展了min、max两个方法alert(“a=10,b=20,max=” $.max(10,20) “,min=” $.min(10,20));//使用扩展的方法(通过“$.方法名”调用) 5. 方法连写所谓连写,就是可以对一个JQuery对象连续调用各种不同的方法。例如: $(“p”).click(function(){alert($(this).html())}).mouseover(function(){alert(‘mouse over event’)}).each(function(i){this.style.color=[‘#f00′,’#0f0′,’#00f’][ i ]});6. 操作元素的样式主要包括以下几种方式。 $(“#msg”).css(“background”);//返回元素的背景颜色$(“#msg”).css(“background”,”#ccc”); //设定元素背景为灰色$(“#msg”).height(300); //设定元素的高度$(“#msg”).width(“200”); //设定元素的宽度$(“#msg”).css({ color: “red”, background: “blue” });//以名值对的形式设定样式$(“#msg”).addClass(“select”); //为元素增加名称为select的类$(“#msg”).removeClass(“select”); //删除元素名称为select的类$(“#msg”).toggleClass(“select”); //如果存在(不存在),就删除(添加)名称为select的类7. 事件处理功能JQuery提供了各种事件处理方法,开发者可以直接为通过JQuery获取的对象添加事件。如: $(“#msg”).click(function(){alert(“good”)});//为元素添加了单击事件
评论
还没有评论。