java课程设计信科1021班XXX_第1页
java课程设计信科1021班XXX_第2页
java课程设计信科1021班XXX_第3页
java课程设计信科1021班XXX_第4页
java课程设计信科1021班XXX_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

彻南甫孝洗处律者院

课程设计报告实验内容: 综合课程设计 相关课程: Java程序设计 学期:2011-2012学年第2学期学时学分: 68学时4学分 专业班级: 信科1021班 学号: xxxxxxxxxx姓名: XXX 指导老师: 罗毅辉 提交日期: 2012年6月21日java程序设计课程设计一、 实验目的此次实验的目的:一是巩固并运用所学的专业知识解决实际遇到的问题。二是提高综合素质和能力。课程设计主要是针对Java语言程序设计的实现。通过该课程设计,可以将我们在课堂上掌握的理论知识与处理数据的业务相结合,以检验我们掌握知识的宽度、深度及对知识的综合运用能力。二、 实验环境电脑型号:戴尔Dell笔记本电脑操作系统:Windows?家庭普通版(64位)处理器:Intel(R)Core(TM)i3-2330MCPU@2.2GHz2.20GHz双核处理器内存:2GB软件:Eclipse7.1、JSDK1.6三、 实验内容内容一:设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。要求:有简单的需求分析,功能设计,详细设计(程序流程),异常处理,测试,源程序清单,总结,具体格式见附件。(必做)知识点:掌握图形用户界面设计;掌握基本类的设计与使用;掌握事件处理机制;掌握使用异常处理方法;内容二:利用JAVA的输入输出流,打开文件iris.txt,求出该文件每列的总和及平均值。(注意观察iris.txt文件的分割符)(必做)知识点:掌握使用JAVA的输入输出流掌握使用String类以及和基本数据类型的转换。内容三:“湖南经视台猜“黄金卡”节目简介如下:有三张卡,其中两张银卡,一张黄金卡,放在把背面提供给竞猜者来猜,本节目存在三种选择方法。方法一:在竞猜者随机三选一后,不再改变选择的结果;方法二:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者再重新在剩下的两张卡中随机选择。方法三:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者改变原来的选择,选取剩下的唯一那张没有翻开的卡。要求:(1) 请用图形用户界面设计方法一的竞猜过程,(2) 利用蒙特卡洛仿真方法比较湖南经视台猜“黄金卡”节目三种不同方法的优劣。(必做)知识点.掌握事件处理机制;掌握随机采样的方法;掌握图形用户界面设计;(注:采用图形用户方式设计)内容四:编写tic-tac-toe游戏程序。即3*3的9个方格子,每人下一次看谁先连成一行3个。(可选)知识点:掌握图形用户界面设计;掌握基本类的设计与菜单设计;掌握事件处理机制;参考教材中围棋游戏的例子;内容五:设计一个记事本,菜单中要求有文件,编辑,和帮助。文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。(可选)知识点:掌握图形用户界面设计;掌握基本类的设计与菜单设计;掌握事件处理机制;掌握使用异常处理方法。四、算法分析、设计与描述算法分析和设计内容一:我所做的计算器程序,第一步是完成计算器界面的设计。先创建一个Jsuanqi窗口,其次创建一系列的按钮、面板、选择框以及标签等组件,将按钮加到面板上,再将面板以GridLayout布局方式加到Jsuanqi窗口上,选择框(3个)添加到窗口上标签直接添加到窗口上。第二步是对所有组件添加动作监视器即调用addActionListener()方法(以窗口对组件进行监听),窗口实现了ItemListener、ActionListener接口,并且所有添加监视器的组件均实现了对应的方法(itemStateChanged、actionPerformed)。第三步是当发生事件的时候实现数值的计算和进制转换动能。这里我只介绍数值计算:源代码如下:(1)实现加减乘除publicvoidjs()throwsThis_number_too_big//指定由method抛出异常{if(mark=='n')//没有运算符{mark=ch;//,则设置运算符为刚刚输入的字符,data=Double.parseDouble(lab.getText());//将标签里的字符转型为双精度数值并传给data变量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));这里通过获得标签里的字符将其转型为单精度数值传值给 data,通过switch语句,对输入的运算符的情况依次做对应的运算处理。再调用lab.setText(Double.toString(data)在标签以双精度整型输出计算结果。(2)实现开方运算if(m.getSource()==bts){data=Double.parseDouble(lab.getText());//将标签里的字符转型为双精度数值并传给data变量doubles=Math.sqrt(data);lab.setText(Double.toString(s));}这里通过对按钮sbts的事件监听,调用Math.sqrt(data)方法实现了开方运算。整个内容一的算法分析设计基本完成。内容二此程序主要是实现对输入的数字字符串进行统计(列的均值与和)。在算法设计上,运用java程序输入输出流,以及调用Stringtokennizer类来实现分词并按水平制表方式读取文本内容,调用BufferedReader类中的readLine()方法读取文本行,这样就方便对文本行的统计(注:文本行与列等长)。其次用两个数组分别存放列的均值和列的和。在统计输入的字符串时,可以定义相应的统计计数变量,对输入的字符串按每一个字符截取进行判断。在判定时,若符合条件则在相应的统计数上加1,若不符则直接跳至下一个判断模块。整个程序就实现了对文本内容的行列统计功能。内容三:对于黄金卡竞猜游戏第一步:实现图形窗口的界面设计思路如下:首先创建一系列的组件包括按钮(六个按钮),标签(主要标注的是方法,获胜概率,请输入测试次数,请选择卡片,以及每一次竞猜后请选择卡片标签显示对应的竟猜结果)、文本框(用来返回对应方法下测试的次数和测试的概率值,以及输入总的测试次数),然后将这些组件调用add.setBounds()方法按顺序依次添加到窗口上(这里我对所有的组件进行了个性化设计,包括背景颜色,事件处理等使得游戏界面缤纷多彩)第二步:对添加的组件(六个按钮,以及一个输入总的次数的文本框)添加监视器(以窗口作为监听)窗口实现了ActionListener接口,添加监视器的组件实现了actionPerformed的方法。第三步:实现三个方法方占测试总数的次数以及各方法对应概率的计算。第四步:实现黄金了卡竞猜游戏的功能。考虑到竞猜过程的三个方法算法设计方案如下:方案一:调用Math.random()方法产生随机数,并判断两次产生的随机数是否相等,若相等则猜中,若不等即没有猜中。并根据输入的测试次数算出在不同方法下测试的次数和对应的概率。方案二:黄金卡竞猜游戏需要三张卡片,即两张银卡和一张金卡,可以用数组存储三个数来代表三张卡片:int[]cards={0,0,1}(用数组存放三张卡片0代表银卡,1为金卡。)然后产生一个作为金卡的随机数,再产生一个作为第一次猜测的随机数,并不与金卡数比较,接着产生不等于前两次随机数的银卡数,最后产生不等于第三次产生的银卡数,若该次的随机数与金卡相等,则猜中,否则没猜中。这里我只拿方法一中对卡片一猜测的代码进行分析,其余卡片依次类推,源代码如下:if(e.getSource()==jButton_1&&flag==0){intrandom1_1=(int)(Math.random()*3);intrandom2_1=(int)(Math.random()*2);intrandom3_1=(int)(Math.random()*2);random1=random11;random2=random2_1;random3=random3_1;intnotice=JOptionPane.showConfirmDialog(this,”需要排除一张银卡吗?","提示!",JOptionPane.YES_NO_CANCEL_OPTION);//是:否:撤销:if(notice==0){if(random2==0){jButton_2.setBackground(Color.lightGray);}if(random2==1){jButton_3.setBackground(Color.lightGray);}flag=1;return;}if(notice==1){intrandom0=(int)(Math.random()*3);if(random1==0){jButton_1.setBackground(Color.yellow);jButton_2.setBackground(Color.lightGray);jButton_3.setBackground(Color.lightGray);Label5.setText("恭喜您,猜对了!");}if(random1==1){jButton_1.setBackground(Color.lightGray);jButton_2.setBackground(Color.yellow);jButton_3.setBackground(Color.lightGray);Label5.setText("彳艮遗憾,猜错了!");}if(random1==2){jButton_1.setBackground(Color.lightGray);jButton_2.setBackground(Color.lightGray);jButton_3.setBackground(Color.yellow);Label5.setText("彳艮遗憾,猜错了!");}}if(notice==2){return;}}首先通过random2产生两个随机数来模拟产生除卡片一以外的另两张卡片银卡的随机位置,然后再通过产生三个随机数(0〜2之间)传值给random1来产生金卡的随机数,random1==0即表示第一张卡为金卡位置,jButton_1.setBackground(Color.yellow)(设置金卡的位置为卡片一)其余的两张卡就设置为银卡。依次类推,就实现金卡随机数的产生。如果你点击的是卡片一(这里点击的为卡片一),如果卡片一为金卡位置、,标签返回竞猜者的结果(猜对),否则返回(猜错)。至于方法二,三所用的方法类似,这里不做解释了!内容四:第一步:创建一个窗口容器。第二步:创建一个面板和按钮。对面板以GridLayout(3,3,0,0)布局为3行3列的网格,并将网格同数组存放到二维数组中,然后将面板加到窗口上,按钮调用BorderLayout.NORTH方法将按钮加到窗口最南端。第三步:实现游戏功能。先对游戏的所有情况进行设计(包括输,赢,格子占满但和局等情况)再通过改变二维数组的值,来抽象出三棋连成一条直线或斜线赢的情况,对数组的行与列的遍历判断数组是否为空,来判断棋盘是否为空的情况。若所有棋格都满且没有可以成直线的棋路的话,则认为和局。内容五:第一步:将菜单项添加到菜单上第二步:将菜单添加到菜单条上第三步:将菜单条和文本区加到窗口上第四步:对部分按钮添加监视器第五步:实现这些按钮的actionPerformed()方法,来实现文件的打开,保存,编辑,复制粘贴,及显示开发人的版本信息等。(这里是通过JOptionPane.showMessageDialog()方法来开启一个面板显示开发人的版本信息)算法描述(可插入流程图)内容一:程序通过接受各个组件的事件,判断是何种操作。在此过程中,这里通过获得标签里的字符将其转型为单精度数值传值给data,通过switch语句,对输入的运算符的情况依次做对应的运算处理(加减乘除)。再调用lab.setText(Double.toString(data)在标签以双精度整型输出计算结果。同理调用Math.sqrt()方法实现开放运算。另外,清空按钮是获取文本框的内容对其进行清空的操作,退格的操作是将文本框中的字符串截取最后一个字符之前的所有内容再显示标签中。

内容二程序应用JAVA的输入输出流,打开文件iris.txt,调用StringTokenizer类创建一个分析器按照并按水平制表的分词方法读取文件中的内容,调用BufferedReader类中的方法readLine读取文本行。再利用两个数组存放文件中列的和以及各列的平均值,这里用count记录读取的行数,sum[k]存放各列的和,sum[k]/count存放各列的平均值(注意输入的为长宽相等的表格形式,内容为数值)。内容三:第一种猜测方案: 第二种猜测方案:实验次数<m实验次数<m产生金卡随机数k观众猜测的随机数ml^^^^K^m^^'N^正确次数Count1++试验次数<m产生金卡随机数r第一猜测的随机数ml银卡的随机数k!=m1第二次猜测的随机数m2!=k^^^\R=m2^^^n"^正确次数Count2++内容四:程序通过创建一个窗口,并以窗口作为监视器实现对面板的监听。对于面板,将其划分为3x3的九个网格,添加到窗口上,并以二维数组存放网格。通过的二维数组的判断来实现输赢与和局的情况。其次,对网格单位添加鼠标监视器并实现了鼠标事件的处理,调用paintComponent(Graphicsg)方法,实现了在单位网格画“X”和“椭圆”的功能。对于按钮,将其按3orderLayout添加到窗口的最南端。整个界面通过对组件的属性设置而变得生动极具个性色彩。内容五:第一步:程序通过创建一个窗口,将文本区和菜单条添加到窗口上。第二步:以窗口作为监视器对部分菜单项监听,通过实现这些按钮的actionPerformed()方法,来实现文件的打开,保存,编辑,复制粘贴,及显示开发人的版本信息等。(注意:这里是通过JOptionPane.showMessageDialog()方法来开启一个面板显示开发人的版本信息)五、程序设计1.程序设计的基本思路内容一:通过继承JFrame类和实现监听器接口ActionListener和ItemListener接口来完成窗口的布局管理和个组件相对应的事件。定义一个窗口作为容器来合理安置一个标签、五个面板和三个同组的选择框等组件,标签用来显示输入的数据和运算的结果,第一个面板用来存放数字键、“.”和“二”。第二个面板用来存放四则运算的运算符,第三个面板用来存放“返回”、“清除”和“sqrt”。第四个面板用来存放大写字母A-F。第五个面板存放一个退出程序。三个同组的选择框直接添加到窗口上并完成十六进制、八进制和二进制转换。最后把标签,三个同组的选择框和五个面板放到窗口容器中。3.通过实现ActionListener中的actionPerformed(ActionEvente)方法以及ItemListener中的itemStateChanged方法来实现各个组件相对应的事件。用if语句判断执行各按钮的功能,用switch语句实现四则运算,调用Math.sqrt()方法实现开方运算。内容二利用java输入输出流,来打开记事本,调用StringTokenizer类创建一个分析器按照并按水平制表的分词方法读取文件中的内容,调用BufferedReader类中的方法readLine读取文本行。用两个数组分别存列的均值和列的和并输出结果并用try...catch语句来捕捉文本读取时触发的错误事件。内容三:1.通过继承JFrame类和实现监听器接口ActionListener接口来完成窗口的布局管理和个组件相对应的事件。这里将各组件直接加到窗口容器上(通过setBounds()方法来实现),组件的属性有背景颜色、大小位置,字体颜色、大小等。从而整个界面凸显个性色彩。通过实现ActionListener中的actionPerformed(ActionEvente)方法来实现各个组件相对应的事件。用if语句判断执行各按钮的功能,用try...catch语句来捕捉使用计算器时触发的错误事件通过蒙特卡洛仿真原理来模拟黄金卡竞猜过程,利用产生随机数的方法来模拟金卡随机位置和银卡随机位置,以及竞猜者随机选卡片,主持人翻一张银卡等。内容四:程序通过创建一个窗口,并以窗口作为监视器实现对面板的监听。将面板划分为3x3的九个网格,添加到窗口上,并以二维数组存放网格。通过对二维数组的判断来实现输赢与和局的情况。对网格单位添加鼠标监视器(MouseListener)并实现鼠标事件的处理,调用paintComponent(Graphicsg)方法,实现在单位网格画“X”和“椭圆”的功能。对于按钮,将其按BorderLayout添加到窗口的最南端。内容五:基于内容五按照要求将一个带有三个菜单的菜单条添加到窗口顶端,再将一个文本区添加到窗口中央,三个菜单各自添加相应的菜单项。通过对菜单项添加窗口作为监视器,然后实现actionPerformed方法来实现实现文件的打开,保存,编辑,复制粘贴,及显示开发人的版本信息2.程序代码内容一:源代码如下:importjava.awt.*;importjava.awt.event.*;classThis_number_too_bigextendsException{}//自定义的一个结果溢出异常类classJsuanqiextendsFrameimplementsItemListener,ActionListener{publicJsuanqi(){addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){dispose();//关闭窗体会释放该窗体的占用的部分资源System.exit(0);}});}staticJsuanqimainFrame=newJsuanqi();//创建窗口(声明和分配内存)staticLabellab=newLabel("0");//标签staticPanelpnl1=newPanel(newGridLayout(4,3,3,3));//四行三列的面板staticPanelpnl2=newPanel(newGridLayout(4,1,3,3));staticPanelpnl3=newPanel(newGridLayout(1,3,3,3));staticPanelpnl4=newPanel(newGridLayout(6,1,3,3));staticPanelpnl5=newPanel(newGridLayout(1,1,3,3));/添加一个一行一列的画板5staticButtonbutton=newButton("预祝大家暑假快乐,再见!");//新建一个按钮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('T');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("A进制");//选择框staticCheckboxckb10=newCheckbox("十进制");staticCheckboxckb16=newCheckbox("十六进制");staticButtonbtc=newButton("清除");staticButtonbtt=newButton("返回");staticButtonbts=newButton("sqrt");publicintnumber=0,length=18;//number是用来记录输入的数字个数,length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制publiccharmark='n';//设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’publicdoubledata=0;//设置运算数据为零publiccharch;//用来临时存放所按按钮的第一个字符publicbooleanRefresh=false;//设置lab是否要在输入数据的时候刷新,初始为否publicstaticvoidmain(Stringargs[]){lab.setAlignment(Label.RIGHT);//设置布局的对齐方式lab.setBackground(Color.green);//背景颜色lab.setForeground(Color.white);//前景颜色lab.setFont(newFont("Serief”,Font.BOLD,18));//设置字体,粗体,18磅lab.setBounds(14,33,216,40);mainFrame.add(lab);button.setBackground(Color.white);//背景颜色button.setForeground(Color.red);//前景颜色button.setFont(newFont("Serief”,Font.BOLD,20));//设置字体,粗体,20磅 一CheckboxGroupgrp=newCheckboxGroup();//对Checkbox集合进行分组ckb8.setCheckboxGroup(grp);ckb10.setCheckboxGroup(grp);ckb16.setCheckboxGroup(grp);ckb8.setBounds(14,75,55,25);ckb10.setBounds(69,75,55,25);ckb16.setBounds(124,75,65,25);ckb8.setState(false);ckb10.setState(true);ckb16.setState(false);mainFrame.add(ckb8);mainFrame.add(ckb10);mainFrame.add(ckb16);pnl1.setBounds(14,140,120,150);pnl2.setBounds(144,140,40,150);pnl3.setBounds(14,100,170,36);pnl4.setBounds(190,100,40,190);pnl5.setBounds(10,296,230,40);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);pnl3.add(bts);pnl4.add(btA);pnl4.add(btB);pnl4.add(btC);pnl4.add(btD);pnl4.add(btE);pnl4.add(btF);pnl5.add(button);btA.setEnabled(false);btB.setEnabled(false);btC.setEnabled(false);btD.setEnabled(false);btE.setEnabled(false);btF.setEnabled(false);mainFrame.add(pnll);mainFrame.add(pnl2);mainFrame.add(pnl3);mainFrame.add(pnl4);mainFrame.add(pnl5);mainFrame.setResizable(false);//生成的窗体大小是由程序员决定的,用户不可以自由改变该窗体的大小。mainFrame.setLayout(null);//空布局mainFrame.setSize(240,340);mainFrame.setTitle("祺爷专属计算器");mainFrame.setVisible(true);ckb8.addItemListener(mainFrame);ckb10.addItemListener(mainFrame);ckb16.addItemListener(mainFrame);〃把事件聆听者向各个组键注册button.addActionListener(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);bts.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.setEnabled(false);btB.setEnabled(false);btC.setEnabled(false);btD.setEnabled(false);btE.setEnabled(false);btF.setEnabled(false);bt9.setEnabled(false);bt8.setEnabled(false);btdot.setEnabled(false);btadd.setEnabled(false);btmul.setEnabled(false);btsub.setEnabled(false);btdev.setEnabled(false);btequ.setEnabled(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.setEnabled(false);btB.setEnabled(false);btC.setEnabled(false);btD.setEnabled(false);btE.setEnabled(false);btF.setEnabled(false);bt9.setEnabled(true);bt8.setEnabled(true);btdot.setEnabled(true);btadd.setEnabled(true);btmul.setEnabled(true);btsub.setEnabled(true);btdev.setEnabled(true);btequ.setEnabled(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.setEnabled(true);btB.setEnabled(true);btC.setEnabled(true);btD.setEnabled(true);btE.setEnabled(true);btF.setEnabled(true);bt9.setEnabled(true);bt8.setEnabled(true);btdot.setEnabled(false);btadd.setEnabled(false);btmul.setEnabled(false);btsub.setEnabled(false);btdev.setEnabled(false);btequ.setEnabled(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(ItemEvente)method// //按钮事件的处理publicvoidactionPerformed(ActionEventm){if(m.getSource()==button){System.exit(0);}//对按钮添加一个退出功能,由窗口监视if(m.getSource()==bts){data=Double.parseDouble(lab.getText());//将标签里的字符转型为双精度数值并传给data变量doubles=Math.sqrt(data);lab.setText(Double.toString(s));}Buttonbtn=(Button)m.getSource();ch=btn.getLabel().charAt(0);//获取第一个字母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()==1)break;if(number<length){number++;lab.setText(lab.getText()+ch);}elsebreak;}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==0)break;else{if(—number==0){lab.setText("0”);number=0;}else{if(number!=1)lab.setText(lab.getText().substring(0,number));//返回一个新的字符串elselab.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");}break;〃如果出现异常则初始化效果如同clear键case'-':try{js();}catch(This_number_too_bige){lab.setText("0”);number=0;mark='n';Refresh=false;System.out.println("Thenumberistoobig");}break;〃如果出现异常则初始化效果如同clear键case'*':try{js();}catch(This_number_too_bige){lab.setText("0”);number=0;mark='n';Refresh=false;System.out.println("Thenumberistoobig");}break;〃如果出现异常则初始化效果如同clear键case'/':try{js();}catch(This_number_too_bige){lab.setText("0”);number=0;mark='n';Refresh=false;System.out.println("Thenumberistoobig");}break;〃如果出现异常则初始化效果如同clear键case'=':try{js();}catch(This_number_too_bige){lab.setText("0”);number=0;mark='n';Refresh=false;System.out.println("Thenumberistoobig");}break;〃如果出现异常则初始化效果如同clear键〃如果出现异常则初始化效果如同clear键}}//endactionPerformed(ActionEvente)method//八进制或十六进制转换成十进制I// InfinitypublicStringgoto_10(Strings,longl)〃参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;〃参数l:使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;{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〃十进制转换成十六进制// 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=(int)ch;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=(int)lg;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)〃参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;{Stringstr=s;Stringst=newString();longj=8,ch;longlg;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);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则0,lab的内容将被所输入的字符代替,否则直接在lab的内容后面加上所输入的字符{lab.setText(Character.toString(ch));number++;}elseif(number<length){number++;lab.setText(lab.getText()+ch);}}//endenter()method// 〃用来处理按了运算符后的计算-publicvoidjs()throwsThis_number_too_big//指定由method抛出异常{if(mark=='n')//没有运算符{mark=ch;//,则设置运算符为刚刚输入的字符,data=Double.parseDouble(lab.getText());//将标签里的字符转型为双精度数值并传给data变量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();//设置输入的字符个数//System.out.println(lab.getText());//用来调试用的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// }//endclassjisuanqi内容二源代码如下:importjava.io.*;importjava.util.*;importjava.text.DecimalFormat;publicclasslostream{publicstaticvoidmain(Stringargs[]){ System.out.println("读取文件iris.txt中..."+"\n");floatsum[]=newfloat[4];//存放所有列的和floataverage]]=newfloat[4];//存放平均值intcount=0;//用来记录文件的行数Stringstr[]=newString[5],s;//文件读取缓冲区try{FileReaderfile=newFileReader("e:\\iris.txt");BufferedReaderbr=newBufferedReader(file);s=br.readLine();while(s!=null)//循环读取所有的数{inti=0;StringTokenizer tokenizer = 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.BorderLayout;importjava.awt.Button;importjava.awt.Canvas;importjava.awt.Color;importjava.awt.FlowLayout;importjava.awt.Font;importjava.awt.Label;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.GroupLayout;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JTextField;publicclassHuangjinka2{publicstaticvoidmain(String[]args){Huangjinka1g=newHuangjinka1();}}classHuangjinka1extendsJFrameimplementsActionListener{intflag;intrandom1,random2,random3;Buttonbutton;//创建要添加的按钮JButtonjButton1;JButtonjButton_1;JButtonjButton_2;JButtonjButton_3;JButtonjButton4;JLabeljLabel1;JLabeljLabel2;JLabeljLabel3;JLabeljLabel4;LabelLabel5;JLabeljLabel01;JLabeljLabel02;JLabeljLabel03;JTextFieldjTextField1;//对应方法旁边的文本框(不可编辑)JTextFieldjTextField2;JTextFieldjTextField3;JTextFieldjTextField4;//开始测试旁边的文本框(可编辑)JTextFieldjTextField01;//获胜概率旁边的文本框(不可编辑)JTextFieldjTextField02;JTextFieldjTextField03;publicHuangjinka1(){button=newButton("我游戏,我快乐!同学们再见!");jButton1=newJButton();//创建四个按钮(三个作为黄金卡片)jButton_1=newJButton();jButton_2=newJButton();jButton_3=newJButton();jButton4=newJButton();〃创建标签和文本框组件jLabel1=newJLabel();jTextField1=newJTextField(10);jTextField2=newJTextField(10);jLabel2=newJLabel();jTextField3=newJTextField(10);jLabel3=newJLabel();jLabel4=newJLabel();jTextField4=newJTextField(9);Label5=newLabel("请选择卡片");jLabel01=newJLabel();jTextField01=newJTextField(10);jTextField02=newJTextField(10);jLabel02=newJLabel();jTextField03=newJTextField(10);jLabel03=newJLabel();〃设置文本框是不可编辑的jTextField1.setEditable(false);jTextField01.setEditable(false);//设置标签名称jLabel1.setText("方法一:");jLabel01.setText("获胜概率");jTextField2.setEditable(false);jTextField02.setEditable(false);jLabel2.setText("方法二:");jLabel02.setText("获胜概率");jTextField3.setEditable(false);jTextField03.setEditable(false);jLabel3.setText("方法三:");jLabel03.setText("获胜概率");jLabel4.setText("请输入测试次数:");setTitle(-黄金卡游戏信科1021谢佳祺");//设置窗口名称setLayout(null);setSize(500,569);//设置huangjinka窗口的长和宽setLocationRelativeTo(null);〃设置标签和对应文本框的位置jLabel1.setBounds(50,20,100,30);add(jLabel1);add(jTextField1);jTextField1.setBounds(100,20,130,30);jLabel01.setBounds(300,20,100,30);add(jLabel01);jTextField01.setBounds(355,20,100,30);add(jTextField01);jLabel2.setBounds(50,70,100,30);add(jLabel2);add(jTextField2);jTextField2.setBounds(100,70,130,30);jLabel02.setBounds(300,70,100,30);add(jLabel02);jTextField02.setBounds(355,70,100,30);add(jTextField02);jLabel3.setBounds(50,120,100,30);add(jLabel3);add(jTextField3);jTextField3.setBounds(100,120,130,30);jLabel03.setBounds(300,120,100,30);add(jLabel03);jTextField03.setBounds(355,120,100,30);add(jTextField03);jLabel4.setBounds(50,180,120,30);add(jLabel4);add(jTextField4);jTextField4.setBounds(175,180,130,30);jButton1.setText("开始测试");jButton4.setText("再猜一次");add(button);//将按钮加到窗口上add(jButton1);//将按钮添加到huangjinka窗口上add(jButton_1);add(jButton_2);add(jButton_3);add(jButton4);button.setBounds(50,400,400,100);//添加按钮的位置大小jButton1.setBounds(310,180,140,30);//设置开始测试按钮的位置jButton_1.setBounds(50,220,100,130);//设置三张卡片的大小位置jButton_2.setBounds(200,220,100,130);jButton_3.setBounds(350,220,100,130);jButton4.setBounds(260,360,100,30);//再猜一次按钮的位置jButton1.setOpaque(true);//必须先设置为true,才能对JButton按钮进行背景颜色设置jButton4.setOpaque(true);button.setBackground(Color.cyan);button.setFont(newFont("Serief”,Font.BOLD,25));//设置字体,粗体,2磅jButton1.setBackground(Color.pink);jButton4.setBackground(Color.CYAN);jLabel1.setOpaque(true);//必须先设置为true,才能对JLable标签进行背景颜色设置jLabel2.setOpaque(true);jLabel3.setOpaque(true);jLabel01.setOpaque(true);jLabel02.setOpaque(true);jLabel03.setOpaque(true);jLabel4.setOpaque(true);jLabell.setBackground(Color.cyan);jLabel2.setBackground(Color.cyan);jLabel3.setBackground(Color.cyan);jLabel4.setBackground(Color.blue);jLabel01.setBackground(Color.magenta);jLabel02.setBackground(Color.magenta);jLabel03.setBackground(Color.magenta);jTextField1.setBackground(Color.RED);jTextField2.setBackground(Color.RED);jTextField3.setBackground(Color.RED);jTextField01.setBackground(Color.orange);jTextField02.setBackground(Color.orange);jTextField03.setBackground(Color.orange);jTextField4.setBackground(Color.GREEN);Label5.setBounds(155,360,100,30);//设置请选择卡片的位置和背景颜色,并添加到窗口上Label5.setBackground(Color.PINK);add(Label5);setVisible(true);〃对6个按钮和文本框4添加窗口作为监视器button.addActionListener(this);jButton1.addActionListener(this);jButton_1.addActionListener(this);jButton_2.addActionListener(this);jButton_3.addActionListener(this);jButton4.addActionListener(this);jTextField4.addActionListener(this);}©OverridepublicvoidactionPerformed(ActionEvente){//按钮监听if(e.getSource()==button){System.exit(0);}//对按钮添加一个退出功能,由窗口监视if(e.getSource()==jButton1){Stringnumber=jTextField4.getText();//将文本框4输入的内容(0~9的数字)传给numberif(number.matches(""[1-9]{1}\\d*$〃)){longcount1=0,count2=0,count3=0;int口cards={0,0,1};/用数组存放三张卡片0代表银卡,1为金卡longtimes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论