文档库 最新最全的文档下载
当前位置:文档库 › 网上书城(论文范文,JSP,JAVA,毕业设计)

网上书城(论文范文,JSP,JAVA,毕业设计)

目录

目录 (3)

绪论 (1)

第一章系统概述 (2)

一、课题背景 (2)

第二章系统需求分析 (3)

一、需求分析的原因 (3)

二、可行性分析 (3)

三、系统需求分析 (3)

四、系统数据流程分析 (4)

(一)顶层数据流图 (4)

(二)第二层数据流图 (4)

第三章系统总体设计 (5)

一、系统设计目标 (5)

二、系统模块设计 (5)

(一)系统总体结构设计 (5)

(二)系统模块设计 (5)

(三)系统结构设计 (6)

第四章系统详细设计 (8)

一、系统功能模块设计 (8)

(一)用户登录模块 (9)

(二)用户注册模块 (9)

(三)管理员功能模块 (10)

(四)图书信息管理模块 (10)

(五)购物车管理模块 (10)

(六)订单管理模块 (11)

(七)添加图书模块 (11)

二、数据库详细设计 (12)

第五章系统的测试与维护 (13)

一、单元测试 (13)

总结 (14)

参考文献 (16)

代码 (17)

绪论

随着科技飞速的发展,人类使用和学习信息的方式以及信息的包装方式正在进行着不可阻挡的革命,这次革命将比印刷术的出现所产生的影响以及对社会发展的推动更加复杂更加巨大。网站也成为人们最简便和喜爱的交流方式和传递信息的手段,尤其在商品交易方面,人们更是寻求最佳简便的消费方式。

作为一个虚拟的书店,网上书店具有很多新的特性,以下这些是它的优势:

(1)其营业成本完全有理由比传统意义上的书店低得多。

(2)不需支付昂贵的店铺租金,花费浩大的装修。

(3)不需要将大笔的流动资金作为货物而沉泣在店里,可依靠“零库存”管理,缩速资金周转的周期,可以加速周转。

(4)同时可以实现24小时营业,不需要营业员,网上书店可以被设置成一个自动售货机。

(5)可以利用多媒体促销,各种文字,图象和动画,声音,让受众全方位感受广告诉求。

(6)依靠客户数据库能够提供全新的个人化服务等。

以上这些特性使网上商店充满生命力,也是它发展的源动力。

进行该系统设计时要保证该系统的扩展性,当有新的业务或现有业务规划调整时能够比较容易的实现,为此采用MVC设计模式对此应用系统进行划分,并最终以三层应用的方式进行部署。在本例中,视图(view)部分由一组JSP页面组成,例如购物页面结算页面。该部分主要提供整个网上购书系统的前段数据的显示。控制(control)部分获得用户的请求,然后根据用户的不同请求调用不同模型(model)提供的不同功能,本例中控制部分使用Servlet实现,模型(model)部分封装了系统的数据及业务规划。

第一章系统概述

一、课题背景

1.网上书店系统发展

Internet 的迅速发展正以前所未有的深度和广度影响和改善着人类生活的各个方面,越来越多的人开始意识到Internet所蕴含的经济价值的无穷商机,并积极投身于电子商务活动.实际上,电子商务是一些商业行为的电子化,例如网络书城,网上贸易,就网络书城来说,网络书城是目前应用最广,最成功的典范之一,网络书城的崛起对传统的图书流通体系产生了强烈的冲击,有效地缩短了图书流通发行环节,将广大读者,图书,出版者,发行者紧密地结合在一起,大大提高了图书流通率。

2.网上书店系统发展现状

西方国家网络书城概况:世界上第一家网络书城是1991年在美国联机公司AOL 采购网络上建立的"阅读美国书店",目前最有名的是美国西雅图亚马逊图书公司的亚马逊网上书店。它创建于1995年,供书达310余万种,每年顾客达500万人次,其价格优惠20-50%。金融结算制度完善,配送服务高效。实现了零库存运转。英国网上书店中有较著名的有Internet书店,德国的网上书店主要有图书在线网上书店。

国内网上书店的概况:自从亚马逊网上书店成功后,中国的网上书店也建立起来。中国最早的网上书店是1997年在杭州新华书店诞生的,在经过年余的艰苦经营,接待了400多位访问者后,悄然引退,而进入1998年后,作为中国书业传统经营力量的新华书店,正式宣布进入网络领域,先是第九届全国书市首次开通书店网站,后来在1998年12月30日上海书城成为国内首家正规的网上书店,读者在家中可以上网完成浏览,选够,付款的全过程。1999年是网上书店迅速发展的一年,商业公司不断进入网上书店有超过几百家,有自己网站的公司有40多家,这个数目还不断增加。

3.网上书店的优越性

网上书店在价格、时效性、品种、查询方式等方面都有优势。网上书店是一种直销方式,在到书速度和价格上都有优势,目前网上书店的到书时间在北京,上海,广州等大城市一般为1-3天,在外则一般3-10天到书,在价格上一般网上书店都有7.5-9折的折扣,如果是特价书折扣就更多了,网上书店的书目数据是任何订购书目都无法比拟的,亚马逊网上书店有300多万种图书,另外还有音乐系列产品和其它教育产品,刚刚成立的北京图书大厦网上书店也有16万种书目数据,网上书店的书目除书名,著者,价格等信息外,还有封面,内容简介,目次,评论等详细信息。同时网上书店的目录查询功能也是传统的按某种分类规则编排的图书征订目录无法比拟的。另外还有一些书更是以网站包销或总代理的形式进行销售,这就意味着一种全新的电子商务模式的开始。

第二章系统需求分析

一、需求分析的原因

根据现在社会上对网络书店的需求,为了开发出真正满足用户需求的产品——网络书城,首先必须要知道客户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能满足用户需求的程序只会给客户带来失望,给开发带来麻烦。虽然在可行性研究阶段已经粗略了解用户的需求,甚至还提出了一些可行的方案,但是,可行性研究的基本目的使用较小的成本在较短时间内确定是否存在可行的解法,因此,在需求分析阶段要确定系统必须完成哪些工作,也就是对系统提出完整、准确、清晰、具体的要求。

二、可行性分析

开发任何一个基于计算机的系统都会受到时间和资源的限制。因此在开发软件项目之前,必须根据可利用的时间和资源等条件进行可行性研究。可行性研究工作的主要任务不是研究如何解决问题,而是要用最小的代价在最短的时间内确定该项目是否具有开发的可行性。

1.技术可行性:本网站严格按照MVC设计模式来开发,采用JSP、Servlet、JavaBean和JDBC等一些JAVA Web相关技术实现。Java语言是一种优秀的编程语言。它最大的优点就是与平台无关,在Windows 、Linux以及其它平台上,都可以使用相同的代码。“一次编写,到处运行”的特点,使其在互联网上广泛采用。JSP+JavaBeans 几乎可以在所有平台上通行无阻,从一个平台移植到另外一个平台,JSP和JavaBeans 甚至不用重新编译。除此之外Java语言还提供了一些有用的新特性,使得使用Java 语言比C++语言更容易写出“无错代码”。

2.经济可行性:选择图书做本购物系统的主打商品,因为图书属于折扣大利润丰厚的商品,而且网上书店不需要门面等成本开销,故大大降低其价格。加之传递方便、耐存储,故网上卖书具有比传统书店更大的成本优势。有较大的客户群,本网站的商品主要为各类教材,销售对象主要是学生,故存在很大的市场。

三、系统需求分析

通过对系统的分析及对其他网店的参考,基本确定了“网络书城”的基本功能以及基本性能的基本需求。

1.功能需求。这方面的需求指定系统必须提供的服务,通过需求分析应该划分出系统必须完成的所有功能。

1)图书管理,主要有修改图书信息、添加图书、删除图书。

2)图书销售管理,主要包括:图书查找、购物车管理、订单提交。

3)用户管理,主要有用户注册、注册检查、修改用户信息。

2.性能需求。指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的要求。

1)用户在客户端点击存在服务器中的主页时,系统能快速响应。

2)在安全性方面,ASP程序要满足客户传输信息的基本安全。

四、系统数据流程分析

(一)顶层数据流图

说明:未注册用户通过注册后可以登录到前台进行购书,管理员通过登录可以进入后台进行管理。

图2.1 系统顶层数据流图

(二)第二层数据流图

前台购书和后台管理。根据顶层数据流图,对前台购书和后台管理模块作进一步分解,得到第二层数据流图,分别如图3和图4。

1)前台购书

用户登录后进行书籍浏览和查询,对书籍信息有了一定了解后可根据自己的需求进行购书,购书后将所需书放入购物车,最终确定要购买的图书,提交订单,等待订单的处理结果。

2)后台管理

管理员可以登录到后台,查看相关的订单信息,然后修改订单的信息,主要是审核订单的有效性。

第三章系统总体设计

一、系统设计目标

本系统设计的目标是提高软件的质量与生产率,最终实现软件的工业化生产。质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实。生产率是软件供应方最关心的问题,老板和员工都想用更少的时间挣更多的钱。质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。如果质量不合格,对供需双方都是坏事情。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率。从长期效益看,高质量将保证软件开发的全过程更加规范流畅,大大降低了软件的维护代价,实质上是提高了生产率,同时可获得很好的信誉。质量与生产率之间不存在根本的对立,好的软件工程方法可以同时提高质量与生产率。

二、系统模块设计

(一)系统总体结构设计

系统总体结构设计确定软件由哪些模块组成以及这些模块之间的动态调用关系。网上书店不是一个简单的概念 ,它包含了许多个内容,是由多个页面组成的一个整体的系统。

1.在功能方面,采用图形用户界面技术,使系统能够有多重图形窗口和丰富便利的操作界面 ,通过鼠标或键盘的操作 ,为用户提供最简洁的使用方法。

2.在系统开放性方面,按照软件工程开发规范实现系统的开放性,既便于扩充又便于升级,以适用今后其他人的借鉴需求。

3.在系统和数据的安全性方面,系统采用数据库级用户权限和应用程序级运行权限的双重控制机构,提供了统一的基于角色的用户管理手段,具有完善的系统和数据安全的保障体系。

4.在操作性方面,采用图形用户界面技术,使系统能够有多重图形窗口和丰富便利的操作界面,通过鼠标或键盘的操作,为用户提供最简洁的使用方法。

(二)系统模块设计

网上书店系统主要是实现以下两个功能:一是客户在网上查书,选书,购书和产生订单等功能。二是后台的图书管理功能,包括图书种类的管理和图书的管理。一个典型的网上书店一般都有需要实现商品信息的动态展示,购物车管理,会员管理(包括会员信息注册)和订单处理等模块。根据需求分析可以分为五大功能模块

(三)系统结构设计

根据MVC的设计思想,可以得出如图3.1所示的系统结构设计图。

图3.1 系统功能设计图

第四章系统详细设计

一、系统功能模块设计

本网站系统包括两大部分,前台和后台。用户只能使用前台的各项功能包括注册、登录、购物、收藏、浏览书籍信息、发布信息、新闻、公告、我要买书、我要卖书、教材预定、经典书籍推荐、特价书籍、新书上架等;后台只有管理员才能使用,对网站进行综合管理使其动态更新。下图(图4.1与图4.2)为系统前台主要业务流程与系统前台主要业务流程:

图4.1 系统前台主要业务流程

图4.2 系统后台主要业务流程

(一)用户登录模块

这里介绍用户登录的程序设计思路,数据库中存放有用户的基本信息,用户在网站中输入相关信息,通过匹配检测,便可以知道数据的有效性。

下面是登录程序流程图,如下图4.3所示:

(二)用户注册模块

注册模块,会出现在很多程序中,这里借鉴了其他注册程序的流程。注册模块的核心思想是向数据库中输入数据,并且数据要不能重复,下面是注册模块的程序流程图如下图4.5所示:

图4.5 注册程序流程图

(三)管理员功能模块

网站管理员登录到管理员界面后,可以对图书数据进行添加,修改,删除操作,管理图书信息,方便管理员和用户浏览图书信息,管理员可以添加需要上架的新书以不断的补充书店的图书,让书店的图书更加丰富,对于已经明显显示出下滑趋势的图书,管理员可以进行删除处理,之后用户便不能再看到该书的信息。管理员可以添加公告信息等。

(四)图书信息管理模块

该模块实现依据书名或作者的信息来对图书信息的快速搜索,也提供图书书目信息的分类查询,显示功能。此外,在用户选择了对应书目信息后,还可以显示出有关该图书的详细信息,以便客户能更详细的了解所购买的商品。主要分为两大部分,图书展示和图书查询。

1.图书展示

数据库准备。图书展示和图书查询是将网上书店中的图书有序地罗列出来。该操作涉及到booshop数据库中的 bookInfo数据表。

2.图书查询

图书查询在网上书店中也是一项很重要的功能,主要帮助用户快速地找到想要购买的图书。再一个规模较大的书城中,如果没有这项功能,用户很难找到所需要的图书,那么这个网上书城的吸引力将会因此大大降低。同时好的搜索功能将会带来更多的用户青睐。为适合不同的拥护的需求,本次采用模糊查询的方法为用户提供方便的图书查询。

(五)购物车管理模块

购物车管理用于维护每一个进入网上书店的客户对应的购物车,也就是将客户所选购的图书商品信息记录到对应的购物车里,以便于生成订单。本次将以session 技术、cookie技术来实现购物车。

购物车功能定义。购物车是客户在书店中实施购买活动的辅助工具,购物车性能的优劣在某种程度上也会影响购买者的购买情绪和行为。因此在设计购物车时不仅要考虑功能的多样性也要考虑购物车的实用性。本次对购物车的功能如下功能:

(1)存放客户选好的图书

(2)可以随时改变是否要购买

(3)可以随时改变购买的数量

(4)可以显示目前购物车中的图书的金额

处理逻辑。在购物车信息显示页面中,将显示客户所选的图书信息,在该页面中,客户可以指定选购数据量,也可以将对应商品从购物车中删除。此外,在该页面中也可以返回数目显示页面继续购物,或者清空整个购物车。如果用户确定购物车信息后,可以单击【提交订单】,进入订单确认页面,选择送货方式以及付款方式。

(六)订单管理模块

实现根据客户购物车中的商品信息,以及客户所选择的送货方式和付款方式连同客户对应的个人信息一同生成订单,以便后面进行送货处理。

1.数据库准备

生成订单是购书者购书的最后一步了。为了将图书送到客户手中,必须要求客户输入自己的信息(包括送货信息)本次在处理购书信息时采用cookie保存客户的注册信息,还有一些客户的信息在填写订单时一并完成的。购书结帐时会涉及到多个数据表的操作,如book表、dingdaninfo表、user表。

本模块是系统的核心,主要负责订单的审查,是订单的流程最后一个环节,也是最重要的一个环节。书店的任何数据都和订单数据有直接或者间接的关系,有效的订单和书店的经济利益有直接的关系,收入和支出都是由订单引起的。程序当中也严格限制数据的有效性,无效数据不会录入到数据库中。

(七)添加图书模块

该模块是后台管理模块,实现进入后台页面的身份验证,图书类型的添加,删除及对应类型下图书信息的发布,删除等功能。该页面具有权限,只有管理员可以进入,普通客户没有此权限。

1.数据库准备

图书管理模块的目的是为了实现网上书店中图书信息的添加,修改及删除。该操作涉及到bookshop数据库中的bookInfo数据表和bookclass数据表。

2.数据处理逻辑

该页面进入时会弹出登录对话框,只有正确的管理员姓名和密码才可进入图书查

询模块

该模块实现依据书名或作者的信息来对图书信息的快速搜索,也提供图书书目信息的分类查询,显示功能。此外,在用户选择了对应书目信息后,还可以显示出有关该图书的详细信息。

1.图书展示

数据库准备。图书展示和图书查询是将网上书店中的图书有序地罗列出来。该操作涉及到booshop数据库中的 bookInfo数据表。

2.图书查询

图书查询在网上书店中也是一项很重要的功能,主要帮助用户快速地找到想要购买的图书。再一个规模较大的书城中,如果没有这项功能,用户很难找到所需要的图书,那么这个网上书城的吸引力将会因此大大降低。同时好的搜索功能将会带来更多的用户青睐。为适合不同的拥护的需求,本次采用模糊查询的方法为用户提供方便的图书查询。

数据库准备。该操作涉及到bookshop数据库中的book数据表。另外在模糊查询时使用了数据库系统的like运算符。

处理逻辑。处理过程首先建立数据库连接,打开book数据表,并按照用户指定的方式和关键字信息将book 数据表中满足要求的图书信息显示出来。为了适合用户的不同要求,本次提供了四种查询方法,可按照书名、出版社、作者、息时只需输入部分信息即可ISBN等方式查询.

二、数据库详细设计

系统实体及其属性描述如下:

1. 用户:用户ID,用户名,用户密码,用户邮箱,用户地址,用户类型,

2. 管理员:管理员ID,管理员名,管理员密码。

3. 购物车:购书车ID,图书ID,用户名,购书数量,购物时间,购书审查,订单号,管理员审查,图书名称,图书价格。

4. 图书:图书ID,图书名,图书价格,图书简介,图书数量,图书日期,图书照片,出版社,代理价格,批发价格,用户状态,作者,图书页数,开本

5. 友情链接:ID,链接地址,地址名称。

6. 公告栏:ID,标题,内容,公告时间。

7. 图书类别:ID,名称。

8. 订单信息:订单ID,购书车ID,用户名,订单时间,订单号,订单审查,下订单用户名,下定者邮箱,下定者电话,下定者地址,下定者邮编,付款方式。

第五章系统的测试与维护

一、单元测试

测试一:

在管理员登录时,用户名或密码有一项为空或者填写错误,系统是否出现预先设定的操作提示。

具体操作:用户名、密码、任意一项为空或者填写有误。

结果:都出现相应的错误原因的信息提示。

结论:要求管理员必须填写正确的用户名和密码,才能进入管理页面。

测试二:

修改本站的公告﹑返回前台,看其是否更新成功。

具体操作:通过信息管理页面中的修改公告功能修改公告的内容,看其是否修改成功。

结果:公告内容更新为修改后的信息。

结论:修改公告功能正常。

测试三:

添加﹑删除一条新闻信息﹑返回前台,看其是否添加删除成功。

具体操作:在信息管理页面中添加﹑删除一条首页新闻信息。

结果:显示新添加的新闻信息内容、被删除的新闻没有再显示。

结论:新闻的添加删除功能正常。

测试四:

管理员删除一图书的信息,在前台按关键字查询,看其是否能找到对应的信息。

具体操作:在图书管理页面中的图书查看与修改页面中删除一图书的信息。

结果:在前台搜索中,按关键字查询不到此书信息。

结论:删除图书信息功能正常。

总结

当今社会对于软件开发是一个分工很细的工作,在开发过程中不同的人负责不同的模块开发,比如有专门的人负责业务逻辑,有专门的人负责图形界面,所以现在的开发人员都是某一方面的专家。在本系统中图形界面是十分的友好,但是从美观的角度来说还是很不够的,这样的界面是不能应用到实践中的。

在论文的写作过程中,不仅有大量的参考书籍并且在老师指导和帮助下给论文奠定了良好的理论基础,并且自己亲身体验了几次愉快的网上购书,给我写作提供了良好的素材。

引入MVC模式之后,逻辑层与表现层分离开来,业务逻辑不再关心具体的显示层面,逻辑层的代码量消除了膨胀隐患,表现层也可交由其它非业务人员自由调整,最后完美整合,在层次分工上,比传统模式更加清晰,利于维护,在项目有升迁移植改造需求时,由于业务逻辑层不与表现层直接关联,故可直接使用已有的业务逻辑,大大减少了重构成本。越大的项目中MVC的作用表现的越明显。

电子商务不可避免的会得到更加广泛的发展和应用,而在此过程中必将有更多更好的编程语言出现,但是我认为MVC的设计思想至少在短期内是不会过时的。

参考文献

[1]刘斌,Java Web整合开发,北京,电子工业出版社,2008年5月。

[2]孙卫琴,精通Struts,基于MVC的Java Web设计与开发[M],北京,电子工业出版社,2004年8月。

[3]王克宏,Java技术教程(基础篇),北京,清华大学出版社,2006年2月。

[4](美)Marco Pistoia,Nataraj Nagaratnam等著,企业级Java安全性:构建安全的J2EE应用[M],北京,清华大学出版社,2007年3月。

[5]孙卫琴,李洪成,Tomcat与Java. Web开发技术详解[M],北京,电子工业出版社,2004年4月。

[6]殷兆麟,张永平、姜淑娟,Java网络高级编程[M],北京,清华大学出版社,北京交通大学出版社,2008年5月。

[7]菜剑,景楠,Java Web应用开发,J2EE和Tomcat[M](第2版),北京,清华大学出版社,2005年1月。

[8][美]Xin Chen 著,应用框架的设计与实现,北京,电子工业出版社,2006年5月。

[9]老虎工作室,JSP动态网页制作基础培训教程[M],北京,人民邮电出版社,2005年5月。

[10]崔红娟,网络书城建设分析[J],农业图书情报学刊,第17卷.第11期,2005年11期。

[11]刘洁,基于JSP和JavaBean技术的网络书城设计与实现[J],现代情报.2005第11期。

代码

Errors loginerror = new Errors();

err = loginerror.errInform(userName, passWord);

if( err.get("username") != null || err.get("password") != null){ request.setAttribute("Error", err);

request.getRequestDispatcher("/Login.jsp").forward(request, response);

}

if( err.get("username") == null && err.get("password") == null ){ try{

Database Db = new Database();ResultSet rs = Db.stmt.executeQuery( " select * from UserInfo where username='"+userName+"' and password

='"+passWord+"' ");

if(rs.next()){

rs.close();

Db.stmt.close();

HttpSession session = request.getSession(true);

session.setMaxInactiveInterval(60*3);

ShoppingCart myShoppingCart =

(ShoppingCart)session.getAttribute("sessionId");

if(myShoppingCart != null){

request.getRequestDispatcher("/Main.jsp").forward(request, response);

}else{

ShoppingCart myNewShoppingCart = new ShoppingCart();

session.setAttribute("sessionId", myNewShoppingCart);

session.setAttribute("userinfo", userName);

request.getRequestDispatcher("/Main.jsp").forward(request, response);

}

}

else{

rs.close();

Db.stmt.close();

request.setAttribute("errordatabase", err);

request.getRequestDispatcher("/Login.jsp").forward(request, response);

}

}catch(ClassNotFoundException e){

e.printStackTrace();

}catch(SQLException e){

e.printStackTrace();

}

}

}

<% HashMap errorNull = (HashMap)request.getAttribute("Error"); if(errorNull != null){

String usernameNull = (String)errorNull.get("username");

if(usernameNull != null){

%>

<%=usernameNull%>

<%}}

%>

database.stmt.execute(

"insert into userInfo (username,password) values

('"+Reusername+"','"+Repassword+"')");

database.stmt.close();

HttpSession session = request.getSession(true);

ShoppingCart myNewShoppingCart = new ShoppingCart();

session.setAttribute("sessionId", myNewShoppingCart);

session.setAttribute("userinfo", Reusername);

request.getRequestDispatcher("/Main.jsp").forward(request, response);

String action=request.getParameter("action");

if(action!=null)

{ action=action.trim();

if(action.equals("del"))

{int n=0;

sql="delete * from hw where hw_id="+Cint(request.getParameter("hw_id"));

mdb.executeDelete(sql);

out.print("图书删除成功");

out.print("
");

out.print ("返回");}

try{Class.forName(sDBDriver);}

catch(https://www.wendangku.net/doc/7213931048.html,ng.ClassNotFoundException e)

{System.err.println("数据库连接:"+e.getMessage());} conn=DriverManager.getConnection(sConnStr);

stmt=conn.createStatement();

for(int i=0;i

int myUpdate=stmt.executeUpdate("update sub set sub_check=true where sub_number='"+id[i]+"'");

int mUpdate=stmt.executeUpdate("update basket set basket_admincheck=true where sub_number='"+id[i]+"'");

String hw_name,sort_id;

if(session.getAttribute("sort_id")==null){

hw_name=getStr(request.getParameter("hw_name"));

sql="select * from hw where hw_name like '%"+hw_name+"%' order by hw_id DESC";

rs=mdb.executeQuery(sql);}

else sort_id=request.getParameter("sort_id");

hw_name=getStr(request.getParameter("hw_name"));

sql="select * from hw where sort_id='"+sort_id+"' and hw_name like '%"+hw_name+"%' order by hw_id DESC";

rs=mdb.executeQuery(sql); }

相关文档
相关文档 最新文档