黑龙江科技学院 计算机与信息工程学院
《Java语言程序设计》
课程设计报告
姓 名: 孟翔宇 班 级: 网络08-1 指导教师: 马甲军
2010 年7 月 7 日
Java课程设计
课程设计综合成绩评定
设计题目1 : 计算器程序
设计题目2 : 万年历
考核项目 分值 设计工作量与20 难度 设计设计 情况15 方案 (共70分) 设计完35 成情况 A 设计工作量大与设计有一定难度 设计方案正确、合理 完成了选题的设计内容,设计功能完整,相关算法设计正确,程序结果正确、直观性好 C 设计工作量与难度一般,基本达到了要求 设计方案较正确、基本合理,但不是最优 基本完成了选题的设计内容及主要选题功能,相关算法设计基本正确,程序结果正确 内容组织及结构较合理、内容较充实、层次较清晰、图表应用基本得当 格式基本规范,基本符合要求 设计态度比较认真 得分 设计报告(共15分) 报告组织结构及内容 内容组织及结构合10 理、内容充实、层次清晰、图表得当 格式规范,完全符合要求 设计态度认真、积15 极 5 综合得分 报告排版格式 设计态度 (共15分) 课程设计综合成绩(折合为优、良、中、及格与不及格计) 其它说明:
II
Java课程设计
一.计算器
目 录
一、设计内容............................................................................................................ 2 二、设计过程............................................................................................................ 2
2.1需求分析 ...................................................................................................... 2
2.2概要设计 ...................................................................................................... 2 2.3详细设计 ...................................................................................................... 3 2.4代码实现 ...................................................................................................... 3 2.5程序运行与发布 .......................................................................................... 13 三、总结................................................................................................................. 13 四、参考文献.......................................................................................................... 13
III
Java课程设计
一、设计内容
该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,以及求倒数,求相反数),有退格功能, 归零表示初始化,界面颜色为灰白,该程序支持键盘操作。
二、设计过程
2.1需求分析
随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。
2.2概要设计
1.界面及功能描述
(1)界面布局。创建一个面板,先将所有按钮:所有数字键和运算符键等放在面板上,采用网格布局,具体设计为4行,4列的网格,十六个格子。再添加一个1行4列的网格布局来放置三个功能键:归零,退格,倒数,负号。然后,对以上两个面板,采用BorderLayout布局,将按键面板放在计算机的中部,功能键面板放右上角,作为一个新的面板。最后,将文本框放在左上角,新面板放,采用边界布局管理器,做为界面的整体布局,这样界面布局就搞定了。
(2)按退格键,将返回到前一次输入状态。 (3)按归零键,输入的数字第一个数字为零。
2.简要的设计流程:
2
Java课程设计
创建窗口 输出显示区域
构造计算器界面结构 (边) 功能键按钮(网) (边) 对各个按钮添加事件ActionListener以及事件处理 数字符号及运算符按钮(网) 数字键按钮事件处理 运算符键按钮事件处理 功能键按钮事件处理 完成java源代码编写 调试修改程序,完善模拟计算器功能
2.3详细设计
程序中所用的类: 类名:lushuaishuaijsq 作用:主类
继承的父类:Frame类
实现的接口: KeyListener类,ActionListener类
3
Java课程设计
class
lushuaishuaijsq
extends
Frame
implements
public
ActionListener,KeyListener{ String s=\"\";//S 控制文本框 float k=0;//K P 保存值 float p=0;
int b=0;//控制运算符号
其中s为文本框内的数据,k,p,b分别为相应的保存值和控制运算符号所用。public void actionPerformed(ActionEvent e)语句实现了ActionListener接口,因此可以调用addActionListener(this)方法对按钮进行点击监听,在下面的public void actionPerformed(ActionEvent e)方法里面对各个点击事件进行处理。
程序中的主要方法:
private void listener()添加侦听器对象,对来自键盘和点击的事件进行监听; public void actionPerformed(ActionEvent e)添加监视器,对来自键盘和鼠标点击的事件进行捕捉;
public void keyPressed(KeyEvent e) public void keyReleased(KeyEvent arg0) public void keyTyped(KeyEvent arg0) 针对键盘操作而设计的键盘操作;
2.4代码实现
import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;
import java.awt.event.KeyEvent;//实现键盘事件 import javax.swing.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
public class lushuaishuaijsq extends Frame implements ActionListener,KeyListener{ String s=\"\";//S 控制文本框 float k=0;//K P 保存值
4
Java课程设计
float p=0;
int b=0;//控制运算符号 Panel p1=new Panel(); Panel p2=new Panel();
TextField text=new TextField(50); GridLayout gridLayout=new GridLayout(); Button be=new Button(\"1/x\"); Button bf=new Button(\"负号\"); Button bb=new Button(\"退格\"); Button bc=new Button(\"归零\"); Button b0=new Button(\"0\"); Button b1=new Button(\"1\"); Button b2=new Button(\"2\"); Button b3=new Button(\"3\"); Button b4=new Button(\"4\"); Button b5=new Button(\"5\"); Button b6=new Button(\"6\"); Button b7=new Button(\"7\"); Button b8=new Button(\"8\"); Button b9=new Button(\"9\"); Button bd=new Button(\".\"); Button bj=new Button(\"+\"); Button bji=new Button(\"-\"); Button bs=new Button(\"*\"); Button bchu=new Button(\"/\"); Button bden=new Button(\"=\"); private void init(){ gridLayout.setColumns(4); gridLayout.setRows(4); gridLayout.setHgap(8); gridLayout.setVgap(8); p1.add(text,\"West\"); p1.add(bc,\"East\");
5
Java课程设计
p1.add(bb,\"East\"); p1.add(be,\"East\"); p1.add(bf,\"East\"); p2.setLayout(gridLayout); p2.add(b7); p2.add(b8); p2.add(b9); p2.add(bchu);
p2.add(b4); p2.add(b5); p2.add(b6); p2.add(bs); p2.add(b1); p2.add(b2); p2.add(b3); p2.add(bji); p2.add(b0);
p2.add(bd); p2.add(bj); p2.add(bden); }
private void listener(){ be.addActionListener(this); bf.addActionListener(this); bb.addActionListener(this); bc.addActionListener(this); b0.addActionListener(this); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this);
6
Java课程设计
b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this); bd.addActionListener(this); bj.addActionListener(this); bji.addActionListener(this); bs.addActionListener(this); bchu.addActionListener(this); bden.addActionListener(this); }
public static void main(String[] args) {//函数入口处main方法 lushuaishuaijsq mainframe=new lushuaishuaijsq (); mainframe.setSize(600,350);
mainframe.setLocationRelativeTo(null);//居中 mainframe.setTitle(\"计算器\"); mainframe.setVisible(true); }
public void actionPerformed(ActionEvent e) { if(e.getActionCommand()==\"0\"){ if(b!=5){ s=s+\"0\"; text.setText(s); } }
if(e.getActionCommand()==\"1\"){ if(b!=5){ s=s+\"1\"; text.setText(s);
7
Java课程设计
} }
if(e.getActionCommand()==\"2\"){ if(b!=5){ s=s+\"2\"; text.setText(s); } }
if(e.getActionCommand()==\"3\"){ if(b!=5){ s=s+\"3\"; text.setText(s); } }
if(e.getActionCommand()==\"4\"){ if(b!=5){ s=s+\"4\"; text.setText(s); } }
if(e.getActionCommand()==\"5\"){ if(b!=5){ s=s+\"5\"; text.setText(s); } }
if(e.getActionCommand()==\"6\"){ if(b!=5){ s=s+\"6\"; text.setText(s); } }
if(e.getActionCommand()==\"7\"){
8
Java课程设计
if(b!=5){ s=s+\"7\"; text.setText(s); } }
if(e.getActionCommand()==\"8\"){ if(b!=5){ s=s+\"8\"; text.setText(s); } }
if(e.getActionCommand()==\"9\"){ if(b!=5){ s=s+\"9\"; text.setText(s); } }
if(e.getActionCommand()==\".\"){ if(b!=5){
if(s.indexOf(\".\")==-1) s=s+\".\"; text.setText(s); } }
if(e.getActionCommand()==\"归零\"){ s=\"\"; text.setText(s); k=0; p=0; b=0; }
if(e.getActionCommand()==\"+\"){ if(s!=\"\"){
9
Java课程设计
//k=Float.parseFloat(s); if(b!=0&&b!=5) s=this.equal(s, p, k, b); k=Float.parseFloat(s); text.setText(s);
s=\"\"; } b=1; }
if(e.getActionCommand()==\"-\"){ if(s!=\"\"){ if(b!=0&&b!=5) s=this.equal(s, p, k, b); k=Float.parseFloat(s); text.setText(s);
s=\"\"; } b=2; }
if(e.getActionCommand()==\"*\"){ if(s!=\"\"){ if(b!=0&&b!=5) s=this.equal(s, p, k, b); k=Float.parseFloat(s); text.setText(s);
s=\"\"; } b=3; }
10
Java课程设计
if(e.getActionCommand()==\"/\"){ if(s!=\"\"){ if(b!=0&&b!=5) s=this.equal(s, p, k, b); k=Float.parseFloat(s); text.setText(s); s=\"\"; } b=4; }
if(e.getActionCommand()==\"=\"){ s=equal(s, p, k, b); text.setText(s);
b=5;//b=5控制等号以后不能直接跟数字 }
if(e.getActionCommand()==\"退格\"){ s=s.substring(0,s.length()-1); }
if(e.getActionCommand()==\"负号\"){ s=(\"-\"+s); text.setText(s); }
if(e.getActionCommand()==\"1/x\"){ //int k; float k, j; String m; if(s==\"0\") {
// System.out.println(\"asfsdfa\"); text.setText(\"dsfaf\"); text.setText(s);
}else{
11
Java课程设计
k=Float.parseFloat(s); j=1/k;
m=String.valueOf(j); text.setText(m);
} } }
public String equal(String s,float p,float k,int b){ if(s!=\"\"){
//System.out.println(\"program is run here\"); p=Float.parseFloat(s); if(b==1) s=\"\"+(p+k); if(b==2) s=\"\"+(k-p); if(b==3) s=\"\"+(p*k); if(b==4) if(p==0){
s=\"除数不能为零\"; }else s=\"\"+(k/p); } return s; }
public lushuaishuaijsq() {
this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ dispose(); System.exit(0);
}// 给窗口注册一个事件,当你点了窗口右上方的叉号时,此方法被调用 }); this.init();
12
Java课程设计
this.listener(); this.add(p1,\"North\"); this.add(p2,\"Center\"); }
public void keyPressed(KeyEvent e) { //if(e.getKeyLocation()==\"+\") }
public void keyReleased(KeyEvent arg0) { }
public void keyTyped(KeyEvent arg0) { } }
2.5程序运行与发布
功能1,该程序为十进制计算器,可进行普通十进制计算。
功能2,可进行四则运算(加、减、乘、除)以及求负数,求倒数运算。 功能3,可进行退格,点击“退格”键将逐个删除已经输入的数据。点击“归零”键可实现计算器的初始化。 计算器界面:
三、总结
程序不足之处:
13
Java课程设计
1. 该程序未添加异常处理事件,但是该程序在发生异常如溢出时,会在文本框内显示Infinity字符,提示不可操作或操作错误。 2. 人机交互界面不够友好,相信日后会有改进。 个人体会:
通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。通过对此课题的开发,使我对用Eclipse开发平台有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。当程序运行结束看到弹出的计算器的界面时,感到很欣慰,虽然只是一个小小的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西,对JAVA的学习有了一定的兴趣。也通过这次的程序设计感觉到自己平时对于编程实际操作的贫乏,没有把书本上的知识真正的掌握牢固。
四、参考文献
1. 宁书林等,《java2技能百练》,中国铁道出版社,2004。 2. John Cowell著,《java简明教程》,施普林格出版社,1998。 3. 埃克尔著,《java编程思想》, 机械工业出版社,2002。
4. 於东军[等]著,《Java程序设计与应用开发》, 清华大学出版社,2005。
14
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务