




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息科学与技术学院 JavaJava 语言课程设计语言课程设计报告报告 题题 目:目: 编写一个计算器程序编写一个计算器程序 专专 业:业: 计算机科学与技术计算机科学与技术 班班 级:级: 学学 号:号: 姓姓 名:名: 目录目录 一、概述一、概述.3 3 1.1 设计目的及思路.3 1.2 功能模块设计.3 1.3 程序结构(流程图).4 二、计算器的设计与实现二、计算器的设计与实现.4 4 2.1 程序界面.4 2.2 程序源代码.5 三、三、参考文献参考文献.1414 一、概述 1.11.1 设计目的及思路设计目的及思路 通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和
2、 开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编 程能力。利用 Java Applet 图形界面首先开始设计一个计算器的界面,定义计 算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见, 操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执 行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法 要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用 Java 中进制转换的函数,例 如要将十进制转换成二进制则可直接调用函数 Int
3、eger.toBinaryString(int i)来 实现,充分显示了 Java 语言的简洁性和 Java 语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是 Java 语言健壮性的体现! 1.21.2 功能模块设计功能模块设计 (1)加法:两个数据进行加操作,可以为小数。 (2)减法:两个数据进行减操作,可以为负数相减。 (3)乘法:两个数相乘操作。 (4)除法:两个数相除操作。 (5)阶乘:对任意一个数进行阶乘运算。 (6)指数:对任意一个数进行指数运算。 (7)倒数:对任意一个数进行倒数运算。 1.31.3 程序结构程序结构(流程图)(流程图) 二、计
4、算器的设计与实现 2.12.1 程序界面程序界面 2.22.2 程序源代码程序源代码 package mine; import java.awt.*; import java.awt.event.*; public class Calculator implements ActionListener private double data1=0.0,data2=0.0; private String t_content; boolean number=false; /key 用标示用户所按按钮即加减乘除 /key0 标示+1 表示-2 表示*3 表示/ short key=-1; /pkey
5、取值-15 /pkey-1 表示第按=按钮 5 说明第按=按钮 /pkey 其值 0,1,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 按钮计算
6、机栏 textfeild 放面板 p1 /其余按钮放面板 p2 Panel p1=new Panel(); Panel 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
7、() frame.setSize(300,200); frame.setLayout(new BorderLayout(); Font 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 按钮注册 addActionListener backspace
8、.addActionListener(this); ce.addActionListener(this); c0.addActionListener(this); /backspace,ce,c0 按钮添加 p1 面板 p1.add(backspace,null); p1.add(ce,null); p1.add(c0,null); /设置面板 p2 布局管理器类型 GridLayout p2.setLayout(new GridLayout(4,5,5,5); /按钮组按钮注册 addActionListener for(int i=0;inames.length;i+) bbi=new B
9、utton(namesi); p2.add(bbi); bbi.addActionListener(this); /设置面板 p1 面板 p2 窗体位置 /面板 p1 窗体 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) S
10、ystem.exit(0); ); public void actionPerformed(ActionEvent ae) String s; /通 ActionEvent 类 getActionCommand()作由哪按钮触发 s=ae.getActionCommand(); /用户单击计算栏便掉字符 /先计算栏字符清空再添加除字符字符串 if(s.equals(退格) textfield.setText(); for(int i=0;it_content.length()-1;i+) char c=t_content.charAt(i); textfield.setText(textfie
11、ld.getText()+c); /用户单击撤消按钮 if(s.equals(撤消) textfield.setText(); number=false; /用户单击清空按钮 if(s.equals(清空) textfield.setText(); data1=data2=0.0; number=false; /用户单击 sqrt 按钮其负数能 if(s.equals(sqrt) if(t_content.charAt(0)=-) textfield.setText(负数能); number=false; else textfield.setText(Double.toString(java.
12、lang.Math.sqrt(Double.parseDou ble(t_content); /用户单击 1/x 求倒数按钮求倒数母能 0 if(s.equals(1/x) if(t_content.equals(0) textfield.setText(零能求倒数); number=false; else textfield.setText(Double.toString(1/Double.parseDouble(t_content); /用户单击%按钮 if(s.equals(%) textfield.setText(t_content); else boolean g=false; fo
13、r(int i=0;itextfield.getText().length();i+) if(.=textfield.getText().charAt(i) g=true; break; /Double 数除 100 if(g=true) double dtemp=Double.parseDouble(textfield.getText(); dtemp=dtemp/100.0; textfield.setText(Double.toString(dtemp); /int 数能 100 整除则掉末尾两 0 else if(Integer.parseInt(textfield.getText()
14、%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.setText(Double.toString(dtemp); /负数字处理 if(s.equals(+/-) t_content=textfiel
15、d.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.equals(+) switch(pkey) case 0: data2+=Double.parseDouble(textfield.getText();
16、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; data2/=data1; textfield.setText(Double.toString(data2); break; default: data
17、2=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(); break; case 2: data2+=Double.parseDouble(textfield.getText(); break; ca
18、se 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; textfield.setText(); /所按按钮*按钮 if(s.equals(*) switch(pkey) case 0: data2+=Double
19、.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; data2/=data1; textfield.setText(Double.toS
20、tring(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+=Double.parseDouble(textfield.getText(); break; case 2: data2+=Double.parseDou
21、ble(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=3; textfield.setText(); /所按按钮=求结 if(s.equals(=)
22、textfield.setText(Double.toString(data2); break; case 1: data2-=data1; textfield.setText(Double.toString(data2); break; case 2: data2*=data1; textfield.setText(Double.toString(data2); break; case 3: if(textfield.getText().equals(0) textfield.setText(除数能零); number=false; else data2/=data1; textfield.
23、setText(Double.toString(data2); break; /第按=按钮 else data1=Double.parseDouble(textfield.getText(); switch(key) case 0: key=-1; data2+=Double.parseDouble(textfield.getText(); 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; data2/=Doubl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 砖窑合同协议书范本大全
- 手机壳处理转让协议书范本
- 园林员工协议书格式范本
- 我爱刷牙-健康护牙小卫士
- 借车事故协议书范本
- 法律欠款回收协议书范本
- 小班健康刷牙教案
- 2025至2030结婚戒指行业市场深度研究与战略咨询分析报告
- 健康篮球运动员的职业生涯与科学管理
- 产品摄影技能培训
- T-CARM 002-2023 康复医院建设标准
- 红绿灯安全施工方案
- 新能源与人工智能的融合发展
- 人为因素航空安全管理
- 全球眼角膜炎流行病学分析
- 呼吸内科利用品管圈PDCA循环提高患者对无创呼吸机的有效使用率
- 整式的乘法说课
- 《导游业务》第八章
- 桥梁裂缝加固处理方案
- 古文观止1-001-郑伯克段于鄢课件
- VTE风险评估与预防措施
评论
0/150
提交评论