计算数学表达式程序设计实训报告.docx
- 文档编号:25988339
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:16
- 大小:37.14KB
计算数学表达式程序设计实训报告.docx
《计算数学表达式程序设计实训报告.docx》由会员分享,可在线阅读,更多相关《计算数学表达式程序设计实训报告.docx(16页珍藏版)》请在冰豆网上搜索。
计算数学表达式程序设计实训报告
程序设计实训报告
题目:
计算数学表达式程序
1、课程设计目的
(1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控
(2)课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。
提高我们适应实际,实践编程的能力。
(3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。
2、设计题目分析
2.1题目要求:
(1)由用户输入一个简单的四则运算表达式,求出其计算结果后显示。
(2)允许在表达式中出现常用的数学函数,如取整、三角函数、倒数、平方根、平方、立方等。
2.2界面要求:
(1)尽量使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。
(2)如果无法实现图形界面,则在命令行方式下也需要提供菜单,方便用户操作。
2.3设计要求及需求分析
设计要求:
由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。
需求分析:
在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。
虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。
所以我们想用自己所学设计开发一个属于自己的简单计算器来完成日常学习生活的需求。
3、课程设计内容
3.1总体设计:
系统总体设计框架
系统功能模块图:
3.2详细设计:
以下是部分类功能的说明:
CalFrame//构造新窗体
CalPanelL//定义面板容器
CalButton//定义按钮
3.3调试与测试:
包括程序调试过程、数据测试结果分析,测试过程中遇到的主要问题及采取的解决措施;(列出主要问题的出错现象、出错原因、解决方法及效果等)。
主要问题:
1.标点符号问题,经常出现漏打分号,忽略中英文标点转换等问题,所以一定要谨慎仔细.
2.进制转换的实现及正/余弦计算经常出现问题,结果不正确,经过查阅资料及反复调试,我们终于克服了这一难题.
3.界面设计,开始我们的设计不太合理,各类功能键排序不合理,看起来杂乱无章,既不美观也不实用。
经过多次调整程序终于能使界面美观实用。
4.要注意类、成员变量、成员方法的命名,其中,class后的类名由一个或多个英文
单词构成,每个单词的第一个字符必须是大写;而成员变量和成员方法名的第一个单词的第一个字母必须小写,其他单词第一个字母大写。
以下是其中一些主要功能演示过程:
运行界面:
4、设计心得与总结:
通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。
在实践中我们遇到了很多问题,但我们都努力克服,并最终成功的完成了这次课程设计。
通过编写这个相对复杂的程序,我们认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。
并且这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我们充分理解了包和类的调用关系。
由于这次编写的程序比较复杂,所以不能一次性编写、调试,也由此让我们学会把程序分块,逐个编写、调试。
5、附录(源代码)
importjava.awt.*;
publicclassCal{
publicstaticvoidmain(String[]args){
CalFramef=newCalFrame();//创建并初始化被访问类的对象,形成图形界面(主程序界面)
}
}//定义含有main方法的主类Cal
classCalFrameextendsFrame{//定义窗口类
doubled1,d2,c;//两个数对象d1,d2
intop=0;//为下面实现接口处理异常做准备
TextFieldtf;//定义文本域
CalPanelLp1;//左容器对象
CalPanelRp2;//右容器对象
CalFrame()//构造函数
{
super("计算数学表达式的程序");//设置图形界面Frame标题
setLayout(newFlowLayout(FlowLayout.CENTER,8,10));
setBackground(newColor(140,120,110));
setForeground(Color.white);
setResizable(false);
setSize(250,200);
setLocation(400,260);//设置Frame相应属性
tf=newTextField(22);
tf.setEditable(false);
tf.setBackground(Color.white);
tf.setForeground(Color.black);
tf.setFont(newFont("Arial",Font.BOLD,16));//定义文本框属性
add(tf);//添加文本框到图形界面
p1=newCalPanelL();
p2=newCalPanelR();//初始化容器
add(p1);
add(p2);//添加容器到图形界面
setVisible(true);
addWindowListener(newWclose());//添加关闭窗口事件监听者
}//构造函数定义结束
classCalButtonextendsButton{//CAlButton类的域定义(内部类)
CalButton(Strings){
super(s);
setBackground(Color.gray);//定义按钮颜色为灰色
}
}
classCalPanelLextendsPanel{
CalButtonb0,b1,b2,b3,
b4,b5,b6,b7,
b8,b9,bPN,bPoint;//分别代表0,1,2,3,4,5,6,7,8,9,+/-,.
CalPanelL()//构造函数
{
setLayout(newGridLayout(4,3));
setFont(newFont("TimesRoman",Font.BOLD,16));
b0=newCalButton("0");
b1=newCalButton("1");
b2=newCalButton("2");
b3=newCalButton("3");
b4=newCalButton("4");
b5=newCalButton("5");
b6=newCalButton("6");
b7=newCalButton("7");
b8=newCalButton("8");
b9=newCalButton("9");
bPN=newCalButton("+/-");
bPoint=newCalButton(".");
//加入按钮
add(b7);b7.addActionListener(newPressB7());
add(b8);b8.addActionListener(newPressB8());
add(b9);b9.addActionListener(newPressB9());
add(b4);b4.addActionListener(newPressB4());
add(b5);b5.addActionListener(newPressB5());
add(b6);b6.addActionListener(newPressB6());
add(b1);b1.addActionListener(newPressB1());
add(b2);b2.addActionListener(newPressB2());
add(b3);b3.addActionListener(newPressB3());
add(b0);b0.addActionListener(newPressB0());
add(bPN);bPN.addActionListener(newPressBPN());;
add(bPoint);bPoint.addActionListener(newPressBPoint());//注册给PressBPoint对象
}
}//构造函数定义结束
classCalPanelRextendsPanel{
CalButtonbAdd,bSub,bMul,bDiv,
bSqrt,bSin,bCos,bYx,
bInt,bEqual,bCE,bBack;//分别代表加、减、乘、除,开平方,三角函数正弦、余弦,平方、立方,取整,等于,清除,后退
CalPanelR()//构造函数
{
setLayout(newGridLayout(4,3));
setFont(newFont("TimesRoman",Font.BOLD,16));//指定Font对象的字体、字形、字号
bAdd=newCalButton("+");
bSub=newCalButton("-");
bMul=newCalButton("*");
bDiv=newCalButton("/");
bSqrt=newCalButton("sqrt");
bSin=newCalButton("sin");
bCos=newCalButton("cos");
bYx=newCalButton("y^x");
bInt=newCalButton("int");
bEqual=newCalButton("=");
bCE=newCalButton("CE");
bBack=newCalButton("1/x");
//将按钮加到容器中
add(bDiv);bDiv.addActionListener(newPressBDiv());
add(bSqrt);bSqrt.addActionListener(newPressBSqrt());
add(bInt);bInt.addActionListener(newPressBInt());
add(bMul);bMul.addActionListener(newPressBMul());
add(bSin);bSin.addActionListener(newPressBSin());
add(bBack);bBack.addActionListener(newPressBBack());
add(bSub);bSub.addActionListener(newPressBSub());
add(bCos);bCos.addActionListener(newPressBCos());
add(bCE);bCE.addActionListener(newPressBCE());
add(bAdd);bAdd.addActionListener(newPressBAdd());
add(bYx);bYx.addActionListener(newPressBYx());
add(bEqual);bEqual.addActionListener(newPressBEqual());//注册给PressBEqual对象
}
}//构造函数定义结束
classPressBAddimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){//为实现这个接口的类编写(重载)actionPerformed(ActionEvente)方法代码
try{
d1=Double.parseDouble(tf.getText());
op=0;
tf.setText("");
}catch(Exceptionee){}//检测并处理异常
}
}
classPressBSubimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
d1=Double.parseDouble(tf.getText());
op=1;
tf.setText("");
}catch(Exceptionee){}
}
}
classPressBMulimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
d1=Double.parseDouble(tf.getText());
op=2;
tf.setText("");
}catch(Exceptionee){}
}
}
classPressBDivimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
d1=Double.parseDouble(tf.getText());
op=3;
tf.setText("");
}catch(Exceptionee){}
}
}
classPressBYximplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
d1=Double.parseDouble(tf.getText());
op=4;
tf.setText("");
}catch(Exceptionee){}
}
}
classPressBEqualimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
doubleresult=0;
d2=Double.parseDouble(tf.getText());
switch(op){
case0:
result=d1+d2;
break;
case1:
result=d1-d2;
break;
case2:
result=d1*d2;
break;
case3:
result=d1/d2;
break;
case4:
result=Math.pow(d1,d2);
break;
default:
}
tf.setText(String.valueOf(result));
}catch(Exceptionee){}
}
}
classPressBSqrtimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
doublex=Double.parseDouble(tf.getText());
doubley;
y=Math.sqrt(x);
tf.setText(y+"");
}catch(Exceptionee){}
}
}
classPressBIntimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
doublex=Double.parseDouble(tf.getText());
doubley;
y=Math.floor(x);
tf.setText(y+"");
}catch(Exceptionee){}
}
}
classPressBSinimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
doublex=Double.parseDouble(tf.getText());
doubley;
y=Math.sin(x);
tf.setText(y+"");
}catch(Exceptionee){}
}
}
classPressBCosimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
doublex=Double.parseDouble(tf.getText());
doubley;
y=Math.cos(x);
tf.setText(y+"");
}catch(Exceptionee){}
}
}
classPressBBackimplementsActionListener{//定义该类实现ActionListener接口,是ActionEvent事件的监听者
publicvoidactionPerformed(ActionEvente){
try{
doublec=Double.parseDouble(tf.getText());
tf.setText(""+1/c);
}catch(Exceptionee){}
}
}
classPressBCEimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
tf.setText("");
}
}
classPressBPNimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
try{
Stringtext=tf.getText();
if(text!
=""){
if(text.charAt(0)=='-')
tf.setText(text.substring
(1));
elseif(text.charAt(0)>='0'&&text.charAt(0)<='9')
tf.setText("-"+text.substring(0));
elseif(text.charAt(0)=='.')
tf.setText("-0"+text.substring(0));
}
}catch(Exceptionee){}
}
}
classPressBPointimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringtext=tf.getText();
if(text.lastIndexOf(".")==-1)
tf.setText(text+".");
}
}
classPressB0implementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringtext=tf.getText();
tf.setText(text+"0");
}
}
classPressB1implementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringtext=tf.getText();
tf.setText(text+"1");
}
}
classPressB2implementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringtext=tf.getText();
tf.setText(text+"2");
}
}
classPressB3implementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringtext=tf.getText();
tf.setText(text+"3");
}
}
classPressB4implementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringtext=tf.getText();
tf.setText(text+"4");
}
}
classPressB5implementsActionListener{
publicvoidactionPerform
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算 数学 表达式 程序设计 报告