收藏 分享(赏)

网上书店信息管理系统+代码+数据库表.doc

上传人:精品资料 文档编号:10773444 上传时间:2020-01-08 格式:DOC 页数:97 大小:523.50KB
下载 相关 举报
网上书店信息管理系统+代码+数据库表.doc_第1页
第1页 / 共97页
网上书店信息管理系统+代码+数据库表.doc_第2页
第2页 / 共97页
网上书店信息管理系统+代码+数据库表.doc_第3页
第3页 / 共97页
网上书店信息管理系统+代码+数据库表.doc_第4页
第4页 / 共97页
网上书店信息管理系统+代码+数据库表.doc_第5页
第5页 / 共97页
点击查看更多>>
资源描述

1、网上书店信息管理系统的设计与实现学生姓名:蒋 斌 指导老师:罗永红摘 要 本课程设计主要是设计一个网上书店信息管理的系统,实现用户的注册、登录,书店书籍的添加、删除、修改、查询及图书的购买等功能。程序设计平台为 Windows XP,程序设计语言采用 JAVA,所连接的数据库是 oracle 10g。在程序设计中,采用了结构化与面向对象两种解决问题的方法。程序通过调试运行,初步实现了目标。关键词 数据库;oracle 10g;JAVA;网上书店信息管理系统The Design and Implementation of Book Store Information Management Sys

2、temStudent Name:JiangBin Advisor:LuoYong-hongAbstract This course design is mainly to make a information management system of a online bookstore, The function of the system include book adding ,deleting and querying and purchase books. Program design platform is Windows XP, programming language is J

3、AVA, are the connected database is Oracle 10g. In the program process, I adopted two solution of the structured and object-oriented. Program run through the debugger, achieving the initial goal. Keywords Database; oracle 10g; JAVA; Online Bookstore Information Management System目 录1 引言 .11.1 课题背景 .11

4、.2 课程设计目的 .11.3 课程设计任务 .12 系统结构分析 22.1 需求分析 .22.2 功能模块图 .33 数据库设计 43.1 概念结构设计 .43.2 逻辑结构设计 .63.3 数据库表的建立 .84 功能实现 .104.1 注册界面 .104.2 登录界面 .114.3 主界面 .124.4 书籍添加 124.5 书籍修改 134.6 图书删除 .144.7 图书删除 .144.8 订单查询修改 .155 系统技术实现 165.1 JAVA.165.2 ORACLE .166 结束语 18参考文献 19蒋 斌 网上书店信息管理系统的设计与实现 第 1 页 共 34 页1 引言

5、1.1 课题背景随着计算机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。二十一世纪是信息的时代,所以信息的交换和信息流通显 的特别重要。因此网上书店的出现成为必然。1.2 课程设计目的随着计算机的广泛应用,其逐步成为现代化的标志。书店等,在正常运行过程中总是面对大量的客户信息,书籍信息以及两者相互作用产生的购书信息。因此需要对客户资源、书籍资源、购书信息及书籍信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了书店自动化的管理,能够更快速的满足客户的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的。网上书店信息管理系统的主

6、要功能是实现书籍信息管理及购书的自动化。围绕这一主要功能,本系统涉及到以下核心功能:上传管理,修改管理,查询管理。除了这些核心功能外,还包括一些基本和辅助功能,如:商家和客户的注册、登录,客户的购书等。1.3 课程设计任务本课程设计任务是通过开发一个网上书店信息管理系统,学习数据库系统的设计与开发,采用 Eclipse 和 oracle 10g 等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。蒋 斌 网上书店信息管理系统

7、的设计与实现 第 2 页 共 34 页2 系统结构分析2.1 需求分析网上书店信息管理系统是适应计算机时代发展的需要,提高管理的效率而开发设计的。通过对书籍信息管理,使客户能轻松购买书籍。经过综合分析,确定了网上书店信息管理系统的主要包括以下功能:(1)商家:a、商家注册功能此模块的主要功能是用于商家注册账号;b、商家登录功能此模块的主要功能是用于拥有商家账号的用户登陆系统对自己的书店进行管理;c、上传书籍功能此模块的主要功能是用于商家发布一些新书共客户查看及购买;d、书籍修改功能此模块的主要功能是用于商家修改自己书店书籍的信息;e、书籍删除功能此模块的主要功能是用于商家删除一些书籍信息;f、

8、书籍查询功能 此模块的主要功能是用于商家查询自己书店的书籍;g、订单查询功能此模块的主要功能是用于商家查询自己书店卖书的记录;(2)客户:a、商家注册功能此模块的主要功能是用于商家注册账号;b、商家登录功能此模块的主要功能是对拥有客户账号的用户登录;c、商品信息查询功能此模块的主要功能是用于客户查看所有商家的书籍信息;蒋 斌 网上书店信息管理系统的设计与实现 第 3 页 共 34 页d、书籍购买功能此模块的主要功能用于客户购买书籍e、订单查询功能此模块的主要功能是用于客户查询自己的购书记录;2.2 功能模块图根据上述的功能,可以设计出系统的总体功能模块,如图 2.1 所示,网上书店信息管理系统

9、商家书籍查询客户注册登录书籍上传 登录 书籍修改书籍删除订单查询注册书籍查询登录购买书籍订单查询图 2.1 系统功能模块示意图蒋 斌 网上书店信息管理系统的设计与实现 第 4 页 共 34 页3 数据库设计3.1 概念结构设计根据需求分析抽象出信息结构,可得该系统的 E-R 图,(1)商家用户 E-R 图,如图 3.1 所示,sellerpwd addressSeller_id Seller_nameme图 3.1 商家用户 E-R 图(2)客户用户 E-R 图,如图 3.2 所示,buyerpwd addressbuyer_id buyer_nameme图 3.2 客户用户 E-R 图蒋 斌

10、 网上书店信息管理系统的设计与实现 第 5 页 共 34 页(3) 书籍信息 E-R 图,如图 3.3 所示,goodsprice discount numGoods_id Seller_id Goods_name图 3.3 书籍信息 E-R 图(4)订单 E-R 图,如图 3.4 所示,orderBuyer_id Goods_idorder_id Seller_idnum图 3.4 商家用户 E-R 图(5)根据分 E-R 图和需求分析,可得到总 E-R 图,如图 3.5 所示。蒋 斌 网上书店信息管理系统的设计与实现 第 6 页 共 34 页图 3.5 总 E-R 图3.2 逻辑结构设计根

11、据上述的概念结构设计出逻辑结构,将 E-R 图转换为关系模型。数据库 ORCL 包含以下 4 个表:商家信息表 seller、客户信息表 buyer、书籍信息表 goods、订单信息表 order。(1) 商家信息表 seller商家信息表 seller 用来保存商家账号、密码等信息,表 seller 的结构如表 3-蒋 斌 网上书店信息管理系统的设计与实现 第 7 页 共 34 页1所示,表 3-1 表 seller 的结构字段名 说明 类型 长度及备注seller_id 商家编号 varchar2(20) 主键seller_name 书店名称 varchar2(20)pwd 密码 varc

12、har2(20)address 书店地址 varchar2(200)(2) 客户信息表 buyer客户信息表 buyer 用来保存客户账号、密码等信息,表 buyer 的结构如表3-2 所示,表 3-2 表 buyer 的结构字段名 说明 类型 长度及备注buyer_id 客户编号 varchar2(20) 主键buyer_name 客户名字 varchar2(20)pwd 密码 varchar2(20)address 客户住址 varchar2(200)(3)图书信息表 goods书籍信息表 goods 用来保存书号、书名、作者等信息。表 goods 的结构如表 3-3 所示,表 3-3 表

13、 goods 的结构字段名 说明 类型 长度及备注goods_id 书籍编号 int 主键seller_id 商家编号 varchar(20) 外键goods_name 书籍名称 varchar(50)price 价格 intdiscount 折扣 intnum 书籍数量 int蒋 斌 网上书店信息管理系统的设计与实现 第 8 页 共 34 页(4)订单信息表 order订单信息表 order 用来保存订单号、书籍编名等信息。表 order 的结构如表 3-4 所示,表 3-4 表 order 的结构字段名 说明 类型 长度及备注order_id 订单编号 int 主键goods_id 书籍编

14、号 varchar(20) 外键seller_id 商家编号 varchar(50) 外键buyer_id 客户编号 int 外键num 购买数量 int3.3 数据库表的建立在设计数据库表结构之前,首先要创建一个数据库实例。本系统使用的数据库为 oracle 10g。数据库表的建立语句如下:-商家create table seller(seller_id varchar2(20) primary key,seller_name varchar2(20),pwd varchar2(20),address varchar2(200);-客户create table buyer(buyer_id

15、varchar(20) primary key,buyer_name varchar(20),pwd varchar2(20),address varchar(200);-书籍蒋 斌 网上书店信息管理系统的设计与实现 第 9 页 共 34 页create table goods(goods_id int primary key,seller_id varchar(20),goods_name varchar(50),price int,discount int,num int,constraint fk_seller_id foreign key(seller_id) references s

16、eller(seller_id);-订单create table orders(order_id int primary key,goods_id int,seller_id varchar(20),buyer_id varchar(20),num int,constraint fk_goods_id foreign key(goods_id) references goods(goods_id),constraint fk_sellers_id foreign key(seller_id) references seller(seller_id),constraint fk_buyer_id

17、 foreign key(buyer_id) references buyer(buyer_id);蒋 斌 网上书店信息管理系统的设计与实现 第 10 页 共 34 页4 功能实现该程序实现了网上书店信息管理系统应有的功能,即账号注册、登录功能、书籍查询、书籍添加、书籍删除、书籍修改、书籍购买功能。4.1 注册界面程序运行出现注册界面,要求用户输入相应信息,当信息符合要求时,注册成功,如图 4.1 所示,图 4.1 注册界面实现注册功能的核心代码如下:/构建客户对象Buyer buyer = new Buyer();/设置客户的信息buyer.setId(fieldCus0.getText()

18、;buyer.setName(fieldCus1.getText();buyer.setPwd(fieldCus2.getText();蒋 斌 网上书店信息管理系统的设计与实现 第 11 页 共 34 页buyer.setAddress(fieldCus3.getText();/构建BuyerDao对象BuyerDao dao = new BuyerDao();/把该客户插入到数据库中int flag_1 = dao.insertBuyer(buyer);4.2 登录界面程序运行出现登陆界面,要求用户输入相应信息,当信息符合要求时,登录成功,如图 4.2 所示,图 4.2 登录界面当登录成功时

19、,进入主界面,实现登录功能的核心代码如下:/通过输入姓名和密码获取一个用户对象Seller seller = SellerDao.getSeller(useNameText.getText(), pws.getText();/判断队形是否为空if(seller.getId()!=null)/隐藏当前窗口setVisible(false);/构建用户主窗口,并显示出来蒋 斌 网上书店信息管理系统的设计与实现 第 12 页 共 34 页new SellerFrame().setVisible(true);4.3 主界面登录成功后商家和客户分别进入两个不同的主界面,如图 4.3 所示,图 4.3 主

20、界面图 4.3 主界面界面主界面里面商家可以查看到自己的商品信息及商品出售后生成的订单信息,客户则可以浏览所有商家的商品信息和自己的购物记录。4.4 书籍添加该模块主要用于商家添加书籍,如图 4.4 所示,蒋 斌 网上书店信息管理系统的设计与实现 第 13 页 共 34 页图 4.4 书籍添加界面添加成功后该商家及客户均能浏览到该书籍的信息,实现添加书籍功能的核心代码如下:/构建GoodsDao对象GoodsDao dao = new GoodsDao();/设置goods的属性goods.setDiscount(Integer.valueOf(fieldDiscount.getText();

21、goods.setName(fieldName.getText();goods.setNum(Integer.valueOf(fieldNum.getText();goods.setPrice(Integer.valueOf(fieldPrice.getText();/调用dao.insertGoods()方法,把商品插入到数据库中dao.insertGoods(goods);4.5 书籍修改该模块主要用于商家修改自己的书籍的信息,如图 4.5 所示,图 4.4 书籍修改界面该界面进来后首先会显示出商品的信息,修改好数据后,点击修改按钮则可以对商品进行修改,实现修改功能的核心代码如下:蒋 斌

22、网上书店信息管理系统的设计与实现 第 14 页 共 34 页/构建 GoodsDao 对象GoodsDao dao = new GoodsDao();/读取对应文本框的信息并设置到goods里面goods.setDiscount(Integer.valueOf(fieldDiscount.getText();goods.setName(fieldName.getText();goods.setNum(Integer.valueOf(fieldNum.getText();goods.setPrice(Integer.valueOf(fieldPrice.getText();/修改goods信息d

23、ao.updateGoods(goods);4.6 图书删除该模块主要用于商家对书籍进行删除操作,如图 4.6 所示,图 4.6 书籍删除界面当商家往文本框里输入书籍编号后,点击删除,则可以对书籍进行删除,当书籍编号输入错误,点击删除时系统会弹出提示信息,实现该模块功能代码如下:/获取文本框中输入的书籍编号int id = Integer.parseInt(field.getText();/构建GoodsDaoGoodsDao dao = new GoodsDao();/调用/调用deleteById方法,删除书籍dao.deleteById(id)4.7 图书删除该模块主要用于客户购买书籍,

24、如图 4.7 所示,图 4.7 图书购买蒋 斌 网上书店信息管理系统的设计与实现 第 15 页 共 34 页当客户往文本框里面输入书籍标号,选择好商品数量后,点击购买就可以实现客户对书籍的购买。如果书籍编号错误或商品数量不够时,系统会弹出提示,实现购书功能的核心代码如下:/构建GoodsDao对象GoodsDao dao = new GoodsDao();/构建goods对象Goods goods = new Goods();/减少库存数量goods.setNum(goods.getNum()-num);/修改商品信息dao.updateGoods(goods);/构建订单对象OrderDao

25、 order = new OrderDao();/插入一条订单数据order.inserOerderByGoods(goods, num);4.8 订单查询修改该模块主要用于客户查看生成的订单,如图 4.8 所示,图 4.8 订单查询模块蒋 斌 网上书店信息管理系统的设计与实现 第 16 页 共 34 页5 系统技术实现5.1 JAVAJava 编程语言的风格十分接近 C、C+语言。Java 是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心,Java 舍弃了 C +语言中容易引起错误的指针(以引用取代) 、运算符重载(operator overloading) 、多重继

26、承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5版本中,Java 又引入了泛型编程( Generic Programming) 、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行” 的 跨 平 台 特 性 2。5.2 oracleOracle 数据库包括 Oracle 数据库服务器和客户端。Oracle

27、 数据库服务器:Oracle Server 是一个对象一关系数据库管理系统。它提供开放的、全面的、和集成的信息管理方法。每个 Server 由一个 Oracle DB 和一个 Oracle Server 实例组成。它具有场地自治性(Site Autonomy)和提供数据存储透明机制,以此可实现数据存储透明性。每个 Oracle 数据库对应唯一的一个实例名 SID,Oracle 数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA 优先级的 Sys 用户的别名,它由 DBA 用户使用来完成数据库的管理任务,包括启动和关闭数据库;Sys,它是一

28、个 DBA 用户名,具有最大的数据库操作权限;System,它也是一个 DBA 用户名,权限仅次于 Sys 用户。客户端:为数据库用户操作端,由应用、工具、SQL* NET 组成,用户操作数据库时,蒋 斌 网上书店信息管理系统的设计与实现 第 17 页 共 34 页必须连接到一服务器,该数据库称为本地数据库(Local DB) 。在网络环境下其它服务器上的 DB 称为远程数据库(Remote DB) 。用户要存取远程 DB 上的数据时,必须建立数据库链。Oracle 数据库的体系结构包括物理存储结构和逻辑存储结构。由于它们是相分离的,所以在管理数据的物理存储结构时并不会影响对逻辑存储结构的存取

29、。1.逻辑存储结构它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同一词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。而其中的模式对象和关系形成了数据库的关系设计。数据块(Block):是数据库进行 UO 操作的最小单位,它与操作系统的块不是一个概念。oracle 数据库不是以操作系统的块为单位来请求数据,而是以多个 Oracle 数据库块为单位。段(Segment):是表空间中一个指定类型的逻辑存储结构,它由一个或多个范围组成,段将占用并

30、增长存储空间。其中包括:数据段:用来存放表数据;索引段:用来存放表索引;临时段:用来存放中间结果;回滚段:用于出现异常时,恢复事务。范围(Extent):是数据库存储空间分配的逻辑单位,一个范围由许多连续的数据块组成,范围是由段依此分配的,分配的第一个范围称为初始范围,以后分配的范围称为增量范围 3。蒋 斌 网上书店信息管理系统的设计与实现 第 18 页 共 34 页6 结束语经过这两周的不断学习和设计开发加上老师同学的帮助,终于完成了本次课程设计。在完成过程中,我进一步学习了 Java 的基础语法以及熟悉了用 Java编写图形用户界面,同时也规范了许多编写习惯,对数据库的一些基本操作也有了进

31、一步的了解。在编程的过程中遇到许多的问题,但通过查资料,以及与同学讨论,大部分问题得到了解决。但由于时间问题以及一些其他的因素,本系统也扔存在许多问题,功能也不是很完善,比如一些输入数据的控制,正则表达式的匹配这方面做的还很不够。但我觉得通过这次课程设计我还是学到了很多,如果下次再去做类似的东西我觉得我一定会做的更好。蒋 斌 网上书店信息管理系统的设计与实现 第 19 页 共 34 页参考文献1 萨师煊, 王珊.数据库系统概论(第三版)M.北京:高等教育出版社. 2005.2 Y.Daniel Liang.Java 语言程序设计基础篇M.北京:机械工业出版社 .2006.3 夏帮贵,刘凡馨 .

32、JDBC AP 数据库编程实材作教.北京:北京希望电子出版社.2001.4 王立福. 软件工程(第二版)M. 北京:北京大学出版社.2002.蒋 斌 网上书店信息管理系统的设计与实现 第 20 页 共 34 页附录 全部源代码package com.shoeShop.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class Connect private static Connection con = null;private static Stri

33、ng url=“jdbc:oracle:thin:localhost:1521:ORCL“;private static String driver = “oracle.jdbc.driver.OracleDriver“;private static String user = “scott“;private static String pwd = “tiger“;public static Connection getConnection()try Class.forName(driver);con = DriverManager.getConnection(url, user, pwd);

34、System.out.println(“数据库连接成功!“); catch (ClassNotFoundException e) System.out.println(“驱动加载失败!“); catch (SQLException e) System.out.println(“数据库连接失败!“);return con;蒋 斌 网上书店信息管理系统的设计与实现 第 21 页 共 34 页public static void main(String args) Connect.getConnection();package com.shoeShop.action;import java.awt.

35、event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JPanel;import com.shoeShop.view.RegisterFrame;public class docMenuAction implements ActionListener RegisterFrame register = null;JPanel cusPanel = null;JPanel docPanel = null;public docMenuAction(RegisterFrame register)this.re

36、gister = register;this.cusPanel = register.cusPanel;this.docPanel = register.docPanel;public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubregister.flag = 1;/System.out.println(register.flag);register.remove(cusPanel);register.add(docPanel);docPanel.updateUI();蒋 斌 网上书店信息管理系统的设

37、计与实现 第 22 页 共 34 页package com.shoeShop.dao;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.shoeShop.db.Connect;import com.shoeShop.entity.Buyer;import com.shoeShop.entity.Seller;public class BuyerDao private static Connection con

38、n;private static Statement statement;private static ResultSet resultSet;/插入数据,用于注册public int insertBuyer(Buyer buyer)int flag = 0;conn = Connect.getConnection();try statement = conn.createStatement();String sql = “insert into buyer values(“+buyer.getId()+“,“+buyer.getName()+“,“+buyer.getPwd()+“,“+bu

39、yer.getAddress()+“)“;蒋 斌 网上书店信息管理系统的设计与实现 第 23 页 共 34 页/ System.out.println(“buyer“+sql);flag = statement.executeUpdate(sql);statement.close();conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();/ System.out.println(flag);return flag;/通过用户名和密码查询,用于登录public stati

40、c Buyer getBuyer(String name,String pwd)conn = Connect.getConnection();Buyer buyer = new Buyer();try statement = conn.createStatement();String sql = “select * from buyer where buyer_id=“+name+“ and pwd = “+pwd+“;resultSet = statement.executeQuery(sql);while(resultSet.next()buyer.setId(resultSet.getS

41、tring(“buyer_id“);buyer.setName(resultSet.getString(“buyer_name“);buyer.setPwd(resultSet.getString(“pwd“);buyer.setAddress(resultSet.getString(“address“);resultSet.close();statement.close();蒋 斌 网上书店信息管理系统的设计与实现 第 24 页 共 34 页conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.prin

42、tStackTrace();return buyer;public static void main(String args) BuyerDao dao = new BuyerDao();System.out.println(dao.getBuyer(“zxk“, “654321“);/ Buyer buyer = new Buyer();/ buyer.setId(“lily“);/ buyer.setName(“长理专卖“);/ buyer.setPwd(“123456“);/ buyer.setAddress(“湖南长沙“);/ dao.insertBuyer(buyer);蒋 斌 网上

43、书店信息管理系统的设计与实现 第 25 页 共 34 页package com.shoeShop.dao;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import com.shoeShop.db.Connect;import com.shoeShop.entity.Goods;import com.shoeShop.entity.Seller;import com.sho

44、eShop.imp.User;public class GoodsDao private static Connection conn;private static Statement statement;private static ResultSet resultSet;/查询登录商家的所有商品,用于商家管理自己的商品public ArrayList getAllGoods()ArrayList list = new ArrayList();conn = Connect.getConnection();try statement = conn.createStatement();Strin

45、g sql = “select * from goods a,seller b where 蒋 斌 网上书店信息管理系统的设计与实现 第 26 页 共 34 页a.seller_id=b.seller_id and b.seller_id=“+User.getUserName()+“;resultSet = statement.executeQuery(sql);while(resultSet.next()Seller seller = new Seller();seller.setName(resultSet.getString(“seller_name“);seller.setAddres

46、s(resultSet.getString(“address“);Goods goods = new Goods();goods.setSeller(seller);goods.setId(resultSet.getInt(“goods_id“);goods.setName(resultSet.getString(“goods_name“);goods.setSeller_id(resultSet.getString(“seller_id“);goods.setDiscount(resultSet.getInt(“discount“);goods.setNum(resultSet.getInt

47、(“num“);goods.setPrice(resultSet.getInt(“price“);/ System.out.println(goods.toString();list.add(goods); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallytry resultSet.close();statement.close();conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报