版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计课程名称Java 程序设计学生姓名谭杰学号专业班级信管 1122指导教师罗毅辉2013年 12月 30日JAVA课程设计一、实验目的通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。信管11 级学生的课程设计主要是Java 语言程序设计的实现。通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们掌握知识的宽度、深度及对知识的综合运用能力。二、实验环境电脑型号:联想G470 笔记本电脑操作系统 : Windows7 旗舰版( 64 位)处理器: Intel(R)Core(TM)i3-2330M CPU 2.50GHz 2.50
2、GHz双核处理器内存: 2.00GB软件: Eclipse7.1、JSDK1.8三、实验内容内容一:设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。(必做)知识点:掌握图形用户界面设计;掌握基本类的设计与使用;掌握事件处理机制;掌握使用异常处理方法。内容二: 利用 JAVA的输入输出流,打开文件iris.txt,求出该文件每列的总和及平均值。(注意观察iris.txt文件的分割符)(必做)知识点:掌握使用 JAVA的输入输出流掌握使用 String类以及和基本数据类型的转换。内容三:利用蒙特卡罗
3、仿真逼近PI 的值。(必做)知识点:掌握使用 JAVA随机采样掌握使用 String类以及和基本数据类型的转换。内容六:设计一个记事本,菜单中要求有文件,编辑,和帮助。文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。知识点:掌握图形用户界面设计;掌握基本类的设计与菜单设计;掌握事件处理机制;掌握使用异常处理方法。四、算法分析、设计与描述1. 算法分析和设计内容一:算法分析:首先,设计对输入数字的进行转换,不进行转换操作则默认为十进制,然后进行符号转换操作以及正弦函数等, 接着可以进行加减乘除等运算, 添加“ C”、“CE”按钮进行退格和清空操作,清空操作显
4、示“ 0” ,最后在帮助中显示开发人信息。功能及界面设计:功能 1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。功能 2:输入数字后,点击进制转换 , 可转换成二、八进制;按“ exp”“ log ” 键,则进行 e 次幂运算和自然对数运算;按“ tan ”“cos”“sin ”则进行三角函数运算。功能 3:按“ +”“- ”“ * ”“”分别进行四则运算功能 4:在任何时候按下“ +- ”键,计算器文本框上的数字置反号。功能 5:第一次按下“运算”键,再按下数字键,将重新输入第二个数字。再次按下“运算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。功能 6:
5、按下“ C”键向前退格,按下“ CE”键,数据被全部清除功能 7:按下“帮助”键查看制作人信息功能 8:按下“选项”键,点“退出”键退出内容二:此程序主要是实现对输入的数字字符串进行统计(列的均值与和)。在算法设计上,运用 java 程序输入输出流,以及调用Stringtokennizer类来实现分词并按水平制表方式读取文本内容,调用BufferedReader 类中的 readLine ()方法读取文本行,这样就方便对文本行的统计(注:文本行与列等长)。其次用两个数组分别存放列的均值和列的和。在统计输入的字符串时,可以定义相应的统计计数变量,对输入的字符串按每一个字符截取进行判断。在判定时,
6、若符合条件则在相应的统计数上加 1,若不符则直接跳至下一个判断模块。整个程序就实现了对文本内容的行列统计功能。内容三:此程序主要是利用蒙特卡罗仿真逼近 PI 的值。在算法设计上,先用 Scanner 来让用户输入一个随机数的基数,用 Math 类调用其类方法 random() 产生随机数,并用 Math 类的 pow()方法判断该随机数是否落在指定的范围内,然后统计在范围内的数的个数,最后通过随机数和基数算出圆面积从而算出Pi 的值。内容六:算法分析:此程序应当符合大众化,因为记事本是一个常用程序,因此我们常用计算机系统带的记事本进行设计本程序,其功能有以下几个方面:(1) “菜单”中有“文件
7、” ,“编辑”,“帮助”三个主菜单。(2) “文件”中有“新建” , “打开” , “保存” , “退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。(3) “编辑”中有“剪切” , “复制”,“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字。(4) “帮助”菜单中有“关于”用来显示作者信息。2算法描述(可插入流程图)内容一:用switch语句判断点击的是什么类型的按钮,是数字键则接受数字到输入框,是运算符则执行相应的运算,加减乘除算法的描述: 用 switch语句判断点击的是何种算法,定义一个变量mark 存放运算符,实现对应的运算。进制转换算法描述:用if语句判断选中
8、的进制对应的按钮(默认是十进制),并对该事件做对应的按钮处理,用变量length判断上次选中的是哪个进制的按钮,用来进行相互转换,然后进行运算。假如是非十进制,则先转化成十进制,然后再转化成需要的进制。内 容二 :程 序 应 用JAVA 的输 入 输 出流 , 打 开 文 件iris.txt,调 用StringTokenizer类创建一个分析器按照并按水平制表的分词方法读取文件中的内容,调用 BufferedReader类中的方法 readLine 读取文本行。再利用两个数组存放文件中列的和以及各列的平均值,这里用count 记录读取的行数, sumk 存放各列的和, sumkcount存放各
9、列的平均值(注意输入的为长宽相等的表格形式,内容为数值)。内容三:用一个 for循环来产生随机数,并判断是否在圆内,在圆内i+1 ,直到循环完毕,输出 i 的个数,用 0.05*(double)im输出 Pi 的值。内容五:第一步:程序通过创建一个窗口,将文本区和菜单条添加到窗口上。第二步 : 以窗口作为监视器对部分菜单项监听,通过实现这些按钮的actionPerformed()方法,来实现文件的打开,保存,编辑,复制粘贴,及显示开发人的版本信息等。 (注意:这里是通过JOptionPane.showMessageDialog ()方法来开启一个面板显示开发人的版本信息)五、程序设计1 程序设
10、计的基本思路内容一:1). 通过继承 JFrame 类和实现监听器接口ActionListener和 ItemListener 接口来完成窗口的布局管理和个组件相对应的事件。2).定义一个窗口作为容器来合理安置一个标签、五个面板和三个同组的选择框等组件 ,标签用来显示输入的数据和运算的结果,第一个面板用来存放数字键、“.”和“ =”。第二个面板用来存放四则运算的运算符,第三个面板用来存放“返回”、“清除”和“ sqrt”。内容二:1). 利用 java 输入输出流,来打开记事本,调用StringTokenizer类创建一个分析器按照并按水平制表的分词方法读取文件中的内容,调用BufferedR
11、eader类中的方法 readLine 读取文本行。2). 用两个数组分别存列的均值和列的和并输出结果并用try.catch语句来捕捉文本读取时触发的错误事件。内容三:输入要测试的基数,然后调用random() 方法来产生 01 的随机数,通过判断产生的随机数是否符合园内的方程,并进行计数,再由该数除以基数,得到仿真圆的面积,再除以圆半径的平方得出仿真的Pi 值。内容六:1). 基于内容五按照要求将一个带有三个菜单的菜单条添加到窗口顶端,再将一个文本区添加到窗口中央,三个菜单各自添加相应的菜单项。2). 通过对菜单项添加窗口作为监视器,然后实现actionPerformed方法来实现实现文件的
12、打开,保存,编辑,复制粘贴,及显示开发人的版本信息等。2. 程序代码内容一:import java.awt.*; import java.awt.event.*; import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListenerprivate Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField dis
13、playField;计算结果显示区private String lastCommand;保存 +,-,*,= 命令 0private double result;保存计算结果private boolean start;判断是否为数字的开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButton button_sqrt,button_plusminus,button_CE,button_cancel
14、,button_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button _0,button_plus,button_minus,button_multiply,button_divide,button_point,button_equal,button_log,button_tan,button_cos,button_sin,button_exp;public Calculator()构造方法设置布局、为按钮注册事件监听器super("Calculator");this
15、.setLocation();this.setSize();this.setResizable(true);this.setLayout(new GridLayout(7,1);this.addmyMenu();调用成员方法添加菜单displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = "="JPanel panel0=new JPanel();panel0.setLayout(new Gri
16、dLayout();JPanel panel1=new JPanel();panel1.setLayout(new GridLayout();this.add(panel1);button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+-");button_exp=new JButton("exp");button_CE=new JButton("C");button_cancel=new JButton("CE");JPanel
17、 panel2=new JPanel();panel2.setLayout(new GridLayout();this.add(panel2);button_7=new JButton("7");button_8=new JButton("8");button_9=new JButton("9");button_log=new JButton("log");button_divide=new JButton("");JPanel panel3=new JPanel();panel3.setLay
18、out(new GridLayout();this.add(panel3);button_4=new JButton("4");button_5=new JButton("5");button_6=new JButton("6");button_tan=new JButton("tan");button_multiply=new JButton("*");JPanel panel4=new JPanel();panel4.setLayout(new GridLayout();this.add(p
19、anel4);button_1=new JButton("1");button_2=new JButton("2");button_3=new JButton("3");button_cos=new JButton("cos");button_minus=new JButton("-");JPanel panel5=new JPanel();panel5.setLayout(new GridLayout();this.add(panel5);button_0=new JButton("
20、0");button_point=new JButton(".");button_equal=new JButton("=");button_sin=new JButton("sin");button_plus=new JButton("+");panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel);panel2.a
21、dd(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_c
22、os);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this);button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(this);button_
23、cancel.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this
24、);button_tan.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addAct
25、ionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose(); this.setVisible(true);注册窗口监听器private void addmyMenu()菜单的添加JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JMenu("选项
26、 ");JMenu m2=new JMenu("进制转换 ");JMenuItem m1_exit=new JMenuItem(" 退出 ");m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem(" 二进制 ");m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem(" 八进制 ");m2_bjz.addActionListener(this);JMenuItem
27、 m2_sljzew JMenuItem("十六制 ");m2_bjz.addActionListener(this);JMenu m3 = new JMenu("帮助 ");JMenuItem m3_Help = new JMenuItem("作者 ");m3_Help.addActionListener(this);dialog = new Dialog(this,"关于 ",true);模式窗口dialog.setSize(240,80);label_dialog = new Label("&quo
28、t;,Label.CENTER);标签的字符串为空,居中对齐dialog.add(label_dialog);dialog.addWindowListener(this);为对话框注册窗口事件监听器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);m2.add(m2_sljzmenubar.add(m2);m3.add(m3_Help);menubar.add(m3);public void actionPerformed(ActionEvent e)按钮的单击事件处理方法if(e.getSource().equals(
29、button_1)|e.getSource().equals(button_2)| e.getSource().equals(button_3)|e.getSource().equals(button_4)| e.getSource().equals(button_5)| e.getSource().equals(button_6)| e.getSource().equals(button_7)| e.getSource().equals(button_8)| e.getSource().equals(button_9) |e.getSource().equals(button_0)| e.g
30、etSource().equals(button_point)|e.getSource().equals(button_plusminus)|e.getSource().equals(button_cancel)|e.getSource().equals(button_CE)非运算符的处理方法String input=e.getActionCommand();if (start)displayField.setText("");start=false;if(input.equals("+-")displayField.setText(displayFie
31、ld.getText()+"-");if(!input.equals("+-")String str=displayField.getText();if(input.equals("C")退格键的实现方法if(str.length()>0)displayField.setText(str.substring(0,str.length()-1);else if(input.equals("CE")清零键的实现方法displayField.setText("0");start=true;els
32、edisplayField.setText(displayField.getText()+input);else if (e.getActionCommand()="二进制 ")二进制的转换int n=Integer.parseInt(displayField.getText();displayField.setText(Integer.toBinaryString(n);else if (e.getActionCommand()="八进制 ")八进制的转换int n=Integer.parseInt(displayField.getText();dis
33、playField.setText(Integer.toOctalString(n);else if (e.getActionCommand()="十六进制 ")十六进制的转换int n=Integer.parseInt(displayField.getText();displayField.setText(Integer.toHexString(n);else if (e.getActionCommand()="退出 ")选项中退出的处理方法System.exit(0);else if (e.getActionCommand()="作者 &q
34、uot;)按下 '帮助 '菜单栏中用法的处理方法label_dialog.setText("谭杰制作n学号:dialog.setLocation();dialog.setVisible(true);else各运算符的识别String command=e.getActionCommand();if(start)lastCommand=command;elsecalculate(Double.parseDouble(displayField.getText();lastCommand=command;start=true;public void calculate(dou
35、ble x)各运算符的具体运算方法double d=0;if (lastCommand.equals("+")result+= x;else if (lastCommand.equals("-")result-=x;else if (lastCommand.equals("*")result*=x;else if (lastCommand.equals("")result=x;else if (lastCommand.equals("=")result=x;else if (lastComman
36、d.equals("sqrt")d=Math.sqrt(x);result=d;else if (lastCommand.equals("exp")d=Math.exp(x);result=d;else if (lastCommand.equals("log")d=Math.log(x);result=d;else if (lastCommand.equals("tan")d=Math.tan(x);result=d;else if (lastCommand.equals("cos")d=Mat
37、h.cos(x);result=d;else if (lastCommand.equals("sin")d=Math.sin(x);result=d;displayField.setText(""+ result);public void windowClosing(WindowEvent e)if(e.getSource()=dialog)dialog.setVisible(false);elseSystem.exit(0);隐藏对话框public void windowOpened(WindowEvent e)public void windowAc
38、tivated(WindowEvent e)public void windowDeactivated(WindowEvent e)public void windowClosed(WindowEvent e)public void windowIconified(WindowEvent e)public void windowDeiconified(WindowEvent e) public static void main(String args)Calculator calculator=new Calculator();class WinClose implements WindowL
39、istenerpublic void windowClosing(WindowEvent e)单击窗口关闭按钮时触发并执行实现窗口监听器接口System.exit(0);结束程序运行public void windowOpened(WindowEvent e)public void windowActivated(WindowEvent e)public void windowDeactivated(WindowEvent e)public void windowClosed(WindowEvent e)public void windowIconified(WindowEvent e)pub
40、lic void windowDeiconified(WindowEvent e)内容二:public class Iostream public static void main(String args)System.out.println("读取文件 iris.txt中."+"n");float sum = new float4;存放所有列的和float average = new float4;存放平均值int count=0;用来记录文件的行数String str = new String5,s;文件读取缓冲区tryFileReader file
41、 = new FileReader("e:iris.txt");BufferedReader br= new BufferedReader(file);s = br.readLine();while( s!=null)循环读取所有的数int i=0;StringTokenizer tokenizer = new StringTokenizer(s,"t"); while(tokenizer.();float temp = Float.parseFloat(stri);把字符型数转换成数字类型sumi=sumi+temp;i+;s = br.readLin
42、e();count+;br.close();file.close();catch(Exception e) System.out.print(" 文件读取错误 "); for(int k=0;k<4;k+) averagek=sumkcount;System.out.println("第"+(k+1)+" 列的和是 : "+sumk);System.out.println("第"+(k+1)+" 列的平均值是 :"+averagek+"n");内容三:import ja
43、va.util.*;public class randomTest public static void main(String args) TODO Auto-generated method stubdouble a,b,j = 0.0;int i = 0,n=0,m = 0;Scanner s = new Scanner(System.in);m = s.nextInt();for (;n<m;n+) a = Math.random();b = Math.random();if (Math.pow (a-0.5,2.0)+Math.pow (b-0.5,2.0)<=0.25)
44、i+;System.out.println("落在圆里的点的个数: "+i);j =(double) im;System.out.println("Pi:"+j0.25);内容六:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;class MyPad extends JFrame implements ActionListener, KeyListenerboolean txtChanged = false;String fname = &qu
45、ot;"JMenuBar mbar;JMenu mnuFile, mnuEdit, mnuHelp;JMenuItem fileNew, fileOpen, fileSave, fileExit;JMenuItem editCut, editCopy, editPaste, editSelectAll, editDel;JMenuItem iconNew, iconOpen, iconSave;ImageIcon iconCut, iconCopy, iconPaste;JButton bttnNew, bttnOpen, bttnSave;JButton bttnCut, bttn
46、Copy, bttnPaste;JTextArea txtPad;Container c;MyPad()initComponents();setTitle("MyPad");setSize();setVisible(true);setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WinHandler(); void initComponents()c = getContentPane();c.setLayout(new BorderLayout();initMenu();txtPad =
47、new JTextArea();Font f = new Font("Comic Sans MS", Font.PLAIN, 20);txtPad.setFont(f);txtPad.addKeyListener(this);JScrollPane jscroll = new JScrollPane(txtPad);c.add(jscroll, BorderLayout.CENTER);void initMenu()mbar = new JMenuBar();mnuFile = new JMenu("文件 ");mnuEdit = new JMenu(&
48、quot; 编辑 ");mnuHelp= new JMenu(" 帮助 ");fileNew = new JMenuItem("新建 ");fileOpen= new JMenuItem("打开 ");fileSave= new JMenuItem("保存 ");fileExit = new JMenuItem("退出 ");editCut = new JMenuItem("剪切 ");editCopy= new JMenuItem("复制 ")
49、;editPaste = new JMenuItem("黏贴 ");editSelectAll = new JMenuItem("全选 ");editDel= new JMenuItem("删除 "););mnuFile.add(fileSave);mnuFile.add(fileExit);mnuEdit.add(editCut);mnuEdit.add(editCopy);mnuEdit.add(editPaste);mnuEdit.addSeparator();mnuEdit.add(editSelectAll);mnuEdit
50、.add(editDel);mnuHelp.add(.addActionListener(this);fileSave.addActionListener(this);fileExit.addActionListener(this);editCut.addActionListener(this);editCopy.addActionListener(this);editPaste.addActionListener(this);editSelectAll.addActionListener(this);editDel.addActionListener(this);) | src.equals(fileOpen)openFile();else if(src.equals(bttnSave) | src.equals(fileSave)saveFile();else if(src.equals(fileExit)exitFile();else if(src.equals(bttnCut) | src.equals(editCut)txtPad.cut();else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 档案托管合同范本
- 代理电子合同范本
- 农业招标合同范本
- 齐齐哈尔大学《马克思主义经典著作选读》2023-2024学年第一学期期末试卷
- 齐齐哈尔大学《教师职业道德》2022-2023学年第一学期期末试卷
- 钢化玻璃购销协议2024细则
- 2024年销售代表授权协议样本文件
- 2024届甘肃省天水市高中名校高三下学期5月联考数学试题试卷
- 草拟合同范本
- 货款抵押货物合同范本格式
- 公司网络安全制度
- 跨学科主题学习- 探索外来食料作物传播史(课件)七年级地理上册同步高效备课课件(人教版2024)
- 学校编制外临时代课教师聘用管理办法
- 南京市江宁区2023-2024三年级数学上册期中试卷及答案
- GB/T 22838.7-2024卷烟和滤棒物理性能的测定第7部分:卷烟含末率
- 蚌埠医学院儿科学教案
- 第四单元认位置(单元测试)2024-2025学年一年级数学上册苏教版
- 个人加工厂转让协议书模板
- 沪教版 八年级(上)数学 正比例函数与反比例函数重点题型专项训练 (含解析)
- 《电工与电子技术》课程标准
- 建设工程价款结算暂行办法-20220522094514
评论
0/150
提交评论