JAVA课程设计简单的计算器(含代码).doc_第1页
JAVA课程设计简单的计算器(含代码).doc_第2页
JAVA课程设计简单的计算器(含代码).doc_第3页
JAVA课程设计简单的计算器(含代码).doc_第4页
JAVA课程设计简单的计算器(含代码).doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

I Java程序课程设计任务书程序课程设计任务书 一 主要任务与目标 1 掌握java语言 2 创建一个简单的计算器 具有简单人机交互界面 易于操作 便于进行数据 之间的简单运算 二 具体要求 包括技术要求等 1 能够实现基本的加 减 乘 除四则运算及开方 乘方运算 2 如输入数据时 出现错误 可以修改 3 运算结果能正确显示 可以清零 4 拥有登陆注册功能 5 可以查看历史记录 学习并掌握以下技术 Java awt swing等 熟练使用以下开发工具 Jdk JCreate 等 实现计算器的上述的功能 三 计划进度 1 12月28日 12月29日 搜集资料 查阅文献 确定选题 2 12月30日 12月31日 需求分析 系统设计 系统功能模块完善 3 1月1日 1月3日 编程实现系统 系统测试与修改 4 1月4日 1月6日 课程设计报告撰写 5 1月 7日 1月 8日 课程设计报告答辩 四 主要参考文献 1 耿祥义 张跃平 java大学实用教程 第二版 电子工业出版社 2008年5月 II 目目 录录 JAVA程序课程设计任务书程序课程设计任务书 II 目目 录录 III 第第1章章 引言引言 1 1 1 课程设计内容 1 1 2 任务分工 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 引用数据包里的类与方法引用数据包里的类与方法 15 1 第第1章章 引言引言 1 11 1 课程设计内容课程设计内容 这是我组设计的计算器会有一些独特的功能 本项目用到了Java中的GUI界 面和swing组件以及awt布局 所以简单易用 它能完成如下的几个功能 1 数据计算处理功能 点击按钮中的数字键和运算符键就能进行简单的加 乘 乘 除四则运算 及三角函数 开方 乘方运算 如果输入有误时可以按C撤销后重新输入新数据 有储存修改键 2 查询功能 查询功能可以迅速方便地查找到相应时段的执行的操作及结果 3 计算器使用权限功能 对个人的操作实现口令 用户在使用计算器前需通过登录界面登录 以保护计 算器的数据安全 未有登录资料的先进行注册 4 时间显示功能 在计算器上显示现在的时间 便于把握时间 1 21 2 任务分工任务分工 2 第第2章章 计算器定义计算器定义 2 12 1 计算器登陆注册界面概述计算器登陆注册界面概述 这是对计算器使用权限功能的添加 这是以后软件开发的一个重点发展方向 用户在使用计算器前需通过登录界面登录 以保护计算器的数据安全和使用权限 的设定 未有登录资料的必须先进行注册 2 1 1 计算器功能概述计算器功能概述 一个计算器如果只有数据计算处理功能 或者是点击按钮中的数字键和运算 符键就能进行简单的加 乘 乘 除四则运算是远远不够的 这太普通了 因此 加入三角函数 开方 乘方运算 并且如果输入有误时可以按C撤销后重新输入新数据 有储存修改键 最主要 是加入了查询功能 查询功能可以迅速方便地查找到相应时段的执行的操作及结 果 还有就是计算器使用权限的设定 即登陆注册界面 用户在使用计算器前需 通过登录界面登录 以保护计算器的数据安全 未有登录资料的先进行注册 2 1 2 计算结果的储存与查看功能概述计算结果的储存与查看功能概述 计算结果有了 但是一般的计算器不能查询之前进行的操作和结果 不得不重新 计算 这就带来了不少麻烦 我组设计制作的计算器拥有直接查看历史记录的功 能 还附有各个操作的时间 便于确认 2 22 2 本章小结本章小结 这一章介绍了当前进销存管理系统应该具备的功能模块 并提供了市面上比 较流行的进销存管理系统作为参考 在这一章中 我们可以了解什么是进销存管 理系统 当前进销存管理系统的市场需求 还有一个进销存管理系统应该的开发 目标 3 第第3章章 计算器的具体实现计算器的具体实现 界面是系统之间最直接的交互界面 界面的友好性体现了软件设计的质量 并在很大程度上决定了软件是否成功 3 13 1界面设计界面设计 1 界面设计界面设计 界面设计要求用GUI 界面设计中有用到swing组件的TextField和Button 用 到awt中的BorderLayout和GridLayout布局管理方式 3 1 1用户登陆界面图用户登陆界面图 如图3 1 1和3 1 2所示 图图3 1 1 用户登录模块框图用户登录模块框图 4 图图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 JOptionPane showMessageDialog login 用户名或密码错误 错误提示 JOptionPane ERROR MESSAGE 5 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 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 10 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则恢复缓冲区的数到文本框 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则将文本框中的数据为它的倒数 11 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 x 2 如果按键为x 2则将文本框中的内容求平方 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 加减乘除按键求结果 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 12 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 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 13 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 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 14 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函数 注册界 面的设计与储存 主界面的框架设计和计算功能 储存与查看历史记录功能的具 体实现 第第4章章 结束语结束语 在做本项目是时候 会遇到很多小问题 比如说 如何保存输入的数字和下 一个数进行加 减 乘 除运算 如何保存结果与如何进行登陆注册页面的添加 及用户信息的储存 经过不断地尝试与调整 此次课程设计让我们更了解熟悉了Java中的图形用户界面和它的编程方式 在完成课题的过程中也不断充实了自己 学习到了很多以前没有学习到的知识 收获很大 最大的收获就是对大学学习的总结和培养了解决困难的信心和能力 使我们对所学知识能够融会贯通 又不断丰富了新知识 Java计算器设计使得我 们对所学的专业课有了更为深刻的认识 使得知识得到了巩固和提高 15 致谢致谢 参考文献参考文献 1 耿祥义 张跃平 java大学实用教程 第二版 电子工业出版社 2008年5月 附录附录 源代码源代码 引用数据包里的类与方法引用数据包里的类与方法 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 16 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计算器 主类 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 系统剪切板 17 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 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 18 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 JPanel pBottom new JPanel pBottom setLayout new BorderLayout JPanel pLeft new JPanel pLeft setLayout new GridLayout 5 2 3 3 bM new JButton bM setEnabled false pLeft add bM Java计算器 功能键定义 Pi new JButton Pi addActionListener this Pi setForeground Color red pLeft add Pi bOther new JButton MC bOther addActionListener this bOther setForeground Color red pLeft add bOther sin new JButton sin sin addActionListener this sin setForeground Color red pLeft add sin 19 bOther new JButton MR bOther addActionListener this bOther setForeground Color red pLeft add bOther cos new JButton cos cos addActionListener this cos setForeground Color red pLeft add cos bOther new JButton MS bOther addActionListener this bOther setForeground Color red pLeft add bOther tan new JButton tan tan addActionListener this tan setForeground Color red pLeft add tan bOther new JButton M bOther addActionListener this bOther setForeground Color red pLeft add bOther log new JButton log log addActionListener this log setForeground Color red pLeft add log pBottom add pLeft BorderLayout WEST JPanel pRight new JPanel pRight setLayout new BorderLayout JPanel pUp new JPanel pUp setLayout new GridLayout 1 3 3 0 bOther new JButton BackSpace bOther addActionListener this bOther setForeground Color red pUp add bOther 20 bOther new JButton CE bOther addActionListener this bOther setForeground Color red pUp add bOther bOther new JButton C bOther addActionListener this bOther setForeground Color red pUp add bOther Java计算器 数字键盘区定义 JPanel pDown new JPanel pDown setLayout new GridLayout 4 5 3 2 bNumber new JButton 7 bNumber setMnemonic KeyEvent VK 7 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bNumber new JButton 8 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bNumber new JButton 9 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bOperator new JButton bOperator setForeground Color red bOperator addActionListener this pDown add bOperator bOperator new JButton sqrt bOperator addActionListener this bOperator setForeground Color red pDown add bOperator bNumber new JButton 4 bNumber setForeground Color blue bNumber addActionListener this 21 pDown add bNumber bNumber new JButton 5 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bNumber new JButton 6 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bOperator new JButton bOperator setForeground Color red bOperator addActionListener this pDown add bOperator bOperator new JButton x 2 bOperator setForeground Color red bOperator addActionListener this pDown add bOperator bNumber new JButton 1 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bNumber new JButton 2 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bNumber new JButton 3 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bOperator new JButton bOperator setForeground Color red bOperator addActionListener this pDown add bOperator bOperator new JButton 1 x bOperator setForeground Color red 22 bOperator addActionListener this pDown add bOperator bNumber new JButton 0 bNumber setForeground Color blue bNumber addActionListener this pDown add bNumber bOperator new JButton bOperator setForeground Color blue bOperator addActionListener this pDown add bOperator bOperator new JButton bOperator setForeground Color blue bOperator addActionListener this pDown add bOperator bOperator new JButton bOperator setForeground Color red bOperator addActionListener this pDown add bOperator bOperator new JButton bOperator setForeground Color red bOperator addActionListener this pDown add bOperator pRight add pUp BorderLayout NORTH pRight add pDown BorderLayout SOUTH pBottom add pRight BorderLayout EAST contentPane add pBottom BorderLayout SOUTH f pack f setResizable false f setLocationRelativeTo null f setVisible true f setDefaultCloseOperation JFrame EXIT ON CLOSE loginDialog 登陆注册界 private void loginDialog login new JDialog 23 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 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 27 else tResult setText 0 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 28 memory replace 0 memory length temp bM setText else if s equals MR 如果按键为MR则恢复缓冲区的数到文本框 tResult setText mem

温馨提示

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

评论

0/150

提交评论