第1部分 实战前的准备 2
第1章 分层+分布——大型系统的开发策略 2
1.1 典型的三层结构 2
1.2为什么要分层 3
1.3两种分布模式 4
1.3.1客户机/服务器模式 4
1.3.2浏览器/服务器模式 7
1.4物理层与逻辑层的区别 8
1.5回顾与反思 10
第2章 UML——大型系统的建模语言 12
2.1 UML概况——远看UML 12
2.1.1 UML的由来 12
2.1.2 UML的组成 12
2.1.3 UML的功能 13
2.2模型元素——就像自然语言中的“字”或“单词” 13
2.2.1活动者 14
2.2.2用例 14
2.2.3类 14
2.2.4对象 16
2.2.5消息 17
2.2.6接口 17
2.2.7包 17
2.2.8组件 18
2.2.9状态 18
2.2.10活动 19
2.2.11节点 20
2.2.12关联 20
2.2.13泛化 24
2.2.14依赖 24
2.3扩展机制——“字”或“单词”不够用就自己添加 25
2.3.1构造型 25
2.3.2标记值 25
2.3.3约束 26
2.4图——就像机械制图的零件图或部件图 26
2.4.1用例图 27
2.4.2类图 27
2.4.3对象图 28
2.4.4序列图 29
2.4.5协作图 29
2.4.6状态图 30
2.4.7活动图 31
2.4.8组件图 34
2.4.9配置图 35
2.5视图——从一个侧面看到的拟建系统模样 36
2.6回顾与反思 36
第3章 ASP.NET项目开发基础——俯视项目开发 38
3.1项目与解决方案 38
3.1.1什么是项目 38
3.1.2什么是解决方案及如何保存解决方案的设置 39
3.1.3怎样管理解决方案和项目 40
3.2网站 40
3.2.1选择合适的网站类型 41
3.2.2创建网站 41
3.2.2.1创建本地IIS网站 41
3.2.2.2创建文件系统网站 43
3.2.3了解网站的编译方式 44
3.3程序集 44
3.3.1什么是程序集 44
3.3.2怎样使用另一个程序集中的对象 45
3.4命名空间 46
3.4.1声明命名空间——为程序集中的对象定义命名空间 46
3.4.2访问命名空间——在项目中使用程序集中的对象 48
3.5命名空间与程序集之间的关系 54
3.6回顾与反思 54
第4章 ASP.NET编程模型——ASP.NET页面设计方法 57
4.1 ASP.NET工作原理 57
4.2 Web窗体页的组成 57
4.3单文件Web窗体页 58
4.4页面的生存周期 58
4.4.1关于页面框架的无状态性 58
4.4.2什么是往返过程 60
4.4.3重新创建页 61
4.4.4页面的首发与回发 61
4.5页面事件 62
4.6页面指令 63
4.7在Web窗体页之间传递值 64
4.7.1使用Request.Query String将信息追加到URL 65
4.7.2使用Session在页面间传值 67
4.7.3使用Server.Transfer在页间传值 69
4.8回顾与反思 72
第5章 Data Access Application Blockfor.NET——大型系统可以借用的一个访问数据库的通用组件 73
5.1 Data Access Application Block概述 73
5.2使用SqlHelper类执行命令 74
5.3 SqIHelper类的方法和函数 77
5.4回顾与反思 78
第6章 Crystal Reports——使用最广泛的报表工具 79
6.1 Crystal Reports概述 79
6.1.1什么是报表 79
6.1.2什么是Crystal Reports 80
6.1.3为何使用Crystal Reports 80
6.2怎样产生一个Crystal报表 81
6.2.1设计报表 81
6.2.2查看报表 83
6.3系统中装有Crystal Reports 吗 83
6.4参观制表车间 84
6.4.1报表节 85
6.4.2字段资源管理器 86
6.4.3 Crystal Reports工具栏 87
6.4.4 Crystal Reports菜单 87
6.4.5预览选项卡 88
6.5怎样创建报表 88
6.6选择哪种方式查看报表 90
6.6.1查看器控件 90
6.6.2四种对象模型——通过编程方式与报表进行交互 92
6.6.3使用哪种对象模型 93
6.6.4不要混用对象模型 93
6.7报表代码在哪里编写 94
6.8部署 96
6.8.1部署项目中包含哪些组件 96
6.8.2怎样创建部署项目 97
6.8.3怎样部署网站 100
6.9回顾与反思 100
第7章 VB.NET与C#比较——学习双语的捷径 101
7.1 VB.NET与C#的异同分析 101
7.2 VB.NET与C#的语法比较 102
7.3回顾与反思 113
第8章 创建一个简单的ASP.NET三层结构+Crystal Reports的应用程序——实战前的演习 114
8.1软件做什么——为老师提供成绩查询 114
8.2软件怎么做 114
8.2.1设计逻辑结构 115
8.2.2选择分布模式 115
8.2.3选择开发环境 115
8.2.4选择报表数据源 115
8.2.5选择报表对象模型 116
8.2.6设计程序结构 116
8.2.7规划目录结构 118
8.3准备数据 118
8.4创建网站 119
8.4.1创建Example_vb网站 119
8.4.2创建Example_cs网站 119
8.5数据层编码——编写存储过程 119
8.6中间业务层编码——编写实体类 119
8.6.1创建类——StudentmarkCls 120
8.6.2添加默认构造函数 121
8.6.3添加专用字段 121
8.6.4创建新的构造函数 125
8.6.5添加函数 126
8.6.6导入命名空间 127
8.7表现层编码——建立报表和Web页 127
8.7.1创建报表 127
8.7.1.1创建报表并连接到StudentmarkCls对象 127
8.7.1.2修饰报表外观 131
8.7.1.3预览报表 133
8.7.1.4筛选数据 133
8.7.1.5进一步修饰报表外观 136
8.7.2创建Web页 138
8.7.2.1设计要点 138
8.7.2.2添加CrystalReportViewer控件 138
8.7.2.3添加对象变量 139
8.7.2.4编写ConfigureCrystalReports() 140
8.7.2.5编写PopulateStudentmarkValuesArrayList() 141
8.7.2.6编写Page_Init() 142
8.7.2.7添加Imports/Using语句 142
8.8测试 143
8.9回顾与反思 144
第2部分 创新基金管理信息系统项目实战 148
第9章 建立用例模型——描述系统做什么 148
9.1系统描述 148
9.2找出活动者 149
9.2.1怎样找 149
9.2.2找出活动者 150
9.3找出用例 150
9.3.1怎样找 151
9.3.2找出用例 151
9.4画出用例图 153
9.5用例描述 154
9.5.1定制用例模板 154
9.5.2用例描述 154
9.6回顾与反思 158
第10章 建立类模型——描述谁是满足用例的责任者 159
10.1找出类 159
10.1.1怎样找 159
10.1.2找出类 159
10.2找出类与类之间的关系 160
10.3画出类图 161
10.4找出类的属性 162
10.4.1 Project类 162
10.4.2 Invoice类 162
10.4.3 User类 163
10.5找出类的操作 163
10.6回顾与反思 163
第11章 建立动态模型——描述系统怎么做 165
11.1为什么选择序列图 165
11.2设计序列图 166
11.2.1登录 166
11.2.2查看报销条件 167
11.2.3注册用户 168
11.2.4修改用户信息 169
11.2.5确立项目 169
11.2.6修改项目 171
11.2.7设定报销条件 172
11.2.8录入票据 173
11.2.9送票据到财务室 174
11.2.10报销票据 176
11.2.11检索票据 178
11.2.12汇总票据 179
11.2.13汇总项目 180
11.2.14修改密码 182
11.3回顾与反思 183
第12章 规划系统结构——多角度看系统构成 184
12.1逻辑结构——系统分析员想象中的系统模样 184
12.2实现模型——系统设计员看到的系统代码框架 184
12.2.1设计方法 185
12.2.2模型框架 185
12.2.3组件图 186
12.3页面结构——系统程序员眼中的系统模样 186
12.4回顾与反思 189
第13章 建立数据模型——描述数据库结构 190
13.1设计方法 190
13.2关系数据库的几个术语 191
13.3类之间多重性向关系数据库转换的规则 191
13.4设计数据模型 192
13.4.1将类映射为关系数据表 192
13.4.2将类的属性映射为表的列 192
13.4.3将关联映射到关系数据库 194
13.4.4数据模型 195
13.5回顾与反思 196
第14章 数据库实现——将数据模型变为实际的数据库 197
14.1创建数据库 197
14.2创建数据表 199
14.2.1数据结构设计 199
14.2.2创建数据表 202
14.3设置身份验证模式 204
14.4注册系统管理员 205
14.5回顾与反思 205
第15章 开始编码——搭建施工现场并开始施工 206
15.1创建网站 206
15.1.1创建Finnance_vb网站 206
15.1.2创建Finnance_cs网站 206
15.2引用SQLHelper类——实现数据访问层 206
15.2.1添加SQLHelper类代码文件 207
15.2.2修改配置文件Web.config 208
15.3创建级联样式表 209
15.4创建用户控件 209
15.4.1新建文件夹 210
15.4.2创建用户控件 210
15.5创建母版页 215
15.6回顾与反思 218
第16章 用户登录页编码——为系统制作锁 219
16.1页面样式 219
16.2设计要点 219
16.3数据库层 220
16.4中间业务层 221
16.5表现层 223
16.5.1创建登录页 223
16.5.2页面布局 223
16.5.3添加控件和文本 224
16.5.4对控件编程 226
16.6回顾与反思 228
第17章 首页编码——为系统制作大门 229
17.1页面样式 229
17.2设计要点 229
17.3创建首页 230
17.4页面布局 231
17.5对控件编程 231
17.6回顾与反思 233
第18章 后台管理编码——建立内部管理环境 234
18.1注册用户 234
18.1.1页面样式 234
18.1.2设计要点 234
18.1.3创建注册用户页 236
18.1.4对控件编程 238
18.1.4.1 ValidateUser()函数——验证正在注册的用户是否已经被注册 238
18.1.4.2 butnContinue_Click()过程——注册新用户 239
18.2修改用户信息 240
18.2.1页面样式 241
18.2.2设计要点 241
18.2.3编写存储过程 GetAllUser——查询中排除不需要的记录 241
18.2.4创建修改用户信息页 242
18.2.5对控件编程 246
18.2.5.1 Page_Load()过程——将控件加载到页面 246
18.2.5.2 butnOk_Click()过程——重定向到首页 247
18.3确立项目 248
18.3.1页面样式 248
18.3.2设计要点 248
18.3.3编写存储过程GetUnit——从结果集中剔出重复的部门名称 249
18.3.4创建确立项目页 249
18.3.5对控件编程 253
18.3.5.1 GetCtrlValue()过程——从页面获取新项目的数据 253
18.3.5.2 Page_Load()过程——将控件加载到页面 256
18.3.5.3 butnContinue_Click()过程——保存项目信息 258
18.4修改项目 259
18.4.1页面样式 259
18.4.2设计要点 260
18.4.3创建修改项目页 260
18.4.4对控件编程 267
18.5设定报销条件 270
18.5.1页面样式 270
18.5.2设计要点 270
18.5.3创建设定报销条件页 271
18.5.4对控件编程 273
18.5.4.1 Page_Load()过程——将控件加载到页面 273
18.5.4.2 butnOk_Click()过程——保存修改过的报销条件 274
18.6回顾与反思 276
第19章 业务处理编码——建立业务处理环境 277
19.1录入票据 277
19.1.1页面样式 277
19.1.2设计要点 277
19.1.3编写存储过程GetProjectList——精确检索用空格分隔的字符串 280
19.1.4创建录入票据页 280
19.1.5对控件编程 287
19.1.5.1 ShowProject()过程——为显示项目信息作准备 287
19.1.5.2 SumInvoice()函数——合计票据金额 289
19.1.5.3 Page_Load()过程——将控件加载到页面 290
19.1.5.4 DropDownListl_SelectedIndexChanged()过程——显示项目信息 293
19.1.5.5 DropDownList2_SelectedIndexChanged()过程——按付款方式决定需要录入的票据指标 293
19.1.5.6 DropDownList6_SelectedIndexChanged()过程——决定是否录入票据的“附通知”指标 294
19.1.5.7 butnContinue_Click()过程——保存票据 295
19.2送财务室 297
19.2.1页面样式 297
19.2.2设计要点 298
19.2.3编写存储过程GetAlllnvoice——检索项目已经或将要报销的票据 298
19.2.4创建送财务室页 298
19.2.5对控件编程 306
19.2.5.1 CtrlCondion()过程——对录入的票据进行审核 306
19.2.5.2 Page_LoadComplete()过程——获取项目已录入的全部票据 312
19.2.5.3 DropDownListl_SelectedIndexChanged()过程——隐藏或显示panelInvoice和labInvoice控件 313
19.2.5.4 butnCheck_Click()过程——调用CtrlCondion()过程审核已录入的票据 315
19.3审核报销 315
19.3.1页面样式 316
19.3.2设计要点 316
19.3.3编写存储过程UpdateExpense——合计项目的已报销金额 317
19.3.4事务处理 317
19.3.5页面布局 319
19.3.6验证日期格式 322
19.3.7对控件编程 322
19.3.7.1 ValidateInvoiceNum()函数——验证票据是否有凭证号 322
19.3.7.2 Page_Load()过程——将控件加载到页面 323
19.3.7.3 Page_LoadComplete()过程——获取已送财务室的票据、隐藏或显示有关控件 328
19.3.7.4 DropDownList1_SelectedIndexChanged()过程——选择要报销的项目后所作的处理 329
19.3.7.5 DropDownList2_SelectedIndexChanged()过程——隐藏或显示有关控件 334
19.3.7.6 butnSubmit_Click()过程——报销票据 336
19.3.7.7 butnUntread_Click()过程——将票据退回原报销人 338
19.4回顾与反思 338
第20章 数据检索编码——用Crystal Reports查阅票据和项目信息 339
20.1设计要点 339
20.1.1主要问题 339
20.1.2实现方案 339
20.2票据检索 341
20.2.1页面样式 342
20.2.2生成检索条件表达式 342
20.2.3用检索条件筛选记录 361
20.2.4为报表准备数据 362
20.2.5创建并显示报表 365
20.2.5.1创建报表 365
20.2.5.2显示报表 366
20.3票据汇总 371
20.3.1页面样式 371
20.3.2生成检索条件和分组指标表达式 373
20.3.3用检索条件和分组指标表达式准备记录 384
20.3.4为报表准备数据 385
20.3.5创建并显示报表 385
20.4项目汇总 386
20.4.1页面样式 386
20.4.2生成分组指标表达式 387
20.4.3用分组指标表达式准备记录 389
20.4.4为报表准备数据 389
20.4.5 创建并显示报表 389
20.5回顾与反思 390
第21章 修改密码页编码——为用户更换钥匙 391
21.1页面样式 391
21.2设计要点 391
21.3数据库层 392
21.4中间业务层 392
21.5表现层 393
21.5.1创建修改密码页 393
21.5.2页面布局 393
21.5.3添加控件和文本 394
21.5.4对控件编程 395
21.5.4.1 Button1_Click()过程——修改密码 395
21.5.4.2 Button2_Click()过程——取消修改密码 397
21.6回顾与反思 397
第22章 系统部署——装入集装箱到目标现场安装 398
22.1 附加数据库 398
22.1.1复制数据库文件 398
22.1.2附加到服务器 399
22.2部署项目 400
22.2.1确定包含的组件 400
22.2.2创建Web安装项目 400
22.2.3部署网站 403
22.2.4部署后更改数据库连接配置 405
22.3回顾与反思 407