JAVA课程设计报告.docx

上传人:b****5 文档编号:12390486 上传时间:2023-04-18 格式:DOCX 页数:28 大小:121.06KB
下载 相关 举报
JAVA课程设计报告.docx_第1页
第1页 / 共28页
JAVA课程设计报告.docx_第2页
第2页 / 共28页
JAVA课程设计报告.docx_第3页
第3页 / 共28页
JAVA课程设计报告.docx_第4页
第4页 / 共28页
JAVA课程设计报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

JAVA课程设计报告.docx

《JAVA课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。

JAVA课程设计报告.docx

JAVA课程设计报告

《Java面向对象程序设计》

课程设计报告

(2013—2014学年第一学期)

 

专业:

软件服务

班级:

二班

姓名:

学号:

**********

指导教师:

成绩:

计算机与信息工程学院

2014

1

17

目的

本课程是软件工程、信息技术外包专业所开设的一门重要实践课程,主要要求学生掌握Java语言和面向对象在实践中的应用。

本课程设计的目的是使学生在理论学习的基础上,动手编写程序,通过应用所学习的知识,来解决一些实际的问题。

在此基础上,真正理解和掌握Java面向对象程序设计的相关理论,具备程序设计的能力。

条状图

一、设计内容

设计实现一个应用程序,创建一个条状图,用于查看一组JAVA成绩的分布情况。

程序初始化一组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.java

importjavax.swing.JFrame;

publicclassBar

{

//-----------------------------------------------------------------

//Createsthemainprogramframe.

//-----------------------------------------------------------------

publicstaticvoidmain(String[]args)

{

JFrameframe=newJFrame("BarChart");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

BarChartpanel=newBarChart();

frame.getContentPane().add(panel);

frame.pack();

frame.setVisible(true);

}

}

2.BarChart.java

importjavax.swing.JPanel;

importjava.awt.*;

importjava.util.Random;

publicclassBarChartextendsJPanel

{

Randomgenerator=newRandom();

intscore;

intl1;

intl2;

intl3;

intl4;

intl5;

publicBarChart()

{

setBackground(Color.cyan);

setPreferredSize(newDimension(400,300));

}

publicvoidpaintComponent(Graphicspage)

{

super.paintComponent(page);

for(inti=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.建一个面板介入到框架中

面板中添加按钮,标签(显示时间和点击鼠标次数)

面板中添加监听器(监听点击鼠标次数和计时)

提示:

时间差计算方法

Calendarbegin=Calendar.getInstance();//获取起点时间

Calendarend=Calendar.getInstance();//获取终点时间

longbetween=end.getTimeInMillis()-begin.getTimeInMillis()/1000;//除以1000是为了将毫秒转换成秒

三、程序运行结果(截图)

四、心得体会

1.本题需要两部分任务,倒计时Timber的调用,和记录点击鼠标的次数。

2.刚开始对题目所要用到的方法不太清楚,结合书本上的内容和上网查阅相关资料获得。

3.原本新建一个类,用来进行计时问题,但是程序出现错误。

因为对API不是很了解,上网查阅了API关于Calendar类及getInstance()方法和getTimeInMillis()方法的用法,运用监听器方法实现倒计时。

五、参考资料与致谢

参考java书本上第四章的例题4.10,按钮点击次数。

网上获取计时器Calendar类的用法。

六、源程序

1.Push.java

//********************************************************************

//PushCounter.javaAuthors:

Lewis/Loftus

//

//Demonstratesagraphicaluserinterfaceandaneventlistener.

//********************************************************************

importjavax.swing.JFrame;

publicclassPush

{

//-----------------------------------------------------------------

//Createsthemainprogramframe.

//-----------------------------------------------------------------

publicstaticvoidmain(String[]args)

{

JFrameframe=newJFrame("PushCounter");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(newPushPanel());

frame.pack();

frame.setVisible(true);

}

}

2.PushPanel.java

//********************************************************************

//PushCounterPanel.javaAuthors:

Lewis/Loftus

//

//Demonstratesagraphicaluserinterfaceandaneventlistener.

//********************************************************************

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassPushPanelextendsJPanel

{

privateintcount;

privateJButtonpush;

privateJLabellabel;

privateJLabellabel1;

privatelongbetween;

java.util.Calendarbegin=java.util.Calendar.getInstance();//获取起点时间

//-----------------------------------------------------------------

//Constructor:

SetsuptheGUI.

//-----------------------------------------------------------------

publicPushPanel()

{

count=0;

push=newJButton("Push!

");

push.addActionListener(newButtonListener());

label=newJLabel("Pushes:

"+count);

label1=newJLabel("Times:

"+between);

add(push);

add(label);

add(label1);

setPreferredSize(newDimension(300,50));

setBackground(Color.cyan);

}

//*****************************************************************

//Representsalistenerforbuttonpush(action)events.

//*****************************************************************

privateclassButtonListenerimplementsActionListener

{

//--------------------------------------------------------------

//Updatesthecounterandlabelwhenthebuttonispushed.

//--------------------------------------------------------------

publicvoidactionPerformed(ActionEventevent)

{

java.util.Calendarend=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("Timeisover!

");

}

}

}

}

挂钟

一、设计内容

设计一款如下的挂钟

提示:

Calendarcalendar=Calendar.getInstance();//获取当前时间

intyear=calendar.get(Calendar.YEAR);//获取年

intmonth=calendar.get(Calendar.MONTH);//获取月

intday=calendar.get(Calendar.DATE);//获取日

intweekDay=calendar.get((Calendar.DAY_OF_WEEK));

intam_pm=calendar.get(Calendar.AM_PM);

inthour=calendar.get(Calendar.HOUR_OF_DAY);//获取小时

intminute=calendar.get(Calendar.MINUTE);//获取分钟

intsecond=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.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.JFrame;

publicclassclock

{

publicstaticvoidmain(String[]args)

{

JFrameframe=newJFrame("clock");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(newclockPanel());

frame.pack();

frame.setVisible(true);

}

}

2.clockPanel.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.util.Calendar;

publicclassclockPanelextendsJPanel

{

privatefinaldoublePI=3.14;

privateintDELAY=1000;

privateTimertimer;

privateCalendarcalendar;

privatedoublesx,sy,mx,my,hx,hy;

privateintsecond,minute,hour;

privateints;

publicclockPanel()

{

timer=newTimer(DELAY,newclockListener());

setPreferredSize(newDimension(300,300));

setBackground(Color.white);

timer.start();

}

publicvoidpaint(Graphicsg)

{

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(newFont("TimesRoman",Font.PLAIN,20));

for(inti=1;i<13;i++)

{

intX=(int)(195+100*Math.sin((6*i*5*Math.PI)/180));

intY=(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(inta=1;a<13;a++)

{

intX=(int)(195+95*Math.sin((6*a*5*Math.PI)/180));

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

}

publicclassclockListenerimplementsActionListener

{

publicvoidactionPerformed(ActionEventevent)

{

sx=195+95*Math.sin((6*second*Math.PI)/180);

sy=195-95*Math.cos((6*second*Math.PI)/180);

mx=195+80*M

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1