Java课程设计报告.docx

上传人:b****3 文档编号:3485491 上传时间:2022-11-23 格式:DOCX 页数:26 大小:63.68KB
下载 相关 举报
Java课程设计报告.docx_第1页
第1页 / 共26页
Java课程设计报告.docx_第2页
第2页 / 共26页
Java课程设计报告.docx_第3页
第3页 / 共26页
Java课程设计报告.docx_第4页
第4页 / 共26页
Java课程设计报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Java课程设计报告.docx

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

Java课程设计报告.docx

Java课程设计报告

JAVA课程设计

一、实验目的(小四号宋体加粗)

通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。

信管11级学生的课程设计主要是Java语言程序设计的实现。

通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。

二、实验环境(如软硬件)

CPU:

Inter(R)Pentium(R)CPUP6000@1.87GHz;

显卡:

NVIDIAGeForce310M;

硬盘:

320G;

内存:

2G;

操作系统:

Windows7;

编译器:

JDK1.6

三、实验内容

1、内容一设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。

要求:

有简单的需求分析,功能设计,详细设计(程序流程),异常处理,测试,源程序清单,总结,具体格式见附件。

知识点:

掌握图形用户界面设计;

掌握基本类的设计与使用;

掌握事件处理机制;

掌握使用异常处理方法。

2、内容二利用JAVA的输入输出流,打开文件iris.txt,求出该文件每列的总和及平均值。

(注意观察iris.txt文件的分割符)

知识点:

掌握使用JAVA的输入输出流

掌握使用String类以及和基本数据类型的转换。

3、内容三:

利用蒙特卡罗仿真逼近PI的值。

知识点:

掌握使用JAVA随机采样

掌握使用String类以及和基本数据类型的转换

四、算法分析、设计与描述

1.算法分析、设计

内容一:

首先,完成计算器界面的设计,构造Calculator类,申明基本属性,包括框架属性和按钮属性。

另外在构造器中完成界面布局和各种按钮以及文本框的初始化,并且添加事件响应。

其次在构造方法中,使用String数组存储每个按钮的名称,同时使用for循环完成每个按钮的显示初始化。

最后在写出各事件,如数字事件、符号事件、等号事件,并写出各类运算函数,如加法、减法、乘法、除法,最后于主函数中调用各功能及运算

内容二:

本实验算法是要实现对iris.txt文件的读取并对此文件的每列元素进行处理(求和、求平均值)。

为保证读取文件的正确性,采用字符流读取文件,然后再按行读取,读取一行处理一行。

内容三:

本程序算法要实现模拟黄金卡猜选的第一种方法,并且要通过蒙特卡罗仿真法比较三种方法的优劣。

该算法主要是Math类产生随机数方法的运用。

通过Jframe进行布局分别用,并统计出三种猜测方法的猜中次数以及概率。

模拟方法一:

采用产生随机数的方法并判断两次产生的随机数是否相等,若相等则猜中,若不等则相反,并根据实验次数得出最后的正确结果的概率与次数。

 

2.算法描述(可插入流程图)

内容一:

用switch语句判断点击的是什么类型的按钮,是数字键则接受数字到输入框,是运算符则执行相应的运算,

加减乘除算法的描述:

用switch语句判断点击的是何种算法,定义一个变量mark存放运算符,实现对应的运算。

进制转换算法描述:

用if语句判断选中的进制对应的选择框(默认选中的是十进制),并对该事件做对应的按钮处理,用变量length判断上次选中的是哪个进制的选择框,用来进行相互转换,然后进行运算。

假如是非十进制,则先转化成十进制,然后再转化成需要的进制。

内容二:

用while循环对文件按行读取存放到字符型变量s里,只要s不为null则循环,在循环里加一个计数器count,用于记录文件的行数用于求平均值,每行按分隔符\t进行行的分割,把每行的第i个元素累加到浮点型数组sum[i]里,读取完后在进行求平均值的运算。

最后打印出每列总和及每列平均值。

内容三:

利用圆与其外接正方形面积之比为pi/4的关系,通过产生大量均匀分布的二维点,计算落在单位圆和单位正方形的数量之比再乘以4便得到pi的近似值。

样本点越多,计算出的数据将会越接近真识的pi(前提时样本是“真正的”随机分布)。

五、程序设计

1.程序设计的基本思路

内容一:

先在主函数里把计算器的布局写好,然后写一个设置各个按钮行为的方法,在这个方法里给出一个最初发生的Event对象,由它来判断鼠标点击算法操作(加、减、乘除等),判断好了,然后就把文本框制空,然后定义一个int变量mark,mark用来保存当前进行何种运算。

用户另输数字,点击“=”在“=”操作里判断mark值,根据mark值判断是哪种算法,然后算出来,把结果射入文本框中,在文本框不为空时,改变进制选择框,则进行进制转换,把结果射入文本框中。

内容二:

在主函数里把要用到的变量定义好,然后尝试开始读取文件,并对读取的数据相应的进行处理,若读取失败则打印“文件读取失败”。

 

2.程序代码

内容一:

importjava.awt.*;

importjava.awt.event.*;

classThis_number_too_bigextendsException{}//自定义的一个结果溢出异常类

classJsq2011extendsFrameimplementsItemListener,ActionListener

{publicJsq2011()

{addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{dispose();

System.exit(0);

}

});

}

staticJsq2011mainFrame=newJsq2011();

staticLabellab=newLabel("0");//创建标签

staticPanelpnl1=newPanel(newGridLayout(4,3,3,3));//网格布局

staticPanelpnl2=newPanel(newGridLayout(4,1,3,3));

staticPanelpnl3=newPanel(newGridLayout(1,2,3,3));

staticPanelpnl4=newPanel(newGridLayout(6,1,3,3));

staticButtonbt9=newButton("9");

staticButtonbt8=newButton("8");

staticButtonbt7=newButton("7");

staticButtonbt6=newButton("6");

staticButtonbt5=newButton("5");

staticButtonbt4=newButton("4");

staticButtonbt3=newButton("3");

staticButtonbt2=newButton("2");

staticButtonbt1=newButton("1");

staticButtonbt0=newButton("0");

staticButtonbtdot=newButton(".");

staticButtonbtequ=newButton("=");

staticButtonbtadd=newButton("+");

staticButtonbtsub=newButton("-");

staticButtonbtmul=newButton("*");

staticButtonbtdev=newButton("/");

staticButtonbtA=newButton("A");

staticButtonbtB=newButton("B");

staticButtonbtC=newButton("C");

staticButtonbtD=newButton("D");

staticButtonbtE=newButton("E");

staticButtonbtF=newButton("F");

staticCheckboxckb8=newCheckbox("八进制");//创建八进制选择框

staticCheckboxckb10=newCheckbox("十进制");

staticCheckboxckb16=newCheckbox("十六进制");

staticButtonbtc=newButton("clear");

staticButtonbtt=newButton("backspace");

publicintnumber=0,length=18;

/**number是用来记录输入的数字个数,

*length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制**/

publiccharmark='n';/**设置运算符号为没有即为'n',它的值是'+''-''*''/'**/

publicdoubledata=0;/**设置运算数据为零**/

publiccharch;/**用来临时存放所按按钮的第一个字符**/

publicbooleanRefresh=false;/**设置lab是否要在输入数据的时候刷新,初始为否**/

publicstaticvoidmain(Stringargs[])

{System.out.println("StartingJsq2011...");

lab.setAlignment(Label.RIGHT);//标签上名称右对齐

lab.setBackground(Color.white);

lab.setForeground(Color.BLUE);

lab.setFont(newFont("Serief",Font.BOLD,20));

lab.setBounds(20,33,330,40);

mainFrame.add(lab);

btadd.setForeground(Color.red);

btsub.setForeground(Color.red);

btmul.setForeground(Color.red);

btdev.setForeground(Color.red);

btA.setForeground(Color.blue);

btB.setForeground(Color.blue);

btC.setForeground(Color.blue);

btD.setForeground(Color.blue);

btE.setForeground(Color.blue);

btF.setForeground(Color.blue);

btc.setBackground(Color.red);

btt.setBackground(Color.red);

bt0.setBackground(newColor(200,250,200));

bt1.setBackground(newColor(200,250,200));

bt2.setBackground(newColor(200,250,200));

bt3.setBackground(newColor(200,250,200));

bt4.setBackground(newColor(200,250,200));

bt5.setBackground(newColor(200,250,200));

bt6.setBackground(newColor(200,250,200));

bt7.setBackground(newColor(200,250,200));

bt8.setBackground(newColor(200,250,200));

bt9.setBackground(newColor(200,250,200));

btdot.setBackground(newColor(200,250,200));

btequ.setBackground(newColor(200,250,200));

btadd.setBackground(newColor(200,250,200));

btmul.setBackground(newColor(200,250,200));

btdev.setBackground(newColor(200,250,200));

btsub.setBackground(newColor(200,250,200));

btA.setBackground(newColor(200,250,200));

btB.setBackground(newColor(200,250,200));

btC.setBackground(newColor(200,250,200));

btD.setBackground(newColor(200,250,200));

btE.setBackground(newColor(200,250,200));

btF.setBackground(newColor(200,250,200));

CheckboxGroupgrp=newCheckboxGroup();

ckb8.setCheckboxGroup(grp);

ckb10.setCheckboxGroup(grp);

ckb16.setCheckboxGroup(grp);

ckb8.setBounds(30,75,80,25);

ckb10.setBounds(140,75,80,25);

ckb16.setBounds(250,75,80,25);

ckb8.setState(false);

ckb10.setState(true);//设置初始状态为选中十进制

ckb16.setState(false);

mainFrame.add(ckb8);

mainFrame.add(ckb10);

mainFrame.add(ckb16);

pnl1.setBounds(90,160,180,160);

pnl2.setBounds(280,160,70,160);

pnl3.setBounds(90,110,260,40);

pnl4.setBounds(20,110,60,210);

pnl1.add(bt7);

pnl1.add(bt8);

pnl1.add(bt9);

pnl1.add(bt4);

pnl1.add(bt5);

pnl1.add(bt6);

pnl1.add(bt1);

pnl1.add(bt2);

pnl1.add(bt3);

pnl1.add(bt0);

pnl1.add(btdot);

pnl1.add(btequ);

pnl2.add(btadd);

pnl2.add(btsub);

pnl2.add(btmul);

pnl2.add(btdev);

pnl3.add(btt);

pnl3.add(btc);

pnl4.add(btA);

pnl4.add(btB);

pnl4.add(btC);

pnl4.add(btD);

pnl4.add(btE);

pnl4.add(btF);

btA.enable(false);

btB.enable(false);

btC.enable(false);

btD.enable(false);

btE.enable(false);

btF.enable(false);

mainFrame.add(pnl1);

mainFrame.add(pnl2);

mainFrame.add(pnl3);

mainFrame.add(pnl4);

mainFrame.setResizable(false);

mainFrame.setLayout(null);

//mainFrame.setSize(375,340);

mainFrame.setBounds(100,100,370,340);

mainFrame.setBackground(Color.LIGHT_GRAY);

mainFrame.setTitle("计算器");

mainFrame.setVisible(true);

ckb8.addItemListener(mainFrame);

ckb10.addItemListener(mainFrame);

ckb16.addItemListener(mainFrame);

/**把事件监听者向各个组键注册**/

bt1.addActionListener(mainFrame);

bt2.addActionListener(mainFrame);

bt3.addActionListener(mainFrame);

bt4.addActionListener(mainFrame);

bt5.addActionListener(mainFrame);

bt6.addActionListener(mainFrame);

bt7.addActionListener(mainFrame);

bt8.addActionListener(mainFrame);

bt9.addActionListener(mainFrame);

bt0.addActionListener(mainFrame);

btadd.addActionListener(mainFrame);

btsub.addActionListener(mainFrame);

btmul.addActionListener(mainFrame);

btdev.addActionListener(mainFrame);

btt.addActionListener(mainFrame);

btc.addActionListener(mainFrame);

btdot.addActionListener(mainFrame);

btequ.addActionListener(mainFrame);

btA.addActionListener(mainFrame);

btB.addActionListener(mainFrame);

btC.addActionListener(mainFrame);

btD.addActionListener(mainFrame);

btE.addActionListener(mainFrame);

btF.addActionListener(mainFrame);

}/**endmain()mothed**/

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

/**checkbox事件的处理**/

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

publicvoiditemStateChanged(ItemEvente)

{mark='n';

Refresh=false;/**规定当进制转换时以前输入的运算符失效**/

if(ckb8.getState()==true)/*八进制选择框处于选中状态*/

{btA.enable(false);/*在八进制的情况下对有些按件的管理*/

btB.enable(false);

btC.enable(false);

btD.enable(false);

btE.enable(false);

btF.enable(false);

bt9.enable(false);

bt8.enable(false);

btdot.enable(false);

btadd.enable(false);

btmul.enable(false);

btsub.enable(false);

btdev.enable(false);

btequ.enable(false);

if(length==18)//即上次选择的是十进制

{lab.setText(goto10_8(lab.getText()));

number=lab.getText().length();

}

if(length==14)//上次选择的是十六进制

{lab.setText(goto_10(lab.getText(),16L));

lab.setText(goto10_8(lab.getText()));

number=lab.getText().length();

}

length=19;/**在八进制下允许输入数字个数最多为19位**/

}

if(ckb10.getState()==true)//十进制

{btA.enable(false);/**在十进制的情况下对有些按件的管理**/

btB.enable(false);

btC.enable(false);

btD.enable(false);

btE.enable(false);

btF.enable(false);

bt9.enable(true);

bt8.enable(true);

btdot.enable(true);

btadd.enable(true);

btmul.enable(true);

btsub.enable(true);

btdev.enable(true);

btequ.enable(true);

if(length==19)

{lab.setText(goto_10(lab.getText(),8L));

number=lab.getText().length();

}

if(length==14)

{lab.setText(goto_10(lab.getText(),16L));/**进制转换成十进制**/

number=lab.getText().length();

}

length=18;/*在十进制下允许输入数字个数最多为18位*/

}

if(ckb16.getState(

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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