Java课程设计报告.docx
- 文档编号:3485491
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:26
- 大小:63.68KB
Java课程设计报告.docx
《Java课程设计报告.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告.docx(26页珍藏版)》请在冰豆网上搜索。
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(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)