java课程设计

合集下载

java猜字小游戏课程设计

java猜字小游戏课程设计

java猜字小游戏课程设计一、教学目标本课程旨在通过Java猜字小游戏的设计与实现,让学生掌握Java编程的基本语法、流程控制语句、数据结构等基础知识,培养学生运用Java语言解决实际问题的能力。

同时,通过小组合作、讨论交流的方式,培养学生的团队协作意识和沟通能力。

1.掌握Java基本语法和编程规范。

2.理解流程控制语句(if、for、while等)的使用。

3.熟悉字符串操作、数组和列表等数据结构。

4.了解常用的Java类库和API。

5.能够运用Java语言编写简单的猜字游戏。

6.掌握调试和运行Java程序的基本方法。

7.具备查找和使用Java相关资料的能力。

情感态度价值观目标:1.培养学生的编程兴趣,提高自主学习能力。

2.增强学生团队协作、沟通交流的能力。

3.培养学生勇于面对挑战、解决问题的精神。

二、教学内容本课程的教学内容主要包括Java基本语法、流程控制语句、数据结构、字符串操作等知识。

教学过程中,将结合具体的猜字游戏案例,让学生动手实践,巩固所学知识。

1.Java基本语法和编程规范。

2.流程控制语句(if、for、while等)的使用。

3.字符串操作、数组和列表等数据结构。

4.常用的Java类库和API。

5.猜字游戏的设计与实现。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,旨在激发学生的学习兴趣,提高学生的主动性和团队协作能力。

1.讲授法:用于讲解Java基本语法、流程控制语句等理论知识。

2.案例分析法:通过分析具体的猜字游戏案例,让学生理解并掌握Java编程技巧。

3.实验法:让学生动手编写和调试Java程序,培养实际操作能力。

四、教学资源本课程所需教学资源包括教材、多媒体资料、实验设备等。

1.教材:选用权威、实用的Java编程教材,为学生提供理论知识的学习资料。

2.多媒体资料:制作精美的PPT、教学视频等,辅助学生理解和掌握知识。

3.实验设备:为学生提供充足的计算机设备,进行编程实践。

(完整word版)JAVA课程设计--扫雷游戏

(完整word版)JAVA课程设计--扫雷游戏

合肥学院计算机科学与技术系课程设计报告2009~2010学年第二学期课程Java语言与应用课程设计名称扫雷游戏学生姓名胡远远学号0604031005专业班级07网络工程一班指导教师许强张贯虹2010年09月1.设计内容及要求1.1 扫雷游戏的基本要求Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。

本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。

具体要求如下:(1)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。

(2)用户要揭开某个方块,可单击它。

若所揭方块下有雷,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。

(3) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。

用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。

(4)扫雷胜利后,显示游戏胜利。

(5) 用户可以右击空格,可以选择标记为“旗帜”、“问号”或者返回成空格。

1.2 需实现的主要功能(1)用户点击笑脸实现复位操作。

调用repaint()和validate()函数对界面进行重置以及刷新操作(2)可以显示用户完全扫雷成功所花时间。

文本框TF记录扫雷成功所花的时间(3)在失败和胜利后跳出失败或胜利的文本框JoptionPane 该类用来调出对话框并提示胜利2.需求分析2.1 扫雷棋盘的布局设计系统的整体布局为:CardLayout布局, 采用了文本框、按钮、面板、框架…等组件,菜单主要有run按钮笑脸和哭脸,按钮的功能是重新开始新的游戏。

2.2 雷区的设计MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener 和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。

java课程设计题目

java课程设计题目

java课程设计题目一、教学目标本课程旨在通过Java编程语言的学习,让学生掌握Java编程的基本语法、概念和编程技巧,培养学生具备基本的编程能力和解决问题的能力。

具体的教学目标如下:1.理解Java编程语言的基本语法和结构。

2.掌握Java中的基本数据类型、运算符和表达式。

3.熟悉Java中的控制结构、循环结构和数组操作。

4.了解Java中的面向对象编程概念,如类、对象、继承和多态。

5.能够使用Java编程语言编写简单的程序,解决实际问题。

6.能够运用面向对象编程思想,设计和实现具有一定复杂度的程序。

7.能够运用Java编程语言进行调试和优化程序,提高程序的性能和可读性。

情感态度价值观目标:1.培养学生对编程语言的兴趣和热情,激发学生对计算机科学的探索精神。

2.培养学生的问题解决能力和创新思维,鼓励学生勇于面对挑战和解决问题。

3.培养学生的团队合作意识和沟通能力,鼓励学生与他人合作共同完成项目。

二、教学内容根据课程目标,本课程的教学内容主要包括Java编程语言的基本语法、概念和编程技巧。

具体的教学大纲如下:第1-2周:Java编程基础1.Java语言概述和环境配置2.Java基本语法和数据类型3.运算符和表达式4.控制结构(条件语句、循环语句)第3-4周:面向对象编程1.类和对象的概念2.构造方法和成员变量3.继承和多态的概念和应用4.抽象类和接口第5-6周:Java高级特性1.异常处理和输入输出流2.集合框架和泛型编程3.线程和多线程编程4.Java网络编程基础三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。

具体的教学方法如下:1.讲授法:通过教师的讲解和演示,向学生传授Java编程的基本概念和语法。

2.案例分析法:通过分析实际案例,让学生理解和掌握Java编程的技巧和方法。

3.实验法:通过上机实验,让学生亲手编写代码,培养学生的编程能力和实践能力。

java课程设计周志200字

java课程设计周志200字

java课程设计周志200字一、教学目标本课程旨在通过学习Java编程语言,使学生掌握Java编程的基本语法、面向对象编程思想以及常用的Java API。

通过本课程的学习,学生应能够独立编写简单的Java应用程序,具备进一步学习深入Java编程的能力。

具体来说,知识目标包括:1.理解Java编程语言的基本语法。

2.掌握Java中的面向对象编程思想,包括类、对象、继承、多态等。

3.熟悉Java常用的API,包括String类、ArrayList类、HashMap类等。

技能目标包括:1.能够使用Java编写简单的控制台应用程序。

2.能够使用Java编写简单的GUI应用程序。

3.能够使用Java编写简单的网络应用程序。

情感态度价值观目标包括:1.培养学生对编程的兴趣,提高学生解决问题的能力。

2.培养学生团队合作的精神,提高学生的沟通与协作能力。

3.培养学生对编程技术的持续学习和探索的态度。

二、教学内容本课程的教学内容主要包括Java编程语言的基本语法、面向对象编程思想以及常用的Java API。

具体安排如下:1.第一章:Java编程语言的基本语法,包括变量、数据类型、运算符、控制语句等。

2.第二章:面向对象编程,包括类与对象、继承与多态等。

3.第三章:Java常用的API,包括String类、ArrayList类、HashMap类等。

4.第四章:Java编程实践,包括编写简单的控制台应用程序、GUI应用程序和网络应用程序。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:通过讲解Java编程语言的基本语法、面向对象编程思想和常用API,使学生掌握基本概念和理论知识。

2.讨论法:学生进行小组讨论,引导学生主动思考和解决问题。

3.案例分析法:通过分析典型案例,使学生更好地理解和运用Java编程技术。

4.实验法:安排实验课程,让学生亲自动手编写Java程序,提高学生的实际操作能力。

单机投票系统java课程设计

单机投票系统java课程设计

单机投票系统java课程设计一、课程目标知识目标:1. 让学生掌握Java语言中面向对象编程的基本概念,包括类、对象、继承、封装和多态。

2. 使学生了解单机投票系统的基本功能需求,如用户注册、投票、计票和数据展示。

3. 帮助学生掌握Java集合框架的使用,如List、Map等,以便于存储和管理投票数据。

4. 引导学生掌握Java异常处理机制,提高程序的健壮性。

技能目标:1. 培养学生运用Java语言设计并实现简单单机投票系统的能力。

2. 培养学生分析问题、解决问题的能力,使其能够根据需求进行模块划分和功能实现。

3. 提高学生的团队协作能力,通过分组合作完成课程设计。

情感态度价值观目标:1. 培养学生热爱编程,对计算机科学产生浓厚兴趣。

2. 培养学生严谨、细心的编程态度,养成良好的编程习惯。

3. 培养学生面对困难敢于挑战、勇于探索的精神,增强自信心。

课程性质:本课程为Java语言程序设计课程的一部分,侧重于实践操作,培养学生的实际编程能力。

学生特点:学生已具备一定的Java基础,了解基本语法和简单算法,但对面向对象编程和实际项目开发经验不足。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,引导学生主动参与课程设计,培养实际编程能力。

将课程目标分解为具体的学习成果,便于后续教学设计和评估。

二、教学内容1. 面向对象编程基础:- 类与对象的概念- 继承、封装、多态的特性- 抽象类和接口的应用2. 单机投票系统功能模块划分:- 用户注册模块- 投票模块- 计票模块- 数据展示模块3. Java集合框架:- List集合的使用- Map集合的使用- 集合框架在投票系统中的应用4. Java异常处理:- 异常处理机制- 常见异常类型- 异常处理在投票系统中的应用5. 教学内容的安排和进度:- 第一周:面向对象编程基础回顾- 第二周:单机投票系统功能模块划分及需求分析- 第三周:Java集合框架的学习和应用- 第四周:Java异常处理的学习和应用- 第五周:综合实践,分组完成单机投票系统开发6. 教材章节和内容列举:- 第1章:Java基础回顾- 第2章:面向对象编程- 第3章:Java集合框架- 第4章:Java异常处理- 第5章:单机投票系统项目实践教学内容依据课程目标进行选择和组织,确保科学性和系统性。

jva课程设计

jva课程设计

jva课程设计一、课程目标知识目标:1. 理解Java语言的基本概念,掌握变量、数据类型、运算符等基础语法知识;2. 学会使用Java控制结构,包括顺序结构、选择结构和循环结构;3. 掌握数组的使用,理解数组的优势和局限性;4. 了解面向对象编程的基本概念,如类、对象、方法等。

技能目标:1. 能够运用所学知识编写简单的Java程序,解决实际问题;2. 学会使用调试工具,如断点调试,提高程序调试能力;3. 培养良好的编程习惯,如规范的代码编写、注释使用等;4. 能够运用面向对象思想,设计简单的类和对象。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生的学习热情;2. 培养学生团队合作意识,学会与他人共同解决问题;3. 培养学生勇于尝试、克服困难的品质,增强自信心;4. 培养学生的创新意识,鼓励学生提出不同的解决方案。

课程性质:本课程为Java编程入门课程,以实践操作为主,注重培养学生的编程能力和逻辑思维。

学生特点:学生具备一定的计算机操作能力,对编程有一定兴趣,但可能缺乏编程经验和逻辑思维能力。

教学要求:结合学生特点,课程设计需注重理论与实践相结合,以实例为主线,引导学生主动参与,培养其编程兴趣和实际操作能力。

通过本课程的学习,使学生能够掌握基本的Java编程知识,具备进一步深入学习的能力。

二、教学内容1. Java语言概述:介绍Java语言的发展历史、特点和应用领域,引导学生认识Java编程的重要性。

2. 基础语法知识:讲解变量、数据类型、常量、运算符等基本概念,使学生掌握Java编程的基本要素。

3. 控制结构:- 顺序结构:介绍顺序执行的概念,举例说明;- 选择结构:讲解if语句、switch语句的使用,并通过实例演示;- 循环结构:介绍for循环、while循环和do-while循环的用法,举例说明。

4. 数组:讲解数组的定义、初始化、使用方法,以及数组的相关操作,如遍历、排序等。

5. 面向对象编程基础:- 类与对象:介绍类的定义、属性、方法,以及对象的创建和使用;- 封装与继承:讲解封装的意义、继承的概念,并通过实例演示;- 多态:介绍多态的概念和实现方法。

Java课程设计聊天室(含代码)

Java程序课程设计任务书JAVA聊天室的系统的设计与开发1.主要内容:用JAVA实现基于C/S模式的聊天室系统。

聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。

2.具体要求(包括技术要求等):系统的功能要求:A.服务器端主要功能如下:1.在特定端口上进行侦听,等待客户端连接。

2.用户可以配置服务器端的侦听端口,默认端口为8888。

3.向已经连接到服务器端的用户发送系统消息。

4.统计在线人数。

5.当停止服务时,断开所有的用户连接。

B.客户端的主要功能如下:1.连接到已经开启聊天服务的服务器端。

2.用户可以配置要连接的服务器端的IP地址和端口号。

3.用户可以配置连接后显示的用户名。

4.当服务器端开启的话,用户可以随时登录和注销。

5.用户可以向所有人或某一个人发送消息。

学习并掌握一下技术:Java JavaBean 等熟练使用一下开发工具:Eclipse, JCreator 等实现系统上诉的功能。

3.进度安排:12月28日 ~ 12月29日:课程设计选题,查找参考资料12月30日 ~ 1月1日:完成系统设计1月2日 ~ 1月5日:完成程序代码的编写1月6日:系统测试与完善1月7日:完成课程设计报告,准备答辩4.主要参考文献:[1].张广彬孟红蕊张永宝.Java课程设计(案例精编)[M].清华大学出版社.2007年版摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。

基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。

一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC-ODBC桥访问数据库。

java课程设计12306

java课程设计12306一、教学目标本章节的教学目标分为三个维度:知识目标、技能目标和情感态度价值观目标。

1.知识目标:通过本章节的学习,学生需要掌握Java编程语言的基本语法、数据类型、控制结构、面向对象编程等基础知识。

2.技能目标:学生能够运用Java编程语言编写简单的程序,解决实际问题,培养学生的编程能力和解决问题的能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,培养学生勇于探索、创新的精神,提高学生团队合作的能力。

二、教学内容本章节的教学内容主要包括Java编程语言的基本语法、数据类型、控制结构、面向对象编程等。

具体包括以下内容:1.Java编程语言的基本语法和规范。

2.数据类型:整数类型、浮点类型、字符类型和布尔类型。

3.控制结构:条件语句、循环语句。

4.面向对象编程:类与对象、构造方法、继承与多态、封装。

5.常用类库:字符串类、数学类、日期时间类。

三、教学方法为了提高教学效果,本章节将采用多种教学方法相结合的方式进行教学:1.讲授法:通过讲解Java编程语言的基本语法、数据类型、控制结构、面向对象编程等知识,使学生掌握基本概念和理论知识。

2.案例分析法:通过分析实际案例,使学生了解如何运用Java编程语言解决实际问题。

3.实验法:安排课后实验,让学生动手编写Java程序,巩固所学知识,提高编程能力。

4.讨论法:学生进行小组讨论,培养学生的团队合作能力和解决问题的能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《Java编程基础》2.参考书:《Java核心技术》3.多媒体资料:PPT课件、教学视频4.实验设备:计算机、网络环境5.在线资源:编程练习平台、讨论区五、教学评估本章节的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。

1.平时表现:通过观察学生在课堂上的参与度、提问回答和小组讨论的表现来评估学生的学习态度和理解程度。

java大学生课程设计

java大学生课程设计一、教学目标本课程的教学目标是使学生掌握Java编程语言的基本语法、面向对象编程思想以及常用的数据结构和算法,培养学生具备基本的编程能力和软件开发思维。

1.掌握Java编程语言的基本语法和编程规范。

2.理解面向对象编程的基本概念,如类、对象、封装、继承和多态。

3.熟悉常用的数据结构,如数组、链表、栈和队列。

4.掌握常用的算法,如排序、查找、递归等。

5.能够使用Java编程语言编写简单的应用程序。

6.能够使用Java开发工具,如Eclipse、IntelliJ IDEA等。

7.具备基本的软件开发能力,如代码阅读、调试和优化。

情感态度价值观目标:1.培养学生对编程语言和软件开发的兴趣和热情。

2.培养学生具备良好的编程习惯和团队协作精神。

3.培养学生具备创新意识和问题解决能力。

二、教学内容根据课程目标,教学内容主要包括Java编程语言的基本语法、面向对象编程、数据结构和算法。

1.Java编程语言的基本语法:–变量、数据类型和运算符–控制结构:条件语句、循环语句–函数:方法、构造函数–输入输出:文件操作、标准输入输出2.面向对象编程:–类和对象的概念–封装:访问控制、成员变量、方法–继承:继承关系、方法重写、接口–多态:方法重载、类型转换、泛型3.数据结构:–数组:概念、操作、排序–链表:概念、操作、排序–栈和队列:概念、操作、应用场景–排序算法:冒泡排序、选择排序、插入排序–查找算法:顺序查找、二分查找–递归算法:概念、应用、示例三、教学方法本课程采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法,以激发学生的学习兴趣和主动性。

1.讲授法:通过教师的讲解,使学生掌握基本概念和理论知识。

2.讨论法:引导学生进行思考和交流,培养学生的编程思维和问题解决能力。

3.案例分析法:通过分析实际案例,使学生了解Java编程语言的应用场景和开发实践。

4.实验法:通过动手实践,使学生掌握编程语言的基本语法和编程技巧。

java课程设计题目及代码

java课程设计题目及代码题目:学生成绩管理系统设计一个学生成绩管理系统,能够实现以下功能:1. 添加学生信息:录入学生的姓名、学号、性别等基本信息。

2. 添加学生成绩:录入学生的各门成绩,包括语文、数学、英语等课程。

3. 查找学生成绩:根据学号或姓名查找学生的成绩信息。

4. 修改学生成绩:根据学号或姓名修改学生的成绩信息。

5. 删除学生成绩:根据学号或姓名删除学生的成绩信息。

6. 统计学生成绩:统计全班学生的各门课程的平均分、最高分和最低分。

代码实现如下:```javaimport java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.Scanner;class Student {private String name;private String studentId;private String gender;private Map<String, Integer> scores;public Student(String name, String studentId, String gender) { = name;this.studentId = studentId;this.gender = gender;this.scores = new HashMap<>();}public String getName() {return name;}public String getStudentId() {return studentId;}public String getGender() {return gender;}public Map<String, Integer> getScores() {return scores;}public void addScore(String subject, int score) {scores.put(subject, score);}public void updateScore(String subject, int score) { scores.put(subject, score);}public void removeScore(String subject) {scores.remove(subject);}}class GradeManagementSystem {private ArrayList<Student> students;public GradeManagementSystem() {students = new ArrayList<>();}public void addStudent(String name, String studentId, String gender) {students.add(new Student(name, studentId, gender));}public Student findStudentById(String studentId) {for (Student student : students) {if (student.getStudentId().equals(studentId)) {return student;}}return null;}public Student findStudentByName(String name) {for (Student student : students) {if (student.getName().equals(name)) {return student;}}return null;}public void addScore(String studentId, String subject, int score) {Student student = findStudentById(studentId);if (student != null) {student.addScore(subject, score);}}public void updateScore(String studentId, String subject, int score) {Student student = findStudentById(studentId);if (student != null) {student.updateScore(subject, score);}}public void removeScore(String studentId, String subject) {Student student = findStudentById(studentId);if (student != null) {student.removeScore(subject);}}public void printStudentInfo(Student student) {System.out.println("姓名:" + student.getName());System.out.println("学号:" + student.getStudentId());System.out.println("性别:" + student.getGender());System.out.println("成绩:");for (Map.Entry<String, Integer> entry :student.getScores().entrySet()) {System.out.println(entry.getKey() + ":" +entry.getValue());}}public void printClassStatistics() {int chineseTotal = 0;int mathTotal = 0;int englishTotal = 0;int chineseMax = 0;int mathMax = 0;int englishMax = 0;int chineseMin = Integer.MAX_VALUE;int mathMin = Integer.MAX_VALUE;int englishMin = Integer.MAX_VALUE;for (Student student : students) {Map<String, Integer> scores = student.getScores();if (scores.containsKey("语文")) {int chineseScore = scores.get("语文");chineseTotal += chineseScore;chineseMax = Math.max(chineseMax, chineseScore);chineseMin = Math.min(chineseMin, chineseScore); }if (scores.containsKey("数学")) {int mathScore = scores.get("数学");mathTotal += mathScore;mathMax = Math.max(mathMax, mathScore);mathMin = Math.min(mathMin, mathScore);}if (scores.containsKey("英语")) {int englishScore = scores.get("英语");englishTotal += englishScore;englishMax = Math.max(englishMax, englishScore); englishMin = Math.min(englishMin, englishScore); }}int studentCount = students.size();double chineseAverage = (double) chineseTotal / studentCount;double mathAverage = (double) mathTotal / studentCount; double englishAverage = (double) englishTotal / studentCount;System.out.println("语文最高分:" + chineseMax);System.out.println("数学最高分:" + mathMax);System.out.println("英语最高分:" + englishMax);System.out.println("语文最低分:" + chineseMin);System.out.println("数学最低分:" + mathMin);System.out.println("英语最低分:" + englishMin);System.out.println("语文平均分:" + chineseAverage); System.out.println("数学平均分:" + mathAverage); System.out.println("英语平均分:" + englishAverage); }}public class Main {public static void main(String[] args) {GradeManagementSystem system = new GradeManagementSystem();// 添加学生信息system.addStudent("张三", "001", "男");system.addStudent("李四", "002", "女");system.addStudent("王五", "003", "男");// 添加学生成绩system.addScore("001", "语文", 90);system.addScore("001", "数学", 85);system.addScore("001", "英语", 92);system.addScore("002", "语文", 80);system.addScore("002", "数学", 75);system.addScore("002", "英语", 88);system.addScore("003", "语文", 95);system.addScore("003", "数学", 90);system.addScore("003", "英语", 97);// 查找学生成绩Student student = system.findStudentById("001"); if (student != null) {system.printStudentInfo(student);}// 修改学生成绩system.updateScore("002", "数学", 78);student = system.findStudentById("002");if (student != null) {system.printStudentInfo(student);}// 删除学生成绩system.removeScore("003", "语文");student = system.findStudentById("003");if (student != null) {system.printStudentInfo(student);}// 统计学生成绩system.printClassStatistics();}}```这是一个简单的学生成绩管理系统,通过添加学生信息、添加学生成绩、查找学生成绩、修改学生成绩、删除学生成绩和统计学生成绩等功能,可以对学生的成绩进行管理和操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 《Java语言程序设计》 课程设计报告

题 目: 用Swing制作一个计算器 专 业: 网络技术 学 号:200912230331、 200912230363

姓 名: 刘太坤 张庆 指导教师: 王琳琳 成 绩:

2011年 11 月 15 日 2

目 录 1.课程设计研究背景和意义„„„„„„„„„„„„„„„ 3 2.课程设计题目描述和详细功能要求„„„„„„„„„„„„„ 3 3.课程设计报告内容 „„„„„„„„„„„„„„„„„ 3 3.1 题目求解的理论依据及算法 „„„„„„„„„„„ 3 3.2 数据结构 „„„„„„„„„„„„„„„„„„„ 4 3.3 主要事件处理 „„„„„„„„„„„„„„„ 4 3.4简要的操作流程„„„„„„„„„„„„„„„„„„6 3.5主要操作步骤(源代码)„„„„„„„„„„„„„„6 3.6 程序调试出错信息及解决方法„„„„„„„„„„„ 15 3.7主要程序运行结果„„„„„„„„„„„„„„„„„16 3.8 心得体会„„„„„„„„„„„„„„„„„„„„„18 4.总结 „„„„„„„„„„„„„„„„„„„„„„„„20 5.参考书目„„„„„„„„„„„„„„„„„„„„„„„21 3

1.课程设计研究背景及意义 这次课程设计是通过JAVA编程来实现计算器的功能。以前,人们用来计算的工具不管从方便的角度还是速度的角度来看都不及现代计算器,计算器的发明是人类进步的有力证明。电子技术的不断发展使得计算器的功能不断的完善。人们通过使用计算器来提高自己的工作效率,计算器是高科技的产物,是以往任何时代都无法比拟的。在二十一世纪的今天,计算器依然是人们重要的计算工具,所以,对计算器的研究的课程设计具有重大意义。 本次课程设计题目主要应用到JAVA面向对象程序设计语言中Swing组件和GUI(图形用户界面)当中的一些知识,当然也用到JAVA中大部分基础知识,如JAVA的基本控制结构、数组、输入与输出等等 。

2.课程设计题目描述和要求 通过JAVA中的Swing组件来制作一个计算器的界面包括0—9的十个数字按键,小数点键,+-*/开方百分比,倒数运算符键,=运行符键以及M组合键等。以及实现计算器的一些基本的计算功能。这个模拟计算器能进行连加,连减,连乘,连除,求二次平方根,求百分比,求倒数以及负数运算等操作。 要求界面逼真,按键布局美观,要求实现加、减、乘、除等基本计算功能。

组员分工: 组长(刘太坤):负责分配其他组员的任务,程序设计中负责运算符按钮部分代码编写及事件处理,模拟计算器的整体布局。 组员1(张庆):负责数字键按钮和文本输出框部分代码的编写及其事件的处理。 组员2(张庆):负责sqrt、%、1/X、+/-四个运算功能键按钮部分的代码编写及事件处理(由于此功能实现要依赖组员1的功能实现,所以设计中加入了组员1的设计)。

3.课程设计报告内容 3.1 题目求解的理论依据及算法 解题原理: (1)界面布局。创建一个面板,先将所有按钮:所有数字键和运算符键等放在面板上,采用网格布局,具体设计为4行,5列的网格,二十个格 4

子;接着添加一个1行3列的网格布局来放置三个功能键:清零,检测,退格键;然后,再添加一个5行一列的网格布局来放置四个M组合功能键和一个空键,其目的在于美化界面,使其与现实中的计算器更接近,同时也是为了满足这次课程设计的要求。最后,对以上三个面板,采用BorderLayout布局,将按键面板放在计算器的中部,功能键面板放北部,作为一个新的面板。最后,将文本框放在界面的北部,新面板放在界面的中央,MKpanel放在界面的西部,采用边界布局管理器,做为界面的整体布局,这样界面布局就搞定了。 (2)输入数字、小数点、符号时按输入的顺序显示在单行文本框中,并按右对齐方式显示,且不允许修改文本行中的内容。 (3)输入运算符时,说明前一个数已经输入完毕,保存第一个数firstDigit,同时保存运算符,显示firstDigit。 (4)输入第二个数,按等号,保存第二数,根据输入的运算符进行相应的运算,文本行中显示运算结果resultNum。 (5)按退格键Backspace,将返回到前一次输入状态。 (6)按Check键,输入的数字第一个数字为零。 (7)按复位键键Again,归零。 (8)由于M组合键没有实现其功能,所以暂不能用,待更进一步研究。 (8)第三、四步可以重复操作。

3.2 数据结构: 面板:数字等按键面板calckeysPanel,功能键面板calmsPanel,M组合键面板MKpanel,组合面板panel1,整体布局:top 第一个数firstDigit,运算结果resultNum,运算符operator,文本行组件result

3.3 主要事件处理: 1、数字输入及小数点事件,输入后直接显示在文本行。 2、双目运算符输入事件:输入后,保存第一个数,同时保存运算符。 5

3、单目运算符和等于符=输入事件:保存第二个数,取出原有数据和运算符算出结果,并显示在文本行组件。 4、处理Backspace键被按下事件。 5、以上几类事件都归为行为类对象ActionListener.

负责部分的主要事件处理: 1、“+”,“-”,“*”,“/”四个双目运算符被按下,当前面没有输入第一个数时,或当按下双目运算符后没输入第二个数就按下“=”符,计算器不做任何反应。只有等按规则输入数字时才按正确运算输出结果。 2、“sqrt”,“%”,“1/x”,“+/-”四个单目运算符被按下,只有当前面输入一个数后按下单目运算符键再按“=”,才输出正确结果。而“+/-”第一次按下时执行,第二次按下时取消。

3.4 简要的设计流程:

6 3.5、源代码: import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent;

创建窗口 构造计算器界面结构

对各个按钮添加事件监听器ActionListener以及事件处理

输出显示区域 功能键按钮(网)

数字符号及运算符按钮(网)

数字键按钮事件处理 运算符键按钮事件处理 功能键按钮事件处理

完成java源代码编写

调试修改程序,完善模拟计算器功能

(边) (边) M 组合键按钮(网) 7 import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField;

public class Calulator extends JFrame implements ActionListener { private static final long serialVersionUID = 12345678L; private final String[] NBKEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" }; private final String[] MK = { " ", "MC", "MR", "MS", "M+" }; private final String[] CMKEYS = { "Backspace", "CHCEK", "AGAIN" }; /**计算器上键的按钮 */ private JButton keys[] = new JButton[NBKEYS.length]; /** 计算器上的功能键的按钮 */ private JButton cmkeys[] = new JButton[CMKEYS.length]; /** 计算器左边的M的按钮 */ private JButton mk[] = new JButton[MK.length];

/** 计算结果文本框 */ private JTextField resultText = new JTextField("0"); /**标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 */ private boolean firstDigit = true; 8

// 计算的中间结果 private double resultNum = 0.0; // 当前运算的运算符 private String operator = "="; // 操作是否合法 private boolean operateValidFlag = true;

/** 构造方法 */ public Calulator() { super(); // 初始化计算器 init(); //this.setSize(400, 300); this.setBackground(Color.LIGHT_GRAY); this.setTitle("沈呈洁的计算器"); // 在屏幕(500,200)坐标处显示计算器 this.setLocation(500, 200); // 不许修改计算器的大小 this.setResizable(false); // 使计算器中各组件大小合适 this.pack(); }

/* 初始化计算器 */ private void init() {

相关文档
最新文档