新書推薦:
《
别怕,试一试
》
售價:HK$
67.9
《
人才基因(凝聚30年人才培育经验与智慧)
》
售價:HK$
103.4
《
深度学习详解
》
售價:HK$
114.8
《
李白传(20世纪文史学家李长之经典传记)
》
售價:HK$
45.8
《
津轻:日本无赖派文学代表太宰治自传性随笔集
》
售價:HK$
66.7
《
河流之齿
》
售價:HK$
59.8
《
新经济史革命:计量学派与新制度学派
》
售價:HK$
89.7
《
盗墓笔记之秦岭神树4
》
售價:HK$
57.3
|
編輯推薦: |
ASP.NET是当今使用*为频繁的Web开发技术之一,一直在开发领域占据重要的地位。本书通过12个综合实例的实现过程,详细讲解了ASP.NET在实践项目中的综合运用过程,这些项目在现实应用中具有极强的代表性。第1章讲解了在线留言簿系统的具体实现流程;第2章讲解了互动媒体学习社区的具体实现流程,第3章讲解了物业管理系统的具体实现流程,第4章讲解了浪漫七夕聊天系统的具体实现流程,第5章讲解了叮当图书商城系统的具体实现流程,第6章讲解了东海地产内部交互系统的具体实现流程,第7章讲解了图文处理系统的具体实现流程,第8章讲解了综合供求信息系统的具体实现流程,第9章讲解了客房管理系统的具体实现流程,第10章讲解了典型企业网站的具体实现流程,第11章讲解了在线考试系统的具体实现流程,第12章讲解了在线BBS论坛系统的具体实现流程。在具体讲解每个实例时,都遵循项目的进度来讲解,从接到项目到具体开发,直到*后的调试和发布。内容循序渐进,并穿插讲解了每一步骤为什么这样做的原因,深入讲解了每个重点内容的具体细节,引领读者全面掌握ASP.NET。
本书不但适用于ASP.NET的初学者,也适用于有一定AS
|
內容簡介: |
ASP.NET是当今使用最为频繁的Web开发技术之一,一直在开发领域占据重要的地位。本书通过12个综合实例的实现过程,详细讲解了ASP.NET在实践项目中的综合运用过程,这些项目在现实应用中具有极强的代表性。第1章讲解了在线留言簿系统的具体实现流程;第2章讲解了互动媒体学习社区的具体实现流程,第3章讲解了物业管理系统的具体实现流程,第4章讲解了浪漫七夕聊天系统的具体实现流程,第5章讲解了叮当图书商城系统的具体实现流程,第6章讲解了东海地产内部交互系统的具体实现流程,第7章讲解了图文处理系统的具体实现流程,第8章讲解了综合供求信息系统的具体实现流程,第9章讲解了客房管理系统的具体实现流程,第10章讲解了典型企业网站的具体实现流程,第11章讲解了在线考试系统的具体实现流程,第12章讲解了在线BBS论坛系统的具体实现流程。在具体讲解每个实例时,都遵循项目的进度来讲解,从接到项目到具体开发,直到最后的调试和发布。内容循序渐进,并穿插讲解了每一步骤为什么这样做的原因,深入讲解了每个重点内容的具体细节,引领读者全面掌握ASP.NET。
本书不但适用于ASP.NET的初学者,也适用于有一定ASP.NET基础的读者,甚至还可以作为有一定造诣的程序员的参考书。
|
目錄:
|
目 录
第1章 在线留言簿系统1
1.1 赢在起点2
1.1.1 赢在起点——程序员的
职业规划2
1.1.2 赢在起点——做好项目分析2
1.2 项目开发流程分析4
1.2.1 了解使用流程4
1.2.2 规划开发流程4
1.3 系统分析5
1.3.1 系统功能分析5
1.3.2 模块结构规划6
1.3.3 规划系统文件6
1.3.4 选择开发工具7
1.4 系统配置文件7
1.4.1 新建网站项目7
1.4.2 配置系统文件8
1.5 搭建数据库平台9
1.5.1 数据库设计9
1.5.2 数据库访问层设计10
1.6 设置样式文件16
1.6.1 设置按钮元素样式17
1.6.2 设置页面元素样式17
1.7 留言数据显示模块18
1.7.1 留言列表显示页面18
1.7.2 留言展开回复页面23
1.8 留言分页列表显示模块24
1.8.1 留言分页显示页面25
1.8.2 分页处理页面25
1.9 留言回复模块27
1.9.1 留言回复表单页面27
1.9.2 回复数据处理页面29
1.10 留言发布模块30
1.11 留言管理模块32
1.11.1 留言管理列表页面32
1.11.2 留言删除处理页面34
1.12 测试运行35
第2章 互动媒体学习社区37
2.1 修炼自身38
2.1.1 “码农”和“高大上”38
2.1.2 赢在自身——快速提升
自身修为38
2.2 开发背景简介39
2.3 系统设计分析40
2.3.1 互动媒体学习社区的优势40
2.3.2 系统特点41
2.3.3 系统目标41
2.3.4 确定设计方案——
BS体系结构42
2.4 需求分析42
2.4.1 可行性分析43
2.4.2 功能分析43
2.4.3 业务流程43
2.5 总体设计44
2.6 系统预览46
2.7 构建开发环境47
2.8 数据库设计48
2.8.1 概念设计48
2.8.2 实体E-R图49
2.8.3 逻辑设计50
2.9 文件组织结构和功能模块设计53
2.9.1 文件组织结构设计53
2.9.2 用户功能模块设计53
2.10 公共类设计56
2.10.1 数据库操作类设计56
2.10.2 业务功能类设计59
2.11 网站首页设计61
2.12 实现用户注册模块64
2.12.1 login.aspx页面部分
代码分析64
2.12.2 用户登录设计65
2.13 发布并管理教程67
2.13.1 发布教程68
2.13.2 查看教程页设计70
2.14 后台管理页面设计72
2.14.1 用户管理页面72
2.14.2 视频管理页面73
2.15 系统测试74
第3章 物业管理系统77
3.1 程序员职场生存秘籍78
3.1.1 国内程序员的生存现状78
3.1.2 赢在职场——入职需谨慎78
3.2 系统分析79
3.2.1 系统背景介绍80
3.2.2 系统需求分析80
3.3 系统设计81
3.3.1 系统目标81
3.3.2 系统功能结构81
3.3.3 业务流程图82
3.3.4 构建开发环境83
3.4 编写可行性研究报告及项目计划书83
3.4.1 编写可行性研究报告83
3.4.2 编写项目计划书85
3.5 系统预览86
3.6 数据库设计87
3.6.1 数据库概念设计87
3.6.2 数据库逻辑结构设计89
3.7 设计公共类91
3.8 设计网站首页91
3.8.1 网站首页技术分析92
3.8.2 网站首页实现过程93
3.9 欠费信息查询页95
3.9.1 欠费信息查技术分析96
3.9.2 欠费信息查询页实现过程96
3.10 管理员登录页设计99
3.10.1 管理员登录页技术分析100
3.10.2 管理员登录页实现过程100
3.11 设计值班员工页102
3.11.1 值班员工页实现过程102
3.11.2 编写实现代码103
3.12 设计业主住房信息管理页104
3.12.1 业主住房信息管理页
实现过程104
3.12.2 编写实现代码105
3.13 业主投诉信息审核页设计106
3.13.1 业主投诉信息审核页
技术分析107
3.13.2 业主投诉信息审核页
具体实现107
第4章 浪漫七夕聊天系统111
4.1 部门沟通之“钥”112
4.1.1 开发公司部门现状112
4.1.2 赢在公司——探讨部门
沟通之道113
4.2 新的项目114
4.3 项目规划分析114
4.3.1 在线聊天系统功能原理115
4.3.2 在线聊天系统构成模块115
4.4 系统配置文件116
4.5 搭建数据库117
4.5.1 数据库设计117
4.5.2 系统参数设置117
4.6 数据库访问层119
4.6.1 数据访问层——登录验证
处理119
4.6.2 数据访问层——聊天处理121
4.6.3 数据访问层——系统管理124
4.7 设计样式文件129
4.7.1 按钮元素样式129
4.7.2 页面元素样式130
4.8 用户登录验证模块131
4.8.1 用户登录表单页面131
4.8.2 登录验证处理页面132
4.9 系统主界面133
4.9.1 在线聊天页面134
4.9.2 在线聊天处理页面134
4.10 新增功能137
4.10.1 修改数据库——
添加Chat表137
4.10.2 修改数据访问层——聊天室
房间处理137
4.11 聊天室显示界面139
4.11.1 聊天室列表显示页面139
4.11.2 聊天室列表处理页面139
4.12 聊天室管理界面141
4.12.1 聊天室添加模块141
4.12.2 聊天室列表模块143
4.12.3 聊天室修改模块145
4.13 项目调试147
第5章 叮当图书商城系统151
5.1 体验代码之美152
5.1.1 程序员经常忽视的问题152
5.1.2 赢在代码本身——
体现程序之美152
5.2 新的项目153
5.3 项目规划分析154
5.3.1 电子商务的简要介绍154
5.3.2 在线商城系统构成模块155
5.4 规划项目文件156
5.5 系统配置文件157
5.6 搭建数据库158
5.6.1 数据库设计158
5.6.2 系统参数设置文件161
5.7 数据访问层162
5.7.1 商品显示162
5.7.2 订单处理167
5.7.3 商品评论175
5.7.4 商品分类177
5.7.5 商品管理183
5.8 商品显示模块185
5.8.1 系统主页185
5.8.2 顶部导航页面185
5.8.3 左侧类别列表页面186
5.8.4 右侧商品列表页面186
5.8.5 按被点击次数显示模块187
5.8.6 按商品名称显示模块189
5.8.7 商品详情显示模块191
5.9 商品分类处理模块193
5.9.1 设置分类层次结构194
5.9.2 添加分类模块196
5.9.3 修改分类模块197
5.9.4 分类管理模块199
5.10 商品管理模块200
5.10.1 商品添加模块201
5.10.2 商品修改模块202
5.10.3 商品管理列表模块203
5.10.4 商品图片修改模块205
5.11 购物车模块208
5.11.1 购物车组件设计模块209
5.11.2 购物车商品添加模块213
5.11.3 购物车查看和管理模块214
5.12 订单处理模块218
5.12.1 生成订单编号219
5.12.2 提交、创建订单220
5.12.3 订单详情模块222
5.12.4 订单列表模块223
5.12.5 订单状态处理模块224
5.13 商品评论模块和商品搜索模块227
5.13.1 智能提示227
5.13.2 分类检索230
5.14 项目调试231
第6章 东海地产内部交互系统235
6.1 软件项目的可扩展性236
6.1.1 成熟软件的完善是一个不断
更新的过程236
6.1.2 赢在项目质量——让程序
具有更好的可扩展性236
6.2 组建团队237
6.3 项目规划分析239
6.3.1 在线交互系统的背景239
6.3.2 企业在线交互系统构成
模块239
6.4 规划项目文件240
6.5 系统配置文件241
6.6 搭建数据库242
6.6.1 数据库设计243
6.6.2 系统参数设置文件246
6.7 数据访问层247
6.7.1 数据访问层——
用户登录验证247
6.7.2 数据访问层——客户分组251
6.7.3 数据访问层——团队模块256
6.8 用户登录验证模块260
6.8.1 用户登录验证模块260
6.8.2 登录用户注销模块262
6.9 客户分组处理模块263
6.9.1 用户分组添加模块263
6.9.2 用户分组修改模块264
6.9.3 用户组管理列表模块265
6.9.4 客户检索模块267
6.9.5 客户管理列表模块270
6.9.6 客户移动转换模块272
6.9.7 客户信息显示模块274
6.10 系统团队处理模块276
6.10.1 添加团队模块276
6.10.2 团队修改处理模块277
6.10.3 团队管理列表模块278
6.10.4 加入团队处理模块280
6.11 在线交互模块282
6.11.1 系统主页显示模块282
6.11.2 一对一交互处理模块284
6.11.3 团队交互处理模块286
6.11.4 文件发送模块290
6.12 项目调试296
第7章 图文处理系统299
7.1 模块化编程思想300
7.1.1 现实中的模块化编程300
7.1.2 赢在面向对象——
实现高内聚和低耦合代码300
7.2 组建团队302
7.3 项目规划分析302
7.3.1 图文处理模块的功能原理303
7.3.2 图文处理系统的构成模块303
7.4 规划项目文件303
7.5 系统配置文件304
7.5.1 配置连接字符串参数304
7.5.2 配置Ajax服务器参数305
7.5.3 系统设置文件305
7.6 搭建数据库306
7.7 数据访问层306
7.7.1 数据访问层——
定义FileImage类307
7.7.2 数据访问层——
获取上传文件信息307
7.7.3 数据访问层——
添加上传文件信息308
7.7.4 数据访问层——
删除上传文件信息309
7.8 系统文件列表显示模块310
7.8.1 列表显示页面310
7.8.2 列表处理页面310
7.9 创建缩略图模块313
7.10 创建水印图模块316
7.11 文件上传处理模块319
7.11.1 多文件上传处理模块319
7.11.2 文件自动上传处理模块321
7.12 项目调试326
第8章 综合供求信息系统329
8.1 程序的可移植性330
8.1.1 什么是可移植性330
8.1.2 C#实现跨平台的背景330
8.1.3 赢在技术——通过可移植性
实现跨平台项目331
8.2 新的项目332
8.3 需求分析332
8.3.1 开发背景332
8.3.2 需求分析332
8.4 项目规划333
8.4.1 系统目标333
8.4.2 网站功能结构333
8.5 MVC设计思想334
8.5.1 MVC设计思想介绍335
8.5.2 MVC设计模式的实现335
8.5.3 MVC设计模式的扩展和
优点336
8.6 搭建数据库337
8.6.1 数据库E-R图分析337
8.6.2 数据结构表338
8.7 具体编码340
8.7.1 数据层功能设计340
8.7.2 网站逻辑业务功能设计345
8.7.3 网站主页设计351
8.7.4 网站招聘信息页设计353
8.7.5 免费供求信息发布页设计356
8.7.6 后台主页设计357
8.7.7 免费供求信息审核页设计358
8.7.8 免费供求信息删除页设计362
8.8 项目调试364
8.9 Visual Studio.NET的跨平台应用366
8.9.1 Mainsoft Grasshoppe框架
实现和Java的跨平台366
8.9.2 Mono框架实现跨平台、
跨语言366
第9章 客房管理系统369
9.1 提高程序的健壮性370
9.1.1 一段房贷代码引发的深思370
9.1.2 赢在高质量——提高程序的
健壮性370
9.2 新的项目372
9.3 系统需求分析372
9.3.1 系统背景介绍373
9.3.2 功能模块划分373
9.4 规划和运作374
9.4.1 规划系统文件374
9.4.2 运作流程374
9.5 设计数据库375
9.5.1 设计E-R图375
9.5.2 设计表376
9.5.3 建立和数据库的连接378
9.6 设计基类380
9.6.1 PageBase基类381
9.6.2 ModuleBase基类382
9.7 具体编码386
9.7.1 设计界面386
9.7.2 管理员登录模块388
9.7.3 客房类型管理模块389
9.7.4 客房信息管理模块396
9.7.5 客房经营管理模块403
9.7.6 经营状况分析模块406
9.8 项目调试409
第10章 典型企业网站413
10.1 做好项目管理者414
10.1.1 软件工程师到项目经理到
管理者之路414
10.1.2 赢在管理——运转一个
健步如飞的团队414
10.2 新的项目417
10.3 功能分析417
10.4 编写项目计划书418
10.5 设计界面419
10.6 功能模块分析420
10.7 数据库设计421
10.7.1 数据库需求分析421
10.7.2 数据库概念结构设计422
10.7.3 数据表结构423
10.8 具体编码425
10.8.1 编写公用模块代码426
10.8.2 设计界面控件428
10.8.3 用户登录模块430
10.8.4 新闻管理模块431
10.8.5 产品管理模块434
10.8.6 用户管理模块438
10.9 项目调试441
第11章 在线考试系统443
11.1 算法是程序的灵魂444
11.1.1 何谓算法444
11.1.2 赢在技术沉淀——
计算机中的算法445
11.1.3 赢在技术沉淀——
表示算法的方法446
11.2 背景介绍448
11.2.1 系统开发的目的449
11.2.2 系统开发的意义449
11.3 可行性分析450
11.3.1 经济可行性450
11.3.2 技术可行性450
11.4 系统需求分析和总体设计450
11.5 系统功能结构和运行流程分析451
11.6 项目计划书452
11.7 数据库设计453
11.7.1 数据库需求分析453
11.7.2 数据库概念结构设计454
11.7.3 设计表455
11.8 编写公共类457
11.9 实现登录界面465
11.9.1 技术分析465
11.9.2 实现登录页面466
11.9.3 实现考生注册页面468
11.10 实现在线考试页面471
11.10.1 在线考试页面技术分析473
11.10.2 具体实现473
11.11 实现后台管理页面477
11.11.1 考试套题管理页面技术
分析478
11.11.2 考试套题管理页面实现
过程479
11.11.3 实现代码479
11.12 系统测试482
第12章 在线BBS论坛系统483
12.1 走向架构师之路484
12.1.1 什么是架构师484
12.1.2 赢在架构之——如何成为
一名架构师484
12.1.3 赢在架构之——何种架构
才算是一个“美丽”的
架构485
12.1.4 赢在架构之——如何打造
一个美丽的架构485
12.2 系统需求分析486
12.3 系统可行性分析487
12.3.1 经济可行性487
12.3.2 技术可行性487
12.3.3 时机可行性487
12.3.4 管理可行性487
12.3.5 角色分析488
12.4 系统设计488
12.4.1 系统功能结构488
12.4.2 功能描述489
12.4.3 业务流程图489
12.4.4 网站主要数据绑定控件
技术分析490
12.5 项目计划书491
12.6 数据库设计492
12.6.1 数据库概念设计493
12.6.2 数据库逻辑结构设计493
12.7 编写公共类494
12.8 实现网站首页495
12.8.1 设计思路495
12.8.2 具体实现495
12.9 实现用户注册信息页面503
12.9.1 设计思路503
12.9.2 核心代码503
12.10 浏览帖子详情页面及回帖页面
设计515
12.10.1 技术分析516
12.10.2 浏览帖子和回复帖子功能的
具体编码516
12.11 实现发表新帖子页面521
12.11.1 实现过程521
12.11.2 具体实现521
|
內容試閱:
|
第2章 互动媒体学习社区
随着Internet 的普及,网络已成为人们学习、工作、生活不可或缺的一部分。网络学习是信息化社会学习的主要途径之一,而网络学习受到广大学习者青睐的原因是,网络上学习资源丰富,学习时间可灵活安排,还可以通过互动交流方式进行学习。互动交流是非常有效的网络学习手段,对学习者的创新能力和认知能力的发展起着不可低估的作用。本章通过开发一个媒体学习网站——互动媒体学习社区,介绍利用ASP.NET + Access 快速开发一个互动媒体学习社区的方法。
011. 配置ASP. NET环境
012. SQL Server 2005的安装
013. 配置SQL Server 2005
014. 编译和部署ASP. NET程序
015.SQL Server 2005的卸载顺序
016.C#的地位
017. 什么是C#
018..NET Framework框架介绍
019. 几个常见的概念
020. 程序编译
2.1 修 炼 自 身
光盘:视频\第2章\修炼自身.avi
作为一名优秀的程序员,必须具备基本的程序员修为。修为是指一个人的修养、素质和能力,对于程序员来说,最重要的修为是自身的技术水平。
2.1.1 “码农”和“高大上”
程序员从事的是创造性的工作,十分注重个人的修为。IT界的程序员可以分为两类,具体说明如下。
1 码农:因为学艺不精,自身技术水平有限,所以主要工作是加班修改代码。
2 牛人大佬:开发经验丰富,技术水平高,主要负责系统架构和项目管理等工作。
广大读者应该能意识到:在当今的程序员大军中,总有那么一些优秀者能从众多的“码农”中脱颖而出,成为高高在上的架构师或CTO,拥有令人羡慕的薪资待遇;而与之相对应的是,也总有一些无休止绝对服从的“码农”们,总是在无奈的加班中度过自己的大好年华,但是得到的仅仅是微薄的工资。那么,为什么有些人能成为“高大上”的工程师和架构师?这是因为他们具备了“码农”们所没有的特质。在众多特质当中,自身的技术修为是最为重要的。
2.1.2 赢在自身——快速提升自身修为
包括广大读者在内,程序员们都想成为金字塔顶端的“高大上”一族。但是现实情况是,用人单位对软件架构师和CTO的要求非常高,其中最基本的一条要求是有较高的自身修为。那么,该如何迅速提高自己的修为呢?建议广大读者从如下8条开始做起。
1 掌握基础。
对于任何行业、任何工作来说,融会贯通是获得成功的关键。一个人要想成为优秀的程序员,就必须有坚实的基础。理解核心理念会帮助你用最好的方法设计和实施出最完美的方案。如果你感觉自己不能掌握计算机科学或者某个编程语言的核心知识点,现在开始回顾一下基础一点儿都不晚。
2 尽量编写简单易懂、有逻辑性的代码。
编写的代码要保持短小而精悍的特点,尽量编写有逻辑的代码,避免复杂化。有时,人们编写复杂代码的原因仅仅是为了展示他们有能力写出这样的代码。根据笔者的经验,简单而富有逻辑的代码非常好,产生的问题更少,也更容易扩展。
3 花更多的时间分析问题,将会花更少时间去解决问题。
花更多的时间理解和分析问题,然后再设计方案,你就会发现剩下的事情变得很容易了。设计不是非要使用建模语言和工具,可以是仅仅看看天空在脑子里构思。那些一遇到问题就开始敲代码的人往往最终会偏离需求。
4 成为第一个检查自己代码的人。
这虽然有一点儿难度,但是试着在其他人修改你的代码之前修改它,随着时间的推移,你就会写出几乎没有错误bug的代码。你需要对自己的代码做没有任何偏见的检查,也不要犹豫让其他人来检查你的代码。和其他优秀的程序员一起工作,接受他们的意见,能够帮助自己成长为一名优秀的程序员。
5 养成阅读文档的习惯。
阅读很多文档是优秀程序员的必备习惯之一。文档可以是产品说明书、JSR、API文档、教程等。阅读文档可以帮助你获得必要的基础知识,写出更好的代码。
6 及时把握技术风向标。
IT界的新技术层出不穷,新版本、新工具和新语言充斥在我们耳边。一项新的技术往往能够彻底颠覆一个行业,例如Android彻底颠覆了智能手机世界。要想迅速成为一名优秀的程序员,并且做到脱颖而出,就需要你具备随时学习新技术的能力。学习新技术的好处很多,例如,使你的知识面更广,使你能够对各项开发技术进行横向比较,使你掌握的开发技术更能融会贯通。更为重要的是,你能够站在技术前沿的最高点,不但增加了自己的一项生存技能,而且也能够做到与他人的不同,你能够更快地从整个团队中,甚至公司中脱颖而出。
7 不要迷失在快速更迭的科技世界。
及时把握技术风向标并不意味着每出现一门新技术,都要马上投入到学习中。在IT行业中,经常会遇到许多,对现在的工作不满,甚至离开它去追寻新的工作,理由是想要学习最新科技的人。我们每天听到的都是新工具、新接口、新框架,它们能让程序更简单,速度更快。这在科技世界中司空见惯并且会一直如此。但是,最基本、最核心的科技变化比那些工具、接口和框架的变化小得多。
举个例子,在Java企业级应用中,每个星期都会出现新的框架,但是核心的技术是不变的。例如基于“客户端-服务器端”的请求、MVS模式、数据源绑定、XML解析等。所以要花工夫去学习核心概念,而不是去担忧日新月异的框架和工具的出现。只要具备了核心技术的基础,你就会发现学习新的框架、工具以及接口变得更加容易。
8 阅读别人的代码,“让别人无路可走”。
如果你不能吸收IT界前辈大师的经验知识,那么你永远都无法成为一位大师。成为大师的方法之一是,找到一位大师,让其倾囊传授其所知。有这种可能吗?当然有。大师们的经验和技巧都保存在他们所编写的代码中,我们要做的就是去阅读他们的代码。打个比方,要想成为一名卓越的木匠,得观察大量结构优良的家具。大师们的源码少则几行,多则上万行。例如Linux是全世界大师们的呕心力作,而Android更是软件巨头谷歌公司开发大师们的心血之作。通过阅读他们的代码,分析他们建立的架构,在吸收消化之后,我们离大师就不远了。
2.2 开发背景简介
光盘:视频\第2章\开发背景简介.avi
信息化是当今世界经济和社会发展的大趋势,科学技术特别是信息技术和生命科学的不断突破,对世界政治、经济、文化生活都产生了更加深刻的影响。互联网的发展,不仅改变了人们的工作和生活方式,也改变了教育和学习方式。
计算机网络是计算机技术和通信技术紧密结合的产物,它涉及通信与计算机两个领域。它的诞生使计算机体系结构发生了巨大的变化,在当今社会经济中起着非常重要的作用,对人类社会的进步做出了巨大贡献。随着信息技术日益渗透到社会经济和生活的方方面面,没有人可以否认因特网带来的巨大变化和革命性的影响。
网络技术的发展和国际互联网在全球的开通,改变了人类以往的生活方式、工作方式、学习方式,甚至也改变了我们的思维方式。传统意义上的教学方式正由于因特网的飞速发展和广泛应用而产生着质的变化。基于计算机数字技术的多媒体教学,已经发展成为综合利用计算机网络通信和多媒体技术,以因特网为传播媒介,远程对学生进行交互式教学的网络教育,不但改变了传统的教学模式和手段,而且也从本质上改变了传统的教学思想和观念,促进了教育的终身化、现代化、社会化和国际化。
在网络上丰富多彩的学习资源中,传统的文档资源和图片资源已不能满足学习者对学习资源的需求,学习者迫切需要通过视觉或听觉直观地对学习资源进行深刻的了解,从而产生了视频学习资源和语音学习资源。互动媒体学习社区通过一个虚拟的网络学习环境,让学习者可以观看或发布视频教程和语音教程,进行相互学习交流。而且,因特网上的学习网站不受时空的限制,自由性比较强,有利于实现各取所需;方便轻松的学习方法,有利于提高学生的学习兴趣。
2.3 系统设计分析
光盘:视频\第2章\系统设计分析.avi
软件项目开发的第一步是系统设计分析和项目需求分析,本节将详细讲解本项目系统设计的具体分析工作,为读者步入后面的具体编码工作打下基础。
2.3.1 互动媒体学习社区的优势
互动媒体学习社区的最大优势不是快,而是多且深,它为学习者提供了无限大的选择空间,通过多种媒体表现形式,使学习者可以选择最适合自己的学习方式。互动媒体学习社区是传统课堂的延伸和拓展,是一个很好的课后学习平台。与学校相比,它有着更好的学习气氛,与平常的网络学习系统相比,则又多了些针对性的纵深辅导。
在现实应用中,互动媒体学习社区的魅力主要表现在如下3个方面。
1内容丰富,学习者选择学习媒体的余地大。
凡是稍具规模的学科网站,一般都具有良好的网络学习界面,互动媒体学习社区向学习者提供的学习方法可达五六种,学习者可以自由选择适合自己的学习方式。如时下流行的视频媒体,就因其图文声像四样俱全,使学习过程变得活泼有趣,从而使学习者能够更有兴趣地学习。
2方便学习和交流。
读者可以通过学科网站的留言板等功能模块,方便地与其他学友进行互动交流,而且这种交流具备不受地域限制、友善和人性化的特点。
3功能齐全。
在系统中,学习者可进行学科授课计划、学习课程简介等信息的查看,相关课件的下载,视频教程的观看和下载等操作。
2.3.2 系统特点
本系统主要是在现有正常的网上学习的基础上,增加了视频、语音的学习内容,而且学习者还可以上传、下载视频,大大提高了学习者的学习兴趣。系统把大量信息的人工管理转变为计算机管理,简化了网站管理员的工作,提高了管理效率,同时方便用户学习。
本系统采用数据库对数字化信息资源进行组织管理。系统采用的数据库是关系数据库Access,前台使用Microsoft Visual Studio 2013平台开发。Access采用了关系型数据库结构,是一套简洁、快速的数据库管理系统,提供了多人使用的管理模式。同时,Microsoft Visual Studio 2013平台和Access作为微软公司的产品,具有良好的整合性。信息平台的前台和后台操作均采用BS操作结构,以增强系统的安全保密性、系统稳定性和易操作性。开发语言为C#,它是目前最完备的面向对象语言。系统采用高度集成的模块结构,将所有的模块整合到一个通用的中央数据库中。
概括来说,本系统的具体特点如下。
1 完备的学习功能
系统设计的学习功能模块,可分为公告通知,语音、视频课程观看,用户注册,在线留言,语音、视频课程下载,论坛讨论等,操作功能健全而不冗余,简约而无遗漏。
2 科学的学习模式
系统采用多种学习方式,学习者可结合自己的情况灵活多样地进行检索,轻松找到适合自己的学习方法;通过学习者意见反馈系统,管理员可以随时把握学习者的各种新的需求,可及时与学习者进行网上互动交流;通过完善的信息发布系统,学习者可以及时得到网站最新动态和新闻,掌握行业动向;后台结构化管理模式涵盖了学科介绍、视频课程、语音视频、留言板、论坛等,为学校的电子化管理提供了一套良好的管理模式。
3 人性化的操作界面
一个网站要想吸引用户经常光顾,就应拥有美观的界面。本互动媒体学习社区通过专业美工的精心打造,让整个网站的功能操作变得十分简捷、可续、合理。
4 完善的安全机制
独立的密码校验功能,可以确保用户和网站数据的安全。
2.3.3 系统目标
根据需求分析的描述以及实际考察,现制定系统目标如下。
* 操作简单方便,界面简洁美观。
* 提供注册功能,用户可以通过注册成为网站会员。
* 对会员提供发布教程和下载教程的功能。
* 提供密码找回功能,当会员忘记密码时可以通过此功能找回。
* 提供留言功能,用户可以通过留言功能进行互动交流。
* 提供查询功能,使用户快速找到需要的教程。
* 提供后台管理功能,管理员通过后台进行网站的维护和管理。
* 系统运行稳定,安全可靠。
2.3.4 确定设计方案——BS体系结构
本系统面向的对象是广大的互联网用户。因此,要采用比较流行的BS三层结构,如图2-1所示。
图2-1 BS三层结构
与CS体系结构相比,BS体系结构不仅具有CS体系结构的全部优点,而且又有CS体系结构所不具备的独特优势,具体说明如下。
* 开放的标准:BS所采用的标准都是开放的、非专用的,是经过标准化组织所确定的,而非单一厂商所制定,保证了其应用的通用性和跨平台性。
* 较低的开发和维护成本:BS的应用只需在客户端安装通用的浏览器即可,维护和升级工作都在服务器端进行,无须对客户端进行任何改变,故而大大降低了开发和维护的成本。
* 用户使用简单,界面友好:BS用户的界面都在统一的浏览器上,浏览器易于使用、界面友好,又因为它不再负责数据的存取和复杂数据计算等任务,只需进行显示,因而大大降低了对客户端的要求。
从以上的分析与比较中可以看出,BS模式具有CS模式无法替代的优越性:它简化了系统的开发和维护,并且特别适用于网上信息发布。因此,我开发的互动媒体学习社区采用了基于BS模式的体系结构。
2.4 需 求 分 析
光盘:视频\第2章\需求分析.avi
需求分析是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据、要得到什么结果、最后应输出什么。可以这么说,软件工程当中的需求分析就是确定要计算机做什么,要达到什么样的效果。在开发软件项目的过程中,需求分析工作是在系统开发之前必须做的重要工作之一。本节将详细讲解本项目需求分析工作的具体过程。
2.4.1 可行性分析
1 风险分析
①系统软件和硬件的风险:尽管采用了性能较高的硬件设备和较稳定的系统软件,网站仍存在一定的因软硬件崩溃而带来的风险。解决办法之一是定期备份数据,以降低风险。
②计划的拖延:网站的开发存在因计划拖延带来的风险。
2 技术可行性
大学学科中的“数据库系统概论”“计算机操作系统”“计算机网络”等多门学科为整个课题开发提供了坚实的基础。C#是一种相对简单的语言,Access也是一种简单的数据库,所以技术难度并不高。
3 操作可行性
该系统如投入使用,预期可以做到界面友好、管理方便、使用简单。管理人员经过培训,即能够使用本网站管理教程的相关信息。
4 经济可行性
该系统可以运行于现在市场上出售的各种个人电脑上,系统成本主要集中在系统的开发上。当系统投入运行后,可以实现在网上学习的功能,所带来的效益远远大于系统软件的开发成本。经济上完全可行。
2.4.2 功能分析
互动媒体学习社区系统从两种用户角度进行功能划分。
1 会员部分
* 学科信息展台:为会员提供学科操作平台。
* 下载视频:会员进行视频下载操作。
* 下载语音:会员进行语音下载操作。
* 观看视频:会员观看学科的视频教程。
* 网站论坛:会员对网站的学科内容和服务进行建议或交流的平台。
2 管理员部分
* 管理员账号管理:添加用户,编辑用户。
* 编辑视频:编辑视频简介,上传学科视频。
* 编辑语音:编辑语音简介,上传语音课程。
* 留言管理:查看留言信息,回复留言信息,删除留言信息。
* 公告管理:发布公告,删除公告。
2.4.3 业务流程
互动媒体学习社区的业务流程如图2-2 所示。
图2-2 业务流程
2.5 总 体 设 计
光盘:视频\第2章\总体设计.avi
本系统采用的是BS三层结构。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统开发、维护和使用。客户端只要安装一个浏览器Browser,如IE浏览器;服务器端安装Access或SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。
根据互动媒体学习社区的特点,可以将其分为前台和后台两个部分进行设计。前台主要实现发布教程发布视频或语音教程,查看已发布的语音教程,查看已发布的视频教程、浏览教程浏览视频或语音教程,发布留言、登录、查询等功能。后台主要实现公告管理管理公告、发布公告、教程管理发布教程、管理视频教程、管理语音教程、用户管理等功能。互动媒体学习社区的前台功能框架如图2-3所示。互动媒体学习社区的后台功能框架如图2-4所示。
图2-3 前台功能框架
图 2-4 后台功能框架
2.6 系 统 预 览
光盘:视频\第2章\系统预览.avi
互动媒体学习社区网由多个页面组成,下面仅列出几个典型页面,其他页面参见光盘中的源程序。首页效果如图2-5所示,主要实现显示导航、最新教程、教程排行、公告信息、登录功能和搜索功能。查看教程页面效果如图2-6所示,主要实现观看视频教程和发布留言功能。发布教程页面如图2-7所示,主要实现教程发布、教程管理功能。后台视频管理页面如图2-8所示,主要实现查看视频详细信息、管理视频留言、删除视频等功能。
图2-5 系统首页
图2-6 查看教程页面
图2-7 发布教程页面
图2-8 后台视频管理页面
作为在线Web系统,网页界面的美感十分重要。好的网页效果能给客户带来视觉冲击,留下好的印象,增加客户的满意度。在具体美化时,我们通常会用一些漂亮的素材图片作为背景,并用CSS来配合完成控件和信息的显示。至于具体怎样搭配,就要根据客户和设计师的喜好了。
2.7 构建开发环境
光盘:视频\第2章\构建开发环境.avi
1. 网站开发环境
* 网站开发环境:Microsoft Visual Studio 2005 集成开发环境。
* 网站开发语言:ASP.NET+C#。
* 网站后台数据库:Microsoft Access。
* 开发环境运行平台:Windows XPSP2Windows 2000SP4Windows Server 2003 SP1Windows 7Windows 8。
?注意:SPService Pack为Windows 操作系统补丁。
2. 服务器端
* 操作系统:Windows 7。
* Web 服务器:Internet 信息服务IIS管理器。
* 数据库服务器:Microsoft Access。
* 浏览器:IE 6.0及以上。
* 网站服务器运行环境:Microsoft .NET Framework SDK 4.5.1。
3. 客户端
* 浏览器:IE 6.0。
* 分辨率:最佳效果为1024×768像素。
2.8 数据库设计
光盘:视频\第2章\数据库设计.avi
数据库技术是动态网站的核心,是实现动态网页效果的根本。本系统将采用Access 数据库作为后台数据库,数据库名称为db_study,其中包含6 个数据表。本节将详细讲解本系统数据库的设计过程。
2.8.1 概念设计?
数据库设计是在系统分析之后进行的,这时功能需求已经明确,只需在DBA的参与下对数据库方案进行详细设计即可。在这一个阶段的设计工作过程中,为了提高开发效率,可以考虑使用第三方设计工具。最佳工具首推PowerDesigner以下简称PD。PD不仅能满足我们的设计需求,还可以通过逆向工程从数据库对象生成设计模型,并且具有相当的灵活性。PD设计界面如图2-9所示。
图2-9 PD设计界面
在概念设计阶段,从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式,然后再把概念模式转换成逻辑模式。利用E-R方法进行数据库的概念设计,可分成三步进行:首先设计局部E-R模式;然后把各局部E-R模式综合成一个全局模式;最后对全局E-R模式进行优化,得到最终的模式,即概念模式。
2.8.2 实体E-R图
通过对网站进行的需求分析与系统功能结构的确定,规划出系统中使用的数据库实体对象分别为公告信息实体、语言类型实体、留言信息实体、会员信息实体和视频教程信息实体由于视频教程信息实体和语音教程信息实体类似,这里只给出视频教程信息实体。本系统中各个实体E-R图的具体说明如图2-10~图2-14所示。
图2-10 公告信息实体E-R图
图2-11 会员信息实体E-R图
图2-12 视频教程信息实体E-R图
图2-13 留言信息实体E-R图
图2-14 语言类型实体E-R图
2.8.3 逻辑设计
根据系统功能设计的要求以及功能模块的划分,在本项目的数据库中需要包含以下数据表。
1公告信息表见表2-1,主要包括公告信息的相关消息例如:公告标题、公告发布时间、公告内容等,以自动增长ID为主键,包括一个外键Name。
表2-1 tb_Bulletin公告信息表
字段名称
数据类型
字段大小
允许为空
说 明
ID
自动编号
长整型
自增编号
公告编号
Title
文本
50
否
公告标题
Content
备注
16
否
公告内容
Date
日期时间
50
否
公告发布时间
Name
文本
50
否
公告发布人
2会员信息表见表2-2,主要用来存储会员注册的信息,以自动增长ID为主键,包括一个外键Name。
表2-2 tb_login会员信息表
字段名称
字段类型
大 小
允许为空
说 明
ID
自动编号
长整型
自增编号
会员编号
Name
文本
50
否
会员登录名
Pass
文本
50
否
会员密码
Email
文本
50
否
电子邮箱地址
IDcard
文本
50
否
身份证号码
Zname
文本
50
否
真实姓名
Sex
文本
4
否
性别
PassQuestion
文本
50
否
密码提示问题
PassSolution
文本
50
否
密码提示答案
LoginDate
日期时间
50
否
注册时间
Lock
数字
长整型
是
锁定状态
3语音教程信息表见表2-3,主要用来存储会员发布的语音教程信息,以自动增长SoundID为主键,包括一个外键Name。
表2-3 tb_Sound语音教程信息表
字段名称
字段类型
大 小
允许为空
说 明
SoundID
数字
自动编号
自增编号
语音教程编号
SoundType
数字
4
否
语音教程语言类型
SoundName
文本
50
否
语音教程名称
SoundUrl
文本
500
否
语音教程存储路径
ClickSum
数字
4
是
语音教程点击率
SoundContent
文本
20
是
语音教程内容简介
FBDate
日期时间
10
否
语音教程发布日期
Name
文本
50
是
语音教程发布人
4视频教程信息表见表2-4,主要用来存储会员发布的视频教程信息,以自动增长VideoID为主键,包括一个外键Name。
表2-4 tb_Video视频教程信息表
字段名称
字段类型
大 小
允许为空
说 明
VideoID
数字
自动编号
自增编号
视频教程编号
VideoType
数字
4
否
视频教程语言类型
VideoName
文本
50
否
视频教程名称
VideoUrl
文本
500
否
视频教程存储路径
ClickSum
数字
4
是
视频教程点击率
VideoContent
文本
20
是
视频教程内容简介
FBDate
日期时间
10
否
视频教程发布日期
Name
文本
50
是
视频教程发布人
5留言信息表见表2-5,主要用来存储用户留言的详细信息。
表2-5 tb_Speak留言信息表
字段名称
字段类型
大 小
允许为空
说 明
SpeakID
自动编号
长整型
自增编号
留言编号
Speaksman
文本
50
否
留言人
TutorialType
文本
50
否
教程类型
TutorialID
数字
4
否
教程编号
SpeakContent
备注
50
是
留言内容
SpeakDate
日期时间
8
否
留言日期
6语言类型表见表2-6,主要用来存储用户选择的编程语言。
表2-6 tb_Type语言类型表
字段名称
字段类型
大 小
允许为空
说 明
TypeID
自动编号
长整型
自增编号
语言类型编号
TypeName
文本
50
是
语言类型名称
7讨论区留言信息表见表2-7,主要用来存储讨论区留言的详细信息。
表2-7 Messages表讨论区留言信息表
字段名称
字段类型
大 小
允许为空
ID
自动编号
长整型
自增编号
TopicID
数字
长整型
否
MsgTitle
文本
50
是
SpeakContent
文本
50
否
续表
字段名称
字段类型
大 小
允许为空
Speaksman
文本
50
否
SpeakDate
文本
50
否
2.9 文件组织结构和功能模块设计
光盘:视频\第2章\文件组织结构和功能模块设计.avi
为了便于读者对本网站的学习和理解,在此将网站文件的组织结构展示出来,这样读者会对本系统从整体结构上有一个大体的了解,便于大家对后面各个文件具体实现过程的学习。
2.9.1 文件组织结构设计
前台文件组织结构如图2-15 所示。后台文件组织结构如图2-16 所示。
图2-15 前台文件组织结构图2-16 后台文件组织结构
2.9.2 用户功能模块设计
1 识别参与者
参与者有游客、会员、管理员。
在用户功能模块中,对于普通用户,提供相关的用户登录、注册、注销、修改密码的功能;而对于后台的管理员,不仅提供相关的登录及验证机制,同时,管理员可以对所有普通用户的信息进行锁定、删除操作。
管理员用例图如图2-17所示。
图2-17 管理员用例图
会员用例图如图2-18所示。
图2-18 会员用例图
2 教程模块的设计
在教程模块中,普通用户与管理员都可以浏览教程信息,所有用户都可以通过教程简介、教程排行来查看信息,也可以通过关键字来查询有关教程的信息。所有用户在观看教程后可以留言。对于注册用户,除了浏览教程外,还可以发布自己的教程。管理员查看并管理教程,对所有教程进行验证。
游客与教程模块、注册用户与教程模块、管理员与教程模块的功能分别如图2-19、图2-20、图2-21所示。
图2-19 游客与教程模块的功能 图2-20 注册用户与教程模块的功能图2-21 管理员与教程模块的功能
3 留言模块的设计
在留言模块中,普通用户或者管理员都可以在网站上进行留言,但管理员能在后台读取并浏览相关留言或者对留言信息进行相应操作处理。
图2-22和图2-23分别为普通用户留言模块及管理员留言模块的功能。
图2-22 普通用户留言模块的功能图2-23 管理员留言模块的功能2.10 公共类设计
光盘:视频\第2章\公共类设计.avi
在软件项目中,公共类的设计遵循了面向对象的模块化设计思想。其主要目的是将在项目中被多次用到的功能编写成独立的类,在使用时直接调用这些类即可。这样做的好处是便于维护,提高开发效率,减少代码编写量。有关模块化设计的好处,读者可以从古龙先生的武侠小说片段中得到启迪。
一座高山,一处低岩,一道新泉,一株古松,一炉红火,一壶绿茶,一位老人,一个少年。
“天下最可怕的武器是什么?”少年问老人,“是不是例不虚发的小李飞刀?”
“以前也许是,现在却不是了。”
“为什么?”
“因为自从小李探花仙去后,这种武器已成绝响。”老人黯然叹息,“从今以后,世上再也不会有小李探花这种人;也不会再有小李飞刀这种武器了。”
少年仰望高山,山巅白云悠悠。
“现在世上最可怕的武器是什么?”少年又问老人,“是不是蓝大先生的蓝山古剑?”
……
“不是。”老人道,“你说的这些武器虽然都很可怕,却不是最可怕的一种。”
“最可怕的一种是什么?”
“是一口箱子。”
“一口箱子?”少年惊奇极了,“当今天下最可怕的武器是一口箱子?”
“是的。”
这是出自古龙的武侠名著《英雄无泪》的一段对白,没错,最厉害的武器是一口箱子。等看完整本小说之后才明白,这不是一口简单的箱子,箱子里有很多个零部件,能够根据不同的对手而迅速组成一个战胜对手的武器。将箱子中的武器引申到C#程序中,会发现这个箱子和程序中的类十分相似。我们要编程解决一个问题,要实现某个功能,可以编写一个类来实现它。如果有多个问题,则编写多个类就可以实现,类就是我们编程中的那个神秘的箱子。
数据库操作类用来完成数据库的连接操作以及数据库的查询、添加、删除和修改操作,将这几种操作编写到一个公共类里,可以减少重复代码的编写,有利于代码的维护。本节将详细讲解本系统公共类的具体设计过程。
2.10.1 数据库操作类设计
创建数据库操作类的方法:在Microsoft Visual Studio 2013 菜单栏中选择【网站】|【添加新项】命令,在弹出的【添加新项】对话框中选择【类】,将其命名为“dataOperate.cs”,如图2-24所示。
图2-24 创建数据库操作类
单击【添加】按钮将弹出一个提示对话框,如图2-25 所示,询问是否将刚才创建的类存放在App_Code 文件夹中,单击【是】按钮,完成数据库操作类的创建。
图2-25 提示对话框
在解决方案资源管理器里的App_Code 文件夹中可以看到新创建的数据库操作类。双击数据库操作类,进行此类的编写。在此类里可以看到系统自动添加的命名空间、公共类和构造函数。由于此类需要对数据库进行操作,所以需要引用命名空间System.Data.OleDb。代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
summary
dataOperate 的摘要说明
summary
public class dataOperate
{
public static DataSet ds;
public dataOperate
{
TODO: 在此处添加构造函数逻辑
}
}
在dataOperate 类中一共定义了6 个方法,下面分别对这几个方法进行讲解。
1createCon 方法
createCon方法用来连接数据库。此方法返回的类型为OleDbConnection,主要用来构造数据库的连接。代码如下:
public OleDbConnection createCon
{
OleDbConnection odbc = new OleDbConnection"Provider=Microsoft.Jet.OLEDB.4.0;Data
source=|DataDirectory|db_study.mdb;"; 生成OleDbConnection的一个对象用于连接数据库
return odbc;
}
2adlData 方法
adlDatastring sql方法用来添加或删除数据。此方法返回一个布尔值,用来表示添加或删除数据是否成功,执行成功返回true;否则返回false。调用此方法时应传入一个string 类型的参数,此参数表示所要执行的SQL 语句。代码如下:
public bool adlDatastring sql
{
OleDbConnection Odbc =createCon; 调用createCon方法连接数据库
Odbc.Open; 打开数据库连接
OleDbCommand com = new OleDbCommandsql, Odbc; 对Access数据库执行一个SQL语句
int i = Convert.ToInt32com.ExecuteNonQuery; 返回所影响的行并转换成int类型
Odbc.Close;
if i 0
{
return true;
}
else
{
return false;
}
}
3isData 方法
isDatastring sql方法用来查找数据是否存在。此方法返回一个整型值,用来表示是否查找到数据,查找到数据则返回一个大于0的值;否则返回0。调用此方法时应传入一个string 类型的参数,此参数表示所要执行的SQL 语句。代码如下:
public int isDatastring sql
{
OleDbConnection Odbc =createCon; 调用createCon方法连接数据库
Odbc.Open; 打开数据库连接
OleDbCommand com = new OleDbCommandsql, Odbc; 对Access数据库执行一个SQL语句
int i = Convert.ToInt32com.ExecuteScalar; 返回首行首列
Odbc.Close;
return i;
}
4UpdateData 方法
updateDatastring sql方法用来更新数据。此方法没有返回值。在调用此方法时应传入一个string类型的参数,此参数表示所要执行的SQL 语句。代码如下:
public void updateDatastring sql
{
OleDbConnection Odbc =createCon; 调用createCon方法连接数据库
Odbc.Open; 打开数据库连接
OleDbCommand com = new OleDbCommandsql,Odbc; 对Access数据库执行一个SQL语句
com.ExecuteScalar; 返回首行首列
Odbc.Close;
}
5row方法
rowstring sql方法用来查找并返回一行数据。此方法返回一个OleDbDataReader 对象。在调用此方法时应传入一个string 类型的参数,此参数表示所要执行的SQL 语句。代码如下:
public OleDbDataReader rowstring sql
{
OleDbConnection Odbc =createCon; 创建OleDbConnection对象
Odbc.Open; 打开数据库连接
OleDbCommand com = new OleDbCommandsql, Odbc;
return com.ExecuteReader; 返回OleDbDataReader对象
}
6rows 方法
rowsstring sql, string table方法用来查找并返回多行数据。此方法返回一个DataTable 对象。在调用此方法时应传入两个string 类型的参数:第一个参数表示要执行的SQL语句;第二个参数表示表名。代码如下:
public DataTable rowsstring sql, string table
{
DataSet ds;
OleDbConnection Odbc =createCon;
Odbc.Open;
OleDbDataAdapter oda = new OleDbDataAdaptersql,Odbc;
ds = new DataSet; 创建数据集
oda.Fillds,table; 填充数据集
Odbc.Close;
return ds.Tables[table]; 返回数据表
}
2.10.2 业务功能类设计
业务功能类用来存放开发中常用的方法,可以减少重复代码的编写,有利于代码的维护。在此类中有两个自定义方法:Encrypting 方法和Decrypting 方法,这两个方法主要用来完成重要信息的加密和解密。
1Encrypting 方法
Encryptingstring Source方法用来对比较重要的信息进行加密操作。此方法返回一个string 类型的值,该值表示已经加密的信息。在调用此方法时应传入一个string 类型的参数,此参数表示需要加密的信息。代码如下:
public static string Encryptingstring strSource
{
把字符串放到byte数组中
byte[] bytIn = System.Text.Encoding.Default.GetBytesstrSource;
建立加密对象的密钥和偏移量
byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 }; 定义偏移量
byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 }; 定义密钥
实例DES加密类
DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider;
mobjCryptoService.Key = iv;
mobjCryptoService.IV = key;
ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor;
实例MemoryStream流加密文件
System.IO.MemoryStream ms = new System.IO.MemoryStream;
CryptoStream cs = new CryptoStreamms, encrypto, CryptoStreamMode.Write;
cs.WritebytIn, 0, bytIn.Length;
cs.FlushFinalBlock;
return System.Convert.ToBase64Stringms.ToArray;
}
2Decrypting 方法
Decryptingstring Source方法用来对已加密的信息进行解密。此方法返回一个string 类型的值,该值表示解密后的信息。在调用此方法时应传入一个string 类型的参数,此参数表示需要解密的信息。代码如下:
public static string Decryptingstring Source
{
try
{
将解密字符串转换成字节数组
byte[] bytIn = System.Convert.FromBase64StringSource;
给出解密的密钥和偏移量,密钥和偏移量必须与加密时的密钥和偏移量相同
byte[] iv = { 102, 16, 93, 156, 78, 4, 218, 32 }; 定义偏移量
byte[] key = { 55, 103, 246, 79, 36, 99, 167, 3 }; 定义密钥
DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider;
mobjCryptoService.Key = iv;
mobjCryptoService.IV = key;
实例流进行解密
System.IO.MemoryStream ms = new System.IO.MemoryStreambytIn, 0, bytIn.Length;
ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor;
CryptoStream cs = new CryptoStreamms, encrypto, CryptoStreamMode.Read;
StreamReader strd = new StreamReadercs, Encoding.Default;
return strd.ReadToEnd;
}
catch Exception ex
{
throw new Exception"在文件解密的时候出现错误!错误提示: \n" + ex.Message;
}
}
?注意:实现Encrypting 方法和Decrypting 方法需引用System.Security.Cryptography命名空间、System.IO命名空间、System.Text命名空间。
2.11 网站首页设计
光盘:视频\第2章\网站首页设计.avi
界面设计是窗体项目的第一个步骤,需要在Visual Studio 2013窗体中插入布局控件。网站首页是项目运行后显示的界面,用户可以在此页面上实现对游戏的控制,使用Visual Studio 2013可以轻松地实现网页的设计。在网页设计过程中,需要遵循网站用户界面的设计原则。
网站用户界面是指网站用于和用户交流的外观、部件和程序等。广大读者在上网时会看到,很多网站设计得很朴素,看起来很舒服;有的网站很有创意,能给人带来意外的惊喜和视觉冲击。而相当多的网站界面上充斥着怪异的字体、花哨的色彩和图片,给人以软件制作粗劣的感觉。网站界面的设计,既要从外观上进行创意以到达吸引眼球的目的,还要结合图形和版面设计的相关原理,从而使得网站设计变成一门独特的艺术。通常来讲,企业网站用户界面的设计应遵循以下几个基本原则。
1 用户导向User oriented原则
设计网站首先要明确到底谁是使用者,要站在用户的观点和立场上来考虑。要做到这一点,必须要与用户沟通,了解他们的需求、目标、期望和偏好等。界面的设计者要清楚,用户之间差别很大,他们的需求和审美各有不同。另外,用户使用的计算机配置也千差万别,包括显卡、声卡、内存、网速、操作系统以及浏览器等都会有不同。设计者如果忽视了这些差别,设计出的网页在不同的机器上显示会造成混乱。
2KISSKeep It Simple And Stupid原则
KISS 原则就是Keep It Simple And Stupid的缩写,简洁和易于操作是网页设计最重要的原则。毕竟,网站建设出来是为普通网民来查阅信息和使用网络服务的。没有必要在网页上设置过多的操作,堆积上很多复杂和花哨的图片。该原则一般的要求是减少大幅图片和动画的使用,确保操作设计尽量简单,并且有明确的操作提示,软件所有的内容和服务都在显眼处向用户予以说明等。
3 布局控制
关于界面排版布局方面,很多界面设计者重视不够,界面排版设计得过于死板,甚至照抄他人。如果界面的布局凌乱,仅仅把大量信息堆积在页面上,会干扰浏览者的阅读。一般在界面设计上要遵循的原理有:
* Miller 公式
* 分组处理
4 色彩的搭配和文字的可阅读性
颜色是影响网页的重要因素,不同的颜色会给人不同的感觉,例如:红色和橙色使人兴奋并心跳加速;黄色使人联想到阳光,是一种快活的颜色;黑色显得比较庄重。
为方便阅读网页上的信息,可以参考报纸的编排方式,将软件内容分栏设计,甚至两栏也要比一满页的视觉效果要好。另一种能够提高文字可读性的因素是所选择的字体,通用的字体Arial、Courier New、Garamond、Times New Roman、中文宋体最易阅读,特殊字体用于标题效果较好,但是不适合正文。如果在整个页面使用一些特殊字体如Cloister、Gothic、Script、Westminster、华文彩云、华文行楷,读者阅读起来感觉会很糟糕。该类特殊字体如果在页面上大量使用,会使得阅读颇为费力,浏览者的眼睛很快就会疲劳,不得不转移到其他界面。
5 和谐与一致性
通过对网站的各种元素颜色、字体、图形、空白等使用一定的规格,使得设计良好的界面看起来应该是和谐的。或者说,网站的众多单独界面应该看起来像一个整体。网站设计上要保持一致性,这又是很重要的一点。一致的结构设计,可以让浏览者对网站的形象有深刻的记忆;一致的导航设计,可以让浏览者迅速而又有效地进入网站中自己所需要的部分;一致的操作设计,可以让浏览者快速学会整个网站的各种功能操作。破坏这一原则,会误导浏览者,并且让整个网站显得杂乱无章,给人留下不好的印象。
6 个性化
1符合网络文化
企业网站不同于传统的企业商务活动,要符合互联网网络文化的要求。整个互联网的文化是一种休闲的、非正式性的、轻松活泼的文化。在网站上使用幽默的网络语言,创造一种休闲的、轻松愉快、非正式的氛围会使软件的访问量大增。
2塑造网站个性
网站首页的整体风格和整体气氛表达要同企业形象相符合并应该很好地体现企业CI。在这方面比较经典的案例有,可口可乐个性鲜明的前卫网站首页“Life Tastes Good”;工整、全面、细致的通用电气公司网站首页“We bring good things to lifeGE带来美好的生活”;崇尚科技创新文化的3M公司网站首页“Creating solutions for business,industry and home”;刻意扮演一个数字电子娱乐之集大成者的角色,要成为新时代梦想实现者的索尼网站首页。
在接下来的内容中,将遵循上述网站首页设计原则创建互动媒体学习社区的首页。网站首页中包括如下模块。
* 网站导航:包括【发布教程】、【视频课堂】、【语音课堂】、【注册】、【联系我们】等导航按钮。
* 教程搜索:可以根据教程类型和教程语言进行搜索。
* 网站公告:网站近期的动态,或是一些通告事项。
* 用户登录:只有登录用户才有权限发布教程和下载教程。
* 最新发布教程:包括最新发布的视频教程和语音教程。
* 教程排行榜:包括点击率最高的视频教程和语音教程。
首页设计的好坏直接影响到浏览者及用户对网站的印象,因此页面整体布局要合理、简洁、美观。网站首页的运行效果如图2-26所示。
图2-26 网站首页
在主页Web 窗体的加载事件中调用各个功能绑定到DataList 控件上的方法。实现代码如下:
protected void cretVideo
{
try
{
string Sql = "SELECT top 10 * from tb_Video as a inner join tb_Type as b on a.VideoType=b.TypeID ORDER BY VideoID DESC"; gvNewVideo.DataSource = mydo.rowsSql, "tb_Video".DefaultView;
gvNewVideo.DataBind;
}
catch Exception error
{ Response.Redirecterror.Message.ToString;}
}
最新语音
protected void creatSound
{
try
{
string Sql = "select top 10 * from tb_sound as a inner join tb_Type as b on a.SoundType=b.TypeID order by SoundID DESC";
gvNewSound.DataSource = mydo.rowsSql, "tb_sound".DefaultView;
gvNewSound.DataBind;
}
catch Exception error
{
Response.Writeerror.ToString;
Response.Write"script language=javascriptalert''数据库失败''script";
}
}
2.12 实现用户注册模块
光盘:视频\第2章\实现用户注册模块.avi
浏览者可以通过用户注册功能注册成为本网站的会员,用户注册并登录后,可以发布自己制作的视频教程和语音教程,也可以下载自己喜欢的教程。当用户在首页单击导航栏中【注册】按钮或在登录模块中单击【新用户注册】按钮时,将进入用户注册页面。实现用户注册信息时应注意:用户名不能为空,密码必须填写,两次密码输入必须一致,电子邮件地址、格式和身份证号位数必须正确。这些信息的验证都是通过服务器验证控件实现的。用户注册页面如图2-27所示。
图2-27 用户注册页面
2.12.1 login.aspx页面部分代码分析
首先通过调用add方法将用户添加的注册信息添加到数据库中,具体实现代码如下:
protected bool add
{ dataOperate mydo = new dataOperate; 创建数据库操作类的对象
string name = txtName.Text;
string pass =Operate.EncryptingtxtPass.Text; 调用业务功能类中的Enctypting方法将用户密码进行加密
string sex; 获取性别
if RadioButtonMan.Checked
{
sex = "男";
}
else
{
sex = "女";
}
string trueName = txtTrueName.Text;获取真实姓名
string idCard = this.txtIDCard.Text;获取电话
string passQuestion = this.txtPassQuestion.Text;
string passSolution = FormsAuthentication.HashPasswordForStoringInConfigFilethis.txtPassSolution.Text, "MD5";
根据指定的密码和哈希算法生成一个适合于存储在配置文件中的哈希密码
string email = txtEmail.Text;获取电子邮件
string sql = "insert into tb_loginName,Pass,ZName,Sex,Email,IDCard,PassQuestion,PassSolution values''" + name + "'',''" + pass + "'',''" + trueName + "'',''" + sex + "'',''" + email + "'',''" + idCard + "'',''" + passQuestion + "'',''" + passSolution + "''";
return mydo.adlDatasql;
}
2.12.2 用户登录设计
在登录框中输入对应的用户名、密码后,确定登录,提交后所需参数会传到后台的entry.aspx中,如图2-28所示。
图2-28 用户登录框
首先通过用户名对数据库中的tb_login表进行检索,若检索到的记录集为空,则提示用户名不正确;若记录不为空,再进行密码判断,若密码与数据表中的密码不一致,则同样提示错误信息;若用户名与密码都正确,则成功登录后台管理页面,并将用户以Session对象保存起来。用户登录流程如图2-29所示。
图2-29 会员登录流程
当用户注册为本网站的会员后,必须进行登录后才能使用上传或下载教程和管理教程的功能。当用户登录成功后进行留言时,会将发言人保存为用户的登录名。如果是普通用户,发言人将保存为游客。这里主要应用了Session对象,利用Session对象来保存用户登录名。当用户发布教程或发布留言时,可以将Session对象保存的用户名添加到数据库中。Session对象是HttpSessionState类的一个实例,其功能是存储跨网页程序的变量或者对象。Session对象只针对单一界面使用,也就是说各个连接的机器都有各自的Session对象,不同的客户端无法互相存取。Session对象中止于联机机器离线时,也就是当界面使用者关掉浏览器或超过设定的Session变量的有效时间时,Session对象就会消失。Session对象常用属性及说明如下。
1Contents属性:获取对当前会话状态对象的引用。
语法:Public HttpSessionState Contents{get;}
属性值:当前的HttpSessionState。
2Item属性:获取或设置会话值,该属性可重载,它有两种格式。
①按数字索引获取或设置会话值。
语法:public Object this[int index]{get;set;}
属性值:存储在指定索引中的会话状态值。
②按名称获取或设置会话值。
语法:public Object this[string name]{get;set;}
属性值:带指定名称的会话状态值。
3TimeOut属性:获取并设置在会话状态提供程序终止会话之前各请求之间所允许的时间以分钟为单位。
语法:public int Timeout{get;set;}
属性值:超时期限以分钟为单位。
登录功能的实现需要先判断验证码是否正确,验证码正确后需要使用数据库操作类中的row方法来判断用户输入的用户名和密码是否正确。实现代码如下:
protected void imgbtnLanding_Clickobject sender,ImageClickEventArgs e
{
string name = txtName.Text; 将登录名存储到变量中
string pass = Operate.EncryptingtxtPass.Text;将密码加密并存储到变量中
string yzm = txtYzm.Text; 将验证码存储到变量中
if Session["CheckCode"].ToString.Equalsyzm 判断验证码是否正确
Session[''CheckCode'']:用来存储自动生成的验证码
{
try
{
string sql = "select count* from tb_login where Name=''" + name + "'' and Pass =''" + pass + "''"; 调用数据库操作类中的isData方法判断用户是否存在
int i = mydo.isDatasql;
if i 0
{
sql = "select * from tb_login where Name=''" + name + "''";
OleDbDataReader odr = mydo.rowsql;返回一条记录
odr.Read;
if odr["lock"].ToString == "0"判断用户是否锁定
{
Session["UserName"] = name; 将登录名保存到Session中
Response.Redirect"index.aspx";
}
else
{
Page.RegisterStartupScript"false", "scriptalert''此用户已被锁定!''script";
}
}
else
{
Response.Write"scriptalert''密码或用户名错误!''script";
}
} catch Exception ex
{
Response.Writeex.Message.ToString;
}
} else
{
Page.RegisterStartupScript"false", "scriptalert''验证码错误!''script";
}
}
2.13 发布并管理教程
光盘:视频\第2章\发布并管理教程.avi
网站的会员用户可以将自己制作的或从其他途径收集到的教程发布到网站上,供其他用户使用,还可以对自己发布的教程进行管理,以及查看其他用户的留言,效果如图2-30所示。
图2-30 发布教程页面
当用户登录成功后,单击【发布教程】按钮,将进入发布教程页面,发布并管理教程的流程如图2-31所示。
图2-31 发布并管理教程流程
2.13.1 发布教程
在主页Web窗体的加载事件中需要先判断用户是否登录,如果已登录才可以发布教程或管理自己发布的教程;如果没有登录,将弹出对话框,跳转到首页。而在发布教程时,当用户将教程信息添加正确后,单击【发布】按钮,系统即将用户所发布的教程信息保存到数据库中,此方法的代码如下:
protected void btnFB_Clickobject sender, EventArgs e
{
string vsname = txtName.Text; 获取教程名称
string isVS;
if rdibtnSound.Checked 获取教程类型
{
isVS = "tb_Sound";
}
else
{
isVS = "tb_Video";
}
string typ = this.ddlLanguage.SelectedValue; 获取课程类型
string content = txtContent.Text; 获取内容简介
string name = Session["UserName"].ToString; 获取用户登录名
int clicksum = 0; 初始化点击率
string Path = "";
try
{
string sql = "";
if isVS == "tb_Sound" 判断教程是否是语音类型
{
判断用户上传的文件类型 ifFileUpload1.FileName.SubstringFileUpload1.FileName.LastIndexOf"." + 1 == "mp3"
{
判断用户上传的语音教程是否存在
if !File.ExistsServer.MapPath"." + "\\Sound\\" + this.FileUpload1.FileName
{
sql = "insert into tb_SoundSoundType,SoundName,SoundUrl,ClickSum,SoundContent,Name values''" + typ + "'',''" + vsname + "'',''" + this.FileUpload1.FileName + "'',''" + clicksum + "'',''" + content + "'',''" + name + "''";
设置路径用于保存上传的语音
Path = Server.MapPath"." + "Sound" + "\\" + this.FileUpload1.FileName;
if mydo.adlDatasql
{ 将文件保存到指定位置
FileUpload1.PostedFile.SaveAsPath;
Page.RegisterStartupScript"true", "scriptalert''上传成功!''script";
txtName.Text="";
txtContent.Text="";
&nb
|
|