JAVA程序设计说明书及代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA程序设计说明书及代码2007-05-19 21:19JAVA程序设计说明书
一、 设计题目:
基于JAVA的计算器
二、 设计目的:
简单的小型计算器,可以满足人们简单的计算需要,功能主要有简单的四则运算和较复杂的算术运算,还添加了几项拓展功能涉及到了较复杂一点的运算。它可以使人们从烦琐的手工计算工作中解脱。
三、 运行环境
NetBeans IDE 5.0
四、 程序功能模块
本程序由三个窗体作成,分别为:Jisuan(主窗体)、 Help(帮助窗体)、 Science( 科学运算窗体)组成。Jisuan窗体即计算器的显示界面,通过运行可以实现计算器的 基本功能,Help显示帮助信息,让您了解计算器的相关内容,Science界面表示的是科学型计算器,时间关系只做了设计部分。
程序使用的控件主要有:JMenubar, JTextFiled, JLabel, JCommand, JPanel等。
主窗体流程图:
说明:以下为流程图中用到程序中一些变量和方法的名称
Now:表示当前文本域中显示的数字的变量;
Lately:表示运用运算符之前显示的数字的变量;
OperateNow:表示存储当前运用的运用符的变量;
Operatelate:表示存储前一个字符的变量
Operator():计算结果的方法
doForeScreen():显示当前数值
六、 总结
本次作业是对前面学过的所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,通过一个学期的JAVA 学习,我觉得它不愧是大家现在都争先学习的一门语言,它的语言设计非常接近人的思维方式,我觉得用起来很方便,在这次课程设计中,我做的是计算器,刚开始感觉无从下手,去图书馆找了几本参考资料,仔细研究了研究,发现用的大多知识在学习中涉及到了,但没有留心去钻研,所以我觉得它让我收获很大,把平时很多零散的知识做了很好的归纳总结。但做的过程中遇到了不少问题,我通过用这几本参考资料和向老师、同学请教,学到了很多东西,并一一解决了它们。
我认为我的程序最大的特点就是简明扼要,界面友好,与菜单等相关联的东西比较完整,主要参考了微软计算器的设计,由于能力和时间有限,不免有不尽人意的地方,但基本满足了初级使用者的需要。
谢谢老师的指导!
七、 参考文献
《Java程序设计》 潘浩、李芙玲等编著 清华大学出版社
《Java程序设计》 耿祥义 编著 清华大学出版社
《Java高级实用编程》 [加]管贻生 编著 清华大学出版社
《JavaApplet实用编程》 赤金 等 编著 水利水电出版社
八、
程序主要代码
public class Jisuan extends javax.swing.JFrame implements ActionListener {
String c;
String Now=new String(" ");
String Lately=new String("");
String OperateNow=new String("");
String Operatelate=" ";
String M=" ";
double a= 0;
double i;
boolean isFloat=false;
String Copy=" ";
/** Creates new form Jisuan */
public Jisuan() {
initComponents();
jButton8.addActionListener(this);
jButton9.addActionListener(this);
jButton10.addActionListener(this);
jButton11.addActionListener(this);
jButton12.addActionListener(this);
jButton13.addActionListener(this);
jButton14.addActionListener(this);
jButton15.addActionListener(this);
jButton16.addActionListener(this);
jTextField1.addActionListener(this);
jMenuItem1.addActionListener(this);
jMenuItem2.addActionListener(this);
jMenuItem3.addActionListener(this);
jMenuItem4.addActionListener(this);
jMenuItem5.addActionListener(this);
jMenuItem6.addActionListener(this);
jMenuItem7.addActionListener(this);
}
//显示帮助
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {
new Help().setVisible(true);
}
//显示科学计算
private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {
new Science().setVisible(true);
}
//退出程序
private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
//菜单中复制功能
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
Copy=jTextField1.getText();
}
//菜单中粘贴功能
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
Now=jTextField1.getText()+Copy;
jTextField1.setText(Now);
}
//实现求阶乘的函数
private void jButton31ActionPerformed(java.awt.event.ActionEvent evt) {
i=Double.parseDouble(c);
double n=1;
for(int m=1;m<=i;m++)
n*=m;
jTextField1.setText(String.valueOf(n));
}
//使文本域中显示按钮的值
private void jButton18ActionPerformed(jav
a.awt.event.ActionEvent evt) {
c=jButton18.getText();
doForeScreen(c);
}
//实现“CE”功能的函数(清除文本域中的数字)
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Now=" ";
jTextField1.setText(Now);
}
//实现“MS”功能的函数(储存文本域中显示的数字)
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
M= jTextField1.getText();
jLabel1.setText("M");
}
//实现“MR”功能的函数(调用存储的数据)
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
Now=M;
jTextField1.setText(Now);
}
//实现“MC”功能的函数(将已存储的数据清除)
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
jLabel1.setText(" ");
M= " ";
}
//实现“M+”的函数(使当前显示的数据与储存的数据相加,并将结果存为新存储的数据)
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
M= String.valueOf(Double.parseDouble(jTextField1.getText())+Double.parseDouble(M));
}
四则运算(以乘法为例)
//"*"(乘法操作)
private void jButton16ActionPerformed(java.awt.event.ActionEvent evt) {
if(Now!=" ")
{ OperateNow="*";
Operator();
}
else
Operatelate="*";
}
/"1/x"(求倒数操作)
private void jButton22ActionPerformed(java.awt.event.ActionEvent evt) {
a=Double.parseDouble(jTextField1.getText());
if(a==0)
jTextField1.setText("除数不能为零(Divisor can not Be zero)!");
else
{a=1/a;
Now=String.valueOf(a);
jTextField1.setText(Now); }
}
//"sqr"(开平方)
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {
a=Double.parseDouble(jTextField1.getText());
a=Math.sqrt(a);
Now=String.valueOf(a);
jTextField1.setText(Now);
}
//"C"(清空所有的数据)
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
Now=" ";
Lately=" ";
OperateNow=" ";
Operatelate=" ";
isFloat=fals
e;
jTextField1.setText("0.");
}
//实现“CE”功能的函数(清除文本域中的数字)
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Now=" ";
jTextField1.setText(Now);
}
//"backspace"(逐个清除文本域中的数字)
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int n;
n= Now.length();
char b[]=new char[n-1];
Now.getChars(0,n-1,b,0);
Now=new String(b);
jTextField1.setText(Now);
}
//当前数值的显示函数
public void doForeScreen(String s)
{ Now+=s;
jTextField1.setText(Now);
}
//计算结果函数
private void Operator() {
double aNow,aLately;
if(Operatelate==" ")
{Lately=Now;
Now=" ";
jTextField1.setText(Lately);
}
else
{aNow=Double.parseDouble(Now);
aLately=Double.parseDouble(Lately);
Now=" ";
Lately=jTextField1.getText();
if(Operatelate.equals("+"))
{a=(aNow+aLately);
Lately=String.valueOf(a);
}
else if(Operatelate.equals("-"))
{a=(aLately-aNow);
Lately=String.valueOf(a);
}
else if(Operatelate.equals("*"))
{ a=(aNow*aLately);
Lately=String.valueOf(a);
}
else if(Operatelate.equals("/"))
if(aNow!=0)
{a=(aLately/aNow);
Lately=String.valueOf(a);
}
else Lately="除数不能为零(Divisor can not Be zero)!";
}
Operatelate=OperateNow;
jTextField1.setText(Lately);
}