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

上传人:仙人指路1688 文档编号:2387079 上传时间:2023-02-17 格式:DOC 页数:36 大小:334KB
返回 下载 相关 举报
Java课程设计报告计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第1页
第1页 / 共36页
Java课程设计报告计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第2页
第2页 / 共36页
Java课程设计报告计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第3页
第3页 / 共36页
Java课程设计报告计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第4页
第4页 / 共36页
Java课程设计报告计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《Java课程设计报告计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc》由会员分享,可在线阅读,更多相关《Java课程设计报告计算器,输入输出流读取iris.txt文件,黄金卡,多线程动画,记事本.doc(36页珍藏版)》请在三一办公上搜索。

1、JAVA课程设计一、实验目的(小四号宋体加粗)通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。信科09级学生的课程设计主要是Java语言程序设计的实现。通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。二、实验环境(如软硬件)CPU:Inter(R) Pentium(R) CPU P6000 1.87GHz;显卡:NVIDIA GeForce 310M;硬盘:320G;内存:2G;操作系统:Windows 7;编译器:JDK1.6三、实验内容1、内容一 设计一个计算器,利用它可以进

2、行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。要求:有简单的需求分析,功能设计,详细设计(程序流程),异常处理,测试,源程序清单,总结,具体格式见附件。知识点:掌握 图形用户界面设计; 掌握基本类的设计与使用; 掌握事件处理机制; 掌握使用异常处理方法。 2、内容二 利用JAVA的输入输出流,打开文件iris.txt,求出该文件每列的总和及平均值。(注意观察iris.txt文件的分割符)知识点: 掌握使用JAVA的输入输出流掌握使用String类以及和基本数据类型的转换。3、内容三 “湖南经视台猜“黄金卡”节目简介如下:

3、 有三张卡,其中两张银卡,一张黄金卡,放在把背面提供给竞猜者来猜,本节目存在三种选择方法。方法一:在竞猜者随机三选一后,不再改变选择的结果;方法二:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者再重新在剩下的两张卡中随机选择。方法三:在竞猜者随机三选一后,主持人再翻开剩下两张中没有被选中的一张银卡,竞猜者改变原来的选择,选取剩下的唯一那张没有翻开的卡。要求:(1) 请用图形用户界面设计方法一的竞猜过程,(2) 利用蒙特卡洛仿真方法验证湖南经视台猜“黄金卡”节目三种不同方法的优劣。知识点:掌握事件处理机制;掌握随机采样的方法;掌握图形用户界面设计;(注:采用图形用户方式

4、设计)4、内容四 :设计一个记事本,菜单中要求有文件,编辑,和帮助。文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。知识点: 掌握 图形用户界面设计; 掌握基本类的设计与菜单设计; 掌握事件处理机制; 掌握使用异常处理方法。5、 内容五:一个多线程的动画知识点:Java中线程的实现;线程的优先级、调度与同步;设计步骤:窗口布局设计设计线程类MainPanel类的设计实验效果为:程序功能:每点击一次“Start”按钮,就会在画面上出现一个新的小球。这些小球按照一定的线路移动,而且小球的移动速度是相同的。四、算法分析、设计与描述1.算法分析、设计内容一:首先,

5、完成计算器界面的设计,构造Calculator类,申明基本属性,包括框架属性和按钮属性。另外在构造器中完成界面布局和各种按钮以及文本框的初始化,并且添加事件响应。其次在构造方法中,使用String数组存储每个按钮的名称,同时使用for循环完成每个按钮的显示初始化。最后在写出各事件,如数字事件、符号事件、等号事件,并写出各类运算函数,如加法、减法、乘法、除法,最后于主函数中调用各功能及运算内容二:本实验算法是要实现对iris.txt文件的读取并对此文件的每列元素进行处理(求和、求平均值)。为保证读取文件的正确性,采用字符流读取文件,然后再按行读取,读取一行处理一行。内容三:本程序算法要实现模拟黄

6、金卡猜选的第一种方法,并且要通过蒙特卡罗仿真法比较三种方法的优劣。该算法主要是Math类产生随机数方法的运用。通过Jframe进行布局分别用,并统计出三种猜测方法的猜中次数以及概率。模拟方法一:采用产生随机数的方法并判断两次产生的随机数是否相等,若相等则猜中,若不等则相反,并根据实验次数得出最后的正确结果的概率与次数。内容四:在算法设计上,先设计出计算器面板,菜单放在菜单条里,菜单项放在菜单里,在本程序中,设计了一个菜单栏和文本区,设计过程中用到了JScrollPane,JMenu,JTextPane, JMenuBar用来用菜单,菜单包括“文件”“编辑”“帮助”, JMenuItem用来用菜

7、单子项,JTextPane主要用来输入文本。内容五:在本程序中,创建一个窗体对象,把小球所在的内容面板添加到窗体中,把按钮所在的面板添加到内容面板的下方。创建一个线程类,创建了小球对象的同时,创建并启动线程。以实现多线程动画的操作。2算法描述(可插入流程图)内容一:用switch语句判断点击的是什么类型的按钮,是数字键则接受数字到输入框,是运算符则执行相应的运算,加减乘除算法的描述:用switch语句判断点击的是何种算法,定义一个变量mark存放运算符,实现对应的运算。进制转换算法描述:用if语句判断选中的进制对应的选择框(默认选中的是十进制),并对该事件做对应的按钮处理,用变量length判

8、断上次选中的是哪个进制的选择框,用来进行相互转换,然后进行运算。假如是非十进制,则先转化成十进制,然后再转化成需要的进制。内容二:用while循环对文件按行读取存放到字符型变量s里,只要s不为null则循环,在循环里加一个计数器count,用于记录文件的行数用于求平均值,每行按分隔符t进行行的分割,把每行的第i个元素累加到浮点型数组sumi里,读取完后在进行求平均值的运算。最后打印出每列总和及每列平均值。内容三:按钮界面:黄金卡中要设计到相应的一个开始游戏的按钮和一个重新开始的按钮,我采用的是JButton,分别建立的一个有“开始”和“重玩”文字的按钮。文本框设计:用JTextField来构建

9、相应的文本框,用JTextField()来构建单行文本框,以满足程序的要求和图形设计。颜色背景及字体的设定:JLabel 对象可以显示文本、图像或同时显示二者。内容四:记事本设计图如下,前先要创建一个Jishiben的类继承JFrame类作为最底层的容器。在构建Jishiben类时要初使化容器,初使化组件。内容五: 事件的面板要有两个按钮,Start按钮用来创建小球和启动线程,Close按钮用来关闭窗口结束进程。程序中小球类(Class Ball)有多个方法:Ball()构建小球的方法;draw()画填充小球的方法;move()小球移动的方法,当小球移动到屏幕边界则反弹。循环对线程进行处理:每

10、隔5毫秒运行一次。运行一次小球前进一个像素。五、程序设计1程序设计的基本思路内容一:先在主函数里把计算器的布局写好,然后写一个设置各个按钮行为的方法,在这个方法里给出一个最初发生的Event对象,由它来判断鼠标点击算法操作(加、减、乘除等),判断好了,然后就把文本框制空,然后定义一个int变量mark,mark用来保存当前进行何种运算。用户另输数字,点击“=” 在“=”操作里判断mark值,根据mark值判断是哪种算法,然后算出来,把结果射入文本框中,在文本框不为空时,改变进制选择框,则进行进制转换,把结果射入文本框中。内容二:在主函数里把要用到的变量定义好,然后尝试开始读取文件,并对读取的数

11、据相应的进行处理,若读取失败则打印“文件读取失败”。内容三:设计中,把布局设置为空布局,以设置各按钮的准确位置,利用JButton、JLavel和JTextField设定界面,设定出黄金卡图形界面的布局等因素,以此满足程序的基本设计要求。内容四:Help.show()启动程序输入文字新建打开保存关闭剪切复制粘贴制作人信息NewEditopenFileSaveListener eActionListenerCutActionCopyAction nPasteAction退出关闭程序内容五:在窗体构造函数BounceFrame()对窗体进行初始化,单机start 按钮,就马上调用创建小球,启动线程

12、的方法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 windowClos

13、ing(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=

14、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 But

15、ton 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 But

16、ton 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

17、 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;/*设置la

18、b是否要在输入数据的时候刷新,初始为否 */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.setForegr

19、ound(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.setBack

20、ground(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,

21、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

22、, 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 Co

23、lor(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(

24、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(bt

25、8);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.

26、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 );main

27、Frame.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(ma

28、inFrame);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(mai

29、nFrame);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.addActionListe

30、ner(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()=

31、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

32、(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.enab

33、le(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

34、_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

35、);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_1

36、0(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

37、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(); bre

38、ak;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: en

39、ter(); 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().s

40、ubstring(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.

41、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 */*

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号