




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一个数据库运用系统的设计与实现 1 运用背景与需求阐明在单机上实现一个教学管理系统的例子,并且可以很容易地把它移植到C/S构造中,只涉及教学管理中的对学生、课程和教师的管理部分: 工程的详细要求是: .运转环境是Windows 95/98操作系统,数据库的前端开发环境是VB 5.0。 一门课程可由多名教师来讲授。 一个教师可讲授多门课程。 一个学生可以选修多门课程。需产生的报表有.每学期开学时要生成学生修课情况表,内容包括学号、姓名、课程名、修课类别,其中修课类别分为必修、选修、重修。.每学期终了时要生成学生修课成果表,内容包括学号、姓名、课程名、修课类别、平常成果、卷面成果、总评成果。生成教
2、师授课效力表,内容包括教师号、教师名、课程名、授课类别、学时数、班数,授课类别分为主讲、辅导、带实验。平安性要求本门课程的主讲教师才具有对其所讲授课程的成果的修正权,教学秘书和系主任才有修正教师授课效力表中的内容的权益。其它人只需查询有关信息的权益。2 数据库设计2.1 概念设计概念设计中心活动中心活动:是系统中的其它活动都是围绕这个活动展开的或与此活动是系统中的其它活动都是围绕这个活动展开的或与此活动是亲密相关的活动是亲密相关的活动确定系统的中心活动:对现实系统分析的关键确定系统的中心活动:对现实系统分析的关键该教学管理系统中,中心活动就是授课,学生与课程之间是经过授该教学管理系统中,中心活
3、动就是授课,学生与课程之间是经过授课发生联络的,教师与课程之间是经过教师授课发生联络的。系统课发生联络的,教师与课程之间是经过教师授课发生联络的。系统所包含的实体:所包含的实体: 课程:元素为由一个主讲教师担任且教学内容一样的教学活动课程:元素为由一个主讲教师担任且教学内容一样的教学活动 单位,用课程号来标识此实体。单位,用课程号来标识此实体。 学生:元素为一个学生,由学号来标识。学生:元素为一个学生,由学号来标识。 教师:元素为一个教师,由教师号来标识。教师:元素为一个教师,由教师号来标识。初步初步ER图:图:学生修课课程授课教师nmnm课程号、课程名、讲授学期、学时数学号、姓名、系、专业、
4、班级教师号、教师名、系、教研室2 数据库设计 2.2 设计关系方式设计根本关系方式主要就是从ER图出发,将其直接转换为关系方式。转换的规那么为: 1.将每个实体都转换为一个关系方式。实体的属性就是关系的属性,实体的主码就是关系的主码。 2.将每个联络也转换为一个关系方式,该关系方式的属性由与该联络相连的各个实体的主码及该联络的属性组成,该联络的主码分三种情况:. 假设联络是1:1的,那么每个实体的主码即是该联络的候选码。. 假设联络是1:n的,那么此联络的主码是n端实体的主码。. 假设联络是m:n的,那么此联络的主码是各个实体的主码的并。此ER图的关系方式为: (1)课程课程号,课程名,讲授学
5、期,学时数,主码为课程号。 (2)学生学号、姓名、系、专业、班,主码为学号。 (3)教师教师号、教师名、系、教研室,主码为教师号。 (4)修课学号,课程号,修课类别,平常成果,卷面成果,总评成果,主码为学号,课程号。 (5)授课课程号,教师号,授课类别,班数,主码为课程号,教师号。2.2 设计关系方式确定表中各属性的详细信息(1)(1)课程表课程表课程号:字符串型,课程号:字符串型,1010字节,主码字节,主码课程名:字符串型,课程名:字符串型,2020字节,非空字节,非空讲授学期:字符串型,讲授学期:字符串型,2 2字节,非空字节,非空学时数:整型,非空学时数:整型,非空(2) (2) 学生
6、表学生表学号:字符串型,学号:字符串型,1010字节,主码字节,主码姓名:字符串型,姓名:字符串型,2020字节,非空字节,非空系:字符串型,系:字符串型,2020字节,非空字节,非空专业:字符串型,专业:字符串型,2020字节,非空字节,非空班:字符串型,班:字符串型,1010字节,非空字节,非空(3) (3) 教师表教师表教师号:字符串型,教师号:字符串型,1010字节,主码字节,主码教师名:字符串型,教师名:字符串型,2020字节字节, ,非空非空 系:字符串型,系:字符串型,2020字节字节教研室:字符串型,教研室:字符串型,1010字节字节(4) (4) 修课表修课表学号:字符串型,
7、学号:字符串型,1010字节,主码,学生表的外码字节,主码,学生表的外码课程号:字符串型,课程号:字符串型,1010字节,主码,课程表的外码字节,主码,课程表的外码修课类别:字符串型,修课类别:字符串型,4 4字节,非空字节,非空平常成果:浮点型,大于等于平常成果:浮点型,大于等于0 0,小于等于,小于等于100100卷面成果:浮点型,大于等于卷面成果:浮点型,大于等于0 0,小于等于,小于等于100100总评成果:浮点型,大于等于总评成果:浮点型,大于等于0 0,小于等于,小于等于100100 (5) (5) 授课表授课表课程号:字符串型,课程号:字符串型,1010字节,主码,课程表的外码字
8、节,主码,课程表的外码教师号:字符串型,教师号:字符串型,1010字节,主码,教师表的外码字节,主码,教师表的外码授课类别:字符串型,授课类别:字符串型,1010字节字节班数:浮点型,大于班数:浮点型,大于0 0。假设选修课有半个班的情。假设选修课有半个班的情况,因此取浮点型。况,因此取浮点型。2.3 确定数据库运用的功能最常用的功能就是对数据的增、删、改、查及生成报表1.数据录入添加2.数据删除3.数据修正4.数据查询5.生成报表本例三张报表:(1) 学生修课表学号,姓名,课程名,修课类别(2) 学生成果表学号,姓名,课程名,修课类别,平常成果,卷面成果,总评成果(3) 教师授课效力表教师号
9、,教师名,课程名,授课类别,学时数,班数创建视图的SQL语句可描画为:CREATE VIEW 学生修课表学号,姓名,课程名,修课类别ASSELECT 学生.学号,学生.姓名,课程.课程名,修课.修课类别 FROM 学生,课程,修课 WHERE 学生.学号 = 修课.学号 AND 课程.课程号 = 修课.课程号包括对张表的数据录入有条件删除,有权限限制,有删除确认有条件查询后修正,有权限限制,修正后保管根据用户提出的条件查询,一切用户都有查询权限用数据库开发工具生成报表对对“学生成果表和学生成果表和“教师授课效力表教师授课效力表的处置与此类似的处置与此类似3 数据库开发环境在C/S环境下实现时应
10、留意数据的分布将数据全部放在效力器上-中央数据库 将数据全部集中管理,数据只需一份,比照实时采集的数据普通都应该放在效力器端。将一部分数据放在效力器上,另一部分数据放在客户机上-地方数据库 将数据分散管理,只将重要的、一切部门共享的数据放在中央数据库中,将各个部门本人需求的数据放在地方数据库中。例:本教学管理系统中,将所设计的五张表放在效力器,便于全校一致管理,各部门共享,同时各部门有本人的地方数据库。 如“修课表,中央和地方各有一个,且两者构造一致,当地方课程数据库修正时,能及时修正中央数据库,在坚持数据的一致性。将数据分为中央数据库和地方数据库的益处:减少对中央数据库的操作次数,先在地方数
11、据库中录入数据有关数据比如本系的修课情况表,当确认准确无误之后再送到中央数据库中。数据一旦被送到中央数据库就不能被随意地修正和删除,这也添加了中央数据库数据的平安性和可靠性。数据过于庞杂易于各部门开发本人公用的地方数据库分类3.1 Visual Basic中的数据访问Jet Jet :Visual Basic Visual Basic 提供的数据库引擎提供的数据库引擎JetJet数据库引擎接口的方法:数据库引擎接口的方法:DataData控件控件Data ControlData Control和数和数据访问对象据访问对象DAODAOVBVB中数据库编程的内容:创建数据访问对象,这些数据访问对中
12、数据库编程的内容:创建数据访问对象,这些数据访问对象对应于被访问的物理数据库的不同部分,如:用这些对象的象对应于被访问的物理数据库的不同部分,如:用这些对象的属性和方法来实现对数据库的操作。属性和方法来实现对数据库的操作。VBVB可以识别三类数据库:可以识别三类数据库:1.Visual Basic1.Visual Basic数据库数据库: :2.2.外部数据库外部数据库: :3.ODBC3.ODBC数据库数据库: :符合符合ODBCODBC规范的客户规范的客户/ /效力器数据库效力器数据库提供有限的不需编程就能访问现存数据库的功能DAO模型那么是全面控制数据库的完好编程接口Database数据
13、库、TableDef表、Field字段Index索引对象。数据库文件运用与Microsoft Access一样的格式dBase III或IVFoxPro 2.0和2.5Paradox版本3.x和4.xMicrosoft ExcelLotus 1-2-3Microsoft SQL Server3.2 Visual Basic 数据库体系构造JetJet引擎的作用:引擎的作用:处置存储、检索、更新数据的构造,并提供了功能强大的、面向对象的处置存储、检索、更新数据的构造,并提供了功能强大的、面向对象的DAODAO编程编程接口接口VBVB数据库运用程序的组成数据库运用程序的组成用户界面Jet 引擎数据
14、库实现“透明访问读取、写入或修正数据库,处置一切内部事物显示数据并允许用户查看或更新数据窗体VB中添加或删除记录,执行查询等Jet包含在一组DLL文件中,被链接到VB程序,把运用程序译成.mdb文件或其它数据库的物理操作。 包含数据表的一个或多个文件2.2.数据库运用程序的存放数据库运用程序的存放 远程数据库远程数据库 客户机客户机/ /效力器数据库效力器数据库3.2 Visual Basic 数据库体系构造数据库数据库引擎用户界面数据库用户界面数据库引擎客户/服务器服务器 客户机 远程 客户/效力器与远程数据库数据库的存放可同时对多个客户机的运用程序提供效力,操作数据库并对每个运用程序前往所
15、恳求的记录4 创建数据库VB中创建数据库途径:中创建数据库途径:1、可视化数据管理器、可视化数据管理器2、DAO3、Microsoft Access4 、外部数据库运用程序、外部数据库运用程序不编程即可创建Jet引擎运用VB的DAO部件可以经过编程的方法创建数据库用 Access创建的数据库和直接在VB中创建的数据库一样,两者用的数据库引擎与格式一样VB可经过ISAM或ODBC驱动程序来访问FoxPro、dBASE或ODBC客户/效力器运用程序4.1 可视化数据管理器数据管理器Data Manager可以用于快速地建立数据库构造及数据库内容。VB的数据管理器是一个独立的可单独运转的运用程序Vi
16、sdata.exe。随安装过程放置在VB目录中,可以单独运转,也可以在VB开发环境中启动它。凡是VB有关数据库的操作,比如数据库构造的建立、记录的添加及修正以及运用ODBC衔接到效力器端的数据库,如SQL Server,都可以利用此工具来完成。启动数据管理器的方法:翻开VB 外接程序可视化数据管理器 VisData 窗体工具栏提供了三组9个按钮在以下图中引见以VB提供的Biblio.mdb数据库为实例引见。 文件翻开数据库VB目录下的Biblio.mdb 确定表类型记录集动态集类型记录集快照类型记录集显示数据表数据群组按钮打开 Biblio.mdb 后的 VisData 窗口窗体窗口事务方式群
17、组按钮所进展的增、删、改、查等操作直接更新数据库中的数据在内存中操作,不直接影响数据库只能读,不能改进展事物处置图1 数据管理器1、建立数据库建立数据构造建立数据构造文件文件新建新建Microsoft Access 版本版本7.0 输入存储的文件名输入存储的文件名如图如图1添加数据表添加数据表鼠标右键鼠标右键新表新表出现出现“构造表构造表 表称号:课程表称号:课程单击单击“添加字段添加字段 输入字段内容输入字段内容称号:课程名、授课学期、学时数等称号:课程名、授课学期、学时数等类型:类型:text或或integer大小:不定大小:不定建立索引建立索引数据库窗口在窗体上运用DBGrid控件课程鼠
18、标右键翻开显示以下图录入数据3.建立查询对已有数据的数据表进展有条件或无条件查询 VisData窗口适用程序查询生成器右键新查询输入查询条件4.2 数据访问对象DAODAO的引入:的引入:数据管理器:只适宜于做比较简单的运用,假设要实现复杂的运用系统,数据管理器:只适宜于做比较简单的运用,假设要实现复杂的运用系统,运用运用VBVB提供的数据访问对象提供的数据访问对象DAODAO,DAODAO是经过编程来直接控制是经过编程来直接控制JETJET数据数据库引擎,来实现复杂的数据库运用系统。库引擎,来实现复杂的数据库运用系统。DAODAO的分层构造:的分层构造:数据访问对象是以分层方式组织而成的,大
19、多数对象成员都是一个对象数据访问对象是以分层方式组织而成的,大多数对象成员都是一个对象类别的集合,而这个集合又隶属于上一层的另一个对象类别,类别的集合,而这个集合又隶属于上一层的另一个对象类别,大多数数据访问对象被描画为大多数数据访问对象被描画为“对象和集合。分层构造的顶部是对象和集合。分层构造的顶部是Microsoft JetMicrosoft Jet数据库引擎本身数据库引擎本身DBEngineDBEngine对象。它是独一不被其它对对象。它是独一不被其它对象所包含的数据访问对象象所包含的数据访问对象对象分层构造经过对象分层构造经过“包含一种其它对象的包含一种其它对象的“集合实现,集合对象用
20、于集合实现,集合对象用于包含其它对象,集合中的对象都是同一类型的。包含其它对象,集合中的对象都是同一类型的。 DAO DAO分层构造中的元素实践上是类,而不是对象,它们是对象的分层构造中的元素实践上是类,而不是对象,它们是对象的“蓝图。蓝图。类与数据类型类似,它只描画所援用的对象的类与数据类型类似,它只描画所援用的对象的“类型。例如,声明类型。例如,声明 Dim MyWs As WorkspaceDim MyWs As WorkspaceMyWs是一个代表Workspace类型的对象的变量DBEngine对象WorkSpaces集合对象WorkSpace对象DataBases集合对象DataB
21、ase对象RecordSets集合对象QueryDefs集合对象TableDefs集合对象Relations集合对象Contains集合对象RecordSets对象QueryDefs对象TableDefs对象Relations对象Contains对象FieldFieldParamterFieldIndexFieldDocumentField. . . DAO分层构造图DAO创建数据库的步骤:创建数据库的步骤:创建新数据库的第一步是创建创建新数据库的第一步是创建Database对象本身,然后添加与设计相一致的对象本身,然后添加与设计相一致的TableDef和和Field对象来定义其构造,方法:对
22、象来定义其构造,方法:1、运用、运用Dim语句给数据库中的每一个对象创建对象变量。除了构造构成环境的语句给数据库中的每一个对象创建对象变量。除了构造构成环境的DBEnigne和和缺省的缺省的Workspace对象外,还需求:对象外,还需求:一个一个Database对象对象每个表需求一个每个表需求一个TableDef对象对象每个表中的每个字段需求一个每个表中的每个字段需求一个Field对象对象每个表中的每个索引需求一个每个表中的每个索引需求一个Index对象对象如:用如下代码创建一个数据库对象变量:数据库名:如:用如下代码创建一个数据库对象变量:数据库名: JXGL.mdb Dim MyDb A
23、s Database, MyWs As WorkspaceDim StuTd As TableDef, TeaTd As TableDef, CosTd As TableDef, XKTd As TableDef, SKTd As TableDef Dim StuFlds(5) As Field, TeaFlds(4) As Field, CosFlds(4) As Field, XKFlds(5) As Field, SKFlds(5) As FieldDim StuIdx As Index, TeaIdx As Index, CosIdx As Index, XKIdx(2) As Ind
24、ex, SKIdx(2) As Index4.2 数据访问对象4.2 数据访问对象 DAO创建数据库的步骤2 2、运用、运用WorkspaceWorkspace对象的对象的CreateDatabaseCreateDatabase方法创建新的数据库。方法创建新的数据库。Set MyWs = DBEngine.Eorkspaces(0)Set MyWs = DBEngine.Eorkspaces(0)Set MyDb = MyWs.CreateDatabase(Set MyDb = MyWs.CreateDatabase(“C:VBJXGL.mdbC:VBJXGL.mdb,dbLangGenera
25、l,dbVersion03),dbLangGeneral,dbVersion03)3 3、运用、运用DatabaseDatabase对象的对象的CreateTableDefCreateTableDef方法为数据库中的一切表创建新的方法为数据库中的一切表创建新的TableDefTableDef对象。如本例中:对象。如本例中:Set StuTd = MyDB.CreateTableDef(Set StuTd = MyDB.CreateTableDef(“学生学生) )Set TeaTd = MyDB.CreateTableDef(Set TeaTd = MyDB.CreateTableDef(“教
26、师教师) )Set CosTd = MyDB.CreateTableDef(Set CosTd = MyDB.CreateTableDef(“课程课程) )Set XKTd = MyDB.CreateTableDef(Set XKTd = MyDB.CreateTableDef(“修课修课) )Set SKTd = MyDB.CreateTableDef(Set SKTd = MyDB.CreateTableDef(“授课授课) )4、运用、运用TableDef对象的对象的CreateField方法,为表中每个字段创建方法,为表中每个字段创建Field对象,然后设置对象,然后设置每个字段的属性
27、来定义字段的长度、数据类型和其它所需的属性。例如,下面的每个字段的属性来定义字段的长度、数据类型和其它所需的属性。例如,下面的代码用来创建代码用来创建JXGL.mdb数据库中的课程表:数据库中的课程表:Set CosFlds(0) = CosTd.CreateField(“课程号课程号,dbText)Set CosFlds(0).Size = 10Set CosFlds(1) = CosTd.CreateField(“课程名课程名,dbText)Set CosFlds(1).Size = 20Set CosFlds(2) = CosTd.CreateField(“授课学期授课学期,dbInte
28、ger)Set CosFlds(3) = CosTd.CreateField(“学时数学时数,dbInteger)5、用、用Append方法把每个字段添加到表中,并把每个表添加到数据库中。例如:方法把每个字段添加到表中,并把每个表添加到数据库中。例如:CosTd.Fields.Append CosFlds(0)CosTd.Fields.Append CosFlds(1)CosTd.Fields.Append CosFlds(2)CosTd.Fields.Append CosFlds(3)MyDb.TableDefs.Append CosTd4.2 数据访问对象 DAO创建数据库的步骤用数据库表
29、添加索引的步骤:1.用TableDef对象中的CreateIndex方法给每个表创建索引,并设置其属性:Set CosIdx = CosTd.CreateIndex(“课程号)CosIdx.Primary = True是主码CosIdx.Unique = Ture值不重2.用Index对象的Createfield方法给每个索引对象创建字段:Set NewFld = CosIdx.CreateField(“课程号)3.把字段追加到Index中,然后把Index清查到TableDef对象中:CosIdx.Fields.Append NewFldCosTd.Indexes.Append AuIdx
30、留意:用Index对象中的CreateField方法创建的字段不添加到TableDef中,而是添加到Index对象中,并给Name属性赋值,该属性与被索引的TableDef字段中的Name属性一样。不用指定Index对象中字段的Type(类型)和Size(大小)属性。4.3 添加索引建好数据库之后,还要指定索建好数据库之后,还要指定索引及各表间的关系:用引及各表间的关系:用CreatIndex方法可以给方法可以给TableDef定义的表添加索引,用定义的表添加索引,用Index对对象的象的CreatField方法创建新的方法创建新的Field指定被索引的字段指定被索引的字段4.4 添加关系和援
31、用完好性Jet数据库引擎提供了Relation对象来强迫援用的完好性,以防止出现不一致的记录。给数据库添加关系的步骤:1.用Database对象的CreateRelation方法创建Relation对象,然后设置其table和ForeignTable属性:Dim Stu_XK As RelationSet Stu_XK = MyDb.CreateRelation(“Student_XK)Stu_XK.Table = “学生Stu_XK.ForeignTable = “修课2.用Relation对象中的CreateField方法,创建一个字段,用来定义关系中的主码和外码字段。Dim TempFi
32、eld As FieldSet TempField = Stu_XK.CreateField(“学号)TempField.ForeignName = “学号3.用Append方法把Field对象添加到Relation中,然后把Relation添加到Database中。Stu_XK.Fields.Append TempFieldMyDb.Relations.Append Stu_XK在添加和删除记录时必需坚持援用的完好性以确保数据库中的关系有用5 创建数据库运用程序5.1 数据控件Data Control数据控件是衔接数据库中的信息和用户用来显数据控件是衔接数据库中的信息和用户用来显示信息的依靠
33、控件,是简单数据库运用程序示信息的依靠控件,是简单数据库运用程序的中心。依靠控件是为处置创建数据库运用的中心。依靠控件是为处置创建数据库运用程序的数据控件而建立的控件。数据控件用程序的数据控件而建立的控件。数据控件用于绑定数据库和数据库中的某个表,依靠控于绑定数据库和数据库中的某个表,依靠控件用于绑定表中的某个列。数据控件是件用于绑定表中的某个列。数据控件是VB工工具箱中的一个可用控件,设置数据控件的步具箱中的一个可用控件,设置数据控件的步骤:骤:翻开翻开VB选择选择Data控件控件在窗体中画出在窗体中画出Data控控件件设定设定Data控件的控件的DatabaseName和和RecordSo
34、urce属性。属性。用于绑定某个数据库用于绑定数据库中的某个表文本框、标签、校验框、图片框、图像等5 创建数据库运用程序 5.2 创建一个简单的运用程序 例:创建一个课程表运用程序:例:创建一个课程表运用程序:1、建立窗体:、建立窗体: 翻开翻开VB 添加添加Data控件控件设置控件的属性设置控件的属性添加依靠添加依靠控件控件设置依靠控件属性。设置依靠控件属性。 Name:Course Name:Course Caption: Caption:课程课程DatabaseName: DatabaseName: JXGL.mdbJXGL.mdbRecordSource:RecordSource:课程课程文本框名绑定字段对应标签的标题Text1课程号课程号:Text2课程名课程名:Text3授课学期授课学期:Text4学时数学时数:数据访问窗体设置的数据访问窗体设置的DataFieldDataField和和CaptionCaptionVBVB设置屏幕设置屏幕 2. 2.阅读数据库中数据:阅读数据库中数据:单击运转按钮,结果如下:单击运转按钮,结果如下:5 创建数据库运用程序 5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑装饰施工中的质量保证措施考核试卷
- 中药材种植的农业生态环境保护法制建设考核试卷
- 批发业务会计与财务管理考核试卷
- 文化空间营造考核试卷
- 体育运动训练中的运动康复技术考核试卷
- 体育航空运动飞行器空中交通管制操作考核试卷
- 宠物友好邮轮旅行船上宠物友好娱乐活动策划分享考核试卷
- 走路的安全课件
- 劳动合同补充合同范本
- 绿化租赁合同范本
- 筋膜刀的临床应用
- DB32-T 4790-2024建筑施工特种作业人员安全操作技能考核标准
- 2022年安徽阜阳太和县人民医院本科及以上学历招聘笔试历年典型考题及考点剖析附带答案详解
- 2024-2030年中国反刍动物饲料行业市场发展趋势与前景展望战略分析报告
- 护理团体标准解读-成人氧气吸入疗法护理
- 幼儿园大班《识字卡》课件
- 2024-2030全球与中国宠物医院市场现状及未来发展趋势
- 《研学旅行课程设计》课件-2认识研学旅行的参与方
- 安全警示教育的会议记录内容
- 夫妻异地辞职信
- 2024年度-银行不良清收技巧培训课件(学员版)
评论
0/150
提交评论