




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络程序设计JAVA网络程序设计-JAVA课程设计说明书系别: 电信系 专业: 信息安全09 班级: 1班 姓名: 王蓉 座号: 920708119 目录:摘要3.实训题目3实验环境3进度安排3设计步骤3设计功能模块图3布局界面4按键功能5数字按钮的实现5操作符的实现5记忆功能按钮的实现6撤销清除按钮的实现6小数点的优化7测试7功能完善11实验心得12参考文献12摘要:本计算器可以进行十进制下的四则运算(加、减、乘、除)、开根号、百分号、求倒数,还可以实现数值的符号转换及计算器有关内存操作。 Backspace表示退格, CE表示将当前文本框内数据清除,C表示文本框内数据清除,同时var,answer清0。此外还提供了“编辑”、 “帮助”两个菜单项,使用者可通过使用菜单项实现某些功能。一、实验题目计算器二、实验环境:中金B601机房三、进度安排星期一需求分析,阅读相应的参考程序星期二编写布局和界面星期三编写按键和功能代码星期四小数点功能及测试星期五综合调试,撰写课程设计报告四、设计步骤1、设计功能模块图:计算器标题栏文本框按键标题:计算器文本框1-9,Backspace,ce,c,M+,+,-,*,/,1X,,MCMR,MS,sqr,%,=,.,+/-菜单栏编辑(复制、粘帖)帮助(帮助主体、关于本计算器)2、布局界面1)、利用Java GUI 布局,使用其中的Swing 和AWT;Awt是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件。Swing用来创建图形界面。导入Swing;如:import javax.swing.JButton;设计窗体,窗体名称Calculator2继承ActionListener接口。JFrame frame / JFrame是带有标题和边框的顶层窗口。可以使用frame = new JFrame(计算器)设置计算器的标题栏;JTextField textAnswer; /JTextField 是一个轻量级组件,它允许编辑单行文本。程序中使用textAnswer = new JTextField(15); textAnswer.setText(); textAnswer.setEditable(false); textAnswer.setBackground(new Color(255, 255, 255)设置输入框的属性。 JPanel panel, panel1, panel2, panel3;/ JPanel 是一般轻量级容器。程序中使用:panel = new JPanel(); frame.getContentPane().add(panel); panel1 = new JPanel(); panel2 = new JPanel(); panel.setLayout(new BorderLayout();传入一个布局对象作为参数来创建一个面板,该面板采用的是布局是BorderLayout布局,也就是默认的,是上下左右中布局的。JMenuBar mainMenu;/ 菜单栏的实现。将 JMenu 对象添加到菜单栏以构造菜单。程序中使用panel.add(mainMenu, BorderLayout.NORTH);将菜单栏添加到面板并设置菜单栏的位置。JTextField textMemory;/ JTextField 是一个轻量级组件,它允许编辑单行文本。JLabel labelMemSpace; / JLabel用于短文本字符串或图像或二者的显示区。标签不对输入事件作出反应。JButton buttonBk, buttonCe, buttonC;/ JButton push 按钮的实现。通过 Action 可配置按钮,并进行一定程度的控制。使用button = new JButton( );button .setForeground(new Color(255, 0, 0);的方法设置各个按钮显示的名称和按钮的颜色。例如:buttonBk = new JButton(Backspace);buttonBk.setForeground(new Color(255, 0, 0);JMenu editMenu, helpMenu;/ JMenu菜单的该实现是一个包含 JMenuItem 的弹出窗口,用户选择 JMenuBar 上的项时会显示该 JMenuItem。 JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal;/ 菜单中的项的实现。菜单项本质上是位于列表中的按钮。当用户选择“按钮”时,则执行与菜单项关联的操作。DecimalFormat df; /设置数据输出精度boolean clickable; /控制当前能否按键double memoryd; /使用内存中存储的数字double vard, answerd; /用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; /key用来保存当前进行何种运算,prekey用来保存前次进行何种运算String copy; /做复制用JTextArea help; /帮助五、按键功能1、数字按钮功能的实现主要支持的数字:0、1、2、3、4、5、6、7、8、9,如图1所示:图1 计算器主界面2、操作符的实现:主要支持的操作符有:+、-、*、/、%、sqrt。支持错误提示。要求提供图形化操作界面。例如-操作:if (temp = buttonSub) switch (prekey) case 0: answerd += Double.parseDouble(textAnswer.getText(); break; case 1: answerd -= Double.parseDouble(textAnswer.getText(); break; case 2: answerd *= Double.parseDouble(textAnswer.getText(); break; case 3: if (Double.parseDouble(textAnswer.getText() = 0) textAnswer.setText(除数不能为零); clickable = false; else answerd /= Double.parseDouble(textAnswer.getText(); break; default: answerd = Double.parseDouble(textAnswer.getText(); textAnswer.setText(); prekey = key = 1; 3、记忆功能按钮的实现:具备记忆数据,取记忆,清记忆,复制,粘贴等功能。MC的操作,将内存清0MR的操作,将存储器中的信息输出 M+的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器MS的操作,将当前文本框内容保存入内存,显示M,如图2所示:如图2 MS的操作以下是MS的操作的代码: if (temp = buttonMS & clickable = true) boolean isDot = false; textMemory.setText( M); for (int i = 0; i textAnswer.getText().length(); i+) if (. = textAnswer.getText().charAt(i) isDot = true; break; /如果是double,则存入memoryd(double存储器) if (isDot = true) memoryd = Double.parseDouble(textAnswer.getText(); memoryi = 0; /保证存储器中存放最新的值 /如果是int,则存入memoryi(int存储器) else memoryi = Integer.parseInt(textAnswer.getText(); memoryd = 0; /保证存储器中存放最新的值 4)、撤销清除按钮的实现按下Backspace键,利用循环将当前字符串中的最后一个字母删除;按下CE按钮,将当前文本框内数据清除;按下C按钮,文本框内数据清除,同时var,answer清0,代码如下所示:if (temp = buttonC) vard = answerd = 0; textAnswer.setText(); clickable = true; 六、小数点的优化本程序为了使进行含小数点的操作时,为了避免异常,所以进行了小数点的优化。/按下.按钮时,判断当前文本框内字符串中含不含.,如果已含,则不允许再插入.代码如下: if (temp = buttonDot & clickable = true) boolean isDot = false; if (textAnswer.getText().length() = 0) isDot = true; for (int i = 0; i textAnswer.getText().length(); i+) if (. = textAnswer.getText().charAt(i) isDot = true; break; if (isDot = false) textAnswer.setText(textAnswer.getText() + .); if (temp = buttonAdd | temp = buttonSub | temp = buttonMul | temp = buttonDiv) & clickable = true) 七、测试 1)、连续输入运算符 输入中如果有操作非法,比如按下两次+,捕获异常,如图3所示: catch (Exception e) textAnswer.setText(操作非法); clickable = false; 图3 非法操作捕获异常2)、负数不能开根号,当输入负数要求开根号时,会提示异常,如图4所示: 图4 负数开根号 代码如下所示: /开根号运算,其中包括负数不能为开根号的代码: if (temp = buttonSqrt & clickable = true) String s = textAnswer.getText(); if (s.charAt(0) = -) textAnswer.setText(负数不能开根号); clickable = false; else textAnswer.setText(Double.toString(java.lang.Math.sqrt(Double. parseDouble(textAnswer.getText(); 3)、除数不能为0,当输入除数为0时,会提示异常,如图5所示: 图5 输入除数为0/操作的代码如下,其中包括除数不能为0的代码: if (temp = buttonDiv) switch (prekey) case 0: answerd += Double.parseDouble(textAnswer.getText(); break; case 1: answerd -= Double.parseDouble(textAnswer.getText(); break; case 2: answerd *= Double.parseDouble(textAnswer.getText(); break; case 3: if (Double.parseDouble(textAnswer.getText() = 0) textAnswer.setText(除数不能为零); clickable = false; else answerd /= Double.parseDouble(textAnswer.getText(); break; default: answerd = Double.parseDouble(textAnswer.getText(); textAnswer.setText(); prekey = key = 3; 4)、零不能求倒数,当输入0要求求倒数时,会提示异常,如图6所示: 图6 0求倒数 /倒数运算,其中包含0不能求倒数的代码: if (temp = buttonDao & clickable = true) if (textAnswer.getText().charAt(0) = 0 & textAnswer.getText().length() = 1) textAnswer.setText(零不能求倒数); clickable = false; else boolean isDec = true; int i, j, k; String s = Double.toString(1 / Double.parseDouble(textAnswer.getText(); for (i = 0; i s.length(); i+) if (s.charAt(i) = .) break; for (j = i + 1; j s.length(); j+) if (s.charAt(j) != 0) isDec = false; break; if (isDec = true) String stemp = ; for (k = 0; k i; k+) stemp += s.charAt(k); textAnswer.setText(stemp); else textAnswer.setText(s); 5)、程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),本次设计精度采用double float,能满足一般使用。八、功能完善 我在本计算器的功能中又添加了菜单栏的功能,在菜单栏中添加“编辑”、“帮助”两个按钮,当按下这两个按钮时会出现对应的下拉菜单。在“编辑”的下拉菜单中又有两个功能,分别是“复制”和“粘贴”。如图7所示;在帮助的下拉菜单中我设置了两个选项:包括“帮助主题”和“关于本计算器”的功能选项。如图8所示: 图7 菜单栏编辑选项 图8 菜单栏帮助选项菜单栏“帮助”选项中的“帮助主题”中的内容,如图9所示: 图9 帮助主题“帮助主题”的代码如下所示: topHelp = new JMenuItem( 帮助主题(H); topHelp.addActionListener(this); help = new JTextArea(5, 20); scrollHelp = new JScrollPane(help); help.setEditable(false);help.append(执行简单计算n); help.append(1. 输入计算的第一个数字。n); help.append(2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。n); help.append(3. 输入计算的下一个数字。n); help.append(4. 输入所有剩余的运算符和数字。n); help.append(5. 单击“=”。n);九、实验心得通过了这几天的课程设计,对于我这个编程新手来说,还的确有些困难.不过有志者事竟成。首先,我需要了解一些基本的术语。程序是计算机执行的一系列的指令。这些指令说明了计算机要做什么,究竟是用文字处理、电子表格、玩游戏还是其他用途。然后,我还要去图书馆查阅资料,找一些与这次课设有关的内容作参考,以便能更方便的完成课设的内容。另外,我还去网上查阅了一些资料,充实一下自己,一切都准备好了,我就可以完成我的计算器程序设计报告了。在这次编程中,更加深我对事件监听,各方法的实现功能,还有布局方式及常用的GUI标准组件有了更深刻的认识. 我完成了这次JAVA课程设计,让我懂得在设计的过程中最好能自己解决问题,这样可以增强自己解决问题的能力,同时增强记忆.。不过这只是我学习路上的驿站。我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习工作中去。十、参考文献1 耿祥义,VA大学实用教程实验指导,子工业出版社 2005-032 郑莉,Java语言程序设计,清华大学出版社2006-043 王克宏,JAVA语言入门,清华大学出版社 19964 徐谡,Java应用与开发案例教程,清华大学出版社5 王克宏,JAVA语言Applet编程技术清华大学出版社 19921附录:package calculator;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.text.DecimalFormat;public class Calculator implements ActionListener /导入动作监听接口 /设计面板中的单位 JFrame frame; JTextField textAnswer; JPanel panel, panel1, panel2, panel3; JMenuBar mainMenu; JTextField textMemory; JLabel labelMemSpace; /labelMemSpace单纯做摆设,控制面板的形状 JButton buttonBk, buttonCe, buttonC; JButton button; JButton buttonMC, buttonMR, buttonMS, buttonMAdd; JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul, buttonDiv, buttonMod; JButton buttonSqrt, buttonDao, buttonEqual; JMenu editMenu, viewMenu, helpMenu; JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal; DecimalFormat df; /设置数据输出精度 boolean clickable; /控制当前能否按键 double memoryd; /使用内存中存储的数字 int memoryi; double vard, answerd; /用来保存double型数据的中间值(vard)和最后结果(answerd) short key = -1, prekey = -1; /key用来保存当前进行何种运算,prekey用来保存前次进行何种运算 String copy; /做复制用 JTextArea help; /帮助 JScrollPane scrollHelp; /构造函数 public Calculator() clickable = true; answerd = 0; frame = new JFrame(计算器); df = new DecimalFormat(0.#); /设置数据输出精度(对于double型值) textAnswer = new JTextField(15); textAnswer.setText(); textAnswer.setEditable(false); textAnswer.setBackground(new Color(255, 255, 255); panel = new JPanel(); frame.getContentPane().add(panel); panel1 = new JPanel(); panel2 = new JPanel(); panel.setLayout(new BorderLayout(); /设计整个面板 mainMenu = new JMenuBar(); editMenu = new JMenu(编辑(E); helpMenu = new JMenu(帮助(H); copyItem = new JMenuItem( 复制(C) Ctrl+C); copyItem.addActionListener(this); pasteItem = new JMenuItem( 粘贴(V) Ctrl+V); pasteItem.addActionListener(this); editMenu.add(copyItem); editMenu.add(pasteItem); topHelp = new JMenuItem( 帮助主题(H); topHelp.addActionListener(this); help = new JTextArea(5, 20); scrollHelp = new JScrollPane(help); help.setEditable(false); help.append(执行简单计算n); help.append(1. 输入计算的第一个数字。n); help.append(2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。n); help.append(3. 输入计算的下一个数字。n); help.append(4. 输入所有剩余的运算符和数字。n); help.append(5. 单击“=”。n); aboutCal = new JMenuItem( 关于计算器(A); aboutCal.addActionListener(this); helpMenu.add(topHelp); helpMenu.add(aboutCal); mainMenu.add(editMenu); mainMenu.add(helpMenu); panel.add(mainMenu, BorderLayout.NORTH); panel.add(textAnswer, BorderLayout.CENTER); panel.add(panel1, BorderLayout.SOUTH); panel1.setLayout(new BorderLayout(); textMemory = new JTextField(3); textMemory.setEditable(false); textMemory.setBackground(new Color(217, 217, 217); labelMemSpace = new JLabel( ); buttonBk = new JButton(Backspace); buttonBk.setForeground(new Color(255, 0, 0); buttonCe = new JButton(CE); buttonCe.setForeground(new Color(255, 0, 0); buttonC = new JButton(C); buttonC.setForeground(new Color(255, 0, 0); buttonBk.addActionListener(this); buttonCe.addActionListener(this); buttonC.addActionListener(this); panel1.add(panel2, BorderLayout.NORTH); panel2.setLayout(new FlowLayout(FlowLayout.RIGHT); panel2.add(textMemory); panel2.add(labelMemSpace); panel2.add(buttonBk); panel2.add(buttonCe); panel2.add(buttonC); panel3 = new JPanel(); panel1.add(panel3, BorderLayout.CENTER); button = new JButton10; for (int i = 0; i button.length; i+) buttoni = new JButton(Integer.toString(i); buttoni.setForeground(new Color(0, 0, 255); buttonMC = new JButton(MC); buttonMC.setForeground(new Color(255, 0, 0); buttonMR = new JButton(MR); buttonMR.setForeground(new Color(255, 0, 0); buttonMS = new JButton(MS); buttonMS.setForeground(new Color(255, 0, 0); buttonMAdd = new JButton(M+); buttonMAdd.setForeground(new Color(255, 0, 0); buttonDot = new JButton(.); buttonDot.setForeground(new Color(0, 0, 255); buttonAddAndSub = new JButton(+/-); buttonAddAndSub.setForeground(new Color(0, 0, 255); buttonAdd = new JButton(+); buttonAdd.setForeground(new Color(255, 0, 0); buttonSub = new JButton(-); buttonSub.setForeground(new Color(255, 0, 0); buttonMul = new JButton(*); buttonMul.setForeground(new Color(255, 0, 0); buttonDiv = new JButton(/); buttonDiv.setForeground(new Color(255, 0, 0); buttonMod = new JButton(%); buttonMod.setForeground(new Color(0, 0, 255); buttonSqrt = new JButton(sqrt); buttonSqrt.setForeground(new Color(0, 0, 255); buttonDao = new JButton(1/x); buttonDao.setForeground(new Color(0, 0, 255); buttonEqual = new JButton(=); buttonEqual.setForeground(new Color(255, 0, 0); /将所有行为与监听绑定 panel3.setLayout(new GridLayout(4, 6); panel3.add(buttonMC); buttonMC.addActionListener(this); panel3.add(button7); button7.addActionListener(this); panel3.add(button8); button8.addActionListener(this); panel3.add(button9); button9.addActionListener(this); panel3.add(buttonDiv); buttonDiv.addActionListener(this); panel3.add(buttonSqrt); buttonSqrt.addActionListener(this); panel3.add(buttonMR); buttonMR.addActionListener(this); panel3.add(button4); button4.addActionListener(this); panel3.add(button5); button5.addActionListener(this); panel3.add(button6); button6.addActionListener(this); panel3.add(buttonMul); buttonMul.addActionListener(this); panel3.add(buttonMod); buttonMod.addActionListener(this); panel3.add(buttonMS); buttonMS.addActionListener(this); panel3.add(button1); button1.addActionListener(this); panel3.add(button2); button2.addActionListener(this); panel3.add(button3); button3.addActionListener(this); panel3.add(buttonSub); buttonSub.addActionListener(this); panel3.add(buttonDao); buttonDao.addActionListener(this); panel3.add(buttonMAdd); buttonMAdd.addActionListener(this); panel3.add(button0); button0.addActionListener(this); panel3.add(buttonAddAndSub); buttonAddAndSub.addActionListener(this); panel3.add(buttonDot); buttonDot.addActionListener(this); panel3.add(buttonAdd); buttonAdd.addActionListener(this); panel3.add(buttonEqual); buttonEqual.addActionListener(this); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.show(); /设置各个按钮行为 public void actionPerformed(ActionEvent event) boolean sign = false; /判断是否是double型数参与运算,是为true,不是为false Object temp = event.getSource(); try /如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后 for (int i = 0; i = 9; i+) if (temp = buttoni & clickable = true) textAnswer.setText(textAnswer.getText() + Integer.toString(i); /按下.按钮时,判断当前文本框内字符串中含不含.,如果已含,则不允许再插入. if (temp = buttonDot & clickable = true) boolean isDot = false; if (textAnswer.getText().length() = 0) isDot = true; for (int i = 0; i textAnswer.getText().length(); i+) if (. = tex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智慧城市案例研究:城市信息化建设分析
- 2025年智慧城市建设视角下公园健身设施智能化改造研究
- 农民田间试验及推广合同
- 2025下半年广东佛山市三水区疾病预防控制中心招聘事业编制人员7人考试参考题库及答案解析
- 农业养殖与信息技术合作协议
- 三台县2025年教体系统公开考调事业单位工作人员考试参考题库及答案解析
- 2025四川眉山市医疗卫生辅助岗招募100人备考考试试题及答案解析
- 2025年鹤壁浚县第二高级中学招聘教师8名考试参考题库及答案解析
- 2025中国新闻社新疆分社招聘2人考试模拟试题及答案解析
- 2025年东辽县教育系统公开选调(45人)考试参考试题及答案解析
- 精神科护工安全知识培训课件
- 2025年新学校军训合同协议书
- 邯郸市永年区实验中学2024-2025学年九年级上学期开学考试道德与法治试卷(含答案)
- 2025年度剧院设施全面维修与日常维护服务协议
- 学易金卷:段考模拟君之2025-2026学年高一化学下学期期末考试原创模拟卷01(考试版)
- 2025至2030年中国综合能源服务市场竞争策略及行业投资潜力预测报告
- 土地要素保障课件教学
- 2025年海南省通信网络技术保障中心招聘事业编制人员考试试题(含答案)
- 2025秋新版一年级上册语文教学计划+教学进度表
- 2025年安徽干部教育在线必修课考试试题及答案
- 2025年度中级经济师职称评审聘用合同样本
评论
0/150
提交评论