




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 实验目的 加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。在对Java程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。 二、实验要求(1)问题描述准确、规范; (2)程序结构合理,调试数据准确、有代表性;(3)界面布局整齐,人机交互方便;(4)输出结果正确;(5)正确撰写实验报告。三、设计内容1、计算器计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。2、文本编辑器可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其他功能参照windows的文本编辑器。四实验步骤(1)上机实验之前,为课程设计的内容作好充分准备。对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。(2)按照实验目的和实验内容进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。(3)根据实验结果,写出实验报告。五. 源代码及运行结果1计算器源代码import java.awt.*;import java.awt.event.*;import java.lang.*; import javax.swing.*;public class jisuanqi extends WindowAdapter/创建三个面板 Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); TextField txt; private Button b = new Button21; private String ss = 7, 8, 9, /,清空 ,4, 5, 6, *,1/x, 1, 2, 3, -,平方, 0, ., =, +,n! ,关闭 ; static double a, sum=1; static String s, str ;/定义变量 创建对像/创建文本框 public static void main(String args) (new jisuanqi().frame(); public void frame() /设置文本框的名称 Frame fm = new Frame(简单计算器); for (int i = 0; i = 20; i+) bi = new Button(ssi); for (int i = 0; i = 19; i+) p2.add(bi); /创建按钮 并添加到P2 /按钮20背景色黄色 b20.setBackground(Color.yellow); txt = new TextField(); txt.setEditable(false);/不能编辑文本框里面的内容 txt.setBackground(Color.white); for (int i = 0; i = 20; i+) bi.addActionListener(new buttonlistener();/添加监听器 /设置关闭按钮 b20.addActionListener(new close(); fm.addWindowListener(this); p1.setLayout(new BorderLayout();/设置布局管理器 p1.add(txt, North);/p1面板放到区域南部 p2.setLayout(new GridLayout(4, 5,2,2);/布局:四行五列,间隔为二 p2.setBackground(Color.red); p3.setLayout(new BorderLayout(); p3.add(b20); 将三个面板分别放到不同位置 fm.add(p1, North); fm.add(p2, Center); fm.add(p3, South); fm.pack(); fm.setVisible(true);/都是些窗中设置 添加相关组件和监听器 public void windowClosing(WindowEvent e) System.exit(0);/退出系统 class buttonlistener implements ActionListener /编写监听器事件 通过按键得出给果 public void actionPerformed(ActionEvent e) Button btn = (Button) e.getSource(); if (btn.getLabel() = =) jisuan(); str = String.valueOf(a); txt.setText(str);/显示当前数字 s = ;/清零 else if (btn.getLabel() = +) /设置一个方法 jisuan(); txt.setText(); s = +; else if (btn.getLabel() = -) jisuan(); txt.setText(); s = -; else if (btn.getLabel() = /) jisuan(); txt.setText(); s = /; else if (btn.getLabel() = *) jisuan(); txt.setText(); s = *;else if (btn.getLabel()=平方) a=Double.parseDouble(txt.getText(); a*=a; txt.setText(+String.valueOf(a);else if (btn.getLabel()=n!) a=Double.parseDouble(txt.getText(); sum=1; for (int i=1;i=a;i+) sum=sum*i; txt.setText(+String.valueOf(sum);else ifbtn.getLabel()=1/x) a=Double.parseDouble(txt.getText(); txt.setText(+String.valueOf(1/a); else txt.setText(txt.getText() + btn.getLabel(); if (btn.getLabel() = 清空) txt.setText(); public void jisuan() /编写具体计算方法 if (s = +) a += Double.parseDouble(txt.getText(); else if (s = -) a -= Double.parseDouble(txt.getText(); else if (s = *) a *= Double.parseDouble(txt.getText(); else if (s = /) a /= Double.parseDouble(txt.getText(); else a = Double.parseDouble(txt.getText(); class close implements ActionListener /退出 public void actionPerformed(ActionEvent e) System.exit(0); .2.计算器运行界面(1) 计算器主界面 (2) 面板的实现1.创建三个面板分别是显示数字的面板、按钮的面板和“关闭”的面板 Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel();2.创建一个文本框参数 TextField txt;3.创建一群按钮参数并给按钮赋值 private Button b = new Button21; private String ss = 7, 8, 9, /,清空 ,4, 5, 6, *,1/x, 1, 2, 3, -,平方, 0, ., =, +,n! ,关闭 ;4.创建文本框 public static void main(String args) (new jisuanqi().frame(); 5.设置文本框方法 public void frame() /设置文本框的名称 Frame fm = new Frame(简单计算器);6.设置按钮 for (int i = 0; i = 20; i+) bi = new Button(ssi); 7.设将按钮添加到面板 for (int i = 0; i = 19; i+) p2.add(bi); /创建按钮 并添加到P2 8.设置按钮20背景色黄色 b20.setBackground(Color.yellow);9.创建文本框,并规定不能编辑内容和背景为白色 txt = new TextField(); txt.setEditable(false); txt.setBackground(Color.white);10.为按钮添加监听器for (int i = 0; i = 20; i+) bi.addActionListener(new buttonlistener();/添加监听器 11.设置“关闭”按钮可以关闭界面并设置监听器 b20.addActionListener(new close(); fm.addWindowListener(this); 12.设置布局 p1.setLayout(new BorderLayout();/设置布局管理器 p1.add(txt, North);/p1面板放到区域南部 p2.setLayout(new GridLayout(4, 5,2,2);/布局:四行五列,间隔为二 p2.setBackground(Color.red); p3.setLayout(new BorderLayout(); p3.add(b20); 13.将三个面板分别放到不同位置 fm.add(p1, North); fm.add(p2, Center); fm.add(p3, South); fm.pack(); fm.setVisible(true);/都是些窗中设置 添加相关组件和监听器 14.退出系统 public void windowClosing(WindowEvent e) System.exit(0); (3) 将按钮添加到计算这个事件中1.编写监听器事件 通过按键得出给果 public void actionPerformed(ActionEvent e) /将按钮赋予这个事件中 Button btn = (Button) e.getSource(); 2.如果点击“=”这个按钮,将出现当前数字 if (btn.getLabel() = =) jisuan(); str = String.valueOf(a); txt.setText(str);/显示当前数字 s = ;/清零 3.如果点击“+”“-”“*”“/”分别完成一个方法并将结果显示到文本框else if (btn.getLabel() = +) /设置一个方法 jisuan(); txt.setText(); s = +; else if (btn.getLabel() = -) jisuan(); txt.setText(); s = -; else if (btn.getLabel() = /) jisuan(); txt.setText(); s = /; else if (btn.getLabel() = *) jisuan(); txt.setText(); s = *;4.如果点击“平方”则当前数字与原数字形成即完成相关方法结果显示最终的数字else if (btn.getLabel()=平方) a=Double.parseDouble(txt.getText(); a*=a; txt.setText(+String.valueOf(a);/显示a5.当输入“n!”,就用for循环完成阶乘,此方法属于c语言基础方法,不做相关解释else if (btn.getLabel()=n!) a=Double.parseDouble(txt.getText(); sum=1;/归一 for (int i=1;i=a;i+) sum=sum*i; txt.setText(+String.valueOf(sum);/文本框中显示“sum”的数值 6.当输入“1/x”时,显示1/a。else ifbtn.getLabel()=1/x) a=Double.parseDouble(txt.getText(); txt.setText(+String.valueOf(1/a); 7如果输入“清空”文本框成为空文本框 else txt.setText(txt.getText() + btn.getLabel(); if (btn.getLabel() = 清空) txt.setText(); (4) 设置“jisuan”方法 1.编写具体计算方法其实这些方法可以放到上面事件的实现中,从 “平方”,“n!”,“1/x”就可以看出。但为了程序的美观和高识别性,我们传建一个方法来实现 if (s = +) a += Double.parseDouble(txt.getText(); else if (s = -) a -= Double.parseDouble(txt.getText(); else if (s = *) a *= Double.parseDouble(txt.getText(); else if (s = /) a /= Double.parseDouble(txt.getText(); else a = Double.parseDouble(txt.getText(); 3 文本编辑器源代码import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;import java.io.*;public class TextEditor public static void main(String args) TextFrame frame=new TextFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); class TextFrame extends JFrame /文件中的参数 File file = null; static String d,k,s; /编辑中的参数 String selected,text; /格式中的参数 String sizeNames =5,10,15,20,25,30,35,40,45,50; String colorNames =黑色,红色,蓝色,绿色,白色,黄色,粉红; String fontNames=宋体,华文行楷,隶书,黑体,仿宋,华文彩云,楷体,方正姚体; String styleNames = 粗体, 斜体 ; public TextFrame() /设置文本框大小、名称 setTitle(西西牌文本编辑器); setSize(400,400); addWindowListener(new LogoutAction(); filechooser=new JFileChooser();/创建一个文件选择器 /创建文本区 t1=new JTextArea(0,0);/面板与文本框无间隙 scrollPane=new JScrollPane(t1);/设置滚动条 getContentPane().add(scrollPane); /创建菜单栏 menuBar=new JMenuBar(); setJMenuBar(menuBar); /文件 files=new JMenu(文件(F); files.setMnemonic(F);/设置快捷键 newItem=new JMenuItem(新建(N),N); openItem=new JMenuItem(打开(O).,O); saveItem=new JMenuItem(保存(S),S); exitItem=new JMenuItem(退出(E),E); /设置监听器 newItem.addActionListener(new FileListener(); openItem.addActionListener(new FileListener(); saveItem.addActionListener(new FileListener(); exitItem.addActionListener(new FileListener(); /设置加速器 newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK); openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK);saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); /添加按钮到文件菜单栏 files.add(newItem); files.add(openItem); files.add(saveItem); files.add(exitItem); /编辑 edit=new JMenu(编辑(E); edit.setMnemonic(E); /创建菜单项 cutItem=new JMenuItem(剪切(T); copyItem=new JMenuItem(复制(C); pasteItem=new JMenuItem(粘贴(P); deleteItem=new JMenuItem(删除(L); selectAllItem=new JMenuItem(全选(A); /设置加速器 cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK); copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK); pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK); deleteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK); selectAllItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK); /设置监听器 cutItem.addActionListener(new EditListener(); copyItem.addActionListener(new EditListener(); pasteItem.addActionListener(new EditListener(); deleteItem.addActionListener(new EditListener(); selectAllItem.addActionListener(new EditListener(); /添加按钮到“编辑”菜单栏 edit.add(cutItem); edit.add(copyItem); edit.add(pasteItem); edit.add(deleteItem); edit.add(selectAllItem); / 格式 format=new JMenu(格式(O); format.setMnemonic(O); sizeItem=new JMenu(字体大小); colorItem=new JMenu(字体颜色); fontItem=new JMenu(字体); styleItem=new JMenu(字体风格); sizes = new JRadioButtonMenuItemsizeNames.length; colors = new JRadioButtonMenuItemcolorNames.length; fonts = new JRadioButtonMenuItemfontNames.length; styles=new JCheckBoxMenuItemstyleNames.length; styleGroup=new ButtonGroup(); fontGroup = new ButtonGroup(); colorGroup = new ButtonGroup(); sizeGroup = new ButtonGroup(); /将每种元素放进菜单项和按钮组中 for (int i=0;isizes.length;i+) sizesi=new JRadioButtonMenuItem(sizeNamesi); sizesi.addItemListener(new FormatListener(); sizeGroup.add(sizesi); sizeItem.add(sizesi); for (int i=0;icolors.length;i+) colorsi=new JRadioButtonMenuItem(colorNamesi); colorsi.addItemListener(new FormatListener(); colorGroup.add(colorsi); colorItem.add(colorsi); for (int i=0;ifonts.length;i+) fontsi=new JRadioButtonMenuItem(fontNamesi); fontsi.addItemListener(new FormatListener(); fontGroup.add(fontsi); fontItem.add(fontsi); for(int i=0;istyles.length;i+) stylesi=new JCheckBoxMenuItem(styleNamesi); stylesi.addItemListener(new FormatListener(); styleItem.add(stylesi); format.add(sizeItem); format.add(colorItem); format.add(fontItem); format.add(styleItem); /查看 view=new JMenu(关于我们(us); view.setMnemonic(U); formItem=new JMenuItem(组成成员); formItem.addActionListener(new ViewListener(); impressionItem=new JMenuItem(学习感言); impressionItem.addActionListener(new ViewListener(); view.add(formItem); view.add(impressionItem); /将菜单添加到菜单栏中 menuBar.add(files); menuBar.add(edit); menuBar.add(format); menuBar.add(view); /弹出式菜单及其菜单项 popup=new JPopupMenu(); cutItemPop=new JMenuItem(剪切(T); cutItemPop.addActionListener(new EditListener(); copyItemPop=new JMenuItem(复制(C); copyItemPop.addActionListener(new EditListener(); pasteItemPop=new JMenuItem(粘贴(P); pasteItemPop.addActionListener(new EditListener(); deleteItemPop=new JMenuItem(删除(L); deleteItemPop.addActionListener(new EditListener(); selectAllItemPop=new JMenuItem(全选(A); selectAllItemPop.addActionListener(new EditListener(); /添加 popup.add(cutItemPop); popup.add(copyItemPop); popup.add(pasteItemPop); popup.add(deleteItemPop); popup.add(selectAllItemPop); /实现弹出式菜单的弹出触发器 t1.addMouseListener(new MouseAdapter() /释放按钮触发事件 public void mouseReleased(MouseEvent e) if(e.isPopupTrigger()/指定弹出式菜单的成员以及显示位置 popup.show(e.getComponent(),e.getX(),e.getY(); ); private class FileListener implements ActionListener public void actionPerformed(ActionEvent e) /新建 if(e.getSource()=newItem) t1.setText(); file=null; /打开 if(e.getSource()=openItem) if(file !=null) filechooser.setSelectedFile(file); int m=filechooser.showOpenDialog(TextFrame.this); if( m=JFileChooser.APPROVE_OPTION) file=filechooser.getSelectedFile(); openFile(); /保存 if(e.getSource()=saveItem) d=t1.getText(); if(file!=null) filechooser.setSelectedFile(file);/显示保存对话框 int m=filechooser.showSaveDialog(TextFrame.this); if(m=JFileChooser.APPROVE_OPTION) file=filechooser.getSelectedFile(); saveFile(); /退出 if(e.getSource()=exitItem) k=t1.getText();/如果文本为空或已保存,直接退出,否则保存后退出 if(k.equals() System.exit(0); else if(k.equals(d) System.exit(0); else TextFrame f=new TextFrame();/新建确认型对话框 int n=JOptionPane.showConfirmDialog( f,是否将文件保存到当前位置?, 退出,JOptionPane.YES_NO_CANCEL_OPTION); if(n=JOptionPane.YES_OPTION)/如果选择“是”,则保存文件 if(file!=null) filechooser.setSelectedFile(file); int m=filechooser.showSaveDialog(TextFrame.this); if(m=JFileChooser.APPROVE_OPTION) file=filechooser.getSelectedFile(); saveFile(); if(n=JOptionPane.NO_OPTION) System.exit(0); void openFile()/打开的方法 try FileReader fr=new FileReader(file); /FileReader类用于读取字符流 int len=(int)file.length(); char buffer=new charlen; /以file的字符数开辟一段缓冲区 fr.read(buffer,0,len); /将fr从file中读取的字符读入数组buffer中的某一部分, fr.close(); /关闭该流 t1.setText(new String(buffer); catch(Exception e)/抛出异常 e.printStackTrace(); void saveFile()/保存的方法 try FileWriter fw=new FileWriter(file); /FileWriter类用于写入字符流 fw.write(t1.getText();/将t1里的内容写入file fw.close(); /关闭该流 catch(Exception e) e.printStackTrace(); private class LogoutAction extends WindowAdapter/实现点击窗口退出事件监听器 public void windowClosing(WindowEvent e) s=t1.getText(); if(s.equals() System.exit(0); else if(s.equals(d) System.exit(0); else TextFrame f=new TextFrame();/新建确认型对话框 int n=JOpt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谱细胞抗体鉴定技术体系
- 秦汉时期名医成就与医学发展
- 先进特钢制造技术
- 我的秘密课文讲解
- 汽车设计核心要点解析
- 牙周病检查与诊断技术
- 软件销售年度汇报
- 人体器官大脑讲解
- 人工智能算法核心功能使用方法详解
- 胸心外科诊疗指南解读
- 重症监护室护理人文关怀
- 造价咨询廉政管理制度
- 隧道养护资金管理制度
- Android移动应用开发(微课版)全套教学课件
- 腰椎间盘突出症试讲教案
- 计算机信息安全管理培训
- 体育与健康核心素养引领下的大单元教学
- 道路工程材料第7版 课件全套 -孙大权 0-绪论-6 无机结合料稳定材料
- 如何高质量开好经营分析会
- 医疗护理医学培训 危重病人的风险评估及护理安全课件
- 香港上市公司分拆上市指引 2024
评论
0/150
提交评论