宠物代养系统 jsp web 网站 设计文档 大型实验.doc

上传人:文库蛋蛋多 文档编号:2390125 上传时间:2023-02-17 格式:DOC 页数:36 大小:1.59MB
返回 下载 相关 举报
宠物代养系统 jsp web 网站 设计文档 大型实验.doc_第1页
第1页 / 共36页
宠物代养系统 jsp web 网站 设计文档 大型实验.doc_第2页
第2页 / 共36页
宠物代养系统 jsp web 网站 设计文档 大型实验.doc_第3页
第3页 / 共36页
宠物代养系统 jsp web 网站 设计文档 大型实验.doc_第4页
第4页 / 共36页
宠物代养系统 jsp web 网站 设计文档 大型实验.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《宠物代养系统 jsp web 网站 设计文档 大型实验.doc》由会员分享,可在线阅读,更多相关《宠物代养系统 jsp web 网站 设计文档 大型实验.doc(36页珍藏版)》请在三一办公上搜索。

1、Web大型实验报告-需求和设计文档题目 (宠物代养系统(宠物港湾)作者姓名顾宏 作者姓名 指导教师 学科(专业) 所在学院 计算机科学与技术学院 提交日期 2012-6-20 目录Web大型实验报告-需求和设计文档1第一章 需求分析41.1 安全需求41.2 性能需求41.3 功能需求4第二章 系统开发模式及技术52.1 JSP简介52.2 JSP的特点62.3 JSP技术62.4 访问WEB数据库常见技术72.5 本系统采用的数据库访问技术72.6 B/S开发模式8第三章 总体设计93.1 系统功能描述93.2 E-R模型93.3 系统流程图133.4 数据流图143.5 用例图183.6顺

2、序图213.6.1 系统总顺序图213.6.2 普通用户223.6.3 注册用户233.6.4 饲养员243.6.5 管理员253.7 数据库设计263.8 系统类图设计303.9 网站体系设计303.10 系统功能模块划分31第四章 详细设计314.1 MVC模式314.1.1后台的javaBean:314.1.2后台Servlet35总结36致谢37第一章 需求分析1.1 安全需求由于使用JSP编写的程序代码隐蔽,在客户端仅可以看到由JSP输出的动态HTML文件,因此只要编写程序时注意严谨性,防止SQL注入和cookies欺骗,整个系统的安全就能得到保障,同时也能防止别人抄袭源代码。本系统

3、的管理员可以有多名,为防止暴力猜解密码,在设计后台登陆模块时需考虑验证码的设计。使用Tomacat6.0为系统地发布平台,发布方便,安全可靠性比较高。1.2 性能需求Tomacat可以免安装,体积小,运行效率高。能很方便的在Windows和Linux系统下发布。同时使用MySql5.0数据库,安装方便,而且免费使用,MySql在Windows XP以及Linux下都能被良好的支持。而JSP不但可以用Eclipse,也可以用Dreamweaver编辑,甚至记事本等文本编辑工具即可编写,因此对系统运行环境非常低,小型服务器和家用电脑均可作为本系统运行环境。1.3 功能需求正式用户:宠物浏览:选择自

4、己喜欢的宠物,让饲养员饲养提交宠物:提交自己的宠物让饲养员饲养,就是提交一个可以提交宠物的时间支付:当选择某些功能或者服务时,自动弹出支付功能选择食物:提交自己准备给自己宠物吃的食物(是从饲养员建议表中选择的)出游时间:自己提交一个将自己宠物带出代养院的时间登入系统:正常登入系统增加朋友:增加自己的一个朋友,是为了让朋友临时照看下宠物,该朋友必须为网站正式的会员浏览个人主页:个人主页上有自己和自己宠物的一些信息,照片视频,养宠物心得在线查看宠物:随时随地查看宠物,看看自己喜欢的宠物查看宠物状态:该状态有饲养员提交,为宠物的身体的一些基本信息,照片等选择服务:选择服务,服务种类包括,给宠物洗澡,

5、给宠物的窝清理,溜宠物等等普通用户:注册:通过注册,可以成为正式用户浏览宠物:浏览主页上的宠物饲养员:更新宠物状态:阶段性的更新宠物的状态,包括宠物的体温,是否生病等照顾宠物:正常的照顾宠物,如清理卫生,替宠物洗澡,溜宠物。喂养宠物:根据正式用户提交的食谱来喂养宠物管理员:添加宠物:定时的从外部添加新的宠物,并更新数据库,在主页上显示出来评选宠物:评选出饲养好的宠物,将其及其主人在主页上展示出来,可以奖励一些宠物用粮接收宠物:接收用户帮助饲养的宠物删除宠物:删除已经卖出或者其他原因消失的宠物更新食物种类:更新现有的宠物口粮的种类,增加食物种类优良宠物食物推荐:优良的种类会在主页上显示,最为新品

6、推荐删除食物种类:删除无用的或者不好的食物种类第二章 系统开发模式及技术2.1 JSP简介 JSP(Java Server Pages)是一种建立在Servlet规范提供的功能之上的动态网页技术,和ASP类似,他们都是在通常的网页中嵌入脚本代码,JSP文件中嵌入的是Java代码和JSP标记。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。2.2 JSP的特点 JSP技术在多个方面加速了动态Web页面的开发,具有以下特点。(1) 将内容的生成和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识

7、或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。(2) 强调可重用的组件绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者EnterpriseJavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。(3) 采用标识简化页面开发Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServerPage技术封装了许多功能,这些

8、功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。 (4) 健壮性与安全性由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译为JavaServlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理与安全性.(5) 良好的移植性:作为Java平台的一部分,JSP拥有Java编程语言一次编写,隋处运行的特点。(6) 企业级的扩展性和性能:当与Java2平台、企业版(J2ee)和EnterpriseJa

9、vaBeans技术整合时,JSP页面将服务器JSP页面中的程序代码的识别就是依靠一些基本指令完成.2.3 JSP技术JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。2.4 访问WEB数据库常见技术目前在WINDOWS环境下有多种访问WEB数据库的技术,主要有:(1) 公共网关接口CGI(Common Gateway Interface)CGI是较早实现的

10、技术。适用于多种服务器平台,如UNIX、WINDOWS等,但CGI的开发成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。(2) INTERNET数据库连接器IDC(Internet Database Connector)。IDC集成在ISAPI(Internet Server API)中,充分利用了DLL技术,易扩充,但编程较CGI更为复杂,只适用于小型数据库系统。(3) 先进数据库连接器ADC(Advance Database Connector)ADC提供了ActiveX Control来访问数据库,它的主要特点是数据查询由用户端浏览器执行,因而需将服务器端数据库中的部

11、分记录下载到用户端,系统开销较大、响应慢,只适用于特别频繁的数据库查询操作。(4) JAVA/JDBC语言编程JAVA语言是一种面向对象、易移植、多线程控制的语言,可通过JDBC去连接数据库。用JAVA/JDBC编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还不理想,目前无法建立高效、高速的应用。(5) 动态服务器页面JSP(Active Server Page)JSP是微软公司推出的WEB应用开发技术,着重于处理动态网页和WEB数据库的开发,编程灵活、简洁,具有较高的性能,是目前访问WEB数据库的非常好的选择。2.5 本系统采用的数据库访问技术 本新闻发布系统使用JDBC访

12、问MySql数据库,JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Inf

13、ormix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。 Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据

14、库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。访问并操纵数据库服务器中的数据。JDBC由JSP技术支持,其数据库访问模型如下图所示。图表 1采用JDBC技术实现数据库访问模型2.6 B/S开发模式 B/S结构,即Browser/Server-浏览器服务器结构,浏览器发送请求而服务器应答请求。其工作原理如下浏览器WEB服务器数据库服务器SQL数据请求返回结果Web请求返回HTML 图2-2 B/S结构的三层模型 前台通过IE、Firefox等浏览器向Web服务器发送HTTP请求,web服务器通过JSP和一些中间件访问后台数据库

15、,并将操作的结果以HTML页面的形式返回给前端的浏览器。比与C/S模式,采用B/S模式用户的操作更加简单,不像C/S需要在客户端进行客户端程序,只需要一个通用浏览器即可完成数据的请求与接收,大幅的减少了客户端的维护工作。同时,B/S模式使用的技术是Internet的Web技术,因而更适合于网上的信息发布。第三章 总体设计现代人工作繁忙,没有时间来带自己的宠物,但是他们往往很孤单,又需要宠物,本网站就是为那些想养宠物,但是又没有专门时间来看宠物的人带来了福音。3.1 系统功能描述宠物发布,选择宠物,对自己宠物进行照料等。具体描述如下:(1)宠物类别管理:a.宠物类别的添加;b.宠物类别的修改;

16、c.宠物类别的删除;(2)宠物发布管理:a.基本宠物信息的发布,包括宠物的标题、宠物基本信息内容等;b.基本宠物信息的修改;c.基本宠物信息的删除;(3)饲养较好的宠物评选模块a.对点击次数的统计b.根据点击次数排除点击排行榜c.根据发布时间的先后时间排出最新宠物(4)宠物搜索模块:a.按照宠物标题搜索; -b.按照宠物内容搜索。 c.搜索结果的显示(5)评论管理模块:a.网友发表评论、留言;b.对留言的过滤c.管理员对留言的管理3.2 E-R模型(1) 新闻信息图3-1 宠物基本信息实体的E-R模型(2) 评论信息图3-2 用户评论宠物信息实体的E-R模型(3)普通用户信息 图3-3 普通用

17、户信息实体的E-R模型(4)注册用户信息 图3-4 注册用户信息实体的E-R模型(5)宠物类别信息图3-5 宠物类别信息实体的E-R模型(6)宠物品种信息图3-6 宠物品种信息实体的E-R模型(7)饲养员信息图3-7 饲养员信息实体的E-R模型(7)管理员信息图3-8 管理员信息实体的E-R模型(5)ER关系图图3-9 ER关系模型图3.3 系统流程图图3-10 系统流程图任何用户从浏览器输入地址进入本新闻发布系统后首先进入宠物代养园主界面,即可进行宠物的查看,根据标题或内容进行宠物的搜索,如果是注册会员进入评论页面进行宠物的的评论,宠物的选择。输入管理员登录页面的地址,进入登录页面,用户输入

18、用户名和密码以及正确的验证码后可进入后台管理,有宠物的的发布,宠物的管理,宠物类别的管理,宠物品种的管理,宠物评论的管理等。如果是饲养员登入后台,则会有宠物信息更新,是否已经喂养过宠物,是否已经清理过宠物操作。断开与服务器的连接即退出本宠物代养系统。3.4 数据流图(1)正式用户数据流图图3-11 正式用户数据流图数据库中有三个表用于正式用户的数据的存放,宠物信息表animalinfo中存放宠物的内容,标题,点击量,需要的服务,添加的宠物等数据,通过各种命令与正式用户进行数据交换。留言信息表存放正式用户的留言,个人信息表personinfo用于存放正式用户需要的服务信息,添加的评论。(2)普通

19、用户数据流图图3-12 普通用户数据流图普通用户可以浏览网页上的宠物信息,可以查询要查看的宠物,可以注册成为正式的会员。此中够会员信息数据表,如果该普通用户要注册成为正式用户的话,那么就将其信息存入到该数据表中,还有一张宠物信息表,用来供该普通用户查询,浏览宠物的信息,吸引该普通用户。(3)管理员数据流图图3-13 管理员数据流图一共有六张表,用户信息表,是管理员查看了该用户的宠物状态之后,在有必要的情况下,通知该用户,比如宠物是否生病了,是否饿了,宠物的窝是不是需要清扫。宠物信息表,是管理员用来查询宠物,添加宠物,删除宠物,评选好的宠物的数据源,管理员进行完上述任务后,即对宠物信息表进行更新

20、。好的宠物表,是用来存储管理员评选出来的好的宠物的信息,是前台展示好的宠物的数据源。良好的宠物口粮表,是管理员评选出好的宠物口粮后,将好的,值得推荐的宠物口粮存入到该表中,也是前台推荐好的宠物口粮的数据源。评论信息表,是管理员,对正式会员对宠物的评论进行管理的地方,将正式会员的评论存储在该表中,删除不良言论。宠物品种表,是存储宠物品种的地方,比如对于相同的狗,但是不同的狗的类别进行分类的存储,比如优良的狼狗,雪地狗等待,这样做的目的是为了一张表中的数据冗余。宠物类别信息表,是存储不同类别的宠物,比如猫,狗等不同的宠物,这样做的目的也是为了减少一张表的数据冗余。(4)饲养员数据流图图3-14 饲

21、养员数据流图一共有两张表,用户信息表,是用户需求的信息来源,饲养从中提取出用户需求,根据用户需求来对宠物进行操作,再对宠物信息表进行更新操作。宠物信息表是宠物状态的存储地方,饲养员不断的更新宠物信息表,用户,管理员就可以查询到最新的宠物的信息。(5)宠物评论文章数据流图3-14宠物介绍文章管理的数据流图3.5 用例图 普通用户:注册:通过注册,可以成为正式用户浏览宠物:浏览主页上的宠物正式用户:登入系统:正常登入系统宠物预约:预约一个时间将宠物送来或者我们派人去取。支付:当选择某些功能或者服务时,自动弹出支付功能选择食物:提交自己准备给自己宠物吃的食物(是从饲养员建议表中选择的)宠物回家:提醒

22、用户取回宠物。添加朋友:交友,交流养宠物的心得等浏览个人主页:个人主页上有自己和自己宠物的一些信息,照片视频,养宠物心得在线查看宠物:随时随地查看宠物,看看自己喜欢的宠物查看宠物状态:该状态有饲养员提交,为宠物的身体的一些基本信息,照片等饲养员:更新宠物状态:阶段性的更新宠物的状态,包括宠物的体温,是否生病等照顾宠物:正常的照顾宠物,如清理卫生,替宠物洗澡,溜宠物。喂养宠物:根据正式用户提交的食谱来喂养宠物优良宠物食物推荐:优良的种类会在主页上显示,最为新品推荐管理员:添加宠物:添加新的宠物,并更新数据库。删除宠物:删除已经被领会的宠物添加食物:增加食物种类删除食物:删除食物种类更新食物:更新

23、某类食物的量添加饲养员:添加新的饲养员删除饲养员:删除离职的饲养员更新饲养员:更新饲养员信息管理用户:维护注册的用户信息3.6 顺序图3.6.1 系统总顺序图正式会员,普通会员,饲养员,管理员之间的消息通信。图3-11 系统主要主要对象顺序图图3.6.2 普通用户3.6.3 注册用户3.6.4 饲养员3.6.5 管理员3.7 数据库设计本系统采用MySql数据库,在数据库中使用数据表article来储存现有的新闻信息。表的结构如表字段名称数据类型说明animalidInt(10) unsigned宠物编号,自动增加(主键)biaotiVarchar(45)宠物介绍文章的标题siyangyuan

24、idVarchar(45)饲养员id(外键)mainuseridVarchar(45)正式用户id(外键)guanjianziVarchar(45)宠物介绍关键字classidInt(10) unsigned 宠物类别id(外键)zhongleiidInt(10) unsigned 宠物种类id(外键)fabiaozheVarchar(45)发表者dianjialvInt(10) unsigned 点击率,浏览一次增加1表3-1 宠物信息表animalinfo 字段名称数据类型说明usernameVarchar(45)管理员用户名(主键)userpasswdVarchar(128)管理员用户密

25、码animalidInt(10)unsigned宠物编号(外键)kouliangidInt(10) unsigned好口粮id(外键)表3-2 管理员信息表users字段名称数据类型说明siyangyuanidVarchar(45)饲养员用户名(主键)userpasswdVarchar(128)饲养员用户密码animalidInt(10)unsigned宠物编号(外键)表3-3 饲养员信息表siyangyuan字段名称数据类型说明mainuseridVarchar(45)正式用户名(主键)userpasswdVarchar(128)正式用户密码animalidInt(10)unsigned宠物

26、编号(外键)tongzhitext管理员发给用户通知的内容表3-4 用户信息表personinfo使用数据表comment来储存新闻评论信息,表的结构如下表字段名称数据类型说明animalidInt(10) unsigned宠物id(主键)ComTimetimestamp评论时间ComidVarchar(45)评论idContenttext评论内容表3-5 宠物介绍文章的评论comment字段名称数据类型说明kouliangidInt(10) unsigned好口粮id(主键)nameChar名称表3-6 goodkl好口粮表字段名称数据类型说明goodanimalidInt(10) unsi

27、gned好宠物id(主键)Contenttext基本信息animalidInt(10)unsigned宠物编号(外键)表3-7 goodanimal好宠物表字段名称数据类型说明classidInt(10)unsigned 宠物类别id(主键)Contenttext类别介绍内容animalidInt(10)unsigned宠物编号(外键)表3-8 classanimal宠物类别表字段名称数据类型说明zhongleiidInt(10)unsigned 宠物种类id(外主键)Contenttext种类介绍内容animalidInt(10)unsigned宠物编号(外键)表3-9 animallei宠

28、物种类表表结构:图3-12 系统表结构图图3-13 系统表结构图3.8 系统类图设计图3-13 系统类图3.9 网站体系设计本系统网站软件层的结构可分为以下4层1、表示层:提供与用户交互的界面。2、业务逻辑层:实现各种业务逻辑3、持久化层:封装了数据访问的细节,为业务逻辑层提供了面向对象的API。4、数据库层:复杂存放和管理应用的持久化业务数据。网站软件体系结构如图所示:图3-14 网站软件体系结构图3.10 系统功能模块划分 从功能描述的内容可以看到,本系统可以实现十个完整的功能。根据这些功能,设计出系统的功能模块,如下图所示。第四章 详细设计4.1 MVC模式4.1.1后台的javaBea

29、n:UserBean-用户BeanEmployeeBean-员工BeanFoodBean-食品BeanPetKindBean-宠物种类BeanPetBean-宠物BeanPdetailBean-进货明细BeanPtableBean -进货表单BeanSdetailBean-出售明细BeanReservationBean-预约Bean5.1.2后台的DAOimport java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import jav

30、a.sql.Statement;public class DBCONN private String sDBDriver=com.mysql.jdbc.Driver;private String sDBUrl=jdbc:mysql:/localhost:3306/pet?useUnicode=true&characterEncoding=gbk;private String sDBUser=root;private String sDBPassword=root;private Connection conn=null;private Statement stmt=null;private R

31、esultSet rs=null;public DBCONN()try Class.forName(sDBDriver).newInstance(); catch (Exception e) / TODO: handle exceptionSystem.out.println(Error occurred in construction!);System.out.println(e.getStackTrace();public Connection getConnection()try conn = DriverManager.getConnection(sDBUrl, sDBUser, sD

32、BPassword); catch (Exception e) / TODO: handle exceptionSystem.out.println(Error occurred in getConnection!);System.out.println(e.getStackTrace();return conn;public ResultSet executeQuery(String sql)if(conn=null)conn=this.getConnection();try stmt = conn.createStatement();rs = stmt.executeQuery(sql);

33、 catch (SQLException e) / TODO: handle exceptionSystem.out.println(Error occurred in executeQuery!);System.out.println(e.getStackTrace();return rs;public boolean executeUpdate(String sql)int flag=0;if(conn=null)conn=this.getConnection();try stmt = conn.createStatement();flag = stmt.executeUpdate(sql

34、); catch (SQLException e) / TODO: handle exceptionSystem.out.println(Error occurred in executeUpdate!);System.out.println(e.getStackTrace();if(flag0)return true;elsereturn false;4.1.2后台ServletDealUserRegiserServlet -处理用户注册DealUserloginServlet-处理用户登录DealUserPurchaseServlet-处理用户为宠物购买食物DealUserCheckOuS

35、ervlet-处理用户结账DealReservationServlet-处理预约DealAddPetServlet-处理添加PetDealDeletePetServlet-处理删除PetDealAddEmployeeServlet-处理添加EmployeeDealDeleteEmployeeServlet-处理删除EmployeeDealUpdateEmployeeServlet-处理更新EmployeeDealAddFoodServlet-处理添加FoodDealDeleteFoodServlet-处理删除FoodDealUpdateFoodServlet-处理更新FoodDealRemai

36、ndServlet-处理预约到期提心DealUpdatePetStatueServlet-处理更新PetStatueDealSearchFoodOfPetSetvlet-出查询主人为Pet买的食物Deal RecommenFoodServlet- 处理推荐食物。总结 经过几个星期的的设计和开发,本网上宠物代养系统基本开发完成。本系统基本能够完成宠物发布、宠物信息修改、好宠物统计等基础的功能。在使用上非常方便,实时性好,能够很好的使用与小型企业或者小型代养公司应用,不仅能提高工作效率,也能减少经济投资,是一个非常实用的小型宠物代养系统。但由于时间和开发经验不足等原因,图片宠物图片的发布未能得以实

37、现。同时页面内容的设计不够完善和美观,均需要进一步的学习提高。这次课程设计,不但是对我这一学期所学知识的一个检验,也是对我计算机应用水平与写作水平的一个考核,也让我发现了自己的不足之处,在开发过程中所获得的经验将对我今后的工作和生活产生积极深远的影响。致谢在这里我非常感谢我们的指导老师-张繁,他在百忙之中抽空对本系统的开发作了悉心的指导,帮助解决了多个难点,本系统才得以及时完成。不管是张老师深厚的理论知识或是严谨的工作态度都让我受益匪浅。同时也感谢我和韩庆能共同努力,表现了很好的团队合作精神,才得以成功完成此次课程设计。在整个团队合作过程中,我们互相帮助,互相学习,使大家都得到了不少的收获,使我们全体成员都在团队开发之用获得了整体的提高。参考文献:1 孙鑫. Java Web开发详解M.北京:电子工业出版社,20092 王俊杰. 精通JavaScript动态网页编程M.北京:人民邮电出版社,2007

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号