JAVA课程 设 计 报 告

1206401-18   瞿杰

一、设计时间

2013年6月 24日-----6月28日

二、设计地点

湖南城市学院实验楼计算机506机房

三、设计目的

1、巩固学习VB基础知识方面的基本算法,进一步熟悉基本概念。

2、熟练常用控件,文件,图形等方面的操作,了解基本的流程。

3、运用所用学的VB语言知识,编写出较为实用的小软件,增进对一些实际问题的软,硬件知识的掌握。

4、培养查阅资料,独立思考问题的能力。

四、设计小组成员

1206401-27陈纪杭   1206401-32王婷     1206401-18瞿杰

五、指导老师

胡奇光老师、祝青老师.。

六、设计课题

经过小组大部分组员的讨论,决定选取选题(一):计算器的设计与实现

理由:1、此程序中涉及了多种java组件,包括窗口,面板,按钮,组合框等等,综合性强。

2、代码编写涉及面广,利用提高综合应用能力。

七、基本思路及关键问题的解决方法

设计一个简易计算器,在键盘上输入数字后可以在键盘上直接输入 “+  -  * /” 等运算符号进行运算。

窗口上添加标签,文本行和“OK”按钮。

输入完时要响应“OK”按钮事件:

Text.add(text1);         //窗口添加文本行

Text.add(text2);

button.addActionListener(this);       //”ok”按钮事件监听器

当用户单击鼠标右键按OK按钮时,触发按钮事件,执行ActionListener接口,开始执行计算器功能,按“+ -  *  /”的优先级计算,* 和 / 的优先级大于 + 和 -;在计算时先计算优先级小的或相等的,如果当前符号优先级大于符号栈中栈顶符号的优先级时,则放入符号栈中。

八、算法及流程图

九、调试过程中出现的问题及相应解决办法

问题:

1、int型和其他类型的转换方式不对。

2、关于+、-、*、/的优先级的应用。

3、输入时看不到输出结果。

办法:

通过一段一段的调试,最终全部解决了。

十、课程设计心得体会

心得体会:通过这次java课程设计编译一个简单的计算器,我对所编写的程序有了一定的认识。通过编写程序进一步熟悉了了按钮、对话框以及字符栈额度编写和使用,知道了怎样在键盘上直接快捷的输入运算符号。通过对java又了进一步的理解,掌握软件开发的基本流程,为软件课程设计打好基础。让我知道了留心字母的写法和字符串的应用等这些细小的地方,同时也明白了细心,严谨认真的重要性以及团队合作的重要性。

十一、源程序(每句语言要有详细解释)

import java.awt.*;
import java.awt.event.*;
public class 计算器 extends Frame implements ActionListener{ private TextField text1,text2;//文本行
private Button button;//按扭 public 计算器()//构建框架
{
super ("计算器");//框架名
this.setBounds(280, 100, 300,240);//框架的大小
this.setBackground(java.awt.Color.lightGray);//背景颜色
this.setLayout(new java.awt.FlowLayout(FlowLayout.LEFT));//布局流 this.add(new Label("输入"));//输入行
text1=new TextField(50);
this.add(text1);
button=new Button("OK");
this.add(button);
button.addActionListener(this);//按扭监听器 this.add(new Label("结果"));//结果行
text2=new TextField(50);
this.add(text2);
this.addWindowListener(new WinClose());//控制程序开关
this.setVisible(true);//可视化
}
public void actionPerformed(ActionEvent e){//实现接听接口 String str=text1.getText(),str0="";
char ch;
int i,top1=-1,top2=-1,j=-1,flog=0,len,str1[]=new int[122];
double t,suz[]=new double[122],cha,cha1[]=new double[122]; len=str.length();//输入的字符串长度
for(i=0;i<len;i++)
{ ch=str.charAt(i);
if(ch>='0'&&ch<='9'||ch=='.')//先保存一个数字字符串
{
str0=str0+ch;flog=1;
}
else
{ if(flog==1)//把保存的数字字符串转成数字,并放入数字栈中
{
t=Double.parseDouble(str0);
suz[++top1]=t;
flog=0; str0="";//注意初始化
}
if(ch=='+'||ch=='-')//符号的优先级
cha=1;
else
cha=2; if(top2>=0&&cha1[top2]>=cha)//满足条件时计算
{ if(str1[j]==1)
suz[top1-1]=suz[top1]+suz[top1-1];
if(str1[j]==2)
suz[top1-1]=suz[top1-1]-suz[top1];
if(str1[j]==3)
suz[top1-1]=suz[top1]*suz[top1-1];
if(str1[j]==4)
suz[top1-1]=suz[top1-1]/suz[top1]; top2--;top1--;
j--;i--; }
else//把符号优先级大的放入符号栈中
{
cha1[++top2]=cha;//优先级
if(ch=='+')
str1[++j]=1;// 把符号保存在符号栈中,1表示符号为+,下面同理
if(ch=='-')
str1[++j]=2;
if(ch=='*')
str1[++j]=3;
if(ch=='/')
str1[++j]=4;
}
}
}
t=Double.parseDouble(str0);//最后一个是数字
++top1;suz[top1]=t; for(;j>=0;j--)//计算最后的结果
{
if(str1[j]==1)
suz[top1-1]=suz[top1]+suz[top1-1];
if(str1[j]==2)
suz[top1-1]=suz[top1-1]-suz[top1];
if(str1[j]==3)
suz[top1-1]=suz[top1]*suz[top1-1];
if(str1[j]==4)
suz[top1-1]=suz[top1-1]/suz[top1];
top1--;
}
text2.setText(""+suz[0]);//把最后的计算结果放入第二个文本行里显示出来
//}
}
public static void main(String[] args) { new 计算器();
}
}
class WinClose implements WindowListener{//实现关闭程序的接口
public void windowClosing(WindowEvent e)
{
System.exit(0);//执行关闭程序
}
public void windowOpened(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
}

java课程设计(计算器)的更多相关文章

  1. Java课程设计-计算器 郑子杰(201521123021)

    1.团队课程设计博客链接 http://www.cnblogs.com/I-love-java/p/7058752.html 2.个人负责模块或任务说明 ①图形界面的初始化 ②图形界面的排版设计 ③主 ...

  2. JAVA课程设计 计算器模拟程序 王华俊(201521123015)

    1.团队课程设计博客链接 http://www.cnblogs.com/yuanj/p/7072137.html 2.个人负责模块或任务说明 GUI界面设计 各类之间拼接 3.自己的代码提交记录截图 ...

  3. Java课程设计——计算器团队博客

    1.团队名称.团队成员介绍(需要有照片) 1.1团队名称 707 1.2团队成员介绍 谢元将:组长 罗登宇:组员 王华俊:组员 2. 项目git地址 谢元将 罗登宇 王华俊 3. 项目git提交记录截 ...

  4. Java课程设计——计算器

    1.团队课程设计博客链接 http://www.cnblogs.com/yuanj/p/7072137.html 2.个人负责模块或任务说明 确定课题并进行任务分工 编写计算器删除,清零,清空,小数点 ...

  5. java课程设计---计算器(201521123020 邱伟达)

    1.团队课程设计博客链接 http://www.cnblogs.com/br0823/p/7064407.html 2.个人负责模板或任务说明 1.初始化按键 2.实现加减乘除开方乘方等运算 3.每个 ...

  6. JAVA课程设计-计算器(201521123028 李家俊)

    1.团队课程设计博客链接 http://www.cnblogs.com/DevilRay/p/7064482.html 2.个人负责模板或任务说明 主要负责计算器图形界面 包括操作按钮,菜单项以及输出 ...

  7. Java课程设计-计算器

    1.团队课程设计博客链接 http://www.cnblogs.com/yuanj/p/7072137.html 2.个人负责模块或任务说明 监听器的设置 3.自己的代码提交记录截图 //注册各个组件 ...

  8. Java课程设计-计算器 丁树乐(201521123024)

    1.团队课程设计博客链接 http://www.cnblogs.com/br0823/p/7064407.html 2.个人负责模块或任务说明 界面优化 各类之间拼接 3.自己的代码提交记录截图 4. ...

  9. Java课程设计----仿Windows标准型计算器

    JAVA课程设计 仿Windows标准型计算器(By Yanboooooooo) 一.团队介绍: 连燕波[组长]:网络1513学生. 张文博[组员]:网络1513学生. 二.项目git地址 码云项目地 ...

随机推荐

  1. codeforces 659D . Bicycle Race 几何

    题目链接 对相邻的三个点叉积判断一下就好. #include <iostream> #include <vector> #include <cstdio> #inc ...

  2. codeforces 27E . Number With The Given Amount Of Divisors 搜索+数论

    题目链接 首先要知道一个性质, 一个数x的因子个数等于 a1^p1 * a2^p2*....an^pn, ai是x质因子, p是质因子的个数. 然后就可以搜了 #include <iostrea ...

  3. Task和backStack(本篇章核心)

     对Task和backStack的认识过程 1.由demo测试得到的关系图: 1.一个task中可以有多个app的Activity, 由于一个app可以对应一个或多个process, 2.所以一个ta ...

  4. MarkWord

    MarkWord - 可发布博客的 Markdown编辑器 代码开源 1 /// <summary> 2 /// 同步呈现 3 /// </summary> 4 /// < ...

  5. dropdownlist控件的几个属性selectedIndex、selectedItem、selectedValue、selectedItem.Text、selectedItem.value的区别

    转自http://blog.csdn.net/iqv520/article/details/4419186 1. selectedIndex——指的是dropdownlist中选项的索引,为int,从 ...

  6. Oracle EBS-SQL (SYS-22):sysadmin_用户职责查询.sql

    select fu.user_name 用户名, fu.description 用户说明, frv.RESPONSIBILITY_NAME 职责名称, REQUEST_GROUP_NAME 报表组, ...

  7. Qt编写端口扫描工具

    Qt提供了QTcpSocket类,可以方便地建立TCP连接.利用这一功能,Maxiee编写了一个简单地端口扫描工具. 软件的功能就是,扫描某一网段的固定端口,如80端口,若目的地址开放了这一端口,那么 ...

  8. uva 825 - Walking on the Safe Side(dp)

    题目链接:825 - Walking on the Safe Side 题目大意:给出n,m,现在给出n行数据, 每行有k(k为不定值)个数字, 第一个数字代表行数, 后面k - 1个数代表当前行的这 ...

  9. Kettle 连接失败 Oracle 数据库报 ora-12505 的解决方法(转)

    用kettle新建DB连接的时候总是报错,可是用plsql连接是可以连上,错误信息大致如下: 错误连接数据库 [MIS] : org.pentaho.di.core.exception.KettleD ...

  10. sql大数据量查询的优化技巧

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...