学生档案管理系统的设计与实现.doc

上传人:豆**** 文档编号:17546879 上传时间:2022-05-24 格式:DOC 页数:19 大小:261.50KB
返回 下载 相关 举报
学生档案管理系统的设计与实现.doc_第1页
第1页 / 共19页
学生档案管理系统的设计与实现.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《学生档案管理系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《学生档案管理系统的设计与实现.doc(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流学生档案管理系统的设计与实现.精品文档.学生档案管理系统项目应用开发数据库应用程序的开发始终算得上是VB编程中的难点,这是因为你不仅要熟悉VB中关于数据库编程方面的知识(当然这是十分简单的)还要了解数据库的知识。本系统主要用来实现学生基本情况和学生成绩的录入、修改、查询、删除和打印等功能。通过本系统,可以了解如何使用Visual Basic来开发一个比较完整的数据库应用程序。用到的数据库控件有DATA、ADO,添加的一个数据环境。一、系统结构图本系统主要包括学生基本情况更新,学生基本情况维护和学生成绩维护3个大的模块,各个模块的具体功能如图所

2、示:学生档案管理系统学生基本情况更新学生基本情况维护学生成绩维护添加删除修改查询选择专业修改添加删除打印按专业查询添加成绩查找打印按学号查找按专业查找图1-1 应用程序的功能模块结构图二、数据库的建立本系统用到的数据库是用Visual Basic的外加工具Visual Data Manager(可视化数据管理器)创建,名为student.mdb(是access数据库),其中用到两个表,分别为:基本情况表和学生成绩表。两表的结构如下所示:表1-1 字段名类型宽度学号Text6姓名Test10性别Text2班级Text20出生年月Data/Time8政治面貌Text4家庭住址Text20电话Tex

3、t8E_mailText20照片Binary0表1-2字段名类型宽度学号Text6课程Test8成绩Long4学期Integer制作过程如下:1、 选择VB外接程序菜单中的可视化数据管理器,进入可视化数据管理器;2、 在可视化数据管理器中选择文件菜单中的新建选项建立数据库文件,然后从数据库厂家列表中选择要创建的数据库类型(本例选择Microsoft Access中的Version MDB 2.0版本);3、 在选择要创建的Microsoft Access数据库对话框中,输入数据库名student,按确定按钮进入数据库窗口;4、 在数据库窗口中单击鼠标右键并从弹出式菜单中选择新建表来创建stud

4、ent.mdb数据库中的两个表(基本情况表和学生成绩表)。三、各个窗体的设计与实现(一) 主窗体的设计与实现首先在VB中新建一个标准工程并起名为成绩管理,在标准工程中添加一个MDI窗体并起名为Frmmain。主窗体的设计界面如图1-2所示:图1-2 主窗体的设计界面 在主窗体中主要应用了菜单、工具栏和状态栏。下面分别介绍这些组成部分的功能。1、 菜单的设计菜单是Windows应用程序中的重要组成部分,这里将对每个菜单项及其子菜单的功能进行简单介绍,如表1-1所示。表1-3 应用程序的菜单项列表主菜单名子菜单项菜单功能数据维护(Repair)情况表更新(Edit)显示学生情况表更新窗体情况表维护

5、(Cedit)显示学生情况表维护窗体成绩表维护(Cjwh)显示学生成绩表维护窗口退出本系统(Quit1)退出应用程序帮助(Help)关于系统(Absystem)显示关于系统窗体系统帮助(Abhelp)显示系统帮助窗体退出(Exit)推出本系统(Quit)退出应用程序MID应用程序中,父窗体可以有自己的菜单,子窗体也可以有属于自己的菜单。这些菜单的创建都可以利用Menu Editor来进行创建。2、 Imagelist控件程序包括一个Imagelist控件,它用来为工具栏提供图片。在程序的基本控件中没有此项控件,添加此控件的方法是在基本控件的空白处点击鼠标右键,在出现的快捷菜单中选择部件,之后在

6、部件对话框中的部件选项卡中选择Microsoft Windows common controls 6.0控件,确定即可。在窗体中添加一个Imagelist控件,名为默认的Imagelist1,再为此控件添加几个图标。3、工具栏设计工具栏提供了便捷的操作方式来完成应用程序常用的操作。在现在的Windows应用程序中,工具栏已经成为非常主要的组成部分。本例工具栏的设计步骤为:首先在窗体中添加一个toolbar控件,之后为此控件添加6个按钮,并把每个按钮分别和Imagelist1控件的图片绑定。4、状态栏设计在主窗体上添加一个Statusbar控件,用鼠标右键点击此控件,在属性页的对话框中为窗体添加

7、6个窗格,分别放置窗口信息和显示当前日期和时间。5、主窗体界面的代码实现 菜单的Click事件代码:Private Sub CEDIT_Click()Unload FrmjbgxUnload frmcjUnload FrmHELPUnload FrmwelcomeUnload frmaboutLoad FrmjbwhFrmjbwh.ShowEnd SubPrivate Sub cjwh_Click()Unload FrmjbgxUnload FrmjbwhUnload FrmHELPUnload FrmwelcomeUnload frmaboutLoad frmcjfrmcj.ShowEnd

8、SubPrivate Sub EDIT_Click()Unload FrmjbwhUnload frmcjUnload FrmHELPUnload FrmwelcomeUnload frmaboutLoad FrmjbgxFrmjbgx.ShowEnd SubPrivate Sub Absystem_Click()Unload FrmjbgxUnload frmcjUnload FrmjbwhUnload FrmwelcomeUnload frmaboutLoad FrmHELPFrmHELP.ShowEnd SubPrivate Sub Ahelp_Click()Unload Frmjbgx

9、Unload frmcjUnload FrmHELPUnload FrmwelcomeUnload FrmjbwhLoad frmaboutfrmabout.ShowEnd SubPrivate Sub quit_Click()Frmmain.HideUnload FrmmainEnd SubPrivate Sub quit1_Click()Frmmain.HideUnload FrmmainEnd Sub窗体的Load事件代码:Private Sub MDIForm_Load()Load FrmwelcomeFrmwelcome.ShowEnd Sub工具栏的Buttonclick事件代码:

10、 Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index Case 1Unload FrmjbwhUnload frmcjUnload FrmHELPUnload FrmwelcomeUnload frmaboutLoad FrmjbgxFrmjbgx.Show Case 2Unload FrmjbgxUnload frmcjUnload FrmHELPUnload FrmwelcomeUnload frmaboutLoad FrmjbwhFrmjbwh.Show

11、Case 3Unload FrmjbgxUnload FrmjbwhUnload FrmHELPUnload FrmwelcomeUnload frmaboutLoad frmcjfrmcj.Show Case 4Unload FrmjbgxUnload frmcjUnload FrmHELPUnload FrmwelcomeUnload FrmjbwhLoad frmaboutfrmabout.Show Case 5Unload FrmjbgxUnload frmcjUnload FrmjbwhUnload FrmwelcomeUnload frmaboutLoad FrmHELPFrmHE

12、LP.Show Case 6Frmmain.HideUnload FrmmainEnd SelectEnd Sub(二)学生基本情况更新窗体的设计与实现首先在工程中添加一个标准窗体并起名为Frmjbgx。再在基本空间上添加一个通用对话框控件,方法是在基本控件的空白处按鼠标右键,选择部件,在部件对话框中选择Microsoft Common Dialog Control 6.0控件,按确定按钮。然后在窗体上添加各种控件,如图1-3设计屏幕,然后添加程序代码。在图中,其主要控件、主要属性、控件说明(一些次要控件如按钮、标签,次要属性如Height、Width除非特别,否则将不特别说明,读者可以根据具

13、体情况来设定)如表1-4所示:图1-3 基本情况更新设计界面表1-3 控件、主要属性、控件说明表控件名称主要控件属性名称属性值功能说明FrmjbgxCaption基本情况更新名称frmjbgxBorderStyle2 SizableMdichildTrue把此窗体作为子窗体WindowstateMaximized运行是最大化Frame名称Frame1Caption基本情况更新CommonDialog名称Commondialog1Data名称Data1ConnectAccess选择Access数据源DatabasenameStudent.mdb选择数据源的名称Recordsource基本情况和数

14、据表进行绑定Image名称Image1StretchTrue调整图片大小以适应该控件EnabledFalse初始状态为不可用Text名称Text1Text9text1_text9和数据库Student.mdb的基本情况表的各个字段进行绑定DatasourceData1Datafield学号E_MAILEnabledFalse初始状态为不可用Command名称Command4Caption放弃EnabledFalse初始状态为不可用Command名称Command10Caption添加照片EnabledFalse初始状态为不可用注意:在设置Data1的Databasename属性时,不要stud

15、ent.mdb之前的路径,这样可以不限制应用程序的路径。窗体的运行结果如图1-4所示:图1-4 基本情况更新窗体的运行结果基本情况更新设计代码实现添加按钮的Click事件代码:Private Sub Command1_Click()On Error Resume Next点击此按钮时,除放弃和添加照片按钮外,其他均不可用Command2.Enabled = Not Command2.EnabledCommand3.Enabled = Not Command3.EnabledCommand4.Enabled = Not Command4.EnabledCommand5.Enabled = Not

16、 Command5.EnabledCommand6.Enabled = Not Command6.EnabledCommand7.Enabled = Not Command7.EnabledCommand8.Enabled = Not Command8.EnabledCommand9.Enabled = Not Command9.EnabledCommand10.Enabled = Not Command10.EnabledIf Command1.Caption = 添 加 Then Text1.Enabled = True Text2.Enabled = True Text3.Enabled

17、 = True Text4.Enabled = True Text5.Enabled = True Text6.Enabled = True Text7.Enabled = True Text8.Enabled = True Text9.Enabled = True Image1.Enabled = True Command1.Caption = 确 定 添加一条空白记录 Data1.Recordset.AddNew Text1.SetFocus Else Text1.Enabled = False Text2.Enabled = False Text3.Enabled = False Tex

18、t4.Enabled = False Text5.Enabled = False Text6.Enabled = False Text7.Enabled = False Text8.Enabled = False Text9.Enabled = False Image1.Enabled = False 把数据真正添加到表中 Data1.Recordset.Update Data1.Recordset.MoveLast Command1.Caption = 添 加 End IfEnd Sub删除按钮的Click事件代码:Private Sub Command2_Click()On Error R

19、esume NextData1.Recordset.DeleteData1.Recordset.MoveNextIf Data1.Recordset.EOF Then Data1.Recordset.MoveLastEnd Sub修改按钮的Click事件代码:Private Sub Command3_Click()On Error Resume NextCommand1.Enabled = Not Command1.EnabledCommand2.Enabled = Not Command2.EnabledCommand4.Enabled = Not Command4.EnabledComma

20、nd5.Enabled = Not Command5.EnabledCommand10.Enabled = Not Command10.EnabledIf Command3.Caption = 修 改 Then Text1.Enabled = True Text2.Enabled = True Text3.Enabled = True Text4.Enabled = True Text5.Enabled = True Text6.Enabled = True Text7.Enabled = True Text8.Enabled = True Text9.Enabled = True Image

21、1.Enabled = True Data1.Recordset.EDIT Text1.SetFocus Command3.Caption = 确 定Else Command3.Caption = 修 改 Data1.Recordset.Update Text1.Enabled = False Text2.Enabled = False Text3.Enabled = False Text4.Enabled = False Text5.Enabled = False Text6.Enabled = False Text7.Enabled = False Text8.Enabled = Fals

22、e Text9.Enabled = False Image1.Enabled = False End IfEnd Sub放弃按钮的Click事件代码:Private Sub Command4_Click()On Error Resume NextCommand1.Caption = 添 加Command3.Caption = 修 改Command1.Enabled = TrueCommand3.Enabled = TrueCommand4.Enabled = FalseCommand5.Enabled = TrueCommand6.Enabled = TrueCommand7.Enabled

23、= TrueCommand8.Enabled = TrueCommand9.Enabled = TrueData1.UpdateControlsData1.Recordset.MoveLastText1.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseText4.Enabled = FalseText5.Enabled = FalseText6.Enabled = FalseText7.Enabled = FalseText8.Enabled = FalseText9.Enabled = FalseImage1.Enabled

24、= FalseEnd Sub查询按钮的Click事件代码:Private Sub Command5_Click()Dim MNO As StringMNO = InputBox$(请输入学号, 查询窗)Data1.Recordset.FindFirst 学号= & MNO & If Data1.Recordset.NoMatch Then MsgBox 无此学号, , 提示End Sub上一个按钮的Click事件代码:Private Sub Command6_Click()On Error Resume NextData1.Recordset.MovePreviousIf Data1.Reco

25、rdset.BOF Then Data1.Recordset.MoveFirstEnd Sub下一个按钮的Click事件代码:Private Sub Command7_Click()On Error Resume NextData1.Recordset.MoveNextIf Data1.Recordset.EOF Then Data1.Recordset.MoveLastEnd Sub第一个按钮的Click事件代码:Private Sub Command8_Click()Data1.Recordset.MoveFirstEnd Sub最后一个按钮的Click事件代码:Private Sub C

26、ommand9_Click()Data1.Recordset.MoveLastEnd Sub添加照片按钮的Click事件代码:Private Sub Command10_Click()调用通用对话框CommonDialog1 = 1On Error Resume NextIf CommonDialog1.FileName = Then Exit SubImage1.Picture = LoadPicture(CommonDialog1.FileName)返回应用程序所在路径ChDrive Mid(App.Path, 1, 1)End Sub窗体的Load事件代码:Private Sub For

27、m_Load()是Frame1框架在窗体加载时水平居中Frame1.Left = Frmjbgx.Width / 2 - Frame1.Width / 2初始化通用对话框CommonDialog1.FileName = *.bmpCommonDialog1.Filter = pictures(*.bmp)|*.bmp|pictures(*.jpg)|*.jpg|all files(*.*)|*.*CommonDialog1.FilterIndex = 1End Sub窗体的Resize事件代码:Private Sub Form_Resize()窗体的尺寸改变是,Frame1始终水平居中Fram

28、e1.Left = Frmjbgx.Width / 2 - Frame1.Width / 2End Sub(三)学生基本情况维护窗体的设计与实现首先在工程中添加一个标准窗体并起名为Frmjbwh。再在工程中添加一个数据环境,数据环境设计器为创建编程的运行时数据访问提供了一个交互的、设计时环境。在设计时,您可以设置 Connection 和 Command 对象的属性值、编写代码响应 ActiveX(R) Data Object (ADO) 事件、执行 Command、创建合计和层次结构。您也可以将 DataEnvironment 对象拖动到窗体或报表中来创建数据绑定控件。使用数据环境设计器,您

29、可以完成下面的工作: 添加一个数据环境设计器到一个 Visual Basic 工程中。 创建 Connection 对象。 基于存储过程、表、视图、同义词和 SQL 语句创建 Command 对象。 基于 Command 对象的一个分组,或通过与一个或多个 Command 对象相关来创建 command 的层次结构。 为 Connection 和 Recordset 对象编写和运行代码。 从数据环境设计器中拖动一个 Command 对象中的字段到一个 Visual Basic 窗体或数据报表设计器。 本例设置数据环境的方法是:选择工程菜单中的添加Data Environment,出现数据环境对

30、话框如图1-5所示。图1-5 数据环境对话框在图1-5中,用鼠标右键单击Dataenvironment1下的Connection1选择属性,出现数据连接属性对话框,如图1-6所示。图1-6 数据连接属性对话框 在图1-6中,在提供程序选项卡中选择数据引擎Microsoft Jet 3.51 OLE DB Provider,按下一步按钮,进入连接选项卡如图1-7所示。图1-7 数据连接属性的连接选项卡在图1-7中,在选择和输入数据库名称下边的文本框中,选择数据库Student.mdb,注意把student.mdb前边的路径删除掉,这样可以不限制应用程序的路径。按确定按钮后,回到数据环境对话框,再

31、用鼠标右键单击Connection1,在弹出的快捷菜单中选择添加命令选项,结果如图1-8所示。图1-8 添加一个命令后的窗口在图1-8中,用鼠标右键单击Command1,在弹出的快捷菜单中选择属性,出现Command1属性对话框,如图1-9所示。图1-9 Command1属性对话框在入1-9中,在数据源下边数据库对象后的下拉表中选择表,在对象名称后的下拉表中选择基本情况。再在高级选项卡中,把锁定类型设成3-开放式,以便数据环境可以进行修改和删除操作。之后,按确定按钮,回到数据环境对话框。在用鼠标右键点击Command1,在出现的快捷菜单中选择添加子命令,结果如图1-10所示。图1-10 添加子

32、命令后窗口在图1-10中,再设置command2的属性,方法同设置Command1属性,把Command2的数据对象设为学生成绩表。在关联选项卡中设置用学号同父命令对象相关联。结果如图1-11所示。图1-11 和父命令对象关联窗口数据环境建立完成后,回到Frmjbwh窗体中,在基本控件中添加一个DataGrid 控件,方法是在基本控件的空白处按鼠标右键,选择部件,在部件对话框中选择Microsoft DataGrid Control 6.0(OLEDB)控件,按确定按钮。DataGrid 控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示 Recordset 对象的记录和字段。可

33、以使用 DataGrid 来创建一个允许最终用户阅读和写入到绝大多数数据库的应用程序。DataGrid 控件可以在设计时快速进行配置,只需少量代码或无需代码。当在设计时设置了 DataGrid 控件的 DataSource 属性后,就会用数据源的记录集来自动填充该控件,以及自动设置该控件的列标头。然后您就可以编辑该网格的列;删除、重新安排、添加列标头、或者调整任意一列的宽度。在窗体上添加各种控件,如图1-12设计屏幕。在图中,其主要控件、主要属性、控件说明如表1-4所示:图1-12 学生基本情况维护设计界面表1-4 控件、主要属性、控件说明表控件名称主要控件属性名称属性值功能说明Frmjbwh

34、Caption基本情况维护名称FrmjbwhBorderStyle2 SizableMdichildTrue把此窗体作为子窗体WindowstateMaximized运行是最大化Datagrid名称Datagrid1DatasourceDataenvironment1把数据环境设成数据源DatamemberCommand1数据成员设成数据环境中的Command1命令窗体的运行结果如图1-13所示:图1-13 学生基本情况维护的运行结果基本情况维护设计代码实现在通用区域声明一个全局变量key,以便在选择专业时使用:Public key As String选择班级按钮的Click事件代码:Priv

35、ate Sub selzy_Click()Me.key = 把对话框窗体Dialog设置成显示模式Dialog.Show vbModal按Dialog窗体的key变量的返回值进行筛选If Me.key Then DataEnvironment1.rsCommand1.Filter = 班级= & key & Adodc1.Refresh DataGrid1.AllowUpdate = FalseEnd IfUnload DialogEnd Sub修改按钮的Click事件代码:Private Sub Comup_Click()DataGrid1.AllowUpdate = TrueDataGri

36、d1.SetFocusEnd Sub添加按钮的Click事件代码:Private Sub Comadd_Click()DataGrid1.AllowUpdate = True添加操作DataEnvironment1.rsCommand1.AddNewDataGrid1.SetFocusEnd Sub删除按钮的Click事件代码:Private Sub Comdel_Click() 设置DataGrid1为可删除状态DataGrid1.AllowDelete = TrueDataEnvironment1.rsCommand1.DeleteDataEnvironment1.rsCommand1.M

37、oveNextIf DataEnvironment1.rsCommand1.EOF = True Then DataEnvironment1.rsCommand1.MoveLastDataGrid1.SetFocusEnd Sub打印按钮的Click事件代码:Private Sub Comprint_Click()显示并打印报表DataReport1.ShowEnd Sub窗体的Resize事件代码:Private Sub Form_Resize()使frame1始终居中Frame1.Left = Frmjbwh.Width / 2 - Frame1.Width / 2Frame1.Top =

38、 Frmjbwh.Height / 2 - Frame1.Height / 2End Sub窗体的Unload事件代码:Private Sub Form_Unload(Cancel As Integer)恢复数据环境的筛选DataEnvironment1.rsCommand1.Filter = adFilterNoneEnd Sub(四)学生基本情况维护中班级选择对话框的设计与实现:首先,在工程中添加一个对话框起名为Dialog.frm,再在基本控件中添加一个ADO Data控件,方法是在基本控件的空白处按鼠标右键,选择部件,在部件对话框中选择Microsoft ADO Data Contro

39、l 6.0控件,按确定按钮。这时,基本控件上就出现了ADO Data控件。ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合 OLEDB 规范的数据源。使用 Visual Basic 的类模块也可以很方便地创建子集的数据提供者。它还有作为一个图形控件的优势(具有“向前”和“向后”按钮),以及一个易于使用的界面,使您可以用最少的代码创建数据库应用程序。然后,在窗体上添加各种控件,如图1-14设计屏幕。在图中,其主要控件、主要属性、控件说明如表1-5

40、所示:图1-14 班级选择窗体设计图表1-5 控件、主要属性、控件说明表控件名称主要控件属性名称属性值功能说明DialogCaption班级选择对话框名称DialogAdodc名称Adodc1ConnectionstringStudent.mdb和数据表进行绑定Recordsourceselect * from 基本情况 group by 班级用SQL语句设置记录原并按班级分组VisibleFalse运行时不可见Datagrid名称Datagrid1DatasourceAdodc1把Adodc1设成数据源代码实现:选择按钮的Click事件代码:Private Sub Command1_Clic

41、k()获取key值Frmjbwh.key = Me.DataGrid1.TextMe.HideEnd Sub取消按钮的Click事件代码:Private Sub Command2_Click()Frmjbwh.key = Me.HideEnd Sub(五)学生成绩维护窗体的设计与实现:首先在工程中添加一个标准窗体并起名为Frmcjwh。再在窗体上添加一个Frame控件,并使用默认名称Frame1。之后用鼠标双击工程资源管理器中的数据环境Dataenvironment1,用鼠标把Command1拖到窗体的Frame1中来,因为默认Command2默认使用的是MSflexGrid网格不适用本例中,

42、所以把它替换成DataGrid网格,DataGrid网格的使用如前。再把照片字段去掉,添加一个Image控件,并和Command1中的照片字段绑定。最后,添加几个命令按钮。窗体的设计如图1-15所示。在图中,其主要控件、主要属性、控件说明如表1-6所示:图1-15 学生成绩维护窗体设计图表1-5 控件、主要属性、控件说明表控件名称主要控件属性名称属性值功能说明FrmcjwhCaption学生成绩维护名称FrmcjwhBorderStyle2 SizableMdichildTrue把此窗体作为子窗体WindowstateMaximized运行是最大化Datagrid名称Datagrid1Data

43、sourceDataenvironment1把数据环境设成数据源DatamemberCommand2数据成员设成数据环境中的Command2命令Image名称Image1StretchTrue调整图片大小以适应该控件EnabledFalse初始状态为不可用窗体的运行结果如图1-16所示:图1-16 学生成绩维护运行窗体学生成绩维护设计代码实现:在通用区域声明两个全局变量findxhstr和findbjstr,以便查找时使用:Public findxhstr As StringPublic findbjstr As String第一个按钮的Click事件代码:Private Sub Comman

44、d1_Click()DataEnvironment1.rsCommand1.MoveFirstEnd Sub上一个按钮的Click事件代码:Private Sub Command2_Click() DataEnvironment1.rsCommand1.MovePreviousIf DataEnvironment1.rsCommand1.BOF Then DataEnvironment1.rsCommand1.MoveFirstEnd IfEnd Sub下一个按钮的Click事件代码:Private Sub Command3_Click( )DataEnvironment1.rsCommand

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com