Java程序设计计算器含代码_第1页
Java程序设计计算器含代码_第2页
Java程序设计计算器含代码_第3页
Java程序设计计算器含代码_第4页
Java程序设计计算器含代码_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

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

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

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

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

5、提高计算效率。 用户信息存储清晰明了,便于查询。以时间为数据存储开头,存储用户计算的数据。系统最大限度地实现了易维护性和易操作性。系统运行稳定、安全可靠。系统模块化分析计算器主界面布局计算器主界面主要用了 Flowlayout 布局和 Gridlayout 布局的结合,更加简 洁明了。1)注册模块流程图Java课程设计信 101 杨赛 201031411610图1 :用户注册模块图2)查询模块流程图图2:查询模块图3)计算模块流程图图3:计算模块图实用型计算器各模块介绍各功能模块实现的功能为:登录模块:对登录用户进行判断是否合法,方便对用户查询计算历史记录查询的管理。合法情况下,用户才能进入并

6、实用计算器。注册模块:对新用户进行简单的注册,方便使用计算器和历史记录查询。计算模块:对数据进行相应的计算处理,得出计算结果并将计算结果以系统时间为数据开头存储到历史记录文件中。信息查询模块:对用户使用计算器计算的历史记录保存,方便用户查询。表3-1各模块名称功能汇总表序号模块名基本功能1登录模块登录用户2注册模块提供新用户注册服务2计算模块对数据进行计算,并将结果保存到历史记录文件中3信息查询对用户使用计算器计算的历史记录进行查询和用户信息 查询计算器的具体实现界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大程度上决定了软件是否成功。界面设计用户登陆界面图如图4所示

7、图4用户登录模块框图此JavaScript函数的作用是检测用户登陆的合法性,并确认用户输入了合法的登录名和口令。注册用户界面用尸名:'性另I:灯男;女畫码确认密码确定取消图5注册用户界面简单的用户信息注册,为用户节约不必要的时间。系统主界面Sin二讲制TenModSqr t23图6系统主界面为了操作的简单明了,我们采用了 Flowlayout布局和Gridlayout布局,简洁明了。 以系统时间为数据头存储,方便查询。3.2程序设计及调试运行做到程序简洁清楚,尽量避免可能潜在 以便于程序阅读和修改。利用JSP “一次编写,各处运行”的编程优点,按功能模块结构设计菜单,布置 各明细模块工

8、作界面,编写各个模块的程序代码,进行编译连接运行,经过反复 调试修改,以达到系统功能要求。这个过程具有大量的工作量,应仔细对每个程 序细节进行分析思考、编写程序并调试, 的程序错误,并在必要的地方加以注释,利用javac命令对文件进行编译,使用命运行结果演示:将文件A保存到同一个文件夹中。 令如下:Javac Calculator.java之后,利用java命令执行程序,使用命令如下:Java Calculator初始登入界面 登入界面用于可以用来登入,或进行进入注册界面注册界面,用来实现新用户的注册功能登入以后的计算界面Java 课程设计信 101 杨赛 2010314116第 4 章 结束

9、语针对大学生学习生活中对数据的计算需求的特点,及结合市场上现有计算器 的不足之处,我们小组结合现状研究出了更实用的计算器,为了方便日常生活。附录 源代码importjava.awt.*;importjava.util.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;importjava.io.*;importjava.text.*;publicclass Calculator impl1)2)3)4)经过两个礼拜的奋斗,我们小组终于将这个实用型计算器做了出来,但

10、是由 于能力有限及时间非常短暂,我们的产品还有以下不足之处: 界面过于朴素,美观程度不够 在一些较复杂计算按钮不能生动地在文件域内显示 有些复杂的计算方式没有加进去 计算器过于普通,不够生动UIManager. sName();setLookAndFeel(UIManager. getSystemLookAndFeelClasstaticJTextFieldtxt; / 声明文本框对象staticJFramef;staticJDialoglogin ,addUser ; / 登入和注册对话框staticdoubleyi , jieg, temp ; / 声明中间变量和结果变量staticint

11、 fh= 5;/ 选择计算模式,用于选择双目运算staticStrings;publicCalculator()tryActionListener 12-catch (Exception e) Java 课程设计信 101 杨赛 2010314116System. out .println (" 无法设置界面风格 " );new JFrame( " 计算器");/ 创建一个标题名为计算器的窗口f .setSize(420, 350);/设置窗口的大小(宽度和高度)f .setLocation(300, 300);/ 设置在屏幕出现的默认位置/*Java计

12、算器 菜单的创建*/JMenuBar mBar =new JMenuBar();/ 创建菜单条对象JMenu mView=new JMenu("查看(V)");/ 创建查看菜单JMenuItem mRecord=new JMenuItem(" 历史纪录 (H)" ); / 创建历史记录菜单项JMenuItem uInform=new JMenuItem(" 用户信息 (U)" ); / 创建1-14用户信息菜单项JPanel p =new JPanel();/ 创建 JPanel面板(中间容器)JPanel p1 =JPanel p2

13、 =JPanel p3 =JPanel p4 =JPanel p5 =JPanel p6 =JPanel p7 =new JPanel(); new JPanel(); new JPanel(); new JPanel(); new JPanel(); new JPanel(); new JPanel();txtnew JTextField(30);/ 创建文本框txt .setHorizontalAlignment(JTextField.RIGHT); / 设置文本框的属性为右对齐JButton bt00= new JButton("Sin" );/ 创建标题名为 Sin

14、 的按钮组件,进行 sin 函数计算"Cos" );"Tan" );JButton bt =JButton bt1 =new JButton( new JButton(JButton bt2 =new JButton("Log" );/ 创建标题名为 LogJava课程设计信 101 杨赛 201031411611JButton bt3 =的按钮组件,进行底为new JButt on(e的对数计算函数计算"Len")JButton bt4 =new JButt on("二进制JButton bt5 =ne

15、w JButt on("Back"的按钮,对于输出的数字进行退格JButton bt6 =new JButt on("C");进行复位功能JButton bt7 =new JButt on("7");JButton bt8 =new JButt on("8");JButton bt9 =new JButt on("9");JButton bt0 =new JButt on("/");JButton bt11 =new JButt on("Sqrt"JBut

16、ton bt12 =new JButt on("4");JButton bt13 =new JButt on("5");JButton bt14 =new JButt on("6");JButton bt15 =new JButt on("*" )JButton bt16 =new JButt on("Mod"JButton bt17 =new JButt on("1");JButton bt18 =new JButt on("2");JButton bt

17、19 =new JButt on("3");JButton bt10 =new JButt on("-");JButton bt21 =new JButt on("1/x"JButton bt22 =new JButt on("0");JButton bt23 =new JButt on("+/-"JButton bt24 =new JButt on(".");JButton bt25 =new JButt on("+");JButton bt26 =ne

18、w JButt on("=");的按钮组件,进行底为10的对数计算函数计算);););););mRecord.addActio nListe ner(this);");/创建标题名为Len/创建标题名为Back/初始化计算器按钮,/求数字的平方根按钮/求余数计算按钮/求倒数计算按钮Java 课程设计信 101 杨赛 20103141161-5uInform.addActionListener(this);bt00.addActionListener(this );/ 为各个按钮添加监视器bt.addActionListener( bt1.addActionList

19、ener( bt2.addActionListener( bt3.addActionListener( bt4.addActionListener( bt5.addActionListener( bt6.addActionListener( bt7.addActionListener( bt8.addActionListener( bt9.addActionListener( bt0.addActionListener( bt11.addActionListener( bt12.addActionListener( bt13.addActionListener( bt14.addActionL

20、istener( bt15.addActionListener( bt16.addActionListener( bt17.addActionListener( bt18.addActionListener( bt19.addActionListener( bt10.addActionListener( bt21.addActionListener( bt22.addActionListener( bt23.addActionListener( bt24.addActionListener( bt25.addActionListener( bt26.addActionListener();th

21、is this this this this this this this this this this this this this this this this this this this this this this this this this this););););););););););););););););););););););););););/*计算器界面布局 */f .setLayout( new BorderLayout(12, 2);/ 边界布局f .add(p, BorderLayout.f .add(p1, BorderLayout.f .add(p2);NO

22、RTH);WEST);mView.add(mRecord);/ 在查看菜单里面添加历史记录菜单项mView.add(uInform);/ 在查看菜单里面添加用户信息菜单项mBar.add(mView);/ 在菜单条上添加查看菜单f .setJMenuBar(mBar);/ 在窗体上添加菜单条p.setLayout( new FlowLayout();p2.setLayout( new GridLayout(5, 1, 10, 10);/ 网格布局参数依次为 ( 行数,列数,宽度,高度 )p2.add(p3);p2.add(p4);p2.add(p5);p2.add(p6);p2.add(p7)

23、;p3.setLayout( p3.add(bt4); p3.add(bt5); p3.add(bt6);p4.setLayout(new GridLayout(1, 3, 10, 10);new GridLayout(1, 5, 10, 10);p4.add(bt7);p4.add(bt8);p4.add(bt9);p4.add(bt0); p4.add(bt11);p5.setLayout( p5.add(bt12); p5.add(bt13); p5.add(bt14); p5.add(bt15); p5.add(bt16);new GridLayout(1, 5, 10, 10);p6

24、.setLayout(p6.add(bt17);p6.add(bt18);p6.add(bt19);p6.add(bt10);p6.add(bt21);new GridLayout(1, 5, 10, 10);p7.setLayout(p7.add(bt22);p7.add(bt23);p7.add(bt24);p7.add(bt25);new GridLayout(1, 5, 10, 10);Java 课程设计信 101杨赛 2010314116"4" ) 1-7p7.add(bt26);p.add( txt );p1.setLayout( p1.add(bt00); p

25、1.add(bt); p1.add(bt1); p1.add(bt2); p1.add(bt3);new GridLayout(5, 1, 10, 10);loginDialog();/ 启动登入界面public void actionPerformed(ActionEvent arg0) if(arg0.getActionCommand().equals(" 历史纪录 (H)" )showRecord();if(arg0.getActionCommand().equals(" 用户信息 (U)" )showUseInform();if(arg0.get

26、ActionCommand().equals(if ( txt .getText().equals(txt .setText( "1" );elsetxt .setText( txt .getText() +"1" ) "0" )"1" );if(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" ) txt .setText( "2" );elsetxt .setText( txt .getText(

27、) +"2" ) "2" );if(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" ) txt .setText( "3" );elsetxt .setText( txt .getText() +"3" ) "3" );if(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" )Java 课程设计信 101

28、 杨赛 20103141161-16ifififififififtxt .setText( elsetxt .setText("4" );txt .getText() +(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" ) txt .setText(elsetxt .setText("5" );txt .getText() +(arg0.getActionCommand().equals(if ( txt .getText().equals( "0

29、" ) txt .setText(elsetxt .setText("6" );txt .getText() +(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" ) txt .setText(elsetxt .setText("7" );txt .getText() +(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" ) txt .setText(el

30、setxt .setText("8" );txt .getText() +(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" ) txt .setText(elsetxt .setText("9" );txt .getText() +(arg0.getActionCommand().equals(if ( txt .getText().equals( "0" ) txt .setText(elsetxt .setText("0&q

31、uot; );txt .getText() +(arg0.getActionCommand().equals(if ( txt .getText().indexOf(txt .setText( txt .getText(); else"4" );"5" ) "5" );"6" ) "6" );"7" ) "7" );"8" ) "8" );"9" ) "9" );"0

32、" ) "0" );) "." ) != -1)II IItxt .setText( txt .getText() +"." );if (arg0.getActionCommand().equals("Sin") /先输入数字后按三角函数键yi = Double. valueOf (txt .getText(); temp =yi ;double jie = Math.txt .setText(String.sin ( yi /180*Math. PI valueOf (jie););s="si

33、n(" +String. valueOfsave( s); s =null ;if (arg0.getActionCommand().equals( "Cos" ) yi = Double. valueOf ( txt .getText(); temp =yi ; double jie = Math. txt .setText(String.(temp )+ ")=" +String.valueOf(jie);cos ( yi /180*Math. PI ); valueOf (jie);(temp )+ ")=" +Str

34、ing. valueOfs="cos(" +String. valueOfsave( s); s =null ;if (arg0.getActionCommand().equals( "Tan" ) yi = Double. valueOf ( txt .getText(); temp =yi ; double jie = Math. txt .setText(String.tan ( yi /180*Math. PI ); valueOf (jie);(jie);s="tan(" +String. valueOf save( s);

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

36、+ ")=" +String. valueOf(jie);s =null的对数if(arg0.getActionCommand().equals("Len")/求e为底数log ( yi ); valueOf (jie);yi = Double. valueOf ( txt .getText(); temp =yi ;double jie = Math.txt .setText(String.s="cos(" +String. valueOf save( s); s =null ;(temp )+ ")=" +St

37、ring.valueOf(jie);if(arg0.getActionCommand().equals("+/-") /正负转换if(!( txt .getText().equals("0" ).getText();yi = Double. valueOf (txt yi =- yi ;valueOf ( yi );txt .setText(String.if(arg0.getActionCommand().equals("Back" ) /退格int i = txt .getText().length();txt .setText(

38、 txt .getText().substring(0, i - 1);制数if(arg0.getActionCommand().equals(" 二进制 " ) / 去二进yi = Double. long a=( longvalueOf ( txt .getText(); )( yi );txt .setText(String.valueOf (Long. toBinaryString (a);s=" 二进制转化(" +String. ng(a);valueOf (yi )+ ")=" +String. valueOf (Long

39、. toBinaryStrisave( s); s =null ;if(arg0.getActionCommand().equals("C") /清空txt yi fhif(arg0.getActionCommand().equals("/") /除法.setText( "" );= 0;=5;yi = Double.valueOf ( txt .getText();fh = 3;txt .setText( "" );if(arg0.getActionCommand().equals() /乘法yi = Doubl

40、e. valueOf ( txt .getText(); fh = 2;txt .setText( "" );if(arg0.getActionCommand().equals("+") /加法yi = Double. valueOf ( txt .getText(); fh = 0;txt .setText( "" );if(arg0.getActionCommand().equals(II II) /減法yi = Double.valueOf ( txt .getText();fh = 1;txt .setText( "

41、" );if(arg0.getActionCommand().equals("Mod" ) / 取余yi fh txt= Double.= 4;.setText(valueOf ( txt .getText();"" );if (arg0.getActionCommand().equals("Sqrt") / 平方根yi = Double. valueOf ( txt .getText(); temp =yi ;double jie = Math.txt .setText(String.sqrt (yi ); valueOf

42、 (jie);s="Sqrt(" +String. valueOf save( s); s =null ;( temp )+ ")=" +String.valueOf (jie);if(arg0.getActionCommand().equals("1/x") / 求倒数ifs =String. eOf (jiegdouble dou = Double.valueOftxt .setText(String. valueOf(arg0.getActionCommand().equals(double switch case 0:jieg

43、er = Double. valueOf ( fh ) = ( yi + er);valueOf);save( s =null break ;case 1:jieg = ( yi(txt .getText();(1.0 / dou);"=" ) / 等号(txt.getText();( yi )+ "+" +String. valueOf(er)+ "=" +String. valus);- er);s =String. valueOf ( yi alueOf ( jieg );save( s);s =null ; break ;ca

44、se 2:jieg = ( yi)+ "-"* er);s=String. valueOf ( yi)+ "*"+String.+String.valueOf (er)+ "=" +String. vvalueOf (er)+ "=" +String. vJava 课程设计信 101 杨赛 2010314116alueOf ( jieg );save( s);s =null ;break ;case 3:valueOf (er)+ "=" +String. vjieg = ( yi / er);

45、s=String. valueOf ( yi )+ "/" +String. alueOf ( jieg );save( s);s =null ;break ;case 4:jieg =( yi % er);s=String.valueOf ( yi )+ "%" +String. valueOf (er)+alueOf ( jieg);save( s);s =null ;Ibreak ; fh=5;txt .setText(String.valueOf (jieg );/*登陆注册界面*/voidloginDialog() login= new JDi

46、alog();login.setTitle("登录" );login.setLayout( new FlowLayout();ImageIconimage= new ImageIcon( "logo.jpg" )片的绝对路径login.add( new JLabel(image); / 添加图片标签login.add( new JLabel(" 用户名 :" );finalJTextField name =new JTextField(15);login.add(name);login.add( new JLabel(" 密

47、码 :" );/ 设置显示图"=" +String. v2-2final JPasswordFieldpassword.setEchoChar(login .add(password);password '*' );= new JPasswordField(15);JButton confirm =new JButton(" 登录" );new ActionListener() void actionPerformed(ActionEvent e) if (compareUserData(name.getText().trim(

48、), String(password.getPassword() login .setVisible( f .setVisible(else confirm.addActionListener(publicfalse ); true );newJOptionPane.showMessageDialog ( login ," 用户名或密码错误! " ," 错误提示 ", JOptionPane.ERROR_MESSAG)E;);login.add(confirm);/ 添加登入按钮finalJDialog regDialog =new JDialog( l

49、ogin ," 注册",true );registerDialog(regDialog);JButton register =new JButton( " 注册");register.addActionListener(new ActionListener() false );true );public void actionPerformed(ActionEvent e) login .setVisible( regDialog.setVisible();loginloginloginloginlogin .add(register);.setSize

50、(350, 150); .setResizable( false .setLocationRelativeTo(.setVisible(true ););null );/*用户名密码的确认Java 课程设计信 101 杨赛 2010314116(8);2-4*/private boolean compareUserData(String name, String password) try RandomAccessFile out =RandomAccessFile( "user.dat"String fname, fpassword =new, "rw"

51、; );nullwhile (out.getFilePointer() < out.length() fname = out.readUTF(); out.readUTF(); fpassword = out.readUTF(); if(fname.equals(name)&&fpassword.equals(password)return true ;out.close();catch (IOException e) e.printStackTrace();return false/*注册用户的信息*/private void registerDialog(finalJ

52、Dialog regDialog) Box box1 = Box. createVerticalBox();box1.add( new JLabel( "用户名:" , JLabel.RIGHT);box1.add(Box. createVerticalStrut(10);box1.add( new JLabel( "性别:" , JLabel. RIGHT);box1.add(Box. createVerticalStrut(10);box1.add( new JLabel( "密码:" , JLabel. RIGHT), -1);box1.add(Box. createVerticalStrut(10);box1.add( new JLabel( "确认密码 :", JLabel. RIGHT);Box box2 = Box.createVerticalBoxfinal JTextFie

温馨提示

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

评论

0/150

提交评论