JavaScript在线API文档生成毕业设计正文_第1页
JavaScript在线API文档生成毕业设计正文_第2页
JavaScript在线API文档生成毕业设计正文_第3页
JavaScript在线API文档生成毕业设计正文_第4页
JavaScript在线API文档生成毕业设计正文_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(此文档为word格式,下载后您可任意编辑修改!) 本科毕业设计说明书(论文)(2012届)论文题目JavaScript在线API文档生成[1]客户端环境要求安装有.NetFrameworks3.5的windows系统。服务器环境要求服务器:IIS(InternetInformationServer)7。IIS是InternetInformationServices的缩写,是一个WorldWideWebserver。Gopherserver和FTPserver全部包容在里面。IIS意味着你能发布网页,并且有ASP(ActiveServerPages)、JAVA、VBScript产生页面,有着一些扩展功能[2]。数据库:Access2007Access2007是MicrosoftOffice2007家族中专业的数据库管理系统,它具有强大的数据管理和分析功能。作为一种新型的关系型数据库管理系统,它能帮助用户处理各种海量信息。它不仅能存储数据,更重要的是能够对数据进行分析和处理,使用户方便快捷地聚聚各种有用的数据[3]。WinForm简介WindowsForms(Windows窗体)是1个新的窗体包,它使得开发人员可以创建基于Windows的应用程序,来充分利用MicrosoftWindows操作系统中丰富的用户界面特性。WindowsForms是新的Microsoft.NETFramework的一部分,它使用了许多新技术,包括1个公共应用程序框架、受控的执行环境、集成的安全性和面向对象的设计原则。此外,WindowsForms完全支持快速、容易地连接XML网络服务和在ADO.NET数据模型基础上创建丰富的、数据感知(data.aware)的应用程序。利用VisualStudio.NET中新的共享开发环境,开发人员可以使用任何支持.NET平台的语言。开发人员可以使用任何支持.NET平台的语言。在Visual

C#中构建Windows窗体程序时需要向项目添加窗体,将控件拖放到窗体,然后在控件双击,即可编写窗体背后的代码。开发人员使用这种熟知的模型,来迅速地构建桌面应用程序。C#的Windows

Forms有1个重要的新特性一可视化集继承,它将提高开发人员的生产力,促进代码的重用。C群的Windows

Forms还可以创建支持最广泛的用户群的应用程序。使用c#的Windows

Forms应用程序,不需要将应用程序部署到最终用户的桌面上。用户可以通过在浏览器中输入1个URL地址即可调用这个应用程序。应用程序将下载到客户端机器中,在1个安全的执行环境中运行,然后在完成后自我删除。同时,c#的Windows

Forms给开发人员提供了创建基于Windows的应用程序所需的多种技术。不仅有用于调整用户界面的新控件和特性,还提供了灵活的部署和集成的安全特性[4]。Windows窗体提供了一套丰富的控件,并且开发人员可以定义自己有特色的新的控件[5]。ASP.NET简介ASP.NET是一个后台动态语言技术。它是开发人员和构架师共同思考关于未来Web开发的发展方向而得出的结果[6]。生成的文档本身不依赖于ASP.NET,它仅仅需要用ASP.NET为它提供后台提供评论服务接口。AJAX简介Ajax是AsynchronousJavaScriptandXML的缩写。Ajax并不是一门新的语言或技术,它实际卜是几项技术按一定方式的组合,在共同的协作中发挥各自的作用,它包括:使用XHTML和CSS标准化呈现:使用DOM实现动态显示和交互;使用XML和XSLT进行数据交换与处理;使用XMLHttpRequest进行异步数据读取;最后用JavaScript绑定和处理所有数据。其中XMLHttpRequest,JavaScript和DOM是Ajax技术的核心[7]。Ajax使得Web应用程序的客户端可以不断从Web服务器更新部分页面,用户不必再提交表单,或者离开当前的页面。客户端的脚本代码(通常是JavaScript)可以向页面的部分片段(Fragment)发起异步的,或者非阻塞(Non-Blocking)的请求。这些片段可以是一些原始的数据,在客户端再被转成HTML代码,也可以本身就是HTML代码,直接插入到浏览器的文档(Document)对象中。不管怎样,在服务器端完成对请求的处理,并将响应片段返回给客户端浏览器之后,客户端的较代码都会使用这些数据来修改页面中的文档对象模型(DocumentObjectModel,DOM)。这种方法不仅能够满足我们对快速、平滑更新的要求,更重要的是能够以异步的形式发送请求,因此,即使在请求的处理过程中,用户也可以继续使用应用程序[8]。生成的文档的所有数据都是通过AJAX动态载入然后转成HTML代码后显示的。这样可以加速文档初始化,还可以保证最佳的用户体验。编译原理编译原理起初用于将源代码编译成可执行文件。本系统的重点是将源代码翻译成文档,因此只需要编译原理中词法分析、语法分析的技术。使用语法分析的方式来分析源码是本软件和jsdoc的最大的区别。Jsdoc只以文本方式去分析注释,它忽略了代码本身所展示的信息。而如果先解析语法,然后进行文档分析,就可以充分获取语法树种提供的信息来补全文档。这样可以大大提高分析的正确性。系统构架:B/S构架B/S(Browser/Server)结构即浏览器和服务器结构,随着互联网的快速发展,越来越多的应用选择了B/S构架。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在于服务器端[9]。主要开发语言本系统采用C#开发。C#是一门间的、现代化、面向对象和类型安全的编程语言。C#提供一些特性来帮助构建健壮、耐用的应用程序:垃圾收集会自动回收不再使用的对象所占用的内存;异常处理提供了一种结构化且可扩展的方式来检测错误和恢复;而语言的类型安全设计则可以防止读取未初始化的变量、数组越界或进行未检测的类型转换[10]。开发工具VisualStudio2010VisualStudio是微软公司出品的一款大型应用软件,从最初的VisualStudio97开始就成为了编程的重要工具。VisualStudio是一天完整的开发工具集,保护了大量的公墓内,它主要用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序[11]。VisualStudio2010是VisualStudio的最新正式版。FirebugFirebug是目前最流行的网页开发调试工具。它提供了包含JavaScript控制台、HTML节点查看、CSS即时调试、JavaScript调试等功能,让开发网页更方便。因为整个文档是一个比较大型的一页式应用,因此非常需要这样一个代码调试工具来确保系统可以稳定运行。Firebug的运行界面如图2-1。图2SEQ图\*ARABIC\s11Firebug运行界面第三章需求分析软件主体软件主体是面向最终用户的产品,最后用户使用此软件来达到文档生成的目的。此处的功能设计是为用户角色的而设计的[12]。用例图图3SEQ图\*ARABIC\s11软件主体用例图新建和保存项目新建一个文档项目之后,用户可以在此项目中添加用于生成文档的源文件和文件夹。用户也可以保存这个项目,而不需要每次生成的时候都重新添加文件。编辑项目添加文件用户可以单独添加用于生成文档的源文件。而且,为了更好的用户体验,用户也可以直接将资源管理器中的文件拖拖动到软件界面实现添加操作。添加文件夹一般地,一个项目包含很多源文件,如果每个单独添加,操作会非常麻烦,因此这里也允许用户直接添加整个文件夹。软件会自动搜索这个文件夹所有*.js文件。同样地,用户也可以直接拖动一个文件夹到软件界面实现添加操作。删除文件用户可以主动删除已添加的项。为了更好的用户体验,当用户选择一项之后按DELETE,也可以快速删除项。当用户同时删除多项时,应该给予用户确认后再进行删除。移动文件顺序文件的顺序直接关系到后面文档解析的结果,因此必须提供一个改变文件添加顺序的功能,让用户根据需要更改源文件的解析顺序。项目属性文档生成的时候有很多选项,用户可以在项目属性面板里修改这些选项。编译项目编译项目即生成文档。当项目编辑完成后,就可以开始真正的文档生成操作了。软件会向用户显示一个控制台窗口,随时向用户报告生成进度。如果生成时发现错误和警告,也会通过控制台窗口向用户报告。因为文档生成是一个比较费时的过程,用户也可以根据需要随时中止文档生成操作。生成的文档界面多媒体数据的格式有很多,常见的有Word、PDF和CHM。但是大部分格式都需要在本地安装格外软件,且不适合API文档的信息展示方式。而如果使用HTML作为文档数据载体,将可以带来这些好处:如今现有的每个Web浏览器都能理解这种语言[13],而且大部分电脑都安装有浏览器,因此目标平台广泛。可以将文档放到WEB服务器,让用户在线浏览。样式定制方便。所以软件最后生成的是文档网页,并且网页的布局和交互类似于传统的CHM格式文件。界面的左侧显示一个类图导航。通过这个导航可以找到任何API。点击导航上的项,可以在界面的右侧浏览此API有关的详细信息。用户在查看API文档的时候往往需要打开多个页面进行比较浏览,所以整个页面模拟选项卡的布局,方便用户同时打开多个文档并进行对比浏览。尽管Web应用有这样或那样的优点,但作为一种应用媒介,它也有一个大的缺点。就是网页需要刷新才能获取新数据。因此我们需要使用AJAX技术来填补这个空白[14]。用于在线可评论的文档传统的文档都是静态数据,用户只能浏览而不能参与评论。在Web2.0下,社区化的文档更能帮助读者理解文档内容。当用户打开文档界面时,文档会从服务器自动载入相关的评论。用户还可以在任何页面添加自己的评论。文档调试工具最终的文档是根据代码中的注释提取出来的,源文件中的注释不可能一次性就写正确,往往需要反复修改才能确保最终生成的文档是正确的。但每次生成操作生成的是一个最终的文档页面,这是一个比较漫长的过程。因此还需要提供一个文档调试工具,这个工具只解析文档并向用户报告文档解析结果,而不生成最后的文档。用户可以使用这个工具来排除文档注释中的错误,然后使用软件主体来生成最后的文档。

第四章系统设计实现文档解析核心数据流图语法解析器文档解析器源码词法分析程序语法分析程序注释解析程序注释分析程序注释提取程序最终文件生成语法解析器文档解析器源码词法分析程序语法分析程序注释解析程序注释分析程序注释提取程序最终文件生成图4SEQ图\*ARABIC\s11数据流图类图图4SEQ图\*ARABIC\s12类图DocProject类负责管理整个文档生成操作。文档生成操作分文档解析和生成最终文件两步。文档解析由DocParser类完成。生成最终文件由DocGenerator类完成。因为文档解析的步骤较为复杂,因此文件解析又分成语法树解析、文档注释解析、文档注释分析、文档注释提取。这些操作分别由JavascriptParser类、JavaCommentParser类、DicAstVisitor类、DocMerger类完成。相关的实体类为了实现相关功能,还需要定义一些实体类。XXCommentNode类XXCommentNode存储某个节点的数据。比如ReturnCommentNode是一个包含ReturnType和ReturnSummary的一个结构。DocComment类DocComment表示文档中的一个注释信息,它是一个哈希表,存储了标签和值的一一对应关系。比如如下注释: /** *说明 *@since1.3 *@return{Object}value */对应解析的结果是一个DocComment对象,其内容为:summary=>说明since=>1.3return=>ReturnCommentNode({Object}value)其中,since标签对应的数据是一个字符串,值为1.3。return标签对应的数据是一个ReturnCommentNode实例。DocDataDocData存储最后的文档解析数据。其数据结构如图4-3:图4SEQ图\*ARABIC\s13DocData的字段其中,DocComments为源文件中所有注释集合,它是按照注释在源文件的排列顺序出现的。Files为源文件的列表,它和用户选择的解析源文件基本一致,但会自动重命名同名的文件,比如如果出现3个名为base.js的源文件,那么,第二个就会被重命名为base_1.js,第三个就会被重命名为base_2.js。Properties是根据注释信息得到的项目属性。它是根据源文件中的一些特定标签得到的,比如源文件中的@copyright标签的信息不会被保存到一个DocComment对象中,而是被保存到Properties属性的。只有有限的几个内置标签才会被保存到Properties属性的。DocProject类的实现DocProject存储了项目的所有配置,软件的操作注意是对DocProject进行的。DocProject提供的接口和需求一一对应。DocProject本身又是一个哈希表[15],它存储了一次文档生成的全部配置。DocProject最主要的核心解析函数如下:publicoverridevoidBuild(){ //首先获取原始的文档数据。DocDatadata=Parse(); //然后使用DocGenerator进行最终文件生成。 newDocGenerator(this).Generate(data);}publicDocDataParse(){//创建一个DocParser来解析文档。DocParserparser=newDocParser(this);//使用DocParser来为添加的每个文件和文件夹单独解析。for(inti=0;i<Items.Count;i++){parser.ParseItem(Items[i]);}

//返回解析之后得到的原始文档数据。returnparser.Data;}文档解析后得到一个DocData对象,它是DocGenerator的输入。为了支持多语言的文档生成,这里还定义了一个DocProjectBase类,然后可以使用工厂模式创建不同语言的DocProject对象。工厂模式是用于将生成对象的步骤进行封装的创建型模式[16]。DocParser类的实现DocParser会先解析语法树,同时提取注释节点。语法树是分析树的浓缩表示,对表示语言结构是有用的。语法树作为中间表示,允许把翻译从分离处理。在分析期间完成翻译固然有很多邮电,但也存在一些问题,如在分析期间调用的翻译例程受到两个限制。首先,适于分析的文法可能并不反映语言成分的自然层次结构。其次,分析方法对分析树结点的考察次序有一定的限制,它所限制的次序肯能和一个结构中各成分信息的使用次序并不一致[17]。DocParser主要提供的是解析文件的接口。解析文件先将文件解析成语法树。以下是解析文件的伪代码:publicvoidParseFile(stringpath,stringfile){_currentSource=file;_comments.Clear();//解析语法树。Scriptscript=_parser.ParseFile(path,_project.Encoding);ParseScript(script);}然后对语法树进行分析遍历。voidParseScript(Scriptscript){//获取语法分析返回的注释列表。DocComment[]map=_comments.ToArray();//进行文档解析。_docAstVistor.Parse(script,map);//文档合成。_docMerger.Parse(map);}DocParser还负责提取源码中的注释。但真正的解析操作是调用JavaCommentParser类完成的。JavaCommentParser类的实现JavaCommentParser负责解析一个文档注释,然后得到一个注释的信息,并将这些信息存入一个DocComment实例。JavaCommentParser在设计上使用单例模式以节约内存。JavaCommentParser的主要功能其实就是注释片段的词法解析。这样无论注释怎么写,其它程序都可以统一处理,而不需要关心原注释的格式问题。JavaScript语法树构建器的实现文档解析要求语法树构建器提供这两个特别的功能:允许文档解析器处理文档中的注释,而不是忽略这些注释。允许忽略语法错误。所以网上没有现成的满足这两个特别需求的解析器,因此这里重复开发了一个JavaScript语法构建器。构建器是完全按照ECMA262中规定的文法完成的。语法解析器提供了一个IDocParser接口,如果外界需要处理在语法解析同时解析注释,可以定义一个类来实现这个接口,并绑定这个类到语法解析器。这里由DocParser负责实现这个接口,它会拦截/**开头的注释进行文档解析。DocAstVistor类的实现DocAstVistor主要的目标是遍历语法树,根据语法树的信息自动填充文档注释。因此,DocAstVistor可以让文档作者少写很多注释内容。DocAstVistor所做的主要工作有:自动识别变量名:比如有代码:/**说明*/vara=2;DocAstVistor可以根据代码中的变量a,将注释补成/**说明@namea*/,这样在最后的文档中就可以告诉用户这是一个名字为a的变量。调用时也使用这个名字。自动识别所属成员:比如有代码:/**@classA*//**说明*/vara=2;此时的a会根据就近原则自动归类成classA的一个字段。自动识别默认值比如有代码:/**说明*/vara=2;其默认值是2,这个信息即可在最终的文档显示。自动识别参数信息函数定义里面已经写明了参数名,这时用户不需要在文档里重复写明这些信息。DocAstVistor可以自动填充参数的信息。DocMerger类的实现经过DocAstVistor解析出来的文档是一个列表。DocMerger可以将这个列表形状改写成对应的变量树结构。比如:Class1.a方法Class2.b方法Class1.e属性经过DocMerger改写后可以得到:Class1类: 成员有:a方法,e属性Class2类: 成员有:b方法。DocMerger处理过的文档已经接近人能直接阅读的组织结构了。DocGenerator类的实现DocParser负责解析文档的原始数据,而DocGenerator则根据原始数据来生成最后的文档页面。DocGenerator主要做三件事情:遍历文档注释列表,为每一个注释生成一个详细信息。遍历变量树,用于文档的导航。遍历源文件,并拷贝到文档中,方便在文档中查看API的源文件。软件主体界面布局需求中指出,软件在使用时不仅只有一个窗口,还需要多个子窗口。所以,主窗体的布局使用分栏模式。最后的界面设计如图4-4。\图4SEQ图\*ARABIC\s14软件主体的布局软件使用.Net提供的SplitContainer控件将窗口分成3块,每块都是允许折叠的区域。在运行时移动鼠标到拆分器控件上面,会出现左右箭头光标,此时可以调节拆分器两边的宽度[18]。但SplitContainer只支持上下或左右的分割,所以,这里使用2个SplitContainer进行嵌套,首先是上下分割的容器,然后对上容器进行左右分割。如此,就能实现图中的布局效果。项目操作所有的操作都是以项目为单位的,用户可以新建、打开或保存项目。一次文档生成也被理解是为对项目的编译。项目在保存时使用XML格式,XML(eXtensibleMarkupLanguage)是SGML的一个子集……其目标是能够以目前HTML可能实现的方式在Web上使用、接受和处理通用SGML。XML的设计目标是实现简便并且能与SGML和HTML共同操作[19]。在.NET中,XML作为数据格式和ADO.NET一起使用,发挥了重要的作用[20]。.net内置了XML解析器,让项目保存和载入功能很方便完成。因为所有的项目配置都存储在DocProject中,因此保存和载入项目其实就是序列号和反序列化这个对象的过程。DocProject本身是一个哈希表,因此保存和读取项目时只要遍历其所有的键值对即可。软件实现最后的生成软件是一个小巧的WinForm本地软件。软件界面如图4-5。用户可以点击文件/新建项目,然后点击添加文件来添加要生成的源文件,也可以通过拖动来添加需要的文件和文件夹。列表框允许用户选择一项或多项,然后对这些项进行删除或移动操作,为了方便用户确认源文件,双击任一项可以帮助用户定位该项在资源管理器的位置。用户编辑的界面效果如图4-6。点击属性可以打开属性面板,如图4-7。属性面板是一个.net的PropertyGrid控件,该控件允许向用户显示一个表格,并通过这个表格修改一个代码中的任何对象。这里属性面板就是一个编辑DocProject对象的PropertyGrid控件。最后点击生成,等待软件生成完成。生成时,软件会自动向用户展示控制台窗口。生成时的界面如图4-8。图4SEQ图\*ARABIC\s15软件主体运行界面图4SEQ图\*ARABIC\s16编辑项目图4SEQ图\*ARABIC\s17设置项目属性图4SEQ图\*ARABIC\s18控制台文档页面生成的文档是一个一页式的富互联网应用。文档页面使用左右布局。左侧显示导航条。右侧显示温度内容。导航条是一个树结构的界面,一开始导航显示了全部的全局类,点击任一个类名字后可以展开显示这个类对应的成员。为了保证文档的载入速度,导航条的所有项都是按需加载的,而不是一次性全部载入完。比如当用户需要显示Atotype.each方法对应的API信息时,导航才会读取并显示Array类的其它成员列表。文档右侧的数据是当用户点击左边的导航时,通过JSONP自动载入过来的。载入之后通过JavaScript模板引擎解析成HTML代码,然后向用户显示。而用于JSONP载入的数据则是文档生成时生成的文件。页面尝试使用文件夹类似层次结构来组织URL,从而可以按照层次结构阅读URL[21]。为了允许用户点击后退浏览器时可以显示上一个文档项,网页上使用hashchange技术,通过改变地址的哈希值来伪造访问历史。每当URL改变时(主要是哈希值改变),系统会自动分析新的URL信息,并向用户展示当前URL对应的文档页。最后界面效果如图:图4SEQ图\*ARABIC\s19文档界面在线文档评论为了支持文档在线评论,在文档中显示一些界面让用户添加和浏览评论。如图图4SEQ图\*ARABIC\s110评论框当用户点击提交时,评论框里的数据就会被通过JSONP方式来提交给ASP.NET网站提供接口程序。这里使用JSONP方式而不是其它的AJAX方式,是因为接口提供程序和文档本身可能不在一个域名下,而只有JSONP才能跨域保存数据。ASP.NET中用于支持评论的接口如表4-1。表4-SEQTable\*ARABIC1接口设计名字功能action=get&url=url获取当前页面的评论action=add&url=url新增评论action=delete&url=url删除评论用于保存评论的数据库结构如表4-2。用户可以文档中的docplus.js中配置服务器所在地址,然后文档负责提供和显示数据。后台负责接收和处理数据。表4-SEQTable\*ARABIC2数据库设计字段名数据类型说明ID自动编号主键UrlVarChar(50)源地址ContactVarChar(50)联系方式ContentVarChar(300)内容DateTimeDateTime发布时间IPCHAR(20)IP文档调试工具图4SEQ图\*ARABIC\s111文档调试工具文档调试工具主要用于快速调试文档。软件界面相对比较简单,左边为输入的源码,右边显示解析的结果。用户可以很方便地根据结果反复修改源码中的文档注释。文档调试工具的布局和软件主体一样。为了在编辑代码时可以有语法高亮的功能,此处使用了开源的ScintillaNET控件。软件主要提供3个功能:文档解析:解析最终的文档数据。文档注释:仅提取注释而不解析。这个功能可以方便用户验证文档出现错误时,是文档注释本身的错误,还是解析时发生的逻辑错误。如果是因为用户笔误(比如少写一个字母)而导致的错误,那么通过文档注释可以快速定位错误。语法解析:不解析注释,仅解析代码语法。

第五章系统测试单元测试测试系统的第一步是测试组成该系统的单个构建。测试这些构件成为单元测试(unittesting)[22]。但由于项目时间较紧,因此未对所有模块进行单元测试,而只是针对文档生成核心中的词法解析和语法解析部分进行单元测试。系统功能测试在单元测试和集成测试中,我们的目标是确信代码正确实现了设计。在系统测试(systemtesting)中,我们的目标是确保实际运行的系统做了客户想要做它做的工作[22]。Ext是一个大型的类似RAD工具的UI库[23],其代码量大、文档丰富。因此本次测试使用了EXT源码测试用例。经测试,全部文档生成共使用8分钟,软件无崩溃现象,文档成功生成。并且文档的正确性也可以保证。

第六章总结完成的工作本文主要讲述了JavaScript文档生成软件的全部开发流程,其中重点介绍了文档解析的算法和实现。软件最后可以稳定运行,并成功完成文档生成的任务。此软件的实现用到了很多领域的知识,包括编译原理、WinForm开发和ASP.NET开发。一份优秀的API文档需要在各个细节上都有着优秀的体验,无论是从页面的加载速度,还是到每个参数类型的完整解释,都需要用大量时间去做好,这样才能充分发挥文档的作用。整个项目的源码超过2万行。虽然开发中期经历了各种困难,但幸好我可以如期完成它。开发过程中,我查阅了很多文档。我仔细研究了国外同类产品的文档,模仿它们的一些优秀设计,并保证软件一定程度上和它们兼容。期间,我对代码经过三次重构,最后终于保证代码结构的清晰。这也方便其他人对项目进行改造以加入一些自定义功能。希望这个软件可以成功投入使用并最终解决一直为人苦恼的JavaScript文档生成问题。下一步工作虽然文档解析能够智能解析一部分注释,但是解析还是比较依赖文档注释的。如果文档注释写错或缺失,就可能导致生成的文档不正确。完美的文档生成解决方案应该可以分析代码、模拟执行代码,并根据执行结果生成最终文档,而不是仅仅依靠注释的。下一版可以在注释分析上更加智能化,减少注释分析时对注释的依赖。除了JavaScript,还有很多类似的脚本语言都缺少相应的文档解析工具。大部分语言都是相似的,软件可以根据JavaScript的语法解析器进行改造,并继续开发其它语言的文档解析功能,并最终统一不同语言的API文档风格,这样可以有效降低读者学习的成本。

参考文献冉晓雯.ASP.NET3.5完全学习手册[M].北京:清华大学出版社,2009托洛斯(Tulloch,M.).天宏工作室译.IIS6管理指南[M].北京:清华大学出版社,2004郑阿奇.Access实用教程(2007版)[M].北京:电子工业出版社,2011,1MickeyWilliams.Visualc#.冉晓曼,罗邓,郭炎译.NET技术内幕[M].北京:清华大学出版社,2003钱哨.C#WinForm实践开发教程[M].中国水利水电出版社,2011莫雯尼(Moroney,L).华中宇等译.ASP.NET基础基础[M].北京:人民邮电出版社,2009游丽贞郭宇春李纯喜You,LizhenGuo,YuchunLi,Cunxi.微计算机信息[A].北京:交通大学通信工程实验室.200622(6)霍夫曼(Hoffman,B),苏里沃(Sullivan,B).张若飞,王铮译.Ajax安全技术[M].北京:电子工业出版社,2009BillEvjen,ScottHanselman,DevinRader,李增民译.ASP.NET4高级编程:涵盖C#和VB.NET(第7版)[M],清华大学出版社,2010-9海杰尔斯伯格(Hejlsberg,A.).顾雁宏译.C#程序设计语言(原书第3版)[M].北京:机械工业出版社,2009.9刘基林.VisualC#2008宝典[M].北京:电子工业出版社,2008,9库帕(Cooper,A).丁(Ding.C.)等译.交互设计之路:让高科技产品回归人性M.第二版.北京:电子工业出版社,2006.3史潘加斯(Spaanjaars,I).ASP.NET3.5入门经典——涵盖C#和VB.NET[M].第5版.北京:清华大学出版社,2008.10舒塔(Schutta,N.T.).阿斯利森(Asleson,R.).杨光译.Ajax与Java高级程序设计[M].北京:人民邮电出版社,2007.5赵坚,姜梅.数据结构[M].北京:中国水利水电出版社,2005AlanShalloway,JamesR.Trott.徐言声译.设计模式解析[M].北京:人民邮电出版社,2006陈意云.编译原理和技术[M].2版.合肥:中国科学技术大学出版社,2005.5曹祖圣.VisualC#.NET程序设计经典[M].北京:科学出版社,2004贾小珠.深入浅出XML[M].北京:人民邮电出版社,2001,9弗雷泽(StewartFraser),利文斯敦(StevenLivingstone)毛尧飞,崔伟译.C#XML入门经典C#编程人员必

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论