《精通Visual C# 2005-语言基础、数据库系统开发、Web开发》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:王石编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2007
  • ISBN:7115139288
  • 页数:578 页
图书介绍:本书介绍了VS.NET平台下的C#编程技术。

1.1.1 微软公司的梦想 3

1.1.2 .NET能做什么 3

第1篇 C#编程基础 3

第1章 C#与.NET Framework简介 3

1.1 什么是.NET Framework 3

1.1.3 认识.NET 4

1.2.1 C#与.NET 5

1.2 什么是C# 5

1.2.2 与其他语言的比较 6

1.2.3 C#的特点 7

1.3.1 Visual Studio.NET开发环境 8

1.3 第一个C#程序:Hello World 8

1.3.2 第一个Windows Console程序 9

代码1-1 控制台HelloWorld示例:HelloWorld.cs 10

1.3.3 第一个Windows Form程序 11

1.3.4 第一个ASP.NET程序 12

1.3.5 源代码简短分析 14

温故知新 15

2.1.1 值类型 17

第2章 C#程序设计基础 17

2.1 数据类型 17

2.1.2 引用类型 20

2.1.3 类型转换 21

2.1.4 装箱和拆箱 22

2.2.2 声明和使用变量 23

2.2 变量和常量 23

2.2.1 命名变量 23

2.2.3 声明和使用常量 24

2.3.3 赋值运算符 25

2.3 运算符 25

2.3.1 算数运算符 25

2.3.2 字符串运算符 25

2.3.6 其他运算符 26

2.3.4 逻辑运算符 26

2.3.5 位运算符 26

2.4.1 使用if语句实现分支 27

2.3.7 运算符的优先级 27

2.4 流程控制 27

代码2-1 if语句示例:Class 1.cs 28

2.4.2 使用switch语句实现分支 29

2.4.3 使用while语句实现循环 30

代码2-2 switch语句示例:Class 1.cs 30

2.4.4 使用for语句实现循环 31

代码2-3 while语句示例:Class 1.cs 31

2.4.5 使用break/continue控制循环 32

代码2-4 for语句示例:Class 1.cs 32

代码2-5 break continue语句示例:Class 1.cs 32

2.4.6 使用#define进行条件编译 33

2.5.1 用类搭建程序 33

2.5 程序的结构 33

代码2-6 #define语句示例:Class 1.cs 33

2.5.2 使用命名空间 35

代码2-7 namespace语句示例:Class 1.cs 35

2.6 异常处理 36

2.5.3 寻找程序的入口 36

代码2-8 try、catch和finally语句示例:Class 1.cs 37

温故知新 38

第3章 类 39

3.1.1 声明类 39

3.1 定义类 39

代码3-1 public和private示例:Class 1.cs 41

3.1.2 声明类的静态特征 41

3.1.3 声明类的动态行为 42

代码3-2 声明方法示例:Class 1.cs 42

3.1.4 创建类实例 43

3.1.5 继承类 43

3.2 Visual Studio.NET中的OOP工具 44

3.2.1 使用Class View窗口 44

代码3-3 类继承示例:Class 1.cs 44

3.2.2 使用Object Browser 45

3.3.1 域和属性 46

代码3-4 域和属性示例:Class 1.cs 46

3.3 属性详谈 46

3.3.2 静态属性 47

代码3-5 静态属性示例:Class 1.cs 47

3.3.3 重载属性 48

代码3-6 属性重载示例:Class 1.cs 48

3.4.1 方法的参数 49

3.4 方法详谈 49

代码3-7 使用ref传递引用参数示例:Class 1.cs 50

代码3-8 使用out传递输出参数示例:Class 1.cs 50

代码3-9 使用params传递多个参数示例:Class 1.cs 51

3.4.3 使用析构函数 52

3.4.2 使用构造函数 52

代码3-10 构造函数示例:Class 1.cs 52

3.4.4 使用静态方法 53

代码3-12 静态方法示例:Class 1.cs 53

代码3-11 析构函数示例:Class 1.cs 53

3.4.5 重载方法 54

代码3-13 方法重载示例:Class 1.cs 54

3.4.6 访问父类方法 55

代码3-14 访问父类方法示例:Class 1.cs 55

3.4.7 重载运算符 56

代码3-15 运算符重载示例:Class 1.cs 56

温故知新 57

第4章 抽象类、多态及接口 59

4.1 抽象类 59

4.1.1 什么是抽象类 59

4.1.2 声明抽象类 60

4.1.3 实现抽象方法 60

代码4-2 实现运动员抽象方法:Class 1.cs 60

代码4-1 定义运动员抽象类:Class 1.cs 60

4.2 多态 61

代码4-3 使用多态性示例:Class 1.cs 62

4.2.2 多态的实现 62

4.2.1 什么是多态 62

4.3.1 什么是接口 63

4.3.2 声明接口 63

4.3 接口 63

4.2.3 区分多态和重载 63

代码4-4 声明IShape接口:Class 1.cs 64

4.3.3 实现接口 64

代码4-5 继承IShape接口实现矩形类:Class 1.cs 65

代码4-6 使用接口实现多态示例:Class 1.cs 65

温故知新 66

第5章 调试和异常处理 67

5.1.1 使用Visual Studio.NET错误报告 67

5.1 程序调试技术 67

代码5-1 具有逻辑错误的代码示例:Class 1.cs 68

5.1.2 寻找逻辑错误 68

5.1.3 单步执行程序 69

5.1.4 设置断点 69

5.1.5 在哪里设置断点 70

代码5-2 未处理异常的代码示例 71

代码5-3 使用try-catch处理异常的代码示例 71

5.2.1 使用try-catch-finally 71

5.2 异常处理 71

代码5-4 结构良好的矩形类实现 72

5.2.2 使用系统日志 72

5.3 高质量编码标准 72

5.3.1 好的编码结构 72

5.3.2 好的注释风格 73

代码5-6 具有良好注释的矩形类实现 73

代码5-5 结构混乱的矩形类实现 73

5.3.3 好的命名规范 75

代码5-7 方法功能独立的矩形类实现 75

5.3.4 避免文件过大 75

代码5-8 方法功能混乱的矩形类实现 76

代码5-9 异常处理的方法示例 76

5.3.5 使用异常处理 76

温故知新 77

代码5-10 异常未处理的方法示例 77

第2篇 C#核心技术 81

第6章 C#.NET类库框架 81

6.1 .NET命名空间框架 81

6.2 编程基础命名空间 82

6.3 数据操作命名空间 82

6.4 Web应用命名空间 83

6.6 组件模型命名空间 84

6.5 Windows应用命名空间 84

6.8 安全控制命名空间 85

6.7 框架服务命名空间 85

6.10 工程配置命名空间 86

6.9 网络应用命名空间 86

6.11 全球/本地化命名空间 87

6.12 反射命名空间 87

温故知新 88

第7章 字符串操作 89

7.1 静态串String 89

7.1.1 比较字符串 90

代码7-1 使用Compare比较两个字符串示例:Class 1.cs 90

代码7-4 使用==和!=比较两个字符串示例:Class 1.cs 91

代码7-3 使用Equals比较两个字符串示例:Class 1.cs 91

7.1.2 定位字符和子串 91

代码7-2 使用CompareTo比较两个字符串示例:Class 1.cs 91

代码7-5 使用StartsWith判断首字符串示例:Class 1.cs 92

代码7-6 寻找子串位置示例:Class 1.cs 93

7.1.3 格式化字符串 93

代码7-7 设置字符串格式示例:Class 1.cs 93

7.1.4 连接字符串 94

代码7-10 使用“+”连接字符串示例:Class 1.cs 94

代码7-9 使用Join连接字符串示例:Class 1.cs 94

代码7-8 使用Concat连接字符串示例:Class 1.cs 94

7.1.5 分裂字符串 95

7.1.6 插入和填充字符串 95

代码7-11 使用Split分裂字符串示例:Class 1.cs 95

代码7-12 使用Insert插入字符串示例:Class 1.cs 95

代码7-14 使用Remove删除字符串示例:Class 1.cs 96

代码7-13 使用PadLeft填充字符串示例:Class 1.cs 96

7.1.7 删除和剪切字符串 96

代码7-15 使用Trim去掉首尾的特殊符号示例:Class 1.cs 97

代码7-16 使用Copy复制字符串示例:Class 1.cs 97

7.1.8 复制字符串 97

代码7-17 使用CopyTo复制字符串示例:Class 1.cs 97

7.2 动态串StringBuilder 98

代码7-18 使用Replace替换字符串示例:Class 1.cs 98

7.1.9 替换字符串 98

7.1.10 更改大小写 98

代码7-19 使用ToUpper更改字符串大小写示例:Class 1.cs 98

7.1.11 String小结 98

7.2.1 声明StringBuilder串 99

7.2.2 设置StringBuilder容量 99

7.2.3 追加操作 100

代码7-20 使用Append追加字符串示例:Class 1.cs 100

代码7-23 使用Remove删除字符串示例:Class 1.cs 101

7.2.4 插入操作 101

7.2.5 删除操作 101

7.2.6 替换操作 101

代码7-21 使用AppendFormat追加特定格式的字符串示例:Class 1.cs 101

代码7-22 使用Insert插入字符串示例:Class 1.cs 101

7.3.1 字符编码概述 102

代码7-24 使用Replace替换字符串示例:Class 1.cs 102

7.2.7 与String比较 102

7.3 字符串编码 102

7.3.2 使用字符编码类 103

代码7-25 显示编码形式示例:Class 1.cs 104

7.4 使用正则表达式 105

7.4.1 正则表达式简介 106

7.4.2 使用Regex类 106

7.4.3 构造正则表达式 107

代码7-26 验证电子邮件地址示例:Class 1.cs 107

7.4.4 示例:验证URL 109

代码7-27 验证URL示例:Class 1.cs 110

温故知新 110

8.1.1 数组的概念 111

第8章 数组 111

8.1 C#数组简介 111

代码8-1 输出数组元素:Class 1.cs 112

8.1.2 多维数组 112

8.1.3 创建C#数组 113

8.2 使用数组 114

8.2.1 System.Array类 114

8.2.2 访问数组元素 115

代码8-2 输出交错数组元素:Class 1.cs 116

代码8-3 使用GetValue输出二维数组元素示例:Class 1.cs 117

代码8-4 利用for语句遍历数组示例:Class 1.cs 117

8.2.3 遍历数组 117

8.2.4 同步数组 118

代码8-7 利用Sort排序数组示例:Class 1.cs 118

代码8-5 利用foreach遍历数组示例:Class 1.cs 118

代码8-6 利用lock同步数组示例:Class 1.cs 118

8.2.5 数组排序 118

代码8-8 利用Sort实现数组多关键字排序示例:Class 1.cs 119

8.2.6 查找元素 120

代码8-9 利用BinarySearch搜索数组元素示例:Class 1.cs 120

代码8-10 利用Contains判断数组是否包含某个元素示例:Class 1.cs 120

8.2.7 反转数组 121

代码8-11 利用Reverse反转数组示例:Class 1.cs 121

8.2.8 复制数组 122

代码8-12 利用Copy复制数组示例:Class 1.cs 122

8.2.9 动态创建数组 123

代码8-13 利用CopyTo复制数组示例:Class 1.cs 123

代码8-14 利用CreateInstance动态创建数组示例:Class 1.cs 123

8.2.10 综合示例 124

代码8-15 图书类Book的实现代码:Class 1.cs 125

代码8-16 按图书名显示图书实现代码:Class 1.cs 126

代码8-17 BookList类完整实现代码:Class 1.cs 126

代码8-18 Main函数:Class 1.cs 127

温故知新 128

第9章 集合 129

9.1 System.Collections命名空间 129

9.2 ArrayList类 130

9.2.2 添加元素 131

9.2.1 创建列表 131

代码9-2 向ArrayList中插入元素示例:Class 1.cs 132

9.2.3 插入元素 132

代码9-1 向ArrayList中添加元素示例:Class 1.cs 132

9.2.4 删除元素 133

代码9-3 从ArrayList中删除元素示例:Class 1.cs 133

9.2.5 简单排序 133

代码9-4 使用Sort方法对列表排序示例:Class 1.cs 134

9.2.6 复杂排序 134

代码9-5 使用Compare方法实现逆比较示例:Class 1.cs 134

代码9-6 使用BinarySearch方法查找元素示例:Class 1.cs 135

9.2.7 查找元素 135

代码9-7 使用foreach遍历列表示例:Class 1.cs 136

代码9-8 使用GetEnumerator遍历列表示例:Class 1.cs 136

9.2.8 遍历列表 136

9.3.1 创建队列 137

9.3 Queue类 137

9.3.2 元素入队 138

代码9-9 使用Enqueue元素入队示例:Class 1.cs 138

9.3.3 元素出队 138

代码9-10 使用Dequeue元素出队示例:Class 1.cs 139

9.4 Stack类 139

9.4.1 创建堆栈 139

9.4.2 元素入栈 140

代码9-11 使用Push元素入栈示例:Class 1.cs 140

9.4.3 元素出栈 140

代码9-12 使用Pop元素出栈示例:Class 1.cs 140

9.5 Hashtable类和SortedList类 141

9.5.1 Hashtable 141

9.5.2 构造普通散列表 142

代码9-13 使用Hashtable对象实现散列表示例:Class 1.cs 142

代码9-14 使用Hashtable对象实现散列表示例:Class 1.cs 143

代码9-15 搜索散列表示例:Class 1.cs 144

9.5.3 SortedList 144

9.5.4 搜索排序散列表 144

代码9-16 搜索散列表调用示例:Class 1.cs 146

温故知新 147

10.1.1 数据访问技术 149

第10章 数据操作 149

10.1 ADO.NET概述 149

10.1.2 System.Data命名空间 150

10.2 连接数据库 151

10.2.1 SqlConnection类 151

10.2.2 设置连接参数 152

10.2.3 创建SQL Server连接 152

代码10-1 创建SQL Server连接示例:Class 1.cs 153

代码10-2 关闭SQL Server连接示例:Class 1.cs 153

10.2.4 断开SQL Server连接 153

10.2.5 管理其他数据源连接 153

10.3 与数据库交互 154

10.3.1 使用SqlCommand提交增删改命令 154

代码10-3 使用SqlCommand对象修改数据示例:Class 1.cs 155

10.3.2 使用SqlCommand获取查询命令 155

代码10-4 使用SqlCommand对象查询数据示例:Class 1.cs 156

10.3.3 使用DataAdapter提交查询命令 156

代码10-5 使用SqlDataAdapter对象提交查询示例:Class 1.cs 157

10.4.1 了解数据集 157

10.4 管理内存数据 157

10.4.2 使用DataTable实现内存表 158

代码10-6 构造DataTable对象示例:Class 1.cs 160

代码10-7 输出DataTable对象中的数据示例:Class 1.cs 161

10.4.3 使用DataSet管理数据 162

代码10-8 使用DataSet管理内存数据示例:Class 1.cs 163

10.4.4 使用DataReader获取只读数据 164

代码10-9 输出DataSet中的DataTable示例:Class 1.cs 164

代码10-10 使用SqlDataReader查询数据示例:Class 1.cs 165

10.4.5 比较DataSet和DataReader 166

10.5.1 使用File对象操作文件 166

10.5 文件操作 166

代码10-11 使用File对象创建文件示例:Class 1.cs 167

代码10-12 使用File对象拷贝文件示例:Class 1.cs 167

10.5.2 使用StreamWriter写入文件 168

代码10-13 使用File对象移动文件示例:Class 1.cs 168

代码10-14 使用File对象删除文件示例:Class 1.cs 168

10.5.3 使用SteamReader读取文件 169

代码10-15 使用StreamWriter对象写文件示例:Class 1.cs 169

代码10-16 使用StreamReader对象读文件示例:Class 1.cs 170

温故知新 171

11.1.1 理解XML 173

第11章 XML编程 173

代码11-1 XML通讯录示例:\TestDocs\test.xml 173

11.1 .NET框架中的XML 173

11.1.2 XML文档对象模型(DOM) 174

11.1.3 System.Xml命名空间 175

代码11-2 使用XmlDocument对象读取XML示例:Class 1.cs 176

11.2 读取XML文档 176

11.2.1 使用XmlDocument读取XML 176

11.2.2 使用XmlReader读取XML 176

代码11-3 使用XmlTextReader对象读取XML示例:Class 1.cs 178

11.2.3 使用XmlNode读取节点 179

代码11-4 使用XmlDocument对象读取XML示例:Class 1.cs 181

11.3 使用XPath检索XML 181

11.3.1 基本XPath表达式 182

11.3.2 限定检索范围 182

11.3.3 使用函数设置检索条件 183

11.3.4 使用运算符设置检索条件 184

11.3.5 使用通配符模糊匹配 184

11.3.6 综合示例 185

11.4.1 创建新DOM节点 186

11.4 修改XML文档 186

11.4.2 为DOM节点创建属性 187

代码11-5 使用xpath插入XML节点示例:Class 1.cs 187

代码11-6 为DOM节点创建属性示例:Class 1.cs 187

代码11-7 修改XML节点值示例:Class 1.cs 188

11.4.3 修改DOM节点 188

代码11-8 删除XML节点值示例:Class 1.cs 189

11.4.4 删除DOM节点 189

11.5.1 使用DataSet加载XML数据 190

代码11-9 将DOM写入XML文档示例:Class 1.cs 190

代码11-10 将XML文档加载到DataSet示例:Class 1.cs 190

11.4.5 将DOM树写入XML文档 190

11.5 集成DataSet 190

11.5.2 使用XmlDataDocument加载关系数据 192

代码11-11 用XML加载关系数据表示例:Class 1.cs 192

温故知新 193

第3篇 开发网络程序 197

12.1 什么是ASP.NET 197

第12章 ASP.NET概述 197

12.1.1 页面从静态到动态 197

12.1.2 ASP.NET的诞生 199

12.1.3 ASP.NET能做什么 199

12.1.4 IIS管理ASPX页面 200

12.1.5 ASP.NET的优点 201

12.2 ASP.NET语法 202

12.2.1 剖析ASPX页面 202

12.2.2 使用〈%〉嵌入代码 202

代码12-1 使用〈%〉嵌入C#代码示例:Tag1 203

12.2.3 使用〈Script〉...〈/Script〉嵌入代码 204

代码12-2 使用〈Script〉嵌入C#代码示例:Tag2 204

代码12-3 使用控件示例:Example_Controls 206

12.2.4 使用Server控件 206

12.2.5 使用〈%--注释--%〉 207

12.2.6 ASP.NET 2.0新特性 207

12.2.8 使用〈%@Import%〉引入类库 208

12.2.7 用〈%@Page...%〉设置页面属性 208

12.3.2 使用〈%@CodeFile%〉绑定代码 209

代码12-4 ASPX页面的结构示例:HelloWorld_ASPNET 209

12.3 代码绑定技术 209

12.3.1 分离显示功能和逻辑功能 209

代码12-5 CS代码文件示例:HelloWorld_ASPNET 210

12.3.3 控件事件接收用户输入 211

温故知新 212

第13章 ASP.NET核心对象 215

13.1 Page类 215

13.1.1 Page类概述 216

13.1.2 重定位页面 217

13.2.1 向浏览器输出信息 219

13.2 ASP.NET核心对象 219

13.2.2 获取用户输入 220

13.2.3 获取服务器信息 223

13.3 共享数据 225

13.3.1 在程序级共享数据 225

13.3.2 在用户级共享数据 226

13.4 综合示例 228

13.4.1 输出文件内容 228

13.4.2 使用Global.asax 228

代码13-1 使用Global类成员示例 229

13.4.3 验证用户身份 230

温故知新 231

14.1 HtmlControls概述 233

第14章 HTML服务器控件 233

14.2 输入控件:HtmlInput 235

14.2.1 按钮:HtmlInputButton 235

14.2.2 单行文本框:HtmlInputText 237

14.2.3 多行文本框:HtmlTextArea 239

14.2.4 隐藏文本框:HtmlInputHidden 240

代码14-2 HtmlInputHidden控件示例:Button2_ServerClick方法 241

代码14-1 HtmlInputHidden控件示例:Button1_ServerClick方法 241

14.2.5 文件框:HtmlInputFile 241

14.2.6 复选框:HtmlInputCheckBox 243

代码14-3 HtmlInputFile控件示例:Button1_ServerClick方法 243

代码14-4 HtmlInputCheckBox控件示例:Button1_ServerClick方法 245

14.2.7 单选框:HtmlInputRadioButton 245

14.3.1 窗体:HtmlForm 246

14.3 容器控件:HtmlContainer 246

14.3.2 表格:HtmlTable 247

代码14-5 HtmlTable控件示例:Table1 249

14.3.3 列表框/下拉框控件:HtmlSelect 250

代码14-6 HtmlSelect控件示例:Button1_ServerClick方法 252

14.4 图像控件:HtmlImage 253

温故知新 255

代码14-7 HtmlImage控件示例:Button1_ServerClick方法 255

15.1 WebControls概述 257

第15章 Web服务器控件 257

15.2.1 按钮:Button 259

15.2 输入控件 259

代码15-1 Button控件Command事件示例:WebForm 1.aspx 261

代码15-2 Button控件Command事件示例:WebForm 1.aspx.cs 261

15.2.2 复选框:CheckBox 263

代码15-3 CheckBox控件示例:WebForm 1.aspx 264

代码15-4 CheckBox控件示例:WebForm 1.aspx.cs 264

15.2.3 单选框:RadioButton 265

15.2.4 超级链接:HyperLink 266

15.2.5 链接按钮:LinkButton 268

15.2.6 图像:Image 269

15.2.7 图像按钮:ImageButton 271

15.2.8 文本框:TextBox 271

15.2.9 图像地图:ImageMap 272

15.2.10 项列表:BulletedList 274

15.3 列表控件 276

15.3.1 下拉框:DropDownList 277

15.3.2 列表框:ListBox 279

代码15-5 DropDownList控件示例:WebForm 1.aspx.cs 279

15.3.3 复选框列表:CheckBoxList 281

代码15-6 ListBox控件示例:WebForm 1.aspx.cs 281

代码15-7 CheckBoxList控件示例:WebForm 1.aspx.cs 283

代码15-8 RadioButtonList控件示例:WebForm 1.aspx.cs 284

15.3.4 单选框列表:RadioButtonList 284

15.4.1 面板:Panel 285

15.4 容器控件 285

代码15-9 Panel控件示例:WebForm 1.aspx.cs 286

15.4.2 表格:Table 287

代码15-10 Table控件示例:WebForm 1.aspx.cs 289

代码15-11 Table控件示例:WebForm 1.aspx.cs 290

15.5 其他控件 291

15.5.1 广告栏控件:AdRotator 291

代码15-12 Table控件示例:WebForm 1.aspx.cs 291

代码15-13 AdRotator控件示例:adXm 1.xml 292

15.5.2 日历控件:Calendar 293

代码15-14 Calendar控件示例:WebForm 1.aspx.cs 295

15.6 用户控件 296

15.6.1 什么是用户控件 296

15.6.2 创建用户控件 296

15.6.3 定义用户控件属性 298

15.6.4 处理用户控件事件 299

温故知新 300

16.1 数据绑定概述 301

第16章 数据绑定技术 301

16.2 列表控件 302

16.2.1 绑定DataSet到DropDownList 302

代码16-1 DropDownList数据绑定:InitData@WebForm 1.aspx.cs 303

代码16-2 DropDownList数据绑定:Page_Load@WebForm 1.aspx.cs 304

16.2.2 绑定DataReader到ListBox 304

代码16-3 ListBox数据绑定:InitData@WebForm 1.aspx.cs 305

16.2.3 绑定DataTable到CheckBoxList 306

16.2.4 绑定HashTable到RadioButtonList 307

代码16-4 CheckBoxList数据绑定:InitData@WebForrn 1.aspx.cs 307

代码16-5 RadioButtonList数据绑定:GetHashTable@WebForm 1.aspx.cs 308

代码16-6 CheckBoxList数据绑定:InitData@WebForm 1.aspx.cs 309

16.3 网格视图:GridView 310

16.3.1 比较DataGrid和GridView 310

16.3.2 GridView概述 310

16.3.3 用GridView自动显示数据 313

16.3.4 用GridView定制显示数据 314

16.3.5 在GridView中修改、删除、选择数据 315

代码16-7 GridView数据绑定:WebForm 1.aspx 315

16.3.6 查看GridView详细数据 317

代码16-8 GridView:InitData@DetailInfo.aspx.cs 319

代码16-9 GridView:Page_Load@DetailInfo.aspx.cs 320

16.3.7 在GridView中分页浏览数据和排序数据 320

16.3.8 GridView和DetailsView实现主/详细视图 321

16.4.1 单个记录显示控件:FormView 323

16.4 其他数据绑定控件 323

16.4.2 数据列表:DataList 326

代码16-10 DataList示例:WebForm 1.aspx 329

16.4.3 循环控件:Repeater 330

代码16-11 Repeater示例:ItemCommand@WebForm 1.aspx.cs 331

温故知新 332

第17章 安全和验证策略 333

17.1 Web安全性概述 333

17.2 IIS安全机制 334

17.2.1 IIS用户验证机制 334

17.2.2 限制匿名用户 336

17.2.3 控制来访IP地址 337

17.2.4 使用SSL加密传递信息 338

17.3 ASP.NET验证控件 340

17.3.1 必填验证控件:RequiredFieldValidator 340

17.3.2 比较验证控件:CompareValidator 341

代码17-1 必填验证控件定义:WebForm 1.aspx 341

代码17-3 常数比较示例:WebForm 1.aspx 344

代码17-2 数据类型比较示例:WebForm 1.aspx 344

17.3.3 范围验证控件:RangeValidator 345

代码17-4 与控件比较示例:WebForm 1.aspx 345

17.3.4 正则表达式验证控件:RegularExpressionValidator 347

代码17-5 范围验证控件定义:WebForm 1.aspx 347

代码17-6 正则表达式验证控件定义:WebForm 1.aspx 349

17.3.5 自定义验证控件:CustomValidator 349

代码17-7 验证输入框示例:WebForm 1.aspx 350

代码17-8 验证输入框示例:WebForm 1.aspx.cs 351

代码17-9 验证单选框示例:WebForm 1.aspx.cs 352

代码17-10 验证单选框示例:WebForm 1.aspx.cs 352

17.3.6 综合示例:用户注册页面 353

温故知新 353

第18章 Web服务简述 355

18.1 Web服务概述 355

18.1.2 Web服务基础结构 356

18.1.1 Web服务简介 356

18.2 创建和使用Web服务 357

18.2.1 创建Web服务 358

代码18-1 Web服务类定义和实现:Service 1.asmx.cs 358

代码18-2 为Web服务类HelloWorld指定特性:HelloWorld.asmx.cs 359

18.2.2 创建Web服务类 359

18.2.3 创建Web服务方法 360

代码18-3 实现SayHello方法:HelloWorld.asmx.cs 361

代码18-4 实现Add方法:HelloWorld.asmx.cs 361

18.2.5 测试Web服务 362

18.2.4 部署Web服务 362

代码18-5 CallWebServiceTest页面HTML:WebForm 1.aspx 364

18.2.6 使用Web服务构造ASP.NET Web应用 364

代码18-6 调用Web服务中的SayHello方法:WebForm 1.aspx.cs 365

代码18-7 调用Web服务中的Add方法:WebForm 1.aspx.cs 365

18.3 使用ASP.NET核心对象 366

18.3.2 使用Application对象保存数据 367

18.3.1 使用Session对象保存数据 367

18.3.4 访问Request对象 368

代码18-8 Web服务中获取浏览器信息:WebForm 1.aspx.cs 368

18.3.3 访问Server对象 368

18.3.5 访问Response对象 369

代码18-9 Web服务中记录访问日志:WebForm 1.aspx.cs 369

温故知新 369

19.1 C#项目开发规范 373

第4篇 综合实例 373

19.1.1 规范化命名 373

第19章 C#编程规范 373

代码19-1 类命名示例 374

代码19-3 属性命名示例 375

代码19-2 私有成员命名示例 375

代码19-4 方法命名示例 376

代码19-6 接口命名示例 376

代码19-5 方法参数命名示例 376

19.1.2 规范化大括号和代码缩进 377

19.1.3 规范化小括号使用 377

代码19-7 代码文件级注释示例 378

19.1.4 规范化注释 378

代码19-9 代码功能块级注释示例 379

代码19-8 代码函数级注释示例 379

代码19-10 代码行级注释示例 380

19.1.6 实施标准 381

19.2.1 Web系统的三层结构 381

19.1.5 管理文档 381

19.2 Web系统的逻辑结构 381

19.2.2 示例NorthWind的整体架构 382

19.2.3 数据访问层 383

代码19-11 Database类实现:DataAccessLayer\Database.cs 384

19.2.4 业务逻辑层 387

代码19-12 Category类实现:BusinessLogicLayer\Category.cs 387

代码19-13 “查询”按钮单击事件:DataAccessLayer\Database.cs 389

19.2.5 页面显示层 389

温故知新 390

第20章 多用户聊天室 391

20.2.1 用户登录 391

20.1 系统目标 391

20.2 系统预览 391

20.2.3 浏览信息 392

20.2.2 发表信息 392

20.2.4 注销身份 392

20.3 数据库设计 393

20.3.1 设计数据库 393

20.2.5 工程文件一览 393

20.4.1 配置数据库连接 394

20.3.2 实现数据库 394

20.4 数据访问层 394

20.4.2 Database类成员一览 395

20.4.3 实现Database类 395

代码20-1 Database构造函数:\DataAccessLayer\Database.cs 395

代码20-3 Database.Dispose方法:\DataAccessLayer\Database.cs 396

代码20-2 Database析构函数:\DataAccessLayer\Database.cs 396

代码20-5 Database.Close方法:\DataAccessLayer\Database.cs 397

代码20-6 Database.ExecuteSQL方法:\DataAccessLayer\Database.cs 397

代码20-4 Database.Open方法:\DataAccessLayer\Database.cs 397

代码20-8 Database.GetDataRow方法:\DataAccessLayer\Database.cs 398

代码20-7 Database.GetDataSet方法:\DataAccessLayer\Database.cs 398

20.5.1 用户类User 399

20.5 业务逻辑层 399

代码20-9 User.LoadData方法:\BussinessLogicLayer\User.cs 400

代码20-10 User.Add方法:\BussinessLogicLayer\User.cs 401

20.5.2 消息类Message 401

代码20-11 Message.Add方法:\BussinessLogicLayer\Message.cs 402

代码20-12 Message.LoadTop10方法:\BussinessLogicLayer\Message.cs 402

20.6.1 用户登录Login.aspx 403

20.6 页面显示层 403

代码20-14 登录按钮单击事件:\WebLayer\Login.aspx.cs 404

代码20-13 登录页面控件定义:\WebLayer\Login.aspx 404

20.6.2 用户发言Speak.aspx 405

代码20-15 发言页面控件定义:\WebLayer\Speak.aspx 405

代码20-17 离开按钮单击事件:\WebLayer\Speak.aspx.cs 406

代码20-16 发言按钮单击事件:\WebLayer\Speak.aspx.cs 406

代码20-18 页面加载事件:\WebLayer\ShowMessage.aspx.cs 407

代码20-19 InitData:\WebLayer\ShowMessage.aspx.cs 407

20.6.3 浏览信息ShowMessage.aspx 407

代码20-20 主页面框架:\WebLayer\Main.aspx 408

20.6.4 主页面Main.aspx 408

温故知新 409

21.1 系统目标 411

第21章 开放论坛系统 411

21.2.1 用户注册及登录 411

21.2 系统预览 411

21.2.2 浏览主题列表 412

21.2.4 修改主题信息 413

21.2.3 发表新主题 413

21.2.6 删除主题 414

21.2.5 查看主题及回复 414

21.2.7 工程文件一览 415

21.3 数据库设计 415

21.3.1 设计数据库 415

21.3.2 实现数据库 416

21.4.1 配置数据库连接 417

21.4.2 Database类成员一览 417

21.4 数据访问层 417

21.4.3 实现Database类 418

代码21-1 Database.ExecuteSQL方法:\DataAccessLayer\Database.cs 418

代码21-2 Database.GetDataReader方法:\DataAccessLayer\Database.cs 420

代码21-3 Database.Insert方法:\DataAccessLayer\Database.cs 420

代码21-4 Database.Update方法:\DataAccessLayer\Database.cs 421

21.5 数据访问接口层 422

代码21-5 ValidateDataRow_S方法:\DataAccessHelper\GetSafeData.cs 423

21.5.1 得到安全数据 423

21.5.2 得到安全SQL语句 423

21.6 业务逻辑层 424

21.6.1 用户类User 424

代码21-6 GetQuotedString方法:\DataAccessHelper\SqlStringFormat.cs 424

代码21-7 User.LoadData方法:\BussinessLogicLayer\User.cs 425

代码21-8 User.Add方法:\BussinessLogicLayer\User.cs 426

代码21-9 HasUser方法:\BussinessLogicLayer\User.cs 426

21.6.2 主题类Topic 427

代码21-10 Topic.Add方法:\BussinessLogicLayer\Topic.cs 428

代码21-11 Topic.LoadData方法:\BussinessLogicLayer\Topic.cs 428

代码21-12 Topic.LoadData方法:\BussinessLogicLayer\Topic.cs 429

代码21-13 Topic.LoadData方法:\BussinessLogicLayer\Topic.cs 429

代码21-15 Topic.QueryReplies方法:\BussinessLogicLayer\Topic.cs 430

代码21-14 Topic.QueryTopics方法:\BussinessLogicLayer\Topic.cs 430

21.6.3 回复类Reply 431

代码21-16 Reply.Add方法:\BussinessLogicLayer\Topic.cs 431

21.7 页面显示层 432

代码21-17 登录页面控件定义:\WebLayer\Login.aspx 432

21.7.1 用户登录Login.aspx 432

代码21-19 “游客”按钮单击事件:\WebLayer\Login.aspx.cs 433

代码21-18 “登录”按钮单击事件:\WebLayer\Login.aspx.cs 433

代码21-20 用户注册页面控件定义:\WebLayer\Register.aspx 434

21.7.2 用户注册Register.aspx 434

代码21-21 “是否存在”单击事件:\WebLayer\Register.aspx.cs 435

代码21-22 “注册”按钮单击事件:\WebLayer\Register.aspx.cs 436

代码21-23 浏览主题页面GridView控件:\TopicList.aspx 437

21.7.3 浏览主题列表TopicList.aspx 437

代码21-25 InitData方法:\TopicList.aspx.cs 438

代码21-26 按钮列单击事件:\TopicList.aspx.cs 438

代码21-24 页面加载事件:\TopicList.aspx.cs 438

代码21-27 修改确认:\TopicList.aspx.cs 439

代码21-28 “确定”按钮单击事件:\WebLayer\TopicAdd.aspx.cs 440

21.7.4 添加主题TopicAdd.aspx 440

代码21-29 InitData:\WebLayer\TopicUpdate.aspx.cs 441

21.7.5 修改主题TopicUpdate.aspx 441

代码21-30 “确定”按钮单击事件:\WebLayer\TopicUpdate.aspx.cs 442

21.7.6 查看主题详细内容TopicDetail.aspx 442

代码21-31 InitData方法:\WebLayer\TopicDetail.aspx.cs 443

代码21-32 InitData方法:\WebLayer\TopicDetail.aspx.cs 444

代码21-33 “确定”按钮单击事件:\WebLayer\TopicReply.aspx.cs 444

21.7.7 回复主题TopicReply.aspx 444

21.7.8 拒绝非法用户 445

代码21-34 CheckUser()方法:\WebLayer\TopicReply.aspx.cs 445

代码21-35 CheckUser()方法:\WebLayer\TopicReply.aspx.cs 446

温故知新 446

第22章 电子商务系统 447

22.1 系统目标 447

22.1.1 用户行为分析 447

22.1.2 系统目标 448

22.2 系统预览 448

22.2.1 浏览、查询图书 448

22.2.2 查看图书详细信息 448

22.2.4 用户登录、注册 449

22.2.3 购买图书 449

22.2.6 图书管理 450

22.2.5 购物篮管理 450

22.2.7 图书销量统计 451

22.3.1 设计数据库 452

22.2.8 工程文件一览 452

22.3 数据库设计 452

22.3.2 实现数据库 453

22.4 数据访问层 454

22.5 数据访问接口层 455

22.4.2 数据库类实现 455

22.4.1 配置数据库连接 455

22.5.1 获取安全数据 456

代码22-1 ValidateDataReader_S:\DataAccessHelper\GetSafeData.cs 456

代码22-2 GetQuotedString方法:\DataAccessHelper\SqlStringFormat.cs 457

22.5.2 构造SQL语句 457

22.6.2 图书类Book 459

22.6 业务逻辑层 459

22.6.1 用户类User 459

代码22-4 Book.Update方法:\BussinessLogicLayer\Book.cs 461

代码22-3 Book.Add方法:\BussinessLogicLayer\Book.cs 461

代码22-6 Book.LoadData方法:\BussinessLogicLayer\Book.cs 461

代码22-5 Book.Delete方法:\BussinessLogicLayer\Book.cs 461

代码22-7 Book.QueryBooks(Hashtable):\BussinessLogicLayer\Book.cs 462

代码22-8 Book.QueryBooks(Hashtable,string,string):\BussinessLogicLayer\Book.cs 463

代码22-9 Book.GetSaleCountByCategory方法:\Book.cs 463

代码22-10 Book.GetSaleCountByPublisher方法:\Book.cs 464

代码22-11 Book.GetSaleCountByPrice方法:\Book.cs 464

22.6.3 图书类别类Category 465

代码22-13 Category.Query方法:\BussinessLogicLayer\Category.cs 466

代码22-12 Category.LoadData方法:\BussinessLogicLayer\Category.cs 466

22.6.4 购物篮类Cart 467

代码22-14 Cart.Add方法:\BussinessLogicLayer\Cart.cs 467

代码22-16 Cart.Delete方法:\BussinessLogicLayer\Cart.cs 468

代码22-17 Cart.LoadData方法:\BussinessLogicLayer\Cart.cs 468

代码22-15 Cart.Update方法:\BussinessLogicLayer\Cart.cs 468

代码22-19 Cart.Query方法:\BussinessLogicLayer\Cart.cs 469

代码22-18 Cart.RemoveBook方法:\BussinessLogicLayer\Cart.cs 469

22.7.1 数据验证类 470

代码22-20 IsString方法:\BussinessLogicHelper\ValidateUtility.cs 470

22.7 业务逻辑接口层 470

代码22-21 BookHelper.Add:\BussinessLogicHelper\BookHelper.cs 471

22.7.2 图书接口类 471

代码22-23 控件加载事件:\UserControls\HeaderMenu.ascx.cs 474

22.8.1 系统菜单自定义控件 474

22.8 自定义控件 474

代码22-22 系统菜单控件定义:\UserControls\HeaderMenu.ascx 474

代码22-25 CheckUser方法:\UserControls\UserCheck.ascx.cs 475

22.8.2 用户验证自定义控件 475

代码22-24 “登录”/“离开”单击事件:\UserControls\HeaderMenu.ascx.cs 475

代码22-26 登录页面GridView控件定义:\WebLayer\Login.aspx 476

22.9 页面显示层 476

22.9.1 浏览、查询图书BookList.aspx 476

代码22-27 InitData()方法:\BookList.aspx 478

代码22-28 Query()方法:\BookList.aspx.cs 478

代码22-29 Page_Load()方法:\BookList.aspx.cs 479

代码22-30 “查询”按钮单击事件:\BookList.aspx.cs 479

代码22-31 ResetQueryValue方法:\BookList.aspx.cs 480

代码22-32 GetSelected方法:\BookList.aspx.cs 481

代码22-33 “放入购物篮”按钮单击事件:\BookList.aspx.cs 481

代码22-34 “删除”按钮单击事件:\BookList.aspx.cs 482

22.9.2 图书详细信息BookDetail.aspx 483

代码22-35 InitData方法:\WebLayer\BookDetail.aspx.cs 483

代码22-37 “返回”按钮单击事件:\WebLayer\BookDetail.aspx.cs 484

22.9.3 添加图书BookAdd.aspx 484

代码22-36 Page_Load事件:\WebLayer\BookDetail.aspx.cs 484

代码22-38 “提交”按钮单击事件:\WebLayer\BookAdd.aspx.cs 485

22.9.4 用户注册Register.aspx 486

代码22-39 GridView控件属性:\CartView.aspx.cs 487

22.9.5 购物篮管理CartView.aspx 487

代码22-41 DG_RowCommand方法:\CartView.aspx.cs 488

代码22-40 InitData方法:\CartView.aspx.cs 488

代码22-42 通用画图类Chart:\BusinessLayer\Chart.cs 490

22.9.6 图书销量统计BookStatistics.aspx 490

代码22-43 GetColor方法:\BusinessLayer\Chart.cs 493

代码22-44 “统计方式”下拉框事件:\WebLayer\ookStatistics.aspx.cs 493

代码22-46 DrawChartByPublisher:\WebLayer\BookStatistics.aspx.cs 494

代码22-45 DrawChartByCategory:\WebLayer\BookStatistics.aspx.cs 494

代码22-47 DrawChartByPrice方法:\WebLayer\BookStatistics.aspx.cs 495

温故知新 495

23.1 系统目标 497

23.1.2 用户行为分析 497

23.1.1 办公自动化简介 497

第23章 办公自动化系统 497

23.1.3 系统目标 498

23.2.2 修改密码 499

23.2 系统预览 499

23.2.1 登录系统 499

23.2.3 管理工作计划 500

23.2.4 管理系统用户 500

23.2.5 管理角色权限 501

23.2.6 撰写公文 502

23.2.7 审阅公文 503

23.2.8 查看系统日志 503

23.2.9 工程文件一览 504

23.3.1 总体设计 505

23.3 系统架构 505

23.3.2 系统体系结构 505

23.4.1 设计数据库 506

23.4 数据库设计 506

23.4.2 初始化数据 508

23.5.1 字符串加密类Encrypt 509

23.5 通用组件层 509

代码23-1 加密方法:\MyOA.CommonComponent\Encrypt.cs 510

代码23-2 解密方法:\MyOA.CommonComponent\Encrypt.cs 511

23.5.2 权限树类Tree 511

代码23-3 CreateTree方法:\MyOA.CommonComponent\Tree.cs 513

代码23-4 CreateSubTree方法:\MyOA.CommonComponent\Tree.cs 513

代码23-5 GetChilds方法:\MyOA.CommonComponent\Tree.cs 514

代码23-6 IsLeaf方法:\MyOA.CommonComponent\Tree.cs 515

代码23-8 GetParent方法:\MyOA.CommonComponent\Tree.cs 516

代码23-7 GetLevel方法:\MyOA.CommonComponent\Tree.cs 516

23.5.3 日志类MyEventsLog 517

代码23-9 MyEventsLog:\MyOA.CommonComponent\EventsLog.cs 519

代码23-10 数据库连接配置:\Web.config 521

23.6.1 配置数据库连接 521

23.6.2 数据库类实现 521

23.6 数据访问层 521

代码23-11 记录异常日志的Open方法:\DataAccessLayer\Database.cs 522

23.7.2 构造SQL语句 523

23.7.1 获取安全数据 523

23.7 数据访问接口层 523

代码23-12 构造条件子句:\DataAccessHelper\SqlStringConstructor.cs 524

23.8.1 用户类User 525

23.8 业务逻辑层 525

代码23-13 获取用户数据:\BussinessLogicLayer\User.cs 526

23.8.2 角色类Role 528

代码23-15 查询角色数据:\BussinessLogicLayer\Role.cs 529

代码23-14 获取角色数据:\BussinessLogicLayer\Role.cs 529

23.8.3 部门类Department 530

代码23-16 修改角色数据:\BussinessLogicLayer\Role.cs 530

代码23-18 查询部门数据:\BussinessLogicLayer\Department.cs 531

代码23-17 获取部门数据:\BussinessLogicLayer\Department.cs 531

23.8.4 工作计划类Plan 532

代码23-19 获取工作计划数据:\BussinessLogicLayer\Plan.cs 533

代码23-20 添加新的工作计划:\BussinessLogicLayer\Plan.cs 533

代码23-21 修改工作计划数据:\BussinessLogicLayer\Plan.cs 534

23.8.5 公文类File 534

代码23-22 获取公文数据:\BussinessLogicLayer\File.cs 535

代码23-24 修改公文数据:\BussinessLogicLayer\File.cs 536

代码23-23 添加新的公文:\BussinessLogicLayer\Plan.cs 536

代码23-25 查询公文数据:\BussinessLogicLayer\File.cs 537

代码23-26 删除公文数据:\BussinessLogicLayer\File.cs 538

代码23-27 获取公文状态数据:\BussinessLogicLayer\FileStatus.cs 539

23.8.6 公文状态FileStatus 539

代码23-28 查询公文状态数据:\BussinessLogicLayer\FileStatus.cs 540

23.9 业务逻辑接口层 540

23.9.2 公文接口类 541

代码23-29 安全添加公文:\BussinessLogicHelper\FileHelper.cs 541

23.9.1 数据验证类 541

23.10 自定义权限菜单数控件 542

代码23-30 菜单树控件数据加载方法:\UserControls\LeftTree.ascx.cs 543

23.11 页面显示层 544

代码23-31 用户合法性验证方法:\UserControls\LeftTree.ascx.cs 544

代码23-32 “登录”按钮单击事件:\Login.aspx.cs 544

23.11.1 登录页面Login.aspx 544

代码23-33 “登录”按钮单击事件:\Login.aspx.cs 545

23.11.2 浏览用户页面UserList.aspx 546

代码23-34 登录页面GridView控件定义:\UserList.aspx 547

代码23-35 登录页面加载事件:\UserList.aspx.cs 547

代码23-36 InitData方法:\UserList.aspx.cs 548

代码23-37 Query方法:\UserList.aspx.cs 548

代码23-38 ResetQueryValue方法:\UserList.aspx.cs 549

代码23-39 “查询”按钮单击事件:\UserList.aspx.cs 550

代码23-40 “修改”按钮单击事件:\UserList.aspx.cs 550

代码23-41 GetSelected方法:\UserList.aspx.cs 550

代码23-42 “删除”按钮单击事件:\UserList.aspx.cs 551

23.11.3 添加用户页面UserAdd.aspx 552

代码23-43 “重置密码”按钮单击事件:\UserList.aspx.cs 552

代码23-44 InitData方法:UerAdd.aspx.cs 553

代码23-45 “保存”按钮单击事件:\UerAdd.aspx.cs 554

23.11.4 修改用户页面UserUpdate.aspx 555

代码23-46 InitData方法:\UerUpdate.aspx.cs 555

代码23-47 “保存”按钮单击事件:\UerUpdate.aspx.cs 556

23.11.5 修改密码页面UserResetPwd.aspx 557

代码23-48 “保存”按钮单击事件:\UserResetPwd.aspx.cs 557

23.11.6 角色权限管理页面RoleMange.aspx 558

代码23-49 GridView定义:\RoleMange.aspx 559

代码23-50 InitData方法:\RoleMange.aspx.cs 560

代码23-51 “授权”按钮单击事件:\RoleMange.aspx.cs 562

23.11.7 工作计划页面PlanList.aspx 563

代码23-52 页面加载事件:\PlanList.aspx.cs 563

代码23-53 InitData方法:\PlanList.aspx.cs 564

代码23-54 InitData方法:\PlanList.aspx.cs 564

代码23-55 日历控件单击事件:\PlanList.aspx.cs 565

代码23-56 “添加”按钮单击事件:\PlanList.aspx.cs 565

23.11.8 公文浏览页面FileList.aspx 566

代码23-57 “修改”按钮单击事件:\PlanList.aspx.cs 566

代码23-58 公文浏览页面加载事件:\FileList.aspx.cs 567

代码23-59 公文浏览页面加载事件:\FileList.aspx.cs 567

代码23-60 Query方法:\FileList.aspx.cs 568

代码23-61 “删除”按钮单击事件:\FileList.aspx.cs 568

23.11.9 公文添加页面FileAdd.aspx 569

代码23-62 InitData方法:UerAdd.aspx.cs 570

代码23-63 “部门”下拉框选择改变事件:UerAdd.aspx.cs 570

代码23-64 “上报”按钮单击事件:FileAdd.aspx.cs 571

23.11.10 公文审阅页面FileDetail.aspx 573

代码23-65 InitData方法:FileDetail.aspx.cs 573

代码23-66 “审阅”按钮单击事件方法:FileDetail.aspx.cs 574

23.11.11 日志查看页面LogView.aspx 575

代码23-68 InitData方法:\LogView.aspx.cs 576

代码23-67 页面加载事件:\LogView.aspx.cs 576

代码23-69 Query方法:\LogView.aspx.cs 577

代码23-70 “查询”按钮单击事件:\LogView.aspx.cs 577

温故知新 578