欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    Java程序课程设计报告-基于Java的计算器的设计与开发.doc

    • 资源ID:5014968       资源大小:256KB        全文页数:35页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java程序课程设计报告-基于Java的计算器的设计与开发.doc

    浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 I 2009级级Java程序课程设计报告程序课程设计报告 学学 院院 : 专专 业业 : 计算机科学与技术计算机科学与技术 班班 级级 : 学学 号号 : 学学生生姓姓名名 : 指指导导教教师师 : 二二一一年一一年 一一 月月 报告题目报告题目:基于基于Java的计算器的计算器 的设计与开发的设计与开发 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 II Java程序课程设计任务书程序课程设计任务书 一、主要任务与目标 1. 掌握java语言 2. 创建一个简单的计算器,具有简单人机交互界面,易于操作,便于进行数据 之间的简单运算。 二、具体要求(包括技术要求等): 1)能够实现基本的加、减、乘、除四则运算及开方,乘方运算; 2)如输入数据时,出现错误,可以修改; 3)运算结果能正确显示;可以清零; 4)拥有登陆注册功能; 5)可以查看历史记录; 学习并掌握以下技术:Java、awt,swing等 熟练使用以下开发工具:Jdk,JCreate 等 实现计算器的上述的功能。 三、计划进度 112月28日12月29日:搜集资料、查阅文献,确定选题 212月30日-12月31日:需求分析,系统设计,系统功能模块完善 31月1日-1月3日:编程实现系统、系统测试与修改 41月4日- 1月6日:课程设计报告撰写 51月 7日- 1月 8日:课程设计报告答辩 四、主要参考文献 1 耿祥义,张跃平.java大学实用教程(第二版).电子工业出版社.2008年5月 学生(签字) 2010年12月 28日 指导教师 2010年12月28 日 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 III 目目 录录 JAVA程序课程设计任务书程序课程设计任务书II 目目 录录III 第第1章章 引言引言 1 1.1 课程设计内容.1 1.3 任务分工.1 第第2章章 计算器定义计算器定义 2 2.1 计算器登陆注册界面概述.2 2.1.1 计算器功能概述.2 2.1.2 计算结果的储存与查看功能概述.2 2.2 本章小结.2 第第3章章 计算器的具体实现计算器的具体实现 3 3.1界面设计3 3.1.1用户登陆界面图3 3.1.3 计算器主界面.8 3.2计算功能实现.9 3.4 本章小结.14 第第4章章 结束语结束语 14 致谢致谢 .15 参考文献参考文献 .15 附录附录 源代码源代码 15 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 1 第第1章章 引言引言 1.11.1 课程设计内容课程设计内容 这是我组设计的计算器会有一些独特的功能,本项目用到了Java中的GUI界 面和swing组件以及awt布局,所以简单易用,它能完成如下的几个功能: (1)数据计算处理功能 点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除四则运算 及三角函数,开方,乘方运算 ;如果输入有误时可以按C撤销后重新输入新数据,有储存修改键; (2)查询功能 查询功能可以迅速方便地查找到相应时段的执行的操作及结果。 (3)计算器使用权限功能 对个人的操作实现口令。用户在使用计算器前需通过登录界面登录,以保护计 算器的数据安全。未有登录资料的先进行注册。 (4)时间显示功能 在计算器上显示现在的时间,便于把握时间; 1.31.3 任务分工任务分工 :职位组长,总监整个计算器设计制作过程,制定相应计划与分布任务,负责撰 写任务书,报告书,登陆注册界面的设计,整体编码框架的 设定; :负责报告书的排版,创建计算器主界面的编码,计算器; :负责数据计算功能的编码,实现,计算器主界面的设计; :负责注册登录界面的功能的编码,储存与查看功能的编码,计算器整体功能的 编码的完善与调试; 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 2 第第2章章 计算器定义计算器定义 2.12.1 计算器登陆注册界面概述计算器登陆注册界面概述 这是对计算器使用权限功能的添加,这是以后软件开发的一个重点发展方向 。用户在使用计算器前需通过登录界面登录,以保护计算器的数据安全和使用权限 的设定。未有登录资料的必须先进行注册; 2.1.1 计算器功能概述计算器功能概述 一个计算器如果只有数据计算处理功能,或者是点击按钮中的数字键和运算 符键就能进行简单的加、乘、乘、除四则运算是远远不够的,这太普通了,因此 加入三角函数,开方,乘方运算 ,并且如果输入有误时可以按C撤销后重新输入新数据,有储存修改键;最主要 是加入了查询功能:查询功能可以迅速方便地查找到相应时段的执行的操作及结 果。还有就是计算器使用权限的设定,即登陆注册界面,用户在使用计算器前需 通过登录界面登录,以保护计算器的数据安全。未有登录资料的先进行注册。 2.1.2 计算结果的储存与查看功能概述计算结果的储存与查看功能概述 计算结果有了,但是一般的计算器不能查询之前进行的操作和结果,不得不重新 计算,这就带来了不少麻烦,我组设计制作的计算器拥有直接查看历史记录的功 能,还附有各个操作的时间,便于确认; 2.22.2 本章小结本章小结 这一章介绍了当前进销存管理系统应该具备的功能模块,并提供了市面上比 较流行的进销存管理系统作为参考。在这一章中,我们可以了解什么是进销存管 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 3 理系统,当前进销存管理系统的市场需求,还有一个进销存管理系统应该的开发 目标。 第第3章章 计算器的具体实现计算器的具体实现 界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量, 并在很大程度上决定了软件是否成功。 3.13.1界面设计界面设计 1.界面设计界面设计 界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用 到awt中的BorderLayout和GridLayout布局管理方式。 3.1.1用户登陆界面图用户登陆界面图 如图3.1.1和3.1.2所示 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 4 图图3.1.1 用户登录模块框图用户登录模块框图 图图3.1.23.1.2 用户登录界面用户登录界面 loginDialog与compareUserData函数的作用是用户登录界面创建和检测用户登的 合法性,并确认用户输入了合法的登录名和口令。 部分代码: private void loginDialog() login = new JDialog(); login.setTitle(“登录“); login.setLayout(new FlowLayout(); login.add(new JLabel(“用户名:“); final JTextField name = new JTextField(10); login.add(name); login.add(new JLabel(“密 码:“); final JPasswordField password = new JPasswordField(10); password.setEchoChar('*'); login.add(password); JButton confirm = new JButton(“登录“); confirm.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (compareUserData(name.getText().trim(), new String(password.getPassword() login.setVisible(false); f.setVisible(true); else 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 5 JOptionPane.showMessageDialog(login, “用户名或密码错误!“, “错误提示“, JOptionPane.ERROR_MESSAGE); ); login.add(confirm); final JDialog regDialog = new JDialog(login, “注册“, true); registerDialog(regDialog); JButton register = new JButton(“注册“); register.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) regDialog.setVisible(true); ); login.add(register); login.setSize(200, 130); login.setResizable(false); login.setLocationRelativeTo(null); login.setVisible(true); private boolean compareUserData(String name, String password) try RandomAccessFile out = new RandomAccessFile(“user.dat“, “rw“); String fname, fpassword = null; while (out.getFilePointer() 1) tResult.setText(temp.delete(temp.length()-1, temp.length().toString(); else tResult.setText(“0“); 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 10 else if (s.equals(“C“) /如果是C删除当前计算 tResult.setText(“0“); tf.setText(“); num1.replace(0, num1.length(), “0“); num2.replace(0, num2.length(), “0“); isExist = false; operate = ' ' else if (s.equals(“) tResult.setText(“ + Math.PI); else if (s.equals(“sin“) String temp = tResult.getText().trim(); double dtemp = Math.PI / 180.0 * Double.parseDouble(temp); tResult.setText(“+Math.sin(dtemp); save(“sin“ + “(“ + temp + “) = “ + Math.sin(dtemp); else if (s.equals(“cos“) String temp = tResult.getText().trim(); double dtemp = Math.PI / 180.0 * Double.parseDouble(temp); tResult.setText(“+Math.cos(dtemp); save(“cos“ + “(“ + temp + “) = “ + Math.cos(dtemp); else if (s.equals(“tan“) String temp = tResult.getText().trim(); double dtemp = Math.PI / 180.0 * Double.parseDouble(temp); tResult.setText(“+Math.tan(dtemp); save(“tan“ + “(“ + temp + “) = “ + Math.tan(dtemp); else if (s.equals(“log“) String temp = tResult.getText().trim(); double dtemp = Double.parseDouble(temp); tResult.setText(“+Math.log10(dtemp); save(“log“ + “(“ + temp + “) = “ + Math.log(dtemp); else if (s.equals(“MC“) /如果是MC则清除缓冲区 String temp = “0“; memory.replace(0, memory.length(), temp); bM.setText(“ “); else if (s.equals(“MR“) /如果按键为MR则恢复缓冲区的数到文本框 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 11 tResult.setText(memory.toString(); else if (s.equals(“MS“) /如果按键为MS则将文本框的数存入缓冲区 String s1 = tResult.getText().trim(); memory.replace(0, memory.length(), s1); bM.setText(“M“); else if (s.equals(“M+“) /如果按键为MS则将文本框值与缓冲区的数相加但不显示结果 String temp1 = tResult.getText().trim(); double dtemp = Double.parseDouble(temp1); String temp2 = memory.toString(); if (temp2.length() = 0) temp2 = “0“; dtemp += Double.parseDouble(temp2); temp1 = String.valueOf(dtemp); memory.replace(0, memory.length(), temp1); bM.setText(“M“); else if (s.equals(“1/x“) /如果按键为1/x则将文本框中的数据为它的倒数 String temp = tResult.getText().trim(); double dtemp = Double.parseDouble(temp); tResult.setText(“+1/dtemp); else if (s.equals(“sqrt“) /如果按键为sqrt则将文本框中的内容求平方根 String temp = tResult.getText().trim(); double dtemp = Double.parseDouble(temp); tResult.setText(“+Math.sqrt(dtemp); save(“sqrt“ + “(“ + temp + “) = “ + Math.sqrt(dtemp); else if (s.equals(“x2“) /如果按键为x2则将文本框中的内容求平方 String temp = tResult.getText().trim(); double dtemp = Double.parseDouble(temp) * Double.parseDouble(temp); tResult.setText(“+dtemp); save(temp + “2 = “ + Math.sin(dtemp); else if (s.equals(“+/-“) String temp = tResult.getText().trim(); double dtemp = -Double.parseDouble(temp); if (dtemp != 0) tResult.setText(“+dtemp); else if (s.equals(“+“) | s.equals(“-“) | s.equals(“*“) | s.equals(“/“) 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 12 /加减乘除按键求结果 if (operate = ' ') num1 = num1.replace(0, num1.length(), tResult.getText().trim(); isClear = true; tf.setText(num1.toString() + s); else if (!isExist) num2 = num2.replace(0, num2.length(), tResult.getText().trim(); String rlt = null; double a = Double.parseDouble(num1.toString().trim(); double b = Double.parseDouble(num2.toString().trim(); switch(operate) case '+': rlt = “ + (a + b); break; case '-': rlt = “ + (a - b); break; case '*': rlt = “ + (a * b); break; case '/': rlt = “ + (a / b); break; tResult.setText(rlt); tf.setText(“ + num1.toString() + operate + num2.toString(); num1.replace(0, num1.length(), rlt); isClear = true; operate = s.charAt(0); else if (s.equals(“=“) /按键=显示结果 if (!isExist) num2 = num2.replace(0, num2.length(), tResult.getText().trim(); isExist = true; if (operate != ' ') String rlt = null; double a = Double.parseDouble(num1.toString().trim(); double b = Double.parseDouble(num2.toString().trim(); switch(operate) case '+': rlt = “ + (a + b); break; case '-': rlt = “ + (a - b); break; case '*': rlt = “ + (a * b); break; case '/': rlt = “ + (a / b); break; tResult.setText(rlt); /存入文件 save(“ “ + a + “ “ + operate + “ “ + b + “ = “ + rlt); tf.setText(“ + num1.toString() + operate + num2.toString(); num1.replace(0, num1.length(), rlt); isClear = true; 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 13 else if(s.equals(“.“) /单击“小数点”的处理 /当前结果中不存在“.“ if(tResult.getText().trim().indexOf('.') = -1) StringBuffer tmp = new StringBuffer(tResult.getText().trim(); tResult.setText(tmp.append(s).toString(); else /数字键的处理 if (!Character.isDigit(tResult.getText().charAt(0) tResult.setText(“); if (isClear) isClear = false; tResult.setText(“); if (isExist) isExist = false; tf.setText(“); operate = ' ' tResult.setText(“); StringBuffer tmp = new StringBuffer(tResult.getText().trim(); if (tmp.toString().equals(“0“) tmp.setLength(0); tResult.setText(tmp.append(s).toString(); /end actionPerformed 3.3 计算结果的储存功能与查看功能计算结果的储存功能与查看功能 1通过save函数来实现结果的储存功能; 部分代码: private void save(String s) final SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss :“); String time = sdf.format(new Date(System.currentTimeMillis(); try File file = new File(“data.txt“); if (!file.exists() file.createNewFile(); char ch = new char(int)file.length(); FileReader in = new FileReader(file); in.read(ch); in.close(); FileWriter out = new FileWriter(file); String tmp = new String(ch); 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 14 out.write(tmp.trim() + System.getProperty(“line.separator“); out.write(time + s).trim() + System.getProperty(“line.separator“); out.close(); catch(IOException e) e.printStackTrace(); 2通过“查看”选项中的“历史记录”来查看历史结果,此showRecord函数的作 用就是把储存在data.txt中的历史记录显示在一面板中; 部分代码如下: private void showRecord() JDialog dialog = new JDialog(f, “历史记录“, true); JTextArea area = new JTextArea(); area.setEditable(false); dialog.add(new JScrollPane(area); dialog.setSize(640, 480); dialog.setLocationRelativeTo(null); try File file = new File(“data.txt“); if (!file.exists() file.createNewFile(); char ch = new char(int)file.length(); FileReader in = new FileReader(file); in.read(ch); in.close(); area.setText(new String(ch); catch(IOException e) e.printStackTrace(); dialog.setVisible(true); 3.43.4 本章小结本章小结 本章介绍了计算器的具体实现和部分关键代码,其中包括用户登录界面创建 和检测用户登的合法性所要用到的loginDialog与compareUserData函数,注册界 面的设计与储存,主界面的框架设计和计算功能,储存与查看历史记录功能的具 体实现。 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 15 第第4章章 结束语结束语 在做本项目是时候,会遇到很多小问题,比如说:如何保存输入的数字和下 一个数进行加、减、乘、除运算。如何保存结果与如何进行登陆注册页面的添加 及用户信息的储存,经过不断地尝试与调整, 此次课程设计让我们更了解熟悉了Java中的图形用户界面和它的编程方式。 在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识, 收获很大。最大的收获就是对大学学习的总结和培养了解决困难的信心和能力, 使我们对所学知识能够融会贯通,又不断丰富了新知识。Java计算器设计使得我 们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。 致谢致谢 首先我们要感谢指导老师xx老师,在我们学习Java程序设计与完成Jav a程序课程设计的过程中所给予的热情教导、精心指导与大力支持。在许老师 的教导和指导下,我们的Java程序设计知识和能力从无到有、由弱渐强,理论和 实践水平有了长足的进步和显著的提高,不断开阔了思路与视野,总结出了许多 有意义的设计与开发经验。这些对我们来说是无比珍贵的知识和经验财富。在此 ,向许老师致以最诚挚的谢意。 还要感谢组员之间的团结与帮助。 参考文献参考文献 1 耿祥义,张跃平.java大学实用教程(第二版).电子工业出版社.2008年5月 附录附录 源代码源代码 /*/*引用数据包里的类与方法引用数据包里的类与方法*/*/ 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 16 import java.awt.BorderLayout; import java.awt.Checkbox; import java.awt.CheckboxGroup; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.KeyStroke; import javax.swing.Timer; /*Java计算器 主类*/ 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 17 public class Calculator implements ActionListener JFrame f; JDialog login, addUser; JMenu mView; JMenu mEdit; JMenu mHelp; JMenuItem mRecord; JMenuItem mCopy; JMenuItem mPaste; JMenuItem about; JTextField tResult, tf; JButton bNumber; JButton bOperator; JButton bOther; JButton bM; JButton Pi; JButton sin, cos, tan; JButton log; char operate = ' ' /操作数 StringBuffer num1 = new StringBuffer(“0“), num2 = new StringBuffer(“0“); boolean isExist = false, isClear = false; /M系列 StringBuffer memory = new StringBuffer(20); /系统剪切板 Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); /Java计算器 构造器 public Calculator() f = new JFrame(“计算器“); Container contentPane = f.getContentPane(); final SimpleDateFormat sdf = new SimpleDateFormat(“当前时间 HH:mm:ss“); Timer time = new Timer(1000, new ActionListener() public void actionPerformed(ActionEvent e) f.setTitle(“计算器 “ + sdf.format(new Date(System.currentTimeMillis(); ); time.start(); /*Java计算器 菜单的创建*/ JMenuBar mBar = new JMenuBar(); mBar.setOpaque(true); mView = new JMenu(“查看(V)“); 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 18 mView.setMnemonic(KeyEvent.VK_V); mRecord = new JMenuItem(“历史纪录(H)“); mRecord.setMnemonic(KeyEvent.VK_H); mRecord.addActionListener(this); mView.add(mRecord); mEdit = new JMenu(“编辑(E)“); mEdit.setMnemonic(KeyEvent.VK_E); mCopy = new JMenuItem(“复制(C)“); mCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK); mCopy.addActionListener(this); mEdit.add(mCopy); mPaste = new JMenuItem(“粘贴(P)“); mPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK); mPaste.addActionListener(this); mEdit.add(mPaste); mHelp = new JMenu(“帮助(H)“); mHelp.setMnemonic(KeyEvent.VK_H); about = new JMenuItem(“关于计算器“); about.addActionListener(this); mHelp.add(about); mBar.add(mView); mBar.add(mEdit); mBar.add(mHelp); f.setJMenuBar(mBar); contentPane.setLayout(new BorderLayout(); JPanel pTop = new JPanel(); pTop.setLayout(new BorderLayout(); tf = new JTextField(); tf.setHorizontalAlignment(JTextField.RIGHT); tf.setEditable(false); pTop.add(tf, BorderLayout.NORTH); tResult = new JTextField(“0“, 20); tResult.setFont(new Font(“黑体“, Font.BOLD, 28); tResult.setHorizontalAlignment(JTextField.RIGHT); tResult.setEditable(false); pTop.add(tResult, BorderLayout.CENTER); contentPane.add(pTop,BorderLayout.NORTH); 浙江科技学院信息与电子工程学院2009级Java程序课程设计报告 19 JPanel pBottom

    注意事项

    本文(Java程序课程设计报告-基于Java的计算器的设计与开发.doc)为本站会员(哈尼dd)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开