java课程设计实验报告_第1页
java课程设计实验报告_第2页
java课程设计实验报告_第3页
java课程设计实验报告_第4页
java课程设计实验报告_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、一 实验目的加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。在上机实验中,提高学生对Java 语言各部分内容的综合使用能力,逐步掌握 Java 语言程序设计的规律与技巧。在对 Java程序的调试过程中, 提高学生分析程序中出现的错误和排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。二、实验要求(1) 问题描述准确、规范;(2) 程序结构合理,调试数据准确、有代表性;(3) 界面布局整齐,人机交互方便;(4) 输出结果正确;(5) 正确撰写实验报告

2、。三、设计内容1、计算器计算器要有GUI 界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算, 要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。2、文本编辑器可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其他功能参照windows 的文本编辑器。1四实验步骤(1) 上机实验之前,为课程设计的内容

3、作好充分准备。对每次上机需要完成的任务进行认真的分析, 画出程序流程图, 手工写出符合任务要求的程序清单, 准备出调试程序使用的数据,以便提高上机实验的效率。(2) 按照实验目的和实验内容进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。(3) 根据实验结果,写出实验报告。五 . 源代码及运行结果1计算器源代码import java.awt.*;import java.awt.event.*;import java.lang.*;import javax.swing.*;public class jisuanqi extends WindowAdapter

4、/ 创建三个面板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","

5、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(

6、)2/ 设置文本框的名称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.wh

7、ite);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.setBackgrou

8、nd(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);/退出系统3class buttonlistener impleme

9、nts 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("&

10、quot;);s = "+"else if(btn.getLabel() = "-")jisuan();txt.setText("");s = "-"else if(btn.getLabel() = "/")jisuan();txt.setText("");s = "/";4else if(btn.getLabel() = "*")jisuan();txt.setText("");s = "*"e

11、lse 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()

12、="1/x")a=Double.parseDouble(txt.getText();txt.setText(""+String.valueOf(1/a);elsetxt.setText(txt.getText() + btn.getLabel();if (btn.getLabel() = "清空 ")txt.setText("");public void jisuan() /编写具体计算方法5if (s = "+")a += Double.parseDouble(txt.getText();el

13、se if (s = "-")a -= Double.parseDouble(txt.getText();else if (s = "*")a *= Double.parseDouble(txt.getText();else if (s = "/")a /= Double.parseDouble(txt.getText();elsea = Double.parseDouble(txt.getText();class close implements ActionListener/ 退出public void actionPerform

14、ed(ActionEvent e)System.exit(0);.2.计算器运行界面(1) 计算器主界面6( 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&quo

15、t;, "/","清空 " ,"4", "5", "6", "*","1/x","1", "2","3", "-","平方 ", "0", ".", "=", "+","n!" ,"关闭 " ;4. 创建文本框public static v

16、oid 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); /创建按钮并添加到P28. 设置按钮 20 背景色黄色b20.setBackground(Color.yellow);9.

17、 创建文本框,并规定不能编辑内容和背景为白色txt = new TextField("");txt.setEditable(false);txt.setBackground(Color.white);710. 为按钮添加监听器for (int i = 0; i <= 20; i+)bi.addActionListener(new buttonlistener();/添加监听器11. 设置“关闭”按钮可以关闭界面并设置监听器b20.addActionListener(new close();fm.addWindowListener(this);12. 设置布局p1.se

18、tLayout(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

19、");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() = "="

20、;)jisuan();8str = String.valueOf(a);txt.setText(str);/显示当前数字s = ""/清零3. 如果点击“ +”“ - ”“ * ”“ / ”分别完成一个方法并将结果显示到文本框 else if(btn.getLabel() = "+")/ 设置一个方法jisuan();txt.setText("");s = "+"else if(btn.getLabel() = "-")jisuan();txt.setText("");s =

21、 "-"else if(btn.getLabel() = "/")jisuan();txt.setText("");s = "/";else if(btn.getLabel() = "*")jisuan();txt.setText("");s = "*"4. 如果点击“平方”则当前数字与原数字形成即完成相关方法结果显示最终的数字else if(btn.getLabel()="平方 ")9a=Double.parseDouble(txt.

22、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 ”时

23、,显示 1/a 。 else ifbtn.getLabel()="1/x")a=Double.parseDouble(txt.getText();txt.setText(""+String.valueOf(1/a);7如果输入“清空”文本框成为空文本框elsetxt.setText(txt.getText() + btn.getLabel();if (btn.getLabel() = "清空 ")txt.setText("");( 4)设置“ jisuan ”方法1. 编写具体计算方法其实这些方法可以放到上面事件的

24、实现中,从 “平方”,“ n!”,“ 1/x ”就可以看出。但为了程序的美观和高识别性,我们传建一个方法来实现if (s = "+")a += Double.parseDouble(txt.getText();else if (s = "-")a -= Double.parseDouble(txt.getText();else if (s = "*")10a *= Double.parseDouble(txt.getText();else if (s = "/")a /= Double.parseDouble(tx

25、t.getText();elsea = Double.parseDouble(txt.getText();3 文本编辑器 源代码import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;import java.io.*;public class TextEditorpublic static void main(String args)TextFrame frame=new TextFrame(); frame.setDefaultCloseOperation(JFrame

26、.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","

27、50"String colorNames ="黑色 "," 红色 "," 蓝色 "," 绿色 "," 白色 "," 黄色 "," 粉红 "String fontNames="宋体 "," 华文行楷 "," 隶书 "," 黑体 "," 仿宋 "," 华文彩云 "," 楷体 "," 方正姚体 "

28、;String styleNames = "粗体 ", "斜体 " ;public TextFrame()/ 设置文本框大小、名称11setTitle("西西牌文本编辑器");setSize(400,400);addWindowListener(new LogoutAction();filechooser=new JFileChooser();/创建一个文件选择器/创建文本区t1=new JTextArea(0,0);/面板与文本框无间隙scrollPane=new JScrollPane(t1);/设置滚动条getContentPa

29、ne().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)"

30、,'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.ge

31、tKeyStroke(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(exitIt

32、em);/ 编辑edit=new JMenu("编辑 (E)");edit.setMnemonic('E');/创建菜单项cutItem=new JMenuItem("剪切 (T)");copyItem=new JMenuItem("复制 (C)");pasteItem=new JMenuItem("粘贴 (P)");12deleteItem=new JMenuItem("删除 (L)");selectAllItem=new JMenuItem("全选 (A)"

33、;);/设置加速器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.getKey

34、Stroke(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.addActionList

35、ener(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("字体大小 ")

36、;colorItem=new JMenu("字体颜色 ");fontItem=new JMenu("字体 ");styleItem=new JMenu("字体风格 ");sizes = new JRadioButtonMenuItemsizeNames.length;colors = new JRadioButtonMenuItemcolorNames.length;fonts = new JRadioButtonMenuItemfontNames.length;styles=new JCheckBoxMenuItemstyleNam

37、es.length;styleGroup=new ButtonGroup();fontGroup = new ButtonGroup();colorGroup = new ButtonGroup();13sizeGroup = new ButtonGroup();/ 将每种元素放进菜单项和按钮组中for (int i=0;i<sizes.length;i+)sizesi=new JRadioButtonMenuItem(sizeNamesi);sizesi.addItemListener(new FormatListener();sizeGroup.add(sizesi);sizeIte

38、m.add(sizesi);for (int i=0;i<colors.length;i+)colorsi=new JRadioButtonMenuItem(colorNamesi);colorsi.addItemListener(new FormatListener();colorGroup.add(colorsi);colorItem.add(colorsi);for (int i=0;i<fonts.length;i+)fontsi=new JRadioButtonMenuItem(fontNamesi);fontsi.addItemListener(new FormatLi

39、stener();fontGroup.add(fontsi);fontItem.add(fontsi);for(int i=0;i<styles.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 JMen

40、u("关于我们 (us)");14view.setMnemonic('U');formItem=new JMenuItem("组成成员 ");formItem.addActionListener(new ViewListener();impressionItem=new JMenuItem("学习感言 ");impressionItem.addActionListener(new ViewListener();view.add(formItem);view.add(impressionItem);/ 将菜单添加到菜单栏

41、中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();pa

42、steItemPop=new JMenuItem("粘贴 (P)");pasteItemPop.addActionListener(new EditListener();deleteItemPop=new JMenuItem("删除 (L)");deleteItemPop.addActionListener(new EditListener();selectAllItemPop=new JMenuItem("全选 (A)");selectAllItemPop.addActionListener(new EditListener();/

43、 添加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()/ 指定弹出式菜单的成员以及显示位置15popup.show(e.getComponent(),e.ge

44、tX(),e.getY(););private class FileListener implements ActionListenerpublic 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.showO

45、penDialog(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_OPTI

46、ON)file=filechooser.getSelectedFile();saveFile();16/"退出 "if(e.getSource()=exitItem)k=t1.getText();/ 如果文本为空或已保存,直接退出,否则保存后退出if(k.equals("") System.exit(0);else if(k.equals(d) System.exit(0);elseTextFrame f=new TextFrame();/新建确认型对话框int n=JOptionPane.showConfirmDialog(f,"是否将文件保

47、存到当前位置?","退出 ",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

48、.NO_OPTION)System.exit(0);void openFile()/打开的方法tryFileReader fr=new FileReader(file); /FileReader类用于读取字符流int len=(int)file.length();char buffer=new charlen; /以 file的字符数开辟一段缓冲区fr.read(buffer,0,len); /将 fr从 file中读取的字符读入数组buffer中的某一部分,17fr.close(); /关闭该流t1.setText(new String(buffer);catch(Exception e)/

49、抛出异常e.printStackTrace();void saveFile()/保存的方法tryFileWriter fw=new FileWriter(file); /FileWriter类用于写入字符流fw.write(t1.getText();/将 t1 里的内容写入filefw.close(); /关闭该流catch(Exception e)e.printStackTrace();private class LogoutAction extends WindowAdapter/实现点击窗口退出事件监听器public void windowClosing(WindowEvent e)s=

50、t1.getText();if(s.equals("") System.exit(0);else if(s.equals(d) System.exit(0);elseTextFrame f=new TextFrame();/ 新建确认型对话框 int n=JOptionPane.showConfirmDialog(f,"是否将文件保存到当前位置?"," 退出 ",JOptionPane.YES_NO_OPTION);if(n=JOptionPane.YES_OPTION)/如果选择“是” ,则保存文件if(file!=null) fi

51、lechooser.setSelectedFile(file);int m=filechooser.showSaveDialog(TextFrame.this);if(m=JFileChooser.APPROVE_OPTION)file=filechooser.getSelectedFile();saveFile();18if(n=JOptionPane.NO_OPTION)System.exit(0);void saveFile()/保存的方法tryFileWriter fw=new FileWriter(file); /FileWriter类用于写入字符流fw.write(t1.getTe

52、xt();/将 t1 里的内容写入filefw.close(); /关闭该流catch(Exception e)e.printStackTrace();private class EditListener implements ActionListenerpublic void actionPerformed(ActionEvent e)/ 剪切if(e.getSource()=cutItem|e.getSource()=cutItemPop)t1.cut();/ 复制if(e.getSource()=copyItem|e.getSource()=copyItemPop)t1.copy();/ 粘贴if(e.getSource()=pasteItem|e.getSource()=pasteItemPop)t1.paste();/ 删除19if(e.getSource()=deleteItem|e.getSource()=deleteItemPop)text=t1.getText();selected=t1.getSelectedText();int id=text.indexOf(selected);int s

温馨提示

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

评论

0/150

提交评论