編輯推薦
? 按照“以協議為核心,以應用為目的”的思想編寫。
? 貫穿知識建構、啓發思維的教學理念。
? 貼近應用,貼近現代。
? 概念清晰、嚴謹,注重本質層麵討論。
? 結構簡潔、清晰,容易復習、梳理。
? 習題豐富、實驗覆蓋麵廣。
內容簡介
在掌握瞭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開發者。