《毕业设计(论文)ASP.NET供求信息网的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)ASP.NET供求信息网的设计与实现.doc(28页珍藏版)》请在三一办公上搜索。
1、 开 封 大 学KAIFENG UNIVERSITY毕 业 论 文 供求信息网的设计与实现姓 名:xxxx院 系:软 件 技 术 学 院专 业:软 件 技 术班 级:09 级 软 件 4 班指导教师:xxx 目 录一、开发背景4(一)电子商务的开发过程4二、系统分析5(一)需求分析5(二)可行性分析- 6 -(三)可行性研究的前提- 6 -(四)投资及效益分析- 7 -(五)结论- 7 -(六)编写项目计划书- 7 -四、 系统设计- 11 -(一) 系统目标- 11 -(二)系统用例图- 11 -(三)业务流程图- 13 -(四)网站功能结构- 14 -(五)编码规则- 15 -(六)构建开
2、发环境- 17 -(七)数据库设计- 18 -五、供求信息管理系统的实现- 20 -(一)系统模块的详细设计- 20 -六、单元测试- 24 -结束语- 27 -参 考 文 献- 28 -论文摘要在全球知识经济和信息化高速发展的今天,信息化是决定企业成败的关键因素,也是企业实现跨地区、跨行业、跨所有制,特别是跨经营的重要前提。结合系统-供求信息的要求,对SQL语言、SQL Server 2005数据库、Visual Studio 2005应用程序设计进行了比较深入的学习和应用,完成对供求信息的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。按照数据库设计理论一步一步地
3、给出了系统需求说明书、局部ER图、全局ER图、系统关系模式,子模式,建立了数据库.然后进行了具体的程序设计,实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表的连接操作,实现了条件查询和模糊查询,并灵活实现了对不可更新查询结果集的更新操作,实现了主从表操作,实现了密码修改维护功能,设计充分利用Visual Studio 2005进行开发,提高了编程效率。关键词 ASP.NET2.0 SQL Server 2005 数据库 数据表 信息管理一、开发背景周口华网信息科技有限公司是一家集数据通信、系统集成、电话增值服务于一体的高科技公司。公司为了扩大规模,增强企业的竞争力,决
4、定向多元化发展,借助Internet在国内的快速发展,聚集部分资金投入网站建设,为企业和用户提供综合信息服务,以向企业提供有偿信息服务的盈利方式。例如,提供企业广告、发布招聘信息、寻求合作等服务方式。现需要委托其他单位发一个信息网站。(一) 电子商务的开发过程一般包括如下几个步骤:1. 需求分析:需求分析主要是了解用户的需求。一般的开发团队中,需求分析都是由资历较深的系统分析员或项目经理担当,可见它的重要性。2. 概要设计:概要设计紧跟在需求分析之后。用户需求明确后,将得到的数据分析后,开始构建数据库的逻辑结构。此时,数据库中的表格还未成形,通过各种分析工具画出数据流图,最后就可抽象出数据库的
5、具体表结构。这时由系统分析人员反复审核。确认所有的需求都考虑在内,没有遗漏后,就可以开始制订概要设计文档。概要设计文档形成后,整个程序的逻辑框架也就形成了。3. 详细设计:概要设计完成后,根据设计中制订的业务模块。就可以进行详细分析设计了。详细设计就是将各个业务模块的窗口全部建好,各个窗口控件的处理代码全部用语言表达出。4. 编码:程序编码相对于其他环节来说比较简单,程序员只需要根据详细分析文档写程序编码,保证代码没有错误即可。需要在不断的实践中形成自己独特的风格。总的来说,不要过分地追求复杂的算法,因为那可能会导致后期维护人员无法读懂你的代码而造成维护的困难。5. 测试:程序编码完成后,就需
6、要测试。测试有几种类型,主要是测试代码有无逻辑错误以及在加载数据环境下程序的稳定性问题。测试工作中发现的错误应及时改正,然后将它记录到测试文档中。6. 打包:测试完成,确认无误后。程序就可以打包发行了。打包一般使用工具如PWISE等。7. 维护:由于之前需求分析的不足,或是程序编码上的漏洞等,所以在程序打包发布之后,还有一项重要的工作就是对系统的维护。维护包括:改进性维护、适应性维护、完善性维护及预防性维护等以上是一个完整的电子商务系统开发过程,其实不仅电子商务系统,其他类型的程序开发也基本相同。二、系统分析(一)需求分析 对于信息网站来说,用户的访问量是至关重要的。如果网站的访问量很低,那么
7、就很少有企业会要求为其提供有偿服务,也就没有利润可言了。因此信息网站必须为用户提供大量的、免费的、有价值的信息才能够吸引用户。为此,网站不仅要为企业提供各种有偿服务,还需要额外为用户提供大量的无偿服务。通过与企业的实际接触和沟通,确定网站应包括招聘信息、求职信息、培训信息、公寓信息、家教信息、车辆信息、物品求购、物品出售、求兑出兑、寻求合作、企业广告等服务。通过实际调查,要求供求信息网具有以下功能:1. 由于用户的计算机知识普遍偏低,因此要求系统具有良好的人机界面。2. 方便的供求信息查询,支持多条件和模糊查询。3. 前台与后台设计明确,并保证后台的安全性。4. 供求信息显示格式清晰,达到一目
8、了然的效果。5. 用户不需要注册,便可免费发布供求信息。6. 免费发布的供求信息,后台必须审核后才能正式发布,避免不良信息。 (二)可行性分析 根据GB856788计算机软件产品开发文件编制指南中可行性分析的要求,制定可行性研究报告如下。(1)编写目的为了给企业的决策层提供是否进行项目实施的参考依据,现以文件的形式分析项目的风险、项目需要的投资与效益。(2)背景周口华网信息科技有限公司是一家以信息产业为主的高科公司。公司为了扩展业务,需要一个CTC(消费者与消费者之间的交易平台)和BTC(企业为消费者提供的交易平台)业务平台,现需要委托其他公司开发一个提供供求信息的网站,项目名称为供求信息网。
9、(三)可行性研究的前提 1. 要求网站要求为用户提供求职信息、物品求购、培训信息、家教信息等服务,同时需为企业提供招聘信息、寻求合作和企业广告的服务。2. 目标网站的主要目标是为用户及时、准确地提供所需信息,为企业无偿和有偿提供服务。3. 条件、假定和限制项目需要在3个月内交付用户使用。系统分析人员需要3天内到位,用户需要5天时间确认需求分析文档。去除其中可能出的问题,例如用户可能临时有事,占用8天时间确认需求分析。那么程序开发人员需要在2个月零20天的时间内进行系统设计、程序编码、系统测试、程序调试和网站部署工作。期间,还包括员工每周的休息时间。4. 评价尺度根据用户的要求,项目主要以企业服
10、务功能为主(毕竟企业需要向用户付费),因此对于企业的招聘、广告业务需要及时、准确地发布,并且能够对这些信息进行修改。此外,出于安全和国家法律方面的考虑,网站在遭受到黑客攻击时,应在10分钟内进行恢复;对于网站中涉及违反国家法律、法规的内容应能够删除。由于网站的业务量比较大,网站应能够承受同时5万人的点击。(四)投资及效益分析1. 支出由于网站的规模比较大,项目周期比较短,仅3个月,因此至少需要13人投入到其中。公司将为此支付11万元的工资及各种福利待遇。在项目安装及调试阶段,用户培训、员工出差等费用支出需要2万元。在项目维护阶段预计投入3万元的资金。累计项目投入需要16万元资金。2. 收益用户
11、提供项目资金40万元。对于项目运行后进行的改动,采取协商的原则根据改动规模额外提供资金。因此从投资与收益比上,公司可以获得24万元的利润。项目完成后,会给公司提供资源储备,包括技术、经验的积累,其后再开发类似的项目时,可以极大地缩短项目开发周期。(五)结论根据上面的分析,在技术上不会存在问题,因此项目延期的可能性很小。在效益上公司投入15个人、3 个月的时间获利24万元,比较可观。在公司今后发展上,可以储备网站开发的经验和资源。因此认为该项目可以开发。 (六)编写项目计划书根据GB856788计算机软件产品开发文件编制指南中的项目开发计划要求,结合单位实际情况,设计项目计划书如下:1、引言编写
12、目的为了保证项目开发人员按时保质地完成预定目标,更好地了解项目实际情况,按照合理的顺序开展工作,现以书面的形式将项目开发生命同期中的项目任务范围、项目团队组织结构、团队成员的工作责任、团队内外沟通协作方式、开发进度、检查项目工作等内容描述出来,作为项目相关人员之间的共识和约定项目生命周期内的所有项目活动的行动基础。背景供求信息网是由周口华网信息科技有限公司委托我公司的大型信息网站,主要功能是为用户无偿提供求职信息、物品求购、培训信息、家教信息等服务,为企业提供招聘信息、寻求合作和企业广告等有偿服务。项目同期为3个月。项目背景规划如表1所示。项目背景规划表1 项目名称 项目委托单位 任务提出者
13、项目承担部门 周口华网信息科技 研发部门供求信息网 有限公司 杨经理测试部门集成部门 2、概述项目目标项目目标应当符合SMART原则,把项目要完成的工作用清晰的语言描述出来。供求信息网的项目目标如下:供求信息网主要针对两类人群,一类是用户,另一类是企业。对于用户,供求信息网需要提供求职信息、公寓信息、物品求购信息、家教信息、物品出售、车辆信息服务。对于俨,供求信息网需要提供寻求合作、企业广告、招聘信息、求兑出兑、培训信息等服务。项目实施后,能够为用户生活带来极大方便,提高企业知名度,为企业产品宣传节约大量成本。整个项目需要3个月时间内交付用户使用。产品目标当今社会,信息就是资本,信息就是财富。
14、一方面供求信息网能够为企业节省大量人力资源,企业不再需要一量的业务人员去跑市场,从而间接为企业节约了成本;另一方面,供求信息网能够收集大量供求信息,将会有大量用户访问网站,有助于提高企业形象。(1)应交付成果 在项目开发完后,交付内容有编译后的供求信息网站、网站数据库文件、网站使用说明书。 将开发的供求信息网站发布到Internet上。 网站发布到Internet上后,进行网站无偿维护服务6个月,超过6 个月进行网站有偿维护与服务。项目开发环境操作系统为Windows XP 或 Windows 2003 均可,使用集成开发工具Microsoft Visual Studio 2005 ,数据库采
15、用SQL Server 2005 ,项目运行服务为Internet 信息服务(IIS)管理器。项目验收方式与依据项目验收分为内部验收和外部验收两种方式。在项目开发完成后,首先进行内部验收,由测试人员根据用户需求和项目目标进行验收。项目在通过内部验收后,交给客户进行验收,验收的主要依据言为需求规格说明书。3、项目团队组织组织结构为了完成供求信息网的项目开发,公司组建了一个临时的项目团队,由公司副经理、项目经理、系统分析员、软件工程师、网页设计师和测试人员构成。 人员分工为了明确项目团队中每个人的任务分工,现制定人员分工表,如表2所示。表2 人员分工姓 名 技 术 水 平 所属部门 角色 工 作
16、描 述负责项目的审批、杨某某 MBA经理部 项目经理 决策的实施 负责项目的前期分析、策划、项目开周某某 MBA 项目开发部 系统分析员发进度的跟踪、项目质量的检查刘某某 高级系统分析员 项目开发部 系统分析员 负责系统功能分析系统框架设计张某某 中级系统分析员 项目开发部 软件工程师 负责系统功能分析系统框架设计赵某某 高级软件工程师 项目开发部 软件工程师 负责软件设计与编码孙某某 高级软件工程师 项目开发部 软件工程师 负责软件设计与编码李某某 中级软件工程师 项目开发部 软件工程师 负责软件设计与编码周某某 初级软件工程师 项目开发部 软件工程师 负责软件编码曲某某 初级软件工程师 项
17、目开发部 软件工程师 负责软件编码吕某某 高级美工设计师 设计部 网页设计师 负责网页风格的确定网页图片的设计 夏某某 中级美工设计师 设计部 网页设计师 负责网页风格的确定网页图片的 设计梁某某 中级系统测试工程师 项目开发部 测试人员 对软件进行测试编写软件测试文档江某某 初级系统测试工程师 项目开发部 测试人员对软件进行测试编写软件测试文档四、 系统设计(一) 系统目标根据需求分析的描述以及与用户的沟通,现制定网站实现目标如下。1. 灵活、快速地填写供求信息,使信息传递更快捷。2. 系统采用人机对话方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。3. 实施强大的后台审核功能。4
18、. 功能强大的月供求统计分析。5. 实现各种查询,如定位查询、模糊查询等。6. 强大的供求信息预警功能,尽可能地减少供求信息未审核现象。7. 对用户输入的数据,每户进行严格的数据检验,尽可能排除人为的错误。8. 网站最大限度地实现了易维护性和易操作性。9. 界面简洁,框架清晰、美观大方。10. 10 .为充分展现网站的交互性,供求信息网采用动态网页技术实现用户信息在线发布。11. 充分体现用户对网站信息进行检举的权利。(二)系统用例图图1系统用例图(三)系统业务流程图1. 网站业务流程图供求信息网站业务流程图如图2所示。用户 发布供求信息网管理员是否免费供求信息否否 否 是是否交费审核供求信息
19、取消供求发布否联系供求方是是否符合需求 通过发布到网站中浏览网站供求信息图2供求信息网站业务流程图2. 管理员登录供求信息网操作流程管理员登录供求信息网时,需要执行以下步骤。通过对上面功能的分析,用UML绘制出管理员登录供求信息网操作流程的步骤,如图3示。验证通过登录选择审核供求信息后台验证失败无法登录更新数据库选择管理员发布收费供求信息将查询结果显示在屏幕上查询数据库各查询模块数据库将查询结果返回图3管理员登录供求信息图(四)网站功能结构根据供求信息网有特点,可以将其分为前台和后台两个部分设计。前台主要用于实现分类供求信息展示(主要类别:招聘信息、求职信息、培训信息、公寓信息、家教信息、物品
20、求购、物品出售、求兑出兑、车辆信息、寻求合作、企业广告)、详细信息查看、供求信息查询、供求信息发布、推荐供求信息等功能;后台主要用于实现分类供求信息的审核与管理、收费分类供求信息发布与管理等功能。供求信息网的前台功能结构如图4示。供求信息网前台发布供求信息分类供求信息信息免费发布分类信息展示供求信息查询供求信息推荐图4求信息网前台功能结构图供求信息网的后台功能结构如图5示。图5供求信息网后台功能结构图(五)编码规则1、数据库建立命名规则(1)数据库数据库命名以字母“db”开头(小写),后面加数据库相关英文单词或缩写。下面将举例说明,如表3所示。数据库命名表3 数据库名称描述db_SIS供求信息
21、网站数据库db_MIS 信息管理系统数据库(2)数据表数据表以字母“tb”开头(小写),后面加数据库相关英文单词或缩写和数据表名。下面将举例说明,如表4所示。数据表命名表4数据表名 描述tb_Power 网站的后台用户表tb_imfo 供求信息表(3)字段字段一律采用英文单词或词组(可利用翻译软件)命名,如找不到专业的英文单词或词组可以用相同意义的英文单词或词组代替。下面将举例说明,如表 5所示。字段名称表5 字段名称 描述ID流水号title信息标题info信息内容2、网站编码命名规则所有的对象名称都为自然名称的拼音简写,如表6所示,出现冲突可采用不同的简写规则。窗体和控件命名规则表 6Vb
22、 控件 缩写形式ClassCls_Lable(大量的标签不用命名)Lbl_TextTxtDataListdlGridViewgvListView LvwTreeViewTvwFrameFamButtonBtnImageButtonImgBtnDataSexDsListBoxLbDropDownListDblpicturepicImageImeRadioButtonrdoBtnLinkButtonl lnkbtnChrck Cek_ImageBntton imgbtnHyperLink hpLinkFileUpLoad Fup(六)构建开发环境1. 网站开发环境网站开发环境:Microsoft
23、Visual Studio 2005 集成开发环境。网站开发语言:ASP.NET + C#.网站后台数据库:SQL Server 2005。开发环境运行平台:Windows XP (SP2)/Windows 2000(SP4)/Windows Server 2003(SP1)。2. 服务器端操作系统:Windows 2003 Server (SP1)。Web 服务器:IIS 5.0。数据库服务器:SQL Server 2005.浏览器:IE 6.0 。网站服务器运行环境:Microsoft.NET Framework SDK v2.0 。3. 客户端浏览器:Internet Explorer
24、6.0 。分辨率:最佳效果1024*768。(七)数据库设计1. 概念设计在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。表本网站采用SQL Server 2005数据库,名称为db_SIS,其中包含4张数据表。求信息表结构表7费供求信息表数据结构
25、 表 8站后台用户表数据结构表 9网站后台用户登录日志表数据结构表 102. 数据库E-R图分析根据以上章节对网站所作的需求分析、流程设计以及系统功能结构的确定,规划出满足用户需求的各种实体以及它们之间的关系图,本网站规划出的数据库实体对象分别为供求信息实体、收费供求信息实体、网站后台用户实体和网站后台用户登录日志实体。如图6供求信息实体E-R 图信息内容信息标题信息类型信息编号收费供求信息表供求信息表发布日期审核状态电话联系人图6 供求信息实体E-R 图五、供求信息管理系统的实现(一)系统模块的详细设计public partial class _Default : System.Web.UI
26、.Page Operation operation = new Operation(); /声明网站业务类对象 protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) /!IsPostBack避免重复刷新加载页面 /获取前6条分类供求信息 dlZP.DataSource = operation.SelectLeaguerInfo(true, 招聘信息, 6); dlZP.DataBind(); dlPX.DataSource = operation.SelectLeaguerInfo(true, 培训信息, 6
27、); dlPX.DataBind(); dlGY.DataSource = operation.SelectLeaguerInfo(true, 公寓信息, 6); dlGY.DataBind(); dlJJ.DataSource = operation.SelectLeaguerInfo(true, 家教信息, 6); dlJJ.DataBind(); dlWPQG.DataSource = operation.SelectLeaguerInfo(true, 物品求购, 6); dlWPQG.DataBind(); dlWPCS.DataSource = operation.SelectLea
28、guerInfo(true, 物品出售, 6); dlWPCS.DataBind(); dlQDCD.DataSource = operation.SelectLeaguerInfo(true, 求兑出兑, 6); dlQDCD.DataBind(); dlCL.DataSource = operation.SelectLeaguerInfo(true, 车辆信息, 6); dlCL.DataBind(); public partial class webZP : System.Web.UI.Page Operation operation = new Operation();/声明业务类对象
29、 static string infoType = ; /声明供求信息类型对象 static string infoKey = ; /声明查询信息关键字 static PagedDataSource pds = new PagedDataSource(); /声明 protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) infoType = 招聘信息; /infoKey的意思用语用户快速检索,如果值为空,显示所有招聘供求信息,否则显示查询内容 infoKey = Convert.ToString(Session
30、key); this.DataListBind(); /显示未过期收费信息 dlCharge.DataSource = operation.SelectLeaguerInfo(true, infoType); dlCharge.DataBind(); Sessionkey = null; / / 将数据绑定到DataList控件 / public void DataListBind() /将分页结果设置结果赋值给新的页数据源对象 pds=operation.PageDataListBind(infoType,infoKey,Convert.ToInt32(lblCurrentPage.Text
31、), 10); lnkBtnFirst.Enabled = true;/控件翻页控件都设置为可用 lnkBtnLast.Enabled = true; lnkBtnNext.Enabled = true; lnkBtnPrevious.Enabled = true; if (lblCurrentPage.Text = 1)/如果当前显示第一页,“第一页”“上一页”按钮不可用。 lnkBtnPrevious.Enabled = false; lnkBtnFirst.Enabled = false; if (lblCurrentPage.Text = pds.PageCount.ToString(
32、)/如果显示最后一页,“末一页”和“下一页”按钮不可用。 lnkBtnNext.Enabled = false; lnkBtnLast.Enabled = false; lblSumPage.Text = pds.PageCount.ToString();/实现总页数 dlFree.DataSource = pds; /绑定数据源 dlFree.DataKeyField = id; dlFree.DataBind(); protected void lnkBtnFirst_Click(object sender, EventArgs e) lblCurrentPage.Text = 1; /第
33、一页 DataListBind(); protected void lnkBtnPrevious_Click(object sender, EventArgs e) lblCurrentPage.Text=(Convert.ToInt32(lblCurrentPage.Text)- 1).ToString(); /上一页 DataListBind(); protected void lnkBtnNext_Click(object sender, EventArgs e) lblCurrentPage.Text=(Convert.ToInt32(lblCurrentPage.Text)+ 1).
34、ToString(); /下一页 DataListBind(); protected void lnkBtnLast_Click(object sender, EventArgs e) /最后一页 lblCurrentPage.Text = lblSumPage.Text; DataListBind(); 六、单元测试在现代软件开发过程中,测试不再作为一个独立的生命周期。单元测试成为与编写代码同步进行的开发活动。单元测试能够提高程序员对程序的信心,保证程序的质量,加快软件开发速度,使程序易于维护。用例总表表11用例编号测试模块测试结果备注1密码修改模块Y 密码修改完成2文档管理模块N上传失败3
35、资讯管理模块Y添加成功4用户信息管理模块N更新失败5用户评论模块Y评论成功6管理员管理模块N用例表1表12用例编号1用例输入1 用户名:admin2 密码:1234563 确认密码:123456期望结果密码修改成功实际结果密码修改成功测试结果Y用例表2表13用例编号2用例输入无法上传文档期望结果上传成功实际结果上传失败测试结果N错误编号1用例表3表14用例编号3用例输入产品更新成功期望结果产品更新成功实际结果产品更新成功测试结果Y用例表4表15用例编号4用例输入无法更新用户信息期望结果更新成功实际结果更新失败测试结果N错误编号2用例表5表16用例编号5用例输入用户发表评论成功期望结果评论成功实
36、际结果评论成功测试结果Y错误更正表1表17错误编号1错误分析上传路径错误错误更正修改路径源代码更正结果用例1重新测试通过,Y错误更正表2表18错误编号2错误分析Select语句错误错误更正修改Select语句更正结果用例2重新测试通过,Y结束语经过一个多月的设计和开发,本人使用Visual Studio2005 开发对电子商务系统开发基本完毕。其功能基本符合毕业设计需求,通过对该系统的分析、设计、开发和调试,一方面让我了解了系统的开发过程与方法,另一方面,让我熟悉了Visual Studio2005 开发工具的使用方法,熟悉了窗口、菜单以及一些可视化控件的使用方法,还了解到窗口对象、数据窗口对
37、象、各类控件的属性与方法。同时,在制作过程中遇到了不少问题和困难,通过查阅相关书籍及搜索互连网得到了很大的帮助。在毕业设计完成之际,我要特别感谢我的指导老师葛磊的热情关怀和悉心指导。在我撰写论文的过程中,葛老师倾注了大量的心血和汗水,无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了葛老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。参 考 文 献1.ASP.NET项目开发全程实录,张领,清华大学出版社2微软公司Visual Studio2005程序设计语言
38、3艾德才计算机信息管理基础中国水利水电出版社,20054王珊数据库系统概论高等教育出版社,20045. Efrem G.MallachDecision Support and Data Warehouse Systems电子工业出版社,20056.刘基林.精通ASP.NET 3.5典型模块开发.人民邮电出版社,20087.杨健,李华,张胜利,李沛.ASP.NET 2.0课程设计案例精编.清华大学出版社,20098.许锁坤.ASP.NET技术基础.高等教育出版社,20079.李瑞旭,孙凤芝.C#程序设计教程.中国电力出版社,200810. 陈娴,刘开文,王蓉玲,李健.ASP.NET项目开发实践.中国铁道出版社,2004