JAVA项目实验报告.docx
- 文档编号:13613979
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:15
- 大小:77.77KB
JAVA项目实验报告.docx
《JAVA项目实验报告.docx》由会员分享,可在线阅读,更多相关《JAVA项目实验报告.docx(15页珍藏版)》请在冰点文库上搜索。
JAVA项目实验报告
JAVA课程项目报告
项目题目:
利用JAVA实现一个小时钟得程序
专业班级:
10软件工程
学生姓名:
闵楠
学生学号:
E01014135
利用JAVA实现一个时钟得小程序
1、 软件开发得需求分析
在当今得信息时代,时钟已经成为人们生活中必不可少得应用工具,Java语言就是当今流行得网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。
使用Java语言不仅可以实现大型企业级得分布式应用系统,还能够为小型得、嵌入式设备进行应用程序得开发。
面向对象得开发方法就是当今世界最流行得开发方法,它不仅具有更贴近自然得语义,而且有利于软件得维护与继承。
为了进一步巩固课堂上所学到得知识,深刻把握Java语言得重要概念及其面向对象得特性,锻炼我们熟练得应用面向对象得思想与设计方法解决实际问题得能力,开设了Java程序设计课程设计。
此次课程设计得题目为简单得小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具得运用,拓宽常用类库得应用。
使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言得编程思想及面向对象程序设计得方法,为今后从事实际工作打下坚实得基础。
2.具体实现
2、1设计思路
Java就是一种简单得,面向对象得,分布式得,解释得,键壮得,安全得,结构中立得,可移植得,性能很优异得,多线程得,动态得语言。
Java去掉了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、java。
小时钟除了需要编写得上述5个Java源文件所给出得类外,还需要Java系统提供得一些重要得类,如JTextField、JTextArea与File类。
2、3运行环境
CPU:
Pentium2、8GHz以上
内存:
256MB以上
硬盘空间:
80G以上
操作系统:
WindowsXP
运行环境:
JDK,JCreatorﻩ
2、4程序功能图及程序相关说明
2、4、1主功能框
图1程序基本框图
表1小时钟基本功能表
序号
文件名
主要功能
1
ServerHost
被服务器调用
2
Client
显示小时钟
3
ClientUser
被客户端调用
4
LogIn
注册登陆
5
Objecting
连接小时钟
6
Server
启动小时钟
2、4、2程序分析
程序中引入得包:
packageClock
importjava、awt、Clock
import java、awt、Graphics
import java、awt、event、WindowAdapter
importjava、awt、event、WindowEvent
importjava、util、Calendar
importjava、util、GregorianCalendar
用户自定义类:
类名:
Clock
作用:
定义小时钟
继承得父类:
JFrame
publicclassclockextendsJFrame{
定义得对象:
ClockPaint
size
Resizable
Location
Title
Visible
WindowListener,WindowClosing
主要成员方法:
public void center //定义小程序查瞧器得位置
publicvoidactionPerformed //定义处理异常机制
定义子类:
ClockPaint
继承得父类名:
JPanel
继承得接口名:
Runnable
classClockPaintextendsJPanelimplementsRunnable
int h,m,s //小时,分钟,秒
主要成员方法:
publicClockPaint
this、x =x
this、y=y
this、r=r
s =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 //获得小时
主要成员方法:
publicvoidpaint(Graphicsg) //清屏
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)
intx1=(int)((r-10)*Math、sin(rad*s))
inty1=(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) //时针
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)
intd=29
for(inti= 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(inti =0;i〈60;i++)
x1= (int) ((r- 2)* Math、sin(rad* d))
y1= (int)((r- 2)*Math、cos(rad*d))
g、drawString("、",x+r+x1 -1,x+r -y1+1)
d +=6 //显示时间
//Calendarnow1 =newGregorianCalendar();
//g、drawString(now1、get(Calendar、HOUR_OF_DAY)+ ”:
"
//+now1、get(Calendar、MINUTE)+":
"+now1、get(Calendar、SECOND),
//0,10);
主要成员方法:
publicvoidrun
捕获异常
catch (Exceptionex)
完成显示实时数据
s+=6
if(s〉=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();
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文档,一个一个进行对照学习,同时也上网查瞧了有关小时钟得相关描述,还向同学请教了,翻阅了相关得书籍。
尤其就是因为有些方法需要使用JDK1、6才行,所以在学校网络机房一开始不能运行,在安装了1、6版本后运行正常了。
4、2设计心得
花费了近一个多星期得时间,查阅了许多相关得资料,终于把这个Java小时钟,程序基本实现了该课程设计得基本要求。
在设计得过程中了解到自己得知识还就是比较有限,更肯定了自己在以后学习编程得道路上坚定不移得但由于只学习了一个学期得JAVA语言,自己水平有限,使得程序还有不就是很完善回顾起此次java,至今我仍感慨颇多,得确,从选题到定稿,从理论到实践,在整整一星期得日子里,可以说得就是苦多于甜,但就是可以学到很多很多得得东西,同时不仅可以巩固了以前所学过得知识,而且学到了很多在书本上所没有学到过得知识。
通过这次课程设计使我懂得了理论与实际相结合就是很重要得,只有理论知识就是远远不够得,只有把所学得理论知识与实践相结合起来,从理论中得出结论,才能真正掌握这门技术,也提高了自己得独立思考得能力。
在设计得过程中遇到问题,可以说得上就是困难重重,这毕竟第一次做得,难免会遇到过各种各样得问题,同时在设计得过程中发现了自己得不足之处,对以前所学过得知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过得知识重新温故.
通过此次课程设计,将我本学期所学得JAVA知识得到巩固与应用,在设计得过程中我遇到了很到问题,不过在老师与同学们得帮助与自己得思考下还就是很好得完成了。
这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。
它还让我学会了在网上查阅那些无限得资料。
让我不仅学会了书本上得知识,还让自己能够面对困难并且克服它。
5。
主要代码:
importjava、awt、Color;
importjava、awt、Graphics;
importjava、awt、event、WindowAdapter;
importjava、awt、event、WindowEvent;
importjava、util、Calendar;
importjava、util、GregorianCalendar;
importjavax、swing、JFrame;
import javax、swing、JPanel;
/**
*时间类
**
*/
publicclass Clock extendsJFrame{
/**
*
*/
privatestaticfinal long serialVersionUID= 1L;
publicClock(){
ClockPaintcp =newClockPaint(20,20,70);
this、add(cp);
this、setSize(200,200);
this、setResizable(false);
this、setLocation(260,120);
this、setTitle("小时钟”);
this、setVisible(true);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvent e){
System、exit(0);
}
});
}
publicstatic voidmain(String[]s){
newClock();
}
}
classClockPaintextends JPanelimplementsRunnable{
/**
*
*/
privatestaticfinallong serialVersionUID =1L;
intx,y, r;
int h,m,s;// 小时,分钟,秒
double rad=Math、PI/ 180;
publicClockPaint(intx,int y,int r){
this、x=x;
this、y=y;
this、r=r;
Calendarnow=newGregorianCalendar();
s= 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;// 获得小时
Threadt=newThread(this);
t、start();
}
publicvoidpaint(Graphicsg){
//清屏
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);
intx1= (int)((r -10) *Math、sin(rad*s));
inty1 =(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);
//时针
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);
intd=29;
for(inti =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(inti =0; i<60;i++){
x1 = (int)((r-2)* Math、sin(rad*d));
y1=(int)((r— 2)* Math、cos(rad *d));
g、drawString("、",x +r+x1- 1,x + r- y1+1);
d+=6;
}
// 显示时间
//Calendar now1=newGregorianCalendar();
//g、drawString(now1、get(Calendar、HOUR_OF_DAY)+”:
"
//+now1、get(Calendar、MINUTE)+":
"+ now1、get(Calendar、SECOND),
//0, 10);
}
publicvoidrun(){
while(true){
try{
Thread、sleep(1000);
}catch(Exceptionex){
}
s+=6;
if(s >=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();
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 项目 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)