收藏 分享(赏)

家庭物品管理系统(数据库课设).doc

上传人:dzzj200808 文档编号:4296482 上传时间:2018-12-21 格式:DOC 页数:28 大小:372.70KB
下载 相关 举报
家庭物品管理系统(数据库课设).doc_第1页
第1页 / 共28页
家庭物品管理系统(数据库课设).doc_第2页
第2页 / 共28页
家庭物品管理系统(数据库课设).doc_第3页
第3页 / 共28页
家庭物品管理系统(数据库课设).doc_第4页
第4页 / 共28页
家庭物品管理系统(数据库课设).doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、沈 阳 理 工 大 学 课 程 设 计 专 用 纸0摘 要随着现代生活的发展,我国经济迅速发展,人民生活水平越来越好,家家户户都买了各种家电和生活用品,家庭物品也就越来越丰富了。但是,我们的家庭总是有限的,对于这些家庭物品我们需要有一个系统的整理。通过对数据库的学习,学习了一些对数据的整理,对此,为家庭物品做了一个管理系统。用 Visual Basic 6.0 作为前端开发工具,利用其提供的集成开发环境及支持面向对象的各种标准化的控件,尤其是对 ADO 的支持完成对数据库的各种操作。使这个系统能够添加、修改、删除家庭各成员与物品的信息相关信息,当进入到系统时,可以直接通过查询用户名或购买日期来

2、浏览物品的信息,登陆到系统之后,就可以对房间和物品信息进行添加、修改删除了,从而完成对家庭物品的整理,使各家庭成员更加方便地了解自己家里的物品信息关键字: 家庭物品 整理 方便沈 阳 理 工 大 学 课 程 设 计 专 用 纸0目 录1 系统功能概述 32 数据库设计 31.1 需求分析 .31.2 关系模型 .31.3 E-R 模型 .41.4 表结构设计 53 系统各功能模块的详细设计 .73.1 主窗体 73.2 登录 93.3 查询 113.4 用户信息 133.5 物品信息 183.6 房间信息 254 参考文献 .28沈 阳 理 工 大 学 课 程 设 计 专 用 纸11 系统功能

3、概述为该家庭物品管理系统设计一个 MDI 窗体作为主界面,在菜单栏创建了四个菜单:文件、查询、添加、用户名。(1)文件中有两个子菜单:登录和退出。这两个子菜单分别控制登录用户和退出整个程序。(2)查询中有两个子菜单:按用户名查询和按日期查询。按用户名查询可以在用户输入某个用户名之后,显示该用户的物品情况;按日期查找可以在输入一个日期之后,显示该日期之后购买的所有物品。(3)添加中有三个子菜单:添加用户、添加房间、添加物品。点击添加用户,可以对用户信息进行增删改查;点击添加房间,可以对房间信息进行增删改查操作;点击添加物品,则可以对物品信息进行增删改查操作。(4)用户名按钮有一个子菜单:注销。用

4、来注销已经成功登录的用户,如没有登录用户,该子菜单显示无用户,成功登录之后即显示已登录用户的名称。2 数据库设计1.1 需求分析(1)根据家庭成员的身份,为每个成员分配有一个专门的账号。(2)此家庭物品系统管理能够添加、删除、修改、查询家庭成员的信息以及与房间、物品之间的联系。(3)在进入到家庭物品管理系统之后,不需要登陆就可以直接查询属于某个人的物品信息,也可以查询某个日期之后所购买的物品。(4)当用户成功登录时,菜单栏上能够显示该用户的名称,此时,用户才能对物品信息和家庭成员信息进行添加、修改、删除1.2 关系模型(1)家庭成员信息表Uuser:userName、password、sex、

5、age、birthday、status、profession、hobby、wage(2)物品信息表Item:itemDate、purchaseDate、price、usedTime、quantity、publicItem、roomNumber、category(3)房间表沈 阳 理 工 大 学 课 程 设 计 专 用 纸2Room: roomNumber、roomName(4)归属表Belong:itemName、userName、itemNumber1.3 E-R 模型整体 E-R 图m nn1图 2-1用户信息:图 2-2物品信息:ItemitemDatapurchaseDateusedT

6、ime quantitypublicItemroomNumberUusersexuserNameagepassword professionbirthdayhobbystatus wageUuserItemRoomBelongsave沈 阳 理 工 大 学 课 程 设 计 专 用 纸3图 2-3房间信息:图 2-4归属信息:图 2-51.4 表结构设计Uuser 表:create table Uuser (userName varchar(6) primary key,password char(6) not null ,sex char(2) check (sex in(男,女),age s

7、mallint check (age0 and age= “ & Text1.Text & “ “Adodc1.RecordSource = sqlstr3Adodc1.RefreshDataGrid1.Visible = True 显示所查询的结果End SubPrivate Sub Command2_Click()Unload Me 退回主窗体End SubPrivate Sub Form_Load()Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2End Sub(2)按日期查询窗口设计在用户输入一个用户名之后,在

8、datagrid 控件里就会显示此用户的所有物品信息。沈 阳 理 工 大 学 课 程 设 计 专 用 纸11图 3-4代码如下:Private Sub Command1_Click()Dim sqlstr2 As StringIf Text1.Text = “ ThenMsgBox “请输入查询用户名!“, vbDefaultButton1, “提示“Exit SubEnd Ifsqlstr2 = “Select * from byUser Where userName= “ & Text1.Text & “ “Adodc2.RecordSource = sqlstr2Adodc2.Refre

9、shDataGrid1.Visible = TrueEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2End Sub沈 阳 理 工 大 学 课 程 设 计 专 用 纸123.4 用户信息用户窗口设计从主界面进入用户信息界面后,可以在每个文本框里填写新用户的基本 信息,填写完成后,点击添加按钮,弹出添加成功,即成功添加。也可以在此界面里通过输入用户名查找每个家庭成员的基本信息,可

10、以点击上一个、下一个进行浏览。查找之后对结果也可以进行修改、删除操作。图 3-5代码如下:Private Sub Command1_Click()If Text1.Text = “ Or Text2.Text = “ ThenMsgBox “请输入完整的添加信息!“, vbCritical, “提醒“Else 将输入的信息写进数据库中Adodc1.Recordset.AddNewAdodc1.Recordset.Fields(“userName“) = Text1.TextAdodc1.Recordset.Fields(“password“) = Text2.TextIf Option1.Va

11、lue = True ThenAdodc1.Recordset.Fields(“sex“) = Label6.CaptionElseAdodc1.Recordset.Fields(“sex“) = Label7.CaptionEnd IfAdodc1.Recordset.Fields(“birthday“) = Text3.TextAdodc1.Recordset.Fields(“age“) = Text4.TextAdodc1.Recordset.Fields(“status“) = Text5.TextAdodc1.Recordset.Fields(“profession“) = Text

12、6.Text沈 阳 理 工 大 学 课 程 设 计 专 用 纸13Adodc1.Recordset.Fields(“hobby“) = Text7.TextAdodc1.Recordset.Fields(“wage“) = Text8.TextAdodc1.Recordset.UpdateAdodc1.RefreshMsgBox “添加用户成功! “, vbDefaultButton1, “提示“End IfEnd SubPrivate Sub Command2_Click()If Text1.Text = “ Or Text2.Text = “ ThenMsgBox “请输入完整的添加信息!

13、“, vbCritical, “提醒“ElseIf Not Text2.Text = Adodc1.Recordset.Fields(“password“) ThenMsgBox “密码不正确!您无权修改!“, vbCritical, “错误“ElseIf Option1.Value = True Then Adodc1.Recordset.Fields(“sex“) = Label6.CaptionElseAdodc1.Recordset.Fields(“sex“) = Label7.CaptionEnd IfAdodc1.Recordset.Fields(“birthday“) = Tex

14、t3.TextAdodc1.Recordset.Fields(“age“) = Text4.TextAdodc1.Recordset.Fields(“status“) = Text5.TextAdodc1.Recordset.Fields(“profession“) = Text6.TextAdodc1.Recordset.Fields(“hobby“) = Text7.TextIf Not Text8.Text = “ ThenAdodc1.Recordset.Fields(“wage“) = Text8.TextEnd IfAdodc1.Recordset.Update 更新后台数据库Ad

15、odc1.RefreshMsgBox “修改成功! “, vbDefaultButton1, “提醒“End IfEnd IfEnd SubPrivate Sub Command3_Click()If Text1.Text = “ Or Text2.Text = “ ThenMsgBox “请输入完整的添加信息!“, vbCritical, “提醒“Else 判断是否有删除的权限If Not Text2.Text = Adodc1.Recordset.Fields(“password“) ThenMsgBox “密码不正确!您无权删除此用户!“, vbCritical, “ 错误“ElseAd

16、odc1.Recordset.DeleteAdodc1.Recordset.Update沈 阳 理 工 大 学 课 程 设 计 专 用 纸14Adodc1.RefreshText1.Text = “Text2.Text = “Option1.Value = FalseOption2.Value = FalseText3.Text = “Text4.Text = “Text5.Text = “Text6.Text = “Text7.Text = “Text8.Text = “MsgBox “用户删除成功! “, vbDefaultButton1, “提醒“End IfEnd IfEnd SubP

17、rivate Sub Command4_Click()Unload MeEnd SubPrivate Sub Command5_Click()Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF Then 判断记录指针的位置Adodc1.Recordset.MoveLastCommand5.Enabled = FalseCommand6.Enabled = TrueMsgBox “已经是最后一个用户了!“, vbDefaultButton1, “提示“Exit SubEnd IfText1.Text = Adodc1.Recordset.Fields

18、(“userName“)Text2.Text = Adodc1.Recordset.Fields(“password“)If Adodc1.Recordset.Fields(“sex“) = “男“ ThenOption1.Value = TrueElseOption2.Value = TrueEnd IfText3.Text = Adodc1.Recordset.Fields(“birthday“)Text4.Text = Adodc1.Recordset.Fields(“age“)Text5.Text = Adodc1.Recordset.Fields(“status“)Text6.Tex

19、t = Adodc1.Recordset.Fields(“profession“)Text7.Text = Adodc1.Recordset.Fields(“hobby“)Text8.Text = Adodc1.Recordset.Fields(“wage“)End Sub沈 阳 理 工 大 学 课 程 设 计 专 用 纸15Private Sub Command6_Click()Adodc1.Recordset.MovePrevious 将记录指针向上移If Adodc1.Recordset.BOF ThenAdodc1.Recordset.MoveFirstCommand6.Enabled

20、 = FalseCommand5.Enabled = TrueMsgBox “已经是第一个用户了!“, vbDefaultButton1, “提示“Exit SubEnd IfText1.Text = Adodc1.Recordset.Fields(“userName“)Text2.Text = Adodc1.Recordset.Fields(“password“)If Adodc1.Recordset.Fields(“sex“) = “男“ ThenOption1.Value = TrueElseOption2.Value = TrueEnd IfText3.Text = Adodc1.Re

21、cordset.Fields(“birthday“)Text4.Text = Adodc1.Recordset.Fields(“age“)Text5.Text = Adodc1.Recordset.Fields(“status“)Text6.Text = Adodc1.Recordset.Fields(“profession“)Text7.Text = Adodc1.Recordset.Fields(“hobby“)Text8.Text = Adodc1.Recordset.Fields(“wage“)If Adodc1.Recordset.EOF ThenCommand5.Enabled =

22、 FalseEnd IfEnd SubPrivate Sub Command7_Click()Command5.Enabled = TrueCommand6.Enabled = TrueDim sql As Stringsql = “select * from Uuser“If Text1.Text = “ Or Text2.Text = “ ThenMsgBox “请输入用户名和密码!“, vbCritical, “提醒“Exit SubEnd IfAdodc1.RecordSource = sqlAdodc1.RefreshIf Adodc1.Recordset.BOF ThenMsgBo

23、x “无此用户 ,请重新输入“, vbExclamation, “警告“Text1.Text = “Text1.SetFocusExit SubElse 判断密码是否正确沈 阳 理 工 大 学 课 程 设 计 专 用 纸16If Not Adodc1.Recordset.Fields(“password“) = Text2.Text ThenMsgBox “密码错误,重新输入 “, vbExclamation, “警告 “Text2.Text = “Text2.SetFocusExit SubElseIf Adodc1.Recordset.Fields(“sex“) = “男“ ThenOpt

24、ion1.Value = TrueElseOption2.Value = TrueEnd IfText3.Text = Adodc1.Recordset.Fields(“birthday“)Text4.Text = Adodc1.Recordset.Fields(“age“)Text5.Text = Adodc1.Recordset.Fields(“status“)Text6.Text = Adodc1.Recordset.Fields(“profession“)Text7.Text = Adodc1.Recordset.Fields(“hobby“)Text8.Text = Adodc1.R

25、ecordset.Fields(“wage“)End IfEnd IfEnd SubPrivate Sub Form_Load()Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2Command5.Enabled = FalseCommand6.Enabled = FalseEnd Sub3.5 物品信息物品窗口设计进入物品信息窗口之后,可以在文本框中输入要添加的物品信息,然后点击添加按钮,弹出添加成功的对话框,即添加物品信息成功!也可以通过输入物品名称、购买日期、是否是公用品、所有者来精确查找某条或某类物品信息。上一个、

26、下一个可以浏览物品信息。修改完信息之后,也可以点击修改按钮来修改此物品信息。点击删除按钮即可直接删除此物品信息。退出即可直接返回主界面。沈 阳 理 工 大 学 课 程 设 计 专 用 纸17图 3-6代码如下:Private Function setNull() 构造一个置空的函数Text1.Text = “Text2.Text = “Text3.Text = “Text4.Text = “Text5.Text = “Text6.Text = “Text7.Text = “Text8.Text = “Combo1.Text = “End FunctionPrivate Sub Combo1_L

27、ostFocus()If Combo1.Text = “是“ ThenLabel9.Visible = FalseText8.Visible = FalseEnd IfIf Combo1.Text = “否“ ThenLabel9.Visible = TrueText8.Visible = TrueEnd IfEnd SubPrivate Sub Command1_Click()If Text1.Text = “ Or Combo1.Text = “ Then沈 阳 理 工 大 学 课 程 设 计 专 用 纸18MsgBox “请输入添加信息! “, vbCritical, “错误“Exit

28、SubEnd IfIf Combo1.Text = “是“ ThenAdodc1.Recordset.AddNew 添加物品信息Adodc1.Recordset.Fields(“itemName“) = Text1.TextAdodc1.Recordset.Fields(“purchaseDate“) = Text2.TextAdodc1.Recordset.Fields(“price“) = Text3.TextAdodc1.Recordset.Fields(“usedTime“) = Text4.TextAdodc1.Recordset.Fields(“quantity“) = Text5

29、.TextAdodc1.Recordset.Fields(“category“) = Text6.TextAdodc1.Recordset.Fields(“roomnumber“) = Text7.TextAdodc1.Recordset.Fields(“publicItem“) = Combo1.TextAdodc1.Recordset.UpdateAdodc1.RefreshsetNullMsgBox “添加成功! “, vbDefaultButton1, “提示“Exit SubEnd IfIf Combo1.Text = “否“ ThenDim sqls As Stringsqls =

30、 “select * from Item“Adodc1.RecordSource = sqlsAdodc1.Recordset.AddNewAdodc1.Recordset.Fields(“itemName“) = Text1.TextAdodc1.Recordset.Fields(“purchaseDate“) = Text2.TextAdodc1.Recordset.Fields(“price“) = Text3.TextAdodc1.Recordset.Fields(“usedTime“) = Text4.TextAdodc1.Recordset.Fields(“quantity“) =

31、 Text5.TextAdodc1.Recordset.Fields(“category“) = Text6.TextAdodc1.Recordset.Fields(“roomnumber“) = Text7.TextAdodc1.Recordset.Fields(“publicItem“) = Combo1.TextAdodc1.Recordset.UpdateAdodc1.RefreshDim sql As Stringsql7 = “select * from Belong“Adodc1.RecordSource = sql7Adodc1.Recordset.AddNewAdodc1.R

32、ecordset.Fields(“itemName“) = Text1.TextAdodc1.Recordset.Fields(“userName“) = Text8.TextAdodc1.Recordset.Fields(“itemNumber“) = Text5.TextAdodc1.Recordset.UpdateAdodc1.Refresh沈 阳 理 工 大 学 课 程 设 计 专 用 纸19setNullMsgBox “添加成功! “, vbDefaultButton1, “提示“Exit SubEnd IfEnd SubPrivate Sub Command2_Click()If

33、Combo1.Text = “是“ ThenAdodc1.Recordset.Fields(“itemName“) = Text1.TextAdodc1.Recordset.Fields(“purchaseDate“) = Text2.TextAdodc1.Recordset.Fields(“price“) = Text3.TextAdodc1.Recordset.Fields(“usedTime“) = Text4.TextAdodc1.Recordset.Fields(“quantity“) = Text5.TextAdodc1.Recordset.Fields(“category“) =

34、 Text6.TextAdodc1.Recordset.Fields(“roomnumber“) = Text7.TextAdodc1.Recordset.Fields(“publicItem“) = Combo1.TextAdodc1.Recordset.UpdateAdodc1.RefreshsetNull 调用置空函数MsgBox “修改成功! “, vbDefaultButton1, “提示“Exit SubEnd IfEnd SubPrivate Sub Command3_Click()Adodc1.Recordset.Delete 删除物品信息Adodc1.Recordset.Up

35、dateAdodc1.RefreshMsgBox “删除成功! “, vbDefaultButton1, “提示“End SubPrivate Sub Command4_Click()Unload MeEnd SubPrivate Sub Command5_Click()Command6.Enabled = TrueCommand7.Enabled = TrueIf Not Text1.Text = “ ThenDim sql1 As Stringsql1 = “Select * From item Where itemName= “ & Text1.Text & “ “Adodc1.Reco

36、rdSource = sql1Adodc1.RefreshText2.Text = Adodc1.Recordset.Fields(“purchaseDate“)沈 阳 理 工 大 学 课 程 设 计 专 用 纸20Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Recordset.Fields(“usedTime“)Text5.Text = Adodc1.Recordset.Fields(“quantity“)Text6.Text = Adodc1.Recordset.Fields(“category“)Tex

37、t7.Text = Adodc1.Recordset.Fields(“roomnumber“)Combo1.Text = Adodc1.Recordset.Fields(“publicItem“)If Combo1.Text = “否“ ThenText8.Text = Adodc1.Recordset.Fields(“userName“)End IfExit SubEnd IfIf Not Text2.Text = “ ThenDim sql2 As Stringsql2 = “Select * From items Where purchaseDate= “ & Text2.Text &

38、“ “Adodc1.RecordSource = sql2Adodc1.RefreshText1.Text = Adodc1.Recordset.Fields(“itemName“)Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Recordset.Fields(“usedTime“)Text5.Text = Adodc1.Recordset.Fields(“quantity“)Text6.Text = Adodc1.Recordset.Fields(“category“)Text7.Text = Adodc1.

39、Recordset.Fields(“roomnumber“)Combo1.Text = Adodc1.Recordset.Fields(“publicItem“)If Combo1.Text = “否“ ThenText8.Text = Adodc1.Recordset.Fields(“userName“)End IfExit SubEnd IfIf Not Text6.Text = “ ThenDim sql3 As Stringsql3 = “Select * From items Where category= “ & Text6.Text & “ “Adodc1.RecordSourc

40、e = sql3Adodc1.RefreshText1.Text = Adodc1.Recordset.Fields(“itemName“)Text2.Text = Adodc1.Recordset.Fields(“purchaseDate“)Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Recordset.Fields(“usedTime“)Text5.Text = Adodc1.Recordset.Fields(“quantity“)Text7.Text = Adodc1.Recordset.Fields(

41、“roomnumber“)Combo1.Text = Adodc1.Recordset.Fields(“publicItem“)If Combo1.Text = “否“ ThenText8.Text = Adodc1.Recordset.Fields(“userName“)End IfExit Sub沈 阳 理 工 大 学 课 程 设 计 专 用 纸21End IfIf Not Text8.Text = “ ThenDim sql4 As Stringsql4 = “Select * From items Where userName= “ & Text8.Text & “ “Adodc1.R

42、ecordSource = sql4Adodc1.RefreshText1.Text = Adodc1.Recordset.Fields(“itemName“)Text2.Text = Adodc1.Recordset.Fields(“purchaseDate“)Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Recordset.Fields(“usedTime“)Text5.Text = Adodc1.Recordset.Fields(“quantity“)Text6.Text = Adodc1.Records

43、et.Fields(“category“)Text7.Text = Adodc1.Recordset.Fields(“roomnumber“)Combo1.Text = Adodc1.Recordset.Fields(“publicItem“)If Combo1.Text = “否“ ThenText8.Text = Adodc1.Recordset.Fields(“userName“)End IfExit SubEnd IfIf Combo1.Text = “是“ ThenDim sql5 As Stringsql5 = “Select * From Item Where publicIte

44、m = “ & Combo1.Text & “ “Adodc1.RecordSource = sql5Adodc1.RefreshText1.Text = Adodc1.Recordset.Fields(“itemName“)Text2.Text = Adodc1.Recordset.Fields(“purchaseDate“)Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Recordset.Fields(“usedTime“)Text5.Text = Adodc1.Recordset.Fields(“quan

45、tity“)Text6.Text = Adodc1.Recordset.Fields(“category“)Text7.Text = Adodc1.Recordset.Fields(“roomnumber“)Exit SubEnd IfIf Combo1.Text = “否“ ThenDim sql6 As Stringsql6 = “Select * From items Where publicItem = “ & Combo1.Text & “ “Adodc1.RecordSource = sql6Adodc1.RefreshText1.Text = Adodc1.Recordset.F

46、ields(“itemName“)Text2.Text = Adodc1.Recordset.Fields(“purchaseDate“)Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Recordset.Fields(“usedTime“)Text5.Text = Adodc1.Recordset.Fields(“quantity“)Text6.Text = Adodc1.Recordset.Fields(“category“)沈 阳 理 工 大 学 课 程 设 计 专 用 纸22Text7.Text = Ad

47、odc1.Recordset.Fields(“roomnumber“)Text8.Text = Adodc1.Recordset.Fields(“userName“)Exit SubEnd IfEnd SubPrivate Sub Command6_Click()Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveLastMsgBox “已经是最后一条了!“, vbDefaultButton1, “提示“Command6.Enabled = FalseCommand7.Enabled = TrueE

48、xit SubEnd IfText1.Text = Adodc1.Recordset.Fields(“itemName“)Text2.Text = Adodc1.Recordset.Fields(“purchaseDate“)Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Recordset.Fields(“usedTime“)Text5.Text = Adodc1.Recordset.Fields(“quantity“)Text6.Text = Adodc1.Recordset.Fields(“category

49、“)Text7.Text = Adodc1.Recordset.Fields(“roomnumber“)If Combo1.Text = “否“ ThenText8.Text = Adodc1.Recordset.Fields(“userName“)End IfEnd SubPrivate Sub Command7_Click()Adodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF ThenAdodc1.Recordset.MoveLastMsgBox “已经是第一条了!“, vbDefaultButton1, “提示“Command7.Enabled = FalseCommand6.Enabled = TrueExit SubEnd IfText1.Text = Adodc1.Recordset.Fields(“itemName“)Text2.Text = Adodc1.Recordset.Fields(“purchaseDate“)Text3.Text = Adodc1.Recordset.Fields(“price“)Text4.Text = Adodc1.Rec

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

当前位置:首页 > 网络科技 > 数据库

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


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

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

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