Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第1页
Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第2页
Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第3页
Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第4页
Java课程设计报告-计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

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

文档简介

湖南商学院北津学院java课程设计报告java课程设计一、实验目的(小四号宋体加粗)通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。信科09级学生的课程设计主要是java语言程序设计的实现。通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。二、实验环境(如软硬件)cpu:inter(r) pentium(r) cpu p6000 1.87ghz;显卡:nvidia geforce 310m;硬盘:320g;内存:2g;操作系统:windows 7;编译器:jdk1.6三、实验内容1、内容一 设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。要求:有简单的需求分析,功能设计,详细设计(程序流程),异常处理,测试,源程序清单,总结,具体格式见附件。知识点:掌握 图形用户界面设计; 掌握基本类的设计与使用; 掌握事件处理机制; 掌握使用异常处理方法。 2、内容二 利用java的输入输出流,打开文件iris.txt,求出该文件每列的总和及平均值。(注意观察iris.txt文件的分割符)知识点: 掌握使用java的输入输出流掌握使用string类以及和基本数据类型的转换。3、内容三 “湖南经视台猜“黄金卡”节目简介如下: 有三张卡,其中两张银卡,一张黄金卡,放在把背面提供给竞猜者来猜,本节目存在三种选择方法。方法一:在竞猜者随机三选一后,不再改变选择的结果;方法二:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者再重新在剩下的两张卡中随机选择。方法三:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者改变原来的选择,选取剩下的唯一那张没有翻开的卡。要求:(1) 请用图形用户界面设计方法一的竞猜过程,(2) 利用蒙特卡洛仿真方法验证湖南经视台猜“黄金卡”节目三种不同方法的优劣。知识点:掌握事件处理机制;掌握随机采样的方法;掌握图形用户界面设计;(注:采用图形用户方式设计)4、内容四 :设计一个记事本,菜单中要求有文件,编辑,和帮助。文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。知识点: 掌握 图形用户界面设计; 掌握基本类的设计与菜单设计; 掌握事件处理机制; 掌握使用异常处理方法。5、 内容五:一个多线程的动画知识点:java中线程的实现;线程的优先级、调度与同步;设计步骤:窗口布局设计设计线程类mainpanel类的设计实验效果为:程序功能:每点击一次“start”按钮,就会在画面上出现一个新的小球。这些小球按照一定的线路移动,而且小球的移动速度是相同的。四、算法分析、设计与描述1.算法分析、设计内容一:首先,完成计算器界面的设计,构造calculator类,申明基本属性,包括框架属性和按钮属性。另外在构造器中完成界面布局和各种按钮以及文本框的初始化,并且添加事件响应。其次在构造方法中,使用string数组存储每个按钮的名称,同时使用for循环完成每个按钮的显示初始化。最后在写出各事件,如数字事件、符号事件、等号事件,并写出各类运算函数,如加法、减法、乘法、除法,最后于主函数中调用各功能及运算内容二:本实验算法是要实现对iris.txt文件的读取并对此文件的每列元素进行处理(求和、求平均值)。为保证读取文件的正确性,采用字符流读取文件,然后再按行读取,读取一行处理一行。内容三:本程序算法要实现模拟黄金卡猜选的第一种方法,并且要通过蒙特卡罗仿真法比较三种方法的优劣。该算法主要是math类产生随机数方法的运用。通过jframe进行布局分别用,并统计出三种猜测方法的猜中次数以及概率。模拟方法一:采用产生随机数的方法并判断两次产生的随机数是否相等,若相等则猜中,若不等则相反,并根据实验次数得出最后的正确结果的概率与次数。内容四:在算法设计上,先设计出计算器面板,菜单放在菜单条里,菜单项放在菜单里,在本程序中,设计了一个菜单栏和文本区,设计过程中用到了jscrollpane,jmenu,jtextpane, jmenubar用来用菜单,菜单包括“文件”“编辑”“帮助”, jmenuitem用来用菜单子项,jtextpane主要用来输入文本。内容五:在本程序中,创建一个窗体对象,把小球所在的内容面板添加到窗体中,把按钮所在的面板添加到内容面板的下方。创建一个线程类,创建了小球对象的同时,创建并启动线程。以实现多线程动画的操作。2算法描述(可插入流程图)内容一:用switch语句判断点击的是什么类型的按钮,是数字键则接受数字到输入框,是运算符则执行相应的运算,加减乘除算法的描述:用switch语句判断点击的是何种算法,定义一个变量mark存放运算符,实现对应的运算。进制转换算法描述:用if语句判断选中的进制对应的选择框(默认选中的是十进制),并对该事件做对应的按钮处理,用变量length判断上次选中的是哪个进制的选择框,用来进行相互转换,然后进行运算。假如是非十进制,则先转化成十进制,然后再转化成需要的进制。内容二:用while循环对文件按行读取存放到字符型变量s里,只要s不为null则循环,在循环里加一个计数器count,用于记录文件的行数用于求平均值,每行按分隔符t进行行的分割,把每行的第i个元素累加到浮点型数组sumi里,读取完后在进行求平均值的运算。最后打印出每列总和及每列平均值。内容三:按钮界面:黄金卡中要设计到相应的一个开始游戏的按钮和一个重新开始的按钮,我采用的是jbutton,分别建立的一个有“开始”和“重玩”文字的按钮。文本框设计:用jtextfield来构建相应的文本框,用jtextfield()来构建单行文本框,以满足程序的要求和图形设计。颜色背景及字体的设定:jlabel 对象可以显示文本、图像或同时显示二者。内容四:记事本设计图如下,前先要创建一个jishiben的类继承jframe类作为最底层的容器。在构建jishiben类时要初使化容器,初使化组件。内容五: 事件的面板要有两个按钮,start按钮用来创建小球和启动线程,close按钮用来关闭窗口结束进程。程序中小球类(class ball)有多个方法:ball()构建小球的方法;draw()画填充小球的方法;move()小球移动的方法,当小球移动到屏幕边界则反弹。循环对线程进行处理:每隔5毫秒运行一次。运行一次小球前进一个像素。五、程序设计1程序设计的基本思路内容一:先在主函数里把计算器的布局写好,然后写一个设置各个按钮行为的方法,在这个方法里给出一个最初发生的event对象,由它来判断鼠标点击算法操作(加、减、乘除等),判断好了,然后就把文本框制空,然后定义一个int变量mark,mark用来保存当前进行何种运算。用户另输数字,点击“=” 在“=”操作里判断mark值,根据mark值判断是哪种算法,然后算出来,把结果射入文本框中,在文本框不为空时,改变进制选择框,则进行进制转换,把结果射入文本框中。内容二:在主函数里把要用到的变量定义好,然后尝试开始读取文件,并对读取的数据相应的进行处理,若读取失败则打印“文件读取失败”。内容三:设计中,把布局设置为空布局,以设置各按钮的准确位置,利用jbutton、jlavel和jtextfield设定界面,设定出黄金卡图形界面的布局等因素,以此满足程序的基本设计要求。内容四:help.show()启动程序输入文字新建打开保存关闭剪切复制粘贴制作人信息neweditopenfilesavelistener eactionlistenercutactioncopyaction npasteaction退出关闭程序内容五:在窗体构造函数bounceframe()对窗体进行初始化,单机start 按钮,就马上调用创建小球,启动线程的方法addball(),当小球运动到边界的时候要反弹,并重画面板。单机close 按钮则退出程序。2程序代码内容一:import java.awt.*;import java.awt.event.*;class this_number_too_big extends exception /自定义的一个结果溢出异常类class jsq2011 extends frame implements itemlistener,actionlistenerpublic jsq2011()addwindowlistener(new windowadapter()public void windowclosing(windowevent e)dispose();system.exit(0););static jsq2011 mainframe = new jsq2011();static label lab=new label(0);/创建标签static panel pnl1=new panel(new gridlayout(4,3,3,3);/网格布局static panel pnl2=new panel(new gridlayout(4,1,3,3);static panel pnl3=new panel(new gridlayout(1,2,3,3);static panel pnl4=new panel(new gridlayout(6,1,3,3);static button bt9=new button(9);static button bt8=new button(8);static button bt7=new button(7);static button bt6=new button(6);static button bt5=new button(5);static button bt4=new button(4);static button bt3=new button(3);static button bt2=new button(2);static button bt1=new button(1);static button bt0=new button(0);static button btdot=new button(.);static button btequ=new button(=);static button btadd=new button(+);static button btsub=new button(-);static button btmul=new button(*);static button btdev=new button(/);static button bta=new button(a);static button btb=new button(b);static button btc=new button(c);static button btd=new button(d);static button bte=new button(e);static button btf=new button(f);static checkbox ckb8=new checkbox(八进制);/创建八进制选择框static checkbox ckb10=new checkbox(十进制);static checkbox ckb16=new checkbox(十六进制);static button btc=new button(clear);static button btt=new button(backspace);public int number=0,length=18;/* number是用来记录输入的数字个数, *length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制 */public char mark=n; /*设置运算符号为没有即为n,它的值是+-*/ */public double data=0; /*设置运算数据为零 */public char ch; /*用来临时存放所按按钮的第一个字符 */public boolean refresh=false;/*设置lab是否要在输入数据的时候刷新,初始为否 */public static void main(string args)system.out.println(starting jsq2011.);lab.setalignment(label.right);/标签上名称右对齐lab.setbackground(color.white);lab.setforeground(color.blue);lab.setfont(new font(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(new color(200, 250, 200);bt1.setbackground(new color(200, 250, 200);bt2.setbackground(new color(200, 250, 200);bt3.setbackground(new color(200, 250, 200);bt4.setbackground(new color(200, 250, 200);bt5.setbackground(new color(200, 250, 200);bt6.setbackground(new color(200, 250, 200);bt7.setbackground(new color(200, 250, 200);bt8.setbackground(new color(200, 250, 200);bt9.setbackground(new color(200, 250, 200);btdot.setbackground(new color(200, 250, 200);btequ.setbackground(new color(200, 250, 200);btadd.setbackground(new color(200, 250, 200);btmul.setbackground(new color(200, 250, 200);btdev.setbackground(new color(200, 250, 200);btsub.setbackground(new color(200, 250, 200);bta.setbackground(new color(200, 250, 200);btb.setbackground(new color(200, 250, 200);btc.setbackground(new color(200, 250, 200);btd.setbackground(new color(200, 250, 200);bte.setbackground(new color(200, 250, 200);btf.setbackground(new color(200, 250, 200);checkboxgroup grp=new checkboxgroup();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);/* end main() mothed */*/* checkbox 事件的处理 */*/public void itemstatechanged(itemevent e)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()=true) /十六进制bta.enable(true); /*在十六进制的情况下对有些按件的管理*/btb.enable(true);btc.enable(true);btd.enable(true);bte.enable(true);btf.enable(true);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位/end itemstatechanged(itemevent e) method/*/* 按钮事件的处理 */*/public void actionperformed(actionevent m)button btn=(button) m.getsource();ch=btn.getlabel().charat(0);object temp=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()=1)break;if(numberlength)number+;lab.settext(lab.gettext()+ch);else break;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);else break; break;case b:if(number=0) break;elseif(-number=0)lab.settext(0); number=0;elseif (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_big e)lab.settext(0); number=0; mark=n;refresh=false; system.out.println(the number is too big);/*如果出现异常则初始化效果如同clear键 */ break;case -: try js();catch(this_number_too_big e)lab.settext(0); number=0; mark=n;refresh=false; system.out.println(the number is too big); break;case *: try js();catch(this_number_too_big e)lab.settext(0); number=0; mark=n;refresh=false; system.out.println(the number is too big); break;case /: try js();catch(this_number_too_big e)lab.settext(0); number=0; mark=n;refresh=false; system.out.println(the number is too big); break;case =: try js();catch(this_number_too_big e)lab.settext(0); number=0; mark=n;refresh=false; system.out.println(the number is too big); break;/end actionperformed(actionevent e) method/*/* 八进制或十六进制转换成十进制i */*/public string goto_10(string s,long l)/* 参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性;*/ /* 参数l: 使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16 */string str=s; /用来转换的字符串long j=l; /表示进制long lg=0,jing=1;/lg用来记录权乘和,jing用来记录位权char cha;/临时记录要转换的字符for(int i=1;i=16)ch=lg%16;k=(int)ch;switch (k)case 10: st=a+st;break;case 11: st=b+st;break;case 12: st=c+st;break;case 13: st=d+st;break;case 14: st=e+st;break;case 15: st=f+st;break;default: st=long.tostring(ch)+st;lg=lg/16;k=(int)lg;switch (k)case 10: st=a+st;break;case 11: st=b+st;break;case 12: st=c+st;break;case 13: st=d+st;break;case 14: st=e

温馨提示

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

评论

0/150

提交评论