java课程设计任务书.docx

上传人:b****5 文档编号:3655107 上传时间:2022-11-24 格式:DOCX 页数:19 大小:144.08KB
下载 相关 举报
java课程设计任务书.docx_第1页
第1页 / 共19页
java课程设计任务书.docx_第2页
第2页 / 共19页
java课程设计任务书.docx_第3页
第3页 / 共19页
java课程设计任务书.docx_第4页
第4页 / 共19页
java课程设计任务书.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

java课程设计任务书.docx

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

java课程设计任务书.docx

java课程设计任务书

课程设计(论文)任务书

软件学院学  院  软件工程+电子商务专  业2009-2 班

一、课程设计(论文)题目 

二、课程设计(论文)工作自2010年12月20日起至2010年12月24日止。

三、课程设计(论文)地点:

软件学院实训中心

四、课程设计(论文)内容要求:

1.本课程设计的目的

(1)掌握Java语言的程序设计方法;

(2)理论联系实际,进一步提高学生的软件开发技术;

(3)培养学生分析、解决问题的能力;

(4)提高学生实践论文撰写能力。

2.课程设计的任务及要求

1)课程设计任务:

在Applet画面中实现y=a*x2+b*x+c函数曲线的绘制;

1.通过Applet参数传递a,b,c值

2.通过Applet参数控制曲线的粗细

3.曲线的颜色通过颜色对话框选取(通过一个颜色按钮控制)

4.绘制一个小人沿曲线轨迹运动,到终点由头重新开始

2)创新要求:

1.颜色的对话框视觉效果更好

2.参数a,b,c,cuxi,可以在界面上直接修改

3)课程设计论文编写要求

(1)课程设计任务及要求

(2)设计思路--工作原理、功能规划

(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代

码及注释)、界面等。

(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。

(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,

巩固了哪些知识,有哪些提高。

(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)

(7)报告按规定排版打印,要求装订平整,否则要求返工;

(8)课设报告的装订顺序如下:

封面---任务书---中文摘要---目录----正文---附录

(代码及相关图片)

(9)严禁抄袭,如有发现,按不及格处理。

4)课程设计评分标准:

(1)学习态度:

10分;

(2)系统设计:

20分;

(3)编程调试:

20分;

(4)回答问题:

20分;

(5)论文撰写:

30分。

5)参考文献:

(1)丁振凡.Java语言实用教程(第2版)[M].北京邮电大学出版社.2008.1

(2)丁振凡.Java语言实用教程实验指导(第2版)[M].北京邮电大学出版社.2008.1

(3)杨树林等.Java语言最新实用案例教程(第2版)[M].清华大学出版社.2010.7

6)课程设计进度安排

1.准备阶段(4学时):

选择设计题目、了解设计目的要求、查阅相关资料

2.程序模块设计分析阶段(4学时):

程序总体设计、详细设计

3.代码编写调试阶段(8学时):

程序模块代码编写、调试、测试

4.撰写论文阶段(4学时):

总结课程设计任务和设计内容,撰写课程设计论文

学生签名:

2010年12月20日

课程设计(论文)评审意见

(1)学习态度(10分):

优( )、良( )、中( )、一般( )、差( );

(2)系统设计(20分):

优()、良( )、中( )、一般( )、差( );

(3)编程调试(20分):

优( )、良( )、中( )、一般( )、差( );

(4)回答问题(20分):

优( )、良( )、中( )、一般( )、差( );

(5)论文撰写(30分):

优( )、良( )、中( )、一般( )、差( );

评阅人:

   职称:

讲师

2010年12月25日

中文摘要

这是一个用java编写的可以跨平台使用的描绘一元二次方程y=a*x2+b*x+c的曲线的软件,曲线的颜色用户通过颜色对话框选取(通过一个颜色按钮控制),而且用户可以在界面上直接更改参数a,b,c以及曲线的粗细的参数cuxi。

单击相应的按钮之后马上就会看到更改后的曲线的图像。

此软件还提供了小人在曲线轨迹上运动的功能。

且小人运动到终点由头重新开始。

 

关键词:

java颜色对话框小人沿曲线轨迹运动

目 录

一、课程设计任务及要求1

二、需求分析2

三、设计思路3

四、详细设计4

五、运行调试与分析讨论5

六、设计体会与小结6

七、参考文献7

一、课程设计任务及要求

课程任务:

在Applet画面中实现y=a*x2+b*x+c函数曲线的绘制;

设计要求:

1、通过Applet参数传递a,b,c值;

        2、通过Applet参数控制曲线的粗细;

        3、曲线的颜色通过颜色对话框选取(通过一个颜色按钮控制)。

        4、绘制一个小人沿曲线轨迹运动,到终点由头重新开始。

二、需求分析

传统的有关一元二次方程教学方法,教师通常是自己板书并且画图,为了提高教学的效率,设计此软件。

设计目标

1、可以节省教师画图的时间;

2、软件画图精确;

3、该软件还有小人运动可以调节课堂气氛,使上课更加生动有趣。

功能要求

1、通过Applet参数传递a,b,c值;

2、通过Applet参数控制曲线的粗细;

3、曲线的颜色通过颜色对话框选取(通过一个颜色按钮控制)。

4、绘制一个小人沿曲线轨迹运动,到终点由头重新开始。

性能需求

1、软件可实现跨平台使用

2、画图的完整性和精确性

3、画图的时间性,能够快速的画出图形

4、要求界面适当美观,幽雅,通用性比较强

三、设计思路

工作原理

通过Line2D类计算绘制坐标轴。

借用课本例题例6-6绘制y=sinx的函数曲线的方法,通过Java2D图形绘制中的Graphics2D类进行绘制二次函数y=a*x2+b*x+c的函数曲线。

通过GeneralPath类实现点与点之间的连接。

通过Component类中的createImage()方法创建小人的图片。

(创建一幅用于双缓冲的、可在屏幕外绘制的图像)在用drawImage()方法将所画的小人加载到曲线上,在用上线程的知识实现在曲线上的运动。

在程序中设置一个x3的变量记录小人运动时的横坐标,当小人运动到终点时将起点的横坐标重新赋给x3,借此实现小人沿曲线轨迹运动,到终点由头重新开始。

将更改曲线颜色按钮、设置曲线方程的参数(a、b、c)的按钮以及更改曲线粗细(cuxi)的按钮进行注册监听,分别用一个单行文本框显示输入的数据(对应赋给a、b、c、cuxi),数据的录入通过键盘进行输入,并且所输入的参数必须为整型数据。

用一个标签显示当前所画曲线的方程的表达式。

更改曲线的颜色的对话框,通过专家写好的JColorChooser类来创建一个颜色选取对话框。

当选择好颜色之后单击“确定”曲线的颜色遂即被改变。

设置曲线方程的参数(a、b、c),在单行文本框里用键盘输入这三个参数,每改变一个参数单击相应的按钮触发按钮事件,坐标轴上的函数曲线图像也相应的被改变。

同时在标签处显示被改变后的曲线方程。

在更改曲线的粗细的文本框中输入曲线的粗细,单击“cuxi”按钮触发改变曲线粗细事件,遂即坐标轴上的曲线图像被改变。

功能规划

1、曲线y=a*x2+b*x+c的绘制

1、通过Applet参数传递a,b,c值;

2、通过Applet参数控制曲线的粗细;

3、曲线的颜色通过颜色对话框选取(通过一个颜色按钮控制)。

4、绘制一个小人沿曲线轨迹运动,到终点由头重新开始。

5、可以在界面里改变a,b,c的值以及曲线的粗细。

四、详细设计

数据分析:

此程序中输入的数据均为数值型

1.参数a,b,c,cuxi是int类型数据,并且都为私有变量,不仅可以通过Applet参数传递还可在界面中传递。

2.曲线的顶点坐标x0,y0定义为int类型数据,用于计算和控制人物图像的定位。

3.用来控制人物图像在曲线上的循环运动的变量x3,n定义为整型数据。

4.原点坐标offx,offy定义为int类型数据,通过改点来绘制坐标轴和定位二次曲线。

5.利用多边形描绘曲线时,(x1,y1)与(x2,y2)点与点连接形成曲线。

此时将x1,y1,x2,y2定义为float类型数据。

这样使曲线的绘制更加精确。

算法思路:

1.if(a!

=0){x0=-b/(2*a);}判断a的值是否为0,如果为0,则可判断此方程不是一元二次方程,而是一元一次方程。

不为0则通过计算得到一元二次方程曲线顶点的横坐标x0。

2.for(;x<=100;x++){

floatx2=10*x;

floaty2=(float)(a*x*x+b*x+c);

polly.lineTo(offx+x2,offy-y2);

}

计算曲线上各点的坐标值,再通过点与点的连接绘制曲线。

3.由坐标的原点(offx,offy)出发,通过g2d.draw(newLine2D.Float(……))计算绘制坐标轴。

利用多边形描绘曲线的方法计算a*x3*x3+b*x3+c得到曲线上各点的坐标,用moveTo()和lineTo()将各点进行连接。

同时通过计算得到人物图像在曲线上移动的坐标,然后将计算得到的坐标值传给drawImage()。

 

类设计

总体的类设计:

publicclassquXianextendsAppletimplementsActionListener

{

init()//Applet实例的初始化操作

actionPerformed()//实现单击事件的处理机制

paint()//实现在Applet上绘制坐标轴、曲线、按钮、文本框

以及标签等等元素。

repaint()//该方法嵌套在actionPerformed()方法中,单击事件源实现重新绘制曲线图像。

}

具体的类设计:

1.通过Line2D类计算绘制坐标轴。

g2d.draw(newLine2D.Float(offx-100,offy+0,offx+120,offy+0));

//画一条竖直的线段

g2d.draw(newLine2D.Float(offx+115,offy-5,offx+120,offy+0));

g2d.draw(newLine2D.Float(offx+115,offy+5,offx+120,offy+0));//利用两条斜线段画出箭头的样子

以上三条语句就绘制出x轴,同理绘制y轴。

2.通过Graphics2D类中的g2d.drawString()方法绘制出“x”和“y”的标志

g2d.drawString("x",offx+125,offy);//绘制“x”标志

g2d.drawString("y",offx,offy-105);//绘制“y”标志

3.借用课本例题例6-6绘制y=sinx的函数曲线的方法,通过Java2D图形绘制中的Graphics2D类进行绘制二次函数y=a*x2+b*x+c的函数曲线。

4.通过GeneralPath类中的moveTo()和lineTo()方法,实现点与点之间的连接。

从而绘制出曲线。

5.通过Component类中的createImage()方法创建小人的图片。

(创建一幅用于双缓冲的、可在屏幕外绘制的图像)在用drawImage()方法将所画的小人加载到曲线上。

6.通过Thread类中的sleep()方法使小人物移动时睡眠一段时间后继续移动从而实现小人沿曲线轨迹运动。

7.通过JColorChooser类来实现颜色选取对话框。

8.通过Box类把按钮组和单行文本框组绑在一起,以实现按钮以及文本框在Applet上的定位问题。

功能实现

主要代码和注释:

importjava.awt.*;

importjava.applet.*;

importjavax.swing.*;

importjava.awt.geom.*;

importjava.awt.event.*;

publicclassquXianextendsAppletimplementsActionListener{

privateinta;

privateintb;

privateintc;

privateintcuxi;

intx0,y0;//定义曲线的顶点

intx3=x0-30;//图片小人的起点横坐标

intn=0;//控制图片由终点重新开始的计数参数

Buttonchange=newButton("更改曲线颜色");//更改曲线颜色的按钮

TextFieldinput_a,input_b,input_c,input_cuxi;//输入a、b、c、cuxi参数区域

Labelres;//曲线方程显示标签

Imageimg;//创建小人的图片

ColordrawColor=Color.black;//曲线初始颜色设置

publicvoidinit()//初始化操作

{

a=Integer.parseInt(getParameter("a"));//从Applet参数中获取a的值

b=Integer.parseInt(getParameter("b"));//从Applet参数中获取b的值

c=Integer.parseInt(getParameter("c"));//从Applet参数中获取c的值

cuxi=Integer.parseInt(getParameter("cuxi"));//从applet参数中获取cuxi的值

if(a!

=0)

{

x0=-b/(2*a);//曲线顶点的横坐标

}

this.add("center",change);//增加颜色改变按钮

change.addActionListener(this);//对改变颜色的按钮注册监听

this.setLayout(newFlowLayout());//Applet管理布局设置为流式布局

//更改参数a

input_a=newTextField(4);

Buttonchuancan_a=newButton("a=");

chuancan_a.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Strings=input_a.getText();//从文本框中获取参数a

a=Integer.parseInt(s);//从文本框中获取的是String类型,必须转换为Int类型

res.setText("曲线方程:

y="+"+"+a+"x*x"+"+"+b+"x"+"+"+c);//显示一元二次方程的表达式

}

});

//更改参数b

input_b=newTextField(4);

Buttonchuancan_b=newButton("b=");

chuancan_b.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Strings=input_b.getText();

b=Integer.parseInt(s);

res.setText("曲线方程:

y="+"+"+a+"x*x"+"+"+b+"x"+"+"+c);

}

});

//更改参数c

input_c=newTextField(4);

Buttonchuancan_c=newButton("c=");

chuancan_c.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Strings=input_c.getText();

c=Integer.parseInt(s);

res.setText("曲线方程:

y="+"+"+a+"x*x"+"+"+b+"x"+"+"+c);

}

});

//更改参数cuxi

input_cuxi=newTextField(4);

Buttonchuancan_cuxi=newButton("cuxi=");

chuancan_cuxi.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Strings=input_cuxi.getText();

cuxi=Integer.parseInt(s);

}

});

res=newLabel("曲线方程:

y="+"+"+a+"x*x"+"+"+b+"x"+"+"+c);//设置显示方程的标签

add(res);//将标签加入到Applet中

//按钮组和文本框组的捆绑

Boxbox1,box2,box;

box1=Box.createVerticalBox();//创建竖直的盒子

box1.add(chuancan_a);

box1.add(chuancan_b);

box1.add(chuancan_c);

box1.add(chuancan_cuxi);

box2=Box.createVerticalBox();//创建竖直的盒子

box2.add(input_a);

box2.add(input_b);

box2.add(input_c);

box2.add(input_cuxi);

box=Box.createHorizontalBox();//创建横向的盒子

box.add(box1);

box.add(box2);

this.add(box);

/*绘制小人*/

img=createImage(25,30);//创建图片,并且定义图片的大小,宽25,高30,创建一幅用于双缓冲的、可在屏幕外绘制的图像

Graphicsdrawimg=img.getGraphics();

drawimg.setColor(Color.blue);//小人的颜色

drawimg.drawOval(5,0,10,10);//小人的头部

drawimg.drawLine(10,10,0,20);

drawimg.drawLine(10,10,20,20);

drawimg.drawLine(5,15,0,10);

drawimg.drawLine(15,15,20,10);

drawimg.drawLine(7,20,7,30);

drawimg.drawLine(13,20,13,30);

}

//单击按钮事件处理机制

publicvoidactionPerformed(ActionEvente)//实现ActionListener接口

{

Colorc=JColorChooser.showDialog(((Component)e.getSource()).getParent(),"颜色设置",Color.blue);

drawColor=c;

repaint();//重新绘制

}

publicvoidpaint(Graphicsg){

Graphics2Dg2d=(Graphics2D)g;

intoffx=200;//坐标轴原点的x

intoffy=200;//坐标轴原点的y

g2d.setPaint(Color.black);//设置坐标轴的颜色

g2d.setStroke(newBasicStroke

(2));//把坐标轴设置2个像素的线条宽度

/*以下绘制x,y坐标轴*/

g2d.draw(newLine2D.Float(offx+0,offy-100,offx+0,offy+100));

g2d.draw(newLine2D.Float(offx-5,offy-95,offx+0,offy-100));

g2d.draw(newLine2D.Float(offx+5,offy-95,offx+0,offy-100));//画y轴

g2d.draw(newLine2D.Float(offx-100,offy+0,offx+120,offy+0));

g2d.draw(newLine2D.Float(offx+115,offy-5,offx+120,offy+0));

g2d.draw(newLine2D.Float(offx+115,offy+5,offx+120,offy+0));//画x轴

g2d.drawString("x",offx+125,offy);

g2d.drawString("y",offx,offy-105);

/*利用多边形描绘曲线*/

GeneralPathpolly=newGeneralPath();//创建一个GeneralPath对象

intx=-50;

floatx1=10*x;//将x坐标值放大10倍

floaty1=(float)(a*x*x+b*x+c);

polly.moveTo(offx+x1,offy-y1);//第一个点加入到路径,通过移动到指定的坐标在路径中添加点

for(;x<=100;x++){

floatx2=10*x;

floaty2=(float)(a*x*x+b*x+c);

polly.lineTo(offx+x2,offy-y2);//将指定点加入路径,当前点与指定点连接,通过绘制一条从当前坐标到新指定坐标的直线在路径中添加点

}

g2d.setPaint(drawColor);//绘制曲线的初始颜色

g2d.setStroke(newBasicStroke(cuxi));//曲线设置为chuxi个像素的线条宽度

g2d.draw(polly);//绘制曲线

intm=a*x3*x3+b*x3+c;

g.drawImage(img,offx+10*x3-10,offy-m-15,this);//绘制小人,并定位小人在曲线上的位置,绘制指定图像中当前可用的图像。

x3++;

n++;

try{

Thread.sleep(300);

}catch(InterruptedExceptione){}

repaint();

if(n%60==0)x3=x0-30;//控制小人到终点由头重新开始

}

}

Html代码

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

当前位置:首页 > 小学教育 > 小升初

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

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