欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业论文基于VB的扫雷游戏设计与实现33628.doc

    • 资源ID:2389453       资源大小:512.50KB        全文页数:37页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业论文基于VB的扫雷游戏设计与实现33628.doc

    编号 南京航空航天大学毕业论文题 目基于VB的扫雷游戏设计与实现学生姓名学 号学 院专 业班 级指导教师基于VB的扫雷游戏设计与实现摘要当前,随着计算机应用及网络的的深入普及,越来越多的政府部门、厂矿企业、学校等单位及个人都拥有了自己的计算机,计算机不仅在工作方面给人们以很大的帮助,还给人们带来了多种的娱乐享受.,操作系统自带的游戏也起到了很大的娱乐作用,而且它的开发成本小,所以小游戏的开发在这种形势下就应运而生,它的开发主要采用VC+ ,VB 等编程语言. 本设计采用VB编写,VB一直以来被认为有以下优缺点:优点是上手快、开发效率高;缺点是能力有限,运行效率低.这正是有些软件把VB做为首选语言,而有些软件肯定不会用VB做的原因.而很多VC,DELPHI的程序员都认为VB里搞开发不自由.的确,简单和功能强大这两者本身就是一对矛盾. 扫雷游戏是操作系统中的一个主要的益智类游戏. 用户对鼠标进行操作,单击鼠标左键为踩雷,单击鼠标左键在标记,疑问,空白三种状态中循环,同时单击鼠标左右键为踩单击点在内的周围九格内所有没有标记为已标记的所有格子.同时程序从你单击第一次时开始计时,到胜利或引爆地雷终结.结束后单击开始按钮重新开始游戏.这款游戏实现了开发人类大脑思维的目的.关键词 VB,扫雷游戏 Realizes a simple game with VBAbstractFront, is applied along with the calculator and network of of the thorough universality, more and more governments section, factory mineral business enterprise, school.etc. unit and individual all owned own calculator, the calculator is not only to give people in the aspects of working with the very big help, returning to people brought various amusements enjoys., the operate system also rose from the game that take very big amusement function, and it of the cost of development is small, so the development of the get-away drama under this kind of situation emerge with the tide of the times, it of main adoption in development VC+, VB etc. plait distance language. This design adoption VB plait writes, the VB hases been passing for to have since then below merit and shortcoming:The advantage is to undertakes quick, development the efficiency is high;The weakness is an ability limited, circulate the efficiency low.This exactly some softwares is used as a reason for choose the language, but some softwares is affirmative and do with the VB of VBs.And a lot of VCs, the DELPHI procedure member thinks the VB in make the development not free. Really, it is simple to is strong and big with the function this both oneself is an one rightness antinomy.The mine clearance game is an operate system inside of a grows in wisdom a game primarily. The customer proceeds the operation to the rat mark, the left key in mark in rat in single shot is for trampling the thunder, the single shot rat marks the left key in marking, question, blank three kinds of appearances circulating, the single shot rat marks or so key as to trample at the same time the single shot orders the surroundings in inside nine the marking had in spaceses are already all blanks of the marking.At the same time procedure is from you single shot first time hour starts accounting, arrive victory or set off the land mine end.Ending the single shot in empress starts pressing button restarting the game.This game realizes the purpose of the human brain in development thought.Key words:VB,The mine clearance game目 录1引言12 Visual Basic概况22.1 VB简介22.2 本设计运用的技术23可行性分析64总体设计74.1设计构想74.2流程规划75详细设计95.1画面规划95.2 设计过程105.2.1 添加菜单105.2.2 自定义窗体设计105.2.3 关于窗体设计115.3 运行界面126系统测试13结束语14参考文献16附录17 1引言本论文研究的是以Visual Basic 6.0为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为重要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化扫雷游戏是WINDOWS系统自带的一个娱乐性的小游戏,在玩扫雷游戏的过程中也可以很好的培养耐心和细心,同时在无聊得时候可以用以休闲娱乐,如果我们自己也能动手做一个小程序来实现这个功能,自然能乐在其中。本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待完善2 Visual Basic概况2.1 VB简介VISUAL BASIC是微软公司出品的一个快速可视化程序开发工具软件。借助微软在操作系统和办公自动化软件的垄断地位,VB在短短的几年内风靡全球。VB是极具特色和功能强大的软件,主要表现:所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的代码。同时众多的ACTIVE控件,提高了软件的使用效率。可以用于可以开发多媒体、数据库、网络、图形等方面的应用程序。 VB应用程序语言的基本特点1: 1 可视化界面设计 VB为用户提供大量的界面元素(在VB中称为控件对象),这些控件对象对于熟悉WINDOWS应用程序的用户来说是一点也不陌生,如“窗体”,“菜单”,“命令按扭”,“工具按扭”,“检查框”等等,用户只要利用鼠标、键盘把这些控件对象拖动到合适的位置,设置其大小、形状、属性等,就可以设计出所需的应用程序界面。 2 事件驱动编程 在使用VB设计应用程序是,必须首先确定应用程序如何同用户进行交互。例如发生鼠标单击、键盘输入等事件是,由用户编写代码控制这些事件的响应,这就是所谓的事件驱动编程。3 与数据库的连接性 VISUAL BASIC提供了与底层数据库系统紧密的连接。 VISUAL BASIC支持不同的关系数据库管理系统并充分发挥每一个数据库的特长。开发人员和利用内置的高性能数据库引擎JET生成独立应用或脱离服务器运行的服务以上的应用。 2.2 本设计运用的技术这个游戏里运用了VB里的组件及语法作为游戏运算和显示,其相关语法及组件如下表1所示:表1 使用的语法及组件组件及语法说明For.Next利用循环布置地雷区、按下时检查非地雷方块Load(Unload)动态加载或删除指令产生表示地雷方块图案的Image组件Mousedown与Mouseup事件判断按下或放开方块时的按键为左键或右键Imagelist组件存储游戏过程中所需的图案Image组件利用此显示地雷方块Timer组件设定触发时间,来控制方块游戏时间PictureBox组件利用此组件作为地雷方块的布置区域递归利用递归展开非地雷的方块 详细说明如下:1. For.Next循环应用在游戏设计上,利用了两个二维数组分别记录地雷的分布状况及地雷区及表面探测情形。利用数据循环的对比,不但速度快,而且在设计阶段,程序的架构比较清楚。2.Load及Unload动态增加或删除组件利用Load及Unload指令,可动态新增及删除组件。在游戏的雷区,依照使用者自定义的地图类型,布置未探测的地雷方块。加载组件后,通过Image组件的Move属性,将组件布置于预定的位置。Move函数的原型如下:组件. Move X坐标,Y坐标,组件宽度组件高度 再配合双循环的变量值,可以控制组件布置于窗体的方向及方式。3.MouseDown与MouseUp事件在游戏过程中,利用鼠标所发出的信息了解使用者的意图,进而做出相应的动作。在MouseDown与MouseUp事件中,可以捕捉鼠标所按下或放开的按键为何、鼠标光标在该组件上的坐标及是否同时按下辅助键等。用Button参数值表示鼠标上的按钮数值。其意义如下:1:左键2:右键4:中央键若同时按下不止一个按键时,则传回数值为按键数相加。例如同时按下左键及右键,则Button值为1+2=3.在本游戏中,利用右键的MouseDown事件标示“已标示”方块,利用左键的MouseDown事件,标示使用者准备按下的方块,利用左键的MouseUp事件确定翻开的方块。4. ImageList组件利用Imagelist可以存储显示方块的图形2。将组件布置于窗体上后编辑组件属性,通过【插入图片】按钮和【删除图片】按钮即可编辑组件内所存放的图片。如图1所示。因为一个Imagelist组件内必须存储大小相同的图片,所在这款游戏设计中,显示的图片共分为三个部分:游戏状态图形、数字计数图形和地雷区标示图形。图1 ImageList组件属性利用ListImage集合对象的Picture方法,即可将ListImage组件内的图片指定给图形显示组件,语法如下:Set 图形组件. Picture=Imagelist. ListImage(图片索引). Picture5.Image组件利用Image组件作为游戏执行阶段所有图形的显示。在游戏画面中,计数数字、游戏状态表情及地雷区方块图形等,都利用Image组件作为显示组件,再搭配ImageList组件所存储的图形,便可在执行阶段在同一个Image组件上变换不同的图片。6.Timer组件在游戏中,地雷引爆的可能有2中,第一种为使用者翻开(踩到)地雷方块,第二种为设定时间内未探测完所有地雷而引爆。其中第二种的行为,可以通过Timer组件来加以控制。利用Timer组件在固定时间即会触发事件的特性,在事件触发时便将计数值加1,直到判断计数值超过限定值时,即引爆地雷。7. PictureBox组件PictureBox为容器类型的组件,可以加入其它组件在内3。在游戏中利用了PictureBox的两个特性:容器特性和立体框架。分述如下:容器特性:只要容器本身显示的行为改变,在容器内的组件也会跟着改变。当游戏初始时,地雷区的显示组件会循环执行,逐一布置在画面上,但由于执行循环时多个Image组件要显示图形,造成分时系统执行频率显示上会出现不流畅的情形,若在循环之前,先将容器本身的Visible属性设为False,在循环执行完成后再将Visible属性设为True,则显示就会变得流畅许多。立体框架:通过组件本身立体框线的属性设定,可以为游戏画面的显示上营造出层次感。8.递归递归就是一个程序能被自己所定义的语句调用。在游戏过程中,当使用者按下非地雷方块时,方块会沿四周八个方向向外翻开非地雷的方块。程序执行时必须判断:以按下方块为中心。检查周围八个方块是否为非地雷方块,若其中一个方块是非地雷方块时,则又以其为中心,向外检查周围八个方块是否为非地雷方块,如此反复的行为即构成了递归的使用条件。当判断方块内容为数字时(即在非地雷方块周围),即停止递归执行。3可行性分析可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也就是说可行性研究的目的不是解决问题,而是确定问题是否值得去解,研究在当前的具体条件下,是否具备必要的资源和其它条件。一般说来,应从经济可行性、技术可行性、运行可行性、和开发方案可行性等方面研究可行性。可行性分析:1. 对于当前条件下,完全可以达到该系统功能目标;2. 该系统功能在现有技术下,完全可以实现;3 目标: 实现游戏的各类功能,如:初、中、高(自定义)各个游戏等级.4 用户的特点;都是对扫雷游戏的喜好者.4总体设计4.1设计构想本游戏的功能类似于Windows操作系统自带扫雷游戏,设计之前,先了解这款游戏的规则。在不掀开任何的情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(死亡),惟有将所有不含地雷的方块掀开,游戏才算成功(存活)。游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑似地雷,反复按下右键则方块会依未标示标示疑似三者关系不断循环。使用者可以通过地雷区内的数表示以其为中心的周边八个方块内所含的地雷数。当按下的方块不是地雷,且周边也没有地雷时,方块会以被翻开的八个方向将空白方块翻开。4.2流程规划流程规划分为三个部分,分别为:画面初始、使用者按下第一个方块和为非地雷方块时展开。画面初始时,以使用者最后一次设定的地雷区大小为范围画出地雷区,但此时并未产生地雷。当使用者按下第一个方块时产生地雷并启动定时器,主要为了不让使用者第一次就踩到地雷,这样在某种程度上提高了游玩的气氛。接着就是如何判断按下的方块为非地雷时的处理,这也是整个游戏的技术核心,可以通过递归的观念来检查周边是否含有地雷及是否继续往外翻开。流程规划如图2所示:开始依照使用者设定初始等待按键右键?第一次按下方块?显示方块1.布置地图2.启动定时器按下方块是否为地图左键?显示分数是否再玩结束计时器时间到?延按下方块周围展开非地雷方块是是是否否否否否是否 图2 流程规划图5详细设计5.1画面规划画面规划如图3所示:17786121011130516015014049321图3 画面规划图说明如下:游戏窗口(Form)。为了避免因改变窗口大小而造成画面呈现不美观,将BorderStyle属性值设定为3(双线固定对话框),即无法以窗口边缘进行窗口大小调整。:计数区(PictureBox)。:地雷数显示区(PictureBox)。:游戏时间显示区(PictureBox)。:地雷区(PictureBox)。:地雷数(Image)。:游戏状态(Image)。:经过秒数(Image)。:地雷区图样(Image)。:游戏状态图片(ImageList)。:地雷区图片(ImageList)。:地雷数及秒数数字图片(ImageList)。:秒数控制(Timer)。5.2 设计过程5.2.1 添加菜单使用菜单编辑器编辑游戏的主菜单,点击“工具”菜单上的“菜单编辑器”命令选项,即可打开菜单编辑器。菜单控件在列表框中的位置决定了该控件是菜单标题、菜单项、子菜单标题,还是子菜单项。对于一些常用的菜单命令,可以设置“Alt+快捷键”组合来快速打开菜单。方法是在菜单编辑器中的Caption后面添加“(R)”就可以了。图4 菜单编辑器5.2.2 自定义窗体设计打开主菜单游戏自定义,可以显示窗体,如图5所示。通过这个窗体使用者可以自己设定行数、列数和地雷数。图5 自定义窗体'设置参数Private Sub Command1_Click() If tHeight.Text > 50 Or tHeight.Text < 0 Then tHeight.Text = 24 End If If tWidth.Text > 50 Or tWidth.Text < 0 Then tWidth.Text = 30 End If If tMines.Text > (tHeight.Text * tWidth.Text) Or tMines.Text < 0 Then tMines.Text = (tHeight.Text - 1) * (tWidth.Text - 1) End If SaveSetting "Mine", "SET", "1", tWidth.Text SaveSetting "Mine", "SET", "2", tHeight.Text SaveSetting "Mine", "SET", "3", tMines.Text Unload MeEnd Sub5.2.3 关于窗体设计打开主菜单帮助关于扫雷,可以显示如图6所示。帮助使用者了解相关信息。Private Sub about_Click()aboutfrm.ShowEnd Sub5.3 运行界面执行窗体时的界面如图6所示:图6 窗体运行界面'窗体加载Private Sub Form_Load() Randomize '初始化随机数产生器 '加载为地雷区方块图片 Set iMine(0).Picture = ilMap.ListImages(9).Picture '参数初始设定 Call setInit(GetSetting("Mine", "Level", "1", "0") '计数区配置 Call setCounterInit '地雷区配置 Call setMapInit '设定窗体大小 Call setFormSizeEnd Sub6系统测试扫雷游戏是WINDOWS系统自带的一个娱乐性的小游戏,为了确保本游戏能够正常运行,需要在发布之后做一次较全面的测试。扫雷游戏的目标是尽快找到雷区中的所有地雷,而不许踩到地雷。如果挖开的是地雷,您将输掉游戏。扫雷游戏在程序运行后生成指定的地雷,在鼠标左键点击下寻找地雷,右键点击下标记地雷,点击笑脸的标记开始重新游戏,并给出胜利和失败的条件:标出所有的地雷和左键点中地雷。在游戏菜单上,单击开局。单击游戏区中的任何方块,要启动计时器。通过单击即可挖开方块。如果挖开的是地雷,则您输掉游戏。如果方块上出现数字,则表示在其周围的八个方块中共有多少颗地雷。要标记您认为可能有地雷的方块,请右键单击它。游戏区包括雷区、地雷计数器和计时器。经过一些简单的步骤的测试,证明本游戏具有相当的稳定性。结束语经过一个星期的设计和开发,以Visual Basic6.0为开发工具,扫雷小游戏基本开发完毕,基本功能能够实现。但是由于设计时间较短,所以该游戏还有许多不尽如人意的地方,有待进一步改善。在游戏的设计过程中,学习了很多知识包括设计思想和对所学语言的应用,加深了对Visual Basic6.0 的理解,还使我对各个控件有了更好的掌握。能把所学的运用到实践中,提高了独立思考和动手能力。同时深深地体会到进行软件开发不是一件简单的事情,它需要设计者具有全面的专业知识、缜密的思维、严谨的工作态度以及较高的分析问题解决问题的能力,而我在很多方面还有欠缺。今后还要努力学习这方面的专业知识,虚心请教他人的工作经验,来提高自身的分析问题、解决问题的能力。参考文献1 柴欣,武优西Visual Basic程序设计基础中国铁道出版社,2005,8(3):73-792 刘瑞新,汪远佂Visual Basic程序设计教程机械工业出版社,2002,5:209-2233 谭浩强Visual Basic程序设计案例教程清华大学出版社,2008,2(2):32-374 管丽娜 ,白海波.实用Visual Basic6 教程 .北京:清华大学出版社,20015 段兴. Visual Basic数据库实用程序设计100例. 人民邮电出版社,20026 王运坚. VISUAL BASIC 6.0 应用指南. 北京: 人民邮电出版社, 1998致谢经过一周的努力,我做的扫雷游戏终于完成。在课设的过程中遇到了很多问题,在老师的指导下和同学的帮助下,把这些问题一一解决了,按时的顺利的完成了任务。由于学识疏浅,文中难免有失当之处,敬请老师不吝赐教,以使本文能够更加完善!在此,对老师和同学表示衷心的感谢!附录附上本程序完整代码:Dim MAP_X As Integer '地图的X轴长Dim MAP_Y As Integer '地图的Y轴长Dim MINE_NUM As Integer '地雷数Dim MINE_NUM_LABEL As Integer '地雷标记数Dim MINE_NUM_CLEAR As Integer '方块清除数Dim TIME_COUNTER As Integer '时间计数Dim isStart As Boolean '游戏是否已进行Dim isDie As Boolean '游戏是否呈结束状态Dim isFinal As Boolean '游戏是否完成Dim mapArr() As Integer '地雷区地雷分布情形Dim mapFaceArr() As Integer '地雷区方块探测情形'窗体加载Private Sub Form_Load() Randomize '初始化随机数产生器 '加载为地雷区方块图片 Set iMine(0).Picture = ilMap.ListImages(9).Picture '参数初始设定 Call setInit(GetSetting("Mine", "Level", "1", "0") '计数区配置 Call setCounterInit '地雷区配置 Call setMapInit '设定窗体大小 Call setFormSizeEnd Sub'地雷区方块按下事件Private Sub iMine_MouseDown(index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single) Dim xxx As Integer '换算组件所代表的坐标值 Dim yyy As Integer If isFinal = False And isDie = False Then xxx = index Mod MAP_X '标示动作图片的坐标 yyy = index MAP_X If Button = 1 Then '鼠标左键 If mapFaceArr(xxx, yyy) = 1 Then Call setMineImage(index, 10) Set iState.Picture = ilSmile.ListImages(3).Picture End If ElseIf Button = 2 Then '鼠标右键 If mapFaceArr(xxx, yyy) = 1 Then '未探测 mapFaceArr(xxx, yyy) = 2 MINE_NUM_LABEL = MINE_NUM_LABEL + 1 Call setMineImage(index, 13) Call setNowMines ElseIf mapFaceArr(xxx, yyy) = 2 Then '标示 mapFaceArr(xxx, yyy) = 3 MINE_NUM_LABEL = MINE_NUM_LABEL - 1 Call setMineImage(index, 14) Call setNowMines ElseIf mapFaceArr(xxx, yyy) = 3 Then '疑似 mapFaceArr(xxx, yyy) = 1 Call setMineImage(index, 9) End If End If End IfEnd Sub'地雷区方块松开事件Private Sub iMine_MouseUp(index As Integer, _Button As Integer, _Shift As Integer, _x As Single, _y As Single) Dim xxx As Integer '换算组件所代表的坐标值 Dim yyy As Integer Dim rX As Integer '随机数产生坐标值 Dim rY As Integer Dim cMINE_NUM As Integer '地雷数暂存值 '判断地雷区是否处于可动作状态 If isDie = False And isFinal = False Then xxx = index Mod MAP_X '标示动作图片的坐标 yyy = index MAP_X '判断为左键且该方块为未探测状态 If Button = 1 And mapFaceArr(xxx, yyy) = 1 Then '判断游戏是否等待启动 If isStart = False Then cMINE_NUM = MINE_NUM isStart = True Timer1.Enabled = True '布置地雷 Do While cMINE_NUM > 0 rX = Rnd() * (MAP_X - 1) rY = Rnd() * (MAP_Y - 1) '判断数组中(rX,rY)为非地雷及 '非点选的方块坐标时 If mapArr(rX, rY) <> 9 And _ Not (rX = xxx And rY = yyy) Then cMINE_NUM = cMINE_NUM - 1 mapArr(rX, rY) = 9 '地雷外围数字各加一 For xx = rX - 1 To rX + 1 For yy = rY - 1 To rY + 1 If xx >= 0 And xx <= MAP_X And _ yy >= 0 And yy <= MAP_Y Then If mapArr(xx, yy) <> 9 And _ Not (xx = rX And yy = rY) Then mapArr(xx, yy) = mapArr(xx, yy) + 1 End If End If Next yy Next xx End If Loop End If '将该方块坐标值设为0,表示为翻开状态 mapFaceArr(xxx, yyy) = 0 '选择地雷区数组判断该坐标 Select Case mapArr(xxx, yyy) Case 0 '空白 Call doClear(xxx, yyy, index) Call setMineImage(index, 10) Case 1 To 8 '数字 MINE_NUM_CLEAR = MINE_NUM_CLEAR + 1 Call setMineImage(index, mapArr(xxx, yyy) Case 9 '地雷 isDie = True Timer1.Enabled = False Call showMine Call setMineImage(index, 12) End Select '检查是否只剩下地雷未探测 If MAP_X * MAP_Y - MINE_NUM_CLEAR = MINE_NUM Then isFinal = True End If End If '设定状态图示 Call setStateImage End IfEnd Sub'清除未靠近地雷的区块Private Sub doClear(ByVal x As Integer, ByVal y As Integer, ByVal index As Integer) MINE_NUM_CLEAR = MINE_NUM_CLEAR + 1 For xx = x - 1

    注意事项

    本文(毕业论文基于VB的扫雷游戏设计与实现33628.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开