Asp.net 实训教程


全国信息化计算机应用技术资格认证推荐教材 软件工程师实训系列教程 Asp.net 高级开发实训教程 师创教育 编著 书名:Asp.net 高级开发实训教程 版本号:V3.0 声 明: 1. 本书为内部资料,仅供师创教育授权单位与合作院校使用; 2. 本书所有权归师创教育所有,未经许可,任何单位与个人不得使用本书内容; 3. 发现本书印刷质量问题,请及时与师创教育联系,公司负责免费调换。 Asp.net 高级开发实训教程 前言 本教程是师创教育“软件工程师实训”系列教程之一,要求学生通过对本实训教程的学 习,对于 ASP.NET 有一定的认识,通过本课程学习认识 ASP.NET 语言程序设计思路,掌握 ASP.NET 解决现实生活问题的方法,同时对 ASP.NET 语言程序设计能力进行巩固和提高。 本书主要内容分为三个阶段:基础知识、高级部分和企业级开发。其中基础知识主要介 绍.NET Framework 和 ASP.NET 基本概念,ASP.NET 的 Web 窗体和控件,Web 应用程序的调试 跟踪机制和异常处理,自定义控件的创建和使用,ASP.NET 组件。高级部分主要包含 ASP.NET 读写 XML 数据,开发和使用 XML Web 服务,配置、优化和部署 ASP.NET Web 应用程序,Web 的安全性机制,委托、内存资源管理,线程异步编程及平台调用,ADO.NET。企业级开发主 要包含 Ajax 应用和企业级框架 MVC 的综合应用。 本书章节主要内容如下: 第一阶段:基础部分主要介绍该阶段项目需求,项目的分析与设计,页面的组织方式。 利用基础部分的知识点,灵活运用各个控件完成该阶段的项目案例。 第二阶段:高级部分主要介绍该阶段的项目背景、项目的需求分析、详细设计与数据库 设计,页面的组织方式。利用高级部分的知识点,按照需求要求完成该阶段 的项目案例。 第三阶段:企业级项目开发应用主要介绍项目开发背景、项目的需求、详细设计和数据 库设计,页面的组织方式,灵活运用 ASP.NET 的控件,结合 Ajax 和 MVC 框架, 完成较复杂的项目并打包部署,重点介绍项目中的各个模块的具体实现和项 目中存在的重难点、疑难点。 Asp.net 高级开发实训教程 ASP.NET 课程体系结构 Asp.net 高级开发实训教程 目 录 第一阶段 语言核心 ......................................................................................................................... 1 客户信息管理系统 ................................................................................................................... 2 1.项目背景 ....................................................................................................................... 3 2.需求分析 ....................................................................................................................... 3 3.详细设计 ....................................................................................................................... 3 4.数据库设计 ................................................................................................................... 4 5.界面设计 ....................................................................................................................... 5 电子相册系统 ........................................................................................................................... 7 1.项目背景 ........................................................................................................................ 8 2.需求分析 ........................................................................................................................ 8 3.详细设计 ........................................................................................................................ 9 4.界面设计 ...................................................................................................................... 10 BBS 论坛系统 ......................................................................................................................... 14 1.项目背景 ...................................................................................................................... 15 2.需求分析 ...................................................................................................................... 15 3.详细设计 ...................................................................................................................... 16 4.数据库设计 .................................................................................................................. 17 5.界面设计 ...................................................................................................................... 19 第二阶段 高级开发应用 ............................................................................................................... 24 新闻发布系统 ......................................................................................................................... 25 1.项目背景 ...................................................................................................................... 26 2.需求分析 ...................................................................................................................... 26 3.详细设计 ...................................................................................................................... 27 4.数据库设计 .................................................................................................................. 29 5.界面设计 ...................................................................................................................... 30 考勤管理系统 ......................................................................................................................... 38 1.项目背景 ...................................................................................................................... 39 2.需求分析 ...................................................................................................................... 39 3.详细设计 ...................................................................................................................... 40 4.数据库设计 .................................................................................................................. 44 5.界面设计 ...................................................................................................................... 49 酒店管理系统 ......................................................................................................................... 58 1.项目背景 ...................................................................................................................... 59 2.需求分析 ...................................................................................................................... 59 3.详细设计 ...................................................................................................................... 59 4.数据库设计 .................................................................................................................. 63 5.界面设计 ...................................................................................................................... 65 第三阶段 企业级开发应用 ........................................................................................................... 74 管理信息系统 ......................................................................................................................... 75 1.项目背景 ...................................................................................................................... 76 2.需求分析 ...................................................................................................................... 76 Asp.net 高级开发实训教程 3.详细设计 ...................................................................................................................... 77 4.界面设计 ...................................................................................................................... 78 学生综合管理系统 ................................................................................................................. 87 1.项目背景 ...................................................................................................................... 88 2.需求分析 ...................................................................................................................... 88 3.详细设计 ...................................................................................................................... 89 4.数据库设计 .................................................................................................................. 92 5.界面设计 .................................................................................................................... 101 附录一 编程规范 ......................................................................................................................... 114 1.规范制定原则 ................................................................................................................... 114 2.编码规范的必要性 ........................................................................................................... 114 3.编码规范的要点 ............................................................................................................... 114 4.注意点 ............................................................................................................................... 114 5.ASP.NET 编码规范 ............................................................................................................ 115 附录二 代码重构 ......................................................................................................................... 120 1.ASP.NET 代码模型:单文件和代码隐藏 ........................................................................ 120 2.母版页面 ........................................................................................................................... 124 3.Web 用户控件与自定义的服务器控件 ............................................................................ 127 附录三 结对编程 ......................................................................................................................... 132 机制一:结对编程者的交谈 ............................................................................................... 132 机制二:结对编程者会注意到更多细节 ........................................................................... 133 机制三:与不好的实践作斗争 ........................................................................................... 133 机制四:分享并评价专家的意见 ....................................................................................... 133 1 Asp.net 高级开发实训教程 第一阶段 语言核心 本阶段项目 1.客户信息管理系统 2.电子相册系统 3.BBS 论坛系统 2 Asp.net 高级开发实训教程 客户信息管理系统 项目编号:BS-ASP.NET-001  项目概述 客户信息管理系统简介 项目名称 客户信息管理系统 时间安排 共 6-8 课时,理论 2,实践 4-6 有效代码量 500-600 行 项目难度 ★★☆☆☆ 项目简介 客户信息管理系统要求实现:添加、查询、更新和删除客户信息功能。以有 效提高对客户信息管理的工作效率。 项目目的 学习使用 Asp.net 页面技术,熟悉 Asp.net 页面的常用控件,以开发出有着 良好用户体验的系统 项目覆盖技 能点 1、ASP.NET 页面原理 2、ASP.NET 常用控件 2、ASP.NET 事件模型 3、数据控件 GridView、DataList 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 通过学习本案例,学生掌握利用 VS2008 开发大中型 B/S 软件的各项技巧, 在开发文档齐全的情况下,学生可以自行完成项目的开发,通过该项目的实 践开发,学生可提高自学能力,并对整个软件开发过程有了较为深刻的认识 技术重点 ASP.NET 页面的常用控件、事件模型 ADO.NET 的使用 技术难点 数据控件 GridView、DataList 3 ASP.NET 实训教材 1.项目背景 随着信息化时代的到来,计算机网络已不再是计算机人员和军事部门进行科研的领域, 按业务分类包括了广告公司,航空公司,农业生产公司,艺术,导航设备,书店,化工,通 信,计算机,咨询,娱乐,财贸,各类商店,旅馆等等 100 多类,覆盖了社会生活的方方面 面,构成了一个信息社会的缩影。从目前的情况来看,网络应用市场仍具有巨大的发展潜力, 未来其应用将涵盖从办公室共享信息到市场营销、服务等广泛领域。另外,网络也越来越贴 近我们的生活,我们在网上浏览新闻,查找信息,收发电子邮件,以及网上办公等。 客户信息管理系统就是基于网络的一个简单应用程序,只要在有网络的地方,就能使用 系统完成客户信息的管理。极大的方便了用户的操作,为用户提供了便捷高效的服务。 2.需求分析 通过了解用户的需求,实现对客户的信息进行综合管理,系统需要实现功能如下: 1. 添加客户信息功能: 2. 查询客户信息功能: 3. 修改客户信息功能: 4. 删除客户信息功能: 3.详细设计 3.1 系统用例图 系统用例图 4 Asp.net 高级开发实训教程 3.2 功能细节 1. 根据用户的需求,客户信息管理系统采用 B/S 架构,为了能够达到好的用户体验, 对界面进行了美化。系统的功能比较简单,可以用一个页面来实现。考虑到系统的易用性, 客户信息管理系统的主操作界面应该是显示客户信息列表,即根据查询条件查询出客户信息 列表。客户信息管理系统的页面布局和风格采用主题和皮肤控制,主题中的样式表用来控制 页面的整体外观和布局,皮肤用来控制服务器控件的外观。 2. 对于添加客户信息,可以在主界面上放置“添加”按钮,当点击“添加”按钮时, 弹出新页面,在 新页面上完成新客户的添加功能,添加成功后再回到主操作界面。为“删除” 按钮,添加一个漂亮的删除确认对话框。 3. 用户在文本输入框内输入搜索条件,可以实现条件搜索,当点击文本框的时候能弹 出日期控件,让用户来选择日期。 4. 为了方便用户操作,添加、修改和删除功能可以分别放在不同页面实现。操作成功 并显示操作后的结果,用户操作完成,要给出相应的提示。 4.数据库设计 客户信息表字段设计如下: 表名 tb_customer(客户信息表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 customer_ID 客户编号 int 非空 PK(自增) customer_Name 客户名称 varchar(32) 非空 customer_Type 客户类型 varchar(16) 非空 customer_Info 供求产品 varchar(256) 非空 customer_Date 客户建立日期 datetime 非空 customer_Tel 客户电话号码 varchar(16) 空 customer_Mobile 客户手机号码 varchar(16) 非空 客户信息表设计 5 ASP.NET 实训教材 5.界面设计 5.1 添加新客户信息界面 添加客户信息界面 5.2 查询客户信息界面 客户信息查询界面 6 Asp.net 高级开发实训教程 5.3 修改客户信息界面 修改客户信息界面 5.4 删除客户信息界面 删除客户信息界面 7 ASP.NET 实训教材 电子相册系统 项目编号:BS-ASP.NET-002  项目概述 电子相册系统简介 项目名称 电子相册系统 时间安排 共 6-8 课时,理论 2,实践 4-6 有效代码量 600-700 行 项目难度 ★★☆☆☆ 项目简介 电子相册系统: 该系统要求可以创建相册、修改相册信息、查询相册信息和删除相册功 能 选中某一个相册,可以上传图片、修改图片信息、查看图片的详细信息 和删除图片的功能,该系统要求可以上传图片并添加到数据库 项目目的 本案例要求能够理解事件模型,掌握常用控件的使用,能够利用这些框架增 强软件的交互性,提高用户体验 项目覆盖技 能点 1、ASP.NET 页面原理、事件模型、常用控件 2、DataList、用户控件等 3、DropDownList 控件 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 通过学习本案例,学生掌握利用 VS2008 开发中小型 B/S 软件的各项技巧, 在开发文档齐全的情况下,学生可以自行完成项目的开发,通过该项目的实 践开发,学生可提高自学能力,并对整个软件开发过程有了较为深刻的认识 技术重点 ASP.NET 页面的常用控件 ADO.NET 的使用 常用控件 DataList、DropDownList、用户控件 技术难点 事件模型、ADO.NET 的使用,图片上传 8 Asp.net 高级开发实训教程 1.项目背景 随着人们生活水平的逐步提高,旅游成了大家必不可少的放松项目,每当笔者走到一个 美丽的景点,就会忍不住拿起数码相机照上几张留做回忆。虽然照片最后会存入到自己的电 脑里,但是时间一长、照片一多,这些有能勾起回忆的资料,就会显得杂乱无章,即不方便 欣赏,也不方便管理。而在线相册具有欣赏、传播方便,界面美观等特点,可以很好的管理 所存入的照片,不失为最佳欣赏、保存照片的相册工具。另外随着数码相机、手机照相等功 能的普及,想必每个人手上都储存了大量的电子相片,但此照片如果不进行处理,仅仅以一 张张图片的形式放置在电脑上,不仅不易观赏,也不方便分类管理,是否有软件能将这些照 片整理成一本本的相册呢?在线电子相册系统平台就是一款集相册制作、生成、浏览专业软 件,有了它的帮助,制用相册再也不需要专业的技术,普通用户也可以在五分钟内制作出精 美的在线相册。 2.需求分析 通过了解用户的需求,需要先创建相册,然后再向该相册添加图片,系统需要实现功能 如下: 1. 添加相册信息功能 2. 查询相册信息功能 3. 修改相册信息功能 4. 删除相册信息功能 5. 添加图片信息功能 6. 查询图片信息功能 7. 修改图片信息功能 8. 删除图片信息功能 9 ASP.NET 实训教材 3.详细设计 3.1 系统用例图 系统用例图 3.2 功能细节 1. 添加相册信息功能 根据用户的需要,先对图片进行分类,然后按照图片的不同分类创建不同类别的相册。 2. 查询相册信息功能 按照相册名称或者相册简介查询相册名称、创建时间、封面图片,简介等信息,同时为 每个相册添加图片、浏览相册中的图片、修改相册、删除等链接。 3. 修改相册信息功能 对指定的相册信息进行修改,可以修改相册名称、封面图片、相册简介等信息。 4. 删除相册信息功能 对指定的相册信息进行删除,删除相册信息前要进行删除信息确认。 5. 添加图片信息功能 添加图片前一定要选择某一个相册,然后点击选择文件上传按钮,此处需要实现图片的 上传功能,添加图片简介,最后进行上传图片,图片要保存到数据库中。 6. 查询图片信息功能 先选中要查看的相册,然后查询所有图片信息:图片名称、图片所属相册的名称、图片 上传的时间、图片的简介、多选框等。点击选择链接,显示该张图片的所有信息,该图片需 要从数据库中读取出来,并进行转化。 7. 修改图片信息功能 10 Asp.net 高级开发实训教程 选中某一张图片,点击后面修改图片所属相册和简介链接,可以修改图片所属的相册和 图片的简介,要求相册名称用以下列表形式。 8. 删除图片信息功能 可以通过多选框一次删除单张或者多张图片,点击删除所选项时要求弹出确认删除框。 4.界面设计 1.相册管理主界面 2.创建相册界面 11 ASP.NET 实训教材 3.查询相册界面 4.修改相册界面 5.删除相册界面 12 Asp.net 高级开发实训教程 6.添加图片界面 7.浏览图片界面 13 ASP.NET 实训教材 8.修改图片界面 9.删除图片界面 14 Asp.net 高级开发实训教程 BBS 论坛系统 项目编号:BS-ASP.NET-003  项目概述 BBS 论坛系统简介 项目名称 BBS 论坛系统 时间安排 共 8-12 课时,理论 2,实践 6-10 有效代码量 1500-2500 行 项目难度 ★★★☆☆ 项目简介 XXX科技技术有限公司专业提供各类IT技术服务,现需要一套BBS 论坛系统: 该 BBS 需要提供用户注册、登录和退出功能。注册用户可以发表新主题和回 复主题。论坛显示相关版块信息。论坛显示相应版块中的主题信息。论坛显 示某一主题的内容和回复内容 项目目的 学习使用 ASP.NET 页面技术,熟悉 ASP.NET 页面的常用控件、状态管理,并 能熟练使用复杂数据控件 GridView。熟练掌握 ADO.NET 的使用 项目覆盖技 能点 1、ASP.NET 页面原理、事件模型、常用控件 2、状态管理(Application、Session、ViewState、Cookie) 3、数据控件 GridView、DataList、FormView、Repeater 4、ADO.NET 的使用 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 通过学习本案例,学生掌握利用 VS2008 开发大型 B/S 软件的各项技巧,在 开发文档齐全的情况下,学生可以自行完成项目的开发 技术重点 ASP.NET 页面的常用控件 ADO.NET 的使用 数据控件 GridView、DataList、FormView、Repeater 技术难点 状态管理、数据控件的灵活应用,文本编辑器 15 ASP.NET 实训教材 1.项目背景 论坛又名 BBS,全称为 Bulletin Board System(电子公告板)或者 Bulletin Board Ser vice(公告板服务),是 Internet 上的一种电子信息服务系统。它提供一块公共电子白板, 每个用户都可以在上面书写,可发布信息或提出看法。它是一种交互性强,内容丰富而及时 的 Internet 电子信息服务系统。用户在 BBS 站点上可以获得各种信息服务,发布信息,进行 讨论,聊天等等。 目前,通过 BBS 系统可随时取得各种最新的信息,也可以通过 BBS 系统来和别人讨论 计算机软件、硬件、Internet、多媒体、程序设计以及生物学、医学等等各种有趣的话题, 还可以利用 BBS 系统来发布一些“技术探讨”、“廉价转让”、“招聘人才”及“求职应 聘”等启事,更可以召集亲朋好友到聊天室内高谈阔论。这个精彩的天地就在你我的身旁, 只要您在一台可以访问校园网的计算机旁,就可以进入这个交流平台,来享用它的种种服务。 像日常生活中的黑板报一样,论坛按不同的主题分为不同类别的版块,版面的设立依据 是大多数用户的需求和喜好,用户可以阅读别人关于某个主题的看法,也可以将自己的想法 毫无保留地帖到论坛中。一般来说,论坛也提供邮件功能,如果需要私下的交流,也可以将 想说的话直接发到某个人的电子信箱中。 在论坛里,人们之间的交流打破了空间、时间的限制。在与别人进行交往时,无须考虑 自身的年龄、学历、知识、社会地位、财富、外貌、健康状况,也无从知道交谈的对方的真 实社会身份。这样,参与讨论的人可以处于一个平等的位置与其他人进行任何问题的探讨。 论坛往往是由一些有志于此道的爱好者建立,对所有人都免费开放。而且,由于 BBS 的参与人众多,因此各方面的话题都不乏热心者。我们当然可以利用它来解决学习中的一些 疑惑,也可以把自己的心事吐露出来。 2.需求分析 通过了解用户的需求,需要先对用户分类:登陆用户和未登陆用户,系统需要实现功能 如下: 对于用户: 1. 未注册用户可以浏览论坛部分信息。 2. 可以进行注册,注册成功后可以正常登陆,也可以退出系统。 3. 成功登陆的用户可以发表新主题,也可以回复主题。 对于论坛: 1. 要求显示论坛模块,分版块。 2. 显示相关版块信息。 3. 显示相应版块中主题信息。 4. 显示某一主题的内容和回复内容。 16 Asp.net 高级开发实训教程 3.详细设计 3.1 系统用例图 由上面的相应功能可得下面的系统用例图: 未登录用户用例图 登录用户用例 3.2 功能细节 系统主要功能: 设计母版页界面、用户控件界面和注册,实现用户控件功能。其中包含登录与显示相关 用户信息。实现注册功能,包括对用户的注册。 设计论坛首页界面,并且实现首页显示功能,其中包括显示版块名称、版块简介、版块 中包含的主题数、版块中包含的回复数、最新发表的主题名称、最新发表的主题的发表人和 发表时间。 显示某版块中的主题列表信息,其中包括主题名称、主题发表人、主题发表时间、主题 回复数、主题最新回复人和最新回复时间。 设计显示主题内容界面和实现显示主题内容功能,其中包括显示主题名、主题发表人、 主题发表人的注册时间和最后登录时间、主题内容、主题发表时间、主题回复人、主题回复 人的注册时间和最后登录时间、主题回复内容和回复时间。 建时间和主题发表人等;回复主题时需要明确回复的是哪个主题,并记录回复内容、回 17 ASP.NET 实训教材 复时间和回复人。 论坛搜索功能:可以搜索发过的帖子,包括帖子的主题和内容。该功能使用 JS 实现退出页面功能,退出页面用来清除登录时所保存的相关信息。 根据网站系统的功能我们进行如下的模块划分: 模块类别 功能 用户操作模块 用户注册 用户登录 用户退出 发表新主题 回复主题 论坛显示模块 显示相关版块信息 显示相应版块中主题信息 显示某一主题的内容和回复内容 4.数据库设计 数据库说明: 1 用户表 表名 Users(用户表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 user_id Int 非空 PK 用户 ID(主键/ 自动标识) user_name NVarChar(50) 非空 用户名称 user_password NVarChar(50) 非空 用户密码 email NVarChar(50) 空 电子邮箱 sex NVarChar(50) 空 性别 regedit_time DateTime 非空 注册时间 login_time DateTime 非空 最后一次登录时 间 补充说明 2 主题表 表名 Titlelist(主题表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 title_id Int 非空 PK 主键/自 动标识 主题 ID kind_id Int 非空 版块 ID user_id Int 非空 用户 ID title NVarChar(50) 非空 主题名称 title_content NVarChar(MAX) 空 主题内容 title_uptime DateTime 非空 主题发布时间 18 Asp.net 高级开发实训教程 3 回复表 表名 Replylist(回复表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 reply_id Int 非空 PK 主键/自 动标识 回复 ID title_id Int 非空 主题 ID kind_id Int 非空 版块 ID user_id Int 非空 用户 ID reply_content NVarChar(MAX) 空 回复内容 reply_time DateTime 非空 回复时间 4 版块表 表名 Kind(版块表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 kind_id Int 非空 PK 主键/自 动标识 版块 ID kind_name NVarChar(50) 非空 版块名称 kind_desc NVarChar(100) 空 版块简介 打开 kind 版块表,为表添加相关信息: Kind_id Kind_name Kind_desc 1 ASP.NET 技术乐园 Web 程序员的天堂 2 C#技术深入探讨 深入研究底层技术 3 黑客技术区 讨论和分享黑客技术,最新病毒介绍,电脑入侵.木 马....... 4 其他编程语言技术区 例如:Java 5 娱乐八卦 水友们,开始灌吧...... 19 ASP.NET 实训教材 5.界面设计 1. 论坛首页、登陆页 2. 注册条款页面 20 Asp.net 高级开发实训教程 2. 注册界面 3. 用户登陆后界面 21 ASP.NET 实训教材 4. 版块界面 5. 发表新贴界面 22 Asp.net 高级开发实训教程 6. 主题回复界面 7. 回复主题界面 23 ASP.NET 实训教材 8. 搜索页面 24 Asp.net 高级开发实训教程 第二阶段 高级开发应用 本阶段项目 1. 新闻发布系统 2. 考勤管理系统 3. 酒店管理系统 25 ASP.NET 实训教材 新闻发布系统 项目编号:BS-ASP.NET-004  项目概述 新闻发布系统简介 项目名称 新闻发布系统 时间安排 共 8-10 课时,理论 2,实践 6-8 有效代码量 1500-2000 行 项目难度 ★★★☆☆ 项目简介 新闻发布系统要求三类用户,注册用户,非注册用户和管理员,非注册用户 浏览新闻。 注册用户可以登录、退出、查看当日新闻、修改密码。管理员 可进行新闻维护、栏目维护、类别维护。管理员查看网站配置、月流量统计。 管 理员可进行用户管理、日志管理 项目目的 通过此项目,深入掌握 ASP.NET 开发技术,理解动态网站前后台运行机制。 尤其是 ASP.NET 中和性能优化有关的技术。该项目充分利用.NET 类库提供的 功能,使用 Ajax 完成异步请求,增强用户友好性 项目覆盖技 能点 1、HTML、JavaScript、皮肤、主题、母版页 2、ASP.NET 服务器控件技术、Ajax 控件 3、ADO.NET 4、三层架构、页面缓存技术 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 系统中着重使用了 GridView 控件,针对此控件做了许多操作,希望可以通过 本系统更加熟练的使用 GridView 控件。在整个系统中,GridView 控件中的翻 页并保存 CheckBox 控件状态实现较为复杂,在实现此功能时,首先理解实 现思路,再动手操作 技术重点 ASP.NET 服务器控件 ADO.NET 的使用 Ajax 控件、母版页灵活应用 技术难点 三层架构、页面缓存技术 26 Asp.net 高级开发实训教程 1.项目背景 现代新闻学诞生有 200 年的历史了,自从造纸术和印刷术的出现,新闻学的发展脚步就 没有一刻停歇下来,随着技术的不断进步,新闻也在不断的发生变化,从早期的纸张记录, 到蒸汽印刷机带来的报业繁荣,乃至新闻电讯稿在美国内战期被广泛的使用,随着收音机的 兴起,我们听到了更多梦寐以求的声音,电视台、卫星电视的出现,改变了我们的生活,到 了今天的网络时代,我们甚至只需一台电脑和一根电话线就可以看到世界任何一处的信息。 在不久的未来,相信手机将为新闻带来新的纪元。 网站新闻发布系统,又称为信息发布系统,是将网页上的某些需要经常变动的信息,类 似新闻、新产品发布和业界动态等更新信息集中管理,并通过信息的某些共性进行分类,最 后系统化、标准化发布到网站上的一种网站应用程序。网站信息通过一个操作简单的界面加 入数据库,然后通过已有的网页模板格式与审核流程发布到网站上。它的出现大大减轻了网 站更新维护的工作量,通过网络数据库的引用,将网站的更新维护工作简化到只需录入文字 和上传图片,从而使网站的更新速度大大缩短,在某些专门的网上新闻站点,如新浪的新闻 中心等,新闻的更新速度已经是即时更新,从而大大加快了信息的传播速度,也吸引了更多 的长期用户群,时时保持网站的活动力和影响力。 主要功能为新闻信息的发布,以及新闻信息的浏览。另外参考其他的新闻发布系统,可 以将系统分为两个部分,一个为后台管理部分,一个为前台显示部分。通过后台管理部分来 进行新闻数据的维护,通过前台显示部分进行新闻的浏览。 2.需求分析 通过了解用户的需求,系统需要实现功能如下: 前台新闻浏览: 1、按照新闻分类,用户可以选择自己喜欢的新闻类别,进行浏览新闻,所有用户 均可从前台浏览新闻。 后台新闻管理: 1、 管理员管理,按照新闻类别对本站用户进行分类管理。 2、 分类管理,对新闻类别进行管理操作。 3、 新闻管理,对新闻内容进行管理操作。 4、 日志管理,对日志进行查删操作。 27 ASP.NET 实训教材 3.详细设计 3.1 系统用例图 系统用例图 3.2 功能细节 3.3.1 后台登录 新闻发布系统要实现后台新闻管理,栏目管理,用户管理等等一系列功能,而这些功能 的实现之前需要实现的是系统的登录,新闻发布系统要求登录后台新闻管理的人员有两种, 一种是普通后台用户,一种是后台管理员。后台普通用户可以管理该用户所管辖的新闻分类 下的新闻数据,可以添加,修改,删除新闻。并且可以浏览当日所有发布的新闻。后台管理 员可以进行除普通后台用户的操作之外,还要能够进行用户管理、栏目管理、类别管理、日 志管理、查看网站配置信息以及新闻流量月统计等操作,登录系统时需要区分这两种用户。 3.3.2 新闻栏目、类别管理 新闻类别属于新闻栏目,发布新闻时,选择新闻类别即可。栏目要求能够添加、删除、 28 Asp.net 高级开发实训教程 修改。类别也是同样的要求,另外修改类别时要求能够调整其所属的栏目。新闻栏目以及新 闻类别显示顺序要求能够进行修改。此功能由后台管理员进行操作,后台普通用户没有权限 操作。 3.3.3 用户管理 新闻发布系统的最终用户划分为三类,专门负责系统维护的人划分为后台管理员,将发 布新闻信息的用户划分为后台普通用户,将公司员工及浏览网页者定位为系统的终端用户。 后台管理员只有一个,初始化到数据库中,在系统中此用户不能被修改、删除,但是可 以修改密码。后台管理员可以添加后台普通用户,并且可以修改、删除用户,还可以维护这 些用户的权限。后台普通用户不能添加后台普通用户。所有后台用户只允许修改自己的密码。 后台管理员可以修改普通用户的权限,权限的形式为某个后台普通用户是否拥有某个新 闻类别的管理权。系统不为普通用户设置栏目权限。后台普通用户不能修改权限。 终端用户不需要添加到数据库中,直接进行前台页面的浏览即可。 3.3.4 新闻发布 要发布的新闻的内容包括:标题、所属类别、发布时间、发布人、来源、关键字、内容。 其中发布时间取服务器当前时间,发布人取当前登录用户。其他新闻项目输入即可。 已发布的新闻能够修改,已发布的新闻以列表形式显示(该列表要求提供查询,能够按 照类别以及关键字进行新闻的查询),然后通过列表打开相应的新闻修改页面,保存数据时 发布时间改为当前的服务器时间,发布人不再进行修改保持原有数据即可。其他的新闻项目 以修改后的数据更新。 3.3.5 日志管理、流量统计及当日新闻查看 为了系统的安全,为了能够了解登录系统的都有那些用户,所以需要进行日志的记录。 当用户登录系统时需要记录下来用户的 ID,登录时间以及登录 IP,并且可以对这些日志进 行删除。 为了了解当月最热点的新闻,需要有新闻月流量的统计,可以查看新闻每月点击率排行, 排行榜按照从多到少的顺序排列。 发布新闻时如果其他的用户发布了相类似的新闻,而当前登录用户尚不了解最新的新 闻,这样很容易造成新闻的重复发布。为了防止此种情况,系统需要展示给当前登录用户今 日发布信息的列表,以进行快速的浏览新发布的新闻信息。 3.3.6 前台显示页面 前台页面首页要将所有的栏目都显示出来,并且每个栏目下要显示本栏目下最新的 10 条新闻。新闻列表下要有“更多…”的链接,用于打开本栏目的页面。栏目页面包括其下所 有的类别,类别下同样显示本类别下最新的 10 条新闻。新闻列表下也要具有“更多…”的 29 ASP.NET 实训教材 链接,用于打开本类别的页面。类别页面包括了此类别下的所有新闻,并且提供分页功能, 新闻以时间倒序排序。以上新闻列表均能点击标题进入新闻浏览页面,进行新闻的详细信息 的浏览。 4.数据库设计 首先新建数据库 News_Manage,然后新建系统用户数据表 t_News_User。该表各字段如 下所示: 1 用户数据表结构 表名 t_News_User(用户信息表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 USERID 用户 ID int 非空 PK(自增) USERNAME 用户名称 varchar(50) 非空 USERPASSWOR D 用户密码 varchar(256) 非空 POWER 是否是管理员 bit 非空 2 栏目表设计 表名 t_Item(新闻栏目表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 ITEMID 栏目 ID int 非空 PK(自增) ITEMNAME 栏目名称 varchar(50) 非空 ITEMDESC 栏目描述 varchar(200) 空 ITEMORDER 栏目顺序 int 空 3 类别表设计 表名 t_Class(新闻类别表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 CLASSID 类别 ID int 非空 PK(自增) CLASSNAME 类别名称 varchar(50) 非空 CLASSDESC 类别描述 varchar(200) 空 CLASSORDER 类别顺序 int 空 ITEMID 所属栏目 ID int 非空 4 用户权限表 表名 t_Popedom(用户信息表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 POPEDOMID 权限 ID int 非空 PK(自增) CLASSID 新闻类别 ID int 空 FK USERID 用户 ID int 空 FK 5 新闻表设计 表名 t_News(新闻表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 30 Asp.net 高级开发实训教程 表名 t_News(新闻表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 NEWSID 新闻 ID int 非空 PK(自增) NEWSTITLE 新闻标题 varchar(100) 空 CLASSID 用户 ID int 空 FK NEWSDATE 发布时间 datetime 空 NEWSKEY 关键字 varchar(20) 空 NEWSOURCE 新闻来源 varchar(100) 空 NEWSCONTENT 新闻内容 ntext 空 USERID 发布人 ID int 空 FK HITS 总点击率 int 空 MONTHHITS 月点击率 int 空 6 日志表字段设计 5.界面设计 1. 后台登陆界面 表名 t_Log(日志表) 列名 描述 数据类型(精度范围) 空/非空 约束条件 LOGID 日志 ID int 空 FK LOGINIP 登录 IP varchar(15) 空 LOGINDATE 登录时间 datetime 空 USERID 用户 ID int 空 31 ASP.NET 实训教材 2. 管理员管理主界面 3. 管理员管理-添加用户信息界面 4. 管理员管理-更新用户信息界面 32 Asp.net 高级开发实训教程 5. 管理员管理-删除用户信息界面 6. 分类管理类别管理主界面 7. 分类管理-添加栏目界面 33 ASP.NET 实训教材 8. 分类管理-栏目编辑界面 9. 分类管理-添加类别界面 10. 分类管理-类别更新界面 34 Asp.net 高级开发实训教程 11. 新闻管理主界面 12. 新闻管理-新闻发布界面 13. 管理员管理-用户权限管理界面 35 ASP.NET 实训教材 14. 密码修改界面 15. 新闻修改界面 16. 日志管理界面 36 Asp.net 高级开发实训教程 17. 月流量统计界面 18. 查看当日新闻界面 19. 前台首页界面 37 ASP.NET 实训教材 20. 前台类别界面 21. 新闻显示界面设计: 38 Asp.net 高级开发实训教程 考勤管理系统 项目编号:BS-ASP.NET-005  项目概述 考勤管理系统简介 项目名称 考勤管理系统 时间安排 共 8-10 课时,理论 2,实践 6-8 有效代码量 1500-2000 行 项目难度 ★★★★☆ 项目简介 考勤管理系统要求实现对公司员工进行分部门,按照职位管理,对员工的出 勤进行有效的管理。 项目目的 通过此项目,深入掌握 ASP.NET 开发技术,理解动态网站前后台运行机制。 尤其是 ASP.NET 中和性能优化有关的技术 项目覆盖技 能点 1、HTML、JavaScript 2、ASP.NET 服务器控件技术、Ajax 控件 3、ADO.NET 4、三层架构 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 通过学习本案例,学生掌握利用 VS2008 开发大中型 B/S 软件的各项技巧, 在开发文档齐全的情况下,学生可以自行完成项目的开发,通过该项目的实 践开发,学生可提高自学能力,并对整个软件开发过程有了较为深刻的认识 技术重点 ASP.NET 服务器控件 ADO.NET 的使用 Ajax 控件 技术难点 三层架构 39 ASP.NET 实训教材 1.项目背景 上班登记考勤是所有公司每天必须做的事情。如果这个环节控制不好,那公司的员工可 能会经常性的迟到、早退。给公司的运营造成不良的影响。而每个公司都会有自己的一套考 勤管理办法,来适应公司的实际情况。例如,生产性质的企业或公司会有多个班次:白班、 中班、夜班等。而服务性质企业可能只有白天上班,例如银行、税务等。 小型企业和公司统计考勤的方式采用手工记录,月底汇总统计,然后上交财务计算工资。 中型或大型企业采用手工记录的方式可能就会很费力伤神了,因为员工太多,特殊的情况也 会相应的出现,例如,各种请假的情况(病假、事假、产假)、外出、加班、倒休等。在这 种情况下就需要使用相关的软件对其进行管理。以达到快速、准确的记录这些相关信息。 A 公司员工数量达到了百人以上,办公地点也分布在不同的区域。公司分为若干个部门。 部门分为两级,每级部门下面都会有若干个员工。公司采用纸制的方式记录每天的考勤状态, 每个办公地点都有一个专人负责。各个办公地点的考勤负责人需要把每天的考勤情况上报给 总部,总部进行汇总后,发布至内部的 OA 系统。这个过程需要大量的时间对数据进行查找 和汇总,因此公司领导总是不能即时查看到考勤情况。月底对考勤情况汇总也会出现相应的 难题。为了解决这些问题,A 公司决定开发一套考勤管理系统,来辅助考勤人员完成相应的 工作。 2.需求分析 考勤管理系统主要完成以下功能: 1. 因为需求中要求对员工的考勤进行管理,并且考勤是细化到每半天的情况。而这些 数据考勤系统的基础数据,每天的出勤情况汇总,月、年出勤情况汇总或者指定时间段的出 勤情况,甚至于某部门某人员的出勤情况都需要这些基础数据产生,所以需要对员工考勤记 录进行管理。 2. 提供了 5 种单据的格式,包括请假单、加班单、倒休单、外出单和出差单。 3. 系统用户可以查询每天的员工考勤情况。 4. 系统用户要求将出勤情况生成汇总表。然后可以生成公告放入客户的 OA 系统。 5. 能够生成月度考勤汇总表。 以上是系统的主要业务功能,因为考勤系统中需要管理人员的考勤信息,所以还需要员 工的信息,员工还需要标明其职位,同时员工分属于部门,所以系统中还应该包含: 1. 部门管理,分为两级部门(客户要求)。 2. 职位管理。 3. 员工管理。 4. 系统用户的管理。 40 Asp.net 高级开发实训教程 3.详细设计 3.1 系统用例图 系统分为两种角色,第一种是超级管理员,可以对部门、员工、职位、用户进行管理, 可以修改自己的密码,可以对考勤记录进行查询和汇总,用例图如下: 超级管理员用户例图 第二种是考勤员,考勤员不能对系统的用户、部门和职位进行管理,其他功能都可以使 用,但他操纵的人员仅限于他可以管理的部门。用例图如下: 考勤员用例图 系统根据功能分为三个模块,第一个模块为基本设置模块,此模块的用例图如下: 41 ASP.NET 实训教材 基本模块设置用例图 第二个模块为考勤管理模块,用例图如下: 考勤管理模块用例图 第三个模块为单据管理模块,用例图如下: 42 Asp.net 高级开发实训教程 单据管理模块用例图 3.2 功能细节 考勤管理系统功能细节描述: 1. 因为需求中要求对员工的考勤进行管理,并且考勤是细化到每半天的情况。而这些 数据考勤系统的基础数据,每天的出勤情况汇总,月、年出勤情况汇总或者指定时间段的出 勤情况,甚至于某部门某人员的出勤情况都需要这些基础数据产生,所以需要对员工考勤记 录进行管理。 2. 提供了 5 种单据的格式,包括请假单、加班单、倒休单、外出单和出差单。这些单 据记录了人员的请假、加班、倒休、外出和出差情况,这些也是属于考勤范畴的。所以对这 些单据的管理也要加入到系统中。 3. 系统用户可以查询每天的员工考勤情况。 4. 系统用户要求将出勤情况生成汇总表。然后可以生成公告放入客户的 OA 系统。 5. 因为考勤的数据跟薪金计算息息相关,但是在本考勤系统中用户并不要求对薪金进 行管理,只是要求能够生成月报表,然后交付财务部门之后用于薪金计算。所以系统要能够 生成月度考勤汇总表。 以上是系统的主要业务功能,因为考勤系统中需要管理人员的考勤信息,所以还需要员 工的信息,员工还需要标明其职位,同时员工分属于不同部门,所以系统中还应该包含: 1. 部门管理,分为两级部门(客户要求)。 2. 职位管理。 3. 员工管理,管理员工信息时需要指明员工属于哪个部门。 4. 系统用户的管理。可以为用户分配能够管理哪几个部门。因为客户公司有多个考勤 43 ASP.NET 实训教材 员,每个考勤员管理的部门不同。 下面对每个功能进行详细的分析,分析采用由基础数据到业务数据的方式,因为一般情 况下业务数据都需要使用基础数据作为铺垫,分析如下: 1. 部门管理 部门分为两级。每个部门均可设置上下午的上班时间和下班时间以及是否支持大小礼 拜。用户可以添加、修改和删除部门。删除部门时需要判断部门下是否有员工,如果有员工 存在不允许删除。 部门的数据内容包括:部门名称、上午上班时间、上午下班时间、下午上班时间、下午 下班时间、是否支持大小礼拜、上级部门。 2. 职位管理 可以添加、修改和删除职位信息。职位的数据内容包括:职位名称。 3. 员工管理 可以添加、修改和删除员工信息。员工的数据内容包括:员工名称、性别、职位、部门、 员工卡编号和备注。其中员工卡编号是为以后使用打卡机预留的数据字段,这个卡编号会和 打卡机使用的卡的编号匹配,卡的编号必须唯一。 4. 用户管理 可以添加、修改和删除考勤员。可以为考勤员设置其管理的部门。删除用户时,需要判 断考勤员是否已经分配了可以管理的部门。如果已经有管理的部门,不允许删除,将用户状 态设置为禁用。 用户的数据内容包括:考勤员账号、密码、姓名、账号是否可用、是否是超级管理员。 5. 考勤记录管理 可以设置员工的考勤状态,考勤状态分为 13 种分别为:出勤、公休、迟到、旷工、外 出、出差、加班、倒休、事假、病假、婚假、丧假和产假。设置不同的状态需要填写不同的 单据。出勤、公休、迟到和旷工不需要填写单据,直接修改状态即可。出差需要填写出差单 据,加班需要填写加班单据,倒休需要填写倒休单。事假、病假、婚假、丧假和产假需要填 写请假单。 考勤管理的的数据内容包括:员工编号、卡号、员工部门、考勤日期、考勤时间、考勤 时段(上午/下午)、考勤状态、管理员编号、与单据关联的编号和备注。 6. 请假单管理 考勤员根据请假的纸质单据,将情况录入系统,包括请假人、请假类型、请假时间、天 数、领导审批、请假原因、申请时间、录入人等信息。对于未及时填写的或者间断的情况, 可以补充。内容详见需求中提供的请假单。 7. 加班单管理 考勤员根据加班申请纸质单据,将员工加班情况录入系统。包括加班人、加班时间、加 班原因、领导审批等信息。内容详见需求中提供的加班单。 8. 倒休单管理 考勤员根据倒休申请纸质单据,将员工申请倒休情况录入系统。包括倒休人、倒休时间、 天数、对应加班时间、领导审批、倒休原因等信息。对于未及时填写的,可以补充;审批后 44 Asp.net 高级开发实训教程 的加班才可进行倒休。内容详见需求中提供的倒休单。 9. 外出单管理 考勤员根据外出登记纸质单据,将员工外出情况录入系统。包括外出人、外出原因、外 出时间等信息。内容详见需求中提供的外出单。 10. 出差单管理 考勤员根据出差登记纸质单据,将出差情况录入系统。然后同时生成出差记录。内容详 见需求中提供的出差单。 11. 查询考勤记录 用户可以按年月日查询某个部门或某个员工的考勤情况,也可以指定一个时间段进行查 询。查询时可以按照不同的考勤状态进行筛选。例如:查询 2009-5-6 软件部的所有旷工人 员。查询出的结果可以导出 Excel 文件。 12. 生成考勤公告 按不同的部门生成除出勤状态外所有其他人的情况。例如:软件部:王民(外出—北京), 黄海(旷工),张君(病假) 13. 生成考勤汇总表 可以按照年、月或者时间段生成考勤的汇总表。汇总表格式见需求中的月度考勤表。 4.数据库设计 系统中使用到的表如下: 数据库表 说明 Att_Admin 用户表 Att_AdminPopedom 用户权限表 Att_AttendanceRecord 考勤记录表 Att_AttendanceType 考勤状态表 Att_Department 部门表 Att_Employees 员工表 Att_Notes 单据表 Att_OvertimeRecord 加班明细表 Att_Position 职务表 数据信息具体细节如下: 1.用户表结构 表名 Att_Admin(用户表) 列名 数据类型(精度范 围) 空/非 空 约束条 件 说明 AdminID Int 非空 PK(自增) ID AdminAccount Nvarchar(50) 非空 用户帐号 AdminPwd Nvarchar(50) 非空 密码 45 ASP.NET 实训教材 AdminState Bit 非空 是否启用此 帐号 AdminRight Bit 非空 是否超级管 理员 AdminName Nvarchar(50) 非空 用户名称 2.用户权限表结构 表名 Att_AdminPopedom(用户权限表) 列名 数据类型(精度范 围) 空/非 空 约束条 件 说明 PopedomID Int 非空 PK(自增) ID DepartmentID Int 非空 外键(部门) 部门编号 AdminID Int 非空 外键(用户) 用户编号 3.考勤记录表结构 表名 Att_AttendanceRecord(考勤记录表) 列名 数据类型(精度范 围) 空/非 空 约束条 件 说明 AttendanceID Int 非空 PK(自增) ID EmployeeID Int 非空 外键(员工) 员工编号 CardNumber Nvarchar(50) 非空 员工卡号 AttendanceDate Datetime 非空 考勤日期 AttendanceTime Datetime 空 考勤时间 AttendanceFlag Char(1) 非空 考勤时段(1 代表上午,2 代表下午) AttendanceType Int 非空 外键(考勤 类型表) 考勤类型 AttendanceMemo Nvarchar(200) 空 备注 AdminID Int 非空 外键(用户) 考勤员编号 TempDepartmentId Int 非空 外键(部门) 部门编号 NoteId Int 非空 外键(单据) 单据编号 4.考勤状态表结构 表名 Att_AttendanceType(考勤状态表) 列名 数据类型(精度范 围) 空/非 空 约束条 件 说明 TypeId Int 非空 PK(自增) ID TypeName Nvarchar(20) 非空 状态名称 TypeCategory Int 非空 是否为请假 类型(1 代 表是,0 代 表不是) 表中的数据是固定的,不能在程序中进行管理,数据如下: 46 Asp.net 高级开发实训教程 5.考勤状态表数据 TypeId TypeName TypeCategory 1 出勤 0 2 公休 0 3 迟到 0 4 旷工 0 5 外出 0 6 出差 0 7 加班 0 8 倒休 0 9 事假 1 10 病假 1 11 婚假 1 12 丧假 1 13 产假 1 6.部门表结构 表名 Att_Department(部门表) 列名 数据类型(精度范 围) 空/ 非空 约束条 件 说明 DepartmentID Int 非空 PK(自增) ID DepartmentName Nvarchar(100) 非空 部门名称 StartTimeAM Datetime 非空 上午上班时 间 EndTimeAM Datetime 非空 上午下班时 间 StartTimePM Datetime 非空 下午上班时 间 EndTimePM Datetime 非空 下午下班时 间 WeekType Bit 非空 是否支持大 小礼拜 ParentID Int 非空 父级部门编 号,一级部门 为 0 7. 员工表结构 表名 Att_Employees(员工表) 列名 数据类型(精度范 围) 空/ 非空 约束条 件 说明 EmployeeID Int 非空 PK(自增) ID EmployeeName Nvarchar(100) 非空 员工名称 EmployeeGender Bit 非空 员工性别(0: 女;1:男) 47 ASP.NET 实训教材 Position Int 非空 外键(职务) 职务编号 Department Int 非空 外键(部门) 部门编号 CardNumber Nvarchar(50) 非空 员工卡号 EmployeState Char(1) 非空 员工状态(1: 正常;0:停 用;) EmployeeMemo Nvarchar(200) 空 备注 8. 单据表结构 表名 Att_Notes(单据表) 列名 数据类型(精度范 围) 空 /非空 约束条件 说明 NoteID Int 非空 PK(自增) ID DepartmentID Int 非空 外键(部门) 部门编号 EmployeeID Int 非空 外键(员工) 申请人 NoteType Int 非空 外键(考勤状态) 单据类型 EmployeeIDs Nvarchar(1000) 非空 出差人集合 Cause Nvarchar(1000) 非空 事由 FillInTime Datetime 非空 填表日期 DirectorSign Nvarchar(200) 空 主管经理签名意 见 AdministrationSig n Nvarchar(200) 空 行政经理签名意 见 PresidentSign Nvarchar(200) 空 总裁签名意见 StartDate Datetime 非空 起始日期 StartTime Nvarchar(50) 空 起始时间 EndDate DateTime 非空 结束日期 EndTime Nvarchar(50) 空 结束时间 OvertimeIDs Nvarcahr(200) 空 加班时间集合, 关联加班记录 表,将加班记录 I D 拼接为字符 串,以逗号分隔 存入此处。例如: 1,2,3,4 Vehicle Nvarchar(50) 空 交通工具 ProjectName Nvarchar(200) 空 项目名称 AdminID Int 非空 外键(用户) 录入人 NoteMemo Nvarchar(500) 空 备注 OperatorID Int 非空 外键(员工) 代理人编号 IsVerify Bit 非空 是否审核,0:否; 1:是 默认 0,审批才可 倒休 48 Asp.net 高级开发实训教程 9. 加班明细表结构 表名 Att_OvertimeRecord(加班明细表) 列名 数据类型(精度范 围) 空/ 非空 约束条 件 说明 OvertimeID Int 非空 PK(自增) ID EmployeeID Nvarchar(100) 非空 外键(员工) 员工编号 OvertimeDate Datetime 非空 加班日期 OvertimeFlag Char(1) 非空 加班时段,1: 上午,2:下 午,3:晚上 两小时 OvertimeState Char(1) 非空 1:需倒休,2 已倒休 IsVerify Bit 非空 是否审核,0: 否;1:是 默认 0,审批 才可倒休 OvertimeMemo Nvarchar(1000) 空 备注 OperatorID Int 非空 外键(员工) 代理人编号 NoteID Int 非空 外键(单据) 单据编号 10. 职务表结构 表名 Att_Position(职务表) 列名 数据类型(精度范 围) 空/非 空 约束条 件 说明 PositionID Int 非空 PK(自增) ID PositionName Nvarchar(50) 非空 职务名称 49 ASP.NET 实训教材 5.界面设计 1. 系统的登录页 2. 登录系统后页面 50 Asp.net 高级开发实训教程 3. 部门管理页面 4. 职务管理页 5. 员工管理页 51 ASP.NET 实训教材 6.今日考勤页面 7.考勤公告页面 52 Asp.net 高级开发实训教程 8.考勤查询 9.考勤汇总页面 53 ASP.NET 实训教材 10.请假单管理页面 11. 添加请假单页面 54 Asp.net 高级开发实训教程 12. 加班单管理页面 13. 添加加班单页面 55 ASP.NET 实训教材 14. 倒休单管理页面 15. 添加倒休单页面 56 Asp.net 高级开发实训教程 16.外出单管理页面 17. 添加外出单页面 57 ASP.NET 实训教材 18. 出差单管理页面 19. 添加出差单页面 58 Asp.net 高级开发实训教程 酒店管理系统 项目编号:BS-ASP.NET-006  项目概述 酒店管理系统简介 项目名称 酒店管理系统 时间安排 共 8-10 课时,理论 2,实践 6-8 有效代码量 1500-2000 行 项目难度 ★★★★☆ 项目简介 酒店管理系统要求实现:用户管理,分成管理员和普通用户两种角色,实现客户 信息查询。房间类型管理。 房间信息管理,包含对房间号、房间类型、价格、位 置等信息管理。对房间的经营管理,包含订房、退房功能 项目目的 通过此项目,深入理解和掌握 ASP.NET 多层框架。用 Ajax 技术实现 Web 新的扩展 项目覆盖技能 点 1、HTML 和 JavaScript 使用 2、ASP.NET 页面基本控件 3、ASP.NE 服务器控件技术 4、ADO.NET 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 系统中着重使用了 GridView 控件,针对此控件做了许多操作,希望可以通过本系 统更加熟练的使用 GridView 控件。在整个系统中,GridView 控件中的翻页并保 存 CheckBox 控件状态实现较为复杂,在实现此功能时,首先理解实现思路,再动 手操作 技术重点 ASP.NET 页面基本控件 ASP.NET 服务器控件 JavaScript 的使用 技术难点 ADO.NET 的使用 59 ASP.NET 实训教材 1.项目背景 当今社会是个信息化飞速发展的社会,计算机已经相当普遍,信息技术不断融入到生活 中,将酒店客房管理系统应用于酒店将降低成本,使用计算机对房间等各种信息进行信息管 理不仅减少人工操作的复杂性,而且正确性也会加强,工作效率会明显提高,这是酒店所需 要的,所以研究这种信息系统,开发这种系统,是具有社会可行性的,是社会的需要,要不 断的研究才能有更大的提高。 2.需求分析 酒店客房管理信息系统主要是提供给酒店内部工作人员使用,其提供的主要功能包括: 1.登录 2.房间类型管理 3.房间信息管理 4.房间操作 5.用户管理 6.客户信息查询 3.详细设计 3.1 系统用例图 数据库的实体及其属性图包括七个图,分别是客户信息的实体及其属性图、房间历史的 实体及其属性图、房间类型的实体及其属性图、房间信息的实体及其属性图、房间操作的实 体及其属性图、房间状态的实体及其属性图、员工信息的实体及其属性图。 客户信息的实体及其属性图如下图所示: 客户信息实体及其属性图 房间历史的实体及其属性图如下图所示: 客户信息 客户标识 客户姓名 客户电话 客户邮箱 60 Asp.net 高级开发实训教程 房间历史信息实体及其属性图 房间类型的实体及其属性图如下图所示: 房间类型实体及其属性图 房间信息的实体及其属性图、房间操作的实体及其属性图、房间状态的实体及其属性图、 员工信息的实体及其属性图都较类似,不再全部画出。 3.2 功能细节 酒店客房管理信息系统主要是提供给酒店内部工作人员使用,其提供的主要功能包括: 角色登录、用户管理、房间的类型管理、房间信息管理(房间号、房间类型、价格、位置等)、 对房间的操作(住房登记、退房等),这样就可以大大减少管理工作的手工劳动和记忆难度。 1.登录 系统的用户有两种:管理员、普通用户。不同的使用者所具有的权限不同,管理员具有 最高的权限,具有对整个系统的管理权限,可以对用户、房间、客户信息进行增删修改等操 作,并对普通用户的权限进行管理。普通用户能进行房间的操作,另外所有用户都有修改自 己账号密码的权限,两种角色都要通过用户名和密码登录到主界面。 2.房间类型管理 每个酒店在经营过程中不断改善自己的经营方式,把不合适的房间类型更改或者删除, 增加新的适合广大消费者青睐的房间类型。同时在经营过程中适时推出优惠政策调整每种房 间类型的价格、环境等信息。 3.房间信息管理 房间信息管理包括对各种类型客房的具体房间信息的管理。 4.房间操作 房间历史 住房时间 退房时间 房间号 总价格 客户标识 房间类型 房间类别 标识 房间类别名 称 面积 床位 价格 空调状况 有 线 电 视 状况 61 ASP.NET 实训教材 酒店的房间管理是一项重要的重要操作,其包括两个主要功能,登记住房信息和退房计 算住宿费用。 5.用户管理 用户管理包括:修改用户自己(管理员)的密码,删除已经不在的管理员账户,删除普 通用户,把普通用户权限升级(普通用户将得到管理员权限)。 6.客户信息查询 可以通过客户名称,房间号查询客户历史信息,方便以后保持业务联系。 3.3 模块划分 酒店客房信息管理系统分两种角色登录,每种角色登陆后进入的主页面不同,能够实现 的功能不同,管理员登录后的功能模块图如下图所示: 管理员登录后的功能模块图 普通用户界面的功能模块下图所示: 管理员 房 间 操 作 房 间 信 息 管 理 客 户 信 息 管 理 房 间 类 型 管 理 删 除 房 间 类 型 添 加 房 间 类 型 修 改 房 间 类 型 住 房 登 记 退 房 删 除 房 间 添 加 房 间 修 改 房 间 用 户 管 理 设 置 权 限 信 息 修 改 62 Asp.net 高级开发实训教程 普通用户功能模块图 系统的 E-R 图如下图所示: 系统的 E-R 图 普通用户 房间操作 用户管理 住 房 登 记 退 房 个 人 信 息 修 改 管理 管理员 操作 入住 添加 添加 房间 普通用户 客户 管理 1 m 1 m 1 1 m m m m n 63 ASP.NET 实训教材 4.数据库设计 客户信息表用于存储住房的客户的基本信息,如下表所示: 1. Customerinfo(客户信息表) 字段说明 列名 数据类型 长度 能否为空 客户标识 CidentityId nvarchar 50 否 客户姓名 Cname nvarchar 50 否 客户电话 Cphone nvarchar 50 是 客户邮箱 Cemail nvarchar 50 是 定义客户标识为主键,此表存储过往客人的信息,方便保持联系。 房间历史表用于存储房间的使用信息,主要是在住房登记和退房时生成信息,具体内容 如下表所示: 2. History(房间历史表) 字段说明 列名 数据类型 长度 能否为空 住房时间 BeginTime datetime 8 否 退房时间 EndTime datetime 8 否 房间号 RoomId int 4 否 总价格 TotalPrice money 8 否 客户标识 CidentityId nvarchar 50 否 History 表的主键是一个双主键 BeginTime 和 RoomId,房间历史使用信息主要是在客户 信息查询中用来反馈信息。 房间类型表主要记录房间的一些类型信息,如下表所示: 3. RoomCategory(房间类型表) 字段说明 列名 数据类型 长度 能否为空 房间类别标识 RCategoryId int 4 否 房间类别名称 Rname varchar 50 否 面积 Rarea float 8 否 床位 Rbednum int 4 否 价格 Rprice money 8 否 空调状况 Raircondition int 4 否 有线电视状况 RTV int 4 否 定义房间类别标识 RcategoryId 为主键。房间类型是所有住房的分类状况,是所有客房 的总属性。 房间信息表主要记录房间的一些相关信息,如下表所示: 4. Roominfo(房间信息表) 字段说明 列名 数据类型 长度 能否为空 房间号 RoomId int 4 否 房间类型 RcategoryId int 4 否 位置 Rposition nvarchar 50 否 房间描述 Rdescription nvarchar 50 是 64 Asp.net 高级开发实训教程 定义 RoomId 为主键。房间信息表是各类房间的具体数据,每间客房的主要信息还是由 房间类型表所决定的。 5. RoomOperation(房间操作表) 字段说明 列名 数据类型 长度 能否为空 房间号 RoomId int 4 否 住房时间 BeginTime datetime 4 否 消费者标识 CidentityId nvarchar 50 否 注释说明 Remarks nvarchar 200 是 预定天数 bookdays int 4 是 定义 RoomId 为主键。房间操作表保存的是已经处于被住状态房间的信息,其可以看作 一个中转,每条记录在退房时候将被删除。 房间状态表如下表所示: 6. Roomstatus(房间状态表) 字段说明 列名 数据类型 长度 能否为空 房间号 RoomId int 4 否 房间状态 Rstatus nchar 10 否 定义 RoomId 为主键。房间状态表作用是保存每个房间的空闲与否的信息。 用户信息表如下表所示: 7. userinfo(用户信息表) 字段说明 列名 数据类型 长度 能否为空 用户名 username varchar 50 否 密码 pwd varchar 50 否 真实姓名 realname nvarchar 8 否 角色 role varchar 50 否 电子邮箱 email nvarchar 50 是 地址 address nvarchar 50 是 联系电话 tel nvarchar 50 是 身份证号 idcard nvarchar 50 否 用户信息表保存着酒店员工信息,记录着用户的名称、密码等,是登录的凭据。和其他 表相比起来,用户信息表和其他表没有太多的约束,是个相对独立的表。 按照上面操作虽然建立好各个表结构,但是这样建立的表是相互独立的,没有任何外键 关联。所以必须要设计好数据库各表的关系,在 hotel 数据库的数据库关系图下双击建立如 下的数据库关系图 65 ASP.NET 实训教材 hotel 数据库关系图 数据库的关系图一旦建立好,其增删查找就不再是对每张表单独操作了,每张表的修改 就必须与其他表紧密相连,这也是为了实现功能上的相互关联。 5.界面设计 1 系统登录界面 66 Asp.net 高级开发实训教程 2 管理员登录后的主界面 3 添加用户界面 67 ASP.NET 实训教材 4 修改用户信息界面 5 删除用户页面 68 Asp.net 高级开发实训教程 6 添加房间类型界面 7 修改房间类型界面 69 ASP.NET 实训教材 8 编辑房间类型界面 9 修改客房信息界面 70 Asp.net 高级开发实训教程 10 住房登记界面 11 登记选房界面 71 ASP.NET 实训教材 12 住房登记信息界面 13 退房界面 72 Asp.net 高级开发实训教程 14 退房确认界面 15 客户信息查询界面 73 ASP.NET 实训教材 16 普通用户的主界面 74 Asp.net 高级开发实训教程 第三阶段 企业级开发应用 本阶段项目 1. 管理信息系统 2. 学生综合管理系统 75 ASP.NET 实训教材 管理信息系统 项目编号:BS-ASP.NET-007  项目概述 管理信息系统简介 项目名称 管理信息系统 时间安排 共 20-24 课时,理论 6,实践 16-18 有效代码量 3000-4000 行 项目难度 ★★★★★ 项目简介 管理信息系统要求完成: 用户登录、修改个人密码。菜单管理,所有的权 限功能都在此项中管理。角色管理,设置不同角色,每种角色对应不同权限。 部门管理,部门树形列表显示,实现部门信息的增删改查。部门用户管理, 部门下的用户管理。锁定用户的管理:查看和编辑 项目目的 通过此项目,深入掌握 ASP.NET 开发技术,理解动态网站前后台运行机制。 尤其是 ASP.NET 中和性能优化有关的技术。该项目充分利用.NET 类库提供的 功能,使用 Ajax 完成异步请求,增强用户友好性 项目覆盖技 能点 1、HTML、JavaScript 2、ASP.NET 服务器控件技术、Ajax 控件 3、ADO.NET,存储过程 4、三层架构 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 通过学习本案例,学生掌握利用 VS2008 开发大中型 B/S 软件的各项技巧, 在开发文档齐全的情况下,学生可以自行完成项目的开发,通过该项目的实 践开发,学生可提高自学能力,并对整个软件开发过程有了较为深刻的认识 技术重点 ASP.NET 服务器控件 ADO.NET 的使用 Ajax 控件 技术难点 三层架构、分页技术 76 Asp.net 高级开发实训教程 1.项目背景 随着科学技术的进步,使得信息的产生及传递的速度越来越快、成本越来越低,信息技 术成为当今最活跃,发展最迅速,影响最广泛,渗透力最强的科学技术领域之一。信息化是 一场深刻的革命,在社会许多领域对传统的生产、生活和思维方式产生着巨大冲击,并促进 着经济和社会的快速和均衡发展。管理信息系统是一个由人和计算机组成的能进行信息收 集、传输、加工和保存、维护和使用的系统,在信息化的大势所趋下,它的完善与发展,越 来越受到人们的普遍关注。管理信息系统将大量复杂的信息处理交给计机, 使人和计算机 充分发挥各自的特长,组织一个和谐、有效的系统,为现代化管理带来便捷。在现代化管理 中,计算机管理信息系统已经成为企业管理不可缺少的帮手,它的广泛应用已经成为管理现 代化的重要标志。 MIS 系统中,通常不同的用户具有不同的权限,登录系统后会显示不同的菜单。用户分 属不同的角色、每种角色具有不同的权限;企业中有不同的部门、部门下面还有子部门、部 门下面有不同的用户,员工离职或者其他原因时用户无效,需要对用户进行锁定。 2.需求分析 MIS 系统中,通常不同的用户具有不同的权限,登录系统后会显示不同的菜单。用户分 属不同的角色、每种角色具有不同的权限;企业中有不同的部门、部门下面还有子部门、部 门下面有不同的用户;员工离职或者其他原因时用户无效,需要对用户进行锁定。 77 ASP.NET 实训教材 3.详细设计 3.1 系统架构图 78 Asp.net 高级开发实训教程 3.2 功能细节 具体功能如下: 用户登录 用户登录系统,加载权限菜单列表 修改个人密码 修改用户个人登录密码 菜单管理 系统功能菜单管理:所有的权限功能都在此项中管理。可以设置菜单 的显示顺序,以及是否在树形列表中显示 菜单的添加、修改、删除、列表显示 角色管理 角色管理:设置不同角色,每种角色对应不同权限 角色的添加、修改、删除、列表显示 角色授权:角色对应权限的设置 部门管理 部门管理:部门树形列表显示、部门信息修改、添加子部门、删除部 门 部门用户管理 部门下的用户管理: 部门用户树形列表、编辑用户信息(可以锁定用户)、设置部门中用户 的角色 “锁定用户”管理 已“锁定”用户的管理: 查看锁定用户列表、编辑锁定用户信息 4.界面设计 4.1 用户登录界面 79 ASP.NET 实训教材 4.2 登录成功初始界面 4.3 修改个人密码 用户修改自己的密码 4.4 菜单管理 菜单管理 80 Asp.net 高级开发实训教程 编辑菜单信息 删除菜单信息 点击删除链接时,弹出提示框提醒用户是否删除 4.5 角色管理 81 ASP.NET 实训教材 角色授权 编辑角色信息 删除角色信息 82 Asp.net 高级开发实训教程 4.6 部门 部门树形列表 编辑部门 添加子部门信息 83 ASP.NET 实训教材 删除部门信息 4.7 部门用户 部门用户树形列表 编辑用户信息 点击部门用户列表中的用户,在右侧显示出该用户的详细信息,可以进行信息变更。 84 Asp.net 高级开发实训教程 编辑用户时选择用户部门 用户部门用下拉列表显示,内容展现出树形结构,这样组织结构更加直观。 设置部门中用户的角色 除了可以编辑用户信息,还可以设置用户角色,以使用户获得不同的权限。 85 ASP.NET 实训教材 4.8 锁定用户 查看锁定用户列表 点击左侧的“锁定用户列表”链接,在右侧显示已经锁定的用户信息列表。锁定的用户无法 登陆系统,除非将状态变为“非锁定”。 编辑锁定用户信息 修改已经锁定的用户信息,可以将状态变为“非锁定”。 86 Asp.net 高级开发实训教程 87 ASP.NET 实训教材 学生综合管理系统 项目编号:BS-ASP.NET-008  项目概述 学生综合管理系统简介 项目名称 学生综合管理系统 时间安排 共 20-24 课时,理论 6,实践 14-18 有效代码量 3500-4500 行 项目难度 ★★★★★ 项目简介 学生综合管理系统要求实现:基础数据管理,包含学校、学期、考试类型、 项目、教材、教材项目、课程管理等模块。学生管理,包含班级档案、学生 档案、学术活动、出勤等管理。考试管理:考试信息、考试安排、考试成绩 管理。统计查询:成绩查询、合格人数统计、班级出勤率统计 项目目的 通过此项目,深入理解和掌握 ASP.NET 多层框架。用 Ajax 技术实现 Web 新 的扩展 项目覆盖技 能点 1、HTML、JavaScript、Ajax 的使用 2、ASP.NET 基本控件和服务器控件技术 3、ADO.NET、存储过程 4、三层架构 数据库 SQL Server2005 编程环境 开发工具:Visual Studio 2008 和 SQL Server2005 项目特点 系统中着重使用了 GridView 控件,针对此控件做了许多操作,希望可以通 过本系统更加熟练的使用 GridView 控件。在整个系统中,GridView 控件中 的翻页并保存 CheckBox 控件状态实现较为复杂,在实现此功能时,首先理 解实现思路,再动手操作 技术重点 ASP.NET 服务器控件 ADO.NET 的使用 Ajax 控件 技术难点 三层架构、存储过程 88 Asp.net 高级开发实训教程 1.项目背景 随着互联网的发展,利用 INTERNET 技术来实现“无纸办公”这个概念已经深入人心。 如何利用现有的资源,来更好地服务于教学和管理工作,是摆在×××IT 教育培训机构管 理者面前的一个难题。就目前而言,该培训机构的学籍管理方式还停留在手工操作基础上, 每个学期和学年,教师需要花费大量的时间来登录学生信息,而管理人员也需要花费较多的 时间来校对管理。同时又形成信息在教师和教导处之间传递的延时性,遇到学生转入转出, 又因为各个学校使用的学籍卡的不同,而造成信息的缺失或者遗漏。本系统就是为了减轻教 师繁复的誊写工作、加强学校学生信息管理的方便性。 该 IT 教育培训机构现有多个培训学校(或者培训点),拥有数量众多的学员,新上马 的软件系统必须能够将这些资源整合,运行在统一的管理平台上。 培训学校会根据培训的时长,划分不同的阶段或者学期。 每所学校的学生按照学习的方向(比如 dotnet 方向、java 方向)被划分到不同班级,每 个学期都有学生毕业,又同时有新的学生入校,组成新的班级。 每个学习方向对应若干课程,每门课程对应一本教材,每本教材会涉及到若干项目。不 同的学习方向对应的学习课程、教材、学习过程中用到的项目也是不同的。 对应学生的学籍管理,会记录学生的一些基本信息、联系方式信息和学生的培训工作经 验的信息。 培训学校会不定期组织学生参加一些跟学习有关的活动,这些活动要记录在案,以便以 后可以查看某学生都参加过那些活动。 学生每节课都要由任课老师点名,看是否缺勤,对于缺勤的学生要记录下来,在学期末 或者毕业时作为评分的一个标准。 学校每学期结束都会安排学生考试,并将每次考试的成绩记录到学生成绩单中。考试分 为上机和笔试两种。每门课程的授课内容和对应的教材都是相对稳定的,所以针对该课程的 每次的考试的难易程度也是相对固定的,试题从题库中根据课程和难易程度随机提取。 管理者或者教师为了了解和掌握学生的学习效果,需要对考试成绩做统计查询,可以查 看某个班级学生的考试结果,可以查看某个班级某次考试的合格率是多少。 管理者为了掌握每个班级学生的出勤情况,需要系统能够对班级的出勤做出统计 2.需求分析 主要功能描述 系统要分为四部分:基础数据管理、学生管理、考试管理、统计查询。 基础数据管理:学校管理、学期管理、考试类型管理、项目管理、教材管理、教材项目 管理、课程管理。 学生管理:班级档案管理、学生档案信息的管理、学术活动管理、学生出勤管理。 考试管理:考试信息管理、考试安排、考试成绩管理。 统计查询:考试成绩统计、合格人数统计、班级出勤率统计。 89 ASP.NET 实训教材 3.详细设计 3.1 系统功能分类图 功能分类图 3.2 功能细节 1 学校管理 一些规模大的培训中心可能下辖多所培训点或者培训学校,为了管理这些部门,系统中 要有学校的管理。 内容包括:学校名称。 该项包括:查看、添加、修改、删除学校功能。 2 学期管理 学员学习是分阶段的,这个阶段我们以学期来命名,系统中加入学期管理。 内容包括:学期名称。 该项包括:查看、添加、修改、删除学期功能。 90 Asp.net 高级开发实训教程 3 教材管理 学员学习要有学习教材,教材的数目也是繁多的,为了便于管理,系统设计中加入教材 管理。 内容包括:教材名称、教材代号、教材简介、理论课时、实践课时、主要知识点、相关 建议。 该项包括:查看、添加、修改、删除、搜索教材功能。 4 项目管理 针对开发项目的管理。 内容包括:项目名称、项目所需时间、代码量、项目难度、项目简介、项目重难点、项 目目的、项目技术、所用数据库、编程环境、项目特点、技术难点 、技术重点、相关建议。 该项包括:查看、添加、修改、删除、搜索项目功能。 5 教材项目管理 教材是和项目对应的。 内容包括:教材名称、项目名称。 该项包括:查看、添加、修改、删除、搜索教材项目功能。 6 课程管理 学员培训时,要学习多门课程,所以系统设计中加入课程管理 内容包括:课程名称、所属学校、所属学期、对应书籍。 该项包括:查看、添加、修改、删除、搜索课程功能。 7 班级档案管理 培训中心如果招收的学员人数多,就需要大而化小,分成多个班级,以便进行管理。每 个学员分属各自班级。 内容包括:班级名称、所属学校、所属学期、班主任、班级类型、是否毕业、入学时间、 毕业时间。 该项包括:查看、添加、修改、删除、搜索班级功能。 8 学生信息的管理 这里是对学生的数据进行维护。 基本信息的内容包括:学生编号、学生姓名、所在班级、姓名拼音、学校、生日、身份 证号、性别、民族、学历、住址、籍贯、图片。 联系方式信息的内容包括:学生编号 、家庭住址、家庭成员、宅电、移动电话、电子 邮箱、其他联系方式。 培训经历的内容包括:学生编号、计算机基础、英语基础、毕业学校、毕业时间、持有 证书、工作单位、工作经历。 该项包括:查看、添加、修改、删除、搜索学生基本信息功能。编辑联系方式信息、编 辑培训经历信息功能。 9 学术活动管理 培训中心不定期组织学员参加一些活动,系统对这些活动信息进行管理。 91 ASP.NET 实训教材 内容包括:活动名称、活动日期、开始时间、结束时间 、参加班级、目的以及意义。 该项包括:查看、添加、修改、删除、搜索学术活动信息功能。 10 学生出勤管理 培训中心每天对学员考勤进行记录,对这些考勤信息进行查询,查看学员的出勤情况。 内容包括:学生学号、学生姓名、班级、所属学期、所学课程、出勤情况、出勤日期 出 勤备注。 该项包括:查看、添加、修改、删除、搜索出勤信息功能。 11 考试类型管理 培训点对学员进行阶段性考试,考试分为不同类型。 内容包括:考试类型名称、学校、备注。 该项包括:查看、添加、修改、删除、搜索考试类型信息功能。 12 考试信息管理 培训点对学员进行阶段性考试,对考试信息进行管理。 内容包括:考试名称、学校、学期、考试类型、考试方式(理论、上机)、备注。 该项包括:查看、添加、修改、删除、搜索考试信息功能。 13 考试安排 每次考试,系统会提前制定考试安排,比如安排考试时间、参加班级等。 内容包括:考试安排标题、对应的考试、考试日期、考试起始时间、考试结束时间、考 试班级、备注。 该项包括:查看、添加、修改、删除、搜索考试安排信息功能。 14 考试成绩管理 学员的考试结果(考试成绩)会记录到系统中,方便培训中心进行查询。 内容包括:对应的考试安排、对应的考试、班级、学生编号、学生姓名、考试成绩。 该项包括:查看、添加、修改、删除、搜索考试成绩信息功能。 15 成绩统计查询 对每个班级的学员的考试成绩进行统计。 内容包括:学生成绩的柱状分布图。 该项包括:搜索查看班级中学生的考试成绩功能。 16 班级出勤率统计 对每个班级的出勤情况作出统计。 该项包括:搜索查看班级中学生的出勤和缺勤人数功能。 17 合格人数统计 对每个班级的考试合格人数做统计。 该项包括:搜索查看每个班级的考试合格和不合格人数的功能。 92 Asp.net 高级开发实训教程 4.数据库设计 本案例创建数据库 StudentManage 和该数据库下的相关表。 系统中使用到的表如下: 序号 表 功能说明 1 Schools 存储学校信息 2 Semesters 存储管学期信息 3 ExamTypes 存储考试类型信息 4 Project 存储项目信息 5 CourseBook 存储教材信息 6 Control 存储教材项目关联信息 7 Courses 存储课程信息 8 Classes 存储班级信息 9 StudentBase 存储学生基础信息 10 StudentContact 存储学生联系方式信息 11 StudentStudyRecord 存储学生学历信息 12 Actions 存储学术活动信息 13 Attendances 存储考勤信息 14 Exams 存储考试信息 15 ExamPlans 存储考试安排信息 16 Achievements 存储学生考试成绩信息 数据信息具体细节如下: 1 学校表 表名 Schools(学校表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 SchoolId int 4 非空 PK 学校编号 SchoolName varchar 50 空 Default:’’ 学校名称 补充说明 学校表外建定义 外键 子 父 FK_Classes_Schools Classes Schools FK_Courses_Schools Courses Schools FK_Exams_Schools Exams Schools FK_ExamTypes_Schools ExamTypes Schools 93 ASP.NET 实训教材 2 学期表 表名 Semesters(学期表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 SemesterId int 4 非空 PK 学期编号 SemesterName varchar 50 空 Default:’’ 学期名称 补充说明 学期表外建定义 外键 子 父 FK_Classes_Semesters Classes Semesters FK_Courses_Semesters Courses Semesters FK_Exams_Semesters Exams Semesters 3 考试类型表 表名 ExamTypes(考试类型表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ExamTypeId int 4 非空 PK 考试类型编号 ExamTypeName varchar 50 空 Default:’’ 考试类型名称 SchoolId int 4 空 Default:’’ 学校编号 Remark varchar 500 空 Default:’’ 备注 补充说明 考试类型表外建定义 外键 子 父 FK_ExamTypes_Schools ExamTypes Schools 4 项目表 表名 Project(项目表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ProjectID int 4 非空 PK 项目编号 ProjectName varchar 50 空 Default:’’ 项目名称 ProjectPeriod int 4 空 Default:’’ 项目所需时间 CodeMeasure int 4 空 Default:’’ 代码量 ProjectLevel varchar 50 空 Default:’’ 项目难度 ProjectDesc nvarchar 200 空 Default:’’ 项目简介 Difficulty nvarchar 200 空 Default:’’ 项目重难点 Target nvarchar 200 空 Default:’’ 项目目的 Technique nvarchar 200 空 Default:’’ 项目技术 ProjectDataBase nvarchar 200 空 Default:’’ 所用数据库 Conditions nvarchar 200 空 Default:’’ 编程环境 Feature nvarchar 200 空 Default:’’ 项目特点 SkillDifficulty nvarchar 200 空 Default:’’ 技术难点 94 Asp.net 高级开发实训教程 表名 Project(项目表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 SkillKeynote nvarchar 200 空 Default:’’ 技术重点 Suggestion nvarchar 200 空 Default:’’ 相关建议 补充说明 5 教材表 表名 CourseBook(教材表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 CourseBookID int 4 非空 PK 教材编号 CourseBookName varchar 50 空 Default:’’ 教材名称 CourseBookCode varchar 50 空 Default:’’ 教材代号 CourseBookDesc varchar 200 空 Default:’’ 教材简介 TheoryPeriod int 4 空 Default:’’ 理论课时 PracticePeriod int 4 空 Default:’’ 实践课时 Knowledge varchar 200 空 Default:’’ 主要知识点 Suggestion varchar 200 空 Default:’’ 相关建议 补充说明 教材表外建定义 外键 子 父 FK_Courses_CourseBook Courses CourseBook 6 教材项目关联表 表名 Control(教材项目关联表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ID int 4 非空 PK 编号 CourseBookID int 4 非空 Default:’’ 教材编号 ProjectID int 4 非空 Default:’’ 项目编号 补充说明 教材可以和项目自由组合 7 课程表 表名 Courses(课程表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 CourseId int 4 非空 PK 课程编号 CourseName varchar 50 空 Default:’’ 课程名称 SchoolId int 4 空 Default:’’ 所属学校编号 SemesterId int 4 空 Default:’’ 所属学期编号 CourseBookID int 4 空 Default:’’ 书籍编号 补充说明 95 ASP.NET 实训教材 课程表外建定义 外键 子 父 FK_Courses_CourseBook Courses CourseBook FK_Courses_Schools Courses Schools FK_Courses_Semesters Courses Semesters 8 班级表 表名 Classes(班级表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ClassId int 4 非空 PK 班级编号 ClassName varchar 50 空 Default:’’ 班级名称 SchoolId int 4 空 Default:’’ 所在学校编号 SemesterId int 4 空 Default:’’ 所属学期编号 TeacherOfCharge varchar 50 空 Default:’’ 班 主 任 EnrollmentDate datetime 8 空 Default:’’ 入学时间 GraduateDate datetime 8 空 Default:’’ 毕业时间 IsGraduate bit 1 非空 Default:’ (0)’ 是否毕业 补充说明 班级表外建定义 外键 子 父 FK_Actions_Classes Actions Classes FK_Classes_Schools Classes Schools FK_Classes_Semesters Classes Semesters FK_ExamPlans_Classes ExamPlans Classes 9 学生基础信息表 表名 StudentBase(学生基础信息表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 StudentCode varchar 50 非空 PK 学生编号 StudentName varchar 50 空 Default:’’ 学生姓名 ClassId int 4 空 Default:’’ 所在班级编号 NameSpell varchar 50 空 Default:’’ 姓名拼音 SchoolId int 4 空 Default:’’ 学校编号 Birthday datetime 8 空 Default:’’ 生日 IdentityCard varchar 18 空 Default:’’ 身份证号 Sex varchar 2 空 Default:’’ 性别 Nation varchar 50 空 Default:’’ 民族 SchoolAge varchar 50 空 Default:’’ 学历 DwellingPlace varchar 50 空 Default:’’ 住址 NativePlace varchar 50 空 Default:’’ 籍贯 Photo varchar 300 空 Default:’’ 图片 96 Asp.net 高级开发实训教程 表名 StudentBase(学生基础信息表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 补充说明 学生基础信息表外建定义 外键 子 父 FK_Achievements_StudentBase Achievements StudentBase FK_StudentContact_StudentBase StudentContact StudentBase FK_StudentStudyRecord_Student Base StudentStudyRecord StudentBase 10 学生联系方式表 表名 StudentContact(学生联系方式表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ContactId int 4 非空 PK 通讯编号 StudentCode varchar 50 空 Default:’’ 学生编号 HomeAddress varchar 50 空 Default:’’ 家庭住址 family varchar 50 空 Default:’’ 家庭成员 Phone varchar 50 空 Default:’’ 宅电 MobileTelephone varchar 50 空 Default:’’ 移动电话 Email varchar 50 空 Default:’’ 电子邮箱 Others varchar 50 空 Default:’’ 其他联系方式 补充说明 学生联系方式表外建定义 外键 子 父 FK_StudentContact_StudentBas e StudentContact StudentBase 11 学生学历表 表名 StudentStudyRecord(学生学历表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 StudyRecordId int 4 非空 PK 学习记录编号 StudentCode varchar 50 空 Default:’’ 学生编号 ComputerLevel varchar 50 空 Default:’’ 计算机基础 EnglishLevel varchar 50 空 Default:’’ 英语基础 GraduateSchool varchar 50 空 Default:’’ 毕业学校 GraduateDate datetime 8 空 Default:’’ 毕业时间 Certificate varchar 50 空 Default:’’ 持有证书 JobCompany varchar 50 空 Default:’’ 工作单位 JobCourse varchar 500 空 Default:’’ 工作经历 补充说明 97 ASP.NET 实训教材 学生学历表外建定义 外键 子 父 FK_StudentStudyRecord_Student Base StudentStudyRecord StudentBase 12 学术活动表 表名 Actions(学术活动表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ActionId int 4 非空 PK 活动编号 ActionName varchar 50 空 Default:’’ 活动名称 ActionDate datetime 8 空 Default:’’ 活动日期 BeginTime varchar 50 空 Default:’’ 开始时间 EndTime varchar 50 空 Default:’’ 结束时间 ClassId int 4 空 Default:’’ 参加班级编号 Purpose varchar 500 空 Default:’’ 目的以及意义 补充说明 学术活动表外建定义 外键 子 父 FK_Actions_Classes Actions Classes 13 考勤表 表名 Attendances(考勤表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 AttendanceID int 4 非空 PK 出勤编号 StudentCode varchar 50 空 Default:’’ 学生学号 StudentName varchar 50 空 Default:’’ 学生姓名 ClassId int 4 空 Default:’’ 班级编号 SemesterId int 4 空 Default:’’ 所属学期 CourseName varchar 50 空 Default:’’ 所学课程 Situation varchar 50 空 Default:’’ 出勤情况 AttendanceTime datetime 8 空 Default:’’ 出勤日期 AttendanceDesc varchar 255 空 Default:’’ 出勤备注 补充说明 14 考试表 表名 Exams(考试表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ExamId int 4 非空 PK 考试编号 ExamName varchar 50 空 Default:’’ 考试名称 SchoolId int 4 空 Default:’’ 学校编号 SemesterId int 4 空 Default:’’ 学期编号 ExamTypeId int 4 空 Default:’’ 考试类型 98 Asp.net 高级开发实训教程 表名 Exams(考试表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ExamMedium varchar 50 空 Default:’’ 考试方式(理论、上 机) Remark varchar 500 空 Default:’’ 备注 补充说明 考试表外建定义 外键 子 父 FK_ExamPlans_Exams ExamPlans Exams FK_Exams_Schools Exams Schools FK_Exams_Semesters Exams Semesters 15 考试安排表 表名 ExamPlans(考试安排表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 ExamPlanId int 4 非空 PK 考试安排编号 ExamPlanName varchar 50 空 Default:’’ 考试安排标题 ExamId int 4 空 Default:’’ 对应的考试编号 ExamDate datetime 8 空 Default:’’ 考试日期 ExamStartTime varchar 50 空 Default:’’ 考试起始时间 ExamEndTime varchar 50 空 Default:’’ 考试结束时间 ClassId int 4 空 Default:’’ 考试班级编号 Remark varchar 500 空 Default:’’ 备注 补充说明 考试安排外建定义 外键 子 父 FK_Achievements_ExamPlans Achievements ExamPlans FK_ExamPlans_Classes ExamPlans Classes FK_ExamPlans_Exams ExamPlans Exams 16 成绩表 表名 Achievements(成绩表) 列名 数据 类型 长度 空/ 非空 约束 条件 说明 AchievementId int 4 非空 PK 成绩编号 ExamPlanId int 4 空 Default:’’ 考试安排编号 ExamId int 4 空 Default:’’ 对应的考试编号 ClassId int 4 空 Default:’’ 班级编号 StudentCode varchar 50 空 Default:’’ 学生编号 StudentName varchar 50 空 Default:’’ 学生姓名 Result varchar 50 空 Default:’’ 考试成绩 补充说明 99 ASP.NET 实训教材 成绩表外建定义 外键 子 父 FK_Achievements_ExamPlans Achievements ExamPlans FK_Achievements_StudentBase Achievements StudentBase 数据库各表之间的关系如下图: 100 Asp.net 高级开发实训教程 数据表关系图 101 ASP.NET 实训教材 5.界面设计 1 学校管理页面 2 学校信息编辑页面 3 学期管理页面 102 Asp.net 高级开发实训教程 4 学期信息编辑界面 5 添加考试类型界面 6 考试类型管理界面 7 项目信息搜索和编辑界面 103 ASP.NET 实训教材 8 项目信息编辑界面 9 教材信息搜索、编辑和删除界面 104 Asp.net 高级开发实训教程 10 教材信息编辑界面 11 教材项目绑定信息搜索界面 105 ASP.NET 实训教材 12 教材项目关联管理界面 13 课程管理界面 14 课程信息编辑界面 106 Asp.net 高级开发实训教程 15 班级信息搜索、编辑和删除界面 16 班级管理界面 17 学生基础信息管理界面 107 ASP.NET 实训教材 18 学生基础信息编辑界面 19 联系方式编辑界面 108 Asp.net 高级开发实训教程 20 教育情况编辑界面 21 出勤信息管理界面 22 出勤信息搜索界面 109 ASP.NET 实训教材 23 出勤信息添加 24 学术活动管理界面 110 Asp.net 高级开发实训教程 25 学术活动编辑界面 26 考试信息管理界面 27 考试信息管理界面 111 ASP.NET 实训教材 28 考试安排界面 29 考试安排管理界面 30 成绩管理界面 31 成绩修改界面 112 Asp.net 高级开发实训教程 32 成绩添加界面 33 考试成绩图表分析界面 113 ASP.NET 实训教材 34 合格人数统计图表分析界面 35 班级出勤统计图表分析界面 114 Asp.net 高级开发实训教程 附录一 编程规范 1.规范制定原则  方便代码的交流和维护。  不影响编码的效率,不与大众习惯冲突。  使代码更美观、阅读更方便。  使代码的逻辑更清晰、更易于理解。 2.编码规范的必要性  多人协作时,代码清晰易懂  容易发现代码的问题,调试时比较容易  体现公司形象 3.编码规范的要点 排版规范(缩进、空行) 注释规范清晰 类名、方法名定义规范(大小写) 变量定义规范(大小写、变量有意义) 4.注意点 遵守规范是第一位的 注重代码的效率 如:不推荐使用如下的字符串连加的方式 string strSql = “SELECT ID,NAME,SEX,BIRTHDAY,” + “BELONGCLASSID,BELONGGRADEID “ + “FROM STUDENTINFO”; 应该改用如下方式: StringBuilder sbSql = new StringBuilder(); sbSql.append(“SELECT ID,NAME,SEX,BIRTHDAY,”); sbSql.append(“BLONGCLASSID,BELONGGRADEID “); sbSql.append(“FROM STUDENTINFO”); String strSql = sbSql.ToString(); 代码要清晰易懂,不要编写含糊晦涩的代码 115 ASP.NET 实训教材 5.ASP.NET 编码规范 ASP.NET 的编码规范主要是数据类型、控件命名、ADO.NET 等方面的规范,其他的请参 照 C#的编码规范 数据类型 数据类型简写 标准命名举例 Array arr arrShoppingList Boolean bln blnIsPostBack Byte byt bytPixelValue Char chr chrDelimiter DateTime dtm dtmStartDate Decimal dec decAverageHeight Double dbl dblSizeofUniverse Integer int intRowCounter Long lng lngBillGatesIncome Object obj objReturnValue Short shr shrAverage Single sng sngMaximum String str strFirstName 控件类型 缩写 示例 Animated button ani aniMailBox Button btn Check box chk chkReadOnly ColorDialog clrdlg Combobox,drop-down list box cbo cboEnglish Communications com comFax ContextMenu ctxmnu Control(used within procedures when the specific type is unknown) ctr ctrCurrent CrystalReportViewer crvw Data dat datBiblio Data grid dgd dgdTitles Data list dbl dblPublisher 116 Asp.net 高级开发实训教程 Data repeater drp drpLocation Data-bound combo box dbcbo dbcboLanguage Data-bound grid dbgrd dbgrdQueryResult Data-bound list box dblst dblstJobType Datetime picker dtp dtpPublished Directory list box dir dirSource DomainUpDown dupd Drive list box drv drvTarget ErrorProvider err File list box fil filSource Flat scroll bar fsb fsbMove FontDialog fntdlg Form frm frmEntry Frame fra fraLanguage Gauge gau gauStatus Graph gra graRevenue Grid grd grdPrices GroupBox grp HelpProvider hlp Hierarchical flexgrid flex flexOrders HScroll bar hsb hsbVolume Image img imgIcon Image combo imgcbo imgcboProduct ImageList ils ilsAllIcons Label lbl lblHelpMessage Line lin linVertical LinkLabel lnk List box lst lstPolicyCodes ListView lvw lvwHeadings MAPI message mpm mpmSentMessage MAPI session mps mpsSession MCI mci mciVideo 117 ASP.NET 实训教材 Menu mnu mnuFileOpen Month view mvw mvwPeriod MonthCalendar mcl MS Chart ch chSalesbyRegion MS Flex grid msg msgClients MS Tab mst mstFirst NotifyIcon nti NumericUpDown nupd OLE container ole oleWorksheet OpenFileDialog ofdlg PageSetUpDialog psdlg Picture box pic picVGA Picture clip clp clpToolbar PrintDocument prndoc PrintPreviewControl ppctl PrintPreviewDialog ppdlg ProgressBar prg prgLoadFile RadioButton rbtn Remote Data rd rdTitles RichTextBox rtf rtfReport SaveFileDialog sfdlg Shape shp shpCircle Slider sld sldScale Spin spn spnPages Splitter spt StatusBar sta staDateTime SysInfo sys sysMonitor TabContrl tab TabStrip tab tabOptions Text box txt txtLastName Timer tmr tmrAlarm Toolbar tlb tlbActions TrackBar trb TreeView tre treOrganization 118 Asp.net 高级开发实训教程 UpDown upd updDirection VScroll bar vsb vsbRate 数据类型 数据类型简写 标准命名举例 Connection con conNorthwind Command cmd cmdReturnProducts Parameter parm parmProductID DataAdapter dad dadProducts DataReader dtr dtrProducts DataSet dst dstNorthWind DataTable dtbl dtblProduct DataRow drow drowRow98 DataColumn dcol dcolProductID DataRelation drel drelMasterDetail DataView dvw dvwFilteredProducts 数据类型 数据类型简写 标准命名举例 MainMenu mmnu mmnuFile PictureBox pic picImage Panel pnl pnlBody DataGrid dgrd dgrdView CheckedListBox clst clstChecked ComboBox cbo cboMenu ListView lvw lvwBrowser TabControl tctl tctlSelected DateTimePicker dtp dtpStartDate HscrollBar hsb hsbImage VscrollBar Vsb vsbImage Timer Tmr tmrCount ImageList Ilst ilstImage ToolBar Tlb tlbManage StatusBar Stb stbFootPrint 119 ASP.NET 实训教材 OpenFileDialog Odlg odlgFile SaveFileDialog Sdlg sdlgSave FoldBrowserDialog fbdlg fgdlgBrowser FontDialog Fdlg fdlgFoot ColorDialog Cdlg cdlgColor PrintDialog Pdlg pdlgPrint AdRotator Adrt Example Button Btn btnSubmit Calendar Cal calMettingDates CheckBoxList chkl chklFavColors CompareValidator Valc valcValidAge CustomValidator Valx valxDBCheck DataGrid dgrd dgrdTitles DataList Dlst dlstTitles DropDownList drop dropCountries HyperLink Lnk lnkDetails ImageButton Ibtn ibtnSubmit LinkButton Lbtn lbtnSubmit ListBox Lst lstCountries Panel Pnl pnlForm2 PlaceHolder Plh plhFormContents RadioButton Rad radFemale RadioButtonList Radl radlGender RangeValidator Valg valgAge RegularExpression Vale valeEmail_Validator Repeater Rpt rptQueryResults RequiredFieldValidator Valr valrFirstName Table Tbl tblCountryCodes TableCell Tblc tblcGermany TableRow Tblr tblrCountry TextBox Txt txtFirstName ValidationSummary Vals valsFormErrors XML xmlc xmlcTransformResults 120 Asp.net 高级开发实训教程 附录二 代码重构 ASP.NET 技术支持几种帮助更好地结构化和促进应用程序重用的机制。这些机制是特 别为 ASP.NET 这种混合 HTML 标记和.NET 代码的编程模型设计的。 例如,母版页面适合于实现可视化的继承功能。通过这种继承功能,几个页面共享同一 个视觉外观的部分。用户控件在封装自定义的功能(可以当作 ASP.NET 服务器控件来重用) 方面表现很优秀,而自定义的服务器控件对于在项目之间共享这种功能并将其以二进制形式 分发表现优秀。 然而,在继续讨论这些有用的 ASP.NET 功能之前,首先将讨论 ASP.NET 的单文件(sin gle-file)代码模型和代码隐藏(code-behind)代码模型。 1.ASP.NET 代码模型:单文件和代码隐藏 在传统的 ASP 中,常常将 HTML 与 VB 或 JScript 代码混合在同一个.asp 文件中,并使 用<%和%>标记将由服务器处理的代码标记出来。类似的单文件(即内联)模型可用于 ASP.N ET 页面中。在这种模型中,将 C#代码放在
122 Asp.net 高级开发实训教程 重构后 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SingleFileOrCodeBehind.aspx.cs" Inherits="GetToPost.SingleFileOrCodeBehind" %>
SingleFileOrCodeBehind.aspx.cs: using System; namespace GetToPost { public partial class SingleFileOrCodeBehind : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Label1.Text = "Hello from C# code!"; } } } SingleFileOrCodeBehind.designer.aspx.cs: //--------------------------------------------------------------------- // // This code was generated by a tool. 123 ASP.NET 实训教材 // Runtime Version:2.0.50727.3053 // // Changes to this file may cause incorrect // behavior and will be lost if // the code is regenerated. // //--------------------------------------------------------------------- namespace GetToPost { public partial class SingleFileOrCodeBehind { /// /// form1 control. /// /// /// Auto-generated field. /// To modify move field declaration from /// designer file to code-behind file. /// protected global::System.Web.UI.HtmlControls.HtmlForm form1; /// /// Label1 control. /// /// /// Auto-generated field. /// To modify move field declaration from designer /// file to code-behind file. /// protected global::System.Web.UI.WebControls.Label Label1; } } Refactor! for ASP.NET 中的 Move to Code-Behind 重构 请确保在尝试通过Refactor! for ASP.NET执行Move to Code-Behind重构之前创建了 代码隐藏类和设计器类。如果没有代码隐藏类,那么 Refactor! for ASP.NET 不会在菜单中 提供这种重构;只有 Extract UserControl 重构可供使用。 为了能执行该重构,可以单击用于标记内联的 C#代码的脚本标记。 124 Asp.net 高级开发实训教程 2.母版页面 在通常的网站中,所有的页面都共享特定的元素。在浏览站点并从一个页面导航到另一 个页面时,这些元素不会发生更改。通常这些元素包括页眉、页脚以及可以放在页眉中的或 作为边栏、条幅的菜单等。 从传统意义上讲,实现网站中该功能的方法有很多。根据站点所依赖的技术,这些方法 包括如下: ● 复制并粘贴共享的 HTML 可能有人会猜到,这种方法可能会导致代码的重复,这 是该方法主要的缺点。如果必须修改页眉或页脚中的内容,必须编辑站点中的所有的页面。 ● 使用框架 如前一章中已经提到的,最新的 HTML Strict 和 XHTML Strict 规范已 经不再使用框架。使用框架将让站点从很多方面违背直觉:将对为站点添加书签或链接到该 站点的操作产生不利的影响,可能影响到网络蜘蛛访问站点的方式,相对而言难以实现,等 等。 ● 使用服务器端包含(Server-Side Includes,SSI) 只有当站点是以用于动态页面生成 的技术(如 PHP、ASP、JSP 及其他技术)构建的,才可以使用该方法。必须很小心,确保正 确地嵌套和终止了所有的元素,而且必须将 include 指令放在每个页面中,这将导致这些指 令跨多个页面重复。 ● ASP.NET 中的用户控件 可以为站点中的每个公共区域创建一个用户控件:这个 控件可能代表页眉,或用于表示页脚等。必须将这些控件放在站点的每个 ASP.NET 页面上, 这样将导致重复的系统开销。 ● ASP.NET 2.0 及其后版本中的母版页面 该解决方案将生成最少的重复,但是仅限 于 ASP.NET 2.0 及其后的平台上。此外,如果想要预览页面以弄清楚在将主页面和子页面 合并到 IDE 中之后如何呈现这些页面,则还将仅限于使用 Visual Studio 以及支持该功能的 编辑器。 在使用 ASP.NET 2.0 及其后的版本时,母版页面是在单个位置维持公共内容的最佳解 决方案,这将减少重复,避免缺陷,如在使用框架时出现的 URL 和书签的问题。母版页面 另一个很好的功能是可以嵌套母版页面、创建母版页面的层次结构,并在必要的时候可以通 过编程的方法来操纵它们。 1. 母版页面与 Web Content Form 虽然母版页面用于定义公共的元素,但是每个页面的内容都是在另一种页面中定义的, 这种页面称为 Web Content Form。母版页面可以定义很多 ContentPlaceHolder,在呈现页 面时可以使用 Web Content Form 替换 ContentPlaceHolders。用于显示页面的 URL 指向 We b Content Form;ASP.NET 运行库将确保在呈现网页时使用母版页面的模板。 Web Content Form 应在 asp:Content 元素中定义其所有内容,而不应该定义任何顶层 H TML 元素,如 html、body 或 form。@Page 指令的 MasterPageFile 特性用来指明在呈现 Web Content Form 时将哪一个母版页面用作模板。页面设计可以在母版页面中定义多个 Conten tPlaceHolder。在这种情况下,应该为 Web Content Form 中的每个 ContentPlaceHolder 提供内容。 重构:将公共内容提取至母版页面(Extract Common Content to Master Page) 125 ASP.NET 实训教材 动机 母版页面是 ASP.NET 中的一个模板机制,它允许将很多页面上的公共元素放到单个文件 中,而不会产生任何其他包含机制(如 SSI 或框架)所有的副作用。 相关的味道 使用该重构可以减少应用程序中的重复并避免其他包含机制的缺陷。 技巧 如果母版页面已经存在于项目中,那么将 Web Form 转换成 Web Content Form 的过程相 对很简单: (1) 从 Web Form 中删除所有顶层 HTML,并使用 asp:Content 元素包含 Web Form 的内 容。请确保为 asp:Content 元素定义了 ContentPlaceholderID 特性;它将指明应该使用 Web Form 替换母版页面的哪一个 ContentPlaceHolder。 (2) 定义@Page 指令的 MasterPageFile 特性,以便其可以指向希望用于 Web Form 上 的母版页面。 如果母版页面在项目中不存在,则首先应创建它。然后,将所有公共的标记移到母版页 面中并在母版页面上定义 ContentPlaceHolder。最后,执行步骤(1)和(2)。 重构前 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ContactUs.aspx.cs" Inherits="MasterPage._ContactUs" %>

126 Asp.net 高级开发实训教程


重构后 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ContactUs.aspx.cs" Inherits="MasterPage._ContactUs" MasterPageFile="NewMasterPageFile0.master" %>



MasterPage.master: <%@ Master CodeFile="NewMasterPageFile0.master.cs" Language="C#" Inherits="NewMasterPageFile0" %> 127 ASP.NET 实训教材
Refactor! for ASP.NET 中的 Extract ContentPlaceHolder(and create master page) 重构 为了调用 Extract ContentPlaceHolder(and create master page)重构,必须选中希 望保存在 Web Form 中的控件。在提取之后,Refactor!将把当前的 Web Form 转换成 Web Co ntent Form,并将内容包含在 asp:Content 元素中。此外,它还将在最初的 Web Form 的基 础上,使用特定元素的 ContentPlaceHolder(这些元素现在是 Web Content Form 的一部分) 创建一个新的母版页面。 为了将某个区域提取到 ContentPlaceHolder 和 Web Content Form 中,可以在现有的母 版页面上使用另一个名为 Extract ContentPlaceHolder 的重构。如果认识到母版页面上的 这一区域不是在每个窗体上都有的,那么该重构可能很有用,但是这取决于每个 Web Conte nt Form。 3.Web 用户控件与自定义的服务器控件 在将 GUI 控件用于构造应用程序中的视图时,首先将 GUI 控件从调色板(palette)中拖 放到 WYSWYG 设计器区域,然后在属性窗口中设置控件的属性,这是创建 GUI 的高效率且高 生产率的方法。对于编程人员来说,已经非常熟悉这种 GUI 构造模式,其原因可以从 Visua l Basic 和 Delphi 之类的工具中找到答案。在 ASP.NET 中,将相同的模式运用于 Web 应用 程序编程中。 这种 GUI 构造模式的一个最具生产率的功能是控件调色板可以通过第三方或自定义的 控件来扩展。创建自定义的控件是促进重用和减少代码中重复的很好方法。 您常常会发现这样的情形:必须将某种自定义的行为添加到内置的控件中,或在不同的 视图中总是以相同的方式组合和使用一些控件。在这些情形下,很明显可以通过创建自定义 的控件避免这种代码的重复。 128 Asp.net 高级开发实训教程 重构:提取用户控件(Extract User Control) 动机 用户控件是用于将与 GUI 相关的功能封装到单个组件中的很好的机制。在 ASP.NET 中,除了 C#代码之外,控件可以包含 HTML 和 ASP.NET 标记、JavaScript 等。 相关的味道 使用该重构可以减少应用程序中“重复代码”的味道。 技巧 在使用“提取用户控件”重构时,需要完成如下的步骤: (1) 向项目中添加新的用户控件项。 (2) 从Web Form中剪切希望提取到用户控件中的标记,并将其粘贴到新创建的用户控件中。 (3) 从 Web Form 中剪切相关的 C#代码并将其粘贴到用户控件中。 (4) 将@Register 指令添加到 Web Form 中,这样它就指向提取出的用户控件。 (5) 将提取出的用户控件的实例放在 Web Form 中,替换最初提取出的标记。 重构前 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="UserControl._Default" %> Login
Enter Login Data


129 ASP.NET 实训教材



重构后 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="UserControl._Default" %> <%@ Register TagPrefix="user" TagName="SSN" Src="SSN.ascx" %> 130 Asp.net 高级开发实训教程 Login
Enter Login Data





SSN.ascx: <%@ Control Language="C#" AutoEventWireup="true" ClassName="SSN" %>
131 ASP.NET 实训教材 在 ASP.NET 中,存在两种自定义的控件:用户控件和自定义的服务器控件。用户控件很 容易创建;可用相同的 WYSWYG 设计器创建此类控件。然而,这些控件只在源代码层次上可 重用。跨项目重用这些控件的唯一方法是将.ascx 文件导入到需要使用到该控件的每个项目 中。 自定义的服务器控件可以编译成可重用的二进制文件并作为编译过的程序集来发布。这 些控件很适用于第三方控件的商业发布。然而,相比较而言,这些控件构建起来要困难很多。 此时,不能使用 WYSWYG 设计器,而且必须更深刻地理解 ASP.NET 服务器控件的技术。下表 给出了这两项技术在扩展 ASP.NET 中内置的控件调色板时的区别。 用户控件与自定义的服务器控件的比较 因 素 用 户 控 件 自定义控件 发布 源代码 二进制文件 WYSWYG 设计器支持 是 否 复杂度 相对较低 高 是否在工具箱中出现 否 是 Refactor! for ASP.NET 中的 Extract UserControl 重构 为了能激活该重构,可以选中提取到 Web Form 的用户控件中的标记。Refactor!将为提 取出的用户控件创建一个新的.ascx 文件,并将选中的标记翻译成这种文件。它将把@Contr ol 指令放在文件的顶部。在最初的文件中,将用对新用户控件的引用来替换标记。 注意:在提取没有相关的 C#代码的用户控件时,Refactor! for ASP.NET 似乎有一些怪 异。即使在没有 C#的情况下,Refactor!都将通过 Inherits 和 CodeBehind 特性在@Control 指令中声明控件。为了能让这种用户控件正常工作,需要修改声明,方法是删除 CodeBehind 和 Inherits 特性并放置 ClassName 特性,该特性值为提取出的用户控件的名称。 132 Asp.net 高级开发实训教程 附录三 结对编程 在极限编程与敏捷开发一文中,我们曾介绍过几种有效实践的方法,其中之一就是结对 编程。结对编程好像两个程序员在一个工作台上共同参与、合作。就好像一个开车一个做导 航员,而且最好经常是互换角色。 这种合作对开发程序有很多好处。比如增加纪律性,写 出更好的代码等。 近日,皇家信号学校的 Stuart Wray 为 IEEE 软件杂志 2010 年的一月刊撰写了一篇文章, 题目是“结对编程如何才能真正起作用”。在文章中,它举出可各种结对的方法(帮工-学 徒/驱动者-导航者),并指出了工作的一般方式: 敏捷开发实践 拥抱变化的产品开发流程 敏捷开发中对进度的把握 再谈敏捷开发 从成本到收益的优化 敏捷开发的 26 条至理名言 敏捷开发过程中如何开发高质量的软件 作为使用结对编程的开发者,我自己的的经验是这样的,它并非只是一种一个人编码, 另一个人观察的技术。两个程序员会很紧密地在一起工作,总是在交谈,快速记下对要做的 事儿的提醒,并且在屏幕上指出代码的片段。(结对编程的特征之一就是,如果你正确地使 用了这种方法,那么在一天结束的时候,屏幕上会满是油腻的手指印。)程序员轮番使用键 盘,经常会用这样的话来进行交换,“不,让我向你展示一下我是什么意思。” 以他对有效的结对编程的描述为基础(并且指出并非所有对结对编程的实现都是有效 的),他提出了能够使有效的结对编程变得成功的四种机制。 机制一:结对编程者的交谈 Brian Kernighan 和 Rob Pike 建议要大声地解释问题,即便是向毛绒玩具也要那样,Jo hn 正在研究的一种实践叫做“橡胶植物效应(rubber-plant effect)”。结对编程的一部分效 力是由于持续触发这种效应而得到的:当一位程序员被卡住了,那么反复的交谈会使其突破, 这种方式与单独工作的程序员大声地说出自己的问题是类似的。 他还讨论了交谈带来的更大的好处,其中应用了他所谓的“专家程序员理论”——随着 需要知识的问题被更有效地解决,结对的两个人会彼此更了解对方。 那么这可能正是专家程序员理论起作用的地方:专家更可能会提出有深度的问题,那会 对被卡住的程序员起到很大的提示作用。看起来还可能仅仅是认为你正在与一位专家交谈— 或者假装—那会帮助被卡住的程序员得出那种有深度的问题,可能在之前专家曾经问过他 们。 将交谈的价值累加起来,他指出:这样,第一种机制让我们可以猜测,对程序谈论更多 的程序员会更有生产力,而不时地互相提出有深度的问题的人会是生产力最高的。 133 ASP.NET 实训教材 机制二:结对编程者会注意到更多细节 “你看不到自己的错误”,这是软件开发中的(也是很多其它学科的)公理。 我们所能注意到的东西取决于我们期望看到什么,以及我们无意识地认为突出的东西。 尽管成功的结对编程者通常更多地会关注同样的东西,但是他们也可能会注意到不同的东 西。 因此,一起编程的两个人不会擅长同样的知识或者类别:一个人可能会更快地指出某个 方面的问题,而另一个人对于其他方面更快一些。这样他们的工作效率就取决于他们通过观 察来找到问题的速度。两个人的头脑肯定会比一个人的好。事实上,当人们开始进行结对编 程的时候,最早做出的发现之一就是,不输入代码的人总是会更快地找出拼写错误:“哦, 在这里你漏掉了逗号。” 接下来,他提出了关于结对疲劳现象的警告:当两个程序员进行结对,他们发现和无法 发现的东西会变得越来越类似。最终,两双眼睛的优势会丧失殆尽。 结对疲劳使得我们经常对结对进行轮换: 有些结对编程者认为轮换是实践中可选的部分,而且在小型团队或者是没有几个程序员 愿意结对的团队中,可能没有其它的选择。但是,结对疲劳意味着最终他们的生产力会降低。 机制三:与不好的实践作斗争 由于各方面压力而不使用不好的实践,有人已经明确指出这是有效的结对编程的优势。 他讨论了“编码并修正”编程的例子,并将它与老虎机赌博成瘾相关联。 这是交互编程特定的属性,使得我们很难做正确的事情。使用编码并修正的方式,我们 会随意的修改程序,每次运行代码的时候,就像将硬币放在老虎机里面一样。老虎机是我们 所知道的最容易上瘾的一种赌博形式。而来自于“编码并修正”编程会带来类似的不可预测 的好处,这意味着它同样让人容易上瘾。 而结对编程比较不容易受到不好的实践的影响,因为程序员们会承诺以特定的方式编写 代码,并确保两个人都信守承诺。在人们容易犯错的工作中,两人结对工作的方式变得越来 越流行,这会让我们认真考虑,结对的压力也可能是我们的一种解决方案。 机制四:分享并评价专家的意见 个人的生产力之间会有巨大的不同,至少可以将其分解成十个因素来度量。这通常意味 着对难度和时间的估计是不准确的。对于好的和坏的程序员都是这样——你只能通过与其紧 密地工作来确定一个人的编程能力。 大多数程序员会解决他们自己的问题,因此没有人知道他们有多棒(或者有多糟糕)。 但在结对编程中,人们持续地一起工作。因为他们会不停地交换搭档,团队中的每个人都知 道对于特定的领域谁是最专业的。出于这种比较,他们也会意识到自己的专业等级。这样我 们应该期望,比起单独的编程团队,通过结对编程可以对时间和难度进行更准确的估计。从 我们的经验看,这的确是那样的。
还剩138页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

s2333420

贡献于2015-09-06

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf