内部类与静态内部类区别及举例

1.内部类与静态内部类的区别

  1. 静态内部类相对与外部类是独立存在的,在静态内部类中无法直接访问外部类中的变量、方法。如果要访问的话,必须要new一个外部类的对象,使用new出来的对象来访问。 但是可以直接访问静态变量,调用静态的方法。

  2. 普通内部类作为外部类一个成员而存在,在普通内部类中可以直接访问外部类属性,调用外部类的方法。

  3. 如果外部类要访问内部类的属性或者调用内部类的方法,必须要创建一个内部类的对象,使用该对象访问属性或者调用方法。

  4. 如果其他的类要访问普通内部类的属性或者调用普通内部类的方法,必须要在外部类中创建一个内部类的对象作为一个属性,外部类可以通过属性调用普通内部类的方法或者访问普通内部类的属性。

  5. 如果其他的类要访问静态内部类的属性或者调用静态内部类的方法,直接创建一个静态内部类对象即可。

2.举例说明

2.1 内部类

public class Father {
    private String name;
   
    public Father(String name) {
        this.name = name;
    }

    public void say(String dogName) {
         Dog dog = new Dog(dogName);
        System.out.println("i am " + name + ", i have a dog " + dog.dogName);
    }
    
    public void feed() {
        System.out.println("feed in Father");
    }
    
    public  class Dog {
        private String dogName;

        public Dog(String dogName) {
            this.dogName = dogName;
        }

        public void bark() {
            feed();
            System.out.println("i am " + dogName + ", i am belong to " + name);
        }
        public String getDogName() {
            return dogName;
        }
    }
}

对于第2条,普通内部类作为成员,可以直接访问外部类的变量,调用其方法。可以看到Dog内中的bark()方法可以直接使用变量name,可以调用feed方法。

对于第3条,我们在Father类中,想要使用Dog类中的属性dogName,必须先实例化一个dog对象,然后通过该对象调用方法,获取变量。

对于第4条,那先创建一个外部类

public class YYTest {
    
    public static void main(String[] args)  {
        final Father zhangsan = new Father("zhangsan");
        Father.Dog gg = zhangsan.new Dog("GG");
        gg.getDogName();
        gg.bark();
    }
}

可以看到,通过对象zhangsan.new Dog()方法实例化一个内部类对象gg,通过该内部类对象可以访问变量,调用方法。

2.2 静态内部类

public class Father {
    private String name;
   private static String sex = "female";
    public Father(String name) {
        this.name = name;
    }

    public void say(String dogName) {
         Dog dog = new Dog(dogName);
        System.out.println("i am " + name + ", i have a dog " + dog.dogName);
    }
    
    public void feed() {
        System.out.println("feed in Father");
    }
    
    public static class Dog {
        private String dogName;

        public Dog(String dogName) {
            this.dogName = dogName;
        }

        public void bark() {
            Father lisi = new Father("lisi");
            lisi.feed();
            System.out.println("i am " + dogName + ", i am belong to " + lisi.name + ", his sex is " + sex);
        }

        public String getDogName() {
            return dogName;
        }
    }
}

对于第1点,可以看到bark()方法中想要使用name属性,需要先实例化Father对象,通过对象调用。而访问静态变量则不需要通过实例化对象,可以直接访问。

对于第1点

public class YYTest {
    
    public static void main(String[] args)  {
        Father.Dog hh = new Father.Dog("HH");
        hh.bark();
    }
}

直接实例化静态内部类即可。注意实例化方法即可。
静态类只能是内部的。

  • 13
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
 针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手,深入研究相关技术,并结合性能调整及丰富的诊断案例,力图将Oracle知识全面、系统、深入地展现给读者。   本书给出了大量取自实际工作现场的实例,在分析实例的过程中,兼顾深度与广度,不仅对实际问题的现象、产生原因和相关的原理进行了深入浅出的讲解,更主要的是,结合实际应用环境,提供了一系列解决问题的思路和方法,包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。 第1章 数据库的启动和关闭 1 1.1 数据库的启动 1 1.1.1 启动数据库到NOMOUNT状态的过程 2 1.1.2 启动数据库到MOUNT状态 18 1.1.3 启动数据库OPEN阶段 26 1.2 数据库的访问 37 1.2.1 客户端的TNSNAMES.ORA文件配置 37 1.2.2 服务器端的监听器文件listener.ora配置 39 1.2.3 通过不同服务器名对数据库的访问 41 1.2.4 动态监听器注册服务 42 1.3 数据库的关闭 46 1.3.1 数据库关闭的步骤 46 1.3.2 几种关闭方式的对比 48 第2章 控制文件与数据库初始化 51 2.1 控制文件的内容 51 2.2 SCN 53 2.2.1 SCN的定义 53 2.2.2 SCN的获取方式 53 2.2.3 SCN的进一步说明 54 2.3 检查点(Checkpoint) 57 2.3.1 检查点(Checkpoint)的工作原理 57 2.3.2 常规检查点与增量检查点 59 2.3.3 LOG_CHECKPOINT_TO_ALERT参数 63 2.3.4 控制文件与数据文件头信息 64 2.3.5 数据库的启动验证 66 2.3.6 使用备份的控制文件 70 2.3.7 FAST_START_MTTR_TARGET 71 2.3.8 关于检查点执行的案例 74 2.3.9 Oracle 10g自动检查点调整 75 2.3.10 检查点信息及恢复起点 78 2.3.11 正常关闭数据库的状况 78 2.3.12 数据库异常关闭的情况 80 2.3.13 数据库并行恢复案例一则 82 2.3.14 判断一个死事务的恢复进度 85 2.4 数据库的初始化 86 2.4.1 bootstrap$及数据库初始化过程 86 2.4.2 bootstrap$的定位 88 2.4.3 Oracle中独一无二的Cache对象 89 2.4.4 Oracle数据库的引导 91 2.4.5 系统对象与bootstrap$ 92 2.4.6 bootstrap$的重要性 94 2.4.7 BBED工具的简要介绍 95 2.4.8 坏块的处理与恢复 97 第3章 参数及参数文件 103 3.1 初始化参数的分类 103 3.1.1 推导参数(Derived Parameters) 103 3.1.2 操作系统依赖参数 104 3.1.3 可变参数 104 3.1.4 初始化参数的获取 105 3.2 参数文件 107 3.2.1 PFILE和SPFILE 108 3.2.2 获取参数的视图 110 3.2.3 SPFILE的创建 111 3.2.4 SPFILE的搜索顺序 112 3.2.5 使用PFILE/SPFILE启动数据库 112 3.2.6 修改参数 113 3.2.7 解决SPFILE参数修改错误 118 3.2.8 重置SPFILE中设置的参数 120 3.2.9 判断是否使用了SPFILE 120 3.2.10 SPFILE的备份与恢复 121 3.2.11 Oracle 11g参数文件恢复 127 3.2.12 如何设置Events事件 128 3.2.13 导出SPFILE文件 129 3.3 诊断案例之一:参数文件 131 3.3.1 登录系统检查告警日志文件 131 3.3.2 尝试重新启动数据库 132 3.3.3 检查数据文件 132 3.3.4 MOUNT数据库,检查系统参数 133 3.3.5 检查参数文件 133 3.3.6 再次检查alert文件 134 3.3.7 修正PFILE 135 3.3.8 启动数据库 135 3.4 诊断案例之二:RAC环境参数文件 135 3.4.1 数据库资源异常 135 3.4.2 问题的发现 136 3.4.3 参数文件问题的解决 137 第4
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2010入门经典(第5版)》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2010入门经典(第5版) 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2010 原出版社: Wrox 作者: (美)Ivor Horton 译者: 苏正泉 李文娟 出版社:清华大学出版社 ISBN:9787302239994 上架时间:2010-12-20 出版日期:2010 年12月 开本:16开 页码:1011 版次:5-1 编辑推荐   本书针对visual c++ 2010版本做了全面更新,介绍了最新开发环境,讲述了如何使用visual c++构建真实世界的应用程序。    采用了容易理解的讲授方法,并提供了详尽的示例,旨在帮助读者掌握编程技巧 内容简介   作者ivor horton采用了容易理解的讲授方法,并提供了详尽的示例,帮助读者迅速地成为一名优秀的c++编程人员。《visual c++ 2010入门经典(第5版)》针对visual c++ 2010版本进行了全面更新,介绍了最新的开发环境和如何使用visual c++构建现实世界中的应用程序。拥有本书,您就迈向了通往使用两种c++版本编写应用程序的成功之路,并成为一名优秀的c++编程人员。    主要内容    ·使用visual c++ 2010支持的两种c++语言技术讲述c++编程的基础知识    ·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素    ·举例说明如何使用mfc开发本地windows应用程序    ·指导读者用c++和c++/cli设计和创建大量的windows应用程序    ·为帮助读者掌握编程技巧,提供了大量可运行的示例和练习 作译者   Ivor Horton是撰著Java、C和C++编程语言图书的杰出作家之一。大家一致认为,他的著作独具风格,无论是编程新手,还是经验丰富的编程人员,都很容易理解其内容。在个人实践中,Ivor Horton也是一名系统顾问。他从事程序设计教学工作已经超过了25年。   苏正泉,1995年毕业于解放军信息工程学院计算机及应用专业,高级工程师。在IT项目管理、软件开发、系统管理和网络管理方面都有非常丰富的实践经验。曾发表过多篇计算机专业论文,并翻译过多部计算机专业技术书籍。   李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发和软件项目管理工作,对计算机语言、计算机体系结构、操作系统都非常熟悉,尤其是精通C和C++编程技术. 目录 封面 -19 封底 -18 扉页 -17 版权 -16 前言 -15 目录 -10 第1章 使用Visual C++ 2010编程 1 1.1 .NET Framework 1 1.2 CLR 2 1.3 编写C++应用程序 3 1.4 学习Windows编程 4 1.4.1 学习C++ 4 1.4.2 C++标准 5 1.4.3 属性 5 1.4.4 控制台应用程序 5 1.4.5 Windows编程概念 6 1.5 集成开发环境简介 7 1.5.1 编辑器 8 1.5.2 编译器 8 1.5.3 链接器 8 1.5.4 库 8 1.6 使用IDE 8 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置Visual C++ 2010的选项 23 1.6.6 创建和执行Windows应用程序 23 1.6.7 创建Windows Forms应用程序 26 1.7 小结 27 1.8 本章主要内容 28 第2章 数据、变量和计算 29 2.1 C++程序结构 29 2.1.1 main()函数 36 2.1.2 程序语句 36 2.1.3 空白 38 2.1.4 语句块 38 2.1.5 自动生成的控制台程序 39 2.2 定义变量 40 2.2.1 命名变量 40 2.2.2 声明变量 41 2.2.3 变量的初始值 42 2.3 基本数据类型 42 2.3.1 整型变量 43 2.3.2 字符数据类型 44 2.3.3 整型修饰符 45 2.3.4 布尔类型 46 2.3.5 浮点类型 46 2.3.6 字面值 47 2.3.7 定义数据类型的同义词 48 2.3.8 具有特定值集的变量 49 2.4 基本的输入/输出操作 50 2.4.1 从键盘输入 50 2.4.2 到命令行的输出 50 2.4.3 格式化输出 51 2.4.4 转义序列 52 2.5 C++中的计算 54 2.5.1 赋值语句 54 2.5.2 算术运算 55 2.5.3 计算余数 59 2.5.4 修改变量 60 2.5.5 增量和减量运算符 60 2.5.6 计算的顺序 63 2.6 类型转换和类型强制转换 64 2.6.1 赋值语句中的类型转换 65 2.6.2 显式类型转换 65 2.6.3 老式的类型强制转换 66 2.7 AUTO关键字 66 2.8 查看类型 67 2.9 按位运算符 67 2.9.1 按位AND运算符 68 2.9.2 按位OR运算符 69 2.9.3 按位EOR运算符 71 2.9.4 按位NOT运算符 71 2.9.5 移位运算符 71 2.10 lvalue和rvalue 73 2.11 了解存储时间和作用域 74 2.11.1 自动变量 74 2.11.2 决定变量声明的位置 76 2.11.3 全局变量 77 2.11.4 静态变量 80 2.12 名称空间 80 2.12.1 声明名称空间 81 2.12.2 多个名称空间 82 2.13 C++/CLI编程 84 2.13.1 C++/CLI特有的基本数据类型 84 2.13.2 命令行上的C++/CLI输出 87 2.13.3 C++/CLI特有的功能—— 格式化输出 88 2.13.4 C++/CLI的键盘输入 91 2.13.5 使用safe_cast 92 2.13.6 C++/CLI枚举 92 2.14 查看C++/CLI类型 96 2.15 小结 97 2.16 练习 97 2.17 本章主要内容 98 第3章 判断和循环 101 3.1 比较数据值 101 3.1.1 if语句 102 3.1.2 嵌套的if语句 104 3.1.3 嵌套的if-else语句 107 3.1.4 逻辑运算符和表达式 109 3.1.5 条件运算符 112 3.1.6 switch语句 113 3.1.7 无条件转移 116 3.2 重复执行语句块 117 3.2.1 循环的概念 117 3.2.2 for循环的变体 119 3.2.3 while循环 126 3.2.4 do-while循环 128 3.2.5 嵌套的循环 129 3.3 C++/CLI编程 132 3.4 小结 137 3.5 练习 138 3.6 本章主要内容 138 第4章 数组、字符串和指针 139 4.1 处理多个相同类型的数据值 139 4.1.1 数组 140 4.1.2 声明数组 140 4.1.3 初始化数组 143 4.1.4 字符数组和字符串处理 144 4.1.5 多维数组 147 4.2 间接数据访问 150 4.2.1 指针的概念 150 4.2.2 声明指针 150 4.2.3 使用指针 152 4.2.4 初始化指针 152 4.2.5 sizeof操作符 158 4.2.6 常量指针和指向常量的指针 159 4.2.7 指针和数组 161 4.3 动态内存分配 168 4.3.1 堆的别名—— 空闲存储器 168 4.3.2 new和delete操作符 168 4.3.3 为数组动态分配内存 169 4.3.4 多维数组的动态分配 171 4.4 使用引用 172 4.4.1 引用的概念 172 4.4.2 声明并初始化lvalue引用 172 4.4.3 声明并初始化rvalue引用 173 4.5 字符串的本地C++库函数 174 4.5.1 查找以空字符结尾的字符串的长度 174 4.5.2 连接以空字符结尾的字符串 174 4.5.3 复制以空字符结尾的字符串 176 4.5.4 比较以空字符结尾的字符串 177 4.5.5 搜索以空字符结尾的字符串 177 4.6 C++/CLI编程 179 4.6.1 跟踪句柄 180 4.6.2 CLR数组 181 4.6.3 字符串 195 4.6.4 跟踪引用 203 4.6.5 内部指针 204 4.7 小结 206 4.8 练习 206 4.9 本章主要内容 207 第5章 程序结构(1) 209 5.1 理解函数 209 5.1.1 需要函数的原因 210 5.1.2 函数的结构 210 5.1.3 使用函数 213 5.2 给函数传递实参 216 5.2.1 按值传递机制 216 5.2.2 给函数传递指针实参 217 5.2.3 给函数传递数组 219 5.2.4 给函数传递引用实参 222 5.2.5 使用const修饰符 224 5.2.6 rvalue引用形参 225 5.2.7 main()函数的实参 227 5.2.8 接受数量不定的函数实参 229 5.3 从函数返回值 231 5.3.1 返回指针 231 5.3.2 返回引用 233 5.3.3 函数中的静态变量 236 5.4 递归函数调用 238 5.5 C++/CLI编程 240 5.5.1 接受数量可变实参的函数 241 5.5.2 main( )的实参 242 5.6 小结 243 5.7 练习 243 5.8 本章主要内容 244 第6章 程序结构(2) 245 6.1 函数指针 245 6.1.1 声明函数指针 246 6.1.2 函数指针作为实参 249 6.1.3 函数指针的数组 250 6.2 初始化函数形参 250 6.3 异常 252 6.3.1 抛出异常 253 6.3.2 捕获异常 254 6.3.3 MFC中的异常处理 255 6.4 处理内存分配错误 256 6.5 函数重载 257 6.5.1 函数重载的概念 258 6.5.2 引用类型和重载选择 260 6.5.3 何时重载函数 260 6.6 函数模板 261 6.7 使用decltype操作符 263 6.8 使用函数的示例 265 6.8.1 实现计算器 265 6.8.2 从字符串中删除空格 268 6.8.3 计算表达式的值 268 6.8.4 获得项值 270 6.8.5 分析数 271 6.8.6 整合程序 274 6.8.7 扩展程序 275 6.8.8 提取子字符串 277 6.8.9 运行修改过的程序 279 6.9 C++/CLI编程 279 6.9.1 理解泛型函数 280 6.9.2 CLR版本的计算器程序 285 6.10 小结 290 6.11 练习 291 6.12 本章主要内容 292 第7章 自定义数据类型 293 7.1 C++中的结构 293 7.1.1 结构的概念 294 7.1.2 定义结构 294 7.1.3 初始化结构 294 7.1.4 访问结构的成员 295 7.1.5 伴随结构的智能感知帮助 298 7.1.6 RECT结构 299 7.1.7 使用指针处理结构 300 7.2 数据类型、对象、类和实例 301 7.2.1 类的起源 303 7.2.2 类的操作 303 7.2.3 术语 303 7.3 理解类 304 7.3.1 定义类 304 7.3.2 声明类的对象 305 7.3.3 访问类的数据成员 305 7.3.4 类的成员函数 307 7.3.5 成员函数定义的位置 309 7.3.6 内联函数 309 7.4 类构造函数 310 7.4.1 构造函数的概念 311 7.4.2 默认的构造函数 312 7.4.3 在类定义中指定默认的形参值 314 7.4.4 在构造函数中使用初始化列表 316 7.4.5 声明显式的构造函数 317 7.5 类的私有成员 318 7.5.1 访问私有类成员 320 7.5.2 类的友元函数 321 7.5.3 默认复制构造函数 323 7.6 this指针 325 7.7 类的const对象 327 7.7.1 类的const成员函数 327 7.7.2 类外部的成员函数定义 328 7.8 类对象的数组 329 7.9 类的静态成员 331 7.9.1 类的静态数据成员 331 7.9.2 类的静态函数成员 334 7.10 类对象的指针和引用 334 7.10.1 类对象的指针 334 7.10.2 类对象的引用 337 7.11 C++/CLI编程 338 7.11.1 定义值类类型 339 7.11.2 定义引用类类型 344 7.11.3 定义引用类类型的复制构造函数 346 7.11.4 类属性 346 7.11.5 initonly字段 358 7.11.6 静态构造函数 360 7.12 小结 360 7.13 练习 360 7.14 本章主要内容 361 第8章 深入理解类 363 8.1 类析构函数 363 8.1.1 析构函数的概念 363 8.1.2 默认的析构函数 364 8.1.3 析构函数与动态内存分配 366 8.2 实现复制构造函数 369 8.3 在变量之间共享内存 370 8.3.1 定义联合 371 8.3.2 匿名联合 372 8.3.3 类和结构中的联合 372 8.4 运算符重载 373 8.4.1 实现重载的运算符 373 8.4.2 实现对比较运算符的完全支持 376 8.4.3 重载赋值运算符 379 8.4.4 重载加法运算符 384 8.4.5 重载递增和递减运算符 387 8.4.6 重载函数调用操作符 388 8.5 对象复制问题 389 8.5.1 避免不必要的复制操作 389 8.5.2 应用rvalue引用形参 392 8.5.3 命名的对象是lvalue 394 8.6 类模板 399 8.6.1 定义类模板 400 8.6.2 根据类模板创建对象 402 8.6.3 使用有多个形参的类模板 405 8.6.4 函数对象模板 406 8.7 使用类 407 8.7.1 类接口的概念 407 8.7.2 定义问题 407 8.7.3 实现CBox类 408 8.8 组织程序代码 425 8.9 字符串的本地C++库类 427 8.9.1 创建字符串对象 427 8.9.2 连接字符串 429 8.9.3 访问与修改字符串 432 8.9.4 比较字符串 436 8.9.5 搜索字符串 439 8.10 C++/CLI编程 447 8.10.1 在值类中重载运算符 447 8.10.2 重载递增和递减运算符 452 8.10.3 在引用类中重载运算符 453 8.10.4 实现引用类型的赋值运算符 455 8.11 小结 456 8.12 练习 456 8.13 本章主要内容 457 第9章 类继承和虚函数 459 9.1 面向对象编程的基本思想 459 9.2 类的继承 460 9.2.1 基类的概念 461 9.2.2 基类的派生类 461 9.3 继承机制下的访问控制 464 9.3.1 派生类中构造函数的操作 467 9.3.2 声明类的保护成员 470 9.3.3 继承类成员的访问级别 473 9.4 派生类中的复制构造函数 474 9.5 友元类成员 477 9.5.1 友元类 479 9.5.2 对类友元关系的限制 479 9.6 虚函数 479 9.6.1 虚函数的概念 481 9.6.2 使用指向类对象的指针 483 9.6.3 使用引用处理虚函数 485 9.6.4 纯虚函数 486 9.6.5 抽象类 487 9.6.6 间接基类 489 9.6.7 虚析构函数 491 9.7 类类型之间的强制转换 494 9.8 嵌套类 495 9.9 C++/CLI编程 498 9.9.1 装箱与拆箱 499 9.9.2 C++/CLI类的继承 499 9.9.3 接口类 505 9.9.4 定义接口类 505 9.9.5 类和程序集 509 9.9.6 被指定为new的函数 513 9.9.7 委托和事件 514 9.9.8 引用类的析构函数和终结器 525 9.9.9 泛型类 527 9.10 小结 536 9.11 练习 536 9.12 本章主要内容 539 第10章 标准模板库 541 10.1 标准模板库的定义 541 10.1.1 容器 542 10.1.2 容器适配器 542 10.1.3 迭代器 543 10.1.4 算法 544 10.1.5 STL中的函数对象 545 10.1.6 函数适配器 545 10.2 STL容器范围 545 10.3 序列容器 545 10.3.1 创建矢量容器 546 10.3.2 矢量容器的容量和大小 549 10.3.3 访问矢量中的元素 553 10.3.4 在矢量中插入和删除元素 553 10.3.5 在矢量中存储类对象 555 10.3.6 排序矢量元素 559 10.3.7 排序矢量中的指针 560 10.3.8 双端队列容器 562 10.3.9 使用列表容器 565 10.3.10 使用其他序列容器 574 10.4 关联容器 588 10.4.1 使用映射容器 589 10.4.2 使用多重映射容器 600 10.5 关于迭代器的更多内容 600 10.5.1 使用输入流迭代器 601 10.5.2 使用插入迭代器 604 10.5.3 使用输出流迭代器 605 10.6 关于函数对象的更多内容 607 10.7 关于算法的更多内容 608 10.7.1 fill() 608 10.7.2 replace() 609 10.7.3 find() 609 10.7.4 transform() 610 10.8 lambda表达式 611 10.8.1 capture子句 612 10.8.2 捕获特定的变量 613 10.8.3 模板和lambda表达式 613 10.8.4 包装lambda表达式 617 10.9 C++/CLI程序的STL 618 10.9.1 STL/CLR容器 619 10.9.2 使用序列容器 619 10.9.3 使用关联容器 627 10.10 C++/CLI中的lambda表达式 633 10.11 小结 633 10.12 练习 633 10.13 本章主要内容 634 第11章 调试技术 635 11.1 理解调试 635 11.1.1 程序故障 636 11.1.2 常见故障 637 11.2 基本的调试操作 638 11.2.1 设置断点 639 11.2.2 设置跟踪点 641 11.2.3 启动调试模式 641 11.2.4 修改变量的值 645 11.3 添加调试代码 645 11.3.1 使用断言 645 11.3.2 添加自己的调试代码 647 11.4 调试程序 652 11.4.1 调用栈 652 11.4.2 单步执行到出错位置 653 11.5 测试扩展的类 656 11.6 调试动态内存 659 11.6.1 检查空闲存储器的函数 660 11.6.2 控制空闲存储器的调试操作 661 11.6.3 空闲存储器的调试输出 662 11.7 调试C++/CLI程序 668 11.7.1 使用调试类Debug和跟踪类Trace 668 11.7.2 在Windows Forms应用程序中获得跟踪输出 676 11.8 小结 677 11.9 本章主要内容 677 第12章 Windows编程的概念 679 12.1 Windows编程基础 679 12.1.1 窗口的元素 680 12.1.2 Windows程序与操作系统 681 12.1.3 事件驱动型程序 682 12.1.4 Windows消息 682 12.1.5 Windows API 682 12.1.6 Windows数据类型 683 12.1.7 Windows程序中的符号 684 12.2 Windows程序的结构 685 12.2.1 WinMain()函数 686 12.2.2 消息处理函数 696 12.2.3 简单的Windows程序 700 12.3 Windows程序的组织 701 12.4 MFC 702 12.4.1 MFC表示法 702 12.4.2 MFC程序的组织方式 702 12.5 使用Windows Forms 706 12.6 小结 707 12.7 本章主要内容 707 第13章 多核编程 709 13.1 并行处理基本知识 709 13.2 并行模式库 710 13.3 并行处理算法 710 13.3.1 使用parallel_for算法 710 13.3.2 使用parallel_for_each算法 712 13.3.3 使用parallel_invoke算法 714 13.4 真正的并行问题 715 13.5 临界区 728 13.5.1 使用critical_section对象 728 13.5.2 锁定代码节或解除代码节锁定 729 13.6 combinable类模板 731 13.7 任务和任务组 733 13.8 小结 736 13.9 练习 736 13.10 本章主要内容 736 第14章 使用MFC编写Windows程序 739 14.1 MFC的文档/视图概念 739 14.1.1 文档的概念 739 14.1.2 文档界面 740 14.1.3 视图的概念 740 14.1.4 链接文档和视图 741 14.1.5 应用程序和MFC 742 14.2 创建MFC应用程序 743 14.2.1 创建SDI应用程序 745 14.2.2 MFC Application Wizard的输出 748 14.2.3 创建MDI应用程序 757 14.3 小结 760 14.4 练习 760 14.5 本章主要内容 760 第15章 处理菜单和工具栏 763 15.1 与Windows进行通信 763 15.1.1 了解消息映射 764 15.1.2 消息类别 767 15.1.3 处理程序中的消息 767 15.2 扩展Sketcher程序 768 15.3 菜单的元素 769 15.4 为菜单消息添加处理程序 771 15.4.1 选择处理菜单消息的类 773 15.4.2 创建菜单消息函数 773 15.4.3 编写菜单消息函数的代码 775 15.4.4 添加更新用户界面的消息处理程序 778 15.5 添加工具栏按钮 781 15.5.1 编辑工具栏按钮的属性 782 15.5.2 练习使用工具栏按钮 783 15.5.3 添加工具提示 784 15.6 C++/CLI程序中的菜单和工具栏 785 15.6.1 理解Windows Forms 785 15.6.2 理解Windows Forms应用程序 786 15.6.3 在CLR Sketcher中添加菜单 788 15.6.4 添加菜单项的事件处理程序 790 15.6.5 实现事件处理程序 791 15.6.6 设置菜单项复选 792 15.6.7 添加工具栏 793 15.7 小结 797 15.8 练习 797 15.9 本章主要内容 797 第16章 在窗口中绘图 799 16.1 窗口绘图的基础知识 799 16.1.1 窗口工作区 800 16.1.2 Windows图形设备界面 800 16.2 Visual C++中的绘图机制 802 16.2.1 应用程序中的视图类 802 16.2.2 CDC类 803 16.3 实际绘制图形 811 16.4 对鼠标进行编程 813 16.4.1 鼠标发出的消息 813 16.4.2 鼠标消息处理程序 814 16.4.3 使用鼠标绘图 816 16.5 练习使用Sketcher程序 837 16.5.1 运行示例 838 16.5.2 捕获鼠标消息 838 16.6 在CLR中绘图 840 16.6.1 在窗体上绘图 840 16.6.2 添加鼠标事件处理程序 840 16.6.3 定义C++/CLI元素类 842 16.6.4 实现MouseMove事件处理程序 850 16.6.5 实现MouseUp事件处理程序 851 16.6.6 实现窗体的Paint事件处理程序 851 16.7 小结 852 16.8 练习 852 16.9 本章主要内容 853 第17章 创建文档和改进视图 855 17.1 创建草图文档 855 17.2 改进视图 859 17.2.1 更新多个视图 859 17.2.2 滚动视图 861 17.2.3 使用MM_LOENGLISH映射模式 865 17.3 删除和移动形状 866 17.4 实现上下文菜单 866 17.4.1 关联菜单和类 867 17.4.2 练习弹出菜单 870 17.4.3 突出显示元素 870 17.4.4 处理菜单消息 874 17.5 处理屏蔽的元素 881 17.6 扩展CLR Sketcher 882 17.6.1 坐标系统转换 882 17.6.2 定义草图类 885 17.6.3 在Paint事件处理程序中绘制草图 886 17.6.4 实现元素的突出显示 887 17.6.5 创建上下文菜单 891 17.7 小结 897 17.8 练习 897 17.9 本章主要内容 898 第18章 使用对话框和控件 899 18.1 理解对话框 899 18.2 理解控件 900 18.3 创建对话框资源 900 18.3.1 给对话框添加控件 901 18.3.2 测试对话框 902 18.4 对话框的编程 902 18.4.1 添加对话框类 902 18.4.2 模态和非模态对话框 903 18.4.3 显示对话框 903 18.5 支持对话框控件 906 18.5.1 初始化控件 906 18.5.2 处理单选按钮消息 907 18.6 完成对话框的操作 908 18.6.1 给文档添加线宽 908 18.6.2 给元素添加线宽 909 18.6.3 在视图中创建元素 910 18.6.4 练习使用对话框 910 18.7 使用微调按钮控件 911 18.7.1 添加Scale菜单项和工具栏按钮 911 18.7.2 创建微调按钮 911 18.7.3 生成比例对话框类 913 18.7.4 显示微调按钮 915 18.8 使用缩放比例 916 18.8.1 可缩放的映射模式 916 18.8.2 设置文档的大小 917 18.8.3 设置映射模式 918 18.8.4 同时实现滚动与缩放 919 18.9 使用CTaskDialog类 921 18.9.1 显示任务对话框 921 18.9.2 创建CTaskDialog对象 923 18.10 使用状态栏 925 18.11 使用列表框 929 18.11.1 删除比例对话框 929 18.11.2 创建列表框控件 929 18.12 使用编辑框控件 931 18.12.1 创建编辑框资源 931 18.12.2 创建对话框类 933 18.12.3 添加Text菜单项 934 18.12.4 定义文本元素 935 18.12.5 实现CText类 935 18.13 CLR Sketcher中的对话框和控件 940 18.13.1 添加对话框 940 18.13.2 创建文本元素 946 18.14 小结 953 18.15 练习 953 18.16 本章主要内容 953 第19章 存储和打印文档 955 19.1 了解序列化 955 19.2 序列化文档 956 19.2.1 文档类定义中的序列化 956 19.2.2 文档类实现中的序列化 957 19.2.3 基于CObject的类的功能 959 19.2.4 序列化的工作方式 960 19.2.5 如何实现类的序列化 961 19.3 应用序列化 961 19.3.1 记录文档修改 962 19.3.2 序列化文档 963 19.3.3 序列化元素类 965 19.4 练习序列化 968 19.5 打印文档 969 19.6 实现多页打印 972 19.6.1 获取文档的总尺寸 973 19.6.2 存储打印数据 973 19.6.3 准备打印 974 19.6.4 打印后的清除 976 19.6.5 准备设备上下文 976 19.6.6 打印文档 977 19.6.7 获得文档的打印输出 980 19.7 CLR Sketcher中的序列化和打印 981 19.7.1 了解二进制序列化 981 19.7.2 序列化草图 985 19.7.3 打印草图 995 19.8 小结 996 19.9 练习 996 19.10 本章主要内容 997 第20章 编写自己的DLL 999 20.1 了解DLL 999 20.1.1 DLL的工作方式 1000 20.1.2 DLL的内容 1003 20.1.3 DLL变体 1003 20.2 决定放入DLL的内容 1004 20.3 编写DLL 1005 20.4 小结 1011 20.5 练习 1011 20.6 本章主要内容 1011 前言   欢迎使用本书。通过学习本书,您可以使用Microsoft公司最新的应用程序开发系统,成为优秀的C++程序员。本书旨在讲述C++程序设计语言,然后讲述如何运用C++语言开发自己的Windows应用程序。在此过程中,读者将了解这一最新Visual C++版本所提供的很多激动人心的新功能,包括如何在自己的应用程序中充分利用多核处理器。   0.1 使用C++语言编程   Visual C++ 2010支持两种截然不同但又紧密相关的C++语言,即ISO/IEC标准C++(本书称其为本地C++)和C++/CLI。虽然很多专业开发人员选用本地C++,尤其是当性能是需要考虑的主要因素时,但是C++/CLI和Windows Forms应用程序带来的开发速度和简易性使得C++/CLI也成了基本的语言。因此,本书将深入讨论这两种版本的C++语言。   Visual C++ 2010完全支持原来的ISO/IEC标准C++语言,同时还支持即将发布的ISO/IEC标准C++提供的一些功能强大的新特性。因此,本书不仅涵盖ISO/IEC标准C++的原有功能,同时还会介绍新语言特性。   Visual C++ 2010也支持C++/CLI,它是Microsoft公司作为本地C++的扩展而开发的C++版本。C++/CLI背后的思想是向本地C++添加一些特性,从而能够开发以.NET支持的虚拟机环境为目标的应用程序。这就将C++添加到能使用.NET Framework的其他语言(例如,BASIC和C#)中。C++/CLI语言目前是一个ECMA标准,同时也符合定义.NET虚拟机环境的CLI标准。   Visual C++ 2010的这两种C++版本互为补充,各自完成不同的任务。ISO/IEC C++用于开发在本地计算机上运行的高性能应用程序,而C++/CLI专门为.NET Framework开发应用程序。掌握了使用这两种C++版本开发应用程序的基础知识之后,就能够充分利用Visual C++ 2010。   0.2 开发Windows应用程序   充分理解C++之后,就可以着手开发Windows应用程序。Microsoft基本类(Microsoft Foundation Classes,MFC)封装了Windows API,提供了全面而易于使用的功能,从而能够使用本地C++开发高性能的Windows应用程序。   当编写本地C++程序时,可以从自动生成的代码中获得大量帮助,但仍然需要亲自编写大量C++代码。我们不仅需要对面向对象编程(OOP)技术有扎实的理解,而且需要充分了解Windows编程所涉及的各个方面。本书会介绍所有这些知识点。   C++/CLI虽然针对.NET Framework开发,但同时也是Windows Forms应用程序开发的载体。开发Windows Forms应用程序时,在不用编写一行代码的情况下,即使不能创建应用程序交互所需的用户界面的所有元素,也可以创建其中的很多元素。当然,仍然需要定制Windows Forms应用程序,才能完成相应的任务,但开发时间与使用本地C++创建应用程序相比只占一小部分。当给Windows Forms应用程序添加定制代码时,即使这部分代码只占到代码总量的很小比例,也仍然要求我们深入理解C++/CLI语言,才能做到游刃有余。本书旨在介绍这些知识。   0.3 高级库功能   并行模式库(Parallel Patterns Library,PPL)是Visual C++ 2010增加的一个令人激动的新功能,通过此功能,我们可以轻松编写使用多处理器的程序。在过去,为多处理器编程并非易事,但有了PPL,这就确实变得很容易了。本书将介绍PPL的各种使用方式,从而加快计算密集型应用程序的执行速度。   0.4 本书读者对象   本书针对任何想要学习如何使用Visual C++ 2010编写在Microsoft Windows操作系统下运行的C++应用程序的读者。阅读本书不需要预先具备任何特定编程语言的知识。如果属于下列4种情形之一,您就适合学习本教程:   ·属于编程新手,十分渴望投入编程世界,并最终掌握C++。要取得成功,您至少需要对计算机的工作原理有大体的理解——包括内存的组织方式以及数据和指令的存储方式。   ·具备一些其他语言的编程经验,如BASIC;渴望学习C++,并想提升实际的Microsoft Windows编程技能。   ·有一些使用C语言或C++语言的经验,但使用环境不是Microsoft Windows;希望使用最新的工具和技术,扩展在Windows环境下编程的技能。   ·有一些C++知识,并希望扩展C++技能,成为会使用C++/CLI的编程人员。   0.5 本书主要内容   本书实质上涵盖了两大主题:C++编程语言以及如何使用MFC或.NET Framework编写Windows应用程序。在开发完全成熟的Windows应用程序之前,需要具备相当水平的C++知识,因此,首先学习这本C++教程。 .  本书的第一部分通过可运行于两种C++语言版本上的一个详细的循序渐进式教程,讲授了使用Visual C++ 2010支持的两种C++语言技术编写C++程序的基础知识。您将了解本地ISO/IEC C++语言的语法和用法,并通过一系列范围广泛的可工作示例,获得实际运用它的经验和信心。本书也提供了一些练习,可以检验所学的知识,并且可以下载练习题答案。而C++/CLI作为本地C++的扩展来学习,这仍然是通过一些可运行的示例来说明每一个特性的工作原理。   当然,本语言教程也介绍和说明了C++标准库功能的用法,因为开发程序时极有可能使用它们。随着深入地学习C++语言,您的标准库知识会不断增加。还将学习标准模板库(Standard Template Library,STL)以两种形式——即本地C++版本和C++/CLI版本——提供的强大工具。另外,本书还用一章的篇幅专门讲述新增的并行模式库(PPL)功能,从而能够利用PC的多核处理功能来开发计算密集型应用程序。   对C++的运用有信心之后,就可以继续学习Windows编程了。通过创建超过2000行代码的大型可运行的应用程序,学习如何使用MFC来开发本地Windows应用程序。开发此应用程序贯穿多章内容,使用到了MFC提供的一系列用户界面功能。为学习如何使用C++/CLI编写Windows程序,相应地开发了一个与本地C++应用程序具有相似用户界面特性的Windows Forms应用程序。   0.6 本书结构   本书内容的结构安排如下:   ·第1章介绍使用C++编写本地应用程序和.NET Framework应用程序所需要理解的基本概念,以及在Visual C++ 2010开发环境中体现的主要思想,还叙述了如何使用Visual C++ 2010的功能来创建本书其余部分要学习的各种C++应用程序。   ·第2~9章讲授两种C++语言版本。第2~9章内容的组织方式都相似:各章的前半部分讨论本地C++语言的元素,后半部分讨论如何在C++/CLI中提供相同的功能。   ·第10章介绍如何使用标准模板库(Standard Template Library,STL)。STL是一组功能强大且全面的工具,用来组织和操作本地C++程序中的数据。由于STL是独立于应用程序的,因此可以在上下文中大量应用它。第10章还介绍了Visual C++ 2010新增的STL/CLR。它是C++/CLI应用程序的STL版本。   ·第11章介绍了在C++程序中查找错误的技术。涵盖了调试程序的一般原则,以及Visual C++ 2010提供的基本特性,这些特性可以帮助我们查找代码中的错误。   ·第12章讨论Microsoft Windows应用程序的组织方式,并描述和展示了在所有Windows应用程序中都存在的基本元素。本章解释了以本地C++语言编写的、使用Windows API和MFC的Windows应用程序示例,还给出了一个使用C++/CLI语言编写的Windows Forms应用程序的基础示例。   ·第13章介绍了如何在PC有多核处理器的情况下编写程序以使用多个处理器。通过一些完整的工作示例展示了并行处理的基本技术,这些示例Windows API应用程序是计算密集型程序。   ·第14~19章讲述Windows编程。详细描述了如何使用MFC提供的构建GUI的功能编写本地C++ Windows应用程序以及如何在C++/CLI Windows应用程序中使用.NET Framework。我们将学习如何创建并使用通用控件来构建应用程序的图形用户界面,还将学习如何处理因用户与程序的交互作用而产生的事件。除了学习构建GUI的技术以外,还将从开发该应用程序的过程中学到如何打印文档,以及如何在磁盘上保存应用程序数据。   ·第20章讲述为使用MFC创建自己的库而需要知道的基本知识。我们将了解可以创建的不同种类的库,还将开发能够与前6章开发的应用程序协同工作的示例。   本书各章内容都包括许多工作示例,通过这些示例阐明所讨论的编程技术。每章结束时都总结了该章所讲述的要点,大多数章节都在最后给出了一组练习,您可以应用所学的技术来试着解答这些练习。练习的答案连同书中的所有代码都可以从http://www.wrox.com和http://www.tupwk.com.cn/ downpage下载。关于C++语言教程使用的示例都是使用简单的命令行输入和输出的控制台程序。这种方法使我们能够在不陷入复杂的Windows GUI编程的情况下,学习C++的各种功能。实际上,只有在透彻地理解编程语言之后,才能进行Windows 编程。   如果希望使学习过程尽可能简单,或者如果您是程序设计初学者,那么最初可以只学习本地C++编程语言。讲授C++语言的各章(第2~9章)都是首先讨论本地C++功能的特定方面,然后再讨论C++/CLI在相同的上下文中引入的新功能。以这种方式组织各章内容的原因在于,C++/CLI是作为ISO/IEC标准语言的扩展定义的,对C++/CLI的理解是以对ISO/IEC C++的理解为基础的。因此,您可以只阅读各章中的本地C++部分,而忽略后面的C++/CLI部分。然后可以继续使用本地C++开发Windows应用程序,而免去记住两种语言版本的苦恼。在熟悉了ISO/IEC C++之后,您可以回头重新学习C++/CLI。当然,如果您已经有一些编程经验,也可以逐章进行学习,从而同步增加这两种C++语言版本的知识。   0.7 使用本书的前提   为了充分地使用本书,需要可支持MFC的某个Visual C++ 2010(或Visual Studio 2010)版本。需要注意的是,免费的Visual C++ 2010 Express Edition版本是不行的。因为此版本只提供C++编译器以及对基本Windows API的访问,并没有提供MFC库。因此,Visual C++ 2010(或Visual Studio 2010)的任何付费版本都能够编译并执行本书的所有示例。   0.8 源代码   读者在阅读本书提供的代码时,既可以亲自输入所有代码,也可以使用随书提供的代码文件。本书所有代码均可以从http://www.wrox.com/或www.tupwk.com.cn/downpage网站下载。进入该网站后,读者可以根据本书的书名查找本书(既可以使用搜索框,也可以使用书名列表进行查找),然后单击本书详细内容页面上提供的Download Code链接,就可以下载本书提供的所有代码。   注意:   由于许多书籍名称与本书类似,读者也可以通过ISBN进行查找,本书的ISBN为:978-0-470-50088-0。   另外,读者可以从前面提到的CodePlex网站下载本书或其他Wrox书籍的代码,也可以从Wrox的代码下载页面http://www.wrox.com/dynamic/books/download.aspx和http://www. tupwk.com.cn/downpage下载本书或其他Wrox书籍的代码。   源代码下载成功后,读者用任一解压工具将其解压即可。   0.9 勘误表   为了避免本书文字和代码中存在错误,我们已经竭尽全力。然而,世界上并不存在完美无缺的事物,所以本书可能仍然存在错误。如果读者在我们编写的某本书籍中发现了诸如拼写错误或代码缺陷等问题,那么请告诉我们,我们对此表示感谢。利用勘误表反馈错误信息,可以为其他读者节省大量时间,同时,我们也能够受益于读者的帮助,这样有助于我们编写出质量更高的专业著作。   如果读者需要参考本书的勘误表,请在网站http://www.wrox.com中用搜索框或书名列表查找本书书名。然后,在本书的详细内容页面上,单击Book Errata链接。在随后显示的页面中,读者可以看到与本书相关的所有勘误信息,这些信息是由读者提交、并由Wrox的编辑们加上的。通过访问http://www.wrox.com/misc-pages/booklist.shtml,读者还可以看到Wrox出版的所有书籍的勘误表。   如果读者没有在Book Errata页面上找到自己发现的错误,那么请转到页面http://www. wrox.com/contact/techsupport.shtml,针对您所发现的每一项错误填写表格,并将表格发给我们,我们将对表格内容进行认真审查,如果确实是我们书中的错误,我们将在该书的Book Errata页面上标明该错误信息,并在该书的后续版本中改正。   0.10 关于p2p.wrox.com网站   如果读者希望能够与作者进行讨论,或希望能够参与到读者的共同讨论中,那么请加入p2p.wrox.com论坛。该论坛是一个基于Web的系统,读者可以在论坛发表与Wrox出版的书籍及相关技术的信息,并与其他读者和技术用户进行讨论。论坛提供了订阅功能,可以将与读者所选定主题相关的新帖子定期发送到读者的电子邮箱。Wrox的作者、编辑、业界专家,以及其他读者都会参与论坛中的讨论。   读者可以在http://p2p.wrox.com参与多个论坛的讨论,这些论坛不仅能够帮助读者更好地理解本书,还有助于读者更好地开发应用程序。如果读者希望加入论坛,那么请按照以下步骤执行:   (1) 进入http://p2p.wrox.com页面,单击Register链接。   (2) 阅读使用条款,然后单击Agree按钮。   (3) 填写必要的信息及可选信息,然后单击Submit按钮。   (4) 随后读者会收到一封电子邮件,邮件中说明了如何验证账户并完成整个加入过程。   读者无须加入P2P论坛即可阅读论坛消息,但如果需要发表主题或发表回复,那么必须加入论坛。   成功加入论坛后,读者就可以发表新主题了。此时,读者还可以回复其他用户发表的主题。读者在任何时间都可以阅读论坛信息,如果需要论坛将新的信息发送到自己的电子邮箱,那么可以单击论坛列表中论坛名称旁的Subscribe to this Forum图标完成这项功能设置。   如果读者需要获得更多与Wrox P2P相关的信息,请阅读P2P FAQs,这样可以获得大量与P2P和Wrox出版的书籍相关的具体信息。阅读FAQs时,请单击P2P页面上的FAQs链接。   
中文名: VB程序设计及应用 作者: 李淑华图书分类: 软件 资源格式: PDF 版本: 文字版 出版社: 高等教育出版社书号: 7-04-014767-X发行时间: 2004年04月 地区: 大陆 语言: 简体中文 简介: 内容简介: 本书是新世纪高职高专教改项目成果教材,由教育部高职高专教育专业教学改革试点院校编写。全书共分 17 章。主要介绍了 VisualBasic6.0 系统的基础知识,程序设计的常用函数、程序设计语句、数组,简单介绍了面向对象程序设计的基本概念,详细介绍了基本控件、对话框、图形、菜单等设计方法,多文档界面、工具栏、状态栏的程序设计方法,数据库、对象的链接和嵌入、多媒体控件以及常用的 ActiveX 控件的应用,最后介绍了打字练习、画板、学生成绩管理系统等应用程序实例。本书配有大量的实例和测试题,并配有 CAI课件、电子教案。本书由浅入深、通俗易懂,适用于高等职业学校、高等专科学校、成人高校、示范性软件职业技术学院、本科院校使用,还适用于本科院校举办的二级职业技术学院、教育学院以及民办高校使用,也可供参加全国高等学校计算机考试二级 VisualBasic语言程序设计的考生学习参考,同时也适应各类工作人员学习参考。 内容截图: 目录: 第1章 VisualBasic概述 1.1 VisualBasic6.0 1.1.1 VB的发展 1.1.2 VB6.0版本简介 1.1.3 VB的特点 1.2 VB的集成开发环境 1.2.1 启动 VB集成开发环境 1.2.2 用户界面 1.3 各种窗口简介 1.3.1 窗体窗口 1.3.2 工程资源管理器窗口 1.3.3 工具箱窗口 1.3.4 属性窗口 1.3.5 代码窗口 1.3.6 调色板窗口 1.3.7 窗体布局窗口 1.3.8 立即窗口 1.3.9 对象浏览器窗口 习题9 第2章 VB基本概念与操作 2.1 可视化编程基础 2.2 VB应用程序的开发步骤 2.2.1 创建或打开新工程 2.2.2 建立用户界面 2.2.3 设计用户界面 2.2.4 添加程序代码 2.2.5 运行调试程序 2.2.6 保存文件 2.2.7 生成可执行文件 2.3 修改和定制窗体 2.3.1 选择控件 2.3.2 控件的操作 2.4 工程的管理 2.4.1 工程的组成 2.4.2 习题 第 3章 VB程序设计的基础 3.1 命名规则和语法规则 3.1.1 命名规则 3.1.2 语句及语法规则 3.2 数据类型 3.2.1 基本数据类型 3.2.2 用户自定义类型 3.3 常量与变量 3.3.1 常量 3.3.2 变量 3.3.3 变量的作用域 3.3.4 变量作用域的关系 3.4 常用函数 3.4.1 内部函数 3.4.2 字符串函数 3.5 运算符和表达式 3.5.1 算术运算符与算术表达式 3.5.2 关系运算符与关系表达式 3.5.3 逻辑运算符与逻辑表达式 习题 第 4章 数据的输出与输入 4.1 数据的输出 4.1.1 Print方法 4.1.2 与 Print有关的函数 4.1.3 Cls方法 4.2 数据输入函数 InputBox 4.3 MsgBox函数和 MsgBox语句 4.3.1 MsgBox函数 4.3.2 MsgBox语句 实训 习题 第 5章 VB程序设计语句 5.1 赋值语句 5.2 条件语句 5.2.1 分支结构 5.2.2 情况语句 5.3 循环语句 5.3.1 For循环 5.3.2 Do循环 5.3.3 多重循环 5.3.4 GoTo语句 5.3.5 End语句 5.3.6 应用举例 习题一 5.4 数组 5.4.1 数组的概念 5.4.2 静态数组的定义 5.4.3 数组下标界的测试函数 5.4.4 动态数组的定义 5.4.5 数组的清除和重新定义 5.4.6 数组的基本操作 5.4.7 数组应用举例 5.5 控件数组 5.5.1 控件数组的概念 5.5.2 控件数组的建立 习题二 5.6 过程 5.6.1 过程的定义 5.6.2 过程的调用 5.6.3 退出过程 5.6.4 SubMain过程 5.7 函数 5.7.1 函数的定义 5.7.2 函数的调用 5.7.3 退出函数语句 实训 习题三 第6章 窗体 6.1 对象的基本属性 6.1.1 属性的分类 6.1.2 对象的基本属性 6.2 窗体的属性、事件和方法 6.2.1 窗体的常用属性 6.2.2 窗体的常用事件 6.2.3 窗体的常用方法 6.2.4 控件的常用事件 6.2.5 LoadPicture函数 6.3 多窗体 6.3.1 加载窗体 6.3.2 显示窗体 6.3.3 隐藏窗体 6.3.4 卸载窗体 6.3.5 建立多窗体 6.4 鼠标事件与键盘事件 6.4.1 鼠标事件 6.4.2 键盘事件 实训 习题 第 7章 常用控件的使用 7.1 标签框与文本框 7.1.1 标签框 7.1.2 文本框 7.2 命令按钮与计时器 7.2.1 命令按钮 7.2.2 计时器 7.3 单选按钮与复选框 7.3.1 单选按钮 7.3.2 复选框 7.4 框架与滚动条 7.4.1 框架 7.4.2 滚动条 7.5 列表框与组合框 7.5.1 列表框 7.5.2 组合框 7.6 图片框与图像框 7.6.1 图片框 7.6.2 图像框 7.7 设计简单的动画 实训 习题 第 8章 对话框程序设计 8.1 概述 8.1.1 对话框的分类 8.1.2 对话框的特点 8.2 通用对话框 8.2.1 通用对话框控件 8.2.2 通用对话框的属性与方 8.3 通用对话框的使用 8.3.1 打开(Open)对话框 8.3.2 另存为(SaveAs)对话框 8.3.3 颜色(Color)对话框 8.3.4 字体(Font)对话框 8.3.5 打印(Printer)对话框 8.3.6 帮助(Help)对话框 8.4 自定义对话框 8.4.1 自定义对话框的外观 8.4.2 自定义对话框的规则 实训 习题 第9章 图形操作 9.1 图形操作基础 9.1.1 标准坐标系统 9.1.2 自行定义坐标系 9.2 绘图属性 9.2.1 当前坐标 9.2.2 线宽 9.2.3 线型样式 9.2.4 填充 9.2.5 颜色函数 9.3 图形控件1 9.3.1 直线控件 9.3.2 形状控件 9.4 图形方法 9.4.1 PSet方法 9.4.2 Line方法 9.4.3 Circle方法 9.5 画图应用 实训 第10章 菜单程序设计 10.1 概述 10.1.1 下拉菜单 10.1.2 弹出式菜单 10.1.3 设计菜单的步骤 0.1.4 菜单编辑器 10.2 下拉菜单的设计 10.3 菜单项的控制 10.3.1 有效性控制 10.3.2 菜单项标记 10.3.3 菜单项的增减 10.4 弹出式菜单 实训 习题 第 11章 文件 11.1 文件系统控件 11.1.1 驱动器列表框 11.1.2 目录列表框 11.1.3 文件列表框 11.2 文件基本操作 11.3 文件概述 11.3.1 文件结构 11.3.2 文件分类 11.3.3 文件的打开与关闭 11.3.4 文件操作语句和函数 11.4 顺序文件 11.4.1 顺序文件的写操作 11.4.2 顺序文件的读操作 11.5 随机文件 11.5.1 随机文件的打开与关闭 11.5.2 随机文件的写操作 11.5.3 随机文件的读操作 实训 习题 第 12章 界面设计 12.1 多文档界面 12.1.1 多文档界面的特性 12.1.2 创建和设计 MDI窗体 12.1.3 创建和设计 MDI子窗体 12.1.4 MDI窗体与子窗体的交互 12.1.5 MDI应用程序的菜单 12.1.6 应用 MDI窗体注意事项 12.2 图像列表框、工具栏和状态栏 12.2.1 图像列表框 12.2.2 工具栏 12.2.3 状态栏 12.3 高级文本框控件 12.4 应用程序向导 12.4.1 生成多文档编辑器 12.4.2 生成WWW浏览器 12.4.3 生成资源管理器 实训 第13章 VisualBasic与数据库 13.1 数据库概念 13.2 数据库管理器 13.3 数据控件 13.3.1 数据控件属性 13.3.2 数据网格控件 13.3.3 数据控件的事件 13.3.4 数据控件的常用方法 13.3.5 记录集的属性与方法 13.3.6 数据库记录的增删改操作 13.4 结构化查询语言(SQL) 13.4.1 SQL的常用命令 13.4.2 Select语句格式与功能 13.4.3 使用SQL 13.5 ADO数据控件 13.5.1 ADO对象模型 13.5.2 ADO控件的常用属性 13.5.3 ADO控件连接数据库 13.5.4 ADO控件上新增绑定控件 13.5.5 数据窗体向导 实训 第14章 对象的链接与嵌入 14.1 OLE控件概述 14.1.1 使用OLE控件 14.1.2 对象链接与嵌入的区别 14.2 OLE控件常用属性与方法 14.2.1 OLE控件的属性 14.2.2 编辑OLE对象 实训 第15章 多媒体 15.1 多媒体控件 15.1.1 多媒体控件的常用属性 15.1.2 多媒体控件的常用事件 15.2 多媒体控件的使用 15.2.1 利用多媒体控件播放CD 15.2.2 利用多媒体控件播放VCD 15.2.3 利用多媒体控件播放有声的 AVI文件 实训 第 16章 常用 ActiveX控件应用 16.1 滑块控件 16.2 日历控件 16.2.1 日历控件的常用属性 16.2.2 日历控件的常用方法 16.3 动画控件 16.3.1 动画控件的常用属性 16.3.2 动画控件的常用方法 16.4 进程条控件 16.4.1 进程条控件的常用属性 16.4.2 进程条控件的常用事件 16.5 浏览器控件 16.5.1 浏览器控件的常用属性 16.5.2 浏览器控件的常用方法 16.6 多选项卡控件 16.6.1 多选项卡控件的常用属性 16.6.2 多选项卡控件的常用事件 16.7 综合应用 16.7.1 状态栏控件和形状控件 16.7.2 多媒体控件和滑块控件 实训 第 17章 综合应用 17.1 打字系统的设计 17.1.1 打字系统的主要功能 17.1.2 打字系统的程序设计 17.2 画板系统的设计 17.2.1 画板系统的主要功能 17.2.2 画板系统的程序设计 17.3 学生档案管理系统的设计 17.3.1 系统结构图 17.3.2 数据库的建立 17.3.3 主窗体的设计 实训 参考文献
谭浩强教授,我国著名计算机教育专家。1934年生。1958年清华大学毕业。学生时代曾担任清华大学学生会主席、北京市人民代表。他是我国计算机普及和高校计算机基础教育开拓者之一,现任全国高等院校计算机基础教育研究会会长、教育部全国计算机应用技术证书考试委员会主任委员。 谭浩强教授创造了3个世界纪录:(1)20年来他(及和他人合作)共编著出版了130本计算机著作,此外主编了250多本计算机书籍,是出版科技著作数量最多的人。(2)他编著和主编的书发行量超过4500万册,是读者最多的科技作家。我国平均每30人、知识分子每1.5人就拥有1本谭浩强教授编著的书。(3)他和别人合作编著的《BASIC语言》发行了1200万册,创科技书籍发行量的世界纪录。此外,他编著的《C程序设计》发行了600万册。他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,Visual Basic七种计算机语言,观众超过300万人。 在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明复杂的概念。许多人认为他开创了计算机书籍贴近大众的新风,为我国的计算机普及事业做出了重要的贡献。 谭浩强教授曾获全国高校教学成果国家级奖、国家科技进步奖,以及北京市政府授予的“有突出贡献专家”称号。《计算机世界》报组织的“世纪评选”把他评为我国“20世纪最有影响的IT人物”10个人之一(排在第2位)。他的功绩是把千百万群众带入计算机的大门。 1 C语言概述 1.1 C语言的发展过程 1.2 当代最优秀的程序设计语言 1.3 C语言版本 1.4 C语言的特点 1.5 面向对象的程序设计语言 1.6 C和C++ 1.7 简单的C程序介绍 1.8 输入和输出函数 1.9 C源程序的结构特点 1.10 书写程序时应遵循的规则 1.11 C语言的字符集 1.12 C语言词汇 1.13 Turbo C 2.0 集成开发环境的使用 1.13.1 Turbo C 2.0 简介和启动 1.13.2 Turbo C 2.0 集成开发环境 1.13.3 File菜单 1.13.4 Edit 菜单 1.13.5 Run 菜单 1.13.6 Compile 菜单 11.13.7 Project 菜单 1.13.8 Options菜单 1.13.9 Debug 菜单 1.13.10 Break/watch 菜单 1.13.11 Turbo C 2.0 的配置文件 2 程序的灵魂—算法 2.1 算法的概念 21 2.2 简单算法举例 21 2.3 算法的特性 24 2.4 怎样表示一个算法 24 2.4.1 用自然语言表示算法 24 2.4.2 用流程图表示算法 24 2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 C语言的数据类型 32 3.2 常量与变量 33 23.2.1 常量和符号常量 33 3.2.2 变量 33 3.3 整型数据 34 3.3.1 整型常量的表示方法 34 3.3.2 整型变量 35 3.4 实型数据 37 3.4.1 实型常量的表示方法 37 3.4.2 实型变量 38 3.4.3 实型常数的类型 39 3.5 字符型数据 39 3.5.1 字符常量 39 3.5.2 转义字符 39 3.5.3 字符变量 40 3.5.4 字符数据在内存中的存储形式及使用方法 41 3.5.5 字符串常量 41 3.5.6 符号常量 42 3.6 变量赋初值 42 3.7 各类数值型数据之间的混合运算 43 3.8 算术运算符和算术表达式 44 3.8.1 C运算符简介 44 3.8.2 算术运算符和算术表达式 45 3.9 赋值运算符和赋值表达式 47 33.10 逗号运算符和逗号表达式 48 3.11 小结 49 3.11.1 C的数据类型 49 3.11.2 基本类型的分类及特点 49 3.11.3 常量后缀 49 3.11.4 常量类型 49 3.11.5 数据类型转换 49 3.11.6 运算符优先级和结合性 50 表达式 50 4 最简单的 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 53 4.3 数据输入输出的概念及在 C 语言中的实现 54 4.4 字符数据的输入输出 54 4.4.1 putchar 函数(字符输出函数) 54 4.4.2 getchar函数(键盘输入函数) 55 4.5 格式输入与输出 55 4.5.1 printf 函数(格式输出函数) 56 4.5.2 scanf函数(格式输入函数) 58 顺序结构程序设计举例 60 45 分支结构程序 5.1 关系运算符和表达式 61 5.1.1 关系运算符及其优先次序 61 5.1.2 关系表达式 61 5.2 逻辑运算符和表达式 62 5.2.1 逻辑运算符极其优先次序 62 5.2.2 逻辑运算的值 63 5.2.3 逻辑表达式 63 5.3 if 语句 64 5.3.1 if语句的三种形式 64 5.3.2 if语句的嵌套 67 5.3.3 条件运算符和条件表达式 69 5.4 switch语句 70 5.5 程序举例 71 6 循环控制 6.1 概述 71 6.2 goto 语句以及用goto 语句构成循环 71 6.3 while语句 72 6.4 do-while语句 74 6.5 for 语句 76 6.6 循环的嵌套 79 56.7 几种循环的比较 79 6.8 break 和 continue语句 79 6.8.1 break 语句 79 6.8.2 continue 语句 80 6.9 程序举例 81 7 数组 7.1 一维数组的定义和引用 82 7.1.1 一维数组的定义方式 82 7.1.2 一维数组元素的引用 83 7.1.3 一维数组的初始化 84 7.1.4 一维数组程序举例 84 7.2 二维数组的定义和引用 86 7.2.1 二维数组的定义 86 7.2.2 二维数组元素的引用 86 7.2.3 二维数组的初始化 87 7.2.4 二维数组程序举例 89 7.3 字符数组 89 7.3.1 字符数组的定义 89 7.3.2 字符数组的初始化 89 7.3.3 字符数组的引用 90 7.3.4 字符串和字符串结束标志 91 67.3.5 字符数组的输入输出 91 7.3.6 字符串处理函数 92 7.4 程序举例 94 本章小结 97 8 函 数 8.1 概述 98 8.2 函数定义的一般形式 99 8.3 函数的参数和函数的值 100 8.3.1 形式参数和实际参数 101 8.3.2 函数的返回值 102 8.4 函数的调用 106 8.4.1 函数调用的一般形式 106 8.4.2 函数调用的方式 106 8.4.3 被调用函数的声明和函数原型 107 8.5 函数的嵌套调用 108 8.6 函数的递归调用 109 8.7 数组作为函数参数 110 8.8 局部变量和全局变量 112 8.8.1 局部变量 113 8.8.2 全局变量 119 8.9 变量的存储类别 120 78.9.1 动态存储方式与静态动态存储方式 120 8.9.2 auto变量 120 8.9.3 用static 声明局部变量 121 8.9.4 register 变量 122 用extern 声明外部变量 123 9 预处理命令 9.1 概述 124 9.2 宏定义 125 9.2.1 无参宏定义 126 9.2.2 带参宏定义 127 9.3 文件包含 128 9.4 条件编译 130 9.5 本章小结 10 指针 10.1 地址指针的基本概念 131 10.2 变量的指针和指向变量的指针变量 132 10.2.1 定义一个指针变量 133 10.2.2 指针变量的引用 133 10.2.3 指针变量作为函数参数 137 10.2.4 指针变量几个问题的进一步说明 140 810.3 数组指针和指向数组的指针变量 141 10.3.1 指向数组元素的指针 142 10.3.2 通过指针引用数组元素 143 10.3.3 数组名作函数参数 146 10.3.4 指向多维数组的指针和指针变量 148 10.4 字符串的指针指向字符串的针指变量 150 10.4.1 字符串的表示形式 152 10.4.2 使用字符串指针变量与字符数组的区别 158 10.5 函数指针变量 159 10.6 指针型函数 160 10.7 指针数组和指向指针的指针 161 10.7.1 指针数组的概念 161 10.7.2 指向指针的指针 164 10.7.3 main 函数的参数 166 10.8 有关指针的数据类型和指针运算的小结 167 10.8.1 有关指针的数据类型的小结 167 10.8.2 指针运算的小结 167 10.8.3 void 指针类型 168 11 结构体与共用体 11.1 定义一个结构的一般形式 170 11.2 结构类型变量的说明 172 911.3 结构变量成员的表示方法 174 11.4 结构变量的赋值 174 11.5 结构变量的初始化 175 11.6 结构数组的定义 175 11.7 结构指针变量的说明和使用 177 11.7.1 指向结构变量的指针 177 11.7.2 指向结构数组的指针 179 11.7.3 结构指针变量作函数参数 180 11.8 动态存储分配 181 11.9 链表的概念 182 11.10 枚举类型 184 11.10.1 枚举类型的定义和枚举变量的说明 184 11.10.2 枚举类型变量的赋值和使用 185 11.11 类型定义符typedef 12 位运算 12.1 位运算符C语言提供了六种位运算符: 189 12.1.1 按位与运算 191 12.1.2 按位或运算 192 12.1.3 按位异或运算 192 12.1.4 求反运算 193 12.1.5 左移运算 193 1012.1.6 右移运算 193 12.2 位域(位段) 194 12.3 本章小结 13 文件 13.1 C文件概述 197 13.2 文件指针 198 13.3 文件的打开与关闭 199 13.3.1 文件的打开(fopen 函数) 200 13.3.2 文件关闭函数(fclose函数) 202 13.4 文件的读写 204 13.4.1 字符读写函数fgetc 和fputc 204 13.4.2 字符串读写函数fgets 和fputs 208 13.4.3 数据块读写函数fread 和fwtrite 209 13.4.4 格式化读写函数fscanf和fprintf 201 13.5 文件的随机读写 202 13.5.1 文件定位 202 13.5.2 文件的随机读写 203 13.6 文件检测函数 204 13.6.1 文件结束检测函数 feof函数 204 13.6.2 读写文件出错检测函数 205 1113.6.3 文件出错标志和文件结束标志置 0 函数 206 13.7 C库文件 208 13.8 本章小结 第1篇 基本知识 第1章 C++的初步知识 *1.1 从C到C++ *1.2 最简单的C++程序 1.3 C++程序的构成和书写形式 1.4 C++程序的编写和实现 1.5 关于C++上机实践 习题 第2章 数据类型与表达式 2.1 C++的数据类型 2.2 常量 2.2.1 什么是常量 2.2.2 数值常量 2.2.3 字符常量 2.2.4 符号常量 2.3 变量 2.3.1 什么是变量 2.3.2 变量名规则 2.3.3 定义变量 2.3.4 为变量赋初值 2.3.5 常变量 2.4 C++的运算符 2.5 算术运算符与算术表达式 2.5.1 基本的算术运算符 2.5.2 算术表达式和运算符的优先级与结合性 2.5.3 表达式中各类数值型数据间的混合运算 2.5.4 自增和自减运算符 2.5.5 强制类型转换运算符 2.6 赋值运算符与赋值表达式 2.6.1 赋值运算符 2.6.2 赋值过程中的类型转换 2.6.3 复合的赋值运算符 2.6.4 赋值表达式 2.7 逗号运算符与逗号表达式 习题 第2篇 面向过程的程序设计 第3章 程序设计初步 3.1 面向过程的程序设计和算法 3.1.1 算法的概念 3.1.2 算法的表示 3.2 C++程序和语句 3.3 赋值语句 3.4 C++的输入与输出 *3.4.1 输入流与输出流的基本操作 *3.4.2 在输入流与输出流中使用控制符 3.4.3 用getchar和putchar函数进行字符的输入和输出 3.4.4 用scanf和printf函数进行输入和输出 3.5 编写顺序结构的程序 3.6 关系运算和逻辑运算 3.6.1 关系运算和关系表达式 3.6.2 逻辑常量和逻辑变量 3.6.3 逻辑运算和逻辑表达式 3.7 选择结构和if语句 3.7.1 if语句的3种形式 3.7.2 if语句的嵌套 3.8 条件运算符和条件表达式 3.9 多分支选择结构和switch语句 3.10 编写选择结构的程序 3.11 循环结构和循环语句 3.11.1 用while语句构成循环 3.11.2 用do-while语句构成循环 3.11.3 用for语句构成循环 3.11.4 几种循环的比较 3.12 循环的嵌套 3.13 break语句和continue语句 3.14 编写循环结构的程序 习题 第4章 函数与预处理 4.1 概述 4.2 定义函数的一般形式 4.2.1 定义无参函数的一般形式 4.2.2 定义有参函数的一般形式 4.3 函数参数和函数的值 4.3.1 形式参数和实际参数 4.3.2 函数的返回值 4.4 函数的调用 4.4.1 函数调用的一般形式 4.4.2 函数调用的方式 4.4.3 对被调用函数的声明和函数原型 *4.5 内置函数 *4.6 函数的重载 *4.7 函数模板 *4.8 有默认参数的函数 4.9 函数的嵌套调用 4.10 函数的递归调用 4.11 局部变量和全局变量 4.11.1 局部变量 4.11.2 全局变量 4.12 变量的存储类别 4.12.1 动态存储方式与静态存储方式 4.12.2 自动变量 4.12.3 用static声明静态局部变量 4.12.4 用register声明寄存器变量 4.12.5 用extern声明外部变量 4.12.6 用static声明静态外部变量 4.13 变量属性小结 4.14 关于变量的声明和定义 4.15 内部函数和外部函数 4.15.1 内部函数 4.15.2 外部函数 4.16 预处理命令 4.16.1 宏定义 4.16 2 “文件包含”处理 4.16.3 条件编译 习题 第5章 数组 5.1 数组的概念 5.2 一维数组的定义和引用 5.2.1 定义一维数组 5.2.2 引用一维数组的元素 5.2.3 一维数组的初始化 5.2.4 一维数组程序举例 5.3 二维数组的定义和引用 5.3.1 定义二维数组 5.3.2 二维数组的引用 5.3.3 二维数组的初始化 5.3.4 二维数组程序举例 5.4 用数组名作函数参数 5.5 字符数组 5.5.1 字符数组的定义和初始化 5.5.2 字符数组的赋值与引用 5.5.3 字符串和字符串结束标志 5.5.4 字符数组的输入输出 5.5.5 字符串处理函数 5.5.6 字符数组应用举例 *5.6 C++处理字符串的方法——字符串类与字符串变量 5.6.1 字符串变量的定义和引用 5.6.2 字符串变量的运算 5.6.3 字符串数组 5.6.4 字符串运算举例 习题 第6章 指针 6.1 指针的概念 6.2 变量与指针 6.2.1 定义指针变量 6.2.2 引用指针变量 6.2.3 指针作为函数参数 6.3 数组与指针 6.3.1 指向数组元素的指针 6.3.2 用指针变量作函数参数接收数组地址 6.3.3 多维数组与指针 6.4 字符串与指针 6.5 函数与指针 6.5.1 用函数指针变量调用函数 6.5.2 用指向函数的指针作函数参数 6.6 返回指针值的函数 6.7 指针数组和指向指针的指针 6.7.1 指针数组的概念 6.7.2 指向指针的指针 6.8 有关指针的数据类型和指针运算的小结 6.8.1 有关指针的数据类型的小结 6.8.2 指针运算小结 *6.9 引用 6.9.1 什么是变量的引用 6.9.2 引用的简单使用 6.9.3 引用作为函数参数 习题 第7章 自定义数据类型 7.1 结构体类型 7.1.1 结构体概述 7.1.2 结构体类型变量的定义方法及其初始化 7.1.3 结构体变量的引用 7.1.4 结构体数组 7.1.5 指向结构体变量的指针 7.1.6 结构体类型数据作为函数参数 *7.1.7 动态分配和撤销内存的运算符new和delete 7.2 共用体 7.2.1 共用体的概念 7.2.2 对共用体变量的访问方式 7.2.3 共用体类型数据的特点 7.3 校举类型 7.4 用typedef声明类型 习题 第3篇 基于对象的程序设计 第8章 类和对象 8.1 面向对象程序设计方法概述 8.1.1 什么是面向对象的程序设计 8.1.2 面向对象程序设计的特点 8.1.3 类和对象的作用 8.1.4 面向对象的软件开发 8.2 类的声明和对象的定义 8.2.1 类和对象的关系 8.2.2 声明类类型 8.2.3 定义对象的方法 8.2.4 类和结构体类型的异同 8.3 类的成员函数 8.3.1 成员函数的性质 8.3.2 在类外定义成员函数 8.3.3 inline成员函数 8.3.4 成员函数的存储方式 8.4 对象成员的引用 8.4.1 通过对象名和成员运算符访问对象中的成员 8.4.2 通过指向对象的指针访问对象中的成员 8.4.3 通过对象的引用变量来访问对象中的成员 8.5 类的封装性和信息隐蔽 8.5.1 公用接口与私有实现的分离 8.5.2 类声明和成员函数定义的分离 8.5.3 面向对象程序设计中的几个名词 8.6 类和对象的简单应用举例 习题 第9章 关于类和对象的进一步讨论 9.1 构造函数 9.1.1 对象的初始化 9.1.2 构造函数的作用 9.1.3 带参数的构造函数 9.1.4 用参数初始化表对数据成员初始化 9.1.5 构造函数的重载 9.1.6 使用默认参数的构造函数 9.2 析构函数 9.3 调用构造函数和析构函数的顺序 9.4 对象数组 9.5 对象指针 9.5.1 指向对象的指针 9.5.2 指向对象成员的指针 9.5.3 this指针 9.6 共用数据的保护 9.6.1 常对象 9.6.2 常对象成员 9.6.3 指向对象的常指针 9.6.4 指向常对象的指针变量 9.6.5 对象的常引用 9.6.6 const型数据的小结 9.7 对象的动态建立和释放 9.8 对象的赋值和复制 9.8.1 对象的赋值 9.8.2 对象的复制 9.9 静态成员 9.9.1 静态数据成员 9.9.2 静态成员函数 9.10 友元 9.10.1 友元函数 9.10.2 友元类 9.11 类模板 习题 第10章 运算符重载 10.1 什么是运算符重载 10.2 运算符重载的方法 10.3 重载运算符的规则 10.4 运算符重载函数作为类成员函数和友元函数 10.5 重载双目运算符 10.6 重载单目运算符 10.7 重载流插入运算符和流提取运算符 10.7.1 重载流插入运算符“<<” 10.7.2 重载流提取运算符“>>” 10.8 不同类型数据间的转换 10.8.1 标准类型数据间的转换 10.8.2 转换构造函数 10.8.3 类型转换函数 习题 第4篇 面向对象的程序设计 第11章 继承与派生 11.1 继承与派生的概念 11.2 派生类的声明方式 11.3 派生类的构成 11.4 派生类成员的访问属性 11.4.1 公用继承 11.4.2 私有继承 11.4.3 保护成员和保护继承 11.4.4 多级派生时的访问属性 11.5 派生类的构造函数和析构函数 11.5.1 简单的派生类的构造函数 11.5.2 有子对象的派生类的构造函数 11.5.3 多层派生时的构造函数 11.5.4 派生类构造函数的特殊形式 11.5.5 派生类的析构函数 11.6 多重继承 11.6.1 声明多重继承的方法 11.6.2 多重继承派生类的构造函数 11.6.3 多重继承引起的二义性问题 11.6.4 虚基类 11.7 基类与派生类的转换 11.8 继承与组合 11.9 继承在软件开发中的重要意义 习题 第12章 多态性与虚函数 12.1 多态性的概念 12.2 一个典型的例子 12.3 虚函数 12.3.1 虚函数的作用 12.3.2 静态关联与动态关联 12.3.3 在什么情况下应当声明虚函数 12.3.4 虚析构函数 12.4 纯虚函数与抽象类 12.4.1 纯虚函数 12.4.2 抽象类 12.4.3 应用实例 习题 第13章 输入输出流 13.1 C++的输入和输出 13.1.1 输入输出的含义 13.1.2 C++的I/O对C的发展——类型安全和可扩展性 13.1.3 C++的输入输出流 13.2 标准输出流 13.2.1 cout,cerr和clog流 13.2.2 格式输出 13.2.3 用流成员函数put输出字符 13.3 标准输入流 13.3.1 cin流 13.3.2 用于字符输入的流成员函数 13.3.3 istream类的其他成员函数 13.4 文件操作与文件流 13.4.1 文件的概念 13.4.2 文件流类与文件流对象 13.4.3 文件的打开与关闭 13.4.4 对ASCII文件的操作 13.4.5 对二进制文件的操作 13.5 字符串流 习题 第14章 C++工具 14.1 异常处理 14.1.1 异常处理的任务 14.1.2 异常处理的方法 14.1.3 在函数声明中进行异常情况指定 14.1.4 在异常处理中处理析构函数 14.2 命名空间 14.2.1 为什么需要命名空间 14.2.2 什么是命名空间 14.2.3 使用命名空间解决名字冲突 14.2.4 使用命名空间成员的方法 14.2.5 无名的命名空间 14.2.6 标准命名空间std 14.3 使用早期的函数库 习题 附录A 常用字符与ASCII代码对照表 附录B 运算符与结合性 参考文献 《清华大学计算机系列教材:数据结构(第2版)》第二版在保持原书基本框架和特色的基础上,对主要各章,如第一、二、三、四、六及九章等,作了增删和修改。   《清华大学计算机系列教材:数据结构(第2版)》系统地介绍了各种类型的数据结构和查找、排序的各种方法。对每一种数据结构,除了详细阐述其基本概念和具体实现外,并尽可能对每种操作给出类PASCAL的算法,对查找和排序的各种算法,还着重在时间上作出定量或定性的分析比较。最后一章讨论文件的各种组织方法。   《清华大学计算机系列教材:数据结构(第2版)》概念清楚,内容丰富,并有配套的《数据结构题集》(第二版),既便于教学,又便于自学。   《清华大学计算机系列教材:数据结构(第2版)》可作为计算机类专业和信息类相关专业的教材,也可供从事计算机工程与应用工作的科技工作者参考。 第一章 绪论 1.1 什么是数据结构 1.2 基本概念和术语 1.3 数据结构的发展简史及它在计算机科学中所处的地位 1.4 算法的描述和算法分析 1.4.1 算法的描述 1.4.2 算法设计的要求 1.4.3 算法效率的度量 1.4.4 算法的存储空间需求 第二章 线性表 2.1 线性表的逻辑结构 2.2 线性表的顺序存储结构 2.3 线性表的链式存储结构 2.3.1 线性链表 2.3.2 循环链表 2.3,3 双向链表 2.4 一元多项式的表示及相加 第三章 栈和队列 3.1 栈 3.1.1 抽象数据类型栈的定义 3.1.2 栈的表示和实现 3.2 表达式求值 **3.3 栈与递归过程 3.3.1 递归过程及其实现 3.3.2 递归过程的模拟 3.4 队列 3.4.1 抽象数据类型队列的定义 3.4.2 链队列——队列的链式存储结构 3.4.3 循环队列——队列的顺序存储结构 3.5 离散事件模拟 第四章 串 4.1 串及其操作 4.1.1 串的逻辑结构定义 4.1.2 串的基本操作 4.2 串的存储结构 4.2.1 静态存储结构 4.2.2 动态存储结构 4.3 串基本操作的实现 4.3.1 静态结构存储串时的操作 4.3.2 模式匹配的一种改进算法 4.3.3 堆结构存储串时的操作 4.4 串操作应用举例 4.4.1 文本编辑 **4.4.2 建立词索引表 第五章 数组和广义表 5.1 数组的定义和运算 5.2 数组的顺序存储结构 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵 5.4 广义表的定义 5.5 广义表的存储结构 **5.6 m元多项式的表示 **5.7 广义表的递归算法 5.7.1 求广义表的深度 5.7.2 复制广义表 5.7.3 建立广义表的存储结构 第六章 树和二叉树 6.1 树的结构定义和基本操作 6.2 二叉树 6.2.1 定义与基本操作 6.2.2 二叉树的性质 6.2.3 二叉树的存储结构 6.3 遍历二叉树和线索二叉树 6.3.1 遍历二叉树 5.3.2 线索二叉树 6.4 树和森林 6.4.1 树的存储结构 6.4.2 森林与二叉树的转换 6.4.3 树的遍历 **6.5 树与等价问题 6.6 哈夫曼树及其应用 6.6.1 最优二叉树(哈夫曼树) 6.6.2 哈夫曼编码 **6.7 回溯法与树的遍历 **6.8 树的计数 第七章 图 7.1 图的定义和术语 7.2 图的存储结构 7.2.1 数组表示法 7.2.2 邻接表 7.2.3 十字链表 7.2.4 邻接多重表 7.3 图的遍历 7.3.1 深度优先搜索 7.3.2 广度优先搜索 7.4 图的连通性问题 7.4.1 无向图的连通分量和生成树 **7.4.2 有向图的强连通分量 7.4.3 最小生成树 **7.4.4 关节点和重连通分量 7.5 有向无环图及其应用 7.5.1 拓扑排序 7.5.2 关键路径 7.6 最短路径 7.6.1 从某个源点到其余各顶点的最短路径 7.6.2 每一对顶点之间的最短路径 **7.7 二部图与图匹配 第八章 动态存储管理 8.1 概述 8.2 可利用空间表及分配方法 8.3 边界标识法 8.3.1 可利用空间表的结构 8.3.2 分配算法 8.3.3 回收算法 8.4 伙伴系统 8.4.1 可利用空间表的结构 8.4.2 分配算法 8.4.3 回收算法 8.5 无用单元收集 8.6 存储紧缩 第九章 查找 9.1 静态查找表 9.1.1 顺序表的查找 9.1.2 有序表的查找 9.1.3 静态树表的查找 9.1.4 索引顺序表的查找 9.2 动态查找表 9.2.1 二叉排序树和平衡二叉树 9.2.2 B_树和B+树 9.2.3 键树 9.3 哈希表 9.3.1 什么是哈希表 9.3.2 哈希函数的构造方法 9.3.3 处理冲突的方法 9.3.4 哈希表的查找及其分析 第十章 内部排序 10.1 概述 10.2 插入排序 10.2.1 直接插入排序 10.2.2 其它插入排序 10.2.3 希尔排序 10.3 快速排序 10.4 选择排序 10.4.1 简单选择排序 10.4.2 树形选择排序 10.4.3 堆排序 10.5 归并排序 10.6 基数排序 10.6.1 多关键字的排序 10.6.2 链式基数排序 10.7 各种内部排序方法的比较讨论 第十一章 外部排序 11.1 外存信息的存取 11.2 外部排序的方法 11.3 多路平衡归并的实现 11.4 置换-选择排序 **11.5 缓冲区的并行操作处理 11.6 最佳归并树 **11.7 磁带归并排序 11.7.1 平衡归并 11.7.2 多步归并 第十二章 文件 12.1 有关文件的基本概念 12.2 顺序文件 12.3 索引文件 12.4 ISAM文件和VSAM文件 12.4.1 ISAM文件 12.4.2 VSAM文件 12.5 直接存取文件(散列文件) 12.6 多关键字文件 12.6.1 多重表文件 12.6.2 倒排文件 附录一 类PASCAL语言扩充部分的语法图 附录二 名词索引 附录三 过程和函数索引 参考书目 《面向对象的C++数据结构算法实现与解析》是采用面向对象的c++语言数据结构教材的学习辅导书,主要内容包括采用c++语言的类、模板、虚函数、友元、友类编写的各种主要数据存储结构的算法、基本操作成员函数、调用这些成员函数的主程序和程序运行结果以及各主要数据存储结构的图示。《面向对象的C++数据结构算法实现与解析》还介绍了stl模板的应用。   《面向对象的C++数据结构算法实现与解析》结合存储结构和算法,配合大量的图示,对于一些较难理解的算法,还配有文字说明。   《面向对象的C++数据结构算法实现与解析》适用于高等学校学生和自学者,同时也是很好的考研参考书。 第1章 线性表 1.1 顺序存储结构 1.2 链式存储结构 1.2.1 单链表 1.2.2 单循环链表 1.2.3 向循环链表 1.2.4 不设头结点的链表 1.3 静态链表存储结构 第2章 栈和队列 2.1 栈 2.1.1 栈的顺序存储结构 2.1.2 栈的链式存储结构 2.2 栈的应用与递归 2.2.1 数制转换 2.2.2 表达式求值 2.2.3 汉诺塔问题与递归的实现 2.2.4 迷宫问题 2.2.5 皇后问题 2.2.6 马踏棋盘问题 2.2.7 背包问题 2.3 队列 2.3.1 队列的链式存储结构 2.3.2 队列的顺序存储结构 2.4 队列的应用——排队和排队机的模拟 第3章 字符串和矩阵 3.1 字符串 3.1.1 字符串的按需(堆)存储结构 3.1.2 字符串的模式匹配算法 3.2 矩阵 3.2.1 多维数组的顺序存储结构 3.2.2 矩阵的压缩存储 第4章 树与二叉树 4.1 二叉树的顺序存储结构 4.2 二叉树的链式存储结构 4.3 二叉树的遍历 4.4 线索二叉树 4.5 二叉排序树 4.6 平衡二叉树 4.7 红黑树 4.8 伸展树 4.9 树的存储结构 4.10 赫夫曼树和赫夫曼编码 第5章 图 5.1 图的邻接矩阵存储结构 5.2 图的邻接表存储结构 5.3 图的深度优先遍历和广度优先遍历 5.4 图的应用 5.4.1 无向图的连通分量和生成树 5.4.2 最小生成树 5.4.3 关节点和重连通分量 5.4.4 拓扑排序和关键路径 5.4.5 最短路径 第6章 查找 6.1 静态查找表 6.2 静态树表 6.3 哈希表的插入、删除及查找 6.4 动态查找表 6.4.1 b树 6.4.2 键树 第7章 内部排序 7.1 插入排序 7.2 冒泡排序 7.3 简单选择排序 7.4 希尔排序 7.5 快速排序 7.6 堆排序 7.7 二路归并排序 7.8 静态链表排序 7.9 基数排序 第8章 外部排序 8.1 多路平衡归并 8.2 置换-选择排序 第9章 动态存储管理 9.1 边界标识法 9.2 伙伴系统 参考文献
很基础的东西,高手可以忽略了! 目 录 第1 章 计算机基础知识................................ 1 1.1 计算机发展概况.................................... 1 1.1.1 微处理器和微机的发展............. 1 1.1.2 微机的分类................................ 3 1.2 微机系统................................................ 4 1.2.1 微机硬件.................................... 5 1.2.2 微机软件.................................... 5 1.2.3 硬件与软件的关系..................... 7 1.3 计算机中的数制及其转换..................... 7 1.3.1 数与数制.................................... 7 1.3.2 数制转换.................................... 9 1.4 计算机中数的表示方法....................... 10 1.4.1 机器数与真值........................... 10 1.4.2 原码、反码、补码................... 11 1.4.3 补码的运算规则 与溢出判断 .............................. 12 1.4.4 计算机中常用的编码............... 13 1.5 微机的主要性能指标和应用............... 16 1.5.1 微机的主要性能指标............... 16 1.5.2 微机的应用.............................. 17 1.6 小结...................................................... 19 1.7 习题...................................................... 19 第 2 章 80X86 微处理器内部结构............ 21 2.1 微处理器的功能结构........................... 21 2.1.1 微处理器的典型结构............... 21 2.1.2 8086/8088 CPU 的内部结构.............................. 23 2.1.3 8086/8088 CPU 的寄存器结构........................... 24 2.2 8086/8088 存储器组织及其寻址......... 26 2.2.1 存储单元的地址和内容........... 26 2.2.2 存储器的结构及访问............... 26 2.2.3 存储器地址的分段................... 27 2.3 8086/8088 I/O 地址空间...................... 28 2.4 高档微处理器.......................................29 2.4.1 80286 微处理器........................29 2.4.2 80386 微处理器........................30 2.4.3 80486 微处理器........................31 2.4.4 Pentium 系列微处理器.............32 2.5 小结......................................................36 2.6 习题......................................................36 第 3 章 指令系统与寻址方式.....................38 3.1 寻址方式..............................................38 3.1.1 操作数类型...............................38 3.1.2 8086/8088 寻址方式.................38 3.2 指令系统..............................................44 3.2.1 数据传送指令.............
第1章 微型计算机概述 1 1.1 微型计算机的发展与应用 1 1.1.1 微处理器的产生和发展 1 1.1.2 微型计算机的分类 4 1.1.3 微型计算机的特点与性能指标 4 1.1.4 微型计算机的应用 6 1.2 微型计算机的硬件结构及系统组成 8 1.2.1 微型计算机硬件的基本结构 8 1.2.2 微型计算机的系统组成 11 1.3 计算机中的信息表示 12 1.3.1 计算机中的数制及其转换 13 1.3.2 计算机中数值数据的表示 15 1.3.3 计算机中常用的编码 18 本章小结 21 思考与练习题 21 第2章 典型微处理器 23 2.1 微处理器性能简介 23 2.1.1 典型微处理器的主要性能指标 23 2.1.2 微处理器的基本功能 24 2.2 Intel 8086微处理器的内、外部结构特性 24 2.2.1 8086微处理器内部组成结构 24 2.2.2 8086微处理器的寄存器 结构 27 2.2.3 8086微处理器的外部引脚特性 30 2.3 存储器和I/O组织 32 2.3.1 存储器组织 32 2.3.2 I/O端口组织 36 2.4 8086微处理器的总线周期和工作方式 36 2.4.1 8284A时钟信号发生器 37 2.4.2 8086总线周期 37 2.4.3 8086微处理器的最小/最大工作方式 38 2.5 32位微处理器简介 41 2.5.1 80386微处理器 41 2.5.2 80486微处理器 42 2.5.3 Pentium系列微处理器 44 2.5.4 Pentium微处理器采用的新技术 48 本章小结 50 思考与练习题 50 第3章 寻址方式与指令系统 53 3.1 指令格式及寻址 53 3.1.1 指令系统与指令格式 53 3.1.2 寻址及寻址方式的概念 54 3.2 8086指令系统的寻址方式 54 3.2.1 与操作数有关的寻址方式 55 3.2.2 与I/O端口有关的寻址方式 57 3.3 8086指令系统 58 3.3.1 数据传送类指令 58 3.3.2 算术运算类指令 61 3.3.3 逻辑运算与移位类指令 64 3.3.4 串操作类指令 67 3.3.5 控制转移类指令 70 3.3.6 处理器控制类指令 74 3.4 DOS和BIOS中断调用 74 3.4.1 DOS功能调用 74 3.4.2 BIOS中断调用 76 3.5 Pentium微处理器新增寻址方式和指令 76 3.5.1 Pentium微处理器的内部寄存器 76 3.5.2 Pentium微处理器的新增寻址方式 77 3.5.3 Pentium系列微处理器专用指令 78 3.5.4 Pentium系列微处理器控制指令 78 本章小结 79 思考与练习题 79 第4章 汇编语言 82 4.1 汇编语言简述 82 4.1.1 汇编语言及语句格式 82 4.1.2 汇编语言程序结构 86 4.1.3 汇编语言常用伪指令 87 4.1.4 汇编语言程序上机过程 94 4.2 汇编语言程序设计 94 4.2.1 程序设计的基本步骤及 程序基本结构 94 4.2.2 顺序结构程序设计 96 4.2.3 分支结构程序设计 98 4.2.4 循环结构程序设计 101 4.2.5 子程序设计 103 4.2.6 DOS调用程序设计 105 4.3 高级汇编技术 107 4.3.1 宏汇编 107 4.3.2 重复汇编与条件汇编 109 本章小结 113 思考与练习题 114 第5章 总线技术 116 5.1 概述 116 5.1.1 总线的概念 116 5.1.2 总线的结构 117 5.1.3 总线的分类 118 5.1.4 总线性能及标准 119 5.1.5 总线传输和控制 120 5.2 系统总线 121 5.2.1 概述 121 5.2.2 ISA总线 122 5.3 局部总线 128 5.3.1 PCI总线 128 5.3.2 AGP总线 132 5.4 外部设备总线 133 5.4.1 USB总线 133 5.4.2 IEEE 1394总线 136 5.5 I2C总线 139 5.5.1 I2C总线简介 139 5.5.2 I2C总线特性 139 5.5.3 I2C总线原理 140 本章小结 141 思考与练习题 141 第6章 存储器系统 143 6.1 存储器概述 143 6.1.1 存储器的分类 143 6.1.2 存储器的常用性能指标 144 6.1.3 存储系统的层次结构 145 6.1.4 半导体存储器的结构 146 6.2 随机存取存储器(RAM) 148 6.2.1 静态RAM(SRAM) 148 6.2.2 动态RAM(DRAM) 150 6.3 只读存储器(ROM) 152 6.3.1 掩膜ROM 152 6.3.2 可编程PROM 153 6.3.3 光可擦除EPROM 153 6.3.4 电可擦除E2PROM 153 6.3.5 闪速存储器 154 6.4 存储器的扩展与寻址 154 6.4.1 位扩展 155 6.4.2 字扩展 155 6.4.3 字位扩展 155 6.4.4 存储器的寻址 156 6.5 存储器与微处理器的连接 157 6.5.1 连接时应注意的问题 157 6.5.2 典型微处理器与存储器的连接 157 6.6 辅助存储器 159 6.6.1 硬盘存储器及其接口 159 6.6.2 光盘存储器及其接口 162 6.7 新型存储器技术 164 6.7.1 多体交叉存储器 165 6.7.2 高速缓冲存储器(cache) 165 6.7.3 虚拟存储器 167 本章小结 169 思考与练习题 170 第7章 输入/输出接口技术 172 7.1 概述 172 7.1.1 输入/输出接口电路要解决的问题 172 7.1.2 输入/输出接口的结构与功能 173 7.1.3 CPU与I/O接口之间传递的信息 175 7.1.4 I/O端口的编址方式 176 7.2 输入/输出的数据传送方式 177 7.2.1 无条件传送方式 177 7.2.2 查询传送方式 178 7.2.3 中断传送方式 180 7.2.4 DMA传送方式 182 本章小结 183 思考与练习题 183 第8章 可编程DMA控制器8237A 184 8.1 概述 184 8.1.1 8237A的主要功能 184 8.1.2 8237A的工作状态 184 8.2 8237A内部结构及引脚 185 8.2.1 8237A内部结构 185 8.2.2 8237A引脚及功能 186 8.3 8237A的工作方式 188 8.3.1 单字节传送方式 188 8.3.2 数据块传送方式 188 8.3.3 请求传送方式 189 8.3.4 级联传送方式 189 8.4 8237A内部寄存器功能及格式 189 8.4.1 当前地址寄存器 190 8.4.2 当前字节寄存器 190 8.4.3 基地址寄存器 190 8.4.4 基字节寄存器 190 8.4.5 命令寄存器 191 8.4.6 工作方式寄存器 192 8.4.7 请求寄存器 193 8.4.8 屏蔽寄存器 193 8.4.9 状态寄存器 194 8.4.10 暂存寄存器 195 8.4.11 软件命令 195 8.5 8237A的编程及应用 195 8.5.1 8237A主要寄存器端口地址分配 195 8.5.2 8237A编程一般步骤 196 8.5.3 8237A应用举例 198 本章小结 199 思考与练习题 199 第9章 中断技术 200 9.1 概述 200 9.1.1 中断的概念 200 9.1.2 中断源 201 9.1.3 中断处理过程 202 9.1.4 中断优先级管理 204 9.2 8086中断系统 206 9.2.1 中断类型 206 9.2.2 中断向量表 208 9.3 可编程中断控制器8259A及其应用 209 9.3.1 8259A内部结构及引脚 210 9.3.2 8259A中断管理方式 212 9.3.3 8259A中断响应过程 215 9.3.4 8259A编程及应用 215 本章小结 223 思考与练习题 224 第10章 可编程并行接口芯片8255A 225 10.1 并行接口概述 225 10.1.1 并行接口的分类 225 10.1.2 并行接口的特点 226 10.2 并行接口芯片8255A 226 10.2.1 内部结构及引脚 226 10.2.2 8255A的工作方式 229 10.2.3 8255A的编程及应用 235 本章小结 239 思考与练习题 239 第11章 可编程串行接口芯片8251A 241 11.1 串行传输的基本概念 241 11.1.1 串行通信概述 241 11.1.2 信号的调制与解调 243 11.2 串行接口芯片8251A 244 11.2.1 8251A的基本性能 244 11.2.2 8251A的基本结构 244 11.2.3 8251A的编程控制 248 11.2.4 8251A的初始化和编程应用 250 11.3 PC串行异步通信接口 254 11.3.1 串行异步通信的 基本概念 254 11.3.2 BIOS串行异步通信接口的功能调用 255 本章小结 258 思考与练习题 259 第12章 可编程定时器/计数器接口芯片8253 260 12.1 可编程定时器/计数器8253 260 12.1.1 定时器/计数器的基本原理 260 12.1.2 8253的特点 261 12.1.3 8253内部结构和 引脚功能 261 12.1.4 8253的初始化 263 12.1.5 8253的工作方式 265 12.2 8253的应用 272 12.2.1 8253的初始化编程 272 12.2.2 8253与系统的连接 273 12.2.3 8253应用实例 274 本章小结 275 思考与练习题 276 第13章 人机交互设备及接口 277 13.1 人机交互设备概述 277 13.2 键盘与鼠标 278 13.2.1 键盘的分类及工作原理 278 13.2.2 PC键盘分类及编程应用 281 13.2.3 鼠标工作原理及编程应用 284 13.3 显示器及接口 285 13.3.1 CRT显示器 286 13.3.2 CRT显示器接口电路编程方法 291 13.3.3 LED与LCD显示 294 13.4 打印机接口 298 13.4.1 常用打印机及工作原理 298 13.4.2 主机与打印机的接口 299 13.4.3 打印机的中断调用 300 13.5 其他外设简介 301 13.5.1 扫描仪原理及性能指标 301 13.5.2 数码照相机原理及其应用 302 13.5.3 触摸屏原理及其应用 303 本章小结 303 思考与练习题 304 第14章 D/A及A/D转换器 306 14.1 概述 306 14.2 典型D/A转换器及其应用 307 14.2.1 D/A转换器工作原理 307 14.2.2 D/A转换器的主要性能指标 309 14.2.3 8位D/A转换器DAC0832及其应用 309 14.3 典型A/D转换器及其应用 314 14.3.1 A/D转换器工作原理 314 14.3.2 A/D转换器的主要性能指标 315 14.3.3 8位A/D转换器ADC0809及其应用 316 14.3.4 A/D转换器的选择原则 322 14.4 A/D和D/A转换的应用实例 323 本章小结 324 思考与练习题 324
1.本书1~16章所附代码的运行环境 操作系统:Windows 2003、Windows XP Professional,或者Windows 2000 开发环境:Microsoft Visual Studio 2005 数据库:SQL Server 2005 Web服务器:IIS 5.1及以上版本 2.本书17~27章所附代码的运行环境 数据库采用MySQL 4.0及以上版本 服务器采用Tomcat 5.0 及以上版本 开发工具采用Eclipse 3.1以上版本 3.本书所附光盘范例 第1章(/C01/) JsWeb 传统的JavaScript模式实现刷新 IframeWeb 基于框架的不刷新模式 AjaxWeb 基于Ajax的Web 2.0模式的刷新模式 AsyncAjaxSample Ajax异步调用的完整示例 第2章(/C02/) 2.1.htm 3段JS使用形式 2.2.htm 不同浏览器使用“<noscript></noscript>” 2.3.htm 调用单独的JS文件 2.3.js 一个单独的JS测试文件 2.4.htm 完成层的换肤功能 2.5.htm 用于调试JS程序的测试代码 第3章(/C03/) 3.1.htm 判断浏览器类型的例子 3.2.htm 演示undefinded如何与null进行比较 3.3.htm 演示同名局部变量和全局变量的调用情况 3.4htm 引用数值型数据的例子 3.5.htm 数组使用的小例子 3.6.htm 一个字符串型转换为逻辑型数据的例子 3.7.htm 使用toLowerCase()方法进行转换的例子 3.8.htm 通过字符串类型来调用toLowerCase()方法 3.9.htm 对数字进行了复制、传递和比较 3.10.htm 复制、传递和比较一个对象 3.11.htm 对字符串进行比较 第4章(/C04/) 4.1.htm 简单表达式的例子 4.2.htm 两个字符串进行加操作的实例 4.3.htm 减号的取反功能 4.4.htm 变量赋值的例子 4.5.htm 把表达式赋值给一个变量的方法 4.6.htm 演示了两个符号的区别 4.7.htm “!==”和“===”的演示 4.8.htm 逗号表达式的连接应用 4.9.htm 对表达式进行“Void”运算 4.10.htm typeof运算符的使用 4.11.htm 创建和删除对象的例子 4.12.htm 用delete移除了myArry的第二个元素 4.13.htm 用“()”改变运算优先级的例子 4.14.htm 一个运算符结合性的例子 第5章(/C05/) 5.1.htm 一个最简单的条件语句 5.2.htm 检查变量x是否赋初值 5.3.htm if..else的使用情况 5.4.htm 一个用else进行更多选择的例子 5.5.htm 一个if语句嵌套的例子 5.6.htm 嵌套语句的另一种应用 5.7.htm 一个switch语句的应用 5.8.htm 利用while循环显示了一个6行的表格 5.9.htm while语句和do-while语句的循环实例 5.10.htm 显示了一个简易的九九乘法表 5.11.htm 用无限循环结构对上面乘法表的改写 5.12.htm 一个显示15以内奇数的程序 5.13.htm 一个函数定义的简单示例 5.14.htm 利用一个函数来显示对登录用户的问候 5.15.htm 定义了一个求阶乘的函数 5.16.htm JavaScript实现阶乘函数 5.17.htm 全局变量和局部变量的区别 5.18.htm 变量实例 5.19.htm 在函数内部使用arguments 5.20.htm 创建并使用动态函数的例子 5.21.htm URI编码处理函数的例子 5.22.htm 数值处理函数的例子 5.23.htm 一个isNaN方法应用的例子 第6章(/C06/) 6.1.htm 简单对象的使用 6.2.htm 如何使用构造函数为对象实例增加属性和方法 6.3.htm 在网页上显示中文形式的日期 6.4.htm 将一个小数四舍五入到指定位数 6.5.htm 以从大到小冒泡排序法为例 6.6.htm 使用Navigator的属性进行浏览器检测 6.7.htm 列出了一些可能的浏览器类型 6.8.htm Screen对象的使用 6.9.htm 用来检测浏览器窗口的实际大小 6.10.htm 可以设置文字大小随窗口大小而改变 6.11.htm 客户端性能检测 6.12.htm 个浏览器按键模拟的示例 第7章(/C07/) 7.1.htm 演示了编码和译码使用的方法 7.2.htm 演示了exec方法的用法 7.3.htm 对RegExp对象的综合举例 7.4.htm 演示了字符匹配的使用情况 7.5.htm 正则匹配举例 7.6.htm 用 ^ 匹配目标字符串的开始位置 7.7.htm 用 $ 匹配目标字符串的结尾位置 7.8.htm 用 \b 匹配一个字边界 第8章(/C08/) 8.1.htm XHTML中的事件绑定 8.2.htm 一个表单按钮的click处理器 8.3.htm 测试事件处理器的作用域 8.4.htm 绑定方法的使用 8.5.htm 使用一段文本来接收按键点击 8.6.htm 绑定处理器至对象 8.7.htm 网页中禁止鼠标右键的操作 第9章(/C09/) 9.1.htm 实现了在网页上显示当前时间的功能 9.2.htm 一个显示当前日期和星期的完整示例 9.3.htm 同时显示日期、时间和星期 9.4.htm 一个分时段问候的例子 9.5.htm 实现了显示不同地区的时间代码 9.6.htm 实现悬浮时钟效果的完整代码 9.7.htm 计算器的完整程序 9.8.htm 可以进行四则混合运算的计算器 9.9.htm 打字效果 9.10.htm 实现图片的随机选择 9.11.htm 一个基本下拉菜单 9.12.htm 下拉菜单 9.13.htm 实现渐显效果的下拉菜单的完整代码 9.14.htm 模拟系统菜单 9.15.htm 图片显示窗口的完整代码 9.16.htm 远程控制窗口 9.17.htm 实现菜单滑动效果的完整代码 9.18.htm 左键弹出式菜单效果的完整代码 9.19.htm 实现浮动菜单效果的完整代码 9.20.htm 实现树型导航菜单的完整代码 第10章(/C10/) ReturnText Ajax返回字符串数据 ReturnXML Ajax读取XML类型数据 PostUser Ajax提交数据更新服务器内容 xmlhttpWeather 获取天气网站的内容 第11章(/C11/) 11.1.htm 采用标准的DOM方法创建一个表格并将其插入到页面中 11.2.htm 添加单元格 11.3.htm 删除表格的第一行和第一列 11.4.htm 实现单元格行顺序的改变 dynamicTable 完整的Ajax调用DOM的实例 第12章(/C12/) 12.1.htm 一个在元素内定义CSS的范例 12.2.htm 一个在Head元素内定义CSS的范例 12.3.htm 引用CSS文件的页面 12.4.htm 通过下拉列表框来改变<div>容器的背景色 12.5.htm 实演示如何创建CSS文件 12.6.htm 演示一个在网页中应用投影的范例 12.7.htm 使用Ajax动态改变局部元素样式 CSSmenu 使用Ajax+CSS实现动态菜单效果 第13章(/C13/) 13.1.xml 一个简单的xml文件 13.1.xsl 使用XSLT将XML转换为HTML 13.2.xml 一个雇员列表xml文件 13.2.xsl 一个XSL样式表的例子 13.3.htm Internet Explorer 浏览器中XML的应用 13.4.htm 直接对XML文档进行添加、删除和显示数据的操作 13.5.js Mozilla 浏览器中xml的应用 13.5.xml 简单的xml文件 13.6.htm 格式化输出xml文件 13.7.htm 一个添加/删除记录的例子 第14章(/C14/) MenuSample 级联菜单实例 PageSample 实现Ajax翻页效果 数据库备份 本章实例所需要的数据库 第15章(/C15/) AjaxCallerSchedul 使用AjaxCaller实现简单的定时任务 RicoColor 使用Open Rico实现动态调色板 RicoDrag 使用Open Rico实现可拖拽的层 WebSitetestdojo 使用dojo组件实现卷帘效果的div隐藏 第16章(/C16/) 留言板源代码 所有留言板实例的源代码 数据库备份 留言板数据所需要的数据库 第17章(/ch17) 程序描述:本章介绍开发AJAX的开源框架GWT(Google Web Toolkit) 。最典型的Google Maps和Gmail等Google服务也正是基于此框架开发的。读者将能够快速掌握GWT的各种开发所涉及到的内容。 /firstgwt/FirstGWT.html 第一个GWT示例 /calculator/TexCalculator.html 个税计算器 第18章(/ch18) 程序描述:本章将介绍 GWT应用中高级应用的部分,包括各中组件和布局、如何发送XMLHttpRequest请求,以及如何解决浏览器历史记录问题等等,同时读者还将详细的了解RPC应用的开发过程。 /xmlsample/AjaxSample.html 读取XML文件 /history/HistoryExample.html 保存历史记录 /rpc/RPCExample.html RPC调用 第19章(/ch19) 程序描述:本章模仿Google ig,使用Ajax技术实现一个个性化主页系统。通过拖拽方式设置主页,当完成拖拽窗口时,自动保存布局,使用户可以随时根据喜好来设置布局。 /login.jsp 登录页面 /homepage.jsp 自定义主页 /all.css CSS样式表文件 /js JavaScript脚本文件 /graphics 系统使用的图片文件夹 第20章(/ch20) 程序描述:本章使用Prototype封装的Ajax对象实现上传文件时显示进度条的功能。当上传文件时,客户端同时显示文件上传的进度,从而及时了解文件传送情况。 /test.html 上传文件 /periodcal.jsp 上传文件后台处理页面 / prototype.js prototype框架类库文件 第21章(/ch21) 程序描述:本章将实现通过滑块来显示分页数据的功能。传统的分页方式,多数是通过单击按钮的方式来显示分页的。利用Ajax可以通过使用滑块的滑动来选择所显示的分页,这种拖拽的方式有很好的用户体验。 /test.html 滑动显示分页页面 /js JavaScript脚本文件 /img 系统使用的图片文件夹 第22章(/ch22) 程序描述:本章将利用开源框架Prototype,讲述如何在网页中实现Windows关机效果,使读者对Prototype框架有进一步的认识。 /lightbox.html 仿Window关机效果 /lightbox.js JavaScript脚本文件 第23章(/ch23) 程序描述:本章将使用Ajax技术实现动态获取数据的树状菜单。当展开菜单时,自动向服务器发送请求,查询该菜单下的子菜单,并在客户端显示子菜单,而无需刷新整个页面。 /simpleTree.jsp 简单树 /staticTree.jsp 静态树 /dynamicTree.jsp 动态树 /css/tree.css CSS样式表文件 /js/all.js JavaScript脚本文件 /images 图片文件 第24章(/ch24) 程序描述:本章将使用Ajax技术实现无刷新即可浏览RSS的阅读器。添加一个RSS地址时,自动保存到数据库。打开阅读RSS时,自动获取最新的RSS内容,而无需刷新页面。 /RSSReader.jsp RSS阅读器 /rss.js JavaScript脚本文件 第25章(/ch25) 程序描述:本章将仿照Google Suggest,使用Ajax技术实现动态获取搜索提示的功能。当输入搜索关键字时,自动向服务器发送请求,查询相关的关键字,并及时提示用户可输入的关键字。 /suggest.html 搜索提示 /ajax_search.js JavaScript脚本文件 第26章(/ch26) 程序描述:本章将使用Ajax技术实现无刷新即可浏览图片的相册。浏览图片时,自动向服务器发送请求,查询该类别下的照片,并显示到客户端。用户也可以根据喜好随时改变相册的风格。浏览相册的整个过程无需刷新页面。 / show.jsp 图片浏览 /all.js JavaScript脚本文件 /new.css CSS样式表文件 /styles.css CSS样式表文件 /images 图片文件 第27章(/ch27) 程序描述:本章将使用Ajax技术实现聊天室程序。使用Ajax来动态获取聊天记录,可以避免因屏幕不断刷新而出现的闪动现象。另外,使用Ajax可以减少服务器端的负荷,对这种客户端与服务器端通信量极大的程序是非常有意义的。对用户来讲,有很好地用户体验。 /welcome.jsp 聊天室欢迎页面 /room.jsp 聊天室页面 /ajax_chat.js JavaScript脚本文件 /styles.css CSS样式表文件
net的最近面试经典试题ASP.NET面试题集合 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举ASP.NET 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#中的委托是什么?事件是不是一种委托? 答 : 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答 : override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。 6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? 答: foreach (System.Windows.Forms.Control control in this.Controls) { if (control is System.Windows.Forms.TextBox) { System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; tb.Text = String.Empty ; } } 8.请编程实现一个冒泡排序算法? 答: int [] array = new int ; int temp = 0 ; for (int i = 0 ; i < array.Length - 1 ; i++) { for (int j = i + 1 ; j < array.Length ; j++) { if (array[j] < array) { temp = array ; array = array[j] ; array[j] = temp ; } } } 9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:不是。可以用任意类型。 10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; for (int i = 0 ; i < Num + 1 ; i++) { if((i%2) == 1) { Sum += i ; } else { Sum = Sum - I ; } } System.Console.WriteLine(Sum.ToString()); System.Console.ReadLine() ; 11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答:一般为3层 数据访问层,业务层,表示层。 数据访问层对数据库进行增删查改。 业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。 表示层为了与用户交互例如用户添加表单。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。 12.在下面的例子里 using Sy
内部类是指定义在其他类内部的类。根据定义的位置和特点,内部类可以分为成员内部类、局部内部类、匿名内部类静态内部类。 1. 成员内部类: 成员内部类是定义在另一个类的内部,并且与外部类实例相关联的内部类。它可以访问外部类的成员变量和方法,甚至可以访问外部类的私有成员。 ```java public class OuterClass { private int outerVariable = 10; public class InnerClass { public void display() { System.out.println("Outer variable: " + outerVariable); } } } // 使用成员内部类 public class Main { public static void main(String[] args) { OuterClass outer = new OuterClass(); OuterClass.InnerClass inner = outer.new InnerClass(); inner.display(); } } ``` 2. 局部内部类: 局部内部类是定义在方法或作用域内的内部类,只能在定义它的方法或作用域中使用。局部内部类对外部世界是隐藏的,只能在其定义的方法或作用域中创建和使用。 ```java public class OuterClass { public void methodWithLocalInnerClass() { int localVar = 5; class LocalInnerClass { public void display() { System.out.println("Local variable: " + localVar); } } LocalInnerClass inner = new LocalInnerClass(); inner.display(); } } // 使用局部内部类 public class Main { public static void main(String[] args) { OuterClass outer = new OuterClass(); outer.methodWithLocalInnerClass(); } } ``` 3. 匿名内部类: 匿名内部类是没有名字的内部类,用于实现一个接口或继承一个类,并且在创建对象时进行定义和实例化。通常在需要临时实现某个接口或继承某个类的情况下使用。 ```java public interface MyInterface { void display(); } // 使用匿名内部类 public class Main { public static void main(String[] args) { MyInterface obj = new MyInterface() { @Override public void display() { System.out.println("Anonymous inner class"); } }; obj.display(); } } ``` 4. 静态内部类静态内部类是定义在另一个类内部,并且被声明为静态的内部类。它与外部类实例无关,可以直接访问外部类的静态成员,但不能访问外部类的实例成员。 ```java public class OuterClass { private static int outerStaticVariable = 5; public static class StaticInnerClass { public void display() { System.out.println("Outer static variable: " + outerStaticVariable); } } } // 使用静态内部类 public class Main { public static void main(String[] args) { OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass(); inner.display(); } } ``` 以上是对不同类型的内部类的简单示例。每种内部类都有其特定的应用场景和用途,可以根据实际需求选择合适的内部类类型来实现代码的设计和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值