程序设计
课程设计报告
设计题目: 计算器模拟程序
专业班级: 信管
学 号:
姓 名:
指导教师: 郭春燕
时间:2011.06.13-2011.06.24
摘要
计算器模拟程序课程项目是在JAVA学习过程一项要的内容,它涵盖了对JAVA内容学习的考察,同时通过实验项目,也加强了学生的动手能力。进一步加深对Java语言的理解和掌握,把自己所学的理论知识运用到实际应用中去。
计算器模拟程序是一个小的计算算程序,包括日常我们用到的一些计算方法。主要研究的是加法、减法、乘法、出发、三角函数、阶乘、以及次方等。采用的是JAVA语言进行编写,引用JAVA自带数据库中swt包与math包中的一些构造类与函数类,然后自己构造板块和模型,从而完成自己的程序设计项目。
目录
一、课题概述................................................................................................................... 3
1、课题任务.............................................................................................................. 3
2、课题目的.............................................................................................................. 3
3、课题要求.............................................................................................................. 4
二、设计思路及采取的方案.............................................................................................. 4
1、总体设计思想....................................................................................................... 4
2、实验方案.............................................................................................................. 4
三、实验结果................................................................................................................. 16
四、总结体会................................................................................................................. 16
1、遇到的难题........................................................................................................ 16
2、一些应用中的技巧.............................................................................................. 17
3、心得体会与收获................................................................................................. 17
自主设计与编写一个计算机模拟程序,实现一个简单的计算器程序,能够进行简单的数据运算。
(1) 通过实践,进一步对JAVA程序语言的熟练;
(2) 自主的设计,加强了学生的设计与动脑的过程;
(3) 编写java源程序;
(4) 完成程序设计课程设计报告;
1、复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;
2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;
3、培养学生在项目开发中创新意识及能力;
4、通过编写一个基于JAVA的应用系统综合实例,来掌握Java语言编程技巧,熟练运用各部分知识。
课程设计必须自己独立完成,严禁抄袭他人;
界面模拟Windows中的计算器程序。实现基本数学运算、函数等功能:加、减、乘、除、阶乘、正弦、余弦和指数运算;
(3) 实现要点:添加相关组件并进行按钮事件处理;
(4) 界面要求:用图形界面实现。简单界面可参考图1。
图1
(1) 在设计计算器之前构造好计算器的版块与模型;
(2) 通过Calculator构造方法,设计好窗口的框架(面板,按钮,背景颜色,大小, 并把相应的按钮添加监视器);
(3) 编写主函数,创建计算器对象;
(4) 编写加减乘除,三角函数,阶乘,次方等计算方法。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math.*;
public class Calculator extends Frame implements ActionListener
{
String[] label={"1","2","3","+","sin","CE","4","5","6","-","cos","<--","7","8","9","*","y^x","1/x","0","+/-",".","/","n!","="};
Button[] button;
Panel p1;
JTextField text1;
StringBuffer str=new StringBuffer();
int a,b=0;
double x=0,y=0;
boolean append = false;
public Calculator() //旆?
{
text1=new JTextField("0.",20);
text1.setHorizontalAlignment(JTextField.RIGHT);
text1.setEditable(false);
button=new Button[label.length];
p1=new Panel();
p1.setLayout(new GridLayout(4,6,1,1));//校校式
for(int i=0;i<button.length;i++)
{
button[i]=new Button(label[i]);//驯签诎钮
button[i].setForeground(Color.blue);//钮色
button[i].addActionListener(this);//每钮蛹
p1.add(button[i]);//钮拥签
}
Frame frame=new Frame("熊氏计算器");
// 默贸杀呓绮?
frame.setLayout(new BorderLayout());
frame.add(BorderLayout.NORTH,text1);
frame.add(BorderLayout.CENTER,p1);
frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent eve){System.exit(0);}});//录
frame.setSize(350, 250);
frame.setLocation(200,200);
frame.setVisible(true);
}
public static void main(String args[])
{
Calculator xiong = new Calculator();
}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();//硕氐址
if(s.equals("+"))//鍔犳硶
{
str.setLength(0);
if(b==0)
{
a= b = 1;
y= 0;
text1.setText(""+x);
}
else
{
b = a;
a = 1;
switch(b)
{
case 1:
x+= y;
text1.setText(""+x);
break;
case 2:
x -= y;
text1.setText(""+x);
break;
case 3:
x *= y;
text1.setText(""+x);
break;
case 4:
x /= y;
text1.setText(""+x);
break;
}
}
}
else if(s.equals("-"))//鍑忔硶
{
str.setLength(0);
if(b==0)
{
a=b=2;
text1.setText(""+x);
}
else
{
b =a;
a =2;
switch(b)
{
case 1:
x=x+y;
text1.setText(""+x);
break;
case 2:
x=x-y;
text1.setText(""+x);
break;
case 3:
x=x*y;
text1.setText(""+x);
break;
case 4:
x=x/y;
text1.setText(""+x);
break;
}
}
}
else if(s.equals("*"))//涔樻硶
{
str.setLength(0);
if(b==0)
{
a=b=3;
text1.setText(""+x);
}
else
{
b=a;
a =3;
switch(b)
{
case 1:
x=x+y;
text1.setText(""+x);
break;
case 2:
x=x-y;
text1.setText(""+x);
break;
case 3:
x=x*y;
text1.setText(""+x);
break;
case 4:
x=x/y;
text1.setText(""+x);
break;
}
}
}
else if(s.equals("/"))//闄ゆ硶
{
str.setLength(0);
if(b==0)
{
a=b=4;
text1.setText(""+x);
}
else
{
b=a;
a =4;
switch(b)
{
case 1:
x=x+y;
text1.setText(""+x);
break;
case 2:
x=x-y;
text1.setText(""+x);
break;
case 3:
x=x*y;
text1.setText(""+x);
break;
case 4:
x=x/y;
text1.setText(""+x);
break;
}
}
}
else if(s.equals(".")) //灏忔暟鐐?
{
append=true;
if(text1.getText().trim().indexOf('.')!=-1);
else
{
if(text1.getText().trim().equals("0"))
{
str.setLength(0);
text1.setText((str.append("0"+s)).toString());
}
else
{
text1.setText((str.append(s)).toString());
}
}
}
else if(s.equals("0"))//鎸夐敭0
{
if(text1.getText().trim().equals("0.")){}
else
{
text1.setText(str.append(s).toString());
y=Double.parseDouble(text1.getText().trim());
}
}
else if(s.equals("sin"))//姝e鸡
{
String temp = text1.getText().trim();
double dtemp = Double.parseDouble(temp);
text1.setText(""+Math.sin(dtemp));
}
else if(s.equals("cos"))//浣欏鸡
{
String temp = text1.getText().trim();
double dtemp = Double.parseDouble(temp);
text1.setText(""+Math.cos(dtemp));
}
else if(s.equals("n!"))//闃朵箻
{
String temp = text1.getText().trim();
double dtemp = Double.parseDouble(temp);
double j=1;
for(int i=1;i<=dtemp;i++)
{
j=j*i;
}
text1.setText(""+j);
}
else if(s.equals("y^x"))//鎸囨暟杩愮畻
{
String temp = text1.getText().trim();
double dtemp = Double.parseDouble(temp);
text1.setText(""+Math.pow(dtemp,b));
}
else if(s.equals("CE")) //鍒濆鐘舵€?
{
text1.setText("0.");
x = y = 0;
str.replace(0, str.length()," " );
x= y= 0;
}
else if(s.equals("<--"))//閫€鏍?
{
if(!text1.getText().trim().equals("0."))
{
if(str.length()!=1 && str.length()!=0)//谋
{
text1.setText(str.delete(str.length()-1,str.length()).toString());
}
else
{
text1.setText("0.");
str.setLength(0);
}
}
y = Double.parseDouble(text1.getText().trim());
}
else if(s.equals("+/-"))//姝h礋鍙?
{
if(text1.getText().charAt(0)!='-')
text1.setText("-"+text1.getText());
else
text1.setText(text1.getText().substring(1));
return;
}
else if(s.equals("1/x"))//姹傚€掓暟
{
String temp = text1.getText().trim();
double dtemp = Double.parseDouble(temp);
text1.setText(""+1/dtemp);
}
else if(s.equals("="))// 绛変簬
{
if(b==0)
{
str.setLength(0);
text1.setText(""+y);
}
else
{
str.setLength(0);
b =a;
switch(b)
{
case 1:
x=x+y;
text1.setText(""+x);
break;
case 2:
x=x-y;
text1.setText(""+x);
break;
case 3:
x=x*y;
text1.setText(""+x);
break;
case 4:
x=x/y;
text1.setText(""+x);
break;
}
b=0;
y=0;
}
}
else
{
text1.setText(str.append(s).toString());
y=Double.parseDouble(text1.getText().trim());
if(b==0)
x=y;
}
}
}
以下就是Calculator程序的执行结果:
(1) 在对计算器的框架进行排版和在添加监视器时,发现很繁琐,没能运用循环。之后,在同学的帮助下,很简单简洁的解决了问题;
(2) 在编写计算器的计算方法y^x的时候,很棘手,不知道如何下手;
(1) 添加按钮和监视器的过程中,尽量避免繁琐,运用循环,简单明了;
(2) 充分利用java自带数据库中的math包中的数学计算方法;
(3) 学会利用网络,不知道的东西可以在网上找;
(4) 自己解决不了的问题,可以向老师询问;
通过计算器这个实验项目,让我进一步认识到通过JAVA语言设计项目的过程,加深我对java这门课程的理解。为今后从事的各种实际工作,如:设计,分析和设计一些小游戏等提供了程序设计基础。
整个设计过程,我觉得最关键的是不断的查错和纠正错误的过程,在整个设计的过程中让我受益匪浅。而且,我学习到了,只要不断的严格要求自己,注意培养自己的思维能力,就一定的发展和提高,让自己的只是体系变得更加牢固。
总的来说,通过这次设计学习使我学到了平时很多学不到的东西,更体会到了设计一个小的JAVA项目的过程,我想以后我很可能朝程序设计这条路走下去。
最后,感谢老师和同学的大力支持和帮助!
参考文献:
【1】 耿祥义、张跃平 java2 实用教程(第三版) 清华大学出版社
【2】 飞思科技产品研发中心编著 Java2应用开发指南(第二版) 电子工业出版社
【3】 http://wenku.baidu.com/view/c5f7beea172ded630b1cb634.html 百度文库
学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指…
重庆邮电大学Java程序设计报告书题目二级学院专业名称班级学生学号学生姓名指导教师职称学位成绩二00年月一课程设计目的更好的掌握j…
Java程序设计课程设计报告课题带函数功能和数制转换功能的计算器姓名张其卿学号20xx17010139同组姓名谭樟林专业班级指导教…
程序设计课程设计报告设计题目专业班级学号姓名指导教师时间20xx061320xx0624程序设计课程设计报告摘要计算器模拟程序课程…
Java程序设计课程设计题目巢湖学院计算机与信息工程学院实验报告记事本程序院系计算机与信息工程学院专业软件工程学生姓名杨旋顾莹莹杨…
Java项目开发实训总结设计人:浦江峰班级和班内序号:1132304112项目选题意义:在民营企业、中小型公司高速蓬勃发展的今天,…
Java程序设计实训报告实训名称仓库管理系统实训专业计算机应用班级计算机10A1学号姓名指导教师侯丽敏20xx年12月8日实训成绩…
1含有main方法的类称为主类一个java文件中可以有多个类但只能有一个主类2转义字符对于和需在前面加上即用chara3939b3…
学生实验报告册(理工类)课程名称:JAVA程序设计实验专业班级:M11计算机科学与技术II学生学号:学生姓名:所属院部:XX学院指…