收藏 分享(赏)

西安邮电大学计算机学院数据库课程设计 480页 两个财富值.doc

上传人:weiwoduzun 文档编号:2651415 上传时间:2018-09-24 格式:DOC 页数:485 大小:9.88MB
下载 相关 举报
西安邮电大学计算机学院数据库课程设计 480页 两个财富值.doc_第1页
第1页 / 共485页
西安邮电大学计算机学院数据库课程设计 480页 两个财富值.doc_第2页
第2页 / 共485页
西安邮电大学计算机学院数据库课程设计 480页 两个财富值.doc_第3页
第3页 / 共485页
西安邮电大学计算机学院数据库课程设计 480页 两个财富值.doc_第4页
第4页 / 共485页
西安邮电大学计算机学院数据库课程设计 480页 两个财富值.doc_第5页
第5页 / 共485页
点击查看更多>>
资源描述

1、 西 安 邮 电 大 学(计算机学院)综合应用软件课程设计报告题 目:易贷宝- 企业- 银行- 农民贷款系统专业名称: 计算机科学与技术班 级: 计科 1201学生姓名: 学号(8 位): 指导教师: 乔平安起止时间: 2014 年 11 月 17 日2014 年 11 月 28 日一、 课程设计目的在数据库原理课程基础上,培养综合运用数据库知识的能力。学会数据库的设计、规划以及应用程序的开发和调试,掌握客户机/服务器体系结构,学会大型数据库的工作模式。大型数据库管理系统存放于服务器,数据库放在服务器上,学生在客户机上开发应用程序访问服务器上的数据库,并完成应用系统所要求的各项功能,应用程序的

2、开发需要采用当前流行的新软件。二、课程设计内容数据库的设计根据所选的题目,经过调查研究,构建合理的数据库。首先构建基本表以及表和表之间的联系,在此基础上构建视图和索引表。此次选题共建立 11 张表,各表之间外键关联极强。 服务器的组织根据建立的基本表、视图和索引表搭建服务器。前端开发工具:采用 JAVA 进行编写 服务器端:JDK 1.7 , mysql 5.6 开发应用程序利用所学的新软件开发工具进行应用程序的开发。 连接、调试。三、软硬件环境及系统所采用的体系结构系统的体系结构为 C/S 结构1.前台开发工具 Eclipse+ADT 22.0.3+GenyMotion开发语言为:Java(

3、使用 JDK1.6)开发环境:Android4+Windows8 x642.后台开发工具:MyEclipse2014+Tomcat7.0+MySQL5.6+SQLYog开发语言为:Java(使用 JDK1.7),SQL开发环境为:Windows7 x64四、需求分析易贷宝是一款为面向农户贷款的贷款应用,实行“公司+农户+信贷”的产业链模式进行申贷。所谓“公司+农户+ 信贷” ,就是实行农户贷款,企业担保方式。利用企业市场洞察力、信息敏感度和资金实力相对较强的优势,由企业为关联农户贷款提供担保,既把企业与农户的利益紧密地联系在一起,又能增强单个农户抗风险能力创新担保形式,实现风险共担。这样利用农

4、户现成生产设备减少了生产成本,公司和周围农民都有了经济效益。通过对农业龙头企业进行支持,以及对形成农业产业链的前提农户种植、收购、加工等上下游提供相应的信贷支持、提供信息服务、发放惠农卡等,不仅满足企业发展的资金需求还对上下游客户提供延伸的金融服务,这样银行也能降低风险,形成农户、企业、银行等多赢局面。 “易贷宝”是一款集贷款服务、供需资讯于一体的金融类应用程序。很好的运用了“公司+农户+ 信贷 ”这一模式。具体流程如下:农产品收购企业向银行申请贷款,并按照企业和银行协议,棉花收购企业需将这笔款项中的一定比例借给有需求的农户,用于农户的扩大再生产,并负责向农户提供生产技术指导和产品收购。这笔借

5、款以农户在企业中的订单做抵押。农户将其现在或将来生产的农场品销售给企业,作为获得贷款的对价和偿还贷款的方式,最后由企业向银行偿还贷款本息。“易贷宝” 创新了信贷管理方式,依托产业化龙头企业,把银行贷款发放和农业产业化有机地结合在一起。“易贷宝”贷款的设计理念是通过产业链贷款资金封闭运行化解信贷资金的风险,从而解决农户贷款难、担保难的问题。同时立足于简化企业贷款流程,减少企业款项下达时间,为企业提供优惠利率。同时利用银行做资金融通,以“公司农户+ 信贷”的模式实现三方共赢。具体的需求分析:1.农户注册登陆:用户名、用户密码、用户密码确认、手机号。注册之后出现用户信息,可以暂不填写,但是在申请贷款

6、之前必须得填写2.用户信息:身份认证:中文姓名、身份证号、出生年月、现居地址 经营状况:种植行业、种植规模、种植年限、年投入成本、年收入、贷款用途银行卡号: 卡号、余额 (贷款对象须从事种养殖业,并且有过种植经历,即年限不可为 0。规模、年限、成本收入、贷款用途作为银行放贷金额的考量)3.担保企业信息:企业名称、企业注册号、企业地址、企业电话、申请进度(银行线上电话核实,符合后根据企业地址线下审核,审查交易来往记录等内容)4.贷款申请:申请农户、贷款金额、贷款期限、申请企业、状态、申请日期、用途、应还日期(必须完善用户信息之后才能在线申请,提交申请后根据用户信息进行审核)5.进度查询:查询用户

7、款项审核进度。有未审核,正在审核,审核未通过三种情况。未通过审核列有未审核通过的原因。6.在线寻找担保企业:可以通过定位寻找附近的农企,也可搜索企业,并实现线上沟通。发送担保申请。7.申请记录:申请记录中有农户贷款的申请记录,记录农户贷款的金额,贷款日期,款项状态(已还款,未还款)显示到期偿还金额,应还款的日期8.还款:产品申请 数量 单价 合计金额 提交还款申请 等待企业线上核实(农户提交申请后,在线下交易的同时企业完成线上核实)9.邀请好友:邀请通讯录中的好友。方式为短信。10.平台介绍:介绍易贷宝,语言通俗易懂关于:简单介绍开发团队意见反馈:提交文字信息客服电话:一键拨打客服电话11.企

8、业注册:用户名、密码、密码确认、企业名称、注册号(注册号必须输入完整信息,名称可以模糊匹配)成立日期、登记机关、地址、经营范围、企业电话 12.我的消息:查看农户的消息,并在线沟通。13.查看申请:查看向自己申请的农户的所有信息,线下核实之后线上通过担保申请。通过或拒绝担保申请的农户。通过的农户保存在我的担保农户中。查看农户的还款申请,在交易的同时通过还款验证,农户的申请记录中款项更新为已还款。14.我的担保农户:查看所担保农户的所有信息、审核进度、并实现交流。五、系统设计1.系统结构图(功能模块图)见附件一2.后台接口:1.农民注册servlet/FarmerRegistServletStr

9、ing name 农民姓名String password 密码String phone 农民电话返回值name_has_registed 有信息姓名,注册失败phone_has_registed 有重复电话,注册失败regist_success 注册成功regist_failed 注册失败2.农民资料完善http:/localhost:8080/ servlet/FarmerDetialServletInteger fid 农民 idString plantIndestury 种植行业String plantScale 种植规模Integer plantYear 种植年限Float annua

10、lInvestment 年投入Float annualEarning 年收入String loanUse 贷款用途返回值message_save_success 信息保存成功message_has_certained 信息已确认过save_failed 保存失败3.农民个人信息完善http:/localhost:8080/ servlet/FarmerIdentityServletInteger fid 农民 idcnNAME 中文姓名identityNumber 农民身份证号birthday 生日address 住址返回值message_save_success 信息保存成功message_

11、has_certained 信息已确认过save_failed 保存失败4.农民持有银行卡情况http:/localhost:8080/ servlet/ servlet/FBankCardServletInteger fid 农民 idString bankName 银行名称String cardNumber 银行卡号返回值cardNumber_has_certained 银行卡已存在message_save_success 信息保存成功message_has_save 信息保存(超过一张卡)save_failed 保存失败5.企业注册http:/localhost:8080/ servle

12、t/ servlet/ EnterpriseServletString name 企业登录名String password 登录密码String enterpriseName 企业名称String registNumber 企业注册号返回结果name_has_registed 存在相同注册名,注册失败enterpriseName_has_registed 存在相同企业名,注册失败registNumber_has_registed 存在相同注册号,注册失败regist_success 注册成功regist_failed 注册失败6.企业信息完善/servlet/EnterpriseDetialS

13、ervletInteger eid 企业 idString establishDate 成立日期String registAuthorith 登记机关String businessScope 经营范围String phoneNumber 企业电话返回结果message_save_success 信息插入成功message_has_certained 信息已插入save_failed 插入失败7.企业持有银行卡情况http:/localhost:8080/ servlet/ servlet/EBankServletInteger eid 企业 idString bankName 银行名称Stri

14、ng cardNumber 银行卡号返回值number_has_certained 银行卡已存在message_save_success 信息保存成功message_has_save 信息保存(超过一张卡)message_save_failed 保存失败8.农民登陆http:/localhost:8080/ servlet/FarmerLoginServletString name 农民姓名String password 密码返回结果login_failed 登陆失败“farmer“:“id“:1,“name“:“zc“,“password“:“123“,“hasIdentity“:1,“ha

15、sDetial“:1,“hasBankCard“:1,“farmerDetial“:“fid“:1,“plantIndestury“:“123“,“plantScale“:“123“,“plantYear“:123,“annualInvestment“:123,“annualEarning“:123,“loanUse“:“123“,“farmerIdentity“:“fid“:1,“cnName“:“qwe“,“identityNumber“:“123“,“birthday“:“123“,“address“:“123“,“bankCards“:“fid“:1,“bankName“:“123“,

16、“cardNumber“:“123“,“money“:100009.企业登陆http:/localhost:8080/servlet/EnterpriseLoginServletString name 企业登录名String password 登录密码返回结果login_failed 登陆失败“enterprise“:“id“:1,“name“:“haha“,“password“:“123“,“enterpriseName“:“123“,“registNumber“:“123“,“hasDetial“:1,“hasBankCard“:1,“enterprisedetial“:“eid“:1,“

17、establishDate“:“123“,“registAuthorith“:“123“,“businessScope“:“123“,“phoneNumber“:“123“,“bankCards“:“eid“:1,“bankName“:“123“,“cardNumber“:“123“,“money“:600000010.更新农民银行卡金额/servlet/FarmerUpdateMoneyServletInteger id 银行卡 idFloat money 钱数返回结果money_less_failed 所要取出的钱大于已有的钱,取钱失败get_money_success 取钱成功save_

18、money_success 存钱成功update_money_failed 更新失败11.更新企业银行卡金额/servlet/EnterpriseUpdateMoneyServletInteger id 银行卡 idFloat money 钱数返回结果money_less_failed 所要取出的钱大于已有的钱,取钱失败get_money_success 取钱成功save_money_success 存钱成功update_money_failed 更新失败12.查询企业银行卡信息/servlet/EBankCardDetialServletInteger eid 企业 id返回结果no_ban

19、kcard 无银行卡信息“id“:1,“eid“:1,“bankName“:“123“,“cardNumber“:“123“,“money“:5930000,“id“:2,“eid“:2,“bankName“:“234“,“cardNumber“:“23456“,“money“:800000013.查询农民银行卡信息/servlet/FBankCardDetialServletInteger fid 农民 id返回结果no_bankcard 无银行卡信息“id“:1,“fid“:1,“bankName“:“123“,“cardNumber“:“123“,“money“:11000014.模拟在

20、线查找企业(产生 10 个 eid 随机数,返回enterprise,enterprisedetial 中的全部内容)/servlet/FindEnterpriseServlet返回结果“id“:1,“name“:“haha“,“enterpriseName“:“123“,“registNumber“:“123“,“businessScope“:“123“,“phoneNumber“:“123“,“establishDate“:“123“,.随机返回 10 个企业及其信息15.用户提出担保申请/servlet/GurantEnterpriseServletInteger fid 农民 idIn

21、teger eid 企业 id返回结果gurant_success 申请提出成功gurant_failed 申请提出失败16.企业接受农户担保申请/servlet/UpdateGurantDateSuccessServletInteger id 担保信息 id返回结果update_success 更新申请信息为接受成功update_failed 更新申请信息为接受失败17.企业不接受农户担保申请/servlet/UpdateGurantDateFailedServletInteger id 担保信息 id返回结果update_success 更新申请信息为不接受成功update_failed

22、更新申请信息为不接受失败18.用户向企业贷款/servlet/LoanServletfid 农民 ideid 企业 idfbid 农民存入的银行卡 idmoney 贷款金额remoney 应还金额loanDays 贷款期限useOfLoan 贷款用途返回结果loan_success 申请贷款成功loan_failed 申请贷款失败19.企业正在审理贷款/servlet/LoanPendingServletid 贷款 id返回参数loan_update_pending_success 更改状态为企业正在审理贷款成功loan_update_pending_failed 更改状态为企业正在审理贷款失

23、败20.企业决定不放贷/servlet/LoanFailedServletid 贷款 id返回结果loan_update_failed_success 更改状态为企业不放贷成功loan_update_failed_failed 更改状态为企业不放贷失败21.企业决定放贷/servlet/LoanSuccessServletid 贷款 idebid 企业所用的银行卡 id返回结果loan_update_success_success 更改状态为企业决定放贷成功loan_update_success_success 更改状态为企业决定放贷失败22.农户查看我的所有贷款情况/servlet/Farm

24、erAllLoanServletInteger fid返回结果“eid“:1,“establishDate“:“123“,“registAuthorith“:“123“,“businessScope“:“123“,“phoneNumber“:“123“,“fid“:1,“fbid“:1,“money“:123,“remoney“:234,“loanDays“:12,“loanSuccessDate“:“2014-11-17“,“repaymentDate“:“2014-11-17“,“useOfLoan“:“12“,“status“:723.农户提出还款/servlet/FarmerRepay

25、mentServletInteger fid 农民 idInteger eid 企业 idInteger fbid 农户选择还款的银行卡 idInteger lid 借款项 idString repaymentContent 还款内容返回结果reapply_success 更改状态为农民提出还款成功reapply_failed 更改状态为农民提出还款失败24.企业正在审核还款/servlet/LoanRependingServletInteger id 还款 id返回结果update_loan_repending_success 更改状态为企业正在审核还款成功update_loan_repen

26、ding_failed 更改状态为企业正在审核还款失败25.企业决定还款成功/servlet/RepaySuccessServletInteger id 还款 idInteger ebid 企业银行卡 id返回结果update_loan_success_success 更改状态为企业决定还款成功成功update_loan_success_failed 更改状态为企业决定还款成功失败26.农户查看所有还款信息27.农户查询全部担保信息/servlet/FarmerGetAllGurantInfoServletInteger fid 农户 id返回结果no_data 没有数据JSON:“id“:1

27、,“askDate“:“2014-11-17“,“status“:1,“enterprise“:“enterpriseName“:“dell“担保进度数据28.企业查询所有担保信息/servlet/EnterpriseGetAllGurantApplyServletInteger eid 企业 id返回结果(no_data 没有数据JSON:“id“:3,“askDate“:“2014-11-17“,“cnName“:“zzzc“,“identityNumber“:“140109199307230519“,“address此处返回 status=1 的信息,表示我要处理的担保申请“:“xian

28、 changan“3.数据库设计ER 图1.农户表farmerid INT 农民 id(主键)name VARCHAR(255) 农民姓名password VARCHAR(255) 登陆密码phone VARCHAR(20) 农民电话hasIdentity TINYINT 是否确认身份信息,1 确认hasDetial TINYINT 是否确认经营信息,1 确认hasBankCard TINYINT 是否拥有银行卡2农户细节表farmerdetialfid INT 农民 id(主键+外键)plantIndestury VARCHAR(255) 种植行业plantScale VARCHAR(255

29、) 种植规模plantYear INT 种植年限annualInvestment FLOAT 年投入annualEarning FLOAT 年收入loanUse VARCHAR(255) 贷款用途3.农户确认信息表farmeridentityfid INT 农民 id(主键+外键)cnName VARCHAR(255) 中文姓名identityNumber VARCHAR(255) 身份证号birthday VARCHAR(255) 出生年月address VARCHAR(255) 现居地址4.农民银行卡表fbankcardid INT 银行卡 id(主键)fid INT 农民 id(外键)b

30、ankName VARCHAR(255) 银行名称cardNumber VARCHAR(255) 银行卡号money FLOAT 金额5.企业表enterpriseid INT 企业 id(主键)name VARCHAR(255) 企业登陆名称password VARCHAR(255) 密码enterpriseName VARCHAR(255) 企业名称registNumber VARCHAR(255) 注册号hasDetial TINYINT 是否填写企业信息hasBankCard TINYINT 是否填写银行卡6.企业细节表enterprisedetialeid INT 企业 id(主键+

31、外键)establishDate VARCHAR(255) 成立日期registAuthorith VARCHAR(255) 登记机关businessScope VARCHAR(255) 经营范围phoneNumber VARCHAR(255) 企业电话7.企业银行卡表ebankcardid INT 银行卡 id(主键)eid INT 企业 id(外键)bankName VARCHAR(255) 银行名称cardNumber VARCHAR(255) 银行卡号money FLOAT 金额8.担保表gurantid INT 担保信息 id(主键)fid INT 农民 id(外键)eid INT

32、企业 id(外键)askDate VARCHAR(255) 申请日期gurantDate VARCHAR(255) 申请成功日期status INT 申请状态9.信息表messageid INT 信息 idtype INT 信息类型content VARCHAR(255) 信息内容fid INT 农民 ideid INT 企业 iddate VARCHAR(255) 发送日期hasRead TINYINT 是否阅读,1 已读10. 贷款表loanId INT 贷款 id(主键)fid INT 农民 id(外键)eid INT 企业 id(外键)fbid INT 农民存入的银行卡 id(外键)e

33、bid INT 企业存入的银行卡 id(外键)money FLOAT 贷款金额remoney FLOAT 应还金额loanDays INT 贷款期限loanSuccessDate VARCHAR(255) 成功贷款日期repaymentDate VARCHAR(255) 还款日期useOfLoan VARCHAR(255) 贷款用途status INT 状态11. 还款表repaymentId INT 还款 id(主键)fid INT 农民 id(外键)eid INT 企业 id(外键)fbid INT 农民存入的银行卡 id(外键)ebid INT 企业存入的银行卡 id(外键)lid IN

34、T 借款 id(外键)repaymentContent VARCHAR(255) 还款项目六、系统的实施系统的实现方法,应用程序的编制方法,重要代码的说明。(可以给出流程图)1.系统的实现方法Server 端使用 JDBC+Apache 的开源接口进行数据库操作,同时使用了传统的 Servlet+Service+Dao 设计,实现了事务管理,Servlet 层实现参数接收和信息发送接收,Service 实现业务逻辑的处理,Dao 层直接操纵数据库2.数据库的设计软件的设计采用面向对象的实现方式,所以数据库要遵循这一思想,先不编写数据库 SQL 脚本,先设计实体类(对应服务器代码的com.xiy

35、ou.ydb.model 层下的 Entity)3.Server 端对请求参数的处理关键代码如下:public class EncodingFilter implements Filter private String charset = “UTF-8“;Overridepublic void destroy() Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException HttpServ

36、letRequest req = (HttpServletRequest) request;if(req.getMethod().equalsIgnoreCase(“GET“) if(!(req instanceof GetRequest) req = new GetRequest(req, charset);/处理 get请求编码 else req.setCharacterEncoding(charset);/处理 post请求编码chain.doFilter(req, response);Overridepublic void init(FilterConfig fConfig) thro

37、ws ServletException String charset = fConfig.getInitParameter(“charset“);if(charset != null 使用一个过滤器,实现全站请求码转码,方便中文数据的发送和接受4.Server 端数据库连接方式为了提高 Server 的系统吞吐量,采用 C3P0 数据库连接池,C3P0 依赖的jar 包有 c3p0-0.9.2-pre1.jar 和 mchange-commons-0.2.jar,并且需要在classpath 下添加 c3p0 数据库的连接信息 c3p0-config.xml:com.mysql.jdbc.Dr

38、iverrootroot3102105.Android 网络请求实现方式:原则上手写,不使用 GitHub 上的开源项目,不使用别人的 jar 包。关键代码:Http 请求/* 用于 POST请求生成字符串的方法* * param url* (请求的地址)* param params* (POST请求参数)* return 请求结果*/public static String queryStringForPost(String url,Map rawParams) HttpPost request = new HttpPost(url);List params = null;if (rawPa

39、rams != null) params = new ArrayList();for (String key : rawParams.keySet() params.add(new BasicNameValuePair(key, rawParams.get(key);try if (params != null) request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8); catch (UnsupportedEncodingException e1) e1.printStackTrace();String result = n

40、ull;try HttpResponse response = new DefaultHttpClient().execute(request);if (response.getStatusLine().getStatusCode() = 200) System.out.println(“requese successful“);result = EntityUtils.toString(response.getEntity(), “utf-8“);System.out.println(“result-“ + result);return result; catch (ClientProtoc

41、olException e) e.printStackTrace();result = HttpUtils.NETWORK_ERROR;return result; catch (IOException e) e.printStackTrace();result = HttpUtils.NETWORK_ERROR;return result;return null;该方法返回的字符串即为 Server 返回的数据,可以是 JSON 数据,之后通过客户端对 JSON 数据进行解析,从而得到 View 上的数据6.Android 端的 MVC 设计方式:Model 即和服务器同步,使用实体类封装数

42、据库中的数据;View 层即使用 xml 文件完成静态布局,节省代码;Controller 即使用 Activity 控制 Android 程序的执行7.Android 实现的类似 WEB(B/S)的应用的 Cookie 保存在 Android 平台下,有一个特殊的类 android.app.Application,作用范围类似 WEB 应用的 ApplicationScope,使用它来保存应用程序的当前状态public class AppStatus extends Application public final static String TAG = “AppStatus“;privat

43、e Farmer farmer;private FarmerDetial farmerDetial;private FarmerIdentity farmerIdentity;private List fbankCards = new ArrayList();private EnterPrise enterPrise;private EnterPriseDetial enterPriseDetial;private List ebankCards = new ArrayList();public Farmer getFarmer() return farmer;public void setF

44、armer(Farmer farmer) this.farmer = farmer;public FarmerDetial getFarmerDetial() return farmerDetial;public void setFarmerDetial(FarmerDetial farmerDetial) this.farmerDetial = farmerDetial;public FarmerIdentity getFarmerIdentity() return farmerIdentity;public void setFarmerIdentity(FarmerIdentity far

45、merIdentity) this.farmerIdentity = farmerIdentity;public List getFbankCards() return fbankCards;public void setFbankCards(List fbankCards) this.fbankCards = fbankCards;public EnterPrise getEnterPrise() return enterPrise;public void setEnterPrise(EnterPrise enterPrise) this.enterPrise = enterPrise;pu

46、blic EnterPriseDetial getEnterPriseDetial() return enterPriseDetial;public void setEnterPriseDetial(EnterPriseDetial enterPriseDetial) this.enterPriseDetial = enterPriseDetial;public List getEbankCards() return ebankCards;public void setEbankCards(List ebankCards) this.ebankCards = ebankCards;public

47、 boolean isFarmerStatus() return isFarmerStatus;public void setFarmerStatus(boolean isFarmerStatus) this.isFarmerStatus = isFarmerStatus;private boolean isFarmerStatus ;/当前用户种类 true为农户.false 为企业Overridepublic void onCreate() super.onCreate();Log.i(TAG, “onCreate“);8.Android 端自定义 View 的实现:以 SearchVie

48、w 为例:这个自定义 View 继承自android.widget.RelativeLayout,实现他的三个构造函数 public SearchView(Context context)public SearchView(Context context,AttributeSet attrs)和 public SearchView(Context context,AttributeSet attrs,int defStyle),这样便能通过 xml 文件调用。之后需要实现 protected void onDraw(CanvasCanvas)方法,对整个 View 进行绘制;最后重写 publ

49、ic boolean onTouch(MotionEvent event)方法,对点击时间监听响应,即可完成点击后执行的动作。完整代码:public class SearchView extends RelativeLayout public static final String TAG = “SearchView“;private OnClickListener onClickListener;public OnClickListener getOnClickListener() return onClickListener;public void setOnClickListener(OnClickListener onClickListener) this.onClickListener = onClickListener;public SearchView(Co

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

当前位置:首页 > 高等教育 > 大学课件

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


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

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

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