java实验报告 计算器 记事本 井字游戏.doc_第1页
java实验报告 计算器 记事本 井字游戏.doc_第2页
java实验报告 计算器 记事本 井字游戏.doc_第3页
java实验报告 计算器 记事本 井字游戏.doc_第4页
java实验报告 计算器 记事本 井字游戏.doc_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

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

文档简介

课程设计报告 实验内容: 综合课程设计 相关课程: Java程序设计 学 期: 2009-2010学年第2学期 学时学分: 48学时 3学分 专业班级: xxxxxxxx 学号: xxxxxxxxxxx 姓名: xxxxxxx 指导老师: xxx 提交日期: xxxx年 xx月xx日 题目JAVA课程设计一、实验目的通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。信科0821班学生的课程设计主要是Java语言程序设计的实现。通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。二、实验环境硬件环境 CPU:AMD5000+ 双核 主板:华硕M2N-X 显示器:1024x768/256色操作系统:Windows XP;JDK:jdk-6u18-windows-i586;运行环境以及调试软件:JCreator Pro三、实验内容内容一:设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。内容二:设计一个记事本,菜单中要求有文件,编辑,和帮助。文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。内容三:编写tic-tac-toe游戏程序。即 3*3的9个方格子,每人下一次看谁先连成一行3个四、算法分析、设计与描述1算法分析和设计内容(1)算法分析:首先,设计对输入数字的进行转换,不进行转换操作则默认为十进制,然后进行符号转换操作以及正弦函数等,接着可以进行加减乘除等运算,添加“C”、“CE”按钮进行退格和清空操作,清空操作显示“0” ,最后在帮助中显示开发人信息。功能及界面设计:功能1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。功能2:输入数字后,点击进制转换,可转换成二、八进制;按“exp”“log”键,则进行e次幂运算和自然对数运算;按“tan”“cos”“sin”则进行三角函数运算。功能3:按“+”“-”“*”“/”分别进行四则运算功能4:在任何时候按下“+/-”键,计算器文本框上的数字置反号。功能5:第一次按下“运算”键,再按下数字键,将重新输入第二个数字。再次按下“运算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。功能6:按下“C”键向前退格,按下“CE”键,数据被全部清除功能7:按下“帮助”键查看制作人信息功能8:按下“选项”键,点“退出”键退出计算器面板设计选项进制转换帮助(输出区域)sqrt+/-expCCE789log/456tan*123cos-0.=sin+算法描述 开始进制转换选择你要计算运行的进制10、8、16计算结果显示接受用户输入是否再次计算退出是否处理异常默认十进制十六进制八进制刷新内容(2)算法分析:此程序应当符合大众化,因为记事本是一个常用程序,因此我们常用计算机系统带的记事本进行设计本程序,其功能有以下几个方面:(1)“菜单”中有“文件”,“编辑”,“帮助”三个主菜单。(2)“文件”中有“新建”,“打开”,“保存”,“退出”四个子菜单:分别用于新建文件,打开文件,保存文件,退出记事本。(3)“编辑”中有“剪切”,“复制”,“粘贴”三个子菜单:用于剪切文字,复制文字,粘贴文字。(4)“帮助”菜单中有“关于”用来显示作者信息记事本面板设计:文件编辑帮助(文本区)内容(3)算法分析:1初始化游戏,2检查棋子是否布满游戏格局,格局被布满则进行赢者判断,没布满则“X”下棋,3再次检查游戏格局是否被棋子布满,没布满则轮到“O”下棋,且跳到步骤2,若布满格局则进行赢者判断算法描叙:初始化游戏N是否占满游戏格局“X”下棋YY是否占满游戏格局N“O”下棋是否有玩家赢是否有玩家赢平局NNYY输出赢家五、程序设计1程序设计的基本思路内容(1):计算结果显示区设计private JTextField displayField保存+,-,*,/,=命令private String lastCommand保存计算结果private double result判断是否为数字的开始private boolean start设置布局、为按钮注册事件监听器public Calculator()调用成员方法添加菜单this.addmyMenu()按钮的单击事件处理方法public void actionPerformed(ActionEvent e)退格键的实现方法if(input.equals(C) if(str.length()0)displayField.setText(str.substring(0,str.length()-1); /清零键的实现方法input.equals(CE)displayField.setText(0);start=true; 内容(2):使用的包如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*;为按钮添加行为监听器: ActionListener为按钮添加键盘适配器: KeyListener菜单设计:JMenuBar mbar; JMenu mnuFile, mnuEdit, mnuHelp; JMenuItem fileNew, fileOpen, fileSave, fileExit; JMenuItem editCut, editCopy, editPaste, editSelectAll, editDel; JMenuItem helpAbout; JToolBar tlbr; ImageIcon iconNew, iconOpen, iconSave; ImageIcon iconCut, iconCopy, iconPaste; JButton bttnNew, bttnOpen, bttnSave; JButton bttnCut, bttnCopy, bttnPaste;打开异常处理:catch(Exception ex) JOptionPane.showMessageDialog ( this, ex.getMessage(), 打开失败, JOptionPane.ERROR_MESSAGE ); 退出异常处理:if(txtChanged) int res; res = JOptionPane.showConfirmDialog ( this, 保存更改?, 退出, JOptionPane.YES_NO_CANCEL_OPTION ); if(res = JOptionPane.YES_OPTION) saveFile(); else if(res = JOptionPane.CANCEL_OPTION) return; 内容(3)创建并且初始化盘区单位private char whoseTurn = X;创建并且初始化状态标签private Cell cells = new Cell33;private JLabel jlblStatus = new JLabel(Xs turn to play);确认玩家顺序 public TicTacToe() JPanel p = new JPanel(new GridLayout(3, 3, 0, 0); for (int i = 0; i 3; i+) for (int j = 0; j 3; j+) p.add(cellsij = new Cell();判断盘区单位全部是否被棋子占领 public boolean isFull() for (int i = 0; i 3; i+) for (int j = 0; j 3; j+) if (cellsij.getToken() = ) return false; return true; 判断有指定的象征的玩家胜利public boolean isWon(char token) for (int i = 0; i 3; i+) if (cellsi0.getToken() = token) & (cellsi1.getToken() = token) & (cellsi2.getToken() = token) return true; for (int j = 0; j 0)displayField.setText(str.substring(0,str.length()-1);else if(input.equals(CE) /清零键的实现方法displayField.setText(0);start=true; elsedisplayField.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();displayField.setText(Integer.toOctalString(n);else if (e.getActionCommand()=退出) /选项中退出的处理方法System.exit(0);else if (e.getActionCommand()=作者) /按下帮助菜单栏中用法的处理方法label_dialog.setText(熊瑛琪制作 n学号:080320618); dialog.setLocation(400,250); dialog.setVisible(true);else /各运算符的识别String command=e.getActionCommand(); if(start)lastCommand=command;elsecalculate(Double.parseDouble(displayField.getText();lastCommand=command;start=true; public void calculate(double 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 (lastCommand.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=Math.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); /隐藏对话框 else 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) public void windowDeiconified(WindowEvent e) public static void main(String args) Calculator calculator=new Calculator();class WinClose implements WindowListenerpublic 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)public void windowDeiconified(WindowEvent e)内容(2):import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class MyPad extends JFrame implements ActionListener, KeyListener boolean txtChanged = false; String fname = ; JMenuBar mbar; JMenu mnuFile, mnuEdit, mnuHelp; JMenuItem fileNew, fileOpen, fileSave, fileExit; JMenuItem editCut, editCopy, editPaste, editSelectAll, editDel; JMenuItem helpAbout; JToolBar tlbr; ImageIcon iconNew, iconOpen, iconSave; ImageIcon iconCut, iconCopy, iconPaste; JButton bttnNew, bttnOpen, bttnSave; JButton bttnCut, bttnCopy, bttnPaste; JTextArea txtPad; Container c; MyPad() initComponents(); setTitle(MyPad); setSize(400,300); setVisible(true); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WinHandler(); void initComponents() c = getContentPane(); c.setLayout(new BorderLayout(); initMenu(); txtPad = 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(编辑); mnuHelp= new JMenu(帮助); fileNew = new JMenuItem(新建); fileOpen= new JMenuItem(打开); fileSave= new JMenuItem(保存); fileExit = new JMenuItem(退出); editCut = new JMenuItem(剪切); editCopy= new JMenuItem(复制); editPaste = new JMenuItem(黏贴); editSelectAll = new JMenuItem(全选); editDel= new JMenuItem(删除); helpAbout= new JMenuItem(关于); mnuFile.add(fileNew); mnuFile.add(fileOpen); mnuFile.add(fileSave); mnuFile.add(fileExit); mnuEdit.add(editCut); mnuEdit.add(editCopy); mnuEdit.add(editPaste); mnuEdit.addSeparator(); mnuEdit.add(editSelectAll); mnuEdit.add(editDel); mnuHelp.add(helpAbout); mbar.add(mnuFile); mbar.add(mnuEdit); mbar.add(mnuHelp); setJMenuBar(mbar); fileNew.addActionListener(this); fileOpen.addActionListener(this); fileSave.addActionListener(this); fileExit.addActionListener(this); editCut.addActionListener(this); editCopy.addActionListener(this); editPaste.addActionListener(this); editSelectAll.addActionListener(this); editDel.addActionListener(this); helpAbout.addActionListener(this); public void actionPerformed(ActionEvent e) Object src = e.getSource(); if(src.equals(bttnNew) | src.equals(fileNew) newFile(); else if(src.equals(bttnOpen) | 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 if(src.equals(bttnCopy) | src.equals(editCopy) txtPad.copy(); else if(src.equals(bttnPaste) | src.equals(editPaste) txtPad.paste(); else if(src.equals(editSelectAll) txtPad.selectAll(); else if(src.equals(editDel) txtPad.replaceSelection(); else if(src.equals(helpAbout) aboutHelp(); void newFile() if(txtChanged) int res; res = JOptionPane.showConfirmDialog ( this,保存修改?, 新建文件, JOptionPane.YES_NO_CANCEL_OPTION ); if(res = JOptionPane.YES_OPTION) saveFile(); else if(res = JOptionPane.CANCEL_OPTION) return; fname = ; txtChanged = false; txtPad.setText(); void saveFile() if(fname.equals() JFileChooser jfc = new JFileChooser(); int res; res = jfc.showSaveDialog(this); if(res = jfc.APPROVE_OPTION) fname = jfc.getSelectedFile().getAbsolutePath(); else return; try FileWriter fw = new FileWriter(fname); fw.write(txtPad.getText(); fw.flush(); fw.close(); txt

温馨提示

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

评论

0/150

提交评论