聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本

Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本

时间:    下载该word文档

JAVA课程设计

一、实验目的(小四号宋体加粗)
通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。信科09级学生的课程设计主要是Java语言程序设计的实现。通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。

二、实验环境(如软硬件)
CPUInter(RPentium(RCPUP6000显卡:NVIDIAGeForce310M硬盘:320G内存:2G
操作系统:Windows7编译器:JDK三、实验内容
1、内容一设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。
要求:有简单的需求分析,功能设计,详细设计(程序流程),异常处理,测试,源程序清单,总结,具体格式见附件。
知识点:
掌握图形用户界面设计;掌握基本类的设计与使用;掌握事件处理机制;掌握使用异常处理方法。
2、文件的分割符)知识点
掌握使用JAVA的输入输出流
掌握使用String类以及和基本数据类型的转换。
3、内容三“湖南经视台猜“黄金卡”节目简介如下:
有三张卡,其中两张银卡,一张黄金卡,放在把背面提供给竞猜者来猜,本节目存在三种选择方法。
方法一:在竞猜者随机三选一后,不再改变选择的结果;方法二:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者再重新在剩下的两张卡中随机选择。
方法三:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者改变原来的选择,选取剩下的唯一那张没有翻开的卡。
要求:
1请用图形用户界面设计方法一的竞猜过程,2利用蒙特卡洛仿真方法验证湖南经视台猜“黄金卡”节目三种不同方法的

湖南商学院北津学院java课程设计报告
优劣。知识点:
掌握事件处理机制;掌握随机采样的方法;掌握图形用户界面设计;
(注:采用图形用户方式设计)
4、内容四:设计一个记事本,菜单中要求有文件,编辑,和帮助。文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。
知识点:
掌握图形用户界面设计;
掌握基本类的设计与菜单设计;掌握事件处理机制;掌握使用异常处理方法。
5内容五:一个多线程的动画

知识点:
Java中线程的实现;
线程的优先级、调度与同步;
设计步骤:窗口布局设计设计线程类
MainPanel类的设计
实验效果为:


程序功能:
每点击一次“Start”按钮,就会在画面上出现一个新的小球。这些小球按照一定的线路移动,而且小球的移动速度是相同的。

236

湖南商学院北津学院java课程设计报告
四、算法分析、设计与描述1.算法分析、设计
内容一:
首先,完成计算器界面的设计,构造Calculator类,申明基本属性,包括框架属性和按钮属性。另外在构造器中完成界面布局和各种按钮以及文本框的初始化,并且添加事件响应。其次在构造方法中,使用String数组存储每个按钮的名称,同时使用for循环完成每个按钮的显示初始化。最后在写出各事件,如数字事件、符号事件、等号事件,并写出各类运算函数,如加法、减法、乘法、除法,最后于主函数中调用各功能及运算
内容二:
并对此文件的每列元素进行处理(求和、求平均值)。为保证读取文件的正确性,采用字符流读取文件,然后再按行读取,读取一行处理一行。

内容三:
本程序算法要实现模拟黄金卡猜选的第一种方法,并且要通过蒙特卡罗仿真法比较三种方法的优劣。
该算法主要是Math类产生随机数方法的运用。通过Jframe进行布局分别用,统计出三种猜测方法的猜中次数以及概率。
模拟方法一:采用产生随机数的方法并判断两次产生的随机数是否相等,若相等则猜中,若不等则相反,并根据实验次数得出最后的正确结果的概率与次数。

内容四:
在算法设计上,先设计出计算器面板,菜单放在菜单条里,菜单项放在菜JScrollPane,JMenu,JTextPane,JMenuBar用来用菜单,菜单包括“文件”“编辑”“帮助”JMenuItem用来用菜单子项,JTextPane主要用来输入文本。

内容五:
在本程序中,创建一个窗体对象,把小球所在的内容面板添加到窗体中,把按钮所在的面板添加到内容面板的下方。创建一个线程类,创建了小球对象的同时,创建并启动线程。以实现多线程动画的操作。

2.算法描述(可插入流程图)
内容一
switch语句判断点击的是什么类型的按钮,是数字键则接受数字到输入框,是运算符则执行相应的运算,
加减乘除算法的描述:switch语句判断点击的是何种算法,定义一个变量mark存放运算符,实现对应的运算。
336

湖南商学院北津学院java课程设计报告
进制转换算法描述:if语句判断选中的进制对应的选择框(默认选中的是十进制)并对该事件做对应的按钮处理,用变量length判断上次选中的是哪个进制的选择框,用来进行相互转换,然后进行运算。假如是非十进制,则先转化成十进制,然后再转化成需要的进制。

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

内容三:
按钮界面:黄金卡中要设计到相应的一个开始游戏的按钮和一个重新开始的按钮,我采用的是JButton,分别建立的一个有“开始”和“重玩”文字的按钮。文本框设计:JTextField来构建相应的文本框,JTextField()来构建单行文本框,以满足程序的要求和图形设计。颜色背景及字体的设定:JLabel对象可以显示文本、图像或同时显示二者。

内容四:
记事本设计图如下,前先要创建一个Jishiben的类继承JFrame类作为最底层的容器。在构建Jishiben类时要初使化容器,初使化组件。

436

湖南商学院北津学院java课程设计报告

内容五
事件的面板要有两个按钮,Start按钮用来创建小球和启动线程,Close按钮用来关闭窗口结束进程。程序中小球类(ClassBall)有多个方法:Ball()构建小球的方法;draw()画填充小球的方法;move()小球移动的方法,当小球移动到屏幕边界则反弹。循环对线程进行处理:每隔5毫秒运行一次。运行一次小球前进一个像素。
五、程序设计
1.程序设计的基本思路内容一:
先在主函数里把计算器的布局写好,然后写一个设置各个按钮行为的方法,在这个方法里给出一个最初发生的Event对象,由它来判断鼠标点击算法操作(加、减、乘除等)判断好了,然后就把文本框制空,然后定义一个int变量markmark用来保存当前进行何种运算。用户另输数字,点击“=在“=”操作里判断mark值,根据mark值判断是哪种算法,然后算出来,把结果射入文本框中,在文本框不为空时,改变进制选择框,则进行进制转换,把结果射入文本框中。

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

内容三:
设计中,把布局设置为空布局,以设置各按钮的准确位置,利用JButtonJLavelJTextField设定界面,设定出黄金卡图形界面的布局等因素,以此满足程序的基本设计要求。
内容四:
536

湖南商学院北津学院java课程设计报告
启动程序
输入文字



NewEdit
openFile
SaveList
内容五:
在窗体构造函数BounceFrame(对窗体进行初始化,单机start按钮,就马上调用创建小球,启动线程的方法addBall(,当小球运动到边界的时候要反弹,并重画面板。单机Close按钮则退出程序。

636
ActionLi
退出关闭程序

CutActio


CopyActi


Help.sho
PasteAct


湖南商学院北津学院java课程设计报告
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是用来记录输入的数字个数,
736

湖南商学院北津学院java课程设计报告
*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;
836

湖南商学院北津学院java课程设计报告
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;
936

湖南商学院北津学院java课程设计报告
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;
1036

湖南商学院北津学院java课程设计报告
**/


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(==true//十六进制
{btA.enable(true;/*在十六进制的情况下对有些按件的管理*/btB.enable(true;btC.enable(true;btD.enable(true;btE.enable(true;btF.enable(true;
1136

湖南商学院北津学院java课程设计报告
bt9.enable(true;bt8.enable(true;btdot.enable(false;btadd.enable(false;btmul.enable(false;btsub.enable(false;btdev.enable(false;btequ.enable(false;if(length==18
{lab.setText(goto10_16(lab.getText(;number=lab.getText(.length(;}
if(length==19
{lab.setText(goto_10(lab.getText(,8L;lab.setText(goto10_16(lab.getText(;number=lab.getText(.length(;}
//将其他进制转换成十六进制
length=14;//在十六进制下允许输入数字个数最多为14}
}//enditemStateChanged(ItemEventemethod/********************//**按钮事件的处理**//********************/
publicvoidactionPerformed(ActionEventm{Buttonbtn=(Buttonm.getSource(;etLabel(.charAt(0;
Objecttemp=m.getSource(;switch(ch{case'c':{lab.setText("0";number=0;mark='n';Refresh=false;}break;//初始化
case'1':enter(;break;case'2':enter(;break;case'3':enter(;break;case'4':enter(;break;case'5':enter(;break;case'6':enter(;break;case'7':enter(;break;case'8':enter(;break;case'9':enter(;break;case'0':
{if(Refresh==true
{lab.setText("0";number=0;Refresh=false;}
if(lab.getText(.charAt(0=='0'&&lab.getText(.length(==1break;
if(number
{number++;lab.setText(lab.getText(+ch;}
elsebreak;
1236

湖南商学院北津学院java课程设计报告
}break;
case'A':enter(;break;case'B':enter(;break;case'C':enter(;break;case'D':enter(;break;case'E':enter(;break;case'F':enter(;break;case'.':
{if(Refresh==true
{lab.setText("0";number=0;Refresh=false;}
if(lab.getText(.indexOf('.'==-1
{number++;lab.setText(lab.getText(+ch;}
elsebreak;}break;case'b':
{if(number==0break;else
{if(--number==0
{lab.setText("0";number=0;}else
{if(number!=1
lab.setText(lab.getText(.substring(0,number;else
lab.setText(Character.toString(lab.getText(.charAt(0;
}}
}break;
case'+':try{js(;}
catch(This_number_too_bige
{lab.setText("0";number=0;mark='n';
Refresh=false;System.out.println("Thenumberistoobig";/**如果出现异常则初始化效果如同clear**/}break;
case'-':try{js(;}
catch(This_number_too_bige
{lab.setText("0";number=0;mark='n';
Refresh=false;System.out.println("Thenumberistoobig";}break;
case'*':try{js(;}
catch(This_number_too_bige
{lab.setText("0";number=0;mark='n';
Refresh=false;System.out.println("Thenumberistoobig";}break;
1336

湖南商学院北津学院java课程设计报告
case'/':try{js(;}
catch(This_number_too_bige
{lab.setText("0";number=0;mark='n';
Refresh=false;System.out.println("Thenumberistoobig";}break;
case'=':try{js(;}
catch(This_number_too_bige
{lab.setText("0";number=0;mark='n';
Refresh=false;System.out.println("Thenumberistoobig";}break;
}
}//endactionPerformed(ActionEventemethod/***********************************//**八进制或十六进制转换成十进制I**//***********************************/publicStringgoto_10(Strings,longl
/**参数s是要转换的字符串,由于输入的控制,保证了字符串的合法性;**//**参数l使用来设置是将8进制还是16进制转换成10进制,它的有效值为816**/
{
Stringstr=s;//用来转换的字符串longj=l;//表示进制
longlg=0,jing=1;//lg用来记录权乘和,jing用来记录位权charcha;//临时记录要转换的字符for(inti=1;i<=str.length(;i++{cha=str.charAt(str.length(-i;switch(cha
{case'1':lg=lg+1*jing;break;case'2':lg=lg+2*jing;break;case'3':lg=lg+3*jing;break;case'4':lg=lg+4*jing;break;case'5':lg=lg+5*jing;break;case'6':lg=lg+6*jing;break;case'7':lg=lg+7*jing;break;case'8':lg=lg+8*jing;break;case'9':lg=lg+9*jing;break;case'A':lg=lg+10*jing;break;case'B':lg=lg+11*jing;break;case'C':lg=lg+12*jing;break;case'D':lg=lg+13*jing;break;case'E':lg=lg+14*jing;break;case'F':lg=lg+15*jing;break;}
jing*=j;//位权升一级,为下次使用做好准备}
returnLong.toString(lg;}//endStringgoto_10(method/**************************//**十进制转换成十六进制**//**************************/
1436

湖南商学院北津学院java课程设计报告
publicStringgoto10_16(Strings
/**参数s是要转换的字符串,由于输入的控制,保证了字符串的合法性;*/{Stringstr=s;//用来转换的字符串
Stringst=newString(;//用来记录16进制值的字符串longch;//每次取余有的值
intk;//将每次取余有的值转换成整形,用来选择转换的16进制字符longlg;//用来转换的10进制数
if(str.charAt(0=='-'//如果有负号则出去负号str=str.substring(1,str.length(-1;
if(str.indexOf('E'!=-1//如果是科学计数值则出去小数点和E后面的数str=str.charAt(0+str.substring(2,str.indexOf('E';
if(str.indexOf('.'!=-1//如果有小数点则出去小数点及小数点后面的内容str=str.substring(0,str.indexOf('.';
lg=Long.parseLong(str;//将简化的字符串转化为长整形给lgwhile(lg>=16{ch=lg%16;k=(intch;switch(k
{case10:st="A"+st;break;case11:st="B"+st;break;case12:st="C"+st;break;case13:st="D"+st;break;case14:st="E"+st;break;case15:st="F"+st;break;
default:st=Long.toString(ch+st;}
lg=lg/16;}
k=(intlg;switch(k
{case10:st="A"+st;break;case11:st="B"+st;break;case12:st="C"+st;break;case13:st="D"+st;break;case14:st="E"+st;break;case15:st="F"+st;break;
default:st=Long.toString(lg+st;}
returnst;
}//endgoto10_16(method/************************//**十进制转换成八进制**//************************/
publicStringgoto10_8(Strings{Stringstr=s;
Stringst=newString(;longj=8,ch;longlg;
if(str.charAt(0=='-'//如果有负号则出去负号h(-1;
1536

湖南商学院北津学院java课程设计报告
if(str.indexOf('E'!=-1//如果是科学计数值则出去小数点和E后面的数str=str.charAt(0+str.substring(2,str.indexOf('E';
if(str.indexOf('.'!=-1//如果有小数点则出去小数点及小数点后面的内容str=str.substring(0,str.indexOf('.';lg=Long.parseLong(str;while(lg>=j{ch=lg%j;
st=Long.toString(ch+st;lg=lg/j;}
st=Long.toString(lg+st;returnst;
}//endgoto10_8(method/**************//**输入字符**//**************/publicvoidenter({if(Refresh==true
/**如果已经设置了运算符则在下一次输入数据的时候要把以前lab的内容清除掉*/
{lab.setText("0";number=0;Refresh=false;}
if(lab.getText(.charAt(0=='0'&&lab.getText(.length(==1/**如果lab的内容为0则,lab的内容将被所输入的字符代替。否则直接在lab的内容后面加上所输入的字符**/
{lab.setText(Character.toString(ch;number++;}
elseif(number
{number++;lab.setText(lab.getText(+ch;}
}//endenter(method
/********************************//**用来处理按了运算符后的计算**//********************************/
publicvoidjs(throwsThis_number_too_big//指定由method抛出异常{if(mark=='n'//没有运算符
{mark=ch;//,则设置运算符为刚刚输入的字符,
data=Double.parseDouble(lab.getText(;//则设置运算数据为lab的值Refresh=true;//则设置下一次输入的时候要刷新lab}
else//如果采用的是连续运算(即没有使用'='号)则运行下面的语句{switch(mark//根据运算符计算结果,并把结果保存到data
{case'+':data+=Double.parseDouble(lab.getText(;break;case'-':data-=Double.parseDouble(lab.getText(;break;case'*':data*=Double.parseDouble(lab.getText(;break;case'/':data/=Double.parseDouble(lab.getText(;break;}
lab.setText(Double.toString(data;//显示运算结果mark=ch;//设置运算符为刚刚按下的运算符
Refresh=true;//则设置下一次输入的时候要刷新labnumber=lab.getText(.length(;//设置输入的字符个数
1636

湖南商学院北津学院java课程设计报告
**/
if(data>Double.MAX_VALUE
/**如果data超过double类型的最大值则抛出自定义的一个异常类
{thrownewThis_number_too_big(;}}
}//endjs(method
publicvoidanswer(throwsThis_number_too_big//指定由method抛出异常{if(mark=='n'{}else
{switch(mark
{case'+':data+=Double.parseDouble(lab.getText(;break;case'-':data-=Double.parseDouble(lab.getText(;break;case'*':data*=Double.parseDouble(lab.getText(;break;case'/':data/=Double.parseDouble(lab.getText(;break;}
lab.setText(Double.toString(data;mark='n';}
if(data>Double.MAX_VALUE//如果data超过double类型的最大值则抛出自定义的一个异常类
{thrownewThis_number_too_big(;}
Refresh=false;
number=lab.getText(.length(;}//endanswer(method}//endclassJsp2003

内容二:
importjava.io.*;importjava.util.*;
importjava.text.DecimalFormat;publicclassIostream
{publicstaticvoidmain(Stringargs[]
{System.out.println("读取文件iris.txt..."+"\n";floatsum[]=newfloat[4];//存放所有列的和floataverage[]=newfloat[4];//存放平均值intcount=0;//用来记录文件的行数
Stringstr[]=newString[4],s;//文件读取缓冲区tryxt";
1736

湖南商学院北津学院java课程设计报告
BufferedReaderbr=newBufferedReader(file;s=br.readLine(;
while(s!=null//循环读取所有的数{inti=0;
StringTokenizertokenizer=newStringTokenizer(s,"\t";
while(tokenizer.hasMoreTokens({str[i]=tokenizer.nextToken(;floattemp=Float.parseFloat(str[i];//把字符型数转换成数字类型
sum[i]=sum[i]+temp;i++;}
s=br.readLine(;count++;}
br.close(;file.close(;}
catch(Exceptione{System.out.print("文件读取错误";}for(intk=0;k<4;k++
{average[k]=sum[k]/count;
System.out.println(""+(k+1+"列的和是:"+sum[k];
System.out.println(""+(k+1+":"+average[k]+"\n";
}}}
内容三:
importjava.awt.*;
importjava.awt.event.*;importjavax.swing.*;
publicclassHuangjinkaextendsJFrameimplementsActionListener{privateJPaneljPanel1=newJPanel(;//创建面板privateJLabeljLabel1=newJLabel(;privateJLabeljLabel2=newJLabel(;privateJLabeljLabel3=newJLabel(;privateJLabeljLabel4=newJLabel(;privateJLabeljLabel5=newJLabel(;privateJLabeljLabel6=newJLabel(;privateJLabeljLabel7=newJLabel(;privateJLabeljLabel8=newJLabel(;privateJLabeljLabel9=newJLabel(;
privateJTextFieldjTextField1=newJTextField(;privateJTextFieldjTextField2=newJTextField(;
1836

湖南商学院北津学院java课程设计报告
privateJTextFieldjTextField3=newJTextField(;privateJTextFieldjTextField4=newJTextField(;privateJTextFieldjTextField5=newJTextField(;privateJTextFieldjTextField6=newJTextField(;privateJTextFieldjTextField7=newJTextField(;privateJButtonjButton1=newJButton(;privateJButtonjButton2=newJButton(;privateJButtonjButton3=newJButton(;privateJButtonjButton4=newJButton(;privateJButtonjButton5=newJButton(;publicHuangjinka({init(;}
privatevoidinit(
{jPanel1.setBackground(Color.LIGHT_GRAY;jPanel1.setLayout(null;//设置为空布局,自己可以准确的设置按钮的位置
jLabel1.setForeground(Color.red;
jLabel1.setText("蒙特卡罗法仿真黄金卡抽选";
jLabel1.setFont(newjava.awt.Font("幼圆",Font.BOLD,20;jLabel1.setBounds(128,20,256,20;jPanel1.add(jLabel1;nd(Color.blue;
jLabel2.setText("方法一猜中次数:";jLabel2.setBounds(60,120,100,20;jPanel1.add(jLabel2;
jLabel3.setForeground(Color.blue;jLabel3.setText("方法二猜中次数:";jLabel3.setBounds(60,170,100,20;jPanel1.add(jLabel3;
jLabel4.setForeground(Color.blue;jLabel4.setText("方法三猜中次数:";jLabel4.setBounds(60,220,100,20;jPanel1.add(jLabel4;jLabel5.setForeground(Color.blue;jLabel5.setText("请输入测试次数:";jLabel5.setBounds(60,70,100,32;jPanel1.add(jLabel5;
jLabel7.setForeground(Color.blue;jLabel7.setText("概率:";
jLabel7.setBounds(260,120,40,20;jPanel1.add(jLabel7;
jLabel8.setForeground(Color.blue;
1936

湖南商学院北津学院java课程设计报告
jLabel8.setText("概率:";
jLabel8.setBounds(260,170,40,20;jPanel1.add(jLabel8;
jLabel9.setForeground(Color.blue;jLabel9.setText("概率:";
jLabel9.setBounds(260,220,40,20;jPanel1.add(jLabel9;
jLabel6.setForeground(Color.red;
jLabel6.setText("请选择下面一张卡片:";
jLabel6.setFont(newjava.awt.Font("幼圆",Font.BOLD,20;jLabel6.setBounds(140,300,220,32;jPanel1.add(jLabel6;
jTextField1.setBounds(165,120,80,25;jPanel1.add(jTextField1;
jTextField1.setEditable(false;//设置文本框为不可编辑jTextField2.setBounds(165,170,80,25;jPanel1.add(jTextField2;jTextField2.setEditable(false;
jTextField3.setBounds(165,220,80,25;jPanel1.add(jTextField3;
jTextField3.setEditable(false;
jTextField4.setBounds(165,70,80,25;jPanel1.add(jTextField4;
jTextField5.setBounds(300,120,100,25;jPanel1.add(jTextField5;jTextField5.setEditable(false;
jTextField6.setBounds(300,170,100,25;jPanel1.add(jTextField6;jTextField6.setEditable(false;
jTextField7.setBounds(300,220,100,25;jPanel1.add(jTextField7;jTextField7.setEditable(false;
jButton1.setBackground(Color.red;jButton1.setBounds(300,65,100,34;jButton1.setForeground(Color.blue;jButton1.setText("开始";jPanel1.add(jButton1;/****模拟方法一的组件****/
jButton2.setBackground(Color.cyan;jButton2.setBounds(20,350,100,40;d;
2036

湖南商学院北津学院java课程设计报告
jButton2.setText("选我";jPanel1.add(jButton2;
jButton3.setBackground(Color.cyan;jButton3.setBounds(130,350,100,40;jButton3.setForeground(Color.red;jButton3.setText("选我";jPanel1.add(jButton3;
jButton4.setBackground(Color.cyan;jButton4.setBounds(240,350,100,40;jButton4.setForeground(Color.red;jButton4.setText("选我";jPanel1.add(jButton4;
jButton5.setBackground(Color.red;//重新开始按钮的设置jButton5.setBounds(350,350,100,40;jButton5.setForeground(Color.blue;jButton5.setText("重玩";jPanel1.add(jButton5;/**************************/this.add(jPanel1;
this.setSize(500,450;
this.setTitle("蒙特卡罗法仿真黄金卡游戏";
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE;//关闭程序
this.setVisible(true;
jButton1.addActionListener(this;//监视"开始"按钮jTextField4.addActionListener(this;//监视输入文本框jButton2.addActionListener(this;jButton3.addActionListener(this;jButton4.addActionListener(this;jButton5.addActionListener(this;}
publicvoidactionPerformed(ActionEvente
{if(e.getSource(==jButton1||e.getSource(==jTextField4{Stringnumber=jTextField4.getText(;longcount1=0;longcount2=0;longcount3=0;
int[]cards={0,0,1};
longtimes=Long.parseLong(number;for(longi=0L;i
{intrandom1=(int(Math.random(*3;//表示第一次抽取的牌
intcard1=cards[random1];count1+=card1;
2136

湖南商学院北津学院java课程设计报告
intrandom2=(int(Math.random(*2;//表示第二次重新选牌之后的牌
intcard2=random2;count2+=card2;
intcard3=Math.abs(card1-1;//表示第二次换选唯一没选的那张牌
count3+=card3;}
jTextField1.setText(String.valueOf(count1;jTextField2.setText(String.valueOf(count2;jTextField3.setText(String.valueOf(count3;
jTextField5.setText(String.valueOf(Float.parseFloat(String.valueOf(count1/Float.parseFloat(jTextField4.getText(;

jTextField6.setText(String.valueOf(Float.parseFloat(String.valueOf(count2/Float.parseFloat(jTextField4.getText(;

jTextField7.setText(String.valueOf(Float.parseFloat(String.valueOf(count3/Float.parseFloat(jTextField4.getText(;
}
elseif(e.getSource(==jButton5{jTextField1.setText(null;jTextField2.setText(null;jTextField3.setText(null;jTextField4.setText(null;jTextField5.setText(null;jTextField6.setText(null;jTextField7.setText(null;jButton2.setText("选我";jButton3.setText("选我";jButton4.setText("选我";
jLabel6.setText("请选择下面一张卡片";}else
{intrandom3=(int(Math.random(*3;switch(random3
{case0:if(e.getSource(==jButton2{jButton2.setText("黄金卡";jLabel6.setText("恭喜你!选对了!";}elseif(e.getSource(==jButton3{
2236

湖南商学院北津学院java课程设计报告
jButton3.setText("白银卡";jLabel6.setText("选错了,再接再厉!";}else{jButton4.setText("白银卡";jLabel6.setText("选错了,再接再厉!";}break;case1:if(e.getSource(==jButton3{jButton3.setText("黄金卡";jLabel6.setText("恭喜你!选对了!";}elseif(e.getSource(==jButton2{jButton2.setText("白银卡";jLabel6.setText("选错了,再接再厉!";}else{jButton4.setText("白银卡";jLabel6.setText("选错了,再接再厉!";}break;case2:if(e.getSource(==jButton4{jButton4.setText("黄金卡";jLabel6.setText("恭喜你!选对了!";}elseif(e.getSource(==jButton3{jButton3.setText("白银卡";jLabel6.setText("选错了,再接再厉!";}else{jButton2.setText("白银卡";jLabel6.setText("选错了,再接再厉!";}break;default:break;}}}
publicstaticvoidmain(String[]args{Huangjinkahuangjinka=newHuangjinka(;}}
内容四:
2336

湖南商学院北津学院java课程设计报告
importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjava.io.*;
importjavax.swing.event.*;importjavax.swing.undo.*;importjava.util.*;
classJishibenextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;privateJTextAreatextarea=newJTextArea(;
privateJScrollPanescroll=newJScrollPane(textarea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,//滚动条策略
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;//平滚动条策略
Strings1=textarea.getText(;Containerpane=getContentPane(;Jishiben(
{super("我的记事本";setSize(600,600;setLocation(100,100;
textarea.setLineWrap(true;//自动换行
textarea.setWrapStyleWord(true;//设置在单词过长的时候是否要把长单词移到下一行
JMenuBarjmenubar=newJMenuBar(;setJMenuBar(jmenubar;////菜单条
JMenufile=newJMenu("文件";//菜单项JMenuItemitem1=newJMenuItem("新建";JMenuItemitem2=newJMenuItem("打开";JMenuItemitem3=newJMenuItem("保存";JMenuItemitem4=newJMenuItem("退出";item1.addActionListener(this;item2.addActionListener(this;item3.addActionListener(this;item4.addActionListener(this;file.add(item1;file.addSeparator(;file.add(item2;
file.addSeparator(;//加一条横向分割线file.add(item3;file.addSeparator(;file.add(item4;
jmenubar.add(file;//把菜单项加入菜单条JMenuedit=newJMenu("编辑";
2436

湖南商学院北津学院java课程设计报告
JMenuItemitem7=newJMenuItem("剪切";JMenuItemitem8=newJMenuItem("复制";JMenuItemitem9=newJMenuItem("粘贴";item7.addActionListener(this;item8.addActionListener(this;item9.addActionListener(this;edit.add(item7;edit.addSeparator(;edit.add(item8;edit.addSeparator(;edit.add(item9;jmenubar.add(edit;
JMenuhelp=newJMenu("帮助";
JMenuItemopener=newJMenuItem("开发人";JMenuItemabout=newJMenuItem("版本信息";opener.addActionListener(this;about.addActionListener(this;help.add(opener;help.addSeparator(;help.add(about;jmenubar.add(help;pane.add(scroll;setContentPane(pane;setVisible(true;}
publicvoidactionPerformed(ActionEventevt{if(evt.getActionCommand(.equals("新建"{textarea.setText("";}
if(evt.getActionCommand(.equals("打开"{try
{Frameframe=newFrame(;
FileDialogfd=newFileDialog(frame,"打开文件",FileDialog.LOAD;
fd.setVisible(true;
Stringfpath=fd.getDirectory(;Stringfname=fd.getFile(;
BufferedReaderbr=newBufferedReader(newFileReader(fpath+fname;
textarea.setText("";Strings=br.readLine(;while(s!=null
{textarea.append(s+"\n";s=br.readLine(;
2536

湖南商学院北津学院java课程设计报告
}
br.close(;}
catch(Exceptione{}}
if(evt.getActionCommand(.equals("保存"{Frameframe=newFrame("保存";
FileDialogfd=newFileDialog(frame,"保存文件",FileDialog.SAVE;
fd.setFile("新建文本文档.txt";fd.setVisible(true;try
{Stringsavepath=fd.getDirectory(;Stringsavename=fd.getFile(;if(savename!=null
{PrintWriterpw=newPrintWriter(newBufferedWriter(
newFileWriter(savepath+savename;pw.write(textarea.getText(,0,textarea.getText(.length(;
pw.flush(;}}
catch(Exceptionesave{}}
if(evt.getActionCommand(.equals("退出"{Strings2=textarea.getText(;if(!s1.equals(s2
{JOptionPanep=newJOptionPane(null,JOptionPane.QUESTION_MESSAGE;
intresult=p.showConfirmDialog(this,"文档被改,是否保存?",
"我的记事本",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE;
if(result==JOptionPane.YES_OPTION//是,存操作
{try
{FileOutputStreamfile=newFileOutputStream("新建文档.txt";
bytebuf[]=s2.getBytes(;
for(inti=0;i{file.write(buf[i];}
file.close(;
2636

湖南商学院北津学院java课程设计报告
}
catch(Exceptione{
System.out.println("Exception:"+e;}
System.exit(0;}
if(result==JOptionPane.NO_OPTION//否,不保存操作
{System.exit(0;}
if(result==JOptionPane.CANCEL_OPTION{}/*消则什么都不做*/
}else
System.exit(0;}
if(evt.getActionCommand(.equals("剪切"{textarea.cut(;}
if(evt.getActionCommand(.equals("复制"{textarea.copy(;}
if(evt.getActionCommand(.equals("粘贴"{textarea.paste(;}
if(evt.getActionCommand(.equals("开发人"{JOptionPanejop=newJOptionPane(null,JOptionPane.INFORMATION_MESSAGE;
jop.showMessageDialog(this,"信科0921刘酃威","开发",JOptionPane.OK_OPTION;
}
if(evt.getActionCommand(.equals("版本信息"{JOptionPanejop=newJOptionPane(null,JOptionPane.INFORMATION_MESSAGE;
jop.showMessageDialog(this,"我制作的第一个记事本,开发时间:201161214:09:21","版本信息",JOptionPane.OK_OPTION;
}}
publicstaticvoidmain(Stringargs[]{newJishiben(;}}
2736

湖南商学院北津学院java课程设计报告
内容五:
importjava.awt.*;
importjava.util.ArrayList;importjava.awt.event.*;importjavax.swing.*;
classBall
{privateComponentcanvas;//画小球的面板privateColorcolor;//小球的颜色privatestaticfinalintXSIZE=30;//小球的宽度privatestaticfinalintYSIZE=30;//小球的高度
privateintx=0;//小球的起始坐标xprivateinty=0;//小球的起始坐标yprivateintdx=1;//小球x坐标增量privateintdy=1;//小球y坐标增量
publicBall(Componentc//构造函数,构建一个默认颜色的小球{canvas=c;}
publicBall(Componentc,Colorcolor//构造函数,构建一个color颜色的小球{canvas=c;
this.color=color;}
publicvoiddraw(Graphicsg//画一个填充圆(小球)方法{if(color!=null
g.setColor(color;//color不为空,则设置colorg.fillOval(x,y,XSIZE,YSIZE;//画一个填充圆(小球)}
publicvoidmove(
{x+=dx;//坐标x,y分别在原来的基础上加一个增量y+=dy;
if(x<0//假如小球已碰到屏幕的左边界,则要求反弹{x=0;dx=-dx;}
if(x+XSIZE>=canvas.getWidth(//假如小球已碰到屏幕的右边界,则要求反弹
{x=canvas.getWidth(-XSIZE;dx=-dx;}
if(y<0//假如小球已碰到屏幕的上边界,则要求反弹{y=0;dy=-dy;}
if(y+YSIZE>=canvas.getHeight(//假如小球已碰到屏幕的下边界,则要求反弹
{y=canvas.getHeight(-YSIZE;dy=-dy;}
canvas.repaint(;//重画面板}
2836

湖南商学院北津学院java课程设计报告
}
classBallCanvasextendsJPanel
{privateArrayListballs=newArrayList(;//定义一个数组列表publicvoidadd(Ballb
{balls.add(b;//添加小球到数组列表中}
publicvoidpaintComponent(Graphicsg//重写组件中的paintComponent(方法
{super.paintComponent(g;
for(inti=0;i循环处理(重画数组列表中的所有小球
{Ballb=(Ballballs.get(i;b.draw(g;}}}
classBallThreadextendsThread{privateBallb;
publicBallThread(BallaBall//构造函数,构建一个线程{b=aBall;}
publicvoidrun({try
{while(true//循环处理,每隔5毫秒前进一步{b.move(;sleep(5;}}
catch(InterruptedExceptionexception{}}}
classBounceFrameextendsJFrame
{privateBallCanvascanvas;//定义小球所在的面板变量publicstaticfinalintWIDTH=500;//窗体的宽度,高度publicstaticfinalintHEIGHT=300;
privateColor[]colors={Color.pink,Color.magenta,Color.orange,Color.red,Color.yellow,Color.blue};//可选取的颜色
privateintcounter;//产生小球个数计数器publicBounceFrame(//窗体构造函数
{setSize(WIDTH,HEIGHT;//设置窗体宽度高度setTitle("多线程动画";//设置窗体的标题
ContainercontentPane=getContentPane(;//获取窗体内容面板
canvas=newBallCanvas(;//创建小球所在的面板对象//将小球所在的面板对象添加到窗体的内容面板中contentPane.add(canvas,BorderLayout.CENTER;
JPanelbuttonPanel=newJPanel(;//新建一个面板
2936

湖南商学院北津学院java课程设计报告
JButtonbtnStart=newJButton("Start";//新建二个按钮JButtonbtnClose=newJButton("Close";
buttonPanel.add(btnStart;//将按钮添加到面板中buttonPanel.add(btnClose;
btnStart.addActionListener(newMyActionListener(;//给按钮添加事件监听器
btnClose.addActionListener(newMyActionListener(;
contentPane.add(buttonPanel,BorderLayout.SOUTH;//将面板添加到内容面板的下方
}
publicvoidaddBall(//新建一个指定绘制面板和颜色的小球
{Ballb=newBall(canvas,colors[counter%colors.length];
canvas.add(b;//在面板中添加新建的小球BallThreadthread=newBallThread(b;//新建一个线程,同时传递要处理的小球对象
thread.start(;//启动新建的线程}
classMyActionListenerimplementsActionListener{//自定义一个监听器类
publicvoidactionPerformed(ActionEvente//实现actionPerformed(方法{if(e.getActionCommand(=="Start"//假如点击的是"Start"按钮
{counter++;//小球计数器加1addBall(;//调用添加小球,启动线程的方法}
elseif(e.getActionCommand(=="Close"//假如点击的是"Close"按钮{System.exit(0;//结束程序}}}
publicstaticvoidmain(String[]args
{JFrameframe=newBounceFrame(;//新建一个窗体对象frame.setVisible(true;//显示窗体}}
(代码可用五号宋体)

六、程序运行、调试和结果分析
1.程序运行中出现的问题及调试手段(包括异常处理)内容一:
十六进制下最多输入14位,十进制下最多18位,八进制下最多19位,超过则抛出自定义异常类This_number_too_big()
问题一:进制转换时不能是负数。
解决办法:如果进制转换时有负号则去除负号。问题二:被除数不能为0
解决方法:除法运算时,判断它的被除数是否为零,为零则抛出异常。
内容二
文件没有放在同一目录下读取文件语句也没设置路径,显示读取文件失败,
3036

湖南商学院北津学院java课程设计报告
把文件iris.txt移到当前目录下则解决问题。
内容三:
问题一:输入的测试次数要控制在整数范围内,不然运行不出结果。内容四:
一般情况下无异常。内容五:
一般情况下无异常。2.程序运行结果分析内容一:
程序运行时的界面:

把十进制数(9921)转换成十六进制:
3136

湖南商学院北津学院java课程设计报告

内容二:
程序运行结果:

内容三:
程序运行界面:
3236

湖南商学院北津学院java课程设计报告

仿真界面:


3336

湖南商学院北津学院java课程设计报告
模拟方法一的界面:


内容四:
程序运行结果界面:

文件菜单:
3436

湖南商学院北津学院java课程设计报告

编辑菜单:

帮助菜单:

开发人版本信息:

3536

湖南商学院北津学院java课程设计报告
内容五:
程序运行结果:

七、实验总结

经过差不多两个星期的努力,基本上完成我的Java课程设计简单的程序,基本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。


3636

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服