JAVA项目实验报告

时间:2024.3.31

JAVA课程项目报告

利用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:Pentium 2.8GHz以上

内存:256MB以上

硬盘空间:80G以上

操作系统:Windows XP

运行环境:JDK,JCreator

2.4 程序功能图及程序相关说明

2.4.1 主功能框     

                                            图1 程序基本框图

表1 小时钟基本功能表

 2.4.2 程序分析

程序中引入的包:

package Clock

import java.awt.Clock

import java.awt.Graphics

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

import java.util.Calendar

import java.util.GregorianCalendar

用户自定义类:

类名:Clock

作用:定义小时钟

继承的父类:JFrame

public class clock extends JFrame{

定义的对象:

ClockPaint                    

size                              

Resizable                                   

Location                        

Title                               

Visible                                

WindowListener,WindowClosing                          

主要成员方法:

public void center                   //定义小程序查看器的位置

public void actionPerformed         //定义处理异常机制

定义子类:ClockPaint

继承的父类名:JPanel

继承的接口名:Runnable

class ClockPaint extends JPanel implements Runnable

int h, m, s                           // 小时,分钟,秒

主要成员方法:

public ClockPaint

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                             // 获得小时

主要成员方法:

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 = (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)    // 时针

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 < 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 = new GregorianCalendar();

        //g.drawString(now1.get(Calendar.HOUR_OF_DAY) + ":"

       //+ now1.get(Calendar.MINUTE) + ":" + now1.get(Calendar.SECOND),

    //0, 10);

主要成员方法:

public void run

捕获异常

catch (Exception ex)

完成显示实时数据

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.主要代码:

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.GregorianCalendar;

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, 120);

        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;

    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) - 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 = (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);

        // 时针

        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 < 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 = new GregorianCalendar();

        //g.drawString(now1.get(Calendar.HOUR_OF_DAY) + ":"

                //+ now1.get(Calendar.MINUTE) + ":" + now1.get(Calendar.SECOND),

                //0, 10);

    }

    public void run() {

        while (true) {

            try {

                Thread.sleep(1000);

            } catch (Exception ex) {

            }

            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();

       }

    }

}

更多相关推荐:
项目管理实验报告

项目管理实验报告目录1味道网项目管理章程32味道网校园订餐网站系统项目的生命周期53味道网校园订餐网站系统项目的管理的工作分解结构54市场分析(SWOT分析)75新产品上市项目管理的网络图和甘特图86心得体会1…

软件项目管理实验报告全集

软件项目管理实验指导书南昌航空大学实验报告时间二一二年三月四日课程名称软件项目管理实验名称撰写南昌航空大学软件学院信息管理系统项目建议书班级姓名同组人指导教师评定签名一实验目的掌握项目建议书的格式和写作要求会结...

项目管理实训报告

20xx级项目管理实训报告小组成员班级第一章同福大酒店工程项目介绍和难点说明项目概况同福大酒店位于昆明南屏步行街是一个由同福集团投资建立的5星级豪华酒店周围一个具有百货商场甲级写字楼星级酒店大型停车场等现代化功...

项目管理实习报告

项目管理实习报告项目管理是管理学的一个分支学科,具体是指在项目活动中运用专门的知识与技能使项目能够在限定的条件下,实现或超过设定的期望。因此即将毕业的学生就应该进行项目管理的实习,通过现场的实习综合运用所学的专…

软件项目管理-实验报告

项目管理实验报告实验名称实验类型指导教师专业班级姓名学号实验地点资源平衡设计型实验软件工程1002班东六E11520xx11实验一油漆工一概述1编写目的本文档是谢洪斌根据油漆工项目的初步需求并对油漆工项目的各项...

软件项目管理实验报告

软件项目管理课程设计实验报告学院计算机科学与技术学院专业软件工程班级学号姓名指导教师时间20xx年12月实验一分解项目工作一系统设计子系统构成1功能划分图1管理端子系统图112客户端子系统图12管理端子系统功能...

软件项目管理实验报告

西华大学软件工程系上机实践报告课程名称软件项目管理指导教师夏梅宸上机实践名称Project应用上机实践编号1年级20xx级姓名邱仁学号3120xx080611517组号上机实践成绩上机实践日期20xx1113上...

project计算机项目管理实验报告

计算机辅助项目管理课程报告计算机辅助项目管理课程报告班级学号姓名指导教师完成日期第1页计算机辅助项目管理课程报告目录一项目基本信息1项目简介2项目任务关系固定成本及资源需求量3可用资源4项目管理要求二项目初始计...

软件项目管理实验报告

学生实验报告(理工类)课程名称:软件项目管理专业班级:10计算机科学与技术(NIIT)学生学号:学生姓名:所属院部:信息技术学院指导教师:20XX20XX学年第1学期金陵科技学院教务处制实验报告书写要求实验报告…

项目管理试验报告

实验二试验报告1概述11编写目的本文档是杨文灿根据乡镇政务管理信息系统项目的初步需求并对乡镇政务管理信息系统项目的各项需求进行全面分析之后做出的软件开发计划12项目背景乡镇政务管理信息系统以基于空间数据的乡镇综...

工程项目管理沙盘仿真实验报告

工程项目管理沙盘仿真实验报告一实验目的建立对工程项目管理知识体系的系统认识体验项目角色和流程增进岗位间的相互理解加深对项目管理关键成功因素的理解和认识体验项目整合管理过程和成因分析追踪提升项目管理的综合驾驭能力...

软件项目管理实验报告

软件项目管理实验报告姓名学号专业实验一Project的基本操作一实验目的1了解IT项目管理的基本概念和项目管理核心领域的一般知识2初步掌握项目管理软件MicrosoftProject的操作界面和基本操作3学会使...

项目管理实验报告(29篇)