编辑推荐
? 按照“以协议为核心,以应用为目的”的思想编写。
? 贯穿知识建构、启发思维的教学理念。
? 贴近应用,贴近现代。
? 概念清晰、严谨,注重本质层面讨论。
? 结构简洁、清晰,容易复习、梳理。
? 习题丰富、实验覆盖面广。
内容简介
在掌握了Java基本知识后,可以通过课程设计来巩固和提高Java编程技术,本书就是针对这一目的编写的。
本书以8个具有一定代表性的课程设计题目为框架,体现MVC模式和面向对象的设计思想,强化内置Derby数据库、网络MySQL数据库以及Excel工作簿在应用中的作用;设计思路清晰,便于理解,可帮助读者提高设计能力以及面向对象的编程能力;每个课程设计都按照MVC模式展开,每章内容都由设计要求、数据模型、简单测试、视图设计、GUI程序、程序发布和课设题目7个部分构成;各个课程设计题目相互独立,读者可以从任何一个课程设计题目开始阅读本书,可以按照本书布置的课程设计作业来开发一个软件,也可以参考这些课程设计题目设计类似的软件。
本书不仅可以作为理工科各个专业Java课程设计的教材,也可作为自学者提高编程能力的参考书。
作者简介
张基温,先后担任名古屋大学访问学者,山西财经大学、江南大学、华东政法大学、华南农业大学珠江学院、常熟理工学院、福建工程学院、广西职业技术学院、晋城学院等多所大学的专职、客座或兼职教授,北京大学博雅方略城市发展与信息化研究中心研究员,南京大学出版社总编顾问,太原高新技术区IT研究院实验室主任,山西省紧缺人才专家委员会副主任,中国信息经济学会常务理事,全国高等院校计算机基础教育研究会常务理事兼课程建设委员会副主任,中国计算机学会教育专业委员会委员,国家NIT考试委员会委员,江苏省计算机基础教学指导委员会委员,山西省新世纪专家学者协会副会长。为清华大学出版社、电子工业出版社、中国水利水电出版社、南京大学出版社、中国铁道出版社等主编了信息管理与信息系统专业、计算机实验与实践、大学生信息素养等多个系列教材。研究和教学领域涉及计算机科学与技术、信息安全、信息经济学、电子政务与电子商务、服务科学,已发表学术论文一百余篇,出版著作百余种。
目录
目录
第1章 动物换位
1.1 设计要求 1
1.2 数据模型 1
1.3 简单测试 6
1.4 视图设计 8
1.5 GUI程序 16
1.6 程序发布 17
1.7 课设题目 18
第2章 保存计算过程的计算器
2.1 设计要求 20
2.2 数据模型 20
2.3 简单测试 26
2.4 视图设计 27
2.5 GUI程序 37
2.6 程序发布 37
2.7 课设题目 38
第3章 单词簿
3.1 设计要求 40
3.2 数据模型 40
3.3 简单测试 48
3.4 视图设计 50
3.5 GUI程序 63
3.6 程序发布 64
3.7 课设题目 65
第4章 广告墙
4.1 设计要求 66
4.2 数据模型 66
4.3 简单测试 79
4.4 视图设计 82
4.5 GUI程序 100
4.6 程序发布 101
4.7 课设题目 102
第5章 标准化试题训练系统
5.1 设计要求 103
5.2 数据模型 103
5.3 简单测试 113
5.4 视图设计 115
5.5 GUI程序 125
5.6 程序发布 126
5.7 课设题目 127
第6章 走迷宫
6.1 设计要求 128
6.2 数据模型 129
6.3 简单测试 139
6.4 视图设计 140
6.5 GUI程序 150
6.6 程序发布 151
6.7 课设题目 152
第7章 魔板游戏
7.1 设计要求 153
7.2 数据模型 154
7.3 简单测试 159
7.4 视图设计 161
7.5 GUI程序 167
7.6 程序发布 171
7.7 课设题目 171
第8章 扫雷游戏
8.1 设计要求 173
8.2 数据模型 174
8.3 简单测试 182
8.4 视图设计 184
8.5 GUI程序 193
8.6 程序发布 196
8.7 课设题目 197
精彩书摘
第5章 标准化试题训练系统
5.1 设计要求
设计GUI界面的标准化试题训练系统。具体要求如下:
① 使用 Microsoft Excel工作簿存放标准化试题,形成题库。
② 程序每次从题库随机抽取若干道题目形成一张试卷,用户可以依次做试卷上的题目,允许用户向前、向后翻阅试卷上的题目。
③ 用户每次做完一个题目必须确定该题目的答案,否则无效。
④ 有计时功能,比如指定一张试卷限用时15分钟,时间一到用户再无法答题,提示用户提交试卷。
⑤ 用户一旦提交试卷,程序将给出试卷的分值。
⑥ 为了达到反复训练的目的,用户提交试卷后可以继续让程序再出一套试卷。
程序运行的参考效果图如图5.1所示。
图5.1 标准化试题训练系统
注意 我们按照MVC-Model View Control(模型,视图,控制器)的设计思想展开程序的设计和代码的编写。数据模型部分相当于MVC中的Model角色,视图设计部分给出的界面部分相当于MVC中的View,视图设计部分给出的事件监视器相当于MVC中的Control。
5.2 数据模型
根据系统设计要求在数据模型部分设计了Excel表,编写了有关的类。
* 创建Excel工作簿。
* Problem类:其实例是一道试题。
* TestPaper 类:其实例是一张试卷。
* GiveTestPaper接口:封装给出试卷方法。
* RamdomInitTestPaper类:实现GiveTestPaper接口,其实例负责随机从题库抽取题目给出试卷。
* Teacher接口:封装阅卷方法。
* TeacherOne类:实现Teacher接口,其实例负责阅卷。
数据模型部分涉及的主要类的UML图如图5.2所示。
图5.2 主要类的UML图
Excel工作簿
Excel工作簿在存储数据方面有着广泛的应用(它不是数据库),其中的Sheet表的结构和数据库中的表类似。JDBC没有提供操作Excel工作簿的API。为了操作Excel工作簿,需要额外下载操作Excel的API。
前言/序言
第3版前言
本书以8个具有一定代表性的课程设计题目为框架,从各个方面展示了Java在应用系统开发中的实用技术。在第3版特别体现了MVC模式,对代码全部进行了新的设计和编写,充分体现面向对象的设计思想。另外,本书特别增加了使用数据库的训练,如内置Derby数据库、网络MySQL数据库以及操作Excel工作簿的新题目,并舍弃了第2版的一些题目。
本书中的课程设计题目互相独立,读者可以从任何一个课程设计题目开始阅读本书,每个课程设计都按照MVC模式展开,设计思路清晰,便于理解,可帮助读者提高设计能力以及面向对象的编程能力。本书每章内容都由设计要求、数据模型、简单测试、视图设计、GUI程序、程序发布和课设题目7个部分构成。读者可以按照本书布置的课程设计作业来开发一个软件,也可以参考这些课程设计题目设计类似的软件。读者阅读调试完8个课程设计后(建议至少阅读调试完前5个课程设计),在设计能力和编程技术能力方面一定会有收获,在此基础上再完成一个教材建议的课设题目或自己构思一个难度相当的课设题目。
虽然本书是《Java 2实用教程(第5版)》的配套教材,但也可以独立使用。
本书的全部代码都是作者亲自编写并且在JDK1.8运行环境下调试通过。本书代码仅供读者学习Java使用,不得以任何方式抄袭出版。大家也可关注作者微信公众号java-violin或访问作者个人网站http://gengxiangyi.lingw.net获得有关资料。
希望本书能对读者学习Java有所帮助,并请读者批评指正。
作 者
2017年10月
《Java核心技术:卷I——基础知识》(第13版) 作者: 凯·S·霍斯特曼 (Corey S. Horstmann) 出版社: 机械工业出版社 图书简介: 《Java核心技术:卷I——基础知识》(第13版)是一部全面、深入且实用的Java编程指南,专为希望掌握Java语言精髓,构建坚实编程基础的开发者设计。本书自出版以来,便凭借其严谨的学术深度、清晰的逻辑结构以及丰富的实战案例,赢得了全球Java开发者的广泛赞誉,成为无数高校Java课程的首选参考教材,也是程序员职业生涯中不可或缺的工具书。 本书并非简单罗列Java语法,而是着眼于Java语言的设计哲学、核心概念以及最佳实践,引导读者从理解“为什么”到掌握“怎么做”。作者凯·S·霍斯特曼凭借其深厚的Java领域造诣和丰富的教学经验,将复杂的Java技术转化为易于理解的知识体系,帮助读者建立起对Java世界的宏观认知,为后续深入学习和开发打下坚实基础。 内容亮点与结构解析: 本书共分为二十六章,每个章节都围绕一个核心主题展开,层层递进,循序渐进。 第一部分:Java程序设计入门(第1-5章) 第一章 Java程序设计的初识: 本章为初学者量身打造,首先介绍Java语言的起源、发展以及其跨平台的核心优势。接着,详细阐述了Java程序的开发环境搭建,包括JDK的安装与配置,IDE(集成开发环境)的选择与使用(如Eclipse、IntelliJ IDEA),以及第一个“Hello, World!”程序的编写与运行,让读者快速体验Java编程的乐趣。同时,本章也介绍了Java程序运行的JVM(Java虚拟机)机制,为理解Java的跨平台特性打下理论基础。 第二章 Java程序设计环境: 聚焦于程序设计的核心要素,本章深入讲解了Java中的基本数据类型(整型、浮点型、字符型、布尔型)及其取值范围,以及变量的声明、初始化与使用。重点阐述了Java的运算符,包括算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符等,并结合实例说明了表达式的求值过程。此外,还介绍了常量、类型转换的概念,为后续的程序逻辑编写奠定基础。 第三章 语法结构: 本章是掌握Java编程逻辑的关键。详细介绍了控制语句,包括条件语句(if-else、switch-case)和循环语句(for、while、do-while)。通过丰富的例子,讲解了如何根据不同的条件执行代码块,以及如何重复执行一段代码。同时,本章也介绍了break和continue语句在控制循环流程中的作用,以及代码块(block)的使用。 第四章 核心API: 深入介绍Java平台提供的核心类库(API)。重点讲解了字符串(String)类的常用操作,包括字符串的创建、拼接、查找、替换、分割等,以及StringBuilder和StringBuffer的使用,理解它们在性能上的差异。此外,还介绍了Scanner类用于获取用户输入,以及System类的常用方法,为编写交互式程序提供了便利。 第五章 对象与类: 这是Java面向对象编程的基石。本章详细解释了对象(Object)和类(Class)的概念,类是对象的模板,对象是类的实例。讲解了如何定义类,包括字段(属性)和方法(行为)。重点阐述了对象的创建(构造方法)、访问修饰符(public, private, protected, default)的作用,以及封装(Encapsulation)的思想,即数据隐藏和公共接口。 第二部分:面向对象的高级主题(第6-11章) 第六章 继承、多态与抽象: 深入探讨面向对象三大特性。详细讲解继承(Inheritance),包括子类如何继承父类的属性和方法,以及super关键字的使用。重点阐述了多态(Polymorphism),即同一个接口,不同的实现,理解方法重写(Override)和方法重载(Overload)的区别与联系,以及向上转型和向下转型。同时,引入了抽象类(Abstract Class)和抽象方法(Abstract Method)的概念,用于定义通用接口,强制子类实现特定行为。 第七章 接口与内部类: 详细介绍了接口(Interface)的概念,它是比抽象类更纯粹的抽象。讲解了接口的定义、实现(implements)关键字,以及接口的继承。重点阐述了接口在实现多重继承、定义规范方面的作用。接着,介绍了内部类(Inner Class)的概念,包括成员内部类、局部内部类、匿名内部类,以及静态内部类,理解它们在封装、访问控制和代码组织上的优势。 第八章 异常处理: 讲解Java的异常处理机制。详细介绍了异常(Exception)的概念,以及try-catch-finally语句块的使用,用于捕获和处理运行时可能发生的错误。重点阐述了checked exception和unchecked exception的区别,以及throw和throws关键字的作用。学习如何自定义异常,以及异常的传播机制。 第九章 泛型: 引入Java泛型(Generics)的概念,它允许在编译时进行类型检查,提高代码的安全性和可重用性。详细讲解了泛型类、泛型接口和泛型方法的设计与使用,以及类型擦除(Type Erasure)的原理。 第十章 集合框架: 深入讲解Java集合框架(Collections Framework)。重点介绍了List、Set、Map三大接口及其常用实现类(如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap),理解它们各自的特性、适用场景和性能特点。学习迭代器(Iterator)的使用,以及集合框架的遍历和操作。 第十一章 文本文件与I/O流: 讲解Java的文件操作和输入/输出(I/O)流。详细介绍了File类的使用,用于文件和目录的创建、删除、遍历等。重点阐述了字节流(InputStream, OutputStream)和字符流(Reader, Writer)的概念,以及各种流类(如FileInputStream, FileOutputStream, BufferedReader, BufferedWriter)的使用,并介绍了缓冲流(Buffered Streams)和对象序列化(Serialization)的概念,为文件读写和数据持久化提供强大支持。 第三部分:GUI编程与高级特性(第12-18章) 第十二章 图形用户界面(GUI)设计基础: 介绍Java GUI编程的基本概念。本章主要基于Swing工具包,讲解了JFrame、JPanel等基本组件的创建和布局管理(FlowLayout, BorderLayout, GridLayout)。介绍了常用控件如JButton、JLabel、JTextField、JTextArea、JCheckBox、JRadioButton等的用法。 第十三章 事件处理: 深入讲解GUI编程中的事件处理机制。学习如何注册事件监听器(ActionListener, MouseListener等),以及事件对象的概念。通过实例演示如何响应用户的鼠标点击、键盘输入等操作,实现GUI应用的交互性。 第十四章 常用GUI组件: 扩展GUI组件的介绍,包括JMenuBar、JMenuItem、JPopupMenu、JFileChooser、JColorChooser等。学习如何创建更复杂的GUI界面,并为用户提供更多的交互选项。 第十五章 2D图形: 讲解Java 2D API,用于绘制各种图形,如直线、矩形、椭圆、弧线、多边形等。学习如何使用Graphics2D对象进行绘图,包括颜色、字体、线条样式等的设置,以及图形的变换(平移、旋转、缩放)。 第十六章 部署与维护: 介绍Java应用程序的打包与部署。讲解JAR文件的创建与使用,以及Java Web Start的部署方式。同时,本章也涉及了一些应用程序的维护和性能优化方面的基础知识。 第十七章 数据库连接: 讲解Java如何与关系型数据库进行交互。详细介绍了JDBC(Java Database Connectivity)API,包括数据库驱动的加载、数据库连接的建立、SQL语句的执行(Statement, PreparedStatement),以及结果集的处理(ResultSet)。本章将指导读者如何完成数据库的CRUD(创建、读取、更新、删除)操作。 第十八章 网络编程: 介绍Java的网络编程能力。重点讲解了Socket编程,包括TCP(传输控制协议)和UDP(用户数据报协议)套接字的创建与使用。学习如何构建简单的客户端-服务器应用程序,实现数据的远程传输。 第四部分:并发与高级语言特性(第19-26章) 第十九章 多线程: 深入讲解Java中的多线程编程。介绍线程(Thread)的概念,以及创建线程的两种方式:继承Thread类和实现Runnable接口。重点阐述了线程的生命周期、线程同步(synchronized关键字、Lock接口)、线程通信(wait, notify, notifyAll)以及线程池(ExecutorService)的应用,帮助读者构建高效、响应迅速的多线程应用。 第二十章 并发集合与同步工具: 扩展多线程知识,介绍Java并发包(java.util.concurrent)中的高级工具。讲解了ConcurrentHashMap、CopyOnWriteArrayList等并发集合,以及CountDownLatch、CyclicBarrier、Semaphore等同步工具,帮助开发者更安全、高效地处理并发场景。 第二十一章 Lambda表达式与函数式接口: 引入Java 8引入的Lambda表达式,它是一种简洁的函数式编程语法。详细讲解Lambda表达式的语法、类型推断,以及函数式接口(Functional Interface)的概念,理解Lambda表达式在简化代码、提高开发效率方面的作用。 第二十二章 Stream API: 进一步介绍Java 8引入的Stream API,它提供了一种声明式、函数式的方式来处理数据集合。学习如何对集合进行过滤、映射、排序、归约等操作,以及Stream的惰性求值和短路特性。 第二十三章 并行流: 介绍如何利用并行流(Parallel Streams)来加速数据处理。讲解并行流的工作原理,以及如何选择合适的场景使用并行流,以充分利用多核处理器的优势。 第二十四章 反射: 深入讲解Java反射(Reflection)机制。学习如何动态地获取类的信息(字段、方法、构造器),以及如何动态地调用方法、创建对象。反射在框架开发、动态代理等方面有着广泛的应用。 第二十五章 注解: 介绍Java注解(Annotation)的概念。学习如何定义和使用内置注解(如@Override, @Deprecated)以及自定义注解。注解在元数据管理、框架配置等方面发挥着重要作用。 第二十六章 模块化: 介绍Java 9引入的模块化系统(Project Jigsaw)。讲解模块的定义、组织以及模块化应用程序的构建。理解模块化如何提高代码的可维护性、安全性和性能。 本书特色: 内容全面且权威: 涵盖了Java语言从基础到高级的方方面面,是理解Java生态系统不可或缺的参考。 语言清晰且逻辑严谨: 作者用简洁明了的语言解释复杂的概念,并辅以大量的图示和代码示例,帮助读者深入理解。 注重实战应用: 每一章节都配有精选的示例代码,让读者在学习理论的同时,能够动手实践,巩固所学知识。 面向开发者设计: 本书不仅适合初学者入门,也适合有一定Java基础的开发者进行系统性的回顾和提升。 更新及时: 本版(第13版)充分考虑了Java SE 21的最新特性,涵盖了现代Java开发的最新趋势。 适合读者: 计算机科学与技术、软件工程等相关专业的大学生: 作为课程教材或辅助学习资料,帮助学生建立扎实的Java编程基础。 初学者: 希望系统学习Java语言,掌握编程技能的初学者。 转行程序员: 正在学习Java以进入软件开发行业的跨领域学习者。 有一定Java基础的开发者: 希望深入理解Java核心概念、提升编程技能、了解最新Java特性的开发者。 希望成为Java架构师或资深开发者的从业人员: 夯实理论基础,为更复杂的系统设计打下坚实基础。 《Java核心技术:卷I——基础知识》(第13版)是一部集知识性、实用性和权威性于一体的经典之作,它将陪伴您在Java编程的道路上不断前行,助您成为一名优秀的Java开发者。