OA办公自动化系统 毕业设计 论文.doc

上传人:豆**** 文档编号:23888049 上传时间:2022-07-02 格式:DOC 页数:33 大小:1.85MB
返回 下载 相关 举报
OA办公自动化系统 毕业设计 论文.doc_第1页
第1页 / 共33页
OA办公自动化系统 毕业设计 论文.doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《OA办公自动化系统 毕业设计 论文.doc》由会员分享,可在线阅读,更多相关《OA办公自动化系统 毕业设计 论文.doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateOA办公自动化系统 毕业设计 论文OA办公自动化系统 毕业设计 论文OA办公自动化系统学 院专 业班 级学 号姓 名指导教师教师职称年月日-摘要【摘要】系统针对企业机关办公中存在的信息不畅、效率底下、操作不规范等一系列问题。用信息化的手段和新一代规范等一系列问题。用信息化手段和新一代的管理思想提供了强有力的网络化、电子化支持。把协同办公的理念、知识管理的思想带入了现代

2、社会的办公生活,从而提升了现代企业的信息化程度,改变了人们的生活。【关键词】 OA 办公自动化目录摘要1目录1引言11 系统分析21.1 需求分析21.2 可行性分析22 总体设计22.1 项目规划22.2 系统工作原理网络结构图22.3 系统功能结构图33 详细设计33.1 公共模块设计33.2 系统登录设计43.3 主界面设计63.4 新闻管理93.5 传送文件133.6 文件接收153.7 投票活动管理18附录A 参考文献21附录B 数据表结构22附录C 文件架构图25引言在市场竞争过程中,对于一个企业而言,对信息的掌握程度、信息获取是否及时、信息能否得到充分的利用、对信息的反应是否敏感

3、准确,也越来越成为衡量一个企业市场竞争能力的重要因素。商场如战场,新一代的战争是信息化战争,如何使企业信息化建设完善起来?在这种情况下,开发OA办公自动化系统是当务之急的事了。本系统是以新闻发布、文件传送为核心的办公自动化系统,是一套集新闻管理、文件传送管理、信息发布、人事管理、局域网短消息快速传送等5部分为一体的办公自动化系统。该系统除了必须满足当前的应用要求外,在整套系统的设计过程中,还专门强调了其先进性及可扩展性。当前的信息技术日新月异,如果这套系统只着眼于当前的需求,而忽视了对系统技术的前瞻性,可以在不久的将来,系统必将不能满足客户日益增长的需求,导致系统的生命周期缩短,从而增加客户在

4、信息化建设上的投资。1 系统分析1.1 需求分析通过调查,要求系统需要有以下功能:q 由于操作人员的计算机知识普遍较差,那么就要求有良好的人机界面。q 由于该系统的使用对象多,要求有较好的权限管理。q 原始数据修改简单方便,支持多条件修改。q 方便的数据查询,支持多条件查询。q 信息发布与文件传送速度快。q 通过计算机,能够直接“透视”公司的各项工作及活动安排。q 图表分析活动投票管理。q 在相应的权限下,删除数据方便简单,数据稳定性好。1.2 可行性分析开发任何一个基于计算机的系统,都会受到时间和资源上的限制。因此,在接受任何一个项目开发任务之前,必须根据客户可能提供的时间和资源条件进行可行

5、性分析,以减少项目开发风险,避免人力、物力和财力的浪费。本系统数据库采用目前比较流行的Microsoft SQL Server,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据库量大,效率高;前台采用Microsoft公司的Visual Basic 6.0作为主要的开发工具,其可与SQL Server 2000数据库无缝链接。2 总体设计2.1 项目规划OA办公自动化系统是一个典型的网络办公开发应用程序,包含通知管理模块、新闻管理模块、文件传送管理模块、交流管理模块、系统维护管理模块5部分组成,规划系统功能模块如下:q 通知管理模块该模块主要负责信息的发布、接收等。q 新闻

6、管理模块该模块的主要负责新闻的发布、接收等。q 文件传送管理模块该模块主要负责文件的传送与接收等。q 交流管理模块该模块主要实现意见反馈、活动投票、短消息服务(局域网)。q 系统维护管理模块部门信息的基础设置、职员信息的基础设置、投票活动管理设置、系统操作员及权限设置。2.2 系统工作原理网络结构图系统工作原理网络结构图如图1所示。图1 系统工作原理网络结构图2.3 系统功能结构图图2 系统功能结构图3 详细设计3.1 公共模块设计为了节省系统资源,实现代码重用,可以在系统中新建一个Modulel模块。就本系统而言,该模块主要实现数据库安装和共享数据库连接。系统第一次使用时,根据用户设置的Da

7、taBase.ini配置文件,将数据库文件(db_OA_Data.MDF)和数据库日志文件(db_OA_Log.LDF)自动安装到指定的SQL Server数据库服务器上。为了优化ADO+SQL数据库的连接,在公共模块(Module1)中建立数据库连接共享字符串。在以后的编程中,如果使用对象访问数据库或ADO Data控件访问数据库,则可以直接将数据库共享连接字符串(PublicStr)值赋值给相应的ConnectionString属性,从而避免了重复建立数据库连接的麻烦,而失去了ADO+SQL的优越性能。模块中代码如下:Public PublicStr As StringDim con As

8、 New ADODB.Connection, rs As New ADODB.RecordsetDim Str As String, Server As String, uid As String, Dim pwd As StringPublic Sub main() 读取数据库配置文件 Open (App.Path & DataBase.ini) For Input As #1 Line Input #1, Intext Server = Mid(Intext, 10, Len(Trim(Intext) - 9) Line Input #1, Intext uid = Mid(Intext,

9、 7, Len(Trim(Intext) - 6) Line Input #1, Intext pwd = Mid(Intext, 7, Len(Trim(Intext) - 6) Close #1附加数据库 On Error Resume Next con.ConnectionString = Provider=SQLOLEDB.1;Persist Security Info=False;User ID= & uid & ;PWD= & pwd & ;Initial Catalog=db_OA;Data Source= & Server & con.Open 打开数据库连接 Set rs =

10、 New ADODB.Recordset 开始附加数据库 Str = EXEC sp_attach_db dbname = Ndb_SSS, filename1 = N + App.Path + DataBasedb_OA_Data.MDF + , filename2 = N + App.Path + DataBasedb_OA_Log.LDF + rs.Open str, con, 1, adLockOptimistic Set rs = con.Execute(Str) con.Close 关闭数据库连接 共享连接字符串 PublicStr = Provider=SQLOLEDB.1;Pe

11、rsist Security Info=False;User ID= & uid & ;PWD= & pwd & ;Initial Catalog=db_OA;Data Source= & Server & frm_login.ShowEnd Sub3.2 系统登录设计本系统属于OA办公自动化系统,用户权限分为两种:系统管理员和普通用户。系统登录验证操作员及其密码,主要通过记录集结果(RecordSet)结合If语句,判断用户输入的操作员及密码是否符合数据库中的操作员和密码,如果符合则允许登录,并给予相应的权限,否则提示用户非法登录。1窗体设计(1)新建一个窗体,将窗体的“名称”属性设置为fr

12、m_login,BorderStyle属性设置为0-None,设置Picture属性,为窗体添加背景图片。(2)添加Adodc控件,设置名称为adoLogin,Visible属性为False,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框将其添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Ado Data Controls 6.0(SP4)”列表项。(3)添加2个TextBox控件,分别设置名称(Name属性)为Text1和Text2,设置BorderStyle属性为0-None。(4)添加2个Label控件,将名称设置为labLogin和l

13、abEnd,BackStyle属性为0-Transparent。系统登录窗体的设计结果如图3所示。图3 系统登录窗体设计2代码设计单击名称为labLogin的Label控件用来进行用户安全性检查,如果用户名称和密码正确,则进入系统并分配相应的权限。在Label控件名称为labLogin的Click事件下,添加代码如下:Private Sub labLogin_Click() adoLogin.ConnectionString = PublicStr adoLogin.RecordSource = select * from tbOA_user where username= + Text1.T

14、ext + and userpwd= + Text2.Text + adoLogin.Refresh If adoLogin.Recordset.RecordCount 0 Then If adoLogin.Recordset.Fields(2).Value = 0 Then frm_mainBefore.Show frm_mainBefore.System.Enabled = False 权限约束 frm_mainBefore.StatusBar1.Panels(1).Text = 操作职员: & Text1.Text 设置控件TreeView树状菜单 Set n1 = frm_mainBe

15、fore.TreeView1.Nodes.Add(, tvwChild, 通知管理, 通知管理, 1) Set node1 = frm_mainBefore.TreeView1.Nodes.Add(n1.Index, tvwChild, 发布通知, 发布通知, 1) Set node1 = frm_mainBefore.TreeView1.Nodes.Add(n1.Index, tvwChild, 接收通知, 接收通知, 1) Set node1 = frm_mainBefore.TreeView1.Nodes.Add(n1.Index, tvwChild, 已发通知, 已发通知, 1) Se

16、t n2 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 新闻管理, 新闻管理, 1) Set nnode2 = frm_mainBefore.TreeView1.Nodes.Add(n2.Index, tvwChild, 新闻发布, 新闻发布, 1) Set node2 = frm_mainBefore.TreeView1.Nodes.Add(n2.Index, tvwChild, 接收新闻, 接收新闻, 1) Set node2 = frm_mainBefore.TreeView1.Nodes.Add(n2.Index, tvwChild,

17、 已发新闻, 已发新闻, 1) Set n4 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 文件传送, 文件传送, 1) Set nnode4 = frm_mainBefore.TreeView1.Nodes.Add(n4.Index, tvwChild, 传送文件, 传送文件, 1) Set node4 = frm_mainBefore.TreeView1.Nodes.Add(n4.Index, tvwChild, 接收文件, 接收文件, 1) Set node4 = frm_mainBefore.TreeView1.Nodes.Add(n

18、4.Index, tvwChild, 已发文件, 已发文件, 1) Set n3 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 交流管理, 交流管理, 1) Set node3 = frm_mainBefore.TreeView1.Nodes.Add(n3.Index, tvwChild, 意见箱, 意见箱, 1) Set node3 = frm_mainBefore.TreeView1.Nodes.Add(n3.Index, tvwChild, 投票活动, 投票活动, 1) Set node3 = frm_mainBefore.TreeVi

19、ew1.Nodes.Add(n3.Index, tvwChild, 短消息服务, 短消息服务, 1) Else frm_mainBefore.Show frm_mainBefore.StatusBar1.Panels(1).Text = 操作职员: & Text1.Text 设置控件TreeView树状菜单 Set n1 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 通知管理, 通知管理, 1) Set node1 = frm_mainBefore.TreeView1.Nodes.Add(n1.Index, tvwChild, 发布通知, 发

20、布通知, 1) Set node1 = frm_mainBefore.TreeView1.Nodes.Add(n1.Index, tvwChild, 接收通知, 接收通知, 1) Set node1 = frm_mainBefore.TreeView1.Nodes.Add(n1.Index, tvwChild, 已发通知, 已发通知, 1) Set n2 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 新闻管理, 新闻管理, 1) Set nnode2 = frm_mainBefore.TreeView1.Nodes.Add(n2.Index,

21、 tvwChild, 新闻发布, 新闻发布, 1) Set node2 = frm_mainBefore.TreeView1.Nodes.Add(n2.Index, tvwChild, 接收新闻, 接收新闻, 1) Set node2 = frm_mainBefore.TreeView1.Nodes.Add(n2.Index, tvwChild, 已发新闻, 已发新闻, 1) Set n4 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 文件传送, 文件传送, 1) Set nnode4 = frm_mainBefore.TreeView1.N

22、odes.Add(n4.Index, tvwChild, 传送文件, 传送文件, 1) Set node4 = frm_mainBefore.TreeView1.Nodes.Add(n4.Index, tvwChild, 接收文件, 接收文件, 1) Set node4 = frm_mainBefore.TreeView1.Nodes.Add(n4.Index, tvwChild, 已发文件, 已发文件, 1) Set n3 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 交流管理, 交流管理, 1) Set node3 = frm_mainB

23、efore.TreeView1.Nodes.Add(n3.Index, tvwChild, 意见箱, 意见箱, 1) Set node3 = frm_mainBefore.TreeView1.Nodes.Add(n3.Index, tvwChild, 投票活动, 投票活动, 1) Set node3 = frm_mainBefore.TreeView1.Nodes.Add(n3.Index, tvwChild, 短消息服务, 短消息服务, 1) Set n5 = frm_mainBefore.TreeView1.Nodes.Add(, tvwChild, 系统维护管理, 系统维护管理, 1)

24、Set node5 = frm_mainBefore.TreeView1.Nodes.Add(n5.Index, tvwChild, 人事管理, 人事管理, 1) Set node5 = frm_mainBefore.TreeView1.Nodes.Add(n5.Index, tvwChild, 投票管理, 投票管理, 1) Set node5 = frm_mainBefore.TreeView1.Nodes.Add(n5.Index, tvwChild, 意见箱管理, 意见箱管理, 1) Set node5 = frm_mainBefore.TreeView1.Nodes.Add(n5.In

25、dex, tvwChild, 系统设置, 系统设置, 1) End If Unload Me End IfEnd Sub3.3 主界面设计主界面主要包括菜单、树状菜单(TreeView控件实现)、状态栏以及显示OA办公系统的最新新闻和最新通知。界面设计简单明了,为用户提供便捷的访问途径,把一些具有共性的命令集中于一个简单的菜单之下。状态栏将显示系统运行时间、公司信息和操作员信息,其中状态栏上的操作员信息主要通过“系统登录窗体”中“登录操作员”项传递而得到的。主界面运行结果如图4所示。图4 主界面1窗体设计(1)新建1个窗体,将窗体的“名称”属性设置为frm_mainBefore,Caption

26、属性为“OA办公自动化系统”,MaxButton属性为False,设置Picture属性,为窗体添加背景图片。(2)为窗体设计菜单。(3)添加ImageList控件,使用默认名称,该控件属于ActiveX控件,在使用之前必须从“部件”对话框将其添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Windows Common Controls 6.0(SP6)”列表项。(4)添加MSHFlexGrid控件,该控件属于ActiveX控件,使用之前必须将MSHFlexGrid控件添加到工具箱中,添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Hiera

27、rchical FlexGrid Control 6.0”列表,添加2个MSHFlexGrid控件,名称分别为MSHFlexGrid1和MSHFlexGrid2,二者的属性完全相同,主要设置控件的背景色、前景色及表格颜色,方法为:在控件上单击鼠标右键选择“属性”菜单,弹出“属性页”选择“颜色”选项卡设置控件的相关颜色,如图5所示。图5 设置MSHFlexGrid控件颜色属性(5)添加StatusBar(状态栏)控件,主要用来显示系统操作员信息、系统时间及公司名称和网站。该控件属于ActiveX控件,添加ImageList控件时已经将该控件添加到工具箱中。StatusBar控件的名称为默认名,单

28、击鼠标右键打开“属性页”,为StatusBar控件添加3个窗格,第1个窗格显示系统操作员、第2个窗格显示系统日期、第3个窗格显示公司名称和网址,该控件的属性设置方法在前面的章节中已经详细讲解过了,这里就不做介绍了。2程序代码设计当窗体激活时,将TreeView控件中所有的节点展开。在Form窗体的Activate事件下添加如下代码:Private Sub Form_Activate() For i = 1 To TreeView1.Nodes.Count 展开全部节点 TreeView1.Nodes(i).Expanded = True Next iEnd Sub单击树状菜单中的菜单,根据所选

29、择的菜单显示相应的窗体。在TreeView控件的NodeClick事件下添加代码如下:Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) If TreeView1.SelectedItem.Key = 发布通知 Then frmNotice_issue.Show If TreeView1.SelectedItem.Key = 接收通知 Then frmNotice_incept.Show If TreeView1.SelectedItem.Key = 已发通知 Then frmNotice_toVoice.Show I

30、f TreeView1.SelectedItem.Key = 新闻发布 Then frmNews_issue.Show If TreeView1.SelectedItem.Key = 接收新闻 Then frmNews_incept.Show If TreeView1.SelectedItem.Key = 已发新闻 Then frmNews_toNews.Show If TreeView1.SelectedItem.Key = 新闻发布 Then frmNews_issue.Show If TreeView1.SelectedItem.Key = 接收新闻 Then frmNews_incep

31、t.Show If TreeView1.SelectedItem.Key = 已发新闻 Then frmNews_toNews.Show If TreeView1.SelectedItem.Key = 传送文件 Then frmFile.Show If TreeView1.SelectedItem.Key = 接收文件 Then frmFile_incept.Show If TreeView1.SelectedItem.Key = 已发文件 Then frmFile_toFile.Show If TreeView1.SelectedItem.Key = 意见箱 Then frmAC_idear

32、.Show If TreeView1.SelectedItem.Key = 投票活动 Then frmAC_vote.Show If TreeView1.SelectedItem.Key = 短消息服务 Then frmAC_QQ.Show If TreeView1.SelectedItem.Key = 人事管理 Then frmSys_person.Show If TreeView1.SelectedItem.Key = 投票管理 Then frmSys_vote.Show If TreeView1.SelectedItem.Key = 意见箱管理 Then frmSys_idear.Sho

33、w If TreeView1.SelectedItem.Key = 系统设置 Then frmSys_sys.ShowEnd Sub在Form窗体的装载过程中,将最新的新闻和通知显示在MSHFlexGrid表格中。Private Sub Form_Load()/设置 NEWS adoNews.ConnectionString = PublicStr adoNews.RecordSource = SELECT news_date,news_text FROM tbOA_news WHERE (news_acceptPerson = & frm_login.Text1 & ) ORDER BY n

34、ews_date DESC adoNews.Refresh Set MSHFlexGrid2.DataSource = adoNews Call setNewsDataGrid_Caption /设置通知 adoNotice.ConnectionString = PublicStr adoNotice.RecordSource = SELECT notice_date,notice_person,notice_acceptDept,notice_acceptPerson,notice_text FROM tbOA_notice WHERE (notice_acceptPerson = & fr

35、m_login.Text1 & ) ORDER BY notice_date DESC adoNotice.Refresh Set MSHFlexGrid1.DataSource = adoNotice Call setNoticeDataGrid_CaptionEnd Sub每隔一分多钟就更新一次最新新闻和最新通知。在Timer控件的Timer事件下添加如下代码:Private Sub Timer1_Timer()/设置 NEWS adoNews.RecordSource = SELECT news_date,news_text FROM tbOA_news WHERE (news_acce

36、ptPerson = & Mid(StatusBar1.Panels(1).Text, 6, Len(StatusBar1.Panels(1).Text) - 5) & ) ORDER BY news_date DESC adoNews.Refresh Call setNewsDataGrid_Caption /设置通知adoNotice.RecordSource = SELECT notice_date,notice_person,notice_acceptDept,notice_acceptPerson,notice_text FROM tbOA_notice WHERE (notice_

37、acceptPerson = & Mid(StatusBar1.Panels(1).Text, 6, Len(StatusBar1.Panels(1).Text) - 5) & ) ORDER BY notice_date DESC adoNotice.Refresh Call setNoticeDataGrid_Caption 调用自定义过程End Sub自定义过程setNewsDataGrid_Caption()用来初始化新闻MSHFlexGrid2控件的列标题和表格宽度。Sub setNewsDataGrid_Caption()初始化行序号 For i = 1 To adoNews.Re

38、cordset.RecordCount MSHFlexGrid2.TextMatrix(i, 0) = iNext初始化表格标题和列宽 MSHFlexGrid2.TextMatrix(0, 0) = 序号: MSHFlexGrid2.TextMatrix(0, 1) = 发布日期 MSHFlexGrid2.TextMatrix(0, 2) = 新闻内容: MSHFlexGrid2.ColWidth(0) = 400 MSHFlexGrid2.ColWidth(1) = 1000: MSHFlexGrid2.ColWidth(2) = 6700End Sub3.4 新闻管理新闻管理包含3个部分:

39、新闻发布、新闻接收、已发新闻。其中新闻发布用来将新闻发布给某部门中某人;新闻接收用来接收其他职员发布新闻;已发新闻用来浏览将新闻发布给其他职员的新闻。下面笔者分别讲解新闻发布、新闻接收和已发新闻的开发过程。1新闻发布新闻管理窗体的设计结果如图6所示。图6 新闻发布设计图(1)新建1个窗体,设置窗体的“名称”属性为frmNews_issue、Caption属性为“新闻发布”,MaxButton属性为False。(2)在窗体中添加4个Label控件、2个Combo控件、3个ADO控件、2个TextBox控件和2个CommandButton控件。(3)添加DTPicker控件,该控件属于Active

40、X控件,在使用之前必须从“部件”对话框中添加到工具箱中。添加方法为:在“工程”/“部件”对话框中勾选“Microsoft Windows Common Controls 2.6.0”列表项,添加DTPicker控件后,其名称为默认的DTPicker1。(4)程序代码。新闻发布就是将要发布的新闻按部门、职员和新闻数据存储到tbOA_news数据表中。在【发布新闻】按钮的Click事件下添加如下代码:Private Sub cmdSave_Click() adoNews.Recordset.AddNew adoNews.Recordset.Fields(1).Value = DTPicker1.V

41、alueadoNews.Recordset.Fields(2).Value = Text2.Text adoNews.Recordset.Fields(3).Value = Combo1.Text adoNews.Recordset.Fields(4).Value = Combo2.Text adoNews.Recordset.Fields(5).Value = 0 adoNews.Recordset.Fields(6).Value = Text1.Text adoNews.Recordset.Update MsgBox 通知发布成功!, vbInformationEnd SubForm窗体载

42、入时,主要实现以下功能:(1)建立adoNews控件和adoDept控件数据库连接。(2)为Combo1控件中添加部门名称数据。(3)获取系统操作职员姓名,并通过Text2控件显示出来。(4)使DTPicker1控件显示系统当前日期。Form窗体的Load事件过程中的代码如下:Private Sub Form_Load() adoNews.ConnectionString = PublicStr 建立数据库连接 adoNews.RecordSource = select * from tbOA_news 检索数据表数据 adoNews.Refresh adoDept.ConnectionStr

43、ing = PublicStr adoDept.RecordSource = select * from tbOA_dept adoDept.Refresh For i = 0 To adoDept.Recordset.RecordCount 1 将所有部门名称添加到Combo1中 Combo1.AddItem adoDept.Recordset.Fields(1).Value adoDept.Recordset.MoveNext Next i Text2.Text = Mid(frm_mainBefore.StatusBar1.Panels(1).Text, 6, Len(frm_mainB

44、efore.StatusBar1.Panels(1).Text) - 5) 获取操作员姓名 DTPicker1.Value = Date 显示系统当前日期End Sub在Combo1控件中选择不同的部门,检索该部门的所有员工并将其添加到Combo2控件中。Combo1控件Click事件的代码如下:Private Sub Combo1_Click() Combo2.Clear adoEmployee.ConnectionString = PublicStr adoEmployee.RecordSource = select * from tbOA_employee adoEmployee.Refresh For i = 0 To adoEmployee.Recordset.RecordCount -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁