




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息科学与技术学院JavaJava 语言课程设计语言课程设计报告报告 题题 目:目: 编写一个计算器程序编写一个计算器程序 专专 业:业: 计算机科学与技术计算机科学与技术 班班 级:级: 学学 号:号: 姓姓 名:名: 目录目录一、概述一、概述.3 31.1 设计目的及思路.31.2 功能模块设计.31.3 程序结构(流程图).4二、计算器的设计与实现二、计算器的设计与实现.4 42.1 程序界面.42.2 程序源代码.5三、三、参考文献参考文献.1414一、概述1.11.1 设计目的及思路设计目的及思路通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地
2、理解、掌握和综合运用所学的知识,提高自身的编程能力。利用 Java Applet 图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用 Java 中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数 Integer.toBinaryString
3、(int i)来实现,充分显示了 Java 语言的简洁性和 Java 语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java 语言健壮性的体现!1.21.2 功能模块设计功能模块设计(1)加法:两个数据进行加操作,可以为小数。(2)减法:两个数据进行减操作,可以为负数相减。(3)乘法:两个数相乘操作。(4)除法:两个数相除操作。(5)阶乘:对任意一个数进行阶乘运算。(6)指数:对任意一个数进行指数运算。(7)倒数:对任意一个数进行倒数运算。1.31.3 程序结构程序结构(流程图)(流程图)二、计算器的设计与实现2.12.1 程序界面程序界面 2.22.2
4、程序源代码程序源代码package mine;import java.awt.*;import java.awt.event.*;public class Calculator implements ActionListenerprivate double data1=0.0,data2=0.0;private String t_content;boolean number=false;/key 用标示用户所按按钮即加减乘除/key0 标示+1 表示-2 表示*3 表示/short key=-1;/pkey 取值-15/pkey-1 表示第按=按钮 5 说明第按=按钮/pkey 其值 0,1,
5、2,3 别代表+-,*/short pkey=-1;Frame frame=new Frame(计算器);/定义标题 Calculator 窗体TextField textfield=new TextField(30);/定义计算机/定义 backspace,ce,c0 按钮Button backspace=new Button(退格);Button ce=new Button(撤消);Button c0=new Button(清空);/定义面板其 backspace,ce,c0 按钮计算机栏 textfeild 放面板 p1/其余按钮放面板 p2Panel p1=new Panel();Pa
6、nel p2=new Panel();/定义界面按钮数组即除 backspace,ce,c0 按钮所按钮String names=7,8,9,/,sqrt,4,5,6,*,%,1,2,3,-,1/x,0,+/-,.,+,=;Button bb=new Buttonnames.length;public static void main(String args) Calculator cal=new Calculator(); cal.go();public void go()frame.setSize(300,200);frame.setLayout(new BorderLayout();Fo
7、nt fonts=new Font(楷体_GB2312,Font.PLAIN,12); /设置面板 p1 字体布局管理类型 textfeild 象添加面板p1.setFont(fonts);p1.setLayout(new GridLayout(2,1,5,10);textfield.setFont(fonts);p1.add(textfield,null);/backspace,ce,c0 按钮注册 addActionListenerbackspace.addActionListener(this);ce.addActionListener(this);c0.addActionListene
8、r(this);/backspace,ce,c0 按钮添加 p1 面板p1.add(backspace,null);p1.add(ce,null);p1.add(c0,null);/设置面板 p2 布局管理器类型 GridLayoutp2.setLayout(new GridLayout(4,5,5,5);/按钮组按钮注册 addActionListenerfor(int i=0;inames.length;i+)bbi=new Button(namesi);p2.add(bbi);bbi.addActionListener(this);/设置面板 p1 面板 p2 窗体位置/面板 p1 窗体
9、 North 向面板 p2 窗体 South 向frame.add(p1,BorderLayout.NORTH);frame.add(p2,BorderLayout.SOUTH);frame.setVisible(true);/单击关闭按钮退系统frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent ae) String s; /通 ActionEvent 类 ge
10、tActionCommand()作由哪按钮触发 s=ae.getActionCommand();/用户单击计算栏便掉字符/先计算栏字符清空再添加除字符字符串 if(s.equals(退格)&number) t_content=textfield.getText(); textfield.setText();for(int i=0;it_content.length()-1;i+) char c=t_content.charAt(i); textfield.setText(textfield.getText()+c); /用户单击撤消按钮if(s.equals(撤消) textfield
11、.setText();number=false;/用户单击清空按钮if(s.equals(清空) textfield.setText();data1=data2=0.0;number=false;/用户单击 sqrt 按钮其负数能if(s.equals(sqrt)&number) t_content=textfield.getText(); if(t_content.charAt(0)=-) textfield.setText(负数能); number=false; else textfield.setText(Double.toString(java.lang.Math.sqrt(D
12、ouble.parseDouble(t_content); /用户单击 1/x 求倒数按钮求倒数母能 0if(s.equals(1/x) & number) t_content=textfield.getText();if(t_content.equals(0) textfield.setText(零能求倒数); number=false;else textfield.setText(Double.toString(1/Double.parseDouble(t_content); /用户单击%按钮if(s.equals(%)&number) if(data2=0) t_cont
13、ent=textfield.getText(); textfield.setText(t_content);else boolean g=false; for(int i=0;itextfield.getText().length();i+) if(.=textfield.getText().charAt(i) g=true; break;/Double 数除 100if(g=true) double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.setText(Double.toStrin
14、g(dtemp); /int 数能 100 整除则掉末尾两 0else if(Integer.parseInt(textfield.getText()%100=0) int itemp=Integer.parseInt(textfield.getText(); itemp/=100; textfield.setText(Integer.toString(itemp); /int 数能 100 整除则按 Double 数处理else double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.
15、setText(Double.toString(dtemp); /负数字处理 if(s.equals(+/-) t_content=textfield.getText(); if(t_content.charAt(0)=-) textfield.setText(); String content; for(int i=1;it_content.length();i+) textfield.setText(textfield.getText()+t_content.charAt(i); else textfield.setText(-+t_content); /所按按钮+按钮if(s.equal
16、s(+) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数能零); number=false; else key=-1; dat
17、a2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=0; textfield.setText(); /所按按钮-按钮if(s.equals(-) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText();
18、 break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数能零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=1; textfie
19、ld.setText(); /所按按钮*按钮 if(s.equals(*) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数能零
20、); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfield.getText(); pkey=key=2; textfield.setText(); /所按按钮/按钮 if(s.equals(/) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText(); break; case 1: data2+=Doubl
21、e.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数能零); number=false; else key=-1; data2/=data1; textfield.setText(Double.toString(data2); break; default: data2=Double.parseDouble(textfi
22、eld.getText(); pkey=key=3; textfield.setText(); /所按按钮=求结 if(s.equals(=)&number) /第按=按钮 if(pkey=5) switch(pkey) case 0: data2+=data1; textfield.setText(Double.toString(data2); break; case 1: data2-=data1; textfield.setText(Double.toString(data2); break; case 2: data2*=data1; textfield.setText(Dou
23、ble.toString(data2); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数能零); number=false; else data2/=data1; textfield.setText(Double.toString(data2); break; /第按=按钮 else data1=Double.parseDouble(textfield.getText(); switch(key) case 0: key=-1; data2+=Double.parseDouble(textfield.ge
24、tText(); textfield.setText(Double.toString(data2); break; case 1: key=-1; data2-=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; case 2: key=-1; data2*=Double.parseDouble(textfield.getText(); textfield.setText(Double.toString(data2); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数能零); number=false; else key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母猪护理人员的继续教育计划试题及答案
- 2025-2030中国港口建设行业发展分析及发展趋势预测与投资风险研究报告
- 2025-2030中国混凝土铺路机行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国涂层不粘锅市场占有率调查及未来销售渠道建议研究报告
- 公共卫生系统建设试题及答案评估
- 2025-2030中国浓缩式咖啡机行业市场发展分析及竞争格局与投资前景研究报告
- 2025-2030中国活性白土行业市场发展现状及发展趋势与投资前景研究报告
- 医学基础考试的关键题目试题及答案
- 教师资格笔试适应性提升试题及答案
- 2025-2030中国泡沫塑料床垫行业市场现状供需分析及投资评估规划分析研究报告
- 小班安全教案玩具不放嘴巴
- 第10课 养成遵纪守法好习惯(课时2)(课件)-【中职专用】中职思想政治《职业道德与法治》高效课堂课件+教案(高教版2023·基础模块)
- 自然资源调查监测技能竞赛理论考试题库大全-中(多选题)
- 冷链仓储项目经济效益和社会效益分析
- 读《孟尝君传》课件
- 2024AHA心肺复苏指南解读
- 2025年4月自考03009精神障碍护理学押题及答案
- 人教版数学七年级上册1.2.2《数轴》训练习题(有答案)
- 两轮电动车行业风险分析
- 物业承接查验方案样本
- 建筑工程《拟投入本项目的主要施工设备表及试验检测仪器设备表》
评论
0/150
提交评论