JAVA项目实验报告.doc

上传人:叶*** 文档编号:36104109 上传时间:2022-08-25 格式:DOC 页数:12 大小:97KB
返回 下载 相关 举报
JAVA项目实验报告.doc_第1页
第1页 / 共12页
JAVA项目实验报告.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《JAVA项目实验报告.doc》由会员分享,可在线阅读,更多相关《JAVA项目实验报告.doc(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、JAVA课程项目报告项目题目:利用JAVA实现一个小时钟的程序专业班级:10软件工程学生姓名:闵楠学生学号:E01014135利用JAVA实现一个时钟的小程序1. 软件开发的需求分析在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具 ,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程 等特点。使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入 式设备进行应用程序的开发。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概

2、念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。此次课程设计的题目为简单的小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。2具体实现2.1设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java去

3、掉了C+语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。因此运用JAVA程序编写小时钟程序,实现简单显示时间的功能。本次课程设计做的是Java简单小时钟,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。 程序实现了小时钟的基本功能。2.2设计方法 在设计简单小时钟时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.ja

4、va。 小时钟除了需要编写的上述5个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JTextField、JTextArea和File类。2.3 运行环境CPU:Pentium 2.8GHz以上内存:256MB以上硬盘空间:80G以上操作系统:Windows XP运行环境:JDK,JCreator2.4 程序功能图及程序相关说明2.4.1 主功能框 启动小时钟注册界面秒针走时分针走时时针走时关闭小时钟 图1 程序基本框图表1 小时钟基本功能表 序号文件名主要功能1ServerHost被服务器调用2Client显示小时钟3ClientUser被客户端调用4LogIn注册登陆5

5、Objecting连接小时钟6Server启动小时钟 2.4.2 程序分析程序中引入的包:package Clockimport java.awt.Clockimport java.awt.Graphicsimport java.awt.event.WindowAdapterimport java.awt.event.WindowEventimport java.util.Calendarimport java.util.GregorianCalendar用户自定义类:类名:Clock作用:定义小时钟继承的父类:JFramepublic class clock extends JFrame定义

6、的对象:ClockPaint size Resizable Location Title Visible WindowListener,WindowClosing 主要成员方法:public void center /定义小程序查看器的位置public void actionPerformed /定义处理异常机制定义子类:ClockPaint继承的父类名:JPanel继承的接口名:Runnableclass ClockPaint extends JPanel implements Runnableint h, m, s / 小时,分钟,秒主要成员方法:public ClockPaintthis

7、.x = xthis.y = ythis.r = rs = now.get(Calendar.SECOND) * 6 / 获得秒转换成度数m = now.get(Calendar.MINUTE) * 6 / 获得分钟h = (now.get(Calendar.HOUR_OF_DAY) - 12) * 30+ now.get(Calendar.MINUTE) / 12 * 6 / 获得小时主要成员方法:public void paint(Graphics g) / 清屏super.paint(g)g.setColor(Color.BLACK)g.fillRect(0, 0, r * 3, r *

8、 3) / 画圆g.setColor(Color.WHITE)g.drawOval(x, y, r * 2, r * 2) / 秒针g.setColor(Color.RED)int x1 = (int) (r - 10) * Math.sin(rad * s)int y1 = (int) (r - 10) * Math.cos(rad * s)g.drawLine(x + r, y + r, x + r + x1, y + r - y1) / 分针g.setColor(Color.BLUE)x1 = (int) (r - r / 2.5) * Math.sin(rad * m)y1 = (in

9、t) (r - r / 2.5) * Math.cos(rad * m)g.drawLine(x + r, y + r, x + r + x1, y + r - y1) / 时针g.setColor(Color.CYAN)x1 = (int) (r - r / 1.5) * Math.sin(rad * h)y1 = (int) (r - r / 1.5) * Math.cos(rad * h)g.drawLine(x + r, y + r, x + r + x1, y + r - y1) / 数字g.setColor(Color.YELLOW)int d = 29for (int i = 1

10、; i = 12; i+) x1 = (int) (r - 10) * Math.sin(rad * d)y1 = (int) (r - 10) * Math.cos(rad * d)g.drawString(i + , x + r + x1 - 4, x + r - y1 + 5)d += 30 / 小点d = 0;for (int i = 0; i = 360) s = 0m += 6if (m = 72 | m = 144 | m = 216 | m = 288) h += 6if (m = 360) m = 0h += 6;if (h = 360) h = 0;this.repaint

11、();3.设计结果与分析将5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。分别编译这5个Java源文件,或运行“javac *.java”命令,编译全部的源文件,然后运行连接服务器的主类,即运行Clock类。连接完毕后在运行注册的主函数类,即运行LogIn类。运行Clock.java,运行结果如下: 图2查看实时时间4. 设计总结4.1 遇到的问题和解决方法在用JAVA编写程序时,我遇到了很多困难,对很多的接口,类,方法都不是很熟悉,只好采用查看API文档,一个一个进行对照学习,同时也上网查

12、看了有关小时钟的相关描述,还向同学请教了,翻阅了相关的书籍。尤其是因为有些方法需要使用JDK1.6才行,所以在学校网络机房一开始不能运行,在安装了1.6版本后运行正常了。4.2 设计心得花费了近一个多星期的时间,查阅了许多相关的资料,终于把这个Java小时钟,程序基本实现了该课程设计的基本要求。在设计的过程中了解到自己的知识还是比较有限,更肯定了自己在以后学习编程的道路上坚定不移的但由于只学习了一个学期的JAVA语言,自己水平有限,使得程序还有不是很完善回顾起此次java,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西

13、,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正掌握这门技术,也提高了自己的独立思考的能力。在设计的过程中遇到问题,可以说得上是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不

14、过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。让我不仅学会了书本上的知识,还让自己能够面对困难并且克服它。5主要代码:import java.awt.Color;import java.awt.Graphics;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Calendar;import java.util.GregorianCalenda

15、r;import javax.swing.JFrame;import javax.swing.JPanel;/* 时间类* */public class Clock extends JFrame /* * */ private static final long serialVersionUID = 1L; public Clock() ClockPaint cp = new ClockPaint(20, 20, 70);this.add(cp); this.setSize(200, 200); this.setResizable(false); this.setLocation(260, 1

16、20); this.setTitle(小时钟); this.setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public static void main(String s) new Clock(); class ClockPaint extends JPanel implements Runnable /* * */ private static final long serialVersionUID = 1L

17、; int x, y, r; int h, m, s;/ 小时,分钟,秒 double rad = Math.PI / 180; public ClockPaint(int x, int y, int r) this.x = x; this.y = y; this.r = r; Calendar now = new GregorianCalendar(); s = now.get(Calendar.SECOND) * 6;/ 获得秒转换成度数 m = now.get(Calendar.MINUTE) * 6;/ 获得分钟 h = (now.get(Calendar.HOUR_OF_DAY) -

18、 12) * 30 + now.get(Calendar.MINUTE) / 12 * 6;/ 获得小时 Thread t = new Thread(this); t.start(); public void paint(Graphics g) / 清屏 super.paint(g); g.setColor(Color.BLACK); g.fillRect(0, 0, r * 3, r * 3); / 画圆 g.setColor(Color.WHITE); g.drawOval(x, y, r * 2, r * 2); / 秒针 g.setColor(Color.RED); int x1 =

19、(int) (r - 10) * Math.sin(rad * s); int y1 = (int) (r - 10) * Math.cos(rad * s); g.drawLine(x + r, y + r, x + r + x1, y + r - y1); / 分针 g.setColor(Color.BLUE); x1 = (int) (r - r / 2.5) * Math.sin(rad * m); y1 = (int) (r - r / 2.5) * Math.cos(rad * m); g.drawLine(x + r, y + r, x + r + x1, y + r - y1)

20、; / 时针 g.setColor(Color.CYAN); x1 = (int) (r - r / 1.5) * Math.sin(rad * h); y1 = (int) (r - r / 1.5) * Math.cos(rad * h); g.drawLine(x + r, y + r, x + r + x1, y + r - y1); / 数字 g.setColor(Color.YELLOW);int d = 29; for (int i = 1; i = 12; i+) x1 = (int) (r - 10) * Math.sin(rad * d); y1 = (int) (r - 10) * Math.cos(rad * d); g.drawString(i + , x + r + x1 - 4, x + r - y1 + 5); d += 30; / 小点 d = 0; for (int i = 0; i = 360) s = 0; m += 6; if (m = 72 | m = 144 | m = 216 | m = 288) h += 6; if (m = 360) m = 0; h += 6; if (h = 360) h = 0; this.repaint();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 公文通知

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com