数据库课程设计图书管理系统.docx

上传人:小飞机 文档编号:4264416 上传时间:2023-04-12 格式:DOCX 页数:26 大小:458.77KB
返回 下载 相关 举报
数据库课程设计图书管理系统.docx_第1页
第1页 / 共26页
数据库课程设计图书管理系统.docx_第2页
第2页 / 共26页
数据库课程设计图书管理系统.docx_第3页
第3页 / 共26页
数据库课程设计图书管理系统.docx_第4页
第4页 / 共26页
数据库课程设计图书管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《数据库课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书管理系统.docx(26页珍藏版)》请在三一办公上搜索。

1、数据库系统原理课程设计课题名称:图书信息管理系统 姓 名: 班 级: 学 号: 指导老师: 2014年 01月 02日目录1.绪论3 背景介绍3 开发背景的选用及介绍32.需求分析4 系统分析4 系统目标4总体需求43.概念设计阶段5 实体E-R图5 数据流程图84.逻辑结构设计阶段8 E-R图转换为关系模型8 数据字典95物理结构设计阶段10 物理设计阶段的目标和任务10 数据存储方面106.数据库实施与维护10 创建数据库,数据表10 创建视图12 创建索引13 创建触发器13 数据表的初始化14 初始表的显示167数据库界面实现19系统总的功能模块图19 系统的实现198.心得体会251

2、.绪论 背景介绍随着社会的发展,人们对于知识的需求也在不断地增长。书籍作为人们获取并增长知识的主要途径,使得图书馆在人们生活中占有了一定位置。但是近几年来,随着书量的不断增长,造成了书库空间极度不足,图书挤压,管理不善。这些都直接影响了读者对图书馆藏书的充分利用。这时图书馆就特别需要开发一套书刊租借管理系统,通过该系统来提高图书馆的管理效率,从而减少管理方面的工作流和成本。?一个现代化的图书馆在正常运营中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息,还书信息。面对图书馆数以万计的图书,纷繁复杂的读者信息,频繁更替的借还书信息,传统的直接方法不但管理出现漏洞,造成损失。因此有一

3、个智能化、系统化、信息化的图书管理系统十分重要的。充分利用计算机的功能实现对读者管理、书籍管理,借阅管理等自动化控制,将会使图书馆的工作大大减弱。方便友好的图形界面、简便的操作、完善的数据库管理。将会使得图书馆系统极大限度的应用于现代化图书管理中。 开发背景的选用及介绍 SQL Server 2005的简介SQL是英文(Structured? Query Language)的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大

4、多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。SQL语言有以下几个优点:1. 非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它

5、决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。2. 统一的语言 SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。3. 所有关系数据库的公共语言 由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。 java简介java是一种可以撰写跨平台应用的面向对象的程

6、序设计语言,是由公司于1995年5月推出的Java程序设计语言和(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应3用于个人PC、游戏控制台、移动电话和,同时拥有全球最大的开发者专业社群。在全球云计算和的产业环境下,Java更具备了显着优势和广阔前景。2.需求分析 系统分析书刊租借系统(以高校的图书管理系统为例)是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。 在数据库应

7、用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。 系统目标1. 用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己的借书情况和个人情况。2. 用户在借书超期的情况下得到来自管理员的提醒。3. 管理员可以方便进行图书管理,用户管理,管理员管理。图书管理包括图书信息以及图书分类的添加,修改,删除。用户管理包括用户

8、信息的添加,删除,修改和锁定(限制用户的正常使用功能,使其无法登陆)。管理员管理包括管理员信息的添加,删除,修改等。4. 用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。5. 未注册用户读者也可以浏览所有的图书信息和分类信息,但是无法借阅。6. 考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。总体需求书刊租借系统(以高校图书馆为例)是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解

9、需求。系统利用java与数据库结合的技术建立数据库管理系统,采用交互式的图形用户界面(GUI)来实现。需求调查是为了研究系统设计的开发途径和方法。同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据。具体分析如下:添加操作:在执行操作时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,如果存在会报错,程序返回上个页面,不执行添加操作。删除操作:考虑到了字段在不同表中可能会同时存在的情况,比如:删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的所有图书查看或者是该用户的全部借书查看。直到这种关联取消掉之后才允许进行

10、删除这样的危险操作。查询操作:考虑到了模糊查询的实现, SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是name like %。组合查询的实现也是程序判断用户所做的选择或者输入,在SQL语句中实现的。超期统计:假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了。由用户借书记录中的用户编号到用户表中查找该用户。发送消息:往消息表中添加数据,该数据包含用户名,用户超期的图书

11、,超期时间,罚金等相关警告信息。当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看。数据库备份和还原操作:程序只要告诉SQL 服务器执行备份和还原SQL语句就可以实现,在还原时程序还在使用系统数据库,此时执行还原操作会因为没有排它使用权出现错误,所以应告诉SQL 服务器使用另外的一个数据库,程序中用的是:use master。还原操作时用FSO组件首先检查备份数据库文件是否存在,如果不存在则给出提示回到上个页面。所有条件都允许后则执行还原操作,如果数据库数据比较多,备份和还原的时间都可能会比较长。3.概念设计阶段 实体E-R图书刊租借系统

12、有书籍类别实体,书籍实体,读者实体,还书记录实体,借书记录实体,罚款金额实体等。3 书籍种类实体E-R图种类名称种类编号书籍种类 书籍实体E-R图书籍名称书籍编号书籍种类借阅情况作者书籍单价出版社出版日期 读者实体E-R图性别姓名借书证号读者读者类别注册日期 借书记录实体E-R图书籍编号书籍名称姓名借书记录借书证号应还时间借阅时间 还书记录实体E-R图借书证号书籍编号姓名还书记录归还时间借阅时间书籍名称 还书记录实体E-R图借书证号书籍编号姓名罚款信息罚款金额超期时间书籍名称 总的E-R图(略去实体属性)书籍种类还书记录信息登记归还书籍借阅借书记录读者罚款罚款信息 数据流程图图书馆管理员还书记

13、录借书记录图书归还处理检查读者身份检查图书是否可借填写借阅库,修改图书库借阅库图书库借阅库图书库填写归还记录修改图书记录有效可借填写借阅记录借阅信息修改4.逻辑结构设计阶段 E-R图转换为关系模型 书籍种类(种类编号,种类名称)书籍(书籍编号,书籍名称,书籍种类,作者,出版社,出版时间,单价,是否可借)读者(借书证号,姓名,性别,读者类别,注册日期)借书记录(姓名,书籍编号,书籍名称,借书证号,借阅时间,应还时间)还书记录(姓名,书籍编号,书籍名称,借书证号,借阅时间,归还时间)罚款信息(书籍编号,书籍名称,借书证号,姓名,超期时间,罚款金额) 数据字典 表4-2-1 书籍种类信息表表中列名数

14、据类型及长度可否为空种类编号intNot null种类名称Varchar(30)Not null表4-2-2 书籍信息表表中列名数据种类及长度可否为空书籍编号Varchar(20)Not null书籍名称Varchar(30)Not null书籍种类Varchar(30)Not null作者Char(30)Not null出版社Varchar(30)Null出版日期DatetimeNull单价MoneyNot null是否可借Varchar(20)Not null表4-2-3 读者种类信息表表中列名数据种类及长度可否为空借书证号IntNot null姓名Varchar(10)Nou null性

15、别Char(2)null读者类别Varchar(20)Null注册日期DatetimeNot null表4-2-4 借书记录信息表表中列名数据种类及长度可否为空姓名Varchar(10)Not null书籍编号Varchar(20)Not null书籍名称Varchar(30)Not null借书证号IntNot null借阅时间DatetimeNot null应还时间datetimeNot null表4-2-5 还书记录信息表表中列名数据种类及长度可否为空姓名Varchar(10)Not null书籍编号Varchar(20)Not null书籍名称Varchar(30)Not null借书

16、证号IntNot null借阅时间DatetimeNot null归还时间datetimeNot null表4-2-6 罚款信息表表中列名数据种类及长度可否为空书籍编号Varchar(20)Not null借书证号IntNot null姓名Varchar(10)Not null书籍名称Varchar(30)Not null超期时间IntNot null罚款金额MoneyNot null5物理结构设计阶段 物理设计阶段的目标和任务数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:1) 确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构

17、;2) 对物理结构进行评价,评价的重点是时间和空间效率。 数据存储方面为数据库中各基本表建立的索引如下:1) 由于基本表readers_table,books_table的主码借书证号,书籍编号经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;2) 借阅信息基本表borrow_record_table的一属性借书证号,书籍编号,经常在查询条件中出现,考虑在其之上建立聚簇索引;3) 还书信息基本表return_record_table的一属性借书证号,书籍编号,经常在查询条件中出现,考虑在其之上建立聚簇索引;6.数据库实施与维护 创建数据库,数据表 创建lib

18、arysystem数据库create database libarysystemon primary(name=libarysystem_data,size=10,maxsize=50,filename=D:booklibarysystem_mdf,filegrowth=10%)log on(name=libarysystem_log,size=10MB,maxsize=50MB,filename=D:booklibarysystem_ldf,filegrowth=10MB) 创建books_stytle_table表create table books_stytle_table(种类编号 i

19、nt primary key,种类名称 varchar(30) not null) 创建readers_table表Create table readers_table(借书证号 int primary key,姓名 varchar(10) not null,性别 char(2) default男,读者类别 varchar(20) null,注册日期 Datetime not null) 创建books_table表Create table books_table(书籍编号 varchar(20) primary key,书籍名称 varchar(30) not null,作者 char(30

20、) not null,出版社 varchar(30) null,出版日期 Datetime null,单价 Money not null,借阅情况 varchar(20) not null) 创建borrow_record_table表create table borrow_record_table(姓名 varchar(10) not null,书籍编号 varchar(20) not null,书籍名称 varchar(30) not null,借书证号 int not null,借阅时间 Datetime not null,应还时间 Datetime not null,foreign k

21、ey(书籍编号) references books_table(书籍编号),foreign key(借书证号) references readers_table(借书证号) 创建return_record_table表Create table return_record_table(姓名 varchar(10) not null书籍编号 varchar(20) not null,书籍名称 varchar(30) not null借书证号 int not null,借阅时间 Datetime not null,foreign key(书籍编号) references books_table(书籍

22、编号),foreign key(借书证号) references readers_table(借书证号) 创建reader_fee_table表Create table reader_fee_table(书籍编号 varchar(20) not null,借书证号 int not null,姓名 varchar(10) not null,书籍名称 varchar(30) not null,超期时间 int not null,罚款金额 Money not null,foreign key(书籍编号) references books_table(书籍编号),foreign key(借书证号) r

23、eferences readers_table(借书证号) 创建视图 用于查询图书基本信息的视图定义如下: create view Bookview (借阅证号, 书籍编号, 作者, 出版社, 借阅情况)asSelect 借阅证号, 书籍编号, 作者, 出版社, 借阅情况from books_table 用于读者基本信息查询的视图定义如下:create view Readerview (姓名,j借书证号,注册日期)asselect 姓名,借书证号,注册日期from readers_table 用于显示当前借阅基本信息的视图定义如下:create view Borrowview (借书证号,书籍

24、名称,作者,借阅日期,应还日期)asselect borrow_record_table.借书证号, borrow_record_table.书籍名称,作者,借阅日期,应还日期from borrow_record_table,books_tablewhere .书籍编号=books_table. 书籍编号用于借阅历史信息查询的视图定义如下:create view Historyview (借书证号,书籍名称,借阅日期,归还日期)asselect 借书证号,书籍名称,借阅日期,归还日期from return_record_table用于查询罚款信息的视图定义如下:create view Fine

25、view (姓名,书籍名称,超期时间,罚款金额)asselect 姓名,书籍名称,超期时间,罚款金额from reader_fee_table 创建索引create unique index readersindex on readers_table(借书证号)create unique index booksindex on books_table(书籍编号)create unique index index1 on borrow_record_table(借书证号,书籍编号)create unique index index2 on return_record_table(借书证号,书籍编

26、号) 创建触发器 当删除readers_table表中某一读者基本信息时,触发borrow_record_table表,删除相应的记录create trigger Reader_deleteon readers_tablefor deleteas declare zhao int;select zhao=借书证号from deleteddelete borrow_record_tablewhere 借书证号=zhao当在borrow_record_table表中增加一条借阅记录时,使该图书的状态由“可借”变为“不可借”create trigger Borrow_insert1on borrow

27、_record_tablefor insertas declare BookID char(20);select BookID=书籍编号from insertedupdate books_tableset 借阅情况=不可借where 书籍编号=BookID 数据表的初始化 books_stytle_table表的初始化Insert into books_stytle_table values(1,人文艺术类)Insert into books_stytle_table values(2,自然科学类)Insert into books_stytle_table values(3,工程技术类)in

28、sert into books_stytle_table values(4,文学类)insert into books_stytle_table values(5,政治经济类)insert into books_stytle_table values(6,社会科学类)insert into books_stytle_table values(7,语言技能类) books_table表的初始化Insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(A1001,中国大历史,人文艺术类,黄仁宇,人民文学出版社,2007-02

29、-01,32,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(A1002,中国近现代史纲要,人文艺术类,高等教育出版社,2006-04-01,32,可借insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(B1001,计算机操作系统,自然科学类,汤小丹,梁红兵等,西安电子大学出版社,2001-04-12,32,不可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅

30、情况)values(B1002,计算机网络,自然科学类,谢希仁,电子工业出版社,2003-04-01,32,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(B1003,计算机网络,自然科学类,谢希仁,电子工业出版社,2003-04-01,32,不可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(C1001,线性代数,工程技术类,高等教育出版社,2004-07-01,可借)insert into books_table(

31、书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(C1002,计算方法,工程技术类,李信真,车刚明等,西北工业大学出版社,2001-09-01,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(D1001,百年孤独,文学类,马尔克斯着,闫瑞译,北京燕山出版社,2013-02-14,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(D1002,分成两半的伯爵,文学类,卡尔维诺着,吴正仪译,

32、译林出版社,2002-06-14,不可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(E1001,当代世界经济与政治,政治经济类,李景治,中国人民大学出版社,2002-06-16,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(E1002,经济学原理,政治经济类,高鸿业,中国人民大学出版社,2002-06-01,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,

33、单价,借阅情况)values(F1001,马克思主义基本原理概论,社会科学类,高等教育出版社,2001-06-01,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(F1002,思想道德修养与法律基础,社会科学类,高等教育出版社,2002-09-01,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(G1001,大学英语,语言技能类,郑树棠,外语教学与研究出版社,2003-04-01,可借)insert into boo

34、ks_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(G1002,大学英语,语言技能类,郑树棠,外语教学与研究出版社,2003-04-01,可借) readers_table表的初始化insert into readers_table(借书证号,姓名,性别,读者类别,注册日期)values(31100,王鑫,男,学生,2007-01-01)insert into readers_table(借书证号,姓名,性别,读者类别,注册日期)values(31102,王永胜,男,学生,2008-01-01)insert into readers_table

35、(借书证号,姓名,性别,读者类别,注册日期)values(31101,张倩,女,学生,2009-06-01)insert into readers_table(借书证号,姓名,性别,读者类别,注册日期)values(31103,程辉,男,教师,2010-07-01)insert into readers_table(借书证号,姓名,性别,读者类别,注册日期)values(31104,肖萌,男,职工,2011-07-15) borrow_record_table表的初始化insert into borrow_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,应还时间)val

36、ues(王鑫,B1001,计算机操作系统,31100,2013-12-13,2014-01-03)insert into borrow_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,应还时间)values(王永胜,D1002,分成两半的伯爵,31102,2013-11-13,2014-12-13) return_record_table表insert into return_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,归还时间)values(王鑫,C1001,线性代数,31100,2013-12-13,2013-12-23)insert i

37、nto return_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,归还时间)values(王永胜,E1002,经济学原理,31102,2013-01-13,2013-01-23) reader_fee_table表Insert into reader_fee_table(书籍编号,书籍名称,借书证号,姓名,超期时间,罚款金额)values(B1002,计算机网络,31102,王永胜,3,Insert into reader_fee_table(书籍编号,书籍名称,借书证号,姓名,超期时间,罚款金额)values(A1002,中国大历史,31101,王永胜,5, 初始

38、表的显示 查询readers_table表 查询readers_table表 查询borrow_record_table表 查询return_record_table表 查询readers_fee_table表6.7 数据库关系图7数据库界面实现系统总的功能模块图退出还书登记借书登记欠费查询借阅查询馆藏查询书刊租借信息管理系统 系统的实现 系统主界面图 1 馆藏查询模块l 进入系统主界面后,点击“馆藏查询”按钮,进入“查询系统”界面,如下图:图 2 l 在文本框中输入你需要查询的书籍名称,当我们什么也不输入时,会有提示框出现,如下图: 图 3 l 在文本框中输入你需要查询的书籍名称,比如我们输

39、入计算机网络,点击“检索”按钮,会得到如下结果图 4查询结果显示,图书馆有两本计算机网络,一本已借出l 当图书馆没有我们查询的图书时,查询结果如下图:图 5 借阅登记模块l 进入系统主界面后,点击“借书登记”按钮,进入“借书登记”界面,如下图:图 6 l 在文本框中输入你需要借阅的书籍名称和你的借书证号,比如我们输入计算机网络的书籍编号“B1003”和“31100”(王鑫的借书证号),点击“确定”按钮,会得到如下结果:图 7l 此时说明你已借书成功,我们来验证一下,如,先进入“馆藏查询”模块,在“查询系统”中,如图 2,在文本框中输入计算机网络,结果如下:图 8现在可以看到图书馆里的两本计算机

40、网络的“借阅情况”都变为“不可借” 借阅查询模块l 进入系统主界面后,点击“借阅查询”按钮,进入“借阅查询”界面,如下图:图 9l 在文本框中输入你的名字,比如我们输入“王鑫”,他刚才借了计算机网络这本书,结果如下:图 10 还书登记模块l 进入系统主界面后,点击“还书登记”按钮,进入“还书系统”界面,如下图:图 11l 此时输入你要归还的书籍名称和你的借书证号,比如我们输入计算机网络的书籍编号“B1003”和王鑫的借书证号“31100”,得到以下结果:图 12l 我们对上述结果进行验证,进入“馆藏查询”模块和“借阅查询”模块,在“查询系统”和“借阅查询”分别输入计算机网络和“王鑫”,操作如上,得到结果如下:图 13图 14由上述结果可知,当还书成功后,计算机网络的借阅情况又变回“可借”,而王鑫的对计算机网络的借阅信息已被删除 欠费查询模块l 进入系统主界面后,点击“欠费查询”按钮,进入“欠费查询”界面,如下图:图 15l 在文本框中输入你的名字,比如我们输入“王鑫”,因为他未欠费,会出现如下结果,如下图:图 16l 如果我们在文本框中输入“王永胜”,因为他有欠费,会出现如下结果,如下图:图 17 退出系统

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号