万本电子书0元读

万本电子书0元读

顶部广告

完全手册Visual C# 2008开发技术详解电子书

一本全面讲解C#的学习宝典!程序源代码+多媒体门视频+5个完整典型系统+659页相关技术实用学习电子书。 本书以教程的形式深浅出、由易到难详细地介绍了.NET平台下,关于C#的所有发技术。每个知识和技术要都以例程讲解为主,同时辅以必要的原理和理论说明。这也是程序员特别是初学者非常欢迎的讲解方式。本书以在展示C#基本编程技能的同时,让读者提高解决实际问题的能力为主旨,可以作为学习和发的一个很好的参考。

售       价:¥

纸质售价:¥63.00购买纸书

93人正在读 | 1人评论 6.2

作       者:李容 等

出  版  社:电子工业出版社

出版时间:2008-05-01

字       数:28.5万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:此类商品不支持退换货,不支持下载打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
C#是Microsoft专门为基于.NET Framework平台发而量身定做的编程语言。本书全面细致地介绍了Visual Studio 2008环境下的C#编程技术。书中每个知识和技术要都给予了翔实的例程及代码分析。 本书从C#门基础知识到C#的基本语法、从面向对象基础到泛型程序设计、从数据库操作到网络与安全编程、从ADO.NET到XML操作、从控制台应用程序发到ASP.NET Web应用程序发,再到Web服务程序发等内容作了详细介绍,几乎涵盖了C#相关的所有发技术。同时以较大篇幅介绍了C# 2008中的重要特性,如泛型、GDI+、ASP.NET,以及数据操作控件等。最后介绍两个案例,并给出详细的设计过程及代码说明,以巩固和加深本书介绍的知识。 全书配合了大量的图例及代码说明,如果你希望掌握有关C#面向对象编程技术,那么本书将是不错的选择;如果你已经有这方面的编程经验,本书也可以作为学习和发的一个很好的参考。 C#是Microsoft专门为基于.NET Framework平台发而量身定做的编程语言。本书全面细致地介绍了Visual Studio 2008环境下的C#编程技术。书中每个知识和技术要都给予了翔实的例程及代码分析。 本书从C#门基础知识到C#的基本语法、从面向对象基础到泛型程序设计、从数据库操作到网络与安全编程、从ADO.NET到XML操作、从控制台应用程序发到ASP.NET Web应用程序发,再到Web服务程序发等内容作了详细介绍,几乎涵盖了C#相关的所有发技术。同时以较大篇幅介绍了C# 2008中的重要特性,如泛型、GDI+、ASP.NET,以及数据操作控件等。最后介绍两个案例,并给出详细的设计过程及代码说明,以巩固和加深本书介绍的知识。 全书配合了大量的图例及代码说明,如果你希望掌握有关C#面向对象编程技术,那么本书将是不错的选择;如果你已经有这方面的编程经验,本书也可以作为学习和发的一个很好的参考。
【推荐语】
一本全面讲解C#的学习宝典!程序源代码+多媒体门视频+5个完整典型系统+659页相关技术实用学习电子书。 本书以教程的形式深浅出、由易到难详细地介绍了.NET平台下,关于C#的所有发技术。每个知识和技术要都以例程讲解为主,同时辅以必要的原理和理论说明。这也是程序员特别是初学者非常欢迎的讲解方式。本书以在展示C#基本编程技能的同时,让读者提高解决实际问题的能力为主旨,可以作为学习和发的一个很好的参考。
【作者】
李容,长期从事气象雷达、移动气象站后台信息处理及软件发工作。拥有多年数据结构、数值算法、图象处理等方面的研究与设计经验。专注于.NET的C#编程和C++编程。完成相关重要科研10余个,曾多次担任.NET软件发授课讲师。
目录展开

摘要

前言

第一篇 C#2008入门必备

第1章 认识C#

1.1 什么是C#

1.1.1 Microsoft.NET框架

1.1.2.NET框架的开发语言——C#

1.1.3 C#的开发平台Visual Studio 2008

1.2 第一个C#程序

1.2.1 认识和配置Visual Studio 2008开发环境

1.2.2 第一个Windows Console程序

1.2.3 创建Windows Console程序

1.2.4 解决方案资源管理器

1.2.5 属性窗口

1.2.6 第一个Windows Form程序

1.2.7 创建Windows Form程序

1.2.8 Windows Form程序创建技巧

1.2.9 第一个ASP.NET程序

1.2.10 创建ASP.NET程序

1.2.11 Web程序和Windows程序的区别

1.3 一个优秀的开发助手——MSDN

1.4 小结

第二篇 C#语法及面向对象基础

第2章 C#语法基础

2.1 C#的基本语法

2.2 变量

2.2.1 变量的声明

2.2.2 变量的赋值

2.2.3 简单数据类型

2.2.4 使用简单数据类型

2.2.5 使用struct创建结构类型

2.2.6 结构类型例程

2.2.7 定义结构的构造函数

2.2.8 类型转换

2.2.9 隐式转换

2.2.10 显式转换

2.2.11 根据参与类型转换的划分

2.3 常量

2.3.1 静态常量

2.3.2 动态常量

2.3.3 使用动态常量

2.4 表达式

2.4.1 数学运算符

2.4.2 普通数学运算符

2.4.3 自加和自减运算符

2.4.4 赋值运算符

2.4.5 比较运算符

2.4.6 运算符的优先级

2.4.7 命名空间

2.4.8 嵌套命名空间

2.5 流程控制

2.5.1 分支语句

2.5.2 三元运算符

2.5.3 if语句

2.5.4 使用if语句

2.5.5 程序流程

2.5.6 switch语句

2.5.7 使用switch语句

2.5.8 goto语句

2.5.9 循环语句

2.5.10 do-while语句

2.5.11 使用do-while语句

2.5.12 while语句

2.5.13 使用while语句

2.5.14 for语句

2.5.15 使用for语句

2.5.16 foreach循环语句

2.5.17 循环中断语句

2.5.18 使用break语句

2.5.19 使用continue语句

2.5.20 使用return语句

2.6 小结

第3章 C#面向对象基础

3.1 类的基本概念

3.1.1 C#中的类定义

3.1.2 字段

3.1.3 常量

3.1.4 域

3.1.5 类的方法

3.1.6 类的属性

3.1.7 类的索引器

3.1.8 类的构造函数和析构函数

3.1.9 事件

3.2 Visual Studio中的类向导

3.3 事件和委托

3.3.1 委托

3.3.2 委托的事件处理程序

3.3.3 委托中的GUI事件

3.4 面向对象的特征

3.4.1 继承

3.4.2 多态

3.4.3 封装

3.4.4 重载

3.4.5 方法重载

3.4.6 运算符重载

3.5 接口

3.5.1 接口的声明

3.5.2 接口的使用

3.6 面向对象的其他主题

3.6.1 命名空间

3.6.2 程序集

3.6.3 类库

3.7 小结

第4章 字符串处理

4.1 字符串的常用功能

4.1.1 字符串的比较

4.1.2 字符串的格式化

4.1.3 字符串的大小写转换

4.1.4 字符串的拆分与截取

4.2 StringBuilder类

4.2.1 字符串对象的追加

4.2.2 字符串的插入、删除与替换

4.3 正则表达式

4.3.1 System.Text.RegularExpression命名空间

4.3.2 正则表达式的语法

4.3.3 正则表达式验证用户输入

4.3.4 使用正则表达式来替换字符串

4.4 小结

第5章 数组处理

5.1 创建数组

5.2 多维数组

5.3 动态数组

5.3.1 创建简单的动态数组

5.3.2 动态数组的排序

5.4 数组的特殊操作

5.4.1 作为参数传递的数组

5.4.2 将一维数组作为参数传递

5.4.3 将多维数组作为参数传递

5.4.4 数组的数组

5.5 小结

第6章 集合与泛型

6.1 什么是集合

6.2 SortedList可排序数组集合

6.3 Queue消息队列集合

6.4 Stack栈集合

6.5 HashTable哈希表集合

6.6 集合中的一些重要概念

6.6.1 集合中的索引器

6.6.2 集合中的迭代器

6.6.3 深度复制

6.7 为集合使用泛型

6.7.1 定义泛型类

6.7.2 定义泛型接口

6.7.3 定义泛型方法

6.7.4 定义泛型委托

6.8 小结

第7章 代码调试

7.1 Visual Studio 2008中的调试

7.1.1 正常模式下的调试

7.1.2 中断模式下的调试

7.2 错误和异常处理

7.2.1 使用try…catch…finally语句

7.2.2 常见异常类型

7.2.3 创建和抛出自定义的异常

7.3 小结

第三篇 窗体应用程序开发

第8章 编写Windows窗体应用程序

8.1 一个Windows窗体程序的深入分析

8.1.1 一个典型的Windows窗体程序

8.1.2 调试Windows窗体程序

8.1.3 调试总结

8.2 Windows窗体基本设计内容

8.2.1 设置窗体的位置与大小

8.2.2 人工设置窗体的位置与大小

8.2.3 设置窗体的位置与大小的其他方法

8.2.4 设置窗体的边框

8.2.5 使用属性窗口设置窗体边框

8.2.6 在代码中设置各种窗体边框

8.2.7 设置控件框和最小化、最大化、关闭按钮

8.2.8 在程序中设置最小化、最大化、关闭按钮

8.2.9 设置控件框按钮

8.2.10 窗体的事件

8.2.11 Load事件

8.2.12 鼠标悬停事件

8.2.13 按键事件

8.2.14 鼠标单击事件

8.3 SDI应用程序、MDI应用程序和菜单

8.3.1 基于对话框的应用程序

8.3.2 单文档(SDI)应用程序

8.3.3 多文档(MDI)应用程序

8.3.4 菜单

8.3.5 多文档、单文档和菜单的设计方法

8.4 快捷菜单(ContextMenuStrip)

8.5 小结

第9章 使用Windows窗体控件

9.1 控件

9.1.1 控件的属性

9.1.2 使用Dock属性布局控件

9.1.3 控件的事件

9.1.4 为控件添加事件

9.2 TextBox、RichTextBox和Button控件

9.2.1 使用Button控件实现按钮功能

9.2.2 为Button控件设置图片和显示样式

9.2.3 使用TextBox控件实现文本的输入和输出功能

9.2.4 一个Button和TextBox控件的综合实例

9.2.5 综合实例说明

9.3 Label和LabelLink控件

9.3.1 使用Label控件实现标签功能

9.3.2 使用LinkLabel控件实现超链接设置

9.4 RadioButton和CheckBox控件

9.4.1 使用RadioButton控件实现单选功能

9.4.2 使用CheckBox控件实现复选功能

9.4.3 一个相应单选和复选事件的实例

9.5 使用GroupBox和Panel控件实现控件的分组

9.6 ListView控件

9.6.1 设置ListView控件的属性

9.6.2 ListView控件的事件

9.6.3 一个读写ListView控件的实例

9.6.4 添加窗体的加载事件处理程序

9.6.5 程序运行效果

9.6.6 读取XML数据并填充ListView

9.6.7 VS2008中建立XML

9.6.8 VS2008中读取XML并填充ListView

9.6.9 将ListView数据写入XML

9.6.10 AfterLabelEdit事件

9.6.11 ListView各项的修改

9.7 TreeView控件

9.7.1 TreeView的属性和事件

9.7.2 TreeView树读取并显示XML节点

9.7.3 程序运行结果及说明

9.8 小结

第10章 GDI+概述

10.1 GDI+的工作原理

10.2 图形绘制基础

10.2.1 Graphics类

10.2.2 Pen类的用法

10.2.3 Brush类的用法

10.2.4 Font类的用法

10.3 GDI+的一些实例

10.3.1 图像的缩放

10.3.2 图像的剪切

10.3.3 图像的旋转

10.3.4 图像的切换显示

10.3.5 图片的打印和打印预览

10.3.6 自己写播放器

10.4 小结

第11章 文件的操作

11.1 流的概念

11.2 用于输入和输出的类

11.2.1 文件的移动、删除和复制

11.2.2 目录的移动、删除和复制

11.2.3 流和文件的读写

11.3 对话框

11.3.1 文件对话框

11.3.2 字体对话框

11.3.3 颜色对话框

11.3.4 页面设置

11.3.5 打印预览对话框和打印对话框

11.4 高级主题

11.4.1 监控文件结构

11.4.2 文件异步写入

11.5 小结

第12章 部署Windows应用程序

12.1 Windows Installer部署

12.1.1 创建部署

12.1.2 在部署中编辑器

12.1.3 文件系统编辑器

12.1.4 用户界面编辑器

12.1.5 文件类型编辑器

12.1.6 启动条件编辑器

12.1.7 注册表编辑器

12.1.8 自定义操作编辑器

12.2 Windows Installer部署安装全过程

12.2.1 欢迎

12.2.2 自述文件

12.2.3 许可协议

12.2.4 客户信息

12.2.5 注册用户和复选框

12.2.6 选择安装文件夹和确认安装

12.2.7 进度和安装提示

12.2.8 安装完成

12.3 程序的卸载和修复

12.4 VS2005中的其他打包方式

12.5 ClickOnce部署

12.5.1 部署策略的选择

12.5.2 创建ClickOnce部署

12.5.3 安装全过程

12.6 两种部署方式的比较

12.7 小结

第四篇 C#数据存取

第13章 数据库基础知识

13.1 SQL Server 2005的安装

13.2 Transact-SQL语言

13.2.1 Transact-SQL的特点

13.2.2 数据控制语言

13.2.3 数据定义语言

13.2.4 数据操纵语言

13.2.5 事务管理语言

13.2.6 其他附加语言

13.3 表

13.3.1 创建、修改和删除表

13.3.2 操纵表中的数据

13.3.3 主键约束

13.3.4 外键约束

13.3.5 唯一性约束

13.3.6 CHECK约束

13.3.7 默认约束

13.4 存储过程

13.4.1 创建存储过程

13.4.2 执行和删除存储过程

13.4.3 SQL Server 2005中的存储过程向导

13.5 触发器

13.5.1 创建和使用触发器

13.5.2 SQL Server 2005中的触发器向导

13.6 事务和锁

13.6.1 事务

13.6.2 锁

13.7 小结

第14章 利用ADO.NET访问数据库

14.1 ADO.NET中的图形化方式

14.1.1 连接到数据库

14.1.2 在VS2008中创建数据库

14.1.3 使用SqlDataAdapter对数据库中表的查询

14.1.4 添加、删除和修改数据库中的内容

14.2 ADO.NET中的.NET数据提供者

14.3 ADO.NET中的DataSet组件

14.3.1 DataSet的结构

14.3.2 为DataSet创建和删除表

14.3.3 在表中列和行的添加和删除

14.3.4 设置表的主键

14.3.5 为DataSet中的表添加约束

14.3.6 为DataSet中的表添加关系

14.3.7 DataSet中的导航功能

14.3.8 DataSet与XML的交互

14.4 ADO.NET操作存储过程

14.5 ADO.NET操作触发器

14.5.1 创建触发器

14.5.2 修改和删除触发器

14.6 ADO.NET 3.5的高级特性简介

14.7 小结

第15章 在.NET中访问XML

15.1 什么是XML

15.1.1 XML与HTML的区别

15.1.2 为处理XML提供基于标准的支持——System.Xml命名空间

15.2 在.NET中读取XML

15.2.1 使用XmlDocument读取整个XML文件

15.2.2 使用XmlReader的实现类XmlTextReader读取XML文件

15.2.3 使用XmlNodeReader读取XML中的节点

15.2.4 在读取XML文件时使用XmlValidatingReader进行数据验证

15.3 在C#中编写XML文件

15.3.1 使用XmlWriter创建XML文件

15.3.2 使用XmlTextWriter编写XML文件

15.4 使用XPath检索XML文件

15.4.1 XPath的语法

15.4.2 XPath实现检索的综合实例

15.5 修改XML文件中的数据(DOM应用)

15.5.1 利用DOM实现类建立XML文档

15.5.2 一个应用实例

15.5.3 利用DOM实现类添加和删除XML节点

15.5.4 程序运行结果及说明

15.6 小结

第五篇 网络和安全编程

第16章 线程

16.1 线程的创建、启动和终止

16.2 线程的挂起和恢复

16.3 多线程

16.3.1 线程的优先级

16.3.2 lock关键字锁定线程

16.3.3 线程的同步

16.3.4 使用线程池

16.3.5 使用定时器

16.4 线程中的异常

16.5 小结

第17章 Socket编程

17.1 Socket基本原理

17.2 服务器的结构

17.2.1 Socket类成员

17.2.2 Socket类实例:服务器通信

17.2.3 Socket类实例:利用多线程解决服务器通信问题

17.3 客户端的结构

17.4 基于网络流的数据传输

17.4.1 网络流的服务器开发

17.4.2 网络流的客户器开发

17.5 一个基于Socket的C/S模式的完整例子

17.5.1 基于Socket服务器端实现

17.5.2 基于Socket客户端实现

17.5.3 基于Socket的C/S实例的运行

17.6 基于UDP的数据传输

17.6.1 UDP的类库

17.6.2 UDP数据传输实例

17.7 异步通信问题

17.8 小结

第18章.NET安全编程中的密码术

18.1 密码术的基本内容

18.2 对称密码术

18.2.1 DES算法

18.2.2 RC2算法

18.2.3 Rijndael算法

18.3 非对称密码术

18.3.1 RSA算法

18.3.2 其他非对称密码术

18.4 数字签名技术

18.4.1 数字签名的工作原理

18.4.2 一个数字签名的完整例子

18.4.3 数字签名的客户端流程

18.4.4 数字签名的服务器端流程

18.4.5 数字签名实例的运行效果

18.5 小结

第19章.NET中的电子邮件处理

19.1 电子邮件协议SMTP

19.2 使用System.Net.Mail命名空间的类发送电子邮件

19.3 一个发送电子邮件实例

19.3.1 主界面及代码设计

19.3.2 邮件参数配置界面及代码设计

19.3.3 发送界面及代码设计

19.3.4 程序运行效果及说明

19.4 小结

第六篇 Web编程

第20章 Web编程基础

20.1 Web工作原理

20.1.1 超文本传输协议(HTTP)

20.1.2 Web服务器工作原理

20.2 超文本标记语言——HTML

20.2.1 第一个HTML页面

20.2.2 代码说明

20.2.3 将HTML页面修改为动态页面

20.2.4 代码说明

20.3 一种脚本编写语言JavaScript

20.3.1 定义函数

20.3.2 无参函数

20.3.3 有参函数

20.3.4 常用对象的属性和方法

20.3.5 数组对象(Array)

20.3.6 使用数组对象(Array)

20.3.7 日期对象(Date)

20.3.8 使用日期对象(Date)

20.3.9 布尔对象(Boolean)

20.3.10 函数对象(Function)

20.3.11 字符串对象(String)

20.3.12 数值对象(Number)

20.3.13 数学对象(Math)

20.3.14 JavaScript中的事件及事件处理程序

20.3.15 在JavaScript中编写事件处理程序

20.3.16 程序说明

20.3.17 运行效果

20.4 ASP.NET技术

20.4.1 动态服务器编程技术ASP.NET

20.4.2 一个简单的ASP.NET应用程序

20.4.3 程序运行效果及说明

20.5 读写SQL Server 2005数据库

20.5.1 创建数据库和表

20.5.2 配置数据库连接字符串

20.5.3 程序运行效果及说明

20.6 建设优秀网站需要考虑的问题——搜索引擎优化(SEO)

20.6.1 什么是SEO

20.6.2 影响搜索引擎排名的基本因素

20.6.3 对搜索引擎排名不利的因素

20.7 小结

第21章 表单及ASP.NET对象

21.1 表单

21.1.1 表单原理

21.1.2 创建表单

21.1.3 程序运行效果及说明

21.2 5个ASP.NET对象

21.2.1 检索从浏览器发送到服务器的请求信息——Request对象

21.2.2 Request对象中的集合

21.2.3 在程序中使用Cookie

21.2.4 程序运行效果及说明

21.2.5 Request中的Browser对象

21.2.6 Request的其他属性和方法

21.2.7 将数据从服务器发回浏览器——Response对象

21.2.8 共享应用程序全局信息——Application对象

21.2.9 Application的数据存储方式

21.2.10 使用Application对象实现网站的访客数的统计

21.2.11 维护每个客户的个人信息——Session对象

21.2.12 用Session存储数据

21.2.13 Session存储演示

21.2.14 获取服务器信息——Server对象

21.2.15 认识Server对象

21.2.16 Server对象的演示

21.2.17 程序运行效果及说明

21.3 一个聊天室实例

21.3.1 聊天室实例的模块划分

21.3.2 聊天室实例的项目配置

21.3.3 聊天室的登录

21.3.4 聊天室的聊天主界面

21.3.5 发送聊天信息

21.3.6 程序流程及说明

21.3.7 显示聊天记录

21.3.8 聊天演示

21.4 配置Internet信息服务(IIS)管理器

21.5 小结

第22章 Web程序中的服务器端控件

22.1 服务器控件

22.1.1 什么是服务器控件

22.1.2 服务器控件与HTML控件的区别

22.2 数据操作控件

22.2.1 用于连接SQL数据库的数据源控件——SqlDataSource控件

22.2.2 使用SqlDataSource控件

22.2.3 以表的形式显示数据——GridView控件

22.2.4 一次显示一条表格形式的记录——DetailsView控件

22.3 验证控件

22.3.1 限制空字段控件

22.3.2 程序运行效果及说明

22.3.3 比较两个字段控件

22.3.4 检查指定范围控件

22.3.5 表达式验证控件

22.3.6 自定义验证控件

22.3.7 程序运行效果及说明

22.3.8 错误信息汇总控件

22.4 用户控件

22.5 小结

第23章 ASP.NET 3.5高级编程

23.1 为一组页面设计相同的风格——母版(Master Page)

23.1.1 创建Master Page

23.1.2 在Master Page中添加元素

23.1.3 创建Content Page

23.1.4 访问母版页中的控件

23.1.5 嵌套使用Master Page

23.2 主题和皮肤

23.2.1 什么是主题

23.2.2 在主题中创建皮肤文件

23.2.3 动态加载主题

23.3 自定义页面(WebParts)

23.3.1 设置WebParts运行环境

23.3.2 编写一个简单的WebParts页面

23.3.3 编辑WebParts控件

23.3.4 使用CatalogZone控件

23.3.5 导出与导入WebParts控件

23.3.6 使用静态连接实现WebParts控件之间数据传递

23.3.7 使用动态连接实现WebParts控件之间数据传递

23.4 小结

第24章 操作Web Service

24.1 什么是Web Service

24.2 在ASP.NET中创建和调用Web Service

24.2.1 创建Web Service

24.2.2 程序运行效果及说明

24.2.3 使用POST方法调用Web Service

24.3 在应用程序中使用Web Service代理

24.3.1 创建客户端程序

24.3.2 在客户端程序中使用Web Service代理

24.4 一个典型的Web Service调用的例子

24.5 小结

第七篇 综合案例

第25章 图书管理系统

25.1 普通用户模块设计

25.1.1 普通用户模块界面设计

25.1.2 数据库设计

25.1.3 控件事件处理

25.2 管理员模块设计

25.2.1 登录功能

25.2.2 公告栏功能

25.2.3 查看书的目录信息

25.2.4 读取用户留言

25.2.5 管理员登录代码

25.2.6 修改公告栏代码

25.2.7 读取用户意见的代码

25.3 系统启动界面设计

25.4 示例演示

25.5 小结

25.5.1 本章主要内容

25.5.2 窗体间的数据通信

25.5.3 Panel覆盖

25.5.4.txt文件的操作

25.5.5 ADO.NET相关操作

25.5.6 本例完整代码

25.5.7 Form1.cs窗体

25.5.8 Login.cs登录窗体

25.5.9 Board.cs公告版

25.5.10 Read.cs读取窗体

第26章 学生信息管理系统

26.1 系统分析

26.1.1 需求分析

26.1.2 数据库分析

26.1.3 系统模块划分

26.2 学生访问模块设计

26.2.1 数据库设计

26.2.2 系统配置与操作类设计

26.2.3 设计学生用户登录界面及代码

26.2.4 利用母版设计主界面

26.2.5 设计数据显示控件

26.3 教师访问模块设计

26.3.1 数据库设计

26.3.2 操作类设计

26.3.3 设计教师用户登录界面及代码

26.3.4 设计数据显示控件

26.3.5 添加学生信息查找及页面返回功能

26.3.6 实现数据显示控件的分页显示

26.3.7 实现详细信息查看

26.4 管理员访问模块设计

26.4.1 数据库设计

26.4.2 设计操作类及登录验证

26.4.3 设计主界面及数据显示控件

26.4.4 添加学生信息查找及分页功能

26.4.5 添加用户管理功能

26.5 小结

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部