#####学院
JAVA语言课程设计报告
小程序计算器系统管理
班 级:#######
姓 名:###
##
指导老师:###
时间:20##年6月25日至6月29日
目录
1、课程设计概述--------------------------------------------------3
1.1利用java编写计算器,使之具备一定的功能:-----------------3
1.2 课程设计的主要思想--------------------------------------------------3
1.3 该项目设计的目的-----------------------------------------------------3
2、需求分析方案--------------------------------------------------4
2.1功能需求分析-----------------------------------------------4
2.2 性能需求分析-----------------------------------------------4
3、总体设计方案--------------------------------------------------5
3.1界面设计----------------------------------------------------------------------5
3.2功能介绍-----------------------------------------------------------------------5
4、 详细说明、调试---------------------------------------------6
4.1程序流程图-------------------------------------------------------6
4.2部分代码说明-----------------------------------------------------6
4.3程序调试与结果示例-------------------------------------------8
5、 个人总结-----------------------------------------------------10
6、 附录(代码)-----------------------------------------------11
6.1登陆界面代码 --------------------------------------------11
6.2计算器主界面 --------------------------------------------12
6.3 退出界面代码 -------------------------------------------15
1.课程设计概述
1.1利用java编写计算器,使之具备一定的功能:
(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;
(2)完成整数、实数的四则运算(加、减、乘、除);
(3)通过按钮点击实现数据的复位(清零);
(4)实数运算中小数位的精度一致。
1.2 课程设计的主要思想
首先要设计一个登录界面,必须输入密码并正确才能进入到计算器界面;
对于此计算器程序,要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。
最后还需要一个退出界面。
重要的是必须把三个界面的代码放在同一个包里。
1.3 该项目设计的目的
(1)理解并掌握Java中的类、对象、继承、方法等概念,以及Applet的基本框架和事件处理的方法。
(2)学会一些按钮,标签,主件,文本框的使用;
(3)学会使用JDK编写、调试和运行Java Applet应用程序。
(4)利用awt组件编写一个计算器,实现基本的四则运算。
2.需求分析
2.1 功能需求分析
在日常生活中经常需要用到计算器,比如科学计算、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。本项目需要实现一个用Java中的类、对象、继承、方法等概念以及awt主键和 Applet的基本框架和事件处理的方法。简单的四则运算的计算器,拥有加、减、乘、除功能,除此之外要三个界面即:登录面,计算器主界面,退出界面,要剧本的功能就是点击登录界面可以前往计算器主界面,退出可以到达退出界面。
2.2性能需求分析
实用性:在实现此过程中,我们要考虑到,计算的实用性,能过用于哪些方面。
准确性:在实现此过程中,我们要考虑到,怎样使计算器界面更简单,让人更容易明白它怎样去用。
连贯性:在此项目中,要让登陆界面,计算器主界面,退出界面能连起;即:运行登陆界面,密码正确时能登陆到计算器主界面,点主界面退出时能到达退出界面,给人以提示。
3总体设计
3.1界面设计
界面设计要求用GUI,界面设计中有用到swing组件的TextField、Button,和JLable用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:
登陆界面
计算器主界面
退出提示界面
3.2功能介绍
(1)本项目分为三个界面,登录,计算器,退出三个界面,点击登录输入密码正确就可以登录到计算器界面,退出计算器界面还可以再次登录。(2)这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算 ;还能通过用户自己在文本框中输入数字,进行简单运算 ;
如果输入有误时可以点“清除”撤销后重新输入新数据 .
4.详细设计说明、调试
4.1程序流程图:
4.2部分代码说明
段代码主要是对程序的主框架进行相应的设置。
Frame f=new Frame("计算器小程序");
f.setBackground(Color.lightGray);
f.setForeground(Color.blue)//数字颜色
f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.CENTER);
f.add(p3,BorderLayout.SOUTH);
f.setSize(350,300);//设置面板大小
f.setVisible(true);//设置为可见
添加相应的按钮
B[0].addActionListener(this); //7
B[1].addActionListener(this); //8
B[2].addActionListener(this); //9
B[3].addActionListener(this); //除号
B[4].addActionListener(this); //4
B[5].addActionListener(this); //5 B[6].addActionListener(this); //*乘号
B[8].addActionListener(this); //1
B[9].addActionListener(this); //2
B[10].addActionListener(this); //3
B[11].addActionListener(this); // -减号
B[12].addActionListener(this); //0
B[13].addActionListener(this); //.小数点
B[14].addActionListener(this); //=等于号
B[15].addActionListener(this); //+加好
b1.addActionListener(this);
b2.addActionListener(this);
f.addWindowListener(new closeWin();
运算设计代码:
if(command=="清除") //清零键 按下时返回初始状态
{
y=0;
tf.setText("0.");
s1="";s2="";s3="";//记录输入值的变量清空
}
elseif(command=="退出") System.exit(0);//退出键 关闭应用程序
elseif(y==0&&command!="*"&&command!="/"
&&command!="+"&&command!="-"
&&command!="=")//判断输入是否为数字
{
s1=s1.concat(command);
tf.setText(s1);
}
if(command=="*"||command=="/"
||command=="+"||command=="-")//判断是否输入运算符
{
y=1;
s2=command;
}
if(y==1&&command!="*"&&command!="/"
&&command!="+"&&command!="-"
&&command!="=")
{
s3=s3.concat(command);
tf.setText(s3);
}
if(command=="=")
{
Double ob1=Double.valueOf(s1);
Double ob3=Double.valueOf(s3); d1=ob1.doubleValue();
d3=ob3.doubleValue();
if(s2=="+") d4=d1+d3;
if(s2=="-") d4=d1-d3;
if(s2=="*") d4=d1*d3;
Double ob4=new Double(d4);
tf.setText(ob4.toString());
if(s2=="/")
{ if(d3==0)
tf.setText("除数不能为零");
else{ d4=d1/d3;
ob4=new Double(d4);
tf.setText(ob4.toString());}
}
y=0;
}
4.3程序调试与结果示例
1.运行登录界面,输入密码,正确和错误两种情况;当输入正确时会弹出计算器界面,如果错误也会提示你,点击“重置”就可以重新输入密码
2.当除数为0时,结果显示“除数不能为零”“if(d3==0) tf.setText("除数为零")”
3.预计“32+3=35”,结果显示“35.0”
4.预计“5-7=-2”,实际结果显示“-2.0”
5. 当不需要计算时,点击“退出”或关闭窗口时会弹出退出界面,会提示你是否真的退出,如需要重新登录就点击“再次登录”,如不需要登录就点击“退出”或关闭窗口。
5.个人总结
附录:(代码)
6.1登录界面的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
publicclassjiemianextends JFrame implements ActionListener
{
JButton button1,button2;
JTextField text1,text2;
JLabel jlb,jlb1,jlb2;
public jiemian()
{
super("java小程序登陆窗口");
Container con=getContentPane();
con.setLayout(null);
jlb=new JLabel("您好!欢迎您登陆java小程序计算器");
jlb1=new JLabel("请输入秘密:");//标签
button1=new JButton("登陆");//登陆按钮
button1.addActionListener(this); //添加监听者
button2=new JButton("重置");//取消按钮
button2.addActionListener(this); //添加监听者
text1=new JPasswordField(10);//密码文本框
((JPasswordField) text1).setEchoChar('*');//设置掩码
text1.addActionListener(this); //添加监听者
jlb2=new JLabel("密码提示:");//标签
text2=new JTextField(10);//密码提示文本框
//标签,文本框,按钮的位置大小
jlb.setBounds(70,0,220,100);
jlb1.setBounds(90,50,80,50);
text1.setBounds(80,90,190,30);
button1.setBounds(90,210,60,30);
button2.setBounds(170,210,60,30);
jlb2.setBounds(90,110,90,50);
text2.setBounds(80,150,190,30);
con.add(jlb);
con.add(jlb1);
con.add(jlb2);
con.add(text1);
con.add(text2);
con.add(button1);
con.add(button2); setBounds(300,200,350,350);
setVisible(true);
}
publicstaticvoid main(String args[])
{
new jiemian();//函数调用
}
publicvoid actionPerformed(ActionEvent e)
{
if(text1.getText().equals("ruanjian11312"))//判断密码
{
text2.setText("密码正确");
new jsq().init();//调用计算器主界面函数
}
elseif(text1.getText().equals("11312"))//判断密码
{
text2.setText("密码正确");
new jsq().init();//调用计算器主界面函数
}
else
text2.setText("对不起,密码错误,请重新输入");
if(e.getSource()==button2)
{
text1.setText(null);
text2.setText(null);
}//使文本框1、2反空
}
}
6.2计算器主界面的代码:
import java.awt.*; import java.awt.event.*;
publicclass jsq implements ActionListener
{ Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
TextField tf=new TextField(30);
String a[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+",};
Button B[];
Button b1=new Button("清除");
Button b2=new Button("退出");
String s1=new String();
String s2=new String();
String s3=new String();//s1记录第一个数;s2记录运算符;s3记录第二个数;
double d1,d3,d4;
int y=0; // y用于控制运算符
public void init()
{
Frame f=new Frame("计算器小程序");
f.setBackground(Color.lightGray);
f.setForeground(Color.blue);//数字颜色
p1.add(tf);
p3.setLayout(new GridLayout(1,2));
p3.add(b1);
p3.add(b2);
p2.setLayout(new GridLayout(4,4));
B=new Button[a.length];
for(int i=0;i<a.length;i++)
{
B[i]=new Button(a[i]);
p2.add(B[i]);
}
f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.CENTER);
f.add(p3,BorderLayout.SOUTH);
f.setSize(350,300);//设置面板大小
f.setVisible(true);//设置为可见
B[0].addActionListener(this); //7
B[1].addActionListener(this); //8
B[2].addActionListener(this); //9
B[3].addActionListener(this); //除号
B[4].addActionListener(this); //4 B[5].addActionListener(this); //5
B[6].addActionListener(this); //*乘号
B[8].addActionListener(this); //1
B[9].addActionListener(this); //2
B[10].addActionListener(this); //3
B[11].addActionListener(this); // -减号
B[12].addActionListener(this); //0
B[13].addActionListener(this); //.小数点
B[14].addActionListener(this); //=等于号
B[15].addActionListener(this); //+加好
b1.addActionListener(this);
b2.addActionListener(this);
f.addWindowListener(new closeWin());
}
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand();
if(command=="清除") //清零键 按下时返回初始状态
{
y=0;
tf.setText("0.");
s1="";s2="";s3="";//记录输入值的变量清空
}
else if(command=="退出") {
new tuichu();//调用退出界面函数
}//退出键 退出到退出界面
else if(y==0&&command!="*"&&command!="/"
&&command!="+"&&command!="-"
&&command!="=")//判断输入是否为数字
{
s1=s1.concat(command);
tf.setText(s1);
}
if(command=="*"||command=="/"
||command=="+"||command=="-")//判断是否输入运算符
{
y=1;
s2=command;
}
if(y==1&&command!="*"&&command!="/"
&&command!="+"&&command!="-"
&&command!="=")
{ s3=s3.concat(command);
tf.setText(s3);
}
if(command=="=")
{
Double ob1=Double.valueOf(s1);
Double ob3=Double.valueOf(s3);
d1=ob1.doubleValue();
d3=ob3.doubleValue();
if(s2=="+") d4=d1+d3;
if(s2=="-") d4=d1-d3;
if(s2=="*") d4=d1*d3;
Double ob4=new Double(d4);
tf.setText(ob4.toString());
if(s2=="/")
{ if(d3==0)
tf.setText("除数不能为零");
else{ d4=d1/d3;
ob4=new Double(d4);
tf.setText(ob4.toString());}
}
y=0;
}
}
public static void main(String [] args)
{
new jsq().init(); //函数调用
}
}
class closeWin extends WindowAdapter //为关闭按钮编写程序
{
publicvoid windowClosing(WindowEvent e)
{
new tuichu(); //关闭调用退出界面函数
}
}
6.3退出界面的代码:
import java.awt.Container;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
publicclasstuichuextends JFrame implements ActionListener
{
JLabel jlb;
JButton button;
JButton button2;
public tuichu()
{
super("计算器退出");
Container con=getContentPane();
con.setLayout(null);
jlb=new JLabel("谢谢你的光临,欢迎下次登录小程序计算器!!!");
button=new JButton("退出");
button2=new JButton("再次登录");
jlb.setBounds(20,0,300,100);
button.setBounds(70,70,60,30);
button.addActionListener(this);//添加监听者
button2.setBounds(150,70,100,30);
button2.addActionListener(this); //添加监听者
con.add(jlb);
con.add(button);
con.add(button2);
setBounds(300,200,340,150);
setVisible(true);
}
publicstaticvoid main(String args[])
{
new tuichu();
}
@Override
publicvoid actionPerformed(ActionEvent e) {
if(e.getSource()==button)
{
System.exit(0);//退出程序
}
elseif(e.getSource()==button2)
{
new jiemian();//调用登陆界面函数
}
}
}
华东交通大学课程设计华东交通大学课程设计课程设计题目计算器设计课程题目年级专业学号姓名组员指导教师Java程序设计信息一班1华东交…
计算机综合课程设计报告小组编号06课题名称趣味贪吃蛇小组成员20xx年10月计算机综合课程设计报告目录目录11项目背景112系统目…
MFC计算器课程设计报告计算机应用3班黄锦湫罗洁饶益指导老师蒋鹏20xx315一题目利用MFC框架编写简易计算器要求使用MFC框架…
计算机网络课程设计报告一.课程设计的题目、目的及要求.......................................…
武汉理工大学专业课程设计2课程设计说明书目录1基本功能描述12设计思路13软件设计431设计步骤44结论与心得体会127附设计中的…
20xx20xx年度第1学期Java程序设计课程设计报告保存计算过程的计算器专业网络工程陆春燕B计算机0920970704211徐…
华东交通大学课程设计华东交通大学课程设计课程设计题目计算器设计课程题目年级专业学号姓名组员指导教师Java程序设计信息一班1华东交…
课程设计课程设计目的设计一个基于Swing的计算器应用程序完成普通的算术运算课程设计要求1设计的计算器是基于Swing的可以完成加…
JAVA程序设计课程设计报告书学生考勤系统的设计和实现提交日期20xx年12月1目录摘要3一前言3二设计分析3三实现方法4四调试问…
高级编程技术课程设计学号姓名何志军班级信息管理1班学期指导教师模拟科学计算器一概述1程序具备的功能1使用图形用户界面一个文本框09…
GDOUB11112广东海洋大学学生实验报告书学生用表实验名称JAVA计算器程序设计学院系学生姓名课程名称专业JAVA程序设计班级…