收藏 分享(赏)

JAVA程序设计计算器(含代码).doc

上传人:dreamzhangning 文档编号:2813249 上传时间:2018-09-28 格式:DOC 页数:26 大小:27.37KB
下载 相关 举报
JAVA程序设计计算器(含代码).doc_第1页
第1页 / 共26页
JAVA程序设计计算器(含代码).doc_第2页
第2页 / 共26页
JAVA程序设计计算器(含代码).doc_第3页
第3页 / 共26页
JAVA程序设计计算器(含代码).doc_第4页
第4页 / 共26页
JAVA程序设计计算器(含代码).doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、JAVA 程序设计计算器(含代码)Java 课程设计信 101 杨赛 2010314116Java 课程设计报告计算器设计与实现班级:信 101学号:2010414116姓名:杨赛指导老师:李红强1-Java 课程设计信 101 杨赛 2010314116引言Java 不依赖平台的特点使它受到广泛的关注,Java 已成为网络时代最重要的语言之一。Java 具有平台无关性,面向对象,多线程,安全,动态等特点。Java 语言和其他语言相比,最大的优势在于能够在所有的计算机上运行,这也是 Java 风靡全球的主要原因。Java 的面向对象编程是一种先进的编程思想,可以更容易的解决复杂的问题。面向对象

2、编程主要体现在以下三个方面:封装,继承,多态。因此 Java 不仅可以用来开发大型的桌面应用程序,而且特别适用于 Internet 的应用开发。目前,Java 语言不仅是一门被广泛使用的编程语言,而且成为软件设计开发者应当掌握的一门基础语言。Java 语言面向对象编程,并涉及网络,多线程等重要的基础知识。因为很多新的技术领域都涉及到 Java 语言,国内外许多大学已经将 Java 语言列入了本科教学计划,而 IT 行业对 Java 人才的需求也不断的增长。在 IT 行业发达的国家,有将近 60%的软件开发人员使用 Java 的基础培训工作。一些软件公司对其开发人员周期性的进行Java 的基础培

3、训工作。因此,学习和掌握 Java 已经成为共识。在学完了 Java 程序设计基础课程后,我们这小组进行 Java 课程设计的教程,在熟练运用 Eclipse 环境下,来完成这个实用性计算器。1.2 课程设计内容实用型计算器的特点是通过用户注册,登录并实用计算器,计算过程对数据有自动保存。通过集中式的信息数据库,将用户信息与使用情况都存储起来,达到数据共享,降低成本,提高效率,改进服务的目的,进而实现该计算器实用性的优势。实用性计算器包含以下内容:(1)计算功能该功能用于计算各种四则运算、三角函数、进制转换、求余数、求对数等日常实用频率较高的功能。(2)统计汇总的功能该功能对计算器运行数据进行

4、存储,提供用户对数据查询。(3)查询功能该计算器的存储功能提供给用户对历史信息的查询,可以按照时间查询。第 2 章实用型计算器的设计这一章是实用型计算器的设计,从系统需求分析开始,介绍开发环境和用到2-Java 课程设计信 101 杨赛 2010314116 的开发工具,系统主要的功能设计,系统的数据流程图。主要功能要求本计算器针对在校大学生对计算的要求及市场上计算器现状,做出更实用便捷的计算器。本计算器主要实现如下功能:?系统采用人机对话方式,界面美观友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠。?通过注册账号并登录实现用户个人实用信息的存储并查询。系统操作简单,界面简洁明了。数据

5、计算自动完成,提高计算效率。用户信息存储清晰明了,便于查询。以时间为数据存储开头,存储用户计算的数据。系统最大限度地实现了易维护性和易操作性。系统运行稳定、安全可靠。系统模块化分析计算器主界面布局计算器主界面主要用了 Flowlayout 布局和 Gridlayout 布局的结合,更加简洁明了。1)注册模块流程图3-Java 课程设计信 101 杨赛 2010314116 用户在登陆界面中注册账号添加注册面板单击注册按钮填写个人信息判断两次密码输入是否一直否输出错误信息是完成注册,返回登入界图 1:用户注册模块图2)查询模块流程图用户在主窗口左边的菜单上点查看显示参看选项选择查询选项显示查询数

6、据关闭查询界面,显示计算图 2:查询模块图3)计算模块流程图4-Java 课程设计信 101 杨赛 2010314116输入计算数字输入计算符号进行计算在计算器文本框中显示计算将计算结果存到历史记录文件中图 3:计算模块图实用型计算器各模块介绍各功能模块实现的功能为:登录模块: 对登录用户进行判断是否合法,方便对用户查询计算历史记录查询的管理。合法情况下,用户才能进入并实用计算器。注册模块: 对新用户进行简单的注册,方便使用计算器和历史记录查询。计算模块: 对数据进行相应的计算处理,得出计算结果并将计算结果以系统时间为数据开头存储到历史记录文件中。信息查询模块:对用户使用计算器计算的历史记录保

7、存,方便用户查询。表 3-1 各模块名称功能汇总表序号1223 模块名登录模块注册模块计算模块信息查询登录用户提供新用户注册服务对数据进行计算,并将结果保存到历史记录文件中对用户使用计算器计算的历史记录进行查询和用户信息查询基本功能5-Java 课程设计信 101 杨赛 2010314116计算器的具体实现界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大程度上决定了软件是否成功。界面设计用户登陆界面图如图 4 所示图 4 用户登录模块框图此 JavaScript 函数的作用是检测用户登陆的合法性,并确认用户输入了合法的登6-Java 课程设计信 101 杨赛 2010

8、314116录名和口令。注册用户界面图 5 注册用户界面简单的用户信息注册,为用户节约不必要的时间。系统主界面图 6 系统主界面为了操作的简单明了,我们采用了 Flowlayout 布局和 Gridlayout 布局,简洁明了。以系统时间为数据头存储,方便查询。7-Java 课程设计信 101 杨赛 20103141163.2 程序设计及调试运行利用 JSP“一次编写,各处运行”的编程优点 ,按功能模块结构设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以达到系统功能要求。这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,

9、做到程序简洁清楚,尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。运行结果演示:将文件 A 保存到同一个文件夹中。利用 javac 命令对文件进行编译,使用命令如下:JavacCalculator.java之后,利用 java 命令执行程序,使用命令如下:JavaCalculator初始登入界面登入界面用于可以用来登入,或进行进入注册界面注册界面,用来实现新用户的注册功能登入以后的计算界面8-Java 课程设计信 101 杨赛 2010314116第 4 章结束语针对大学生学习生活中对数据的计算需求的特点,及结合市场上现有计算器的不足之处,我们小组结合现状研究出了更实

10、用的计算器,为了方便日常生活。经过两个礼拜的奋斗,我们小组终于将这个实用型计算器做了出来,但是由于能力有限及时间非常短暂,我们的产品还有以下不足之处:1)界面过于朴素,美观程度不够 2)在一些较复杂计算按钮不能生动地在文件域内显示 3)有些复杂的计算方式没有加进去 4)计算器过于普通,不够生动附录源代码importimportimportimportimportimportimportpublicjava.awt.*;java.util.*;java.awt.event.ActionEvent;java.awt.event.ActionListener;javax.swing.*;java.i

11、o.*;java.text.*;classCalculatorimplementsActionListener/声明文本框对象/登入和注册对话框staticJTextFieldtxt;staticJFramef;staticJDialoglogin,addUser;staticdoubleyi,jieg,temp;/声明中间变量和结果变量staticintfh=5;/选择计算模式,用于选择双目运算staticStrings;publicCalculator()tryUIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(

12、);catch(Exceptione)9-Java 课程设计信 101 杨赛 2010314116System.out.println(“无法设置界面风格“);f=newJFrame(“计算器 “);/创建一个标题名为计算器的窗口f.setSize(420,350);/设置窗口的大小(宽度和高度)f.setLocation(300,300);/设置在屏幕出现的默认位置 /*Java 计算器菜单的创建*/JMenuBarmBar=newJMenuBar();/创建菜单条对象JMenumView=newJMenu(“查看(V)“);/创建查看菜单JMenuItemmRecord=newJMenuI

13、tem(“历史纪录(H)“);/ 创建历史记录菜单项JMenuItemuInform=newJMenuItem(“用户信息(U)“);/创建用户信息菜单项JPanelp=newJPanel();/创建 JPanel 面板(中间容器)JPanelJPanelJPanelJPanelJPanelJPanelJPanelp1p2p3p4p5p6p7=newnewnewnewnewnewnewJPanel();JPanel();JPanel();JPanel();JPanel();JPanel();JPanel();txt=newJTextField(30);/创建文本框txt.setHorizont

14、alAlignment(JTextField.RIGHT);/设置文本框的属性为右对齐JButtonbt00=newJButton(“Sin“);按钮组件,进行 sin 函数计算JButtonbt=newJButton(“Cos“);JButtonbt1=newJButton(“Tan“);JButtonbt2=newJButton(“Log“);10-/创建标题名为 Sin 的/ 创建标题名为 LogJava 课程设计信 101 杨赛 2010314116 的按钮组件,进行底为 10 的对数计算函数计算JButtonbt3=newJButton(“Len“);的按钮组件,进行底为 e 的对数

15、计算函数计算 /创建标题名为JButtonbt4=newJButton(“二进制“);JButtonbt5=newJButton(“Back“);的按钮,对于输出的数字进行退格JButtonbt6=newJButton(“C“);进行复位功能JButtonJButtonJButtonJButtonbt7bt8bt9bt0=newnewnewnewJButton(“7“);JButton(“8“);JButton(“9“);JButton(“/“);/初始化计算器按钮,/ 创建标题名为 BackJButtonbt11=newJButton(“Sqrt“);/求数字的平方根按钮JButtonJBu

16、ttonJButtonJButtonbt12bt13bt14bt15=newnewnewnewJButton(“4“);JButton(“5“);JButton(“6“);JButton(“*“);/求余数计算按钮 JButtonbt16=newJButton(“Mod“);JButtonJButtonJButtonJButtonbt17bt18bt19bt10=newnewnewnewJButton(“1“);JButton(“2“);JButton(“3“);JButton(“-“);JButtonbt21=newJButton(“1/x“);JButtonJButtonJButtonJB

17、uttonJButtonbt22bt23bt24bt25bt26=newnewnewnewnewJButton(“0“);JButton(“+/-“);JButton(“.“);JButton(“+“);JButton(“=“);/求倒数计算按钮mRecord.addActionListener(this);11-Java 课程设计信 101 杨赛 2010314116uInform.addActionListener(this);bt00.addActionListener(this);/为各个按钮添加监视器bt.addActionListener(this);bt1.addActionLi

18、stener(this);bt2.addActionListener(this);bt3.addActionListener(this);bt4.addActionListener(this);bt5.addActionListener(this);bt6.addActionListener(this);bt7.addActionListener(this);bt8.addActionListener(this);bt9.addActionListener(this);bt0.addActionListener(this);bt11.addActionListener(this);bt12.a

19、ddActionListener(this);bt13.addActionListener(this);bt14.addActionListener(this);bt15.addActionListener(this);bt16.addActionListener(this);bt17.addActionListener(this);bt18.addActionListener(this);bt19.addActionListener(this);bt10.addActionListener(this);bt21.addActionListener(this);bt22.addActionLi

20、stener(this);bt23.addActionListener(this);bt24.addActionListener(this);bt25.addActionListener(this);bt26.addActionListener(this);/*计算器界面布局*/f.setLayout(newBorderLayout(12,2);/边界布局f.add(p,BorderLayout.NORTH);f.add(p1,BorderLayout.WEST);f.add(p2);mView.add(mRecord);mView.add(uInform);mBar.add(mView);/

21、在查看菜单里面添加历史记录菜单项/在查看菜单里面添加用户信息菜单项/ 在菜单条上添加查看菜单12-Java 课程设计信 101 杨赛 2010314116f.setJMenuBar(mBar);/在窗体上添加菜单条p.setLayout(newFlowLayout();p2.setLayout(newGridLayout(5,1,10,10);/网格布局参数依次为 (行数,列数,宽度,高度)p2.add(p3);p2.add(p4);p2.add(p5);p2.add(p6);p2.add(p7);p3.setLayout(p3.add(bt4);newGridLayout(1,p3.add(

22、bt5);p3.add(bt6);p4.setLayout(newGridLayout(1,p4.add(bt7);p4.add(bt8);p4.add(bt9);p4.add(bt0);p4.add(bt11);p5.setLayout(p5.add(bt12);newGridLayout(1,p5.add(bt13);p5.add(bt14);p5.add(bt15);p5.add(bt16);p6.setLayout(p6.add(bt17);newGridLayout(1,p6.add(bt18);p6.add(bt19);p6.add(bt10);p6.add(bt21);p7.se

23、tLayout(p7.add(bt22);newGridLayout(1,p7.add(bt23);p7.add(bt24);p7.add(bt25);13-3,10,5,10,5,10,5,10,5,10,10);10);10);10);10);Java 课程设计信 101 杨赛 2010314116p7.add(bt26);p.add(txt);p1.setLayout(newGridLayout(5,1,10,10);p1.add(bt00);p1.add(bt);p1.add(bt1);p1.add(bt2);p1.add(bt3);loginDialog();/启动登入界面publi

24、cvoidactionPerformed(ActionEventarg0)if(arg0.getActionCommand().equals(“历史纪录(H)“)showRecord();if(arg0.getActionCommand().equals(“用户信息(U)“)showUseInform();if(arg0.getActionCommand().equals(“1“)if(txt.getText().equals(“0“)txt.setText(“1“);elsetxt.setText(txt.getText()+“1“);if(arg0.getActionCommand().e

25、quals(“2“)if(txt.getText().equals(“0“)txt.setText(“2“);elsetxt.setText(txt.getText()+“2“);if(arg0.getActionCommand().equals(“3“)if(txt.getText().equals(“0“)txt.setText(“3“);elsetxt.setText(txt.getText()+“3“);if(arg0.getActionCommand().equals(“4“)if(txt.getText().equals(“0“)14-Java 课程设计信 101 杨赛 20103

26、14116txt.setText(“4“);elsetxt.setText(txt.getText()+“4“);if(arg0.getActionCommand().equals(“5“)if(elsetxttxt.setText(.getText().equals(“5“);“0“)txt.setText(txt.getText()+“5“);if(arg0.getActionCommand().equals(if(txt.getText().equals(“0“6“)elsetxt.setText(“6“);)txt.setText(txt.getText()+“6“);if(arg0.

27、getActionCommand().equals(if(txt.getText().equals(“0“)“7“)elsetxt.setText(“7“);txt.setText(txt.getText()+“7“);if(arg0.getActionCommand().equals(if(“8“)elsetxttxt.setText(.getText().equals(“8“);“0“)txt.setText(txt.getText()+“8“);if(arg0.getActionCommand().equals(if(txt“9“)elsetxt.setText(.getText().e

28、quals(“9“);“0“)txt.setText(txt.getText()+“9“);if(arg0.getActionCommand().equals(if(“0“elsetxttxt).setText(.getText().equals(“0“);“0“)txt.setText(txt.getText()+“0“);if(arg0.getActionCommand().equals(if(txt.getText().indexOf(“.“.“)elsetxt.setText(txt.getText();)!=-1)15-Java 课程设计信 101 杨赛 2010314116txt.

29、setText(txt.getText()+“.“);if(arg0.getActionCommand().equals(“Sin“)/先输入数字后按三角函数键yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.sin(yi/180*Math.PI);txt.setText(String.valueOf(jie);s=“sin(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equals(“Cos“)yi=

30、Double.valueOf(txt.getText();temp=yi;doublejie=Math.cos(yi/180*Math.PI);txt.setText(String.valueOf(jie);s=“cos(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equals(“Tan“)yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.tan(yi/180*Math.PI);txt.setText

31、(String.valueOf(jie);s=“tan(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equals(“Log“)/求 10 为底数对数yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.log(yi)/Math.log(10.0);txt.setText(String.valueOf(jie);s=“log(“+String.valueOf(temp)+“)=“+String.valueO

32、f(jie);save(s);16-Java 课程设计信 101 杨赛 2010314116s=null;if(arg0.getActionCommand().equals(“Len“)/求 e 为底数的对数yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.log(yi);txt.setText(String.valueOf(jie);s=“cos(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equa

33、ls(“+/-“)/正负转换 if(!(txt.getText().equals(“0“)yi=Double.valueOf(txt.getText();yi=-yi;txt.setText(String.valueOf(yi);if(arg0.getActionCommand().equals(“Back“)/退格 inti=txt.getText().length();txt.setText(txt.getText().substring(0,i-1);if(arg0.getActionCommand().equals(“二进制“)/ 去二进制数yi=Double.valueOf(txt.

34、getText();longa=(long)(yi);txt.setText(String.valueOf(Long.toBinaryString(a);s=“二进制转化(“+String.valueOf(yi)+“)=“+String.valueOf(Long.toBinaryString(a);save(s);s=null;17-Java 课程设计信 101 杨赛 2010314116if(arg0.getActionCommand().equals(“C“)/清空 txt.setText(“);yi=0;fh=5;if(arg0.getActionCommand().equals(“/“

35、)/除法yi=Double.valueOf(txt.getText();fh=3;txt.setText(“);if(arg0.getActionCommand().equals(“*“)/乘法yi=Double.valueOf(txt.getText();fh=2;txt.setText(“);if(arg0.getActionCommand().equals(“+“)/加法yi=Double.valueOf(txt.getText();fh=0;txt.setText(“);if(arg0.getActionCommand().equals(“-“)/減法yi=Double.valueOf

36、(txt.getText();fh=1;txt.setText(“);if(arg0.getActionCommand().equals(“Mod“)/取余yi=Double.valueOf(txt.getText();fh=4;txt.setText(“);18-Java 课程设计信 101 杨赛 2010314116if(arg0.getActionCommand().equals(“Sqrt“)/平方根yi=Double.valueOf(txt.getText();temp=yi;doublejie=Math.sqrt(yi);txt.setText(String.valueOf(jie

37、);s=“Sqrt(“+String.valueOf(temp)+“)=“+String.valueOf(jie);save(s);s=null;if(arg0.getActionCommand().equals(“1/x“)/求倒数doubledou=Double.valueOf(txt.getText();txt.setText(String.valueOf(1.0/dou);if(arg0.getActionCommand().equals(“=“)/等号doubleer=Double.valueOf(txt.getText();switch(fh)case0:jieg=(yi+er);

38、s=String.valueOf(yi)+“+“+String.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break;case1:jieg=(yi-er);s=String.valueOf(yi)+“-“+String.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break;case2:jieg=(yi*er);s=String.valueOf(yi)+“*“+String.valueOf(er)+“=“+String.v19-Java 课程设计信 101 杨赛 20103

39、14116alueOf(jieg);save(s);s=null;break;case3:jieg=(yi/er);s=String.valueOf(yi)+“/“+String.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break;case4:jieg=(yi%er);s=String.valueOf(yi)+“%“+String.valueOf(er)+“=“+String.valueOf(jieg);save(s);s=null;break;fh=5;txt.setText(String.valueOf(jieg);/*登陆注

40、册界面*/voidloginDialog()login=newJDialog();login.setTitle(“登录“);login.setLayout(newFlowLayout();ImageIconimage=newImageIcon(“logo.jpg“);/设置显示图片的绝对路径login.add(newJLabel(image);/添加图片标签login.add(newJLabel(“用户名:“);finalJTextFieldname=newJTextField(15);login.add(name);login.add(newJLabel(“密20-码:“);Java 课程设

41、计信 101 杨赛 2010314116finalJPasswordFieldpassword=newJPasswordField(15);password.setEchoChar(*);login.add(password);JButtonconfirm=newJButton(“登录“);confirm.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)if(compareUserData(name.getText().trim(),newString(password.getPasswor

42、d()login.setVisible(false);f.setVisible(true);elseJOptionPane.showMessageDialog(login,“用户名或密码错误!“,“错误提示 “,JOptionPane.ERROR_MESSAGE););login.add(confirm);/添加登入按钮finalJDialogregDialog=newJDialog(login,“注册“,true);registerDialog(regDialog);JButtonregister=newJButton(“注册“);register.addActionListener(new

43、ActionListener()publicvoidactionPerformed(ActionEvente)login.setVisible(false);regDialog.setVisible(true););login.add(register);login.setSize(350,150);login.setResizable(false);login.setLocationRelativeTo(null);login.setVisible(true);/*用户名密码的确认21-Java 课程设计信 101 杨赛2010314116*/privatebooleancompareUse

44、rData(Stringname,Stringpassword)tryRandomAccessFileout=newRandomAccessFile(“user.dat“,“rw“);Stringfname,fpassword=null;while(out.getFilePointer()out.length()fname=out.readUTF();out.readUTF();fpassword=out.readUTF();if(fname.equals(name)fpassword.equals(password)returntrue;out.close();catch(IOExcepti

45、one)e.printStackTrace();returnfalse;/*注册用户的信息*/privatevoidregisterDialog(finalJDialogregDialog)Boxbox1=Box.createVerticalBox();box1.add(newJLabel(“用户名:“,JLabel.RIGHT);box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(“性别:“,JLabel.RIGHT);box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(“

46、密码:“,JLabel.RIGHT),-1);box1.add(Box.createVerticalStrut(10);box1.add(newJLabel(“确认密码:“,JLabel.RIGHT);Boxbox2=Box.createVerticalBox();finalJTextFieldnameTextField=newJTextField(10);box2.add(nameTextField);box2.add(Box.createVerticalStrut(8);22-Java 课程设计信 101 杨赛 2010314116finalCheckboxGroupcbg=newChec

47、kboxGroup();Boxbox21=Box.createHorizontalBox();finalCheckboxcb1=newCheckbox(“男“,cbg,true);box21.add(cb1);box21.add(newCheckbox(“女“,cbg,false);box2.add(box21);box2.add(Box.createVerticalStrut(8);finalJPasswordFieldpass1=newJPasswordField(10);box2.add(pass1);box2.add(Box.createVerticalStrut(8);finalJP

48、asswordFieldpass2=newJPasswordField(10);box2.add(pass2);BoxbaseBox=Box.createHorizontalBox();baseBox.add(box1);baseBox.add(box2);regDialog.setLayout(newFlowLayout();regDialog.add(baseBox);JButtonconfirm=newJButton(“确定“);JButtoncancel=newJButton(“取消“);regDialog.add(confirm);regDialog.add(cancel);regDialog.setSize(150,200);regDialog.setResizable(false);regDial

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报