《软件开发实战 Visual C++开发实战》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:软件开发技术联盟编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302323099
  • 页数:678 页
图书介绍:本书从初学者的角度讲述使用Visual C++ 6.0进行程序开发应该掌握的各项技术,各章介绍技术时,都会提供示例或实例,同时在多数章节的结尾安排有综合应用,通过几个小型项目综合应用本章所讲解的知识,做到理论联系实际。本书包括Visual C++ 6.0开发环境,程序设计基础,流程控制,函数,类和对象等内容。

第1篇 新手入门 2

第1章 Visual C++ 6.0开发环境 2

1.1 Visual C++++ 6.0概述 3

1.2 熟悉Visual C++++ 6.0开发环境 3

1.2.1 菜单介绍 4

1.2.2 工具栏介绍 10

1.2.3 工作区介绍 11

1.2.4 代码编辑窗口介绍 13

1.2.5 控件面板介绍 14

1.2.6 Output(输出)窗口介绍 14

1.3 定制Visual C++++ 6.0开发环境 15

1.3.1 设计自己的工具栏窗口 15

1.3.2 调整代码文本颜色 16

1.3.3 批量注释 17

1.4 使用MSDN帮助工具 20

1.5 创建工程 21

1.5.1 创建一个简单的工程 21

1.5.2 设计程序界面 23

1.5.3 为控件关联成员变量 24

1.5.4 编写程序代码 25

1.5.5 编译并运行工程 25

1.5.6 发布应用程序 25

1.6 小结 26

第2章 程序设计基础 27

2.1 程序设计基本要素 28

2.1.1 标识符 28

2.1.2 关键字 28

2.1.3 常量 29

2.1.4 变量 29

2.1.5 寄存器变量 30

2.1.6 静态变量 31

2.1.7 外部变量 31

2.1.8 自动变量 32

2.1.9 注释 32

2.2 数据类型 33

2.2.1 简单数据类型 33

2.2.2 布尔类型 35

2.2.3 数组类型 35

2.2.4 枚举类型 37

2.2.5 结构体类型 38

2.2.6 共用体类型 41

2.2.7 指针类型 41

2.2.8 引用类型 46

2.2.9 类型别名 47

2.3 类型转换 47

2.3.1 数值类型转换 47

2.3.2 静态转换 48

2.3.3 动态转换 48

2.3.4 常量转换 49

2.3.5 重解释转换 50

2.3.6 数值类型与字符串之间的转换 50

2.4 运算符 52

2.4.1 赋值运算符 52

2.4.2 算术运算符 53

2.4.3 关系运算符和逻辑运算符 54

2.4.4 递增递减运算符 56

2.4.5 位运算符 56

2.4.6 sizeof运算符 59

2.4.7 new和delete运算符 61

2.4.8 优先级 61

2.5 表达式 63

2.5.1 逗号表达式 63

2.5.2 条件表达式 63

2.6 实战 64

2.6.1 绘制余弦曲线 64

2.6.2 使用带参数的宏定义求两个整数的乘积 65

2.6.3 定义操作员信息结构体 65

2.6.4 数鸭子问题求解 66

2.6.5 字符串加密与解密 67

2.6.6 输出系统日期和时间 69

2.7 小结 70

2.8 学习成果检验 70

第3章 流程控制 71

3.1 简单语句 72

3.2 复合语句 72

3.3 分支语句 74

3.3.1 if条件语句 74

3.3.2 switch分支语句 77

3.4 循环语句 81

3.4.1 for循环语句 81

3.4.2 while循环语句 84

3.4.3 do while循环语句 85

3.5 跳转语句 86

3.5.1 goto语句 86

3.5.2 return语句 87

3.5.3 exit语句 88

3.6 实战 89

3.6.1 促销商品的折扣计算 89

3.6.2 购物街中的商品价格竞猜 90

3.6.3 上帝创世的秘密 91

3.6.4 求灯塔数量 92

3.6.5 统计学生成绩的最高分、最低分和平均值 93

3.6.6 解析字符串 95

3.7 小结 96

3.8 学习成果检验 96

第4章 函数 97

4.1 函数的定义 98

4.1.1 函数的声明和定义 98

4.1.2 函数的调用 100

4.2 函数参数 100

4.2.1 默认值参数 101

4.2.2 const参数 101

4.2.3 指针/引用参数 102

4.2.4 数组参数 103

4.2.5 内联函数 106

4.3 重载函数 106

4.3.1 定义重载函数 107

4.3.2 隐藏重载函数 108

4.4 函数递归调用 110

4.5 函数指针 111

4.6 函数模板 112

4.6.1 函数模板应用 112

4.6.2 重载函数模板 113

4.7 作用域和生命期 114

4.7.1 局部作用域 114

4.7.2 全局作用域 116

4.7.3 命名空间 116

4.8 实战 120

4.8.1 通过函数输出存储在数组中的商品信息 120

4.8.2 通过函数回调输出查找数据 121

4.8.3 在数组中查找指定数据并通过参数返回数据索引 122

4.8.4 遍历磁盘目录 123

4.8.5 数值排序 125

4.9 小结 126

4.1 0学习成果检验 126

第5章 类和对象 127

5.1 面向对象程序设计 128

5.1.1 面向对象技术产生的背景 128

5.1.2 面向对象的主要特征 128

5.2 类的定义 129

5.3 类的实例化——对象 130

5.4 构造函数和析构函数 133

5.4.1 构造函数 133

5.4.2 复制构造函数 135

5.4.3 析构函数 137

5.5 特殊的类成员 138

5.5.1 常量成员 138

5.5.2 静态成员 139

5.5.3 隐藏的this指针 140

5.6 特殊的成员函数 142

5.6.1 内联成员函数 142

5.6.2 静态成员函数 144

5.6.3 重载成员函数 145

5.7 类成员指针 147

5.7.1 类成员函数指针 147

5.7.2 类数据成员指针 148

5.8 继承 149

5.8.1 单继承 149

5.8.2 虚函数与动态绑定 152

5.8.3 抽象类 154

5.8.4 类型转换 155

5.8.5 多继承 157

5.8.6 虚继承 159

5.9 运算符重载 161

5.9.1 构造函数自动转换与禁止 161

5.9.2 运算符重载 162

5.1 0友元函数和友元类 164

5.1 1类域 167

5.1 2嵌套类 170

5.1 3局部类 172

5.1 4类模板 172

5.1 4.1 应用类模板 172

5.1 4.2 类模板中的静态数据成员 177

5.1 5 异常处理 178

5.1 5.1 异常捕捉 178

5.1 5.2 抛出异常 179

5.1 6实战 181

5.1 6.1 递归遍历二叉树 181

5.1 6.2 循环遍历二叉树 184

5.1 6.3 统计图书的销量 189

5.1 6.4 计算几何图形的面积 190

5.1 6.5 对动物的行为实现多态 191

5.1 6.6 通过构造函数初始化学生信息 192

5.1 7小结 193

5.1 8学习成果检验 193

第6章 综合实例(一)——实现登录对话框 194

6.1 开发背景 195

6.2 系统功能描述 195

6.3 系统分析 195

6.3.1 需求分析 195

6.3.2 技术分析 195

6.4 系统实现过程 195

6.5 小结 197

6.6 学习成果检验 197

第2篇 进阶提高 200

第7章 对话框程序设计 200

7.1 创建对话框应用程序 201

7.2 创建对话框 202

7.2.1 设计对话框资源 202

7.2.2 创建并显示对话框 205

7.3 设置对话框属性 208

7.3.1 使用属性窗口设置对话框属性 209

7.3.2 使用代码设置对话框属性 213

7.4 对话框布局 214

7.4.1 向对话框中添加控件 214

7.4.2 调整控件的Tab键顺序 215

7.4.3 调整控件至相同的大小 216

7.4.4 在对话框中对齐控件 217

7.4.5 排列控件 220

7.4.6 使用网格线进行界面布局 223

7.4.7 测试对话框布局效果 224

7.5 访问对话框中的控件 224

7.5.1 使用类向导为控件关联变量 225

7.5.2 利用控件ID获取控件窗口指针 227

7.5.3 利用数据交换访问控件文本数据 228

7.6 设置对话框和应用程序图标 229

7.7 添加对话框成员和成员函数 231

7.7.1 添加成员和成员函数 231

7.7.2 添加消息处理函数 234

7.7.3 手动添加命令消息处理函数 235

7.8 使用消息对话框 236

7.9 Windows通用对话框 237

7.9.1 “文件”对话框 237

7.9.2 “查找”/“替换”对话框 238

7.9.3 “字体”对话框 239

7.9.4 “颜色”对话框 240

7.9.5 “打印”对话框 240

7.1 0实战 241

7.1 0.1 隐藏和显示标题栏 242

7.1 0.2 在对话框中设置控件的提示信息 242

7.1 0.3 如QQ般隐藏的窗体 244

7.1 0.4 遍历对话框中的控件 244

7.1 0.5 应用程序背景与桌面融合 245

7.1 0.6 获取系统磁盘信息 246

7.1 1小结 248

7.1 2学习成果检验 248

第8章 MFC通用控件 249

8.1 编辑框控件EditBox 250

8.1.1 获取/设置编辑框文本 250

8.1.2 设置字体和文本颜色 250

8.1.3 设置密码框 251

8.1.4 设置只读编辑框 251

8.1.5 编辑框多行显示文本 252

8.2 静态文本控件StaticText 252

8.2.1 设置控件文本 252

8.2.2 响应鼠标单击事件 253

8.3 按钮控件Button 254

8.3.1 设置按钮单击事件 254

8.3.2 设置图标按钮 255

8.4 复选框控件CheckBox 256

8.4.1 设置和取消复选框选中状态 256

8.4.2 使用复选框统计个人爱好 257

8.5 单选按钮控件RadioButton 258

8.5.1 为单选按钮设置分组 258

8.5.2 利用单选按钮确定用户的选择 259

8.6 组合框控件ComboBox 260

8.6.1 设置组合框风格 260

8.6.2 调整组合框列表部分大小 261

8.6.3 向组合框中插入数据 261

8.6.4 获取用户选择的数据 262

8.6.5 设置组合框默认显示的数据 262

8.7 列表框控件ListBox 263

8.7.1 向列表框中插入文本 263

8.7.2 为列表框中的项目添加复选功能 264

8.7.3 同时选择多个项目 265

8.8 图像控件Picture 265

8.8.1 使用属性窗口显示位图 266

8.8.2 动态加载位图 266

8.9 实战 267

8.9.1 利用图像控件实现公交线路模拟 267

8.9.2 设计媒体播放器 270

8.9.3 上下移动列表项位置 271

8.9.4 具有分隔条的静态文本控件 272

8.9.5 自动调整组合框宽度 273

8.9.6 金额编辑器 274

8.1 0小结 275

8.1 1学习成果检验 275

第9章 MFC高级控件 276

9.1 图像列表控件ImageList 277

9.1.1 创建图像列表 277

9.1.2 使用图像列表绘图 278

9.2 列表视图控件ListControl 279

9.2.1 设置列表视图控件风格 280

9.2.2 使用列表视图设计登录界面 280

9.2.3 设置列表视图背景位图 281

9.2.4 使用列表视图显示表格数据 283

9.3 树视图控件TreeControl 284

9.3.1 设置树视图控件属性 284

9.3.2 使用树视图控件显示区域信息 285

9.3.3 修改树视图控件的文本颜色 286

9.3.4 设置复选功能的树视图控件 286

9.4 进度条控件Progress 290

9.5 滑块控件Slider 291

9.5.1 滑块控件属性设置 292

9.5.2 使用滑块控件设置颜色 293

9.6 标签控件TabControl 294

9.6.1 标签控件属性设置 295

9.6.2 使用标签控件设计多页面窗口 296

9.6.3 显示图标的标签控件 298

9.7 实战 299

9.7.1 删除学生信息 299

9.7.2 对位图文件进行批量编号命名 302

9.7.3 Loading窗口中的进度的百分比显示 304

9.7.4 在列表中编辑文本 305

9.7.5 QQ抽屉控件 306

9.7.6 树控件的背景设计 307

9.8 小结 308

9.9 学习成果检验 308

第10章 菜单、工具栏和状态栏设计 309

10.1 菜单设计 310

10.1.1 设计菜单资源 310

10.1.2 菜单项命令处理 312

10.1.3 动态创建菜单 313

10.1.4 禁用/启用菜单项 315

10.1.5 设计弹出式菜单 317

10.1.6 设计位图菜单 318

10.2 工具栏设计 321

10.2.1 工具栏资源设计 321

10.2.2 工具栏按钮命令处理 324

10.2.3 动态创建工具栏 324

10.2.4 为工具栏设置工具提示功能 328

10.3 状态栏设计 329

10.3.1 创建状态栏 329

10.3.2 在状态栏中显示进度条 331

10.4 实战 332

10.4.1 设计学生管理系统主界面 332

10.4.2 设计任务栏托盘菜单 334

10.4.3 多国语言菜单 336

10.4.4 使用更新机制控制菜单可用性 337

10.4.5 带历史信息的菜单 338

10.4.6 滚动字幕的状态栏 338

10.5 小结 339

10.6 学习成果检验 339

第11章 综合实例(二)——QQ登录式的用户选择列表 340

11.1 开发背景 341

11.2 系统功能描述 341

11.3 系统分析 341

11.3.1 需求分析 341

11.3.2 技术分析 341

11.4 系统实现过程 341

11.5 小结 342

11.6 学习成果检验 343

第3篇 中级开发 346

第12章 文本、图形图像处理技术 346

12.1 图形设备接口 347

12.1.1 设备上下文DC 347

12.1.2 GDI对象 348

12.2 对话框窗口区域 349

12.3 文本输出 350

12.3.1 在指定区域中输出文本 350

12.3.2 输出指定字体和颜色文本 352

12.3.3 在通道中输出文本 354

12.3.4 在图像背景上输出透明文本 355

12.4 绘制图形 356

12.4.1 绘制五子棋表格 356

12.4.2 绘制多边形 357

12.4.3 绘制控件外观 358

12.4.4 填充区域 359

12.5 图像输出 361

12.5.1 在窗口中输出位图资源 361

12.5.2 显示磁盘中的位图文件 363

12.5.3 在窗口非客户区域输出位图 365

12.5.4 位图文件结构分析 367

12.5.5 使用位图数据直接绘图 368

12.5.6 显示JPEG格式图像 370

12.6 GDI+图像处理技术 373

12.6.1 在程序中使用GDI+ 373

12.6.2 使用GDI+显示GIF动画 373

12.6.3 使用GDI+实现图像水印效果 376

12.7 实战 378

12.7.1 设计具有图片滚动功能的浏览器 378

12.7.2 设计字形窗体的程序启动界面 381

12.7.3 绘制圆角按钮 383

12.7.4 绘制渐变颜色的文字 384

12.7.5 模拟时钟 385

12.7.6 数字验证 386

12.8 小结 387

12.9 学习成果检验 387

第13章 打印技术 388

13.1 打印基础知识 389

13.1.1 打印机介绍 389

13.1.2 分辨率 389

13.1.3 映射模式 389

13.2 打印输出 390

13.2.1 获取打印机设备上下文 391

13.2.2 打印文本信息 391

13.2.3 打印图像 393

13.3 打印控制 395

13.3.1 控制打印方向 396

13.3.2 设置打印纸大小 398

13.4 实战 399

13.4.1 实现工作证打印 399

13.4.2 打印对话框及其控件中的数据 402

13.4.3 具有滚动条的预览界面 403

13.4.4 设置打印表格的边线及字体 406

13.4.5 实现照片的打印 408

13.4.6 实现商品销售图表的打印 409

13.5 小结 410

13.6 学习成果检验 410

第14章 文件操作 411

14.1 使用C函数进行文件操作 412

14.1.1 读取文件信息 412

14.1.2 写入文件信息 413

14.1.3 定位文件 415

14.2 使用CFile类进行文件操作 416

14.2.1 读取文件信息 416

14.2.2 写入文件信息 418

14.2.3 定位文件 419

14.2.4 文件异常处理 421

14.3 文件管理 423

14.3.1 获取文件属性信息 423

14.3.2 查找文件 425

14.3.3 复制文件 427

14.3.4 删除文件 429

14.4 INI文件操作 430

14.4.1 INI文件结构解析 430

14.4.2 读写INI文件 430

14.5 注册表操作 433

14.5.1 使用函数直接读写注册表 434

14.5.2 使用CRegKey类读写注册表 437

14.6 实战 439

14.6.1 复制文件过程中显示进度条 439

14.6.2 设置开机自动运行 441

14.6.3 重命名文件 443

14.6.4 列举文件夹下的所有文件 445

14.6.5 批量删除指定类型的文件 446

14.7 小结 447

14.8 学习成果检验 447

第15章 程序调试 448

15.1 断点跟踪 449

15.1.1 设计简单断点 449

15.1.2 设置数据断点 450

15.1.3 设置条件断点 450

15.1.4 设置消息断点 451

15.2 调试窗口 452

15.2.1 Watch窗口 452

15.2.2 Call Stack窗口 454

15.2.3 Memory窗口 455

15.2.4 Variables窗口 456

15.2.5 Registers窗口 456

15.2.6 Disassembly窗口 457

15.3 宏调试技术 458

15.3.1 应用TRACE宏输出信息 458

15.3.2 应用ASSERT宏诊断条件是否成立 459

15.4 内存泄露检查 459

15.5 小结 460

第16章 综合实例(三)——垃圾文件清理工具 461

16.1 开发背景 462

16.2 系统功能描述 462

16.3 系统技术分析 462

16.4 系统实现过程 463

16.5 小结 465

16.6 学习成果检验 465

第4篇 高级开发 468

第17章 ADO数据库编程 468

17.1 数据库概述 469

17.1.1 数据库发展历史 469

17.1.2 关系型数据库 470

17.2 ADO技术 470

17.2.1 ADO概述 470

17.2.2 在工程中使用ADO技术 471

17.3 ADO对象 471

17.3.1 ADO连接对象 471

17.3.2 ADO记录集对象Recordset 473

17.3.3 ADO命令对象Command 476

17.4 实战 478

17.4.1 使用ActiveX控件连接数据库 478

17.4.2 使用ADO对象向数据库添加数据 480

17.4.3 使用SQL语句修改和删除数据库中的数据 482

17.4.4 在应用程序中使用事务 484

17.4.5 对Access数据库进行录入和提取图片 485

17.4.6 读取SQL Server数据库结构 488

17.5 小结 489

17.6 学习成果检验 489

第18章 多线程应用程序设计 490

18.1 线程概述 491

18.1.1 线程的定义 491

18.1.2 线程与进程的关系 491

18.2 线程的创建 491

18.2.1 使用CreateThread函数创建线程 492

18.2.2 使用_beginthread函数创建线程 493

18.2.3 使用AfxBeginThread函数创建线程 494

18.3 线程的调度 497

18.3.1 挂起线程 497

18.3.2 唤醒线程 498

18.3.3 终止线程 499

18.4 线程同步 500

18.4.1 线程同步的必要性 500

18.4.2 使用事件对象实现线程同步 501

18.4.3 使用互斥对象实现线程同步 503

18.4.4 使用信标对象实现线程同步 505

18.4.5 使用关键代码段实现线程同步 506

18.5 线程池 508

18.5.1 异步调用函数 508

18.5.2 依据指定的时间间隔调用函数 510

18.6 实战 512

18.6.1 使用多线程实现临时文件清理 512

18.6.2 使用多线程实现任务列表管理 518

18.6.3 在自己的应用程序中调用QQ 524

18.6.4 利用多线程实现文件查找 525

18.6.5 利用闪屏线程设计启动界面 526

18.6.6 统计文本文件中汉字与字符的个数 527

18.7 小结 528

18.8 学习成果检验 528

第19章 动态链接库 529

19.1 动态链接库基础 530

19.1.1 动态链接库的特点 530

19.1.2 查看动态链接库 530

19.2 创建和访问动态链接库 531

19.2.1 创建通用的动态链接库 531

19.2.2 访问动态链接库 533

19.2.3 向动态链接库中添加类和资源 534

19.2.4 访问动态链接库中的类和资源 535

19.3 移花接木——函数转发器 537

19.4 实战 537

19.4.1 使用动态链接库设计支持多国语言的应用程序 538

19.4.2 利用动态链接库实现界面换肤 541

19.4.3 判断闰年 542

19.4.4 格式化磁盘 543

19.4.5 提取并保存应用程序图标 544

19.4.6 获取CPU的ID值 545

19.5 小结 547

19.6 学习成果检验 547

第20章 网络编程 548

20.1 计算机网络基础 549

20.1.1 计算机网络发展历史 549

20.1.2 OSI参考模型 549

20.1.3 IP地址 550

20.1.4 域名 550

20.1.5 地址解析 551

20.1.6 TCP/IP协议 551

20.1.7 端口 553

20.2 套接字编程基础 553

20.2.1 套接字概述 553

20.2.2 套接字阻塞模式 553

20.2.3 字节顺序 554

20.2.4 套接字I/O模型 554

20.3 套接字函数 567

20.3.1 套接字函数介绍 567

20.3.2 设计简单的网络聊天程序 570

20.4 MFC套接字编程 577

20.4.1 CAsyncSocket类 577

20.4.2 CSocket类 580

20.4.3 设计多人对话的网络聊天室 581

20.5 实战 585

20.5.1 设计信息广播应用程序 586

20.5.2 设计文件发送应用程序 588

20.5.3 获取本机用户名和IP地址 603

20.5.4 实现Ping命令 603

20.5.5 通过UDP协议发送消息 606

20.6 小结 608

20.7 学习成果检验 608

第21章 综合实例(四)——局域网监控系统 609

21.1 开发背景 610

21.2 系统功能描述 610

21.3 系统技术分析 610

21.4 系统实现过程 611

21.5 小结 614

21.6 学习成果检验 614

第5篇 项目实战 616

第22章 学生管理系统 616

22.1 开发背景 617

22.2 系统分析 617

22.2.1 需求分析 617

22.2.2 系统功能描述 617

22.3 系统设计 617

22.3.1 系统目标 617

22.3.2 系统功能结构 618

22.3.3 系统预览 618

22.3.4 业务流程图 619

22.3.5 数据库设计 619

22.4 公共类设计 622

22.5 主窗体设计 622

22.6 科目信息管理模块设计 623

22.6.1 科目信息管理模块概述 623

22.6.2 科目信息管理模块技术分析 624

22.6.3 科目信息管理模块实现过程 624

22.7 学生信息管理模块设计 628

22.7.1 学生信息管理模块概述 628

22.7.2 学生信息管理模块技术分析 629

22.7.3 学生信息管理模块实现过程 629

22.8 学生成绩录入模块设计 632

22.8.1 学生成绩录入模块概述 632

22.8.2 学生成绩录入模块技术分析 633

22.8.3 学生成绩录入模块实现过程 633

22.9 成绩等级管理模块设计 635

22.9.1 成绩等级管理模块概述 635

22.9.2 成绩等级管理模块技术分析 635

22.9.3 成绩等级管理模块实现过程 636

22.1 0学生违规查询模块设计 641

22.1 0.1 学生违规查询模块概述 641

22.1 0.2 学生违规查询模块技术分析 642

22.1 0.3 学生违规查询模块实现过程 642

22.1 1学生成绩报表打印模块设计 645

第23章 人事考勤管理系统 649

23.1 开发背景 650

23.2 系统分析 650

23.2.1 需求分析 650

23.2.2 系统功能描述 650

23.3 系统设计 650

23.3.1 设计目标 650

23.3.2 系统功能结构 651

23.3.3 系统预览 651

23.3.4 业务流程图 652

23.3.5 数据库设计 652

23.4 公共类设计 653

23.5 主窗体设计 657

23.6 用户登录模块设计 658

23.6.1 用户登录模块概述 658

23.6.2 用户登录模块技术分析 658

23.6.3 用户登录模块实现过程 659

23.7 用户管理模块设计 659

23.7.1 用户管理模块概述 659

23.7.2 用户管理模块技术分析 660

23.7.3 用户管理模块实现过程 660

23.8 部门管理模块设计 661

23.8.1 部门管理模块概述 661

23.8.2 部门管理模块技术分析 662

23.8.3 部门管理模块实现过程 662

23.9 人员信息管理模块设计 664

23.9.1 人员信息管理模块概述 664

23.9.2 人员信息管理模块技术分析 665

23.9.3 人员信息管理模块实现过程 665

23.10考勤管理模块设计 670

23.10.1 考勤管理模块概述 670

23.10.2 考勤管理模块技术分析 670

23.10.3 考勤管理模块实现过程 671

23.11考勤汇总查询模块设计 675

23.11.1 考勤汇总查询模块概述 675

23.11.2 考勤汇总查询模块技术分析 675

23.11.3 考勤汇总查询模块实现过程 676