JAVA课程设计报告材料
java类的设计实验报告
java类的设计实验报告Java 类的设计实验报告一、实验目的本次实验的主要目的是深入理解和掌握 Java 类的设计原则、方法和技巧,通过实际的编程实践,提高对面向对象编程思想的应用能力,培养良好的编程习惯和代码规范。
二、实验环境1、操作系统:Windows 102、开发工具:IntelliJ IDEA3、 JDK 版本:18三、实验内容1、设计一个简单的学生类(Student),包含学生的姓名(name)、年龄(age)、学号(studentId)等属性,并提供相应的构造方法、getter 和 setter 方法。
2、设计一个课程类(Course),包含课程名称(courseName)、课程编号(courseId)、授课教师(teacher)等属性,同样提供构造方法和相关的访问方法。
3、设计一个学生选课类(StudentCourse),用于关联学生和课程,包含学生对象(student)、课程对象(course)、选课时间(selectTime)等属性,并实现相应的方法来获取和设置这些属性。
四、实验步骤(一)学生类(Student)的设计```javapublic class Student {private String name;private int age;private String studentId;//无参构造方法public Student(){}//有参构造方法public Student(String name, int age, String studentId) {thisname = name;thisage = age;thisstudentId = studentId;}// getter 和 setter 方法public String getName(){return name;}public void setName(String name) {thisname = name;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}public String getStudentId(){return studentId;}public void setStudentId(String studentId) {thisstudentId = studentId;}}```(二)课程类(Course)的设计```javapublic class Course {private String courseName;private String courseId;private String teacher;//无参构造方法public Course(){}//有参构造方法public Course(String courseName, String courseId, String teacher) {thiscourseName = courseName;thiscourseId = courseId;thisteacher = teacher;}// getter 和 setter 方法public String getCourseName(){return courseName;}public void setCourseName(String courseName) {thiscourseName = courseName;}public String getCourseId(){return courseId;}public void setCourseId(String courseId) {thiscourseId = courseId;}public String getTeacher(){return teacher;}public void setTeacher(String teacher) {thisteacher = teacher;}}```(三)学生选课类(StudentCourse)的设计```javapublic class StudentCourse {private Student student;private Course course;private String selectTime;//无参构造方法public StudentCourse(){}//有参构造方法public StudentCourse(Student student, Course course, String selectTime) {thisstudent = student;thiscourse = course;thisselectTime = selectTime;}// getter 和 setter 方法public Student getStudent(){return student;}public void setStudent(Student student) {thisstudent = student;}public Course getCourse(){return course;}public void setCourse(Course course) {thiscourse = course;}public String getSelectTime(){return selectTime;}public void setSelectTime(String selectTime) {thisselectTime = selectTime;}}```(四)测试类```javapublic class Test {public static void main(String args) {//创建学生对象Student student1 = new Student("张三", 20, "001");//创建课程对象Course course1 = new Course("Java 编程","001","李老师");//创建学生选课对象StudentCourse studentCourse1 = new StudentCourse(student1,course1, "2023-09-01");//输出学生选课信息Systemoutprintln("学生姓名:"+ studentCourse1getStudent()getName());Systemoutprintln("学生年龄:"+ studentCourse1getStudent()getAge());Systemoutprintln("学生学号:"+ studentCourse1getStudent()getStudentId());Systemoutprintln("课程名称:"+ studentCourse1getCourse()getCourseName());Systemoutprintln("课程编号:"+ studentCourse1getCourse()getCourseId());Systemoutprintln("授课教师:"+ studentCourse1getCourse()getTeacher());Systemoutprintln("选课时间:"+studentCourse1getSelectTime());}}```五、实验结果与分析通过运行测试类,成功输出了学生选课的相关信息,包括学生的姓名、年龄、学号,课程的名称、编号、授课教师以及选课时间。
java课程设计实验报告样例(一)
java课程设计实验报告样例(一)Java课程设计实验报告样例引言:本篇实验报告主要介绍Java课程设计中所涉及的实验内容、实验过程及实验结果,旨在帮助同学们更好地理解Java编程的基本知识和应用。
一、实验内容:本实验的具体任务是编写一个java程序,实现对一个文本文件中的单词进行统计,包括出现次数、平均长度、以及排序输出出现频率较高的单词。
其中,单词包含字母和数字,大小写敏感,在解析时必须分离出来。
二、实验过程:在编写程序之前,我们首先要了解实验要求及限制,才能确定需要使用什么类型的数据结构、算法和方法等。
接着,我们通过分析题目要求,将问题划分为三部分:分离单词、统计出现次数、以及排序输出。
根据这样的思路,我们开发了如下的实验流程图:[IMG]file:///C:/Users/Administrator/AppData/Local/Temp/msohtm lclip1/01/clip_image002.png[/IMG]具体实现细节如下:1、读取文件,使用StringTokenizer类将文件中的每个单词分离出来;2、定义一个HashMap,以单词作为键值,单词出现次数为value,并依次统计每个单词出现次数;3、遍历HashMap,计算平均单词长度,并保存出现次数较高的单词及其出现次数,同时将HashMap重新排序输出。
三、实验结果:通过我们这样的一个实验流程,我们得到了:[IMG]file:///C:/Users/Administrator/AppData/Local/Temp/msohtm lclip1/01/clip_image004.png[/IMG]分析如下:1、统计了单词总数、平均长度,并输出;2、按出现次数由高到低输出出现频率较高的单词及其出现次数。
四、思考和总结:通过这次实验,我深刻地认识到了实践和理论的重要性,正如听取课程学习Java,与实际操作大有不同一样,是因为它们有不同的目的和方法。
JAVA语言课程设计报告
JAVA语言课程设计报告目录1. 课程设计介绍 (2)1.1 课程设计的目的和意义 (2)1.2 实验环境介绍 (3)2. 课程设计项目概述 (4)2.1 项目背景及设立的目的 (5)2.2 用户需求分析 (6)2.3 功能模块划分 (7)3. Java语言基础知识回顾 (7)3.1 Java程序的基础概述 (8)3.2 Java开发环境搭建 (9)3.3 基本语法及常用数据类型 (10)3.4 类与对象的基本知识 (11)3.5 常用API介绍 (11)4. 项目开发过程 (11)4.1 设计方案 (13)4.2 项目需求分析 (14)5. 课程设计关键技术应用 (15)5.1 错误处理机制 (16)5.2 数据库应用 (17)6. 类库及设计模式的应用 (17)6.1 Java类库的基础知识 (19)6.2 设计模式的功能与应用 (20)7. 课程设计总结与展望 (21)7.1 课程设计总结 (22)7.2 缺陷分析与解决方案 (23)7.3 课程设计展望 (23)1. 课程设计介绍本课程设计旨在通过实际项目实践,让学生深入理解和掌握语言的核心编程技能和设计思想。
本次设计选择了一个具有实际应用背景的项目作为案例,即“简易在线考试系统”。
该系统旨在模拟现实中的在线考试流程,实现考生在线答题、自动评分、成绩查询等功能。
本次课程设计以语言为基础,结合框架、数据库等技术,引导学生从需求分析、系统设计、编码实现到系统测试的完整软件开发流程。
通过本课程设计,学生能够:在本次课程设计中,学生将独立完成系统需求分析、系统设计、编码实现、测试与优化等环节,最终提交一个功能完善、性能稳定的在线考试系统。
通过这一过程,学生不仅能够巩固和提升自身的编程能力,还能培养解决实际问题的能力和创新思维。
1.1 课程设计的目的和意义课程设计目的在于深入理解语言的核心概念与实际应用,通过具体的项目实施巩固和应用课堂上所学的知识点。
java课程设计报告
java课程设计报告Java课程设计报告。
一、引言。
Java作为一种跨平台的编程语言,具有广泛的应用领域和强大的功能,因此在计算机专业课程中占据着重要的地位。
本次课程设计旨在通过对Java语言的学习和实践,提高学生对于面向对象程序设计的理解和应用能力,同时锻炼学生的编程实践能力和团队协作能力。
二、课程设计内容。
1. 课程设计主题。
本次课程设计的主题为“学生成绩管理系统的设计与实现”。
通过该主题的设计,旨在让学生通过实际的项目开发,掌握Java语言的基本语法和面向对象的编程思想,同时对软件开发的整个流程有一个清晰的认识。
2. 课程设计目标。
(1)掌握Java语言的基本语法和面向对象的编程思想;(2)了解软件开发的整个流程,包括需求分析、设计、编码、测试和维护;(3)培养学生的团队协作能力和解决问题的能力;(4)通过实际项目的开发,提高学生的编程实践能力。
三、课程设计过程。
1. 需求分析。
首先,团队成员对学生成绩管理系统的功能需求进行了详细的分析和讨论,确定了系统的基本功能模块,包括学生信息管理、课程信息管理、成绩管理等。
通过需求分析,明确了系统的功能和性能需求,为后续的设计和编码工作奠定了基础。
2. 系统设计。
在需求分析的基础上,团队成员进行了系统的整体设计和模块设计。
通过UML建模工具,绘制了系统的用例图、类图、时序图等,明确了各个模块之间的关系和交互流程。
同时,团队成员还对数据库的设计进行了详细的讨论和设计,确定了数据库的表结构和字段。
3. 编码实现。
在系统设计完成后,团队成员按照设计文档进行了编码实现工作。
在编码的过程中,严格按照Java语言的规范进行编码,同时注重代码的可读性和可维护性。
通过团队的协作和沟通,确保了各个模块的功能实现和整体功能的完整性。
4. 测试与调试。
在编码实现完成后,团队成员进行了系统的测试与调试工作。
通过单元测试、集成测试和系统测试,发现并修复了系统中存在的各种问题和bug。
JAVA_课程设计报告材料
《JAVA程序设计》课程设计报告设计题目:学生信息管理系统学院名称:信息工程学院专业班级:13计本1姓名:学号:目录一需求分析。
3 二概要设计。
3 三详细设计。
33.1 数据库设计。
33.2 模块及窗体设计。
33.2.1 数据库模块设计。
33.2.2 用户登录识别模块。
53.2.3用户信息管理模块。
6 (1)密码修改。
6 (2)用户信息添加和删除。
83.2.4 学生息管理模块。
10 (1)添加信息。
10 (2)信息查看。
11 (3)信息修改。
12 (4)删除信息。
143.2.5 系统管理模块。
153.2.6 主窗体菜单设计。
15四软件测试。
15 五总结。
15 参考资料:.......................................................17一需求分析本系统的主要目的就是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率,降低管理成本.系统中需要对拥护身份进行管理,采取登陆进入系统的形式.二概要设计/************************************************************************概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。
项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。
概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。
概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。
2.1 概要设计的原则概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。
概要设计要坚持以下几个原则。
(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。
解决复杂问题的方法是将其分解成几个小问题,一个个来解决。
JAVA程序设计报告材料
JAVA程序设计报告材料一、引言随着计算机科学技术的发展,程序设计已经成为计算机科学专业的一门基础课程。
其中,JAVA程序设计作为一种流行的程序设计语言,具有广泛应用的特点,受到了学生和行业的广泛关注。
在本次JAVA程序设计报告中,我们将对JAVA程序设计的相关内容进行探讨和分析。
二、背景知识JAVA是一种通用、高级、并发、面向对象的计算机程序设计语言。
它由Sun公司(现在是Oracle公司)于1995年推出,并且可以在不同平台上运行。
JAVA具有广泛的应用领域,包括企业级Web应用开发、移动应用开发、嵌入式系统开发等。
三、程序设计原则1.面向对象设计原则JAVA是一种面向对象的语言,因此面向对象的设计原则在JAVA程序设计中非常重要。
其中,封装、继承、多态是JAVA的三大基本特性,应当在程序设计中充分利用。
2.模块化设计原则模块化设计原则是软件开发的重要原则之一,它将程序划分为多个模块,每个模块只负责一个功能。
在JAVA程序设计中,可以使用包和类的方式进行模块化设计,提高代码的可维护性和可重用性。
3.异常处理原则在JAVA程序设计中,异常处理是非常重要的,它可以有效地处理程序运行时可能出现的错误和异常情况。
通过合理地设计异常处理机制,可以降低程序崩溃的风险,提高程序的稳定性。
四、实际案例分析在本次JAVA程序设计报告中,我们选取了一个实际案例进行分析,以便更好地理解和应用JAVA程序设计原则。
案例:设计一个学生信息管理系统该学生信息管理系统是一个简单的JAVA程序,用于管理学生的基本信息,包括姓名、学号、成绩等。
系统包括以下功能:1.添加学生信息2.删除学生信息3.修改学生信息4.查询学生信息5.显示所有学生的信息在设计此系统时,我们遵循了上述的程序设计原则,使用面向对象、模块化和异常处理的方法进行设计。
我们将学生信息封装为一个类,并在系统中增加了合适的异常处理机制。
五、总结和展望通过本次JAVA程序设计报告,我们了解了JAVA程序设计的相关内容和基本原则。
java课程设计及实验报告
java课程设计及实验报告一、教学目标本课程旨在通过Java编程语言的学习,让学生掌握Java编程的基本语法、面向对象编程思想以及常用的数据结构与算法。
通过课程的学习,使学生能够独立完成简单的Java程序,培养学生的编程能力和逻辑思维能力。
具体的教学目标如下:1.知识目标:–掌握Java基本语法和编程规范;–理解面向对象编程的基本概念和方法;–熟悉常用的数据结构(如数组、链表、栈、队列等)和算法(如排序、查找等)。
2.技能目标:–能够使用Java编写简单的程序,解决实际问题;–能够运用面向对象编程思想进行程序设计;–能够运用常用的数据结构与算法解决编程问题。
3.情感态度价值观目标:–培养学生的团队合作意识和沟通能力;–培养学生的创新精神和解决问题的能力;–培养学生的自主学习能力和持续学习的兴趣。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.Java基本语法和编程规范;2.面向对象编程思想,包括类与对象、继承与多态、封装等;3.常用的数据结构与算法,包括数组、链表、栈、队列、排序、查找等;4.Java标准库的使用,包括字符串、数学运算、输入输出等;5.简单的Java编程实例和实战项目。
教学内容的安排和进度如下:•第1-2周:Java基本语法和编程规范;•第3-4周:面向对象编程思想;•第5-6周:常用的数据结构与算法;•第7-8周:Java标准库的使用;•第9-10周:简单的Java编程实例和实战项目。
三、教学方法为了达到教学目标,本课程将采用多种教学方法,包括:1.讲授法:讲解Java基本语法、面向对象编程思想和常用的数据结构与算法;2.案例分析法:分析实际的编程案例,让学生更好地理解和运用Java编程知识;3.实验法:让学生通过动手实践,巩固所学知识和技能;4.讨论法:学生进行小组讨论,培养学生的团队合作意识和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《Java编程思想》;2.参考书:《Java核心技术》、《Head First Java》;3.多媒体资料:教学PPT、视频教程、在线编程练习题等;4.实验设备:计算机、网络环境、编程开发环境(如Eclipse、IntelliJIDEA等)。
Java课程设计报告样本
《Flash程序设计》课程设计报告课程名称: Flash程序设计实验项目名称: 4屏flash焦点图上下切换效果程序院系: 物理与电子信息学院学号: ***********: ***班级: 10数字媒体日期: 2011 年12 月实验地点:课程设计成绩:实验指导教师签字:4屏flash焦点图上下切换效果程序一、课程设计目标此次课程设计的目的是通过对文本、图像、音频和视频媒体的制作方法和工具的学习, 使自己能够独立地运用相关软件进行图像处理和动画制作, 并在此次实践中检验自己的掌握程度。
1.运用动画制作软件Flash设计制作动画。
2、具体目的是:Flash作品要求做一个动画短片, 主题自定, 内容健康向上。
要求时长30秒以上, 使用按钮、脚本、遮罩、引导动画、背景音乐。
开发环境:Windows 7Flash cs3.0需求分析:在这个flash中我需要建立若干图层, 一步步建立背景、个人图片, 制造出环境效果;需要人物照片和数字的原件, 需要在人照片的图层上建立引导层;;需要创建补间动画来实现上下变化照片等效果;需要添加按钮来开始动画。
二、课程设计内容1.使用Flash cs3.0设计一个人物焦点图片上下变换。
在其中建立图片、数字、动作、音乐等图层2.利用flash制作出简单的效果三、过程设计1、利用不同的图片, 在变换数字的角度下观察到上下不同的切换效果2、设计思路第一步: 首先准备要滚动的图片, 将4张图片导入到flash库中, 分别在库中右击它们, 选择属性, 将“使用导入的JPEG品质”前的钩去掉, 这样文档的体积会小很多。
点击插入>新建元件, 新建一图形元件, 将库的图片拖到舞台上, 图片上下拼接好。
第二步: 回到主场景, 将图片元件拖到舞台上, 打开对齐面板, 选择相对舞台, 把图片变成影片剪辑。
第三步:依次加入1、2、3、4四个图层用来设置数字做出的影片剪辑添加数字的动作事件s t o p()图层数字影片剪辑第四步:图层L1-L12,用来制作出不同的数字按钮,控制好线条的颜色,单击数字时颜色的变化第五步:建立新的图层代码层,写下制作的全部代码下面是一下重要代码解释1,w h i l e(i <= s l i d e N u m){i f(s l i d e O v e r==i) {i f(t h i s["s l i d e M c" +i]._c u r r e n t f r a m e<t h i s["s l i d e M c"+i]._t o t a l f r a m e s){t h i s["s l i d e M c" + i].n e x t F r a m e(); t a r g e t y = (-i m g H e i g h t) * (i -1);}}e l s e i f(t h i s["s l i d e M c"+i]._c u r r e n t f r a m e>1){t h i s["s l i d e M c" + i].p r e v F r a m e(); }这些循环语句用来增加变量数字,2,M o v i e C l i p.p r o t o t y p e.i m g R o l l O v e r=f u n c t i o n();m o u s e O v e r=t r u e;};M o v i e C l i p.p r o t o t y p e.i m g R o l l O u t=f u n c t i o n() {m o u s e O v e r = f a l s e;};M o v i e C l i p.p r o t o t y p e.b t n R o l l O v e r = f u n c t i o n (){s l i d e O v e r=t h i s._n a m e.s l i c e(7);m o u s e O v e r=t r u e;};M o v i e C l i p.p r o t o t y p e.b t n R o l l O u t=f u n c t i o n(){m o u s e O v e r=f a l s e;};用来判断影片剪辑的是否上下移动第六步:把音乐导入到库里建立新的图层“音乐”。
java课程设计报告册
java课程设计报告册一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:使学生掌握Java编程语言的基本语法、数据类型、控制结构、面向对象编程等核心知识。
2.技能目标:培养学生具备编写简单的Java程序的能力,能运用Java语言解决实际问题。
3.情感态度价值观目标:培养学生对编程语言的兴趣,激发学生主动学习和探索编程的热情。
在教学过程中,我们将根据学生的实际情况,调整教学节奏和内容,确保学生能够达到上述目标。
二、教学内容本章节的教学内容主要包括以下几个部分:1.Java简介:介绍Java编程语言的发展历程、特点和应用领域。
2.基本语法:讲解Java编程语言的基本语法,包括数据类型、变量、运算符等。
3.控制结构:教授Java编程语言的控制结构,如条件语句、循环语句等。
4.面向对象编程:介绍Java编程语言的面向对象编程思想,包括类、对象、继承、多态等。
5.常用类库:讲解Java编程语言常用类库,如java.util、ng等。
6.编程实践:通过编写实际的Java程序,使学生巩固所学知识,提高编程能力。
三、教学方法为了实现本章节的教学目标,我们将采用以下几种教学方法:1.讲授法:讲解Java编程语言的基本语法、控制结构和面向对象编程等理论知识。
2.案例分析法:分析实际编程案例,使学生理解并掌握Java编程的方法和技巧。
3.实验法:安排上机实验,让学生动手编写Java程序,培养学生的实际编程能力。
4.讨论法:学生进行小组讨论,分享学习心得和编程经验,提高学生的合作能力。
四、教学资源为了保证本章节的教学质量,我们将准备以下教学资源:1.教材:选用权威、实用的Java编程教材,如《Java核心技术》等。
2.参考书:提供相关的Java编程参考书籍,供学生课后自学。
3.多媒体资料:制作精美的PPT课件,辅助讲解知识点。
4.实验设备:保证学生上机实验的需求,提供足够的计算机设备。
5.在线资源:推荐一些优质的在线教程和编程论坛,方便学生随时查阅和交流。
java课程设计报告
java课程设计报告1. 引言Java作为一种全球广泛使用的编程语言,具有跨平台、可靠性强、安全性高等优点,因而备受程序员和开发者的青睐。
本篇报告旨在对我所参与的Java课程设计进行总结和评估,分享学习过程中的经验和收获,以及对未来的展望。
2. 项目背景本次课程设计项目是一个在线购物平台的开发,团队共有3名成员,我们合作进行了2个月的开发工作。
通过这个项目,我学到了许多Java编程的实践经验,不仅提高了编程技能,也增进了团队合作和沟通能力。
3. 设计过程在设计初期,我们进行了需求分析和系统设计。
我们通过与用户进行会议和讨论,了解了用户的需求和期望。
然后,我们进行了功能拆解和流程设计,使用UML建模工具绘制了用例图和类图,明确了系统的整体结构。
4. 技术选型在技术选型上,我们选择了Spring框架作为项目的基础框架,使用了Spring Boot来简化开发流程。
为了实现用户认证和授权功能,我们使用了Spring Security。
此外,为了提高系统性能和扩展性,我们采用了Spring Cloud微服务架构,使用了Eureka作为注册中心、Ribbon作为负载均衡器。
5. 开发实践在开发过程中,我们遵循了面向对象的编程思想,并且使用了版本控制工具Git,实现了团队的协同开发。
我们按照模块划分任务,每个成员负责一个或多个模块的开发。
通过定期的代码审查和团队会议,我们保持了代码的质量和一致性。
6. 问题与挑战在项目开发中,我们也遇到了一些问题和挑战。
例如,数据一致性的处理、性能优化、多线程并发等。
但通过团队成员的共同努力和合作,我们成功地克服了这些问题,并取得了较好的开发效果。
7. 项目成果与展望在项目完成后,我们实现了一个功能完备、用户友好的在线购物平台。
用户可以注册、登录、浏览商品、下订单并进行支付等操作。
同时,我们也考虑到了扩展性和性能优化的问题,系统具备一定的容错和弹性。
未来,我们希望能继续完善和优化这个系统,并根据用户的反馈做出进一步的改进。
java课程设计报告(完整版)
目录1、摘要2、概要设计3、详细设计4、测试分析5、总结6、参考文献【前言】Java不依赖平台的特点使得它受到广泛的关注,Java已成为网络时代最重要的语言之一。
Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。
目前,很多新的技术领域都涉及Java语言,国内外许多大学已将Java语言列入了本科教学计划,掌握Java已经成为共识。
本次课程设计就是利用java语言来编写简单的计算器,能进行加、减、乘、除四则运算,下面给出了该设计的理论分析和具体步骤。
一、摘要本计算器可以进行简单的四则运算(加、减、乘、除),但仅限于十进制下。
“Backspace”按钮表示退格,“CE”按钮表示清除当前文本框内的数据,“C”按钮表示清除文本框内数据,同时var、answer清零。
该程序可在JCreator环境下直接运行。
二、概要设计1、自定义说明(1)类名:Calculator作用:主类继承的父类:JFrame类实现的接口:ActionListener类public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"}; //定义数组bstTexts来存放计算器上的各个按钮Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" "); //计算结果显示区public Calculator(){………}public void actionPerformed(ActionEvent event){………}}(2)方法名:Calculator作用:设置窗体布局public Calculator(){//Frame frame = new Frame("Calculator");super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");CeButton.setForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);CeButton.addActionListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置四个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色显示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);}(3)方法名:actionPerformed作用:设置各个按钮的行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){……….}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){…………}//'-'操作if (temp == button[11]){…………}//'*'操作if (temp == button[12]){…………}//'/'操作if (temp == button[13]){…………}//'='操作if (temp == EqButton && clickable == true){…………}//按下'+/-'按钮时处理{…………}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true){…………}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){………}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){………}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}2、界面设计下图为该程序运行时的界面截图:三、详细设计以下为该程序的主要代码:import javax.swing.*;import java.awt.*;import javax.swing.event.*;import java.awt.event.*;import java.text.DecimalFormat;public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts ={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"};Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" ");//计算结果显示区public Calculator(){super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");CeButton.setForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);CeButton.addActionListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置三个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);}//设置各个按钮行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后if (temp == button[i] && clickable == true)displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){boolean isDot = false;if (displayField.getText().length() == 0)isDot = true;for (int i = 0; i < displayField.getText().length(); i++)if ('.' == displayField.getText().charAt(i)){isDot = true;break;}if (isDot == false)displayField.setText(displayField.getText() + ".");}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:}displayField.setText("");prekey = key = 0;}//'-'操作if (temp == button[11]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 1;}//'*'操作if (temp == button[12]){switch (prekey){case 0:break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 2;}//'/'操作if (temp == button[13]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 3;}}//'='操作if (temp == EqButton && clickable == true){//如果连续按'=',则进行连续运算if (prekey == 5){if (key == 0){answerd += vard;displayField.setText(df.format(answerd));}if (key == 1){answerd -= vard;displayField.setText(df.format(answerd));}if (key == 2){answerd *= vard;displayField.setText(df.format(answerd));}if (key == 3){if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= vard;displayField.setText(df.format(answerd));}}}else{vard = Double.parseDouble(displayField.getText());if (key == 0){prekey = -1;answerd += Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 1){prekey = -1;answerd -= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 2){prekey = -1;answerd *= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 3){prekey = -1;if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}}prekey = 5;}//按下'+/-'按钮时处理if (temp == button[15] && clickable == true){boolean isNumber = true;String s = displayField.getText();for (int i = 0; i < s.length(); i++)if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '-')){isNumber = false;break;}if (isNumber == true){//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-'){displayField.setText("");for (int i = 1; i < s.length(); i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsedisplayField.setText('-' + s);}}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true)String s = displayField.getText();displayField.setText("");for (int i = 0; i < s.length() - 1; i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){displayField.setText("");clickable = true;}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){vard = answerd = 0;displayField.setText("");clickable = true;}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}}public static void main(String args[]){Calculator calculator = new Calculator();calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);calculator.setSize(300,200);calculator.setVisible(true);}}四、测试分析(1)程序运行情况该程序正常的响应按钮事件,能进行简单的加、减、乘、除四则运算,在输入之前须先进行清零处理,然后再输入数值进行运算。
java课程设计实验报告
java课程设计实验报告Java课程设计实验报告。
一、实验目的。
本次实验旨在通过设计一个简单的Java程序,加深对Java语言的理解和应用,同时锻炼学生的编程能力和解决问题的能力。
二、实验内容。
本次实验要求设计一个简单的学生成绩管理系统,实现对学生成绩的录入、查询、修改和删除等功能。
具体要求如下:1. 设计一个学生类,包括学生的基本信息(学号、姓名、性别等)和成绩信息(语文、数学、英语等科目成绩)。
2. 实现学生成绩的录入功能,可以一次性录入多个学生的成绩信息。
3. 实现学生成绩的查询功能,可以根据学号或姓名查询学生的成绩信息。
4. 实现学生成绩的修改功能,可以修改指定学生的成绩信息。
5. 实现学生成绩的删除功能,可以删除指定学生的成绩信息。
三、实验设计。
在本次实验中,我首先设计了一个学生类,包括学号、姓名、性别和成绩等属性,并提供了相应的构造方法和get、set方法。
然后,我设计了一个学生成绩管理系统的主类,其中包括录入、查询、修改和删除等功能的实现。
在录入功能中,我使用Scanner类实现了从控制台输入学生信息的功能,并将学生信息保存到一个ArrayList中。
在查询功能中,我通过学号或姓名遍历ArrayList,找到相应的学生信息并输出。
在修改功能中,我同样通过遍历ArrayList找到指定学生信息,并提供修改选项,用户可以选择要修改的成绩信息进行修改。
在删除功能中,我也是通过遍历ArrayList找到指定学生信息,并进行删除操作。
四、实验结果。
经过一系列的调试和测试,我成功实现了学生成绩管理系统的设计要求。
用户可以通过简单的命令行界面,实现学生成绩的录入、查询、修改和删除等功能。
系统运行稳定,操作简单,符合设计要求。
五、实验总结。
通过本次实验,我对Java语言的面向对象编程有了更深入的理解,掌握了ArrayList的使用方法,提高了编程能力和问题解决能力。
同时,通过设计一个实用的学生成绩管理系统,我也加深了对Java语言的应用和实践,为以后的学习和工作打下了坚实的基础。
《JAVA程序设计》课程设计五篇
《JAVA程序设计》课程设计五篇第一篇:《JAVA程序设计》课程设计JAVA程序设计》课程设计------Chatter即时聊天工具班级:姓名:学号:指导老师:日期:《目录1.引言.....................................................................................3 2.功能简介..............................................................................3 3.开发环境..............................................................................3 4.课程设计目的.......................................................................3 5.使用手册..............................................................................3 6.程序源代码...........................................................................4 4.1 serverJFrame.java (4)4.2 clientJFrame.java...............................................................9 7.程序运行效果图. (14)8.心得体会 (16)1.引言相信大家一想到基于TCP/IP协议的通信,都会想到利用Socket 类对象建立一条可靠的连接,这样就客户机/服务器就在这条连接上可靠地传输数据。
java课程设计报告
课程设计报告一、系统描述:记事本程序设计及实现是对记事本基本功能的Java代码的实现,完成记事本的基本功能,包括打开、保存、另存为以及对文本文件的编辑(包括剪切、复制、粘贴、字体设置、自动换行等)等,从而方便用户的基本使用。
二、分析与设计1.软件需求通过Java代码的编写实现记事本的功能。
仿照微软Windows操作系统自带的记事本,通过Java自带的GUI的一些工具包来实现界面设计,包括菜单栏、下拉菜单,建立一个框架,在框架的上部添加菜单栏,在菜单栏里添加各个下拉菜单名,在各个下拉菜单名下添加下拉菜单,下拉菜单里有各种所需要的基本操作、基本操作的热键及其快捷键提示,通过下拉菜单里的各项操作实现对对文本的操作。
对于某些由于暂未接触过而未能通过代码实现的功能,目前只能通过提示框提示用户。
2.功能设计引入java.awt.* 、java.io.*、java.awt.event.* 、javax.swing.* 、java.util.* 这几个必要的工具包以方便后续编写的使用。
在框架上添加菜单栏,通过下拉菜单实现各项功3.系统详细设计文档(类的划分及相互关系、接口设计、算法设计等)4.各个模块的实现方法描述1)closeWindow()方法:退出或关闭窗口时调用的方法判断。
退出或关闭时,弹出提示框,供用户选择保存或退出,保存调用save()函数,退出调用System.exit(0)函数。
2)open()方法:选择打开文件时调用。
通过JFileChooser组件类定义的chooser对象实现对文件的选择。
用以缓冲输入流的格式打包文件输入流的方法打开文件,将文件的内容保存在字节数组中,再转存到字符串中并输出显示到显示器上,打开文件异常时捕获并抛出。
3)save()方法:保存文件时调用的方法。
如果文件没有保存路径,则调用saveAs()方法;如果有保存路径,则通过JFileChooser组件类定义的chooser对象实现对文件路径的打开,用以缓冲输出流的格式打包文件输出流的方法将字符串转换为字节数组后输出保存到文本文件中。
java课程设计报告
java课程设计报告引言:在现代社会的科技发展中,计算机科学已经成为人们生活的一部分。
作为计算机科学的基础语言之一,Java语言在软件开发领域具有广泛的应用。
本文将围绕Java课程设计展开,介绍该课程设计的背景、目的、过程及结果,并对课程设计的意义和价值进行分析。
一、背景说明随着信息技术的快速发展和社会的进步,计算机科学课程在高等教育中变得越来越重要。
Java作为一种面向对象的编程语言,在学术界和工业界都有着广泛应用和较高的口碑。
通过Java课程设计,可以提高学生的动手能力和实践操作能力,为学生的综合素质提供有力的支持。
此外,Java课程设计还可以激发学生的创造力和创新思维,为学生的职业发展打下坚实的基础。
二、目的和目标本次Java课程设计的主要目的是培养学生的编程能力和软件开发实践经验。
具体目标包括:1. 熟练掌握Java语言的基本语法和常用库函数。
2. 理解面向对象的编程思想和设计原则。
3. 能够独立设计和实现一个简单的软件项目。
4. 提高分析问题和解决问题的能力。
5. 培养团队合作和沟通协作能力。
三、课程设计过程本次课程设计分为以下几个阶段:1. 需求分析:明确软件设计的目标和功能要求,了解用户需求和期望。
2. 系统设计:根据需求分析结果,设计系统的结构和模块划分,确定开发所需资源和工具。
3. 编码实现:根据系统设计,利用Java语言进行编码实现,编写各个模块的代码。
4. 软件测试:对编码完成的软件进行全面测试,包括单元测试、集成测试和系统测试,确保软件的稳定性和可靠性。
5. 软件优化:根据测试结果,对软件进行性能优化和代码优化,提高软件的运行效率和用户体验。
6. 报告撰写:根据课程设计要求,撰写课程设计报告,阐述整个课程设计过程和实现的思路方法。
四、课程设计成果通过课程设计的努力,设计实现了一个基于Java语言的个人账单管理系统。
该系统可以帮助用户记录和管理个人的收入和支出情况,提供账单查询、分类统计等功能。
java课程设计报告.doc
java课程设计报告.doc一、教学目标本课程旨在通过Java编程语言的学习,让学生掌握Java编程的基本语法、流程控制、数据结构、面向对象编程等知识,培养学生编写简单Java应用程序的能力,提高学生解决实际问题的实践能力。
1.掌握Java基本语法和常用数据类型。
2.理解面向对象编程的基本概念,如封装、继承、多态。
3.熟悉Java常用类库和API。
4.掌握Java程序的调试和运行方法。
5.能够使用Java编写简单的应用程序。
6.能够运用面向对象编程思想解决实际问题。
7.具备基本的Java程序调试和优化能力。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。
2.培养学生热爱编程、积极探索的精神。
3.增强学生对计算机科学的兴趣和自信心。
二、教学内容本课程的教学内容主要包括Java基本语法、流程控制、数据结构、面向对象编程等。
具体安排如下:1.Java基本语法:变量、数据类型、运算符、表达式、语句等。
2.流程控制:顺序结构、选择结构、循环结构等。
3.数据结构:数组、链表、栈、队列、树等。
4.面向对象编程:类、对象、封装、继承、多态等。
5.Java常用类库和API:String类、数学类、日期类等。
6.综合实践:编写简单的Java应用程序,如计算器、通讯录等。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解Java编程的基本概念和知识点,使学生掌握相关知识。
2.案例分析法:分析实际案例,让学生了解Java编程在实际应用中的优势和特点。
3.实验法:引导学生动手实践,培养学生的编程能力和实际问题解决能力。
四、教学资源1.教材:《Java编程思想》、《Java核心技术》等。
2.参考书:《Java编程指南》、《Java并发编程》等。
3.多媒体资料:PPT、教学视频、在线教程等。
4.实验设备:计算机、网络环境、编程软件等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面、客观、公正地评价学生的学习成果。
java课程设计设计实验报告
java课程设计设计实验报告一、教学目标本课程旨在通过Java编程语言的学习,让学生掌握Java编程的基本语法、流程控制、数据结构、面向对象编程等基本知识,培养学生运用Java语言解决实际问题的能力。
具体目标如下:1.知识目标:(1)理解Java编程语言的基本语法和编程规范;(2)掌握Java中的基本数据类型、运算符、表达式;(3)了解Java的流程控制语句,如if、for、while等;(4)熟悉Java数组、字符串、集合等数据结构的使用;(5)理解面向对象编程的基本概念,如类、对象、封装、继承、多态等;(6)掌握Java异常处理机制和文件操作。
2.技能目标:(1)能够使用Java编写简单的程序,实现基本的功能;(2)能够运用面向对象编程思想,设计并实现具有一定复杂度的程序;(3)具备阅读Java代码的能力,能够理解并修改他人编写的程序;(4)掌握使用Java开发工具,如Eclipse、IntelliJ IDEA等;(5)了解Java程序的调试和性能优化方法。
3.情感态度价值观目标:(1)培养学生对编程语言的兴趣,激发学生主动学习的动力;(2)培养学生团队合作精神,提高学生沟通协作能力;(3)培养学生面对挑战、解决问题的信心和勇气;(4)培养学生具有良好的代码规范和编程习惯。
二、教学内容本课程的教学内容主要包括Java编程语言的基本语法、流程控制、数据结构、面向对象编程等。
具体安排如下:1.第一章:Java入门,介绍Java编程语言的基本概念、环境搭建和基本语法;2.第二章:基本数据类型和运算符,学习Java中的整数、浮点数、字符、布尔等数据类型以及运算符;3.第三章:流程控制语句,学习if、for、while等流程控制语句的使用;4.第四章:数组和字符串,学习数组的声明、初始化和使用,字符串的创建、操作和转换;5.第五章:集合框架,学习List、Set、Map等集合接口及其实现类的使用;6.第六章:面向对象编程,学习类、对象、封装、继承、多态等概念及应用;7.第七章:异常处理和文件操作,学习Java异常处理机制和文件读写方法;8.第八章:Java编程实践,通过案例分析法和实验法,巩固所学知识,提高实际编程能力。
java课程设计报告
java课程设计报告Java课程设计报告一、设计背景随着信息技术的发展,计算机编程已经成为一门必备的技能。
而Java作为一种强大的编程语言,具有跨平台性、安全性和易学性的特点,深受广大程序员的喜爱。
基于此,我们决定设计一门Java课程,旨在培养学生的编程能力和解决问题的能力。
二、设计目标我们的设计目标主要有以下几点:1. 帮助学生掌握Java编程的基本概念和语法;2. 培养学生独立解决问题的能力;3. 培养学生的团队合作能力。
三、课程内容1. 第一阶段:基础知识学习在这个阶段,学生将学习Java编程的基本概念和语法。
包括数据类型、变量、运算符、条件语句、循环语句等。
学生将通过讲解、案例演示和实践编程来掌握这些知识。
2. 第二阶段:问题解决能力培养在这个阶段,学生将解决一系列实际问题。
这些问题将涉及各种Java编程知识,例如数组、字符串、文件操作等。
学生将通过解决这些问题来提高自己的Java编程能力,并培养解决问题的能力。
3. 第三阶段:团队合作项目在这个阶段,学生将分成小组开展一个实际项目。
他们需要通过合作来完成项目的需求分析、设计、编码和测试等工作。
这样可以培养学生的团队合作能力和对软件开发过程的理解。
四、教学方法1. 讲解法:教师通过课堂讲解来传授Java的概念和语法。
2. 实践法:学生通过编写小程序来巩固所学知识,并解决实际问题。
3. 项目法:学生通过完成项目来应用所学知识,并培养团队合作能力。
五、教学资源1. 课本:我们将选用一本Java编程的入门教材作为主要教学资料。
2. 编程工具:学生将使用Java集成开发环境(IDE)来进行编程实践。
3. 网络资源:学生可通过互联网获取相关的编程教程、参考资料和实例代码。
六、评估方法1. 期中考试:考察学生对Java编程基础知识和语法的掌握程度。
2. 作业评估:评估学生对实际问题的解决能力和编码规范的掌握程度。
3. 项目评估:评估学生在团队合作项目中的表现和软件开发能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Java面向对象程序设计》课程设计报告(2013— 2014学年第一学期)专业:软件服务班级:二班姓名:学号:1207132208指导教师:成绩:计算机与信息工程学院2014 年 1 月17 日目录目的 (1)条状图 (1)虐待鼠标 (5)挂钟 (8)绘图程序 (13)目的本课程是软件工程、信息技术外包专业所开设的一门重要实践课程,主要要求学生掌握Java语言和面向对象在实践中的应用。
本课程设计的目的是使学生在理论学习的基础上,动手编写程序,通过应用所学习的知识,来解决一些实际的问题。
在此基础上,真正理解和掌握Java面向对象程序设计的相关理论,具备程序设计的能力。
条状图一、设计内容设计实现一个应用程序,创建一个条状图,用于查看一组JA V A成绩的分布情况。
程序初始化一组0-100的整数,根据整数值进行分类,通过调用fillRect 方法绘图。
二、方案设计与论证1.随机产生10个整数,范围在0到100之间。
2.将这十个数分5种水平累加。
累加的数值大小的十倍即为条状图的长度。
3.调用fillRect方法绘图。
三、程序运行结果(截图)四、心得体会1.在规定条状图大小位置较麻烦。
2.在BarChart类中一直出现不匹配的问题。
解决方法:将for循环移入paintComponent()方法中。
3. 为了代码的严谨性,在BarChart类中增添了构造方法,在构造方法中初始化了背景色和面板大小,规定了条状图的大小。
五、参考资料与致谢参考Java书本4.6图形对象中的例题4.5的格式。
六、源程序1.Bar.javaimport javax.swing.JFrame;public class Bar{//-----------------------------------------------------------------// Creates the main program frame.//-----------------------------------------------------------------public static void main (String[] args){JFrame frame = new JFrame ("Bar Chart");frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);BarChart panel = new BarChart();frame.getContentPane().add(panel);frame.pack();frame.setVisible(true);}}2.BarChart.javaimport javax.swing.JPanel;import java.awt.*;import java.util.Random;public class BarChart extends JPanel{Random generator = new Random();int score;int l1 ;i nt l2 ;i nt l3 ;i nt l4 ;i nt l5 ;public BarChart(){setBackground (Color.cyan);setPreferredSize (new Dimension(400, 300)); }public void paintComponent (Graphics page){super.paintComponent(page);for (int i = 0 ; i <10 ; i++){score = generator.nextInt(101);if(score>= 91 && score<=100)l1++;if(score>= 81 && score<=90)l2++;if(score>= 71 && score<=80)l3++;if(score>= 60 && score<=70)l4++;if(score>= 0 && score<=59)l5++;}page.setColor(Color.lightGray);page.fillRect(150,50,155,110);page.setColor(Color.black);page.drawLine(180, 50, 180, 160);page.drawLine(210, 50, 210, 160);page.drawLine(240, 50, 240, 160);page.drawLine(270, 50, 270, 160);page.drawString("0", 150, 170);page.drawString("2", 180, 170);page.drawString("4", 210, 170);page.drawString("6", 240, 170);page.drawString("8", 270, 170);page.drawString("10", 300, 170);page.setColor(Color.magenta);page.fillRect(150,60,l1*10,10);page.setColor(Color.magenta);page.fillRect(150,80,l2*10,10);page.setColor(Color.magenta);page.fillRect(150,100,l3*10,10);page.setColor(Color.magenta);page.fillRect(150,120,l4*10,10);page.setColor(Color.magenta);page.fillRect(150,140,l5*10,10);page.setColor(Color.black);page.drawString("91到100", 100, 67);page.drawString("81到90", 100, 87);page.drawString("71到80", 100, 108);page.drawString("60到70", 100, 130);page.drawString("0到59", 100, 155);}}虐待鼠标一、设计内容鼠标是一个易损器件,损坏的原因往往是因为过量的点击。
请参考第四章的例题4.10设计一款程序测试在一分钟内你能点击鼠标多少次,找你的同学来试试看看谁的食指更灵活。
二、方案设计与论证1.建一个界面(用框架)2.建一个面板介入到框架中面板中添加按钮,标签(显示时间和点击鼠标次数)面板中添加监听器(监听点击鼠标次数和计时)提示:时间差计算方法Calendar begin=Calendar.getInstance(); //获取起点时间Calendar end = Calendar.getInstance(); //获取终点时间long between=end.getTimeInMillis() - begin.getTimeInMillis()/1000; //除以1000是为了将毫秒转换成秒三、程序运行结果(截图)四、心得体会1.本题需要两部分任务,倒计时Timber的调用,和记录点击鼠标的次数。
2.刚开始对题目所要用到的方法不太清楚,结合书本上的内容和上网查阅相关资料获得。
3.原本新建一个类,用来进行计时问题,但是程序出现错误。
因为对API不是很了解,上网查阅了API关于Calendar类及getInstance()方法和getTimeInMillis()方法的用法,运用监听器方法实现倒计时。
五、参考资料与致谢参考java书本上第四章的例题4.10,按钮点击次数。
网上获取计时器Calendar类的用法。
六、源程序1. Push.java//******************************************************************* *// PushCounter.java Authors: Lewis/Loftus//// Demonstrates a graphical user interface and an event listener.//******************************************************************* *import javax.swing.JFrame;public class Push{//-----------------------------------------------------------------// Creates the main program frame.//-----------------------------------------------------------------public static void main (String[] args){JFrame frame = new JFrame ("Push Counter");frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(new PushPanel());frame.pack();frame.setVisible(true);}}2. PushPanel.java//******************************************************************* *// PushCounterPanel.java Authors: Lewis/Loftus//// Demonstrates a graphical user interface and an event listener.//******************************************************************* *import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PushPanel extends JPanel{private int count;private JButton push;private JLabel label;private JLabel label1;private long between;java.util.Calendar begin=java.util.Calendar.getInstance(); //获取起点时间//-----------------------------------------------------------------// Constructor: Sets up the GUI.//-----------------------------------------------------------------public PushPanel (){count = 0;push = new JButton ("Push!");push.addActionListener (new ButtonListener());label = new JLabel ("Pushes: " + count);label1 = new JLabel ("Times: " + between);add (push);add (label);add (label1);setPreferredSize (new Dimension(300, 50));setBackground (Color.cyan);}//***************************************************************** // Represents a listener for button push (action) events.//***************************************************************** private class ButtonListener implements ActionListener{//--------------------------------------------------------------// Updates the counter and label when the button is pushed.//--------------------------------------------------------------public void actionPerformed (ActionEvent event){java.util.Calendar end=java.util.Calendar.getInstance(); //获取终点时间between=(end.getTimeInMillis() - begin.getTimeInMillis())/1000; //除以1000是为了将毫秒转换成秒if(event.getSource() == push )//获取点击鼠标的信息{count++;label.setText("Pushes: " + count);}if (between <= 60)//时间设定为1分钟即60秒{between ++;label1.setText("Times: " + between);}else{System.out.println("Time is over!");}}}}挂钟一、设计内容设计一款如下的挂钟提示:Calendar calendar=Calendar.getInstance(); //获取当前时间int year=calendar.get(Calendar.YEAR); //获取年int month=calendar.get(Calendar.MONTH); //获取月int day=calendar.get(Calendar.DATE); //获取日int weekDay=calendar.get((Calendar.DAY_OF_WEEK));int am_pm=calendar.get(Calendar.AM_PM);int hour=calendar.get(Calendar.HOUR_OF_DAY); //获取小时int minute=calendar.get(Calendar.MINUTE); //获取分钟int second=calendar.get(Calendar.SECOND); //获取秒二、方案设计与论证运用定时器Timer设计运行时钟运用Graphics绘制时钟图像及表针三、程序运行结果(截图)四、心得体会1.起初不懂画表针如何得到坐标,查阅相关资料得代码如下:sx=195+95*Math.sin((6*second*Math.PI)/180);sy=195-95*Math.cos((6*second*Math.PI)/180);mx=195+80*Math.sin((6*minute*Math.PI)/180+(6*second*Math.PI)/180/60);my=195-80*Math.cos((6*minute*Math.PI)/180+(6*second*Math.PI)/180/60);2.画表针方法如下:g.setColor(Color.black);g.drawLine(195, 195, (int)sx, (int)sy);g.drawLine(195, 195, (int)mx, (int)my);g.drawLine(195, 195, (int)hx, (int)hy);五、参考资料与致谢参考Java书上9.8定时器类的例题9.15六、源程序1.clock.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.JFrame;public class clock{public static void main(String[] args){JFrame frame=new JFrame("clock");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(new clockPanel());frame.pack();frame.setVisible(true);}}2.clockPanel.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Calendar;public class clockPanel extends JPanel{private final double PI=3.14;private int DELAY=1000;private Timer timer;private Calendar calendar;private double sx,sy,mx,my,hx,hy;private int second,minute,hour;private int s;public clockPanel(){timer=new Timer(DELAY,new clockListener());setPreferredSize(new Dimension(300,300));setBackground(Color.white);timer.start();}public void paint(Graphics g){super.paint(g);g.setColor(Color.gray);g.fillOval(75, 75, 240, 240);g.setColor(Color.yellow);g.fillOval(100, 100, 190, 190);g.setColor(Color.black);g.drawOval(75, 75, 240, 240);g.setColor(Color.black);g.drawOval(100, 100, 190, 190);g.setColor(Color.black);g.fillOval(190, 190, 10, 10);calendar=Calendar.getInstance();second=calendar.get(Calendar.SECOND);minute=calendar.get(Calendar.MINUTE);hour=calendar.get(Calendar.HOUR_OF_DAY);g.setColor(Color.black);g.setFont(new Font("TimesRoman",Font.PLAIN,20));for(int i=1;i<13;i++){int X=(int)(195+100*Math.sin((6*i*5*Math.PI)/180));int Y=(int)(195-100*Math.cos((6*i*5*Math.PI)/180));if(i<4)g.drawString(""+i, X-2,Y+3);if(i<7&&i>=4)g.drawString(""+i, X-6,Y+16);if(i>=7&&i<10)g.drawString(""+i, X-10,Y+12);if(i>=10&&i<=12)g.drawString(""+i, X-17,Y+3);}for(int a=1;a<13;a++){int X=(int)(195+95*Math.sin((6*a*5*Math.PI)/180));int Y=(int)(195-95*Math.cos((6*a*5*Math.PI)/180));g.setColor(Color.black);g.fillOval(X-2,Y-2,4,4);}g.setColor(Color.black);g.drawLine(195, 195, (int)sx, (int)sy);g.setColor(Color.black);g.drawLine(195, 195, (int)mx, (int)my);g.setColor(Color.black);g.drawLine(195, 195, (int)hx, (int)hy);}public class clockListener implements ActionListener{public void actionPerformed(ActionEvent event){sx=195+95*Math.sin((6*second*Math.PI)/180);sy=195-95*Math.cos((6*second*Math.PI)/180);mx=195+80*Math.sin((6*minute*Math.PI)/180+(6*second*Math.PI)/180/60); my=195-80*Math.cos((6*minute*Math.PI)/180+(6*second*Math.PI)/180/60);if(hour<=12){hx=195+65*Math.sin((30*hour*Math.PI)/180+(6*minute*Math.PI)/180/12);hy=195-65*Math.cos((30*hour*Math.PI)/180+(6*minute*Math.PI)/180/12); }if(hour>12){hx=195+65*Math.sin((30*(hour-12)*Math.PI)/180+(6*minute*Math.PI)/180/ 12);hy=195-65*Math.cos((30*(hour-12)*Math.PI)/180+(6*minute*Math.PI)/180/ 12);}repaint();}}}绘图程序一、设计内容编写Java Application程序,使它在GUI界面中通过响应功能按钮的点击事件绘制各种简单的几何图形(矩形、圆形、扇形、多边形和他们的填充效果),并且能够通过接收传递参数控制图形的绘制。