目录
一、 设计目的及任务 ..................................................................... 1 二、设计分析 .................................................................................. 1 1、需求分析 ............................................................................... 1 2、 程序结构 ............................................................................. 1 3、详细设计 ............................................................................... 4 (1)数据分析 ...................................................................... 4 (2) 类的设计 ..................................................................... 4 (3)模块的功能及程序说明 ................................................. 4 三、 源程序 .................................................................................... 5 四、 系统运行及其结果 ................................................................ 20 五、 设计体会、各成员的分工与合作情况介绍。 ........................ 22 1、 设计体会 ........................................................................... 22 2、 各成员分工与合作情况 ........................ 错误!未定义书签。 六、参考文献 ................................................... 错误!未定义书签。
湖南人文科技学院课程设计
湖南人文科技学院课程设计
一、设计目的及任务 目的:
1.巩固和加深课堂所学知识;
2.学习掌握一般的软件的设计方法和查阅、运用资料的能力; 3.掌握JAVA 程序设计语言,面向对象的软件设计思想、方法。 任务:
1.设计一个简单的计算器程序 功能要求:能够实现基本的加、减、乘、除、求余、开平方等运算,以及其它的辅助功能,界面简洁适用;
2.设计任务要完成设计、编码、测试等过程,给出设计思路、主要的代码说明,源代码以及课程设计报告。
二、设计分析
1、需求分析
日常生活中经常需要用到计算器,比如科学计算,数值计算, 会计业务等等,在myeclipse 中实现一个精巧的计算器,可以让用户的 操作也更方便和快捷。本项目需要实现一个具有四则运算的计算器, 能够实现基本的加、减、乘、除等运算,以及其它的辅助功能。 2、程序结构 流程图
1
湖南人文科技学院课程设计
开始设置窗口布局定义按钮设置窗口名称、大小、位置添加菜单添加按钮添加事件监听器实现各个按钮的功能输入Y判断输入的是否是数字NY判断输入的是否是0N判断输入的是否是运算符Y输入输入异常
2
判断输入的是否是1/xY警告,格式错误湖南人文科技学院课程设计
判断输入N的是否是N小数点N异常判断输入N的是否是sprtY判断输入的是否是小数点Y输入NYY判断输入判断输入的的是否是是否是数字运算符NYN输入警告,格式错误判断输入的是否是N数字警告,格式错误Y输出结果 3
湖南人文科技学院课程设计
3、详细设计 (1)数据分析
计算器的程序设计,必然有数据的输入,当中就包含运算符和数字,都要通过计算器上的Button按钮选项按键输入进去,里面录入的为字符型的数据,若要进行运算,要将输入的字符转换成
double型,以防运算出错 (2)类的设计
Class MathWindow extends JFrame implements ActionListener
(3)模块的功能及程序说明 a、数字键按钮,输入所需计算的数字。
JButton jb7=new JButton(\"7\"); JButton jb8=new JButton(\"8\"); JButton jb9=new JButton(\"9\"); JButton jb4=new JButton(\"4\"); JButton jb5=new JButton(\"5\"); JButton jb6=new JButton(\"6\"); JButton jb1=new JButton(\"1\"); JButton jb2=new JButton(\"2\"); JButton jb3=new JButton(\"3\"); JButton jb0=new JButton(\"0\");
JButton point=new JButton(\".\"); b、运算符按钮,输入所需的运算符号。
4
JButton div=new JButton(\"/\");
JButton mul=new JButton(\"*\");
JButton sub=new JButton(\"-\");
JButton add=new JButton(\"+\"); JButton mode=new JButton(\"%\"); JButton sqrt=new JButton(\"sqrt\"); JButton pecent=new JButton(\"1/x\");
JButton qf=new JButton(\"+/-\");
c、等号按钮,输出运算的结果。 JButton equal=new JButton(\"=\"); d、清零按钮,将已计算的数字或结果清零。
JButton 清零=new JButton(\"CE\");
e、清空按钮,清空文本框。 JButton 清空=new JButton(\"C\"); f、回退按钮,删除最后输入的数字或运算符。 JButton 退格=new JButton(\"BackSpace\");
三、源程序 import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent;
湖南人文科技学院课程设计
5
湖南人文科技学院课程设计
import javax.swing.*;
public class Calculator{ }
class MathWindow extends JFrame implements ActionListener{
//文本框的窗口布局,一行一列 GridLayout grid00=new GridLayout(); //BackSpace、CE、C的窗口布局,一行三列
GridLayout grid01=new GridLayout(1,3,5,5); //二行一列,用于嵌套以上两个窗口布局
GridLayout grid1=new GridLayout(2,1,5,5); //数字和运算符的窗口布局
GridLayout grid2=new GridLayout(4,5,5,5);
//总窗口布局
BorderLayout border=new BorderLayout(5,5); //JPanel面板,后缀数字对应上述布局
JPanel jp00=new JPanel(); JPanel jp01=new JPanel();
JPanel jp1=new JPanel(); public static void main(String[] args){ }
new MathWindow();//启动程序
JPanel jp2=new JPanel();
6
湖南人文科技学院课程设计
JTextField jtf=new JTextField(\"0\"); //显示框 JMenuBar jmb; //菜单条 JMenu edit,help; //菜单
JMenuItem c,v,帮助主题,关于计算器; //菜单项 //定义窗口中所有的按钮
JButton 退格=new JButton(\"BackSpace\"); JButton 清零=new JButton(\"CE\"); JButton 清空=new JButton(\"C\"); JButton jb7=new JButton(\"7\"); JButton jb8=new JButton(\"8\"); JButton jb9=new JButton(\"9\"); JButton div=new JButton(\"/\");
JButton sqrt=new JButton(\"sqrt\"); JButton jb4=new JButton(\"4\"); JButton jb5=new JButton(\"5\"); JButton jb6=new JButton(\"6\"); JButton mul=new JButton(\"*\"); JButton mode=new JButton(\"%\"); JButton jb1=new JButton(\"1\"); JButton jb2=new JButton(\"2\"); JButton jb3=new JButton(\"3\"); JButton sub=new JButton(\"-\"); JButton pecent=new JButton(\"1/x\");
7
湖南人文科技学院课程设计
JButton jb0=new JButton(\"0\"); JButton qf=new JButton(\"+/-\"); JButton point=new JButton(\".\"); JButton add=new JButton(\"+\"); JButton equal=new JButton(\"=\"); float num1=0; //运算数 char ch='#'; //运算符 String copy=\"0\"; //存储 boolean can=false; MathWindow(){ setTitle(\"计算器\"); //设置窗口名称 setVisible(true); //设置可见性 setSize(400,300); //设置窗口初始大小 setLocation(400, 200); //设置窗口显示位置 jmb=new JMenuBar(); edit=new JMenu(\"编辑(E)\"); edit.setMnemonic('E'); help=new JMenu(\"帮助(H)\"); help.setMnemonic('H'); c=new JMenuItem(\"复制(C)\");
c.setMnemonic('C');
c.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK)); //设置快捷键
8
湖南人文科技学院课程设计
c.addActionListener(this); //获得监视器 v=new JMenuItem(\"粘贴(v)\");
v.setMnemonic('v');
v.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
v.addActionListener(this);
帮助主题=new JMenuItem(\"帮助主题(H)\");
帮助主题.setMnemonic('H');
帮助主题.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_H,InputEvent.CTRL_MASK));
帮助主题.addActionListener(this);
关于计算器=new JMenuItem(\"关于计算器(A)\"); 关于计算器.setMnemonic('A');
关于计算器.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_A,InputEvent.CTRL_MASK));
关于计算器.addActionListener(this); edit.add(c); edit.add(v);
help.add(帮助主题); help.add(关于计算器); jmb.add(edit); jmb.add(help);
setJMenuBar(jmb);
9
湖南人文科技学院课程设计
setLayout(border); jp00.setLayout(grid00); jp00.add(jtf); jtf.setEditable(false);
//设置文本的水平对齐方式为右对齐
jtf.setHorizontalAlignment(JTextField.RIGHT); jp01.setLayout(grid01); jp01.add(退格); jp01.add(清零); jp01.add(清空);
//为退格、清零、清空加事件监听 退格.addActionListener(this); 清零.addActionListener(this); 清空.addActionListener(this); jp1.setLayout(grid1); jp1.add(jp00); jp1.add(jp01); add(jp1,\"North\"); jp2.setLayout(grid2);
//在面板上加入按钮 jp2.add(jb7); jp2.add(jb8); jp2.add(jb9);
10
jp2.add(div); jp2.add(sqrt); jp2.add(jb4); jp2.add(jb5); jp2.add(jb6); jp2.add(mul); jp2.add(mode); jp2.add(jb1); jp2.add(jb2); jp2.add(jb3); jp2.add(sub); jp2.add(pecent); jp2.add(jb0); jp2.add(qf); jp2.add(point); jp2.add(add); jp2.add(equal);
//在按钮上加入事件监听 jb7.addActionListener(this); jb8.addActionListener(this); jb9.addActionListener(this); div.addActionListener(this); sqrt.addActionListener(this);
湖南人文科技学院课程设计
11
湖南人文科技学院课程设计
jb4.addActionListener(this); jb5.addActionListener(this); jb6.addActionListener(this); mul.addActionListener(this); mode.addActionListener(this); jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); sub.addActionListener(this); pecent.addActionListener(this); jb0.addActionListener(this); qf.addActionListener(this); point.addActionListener(this); add.addActionListener(this); equal.addActionListener(this); add(jp2,\"Center\");
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }
public void actionPerformed(ActionEvent e){ String act=e.getActionCommand();
if(e.getSource()==copy){
12
湖南人文科技学院课程设计
}
copy=jtf.getText();
if(e.getSource()==v){ }
if(e.getSource()==帮助主题){
JOptionPane.showMessageDialog(null,\"
帮
助
\
帮
助
请主参
阅题
jtf.setText(copy);
Windows
\ }
if(e.getSource()==关于计算器){
JOptionPane.showMessageDialog(null,\"名称:简单计算
器\\n制作者:\\n张旭 11408210\\n夏旋 11408228\\n张雪艳 11408223\\n毛佳薇 11408231\\n版权所有,仿冒必究\关于计算器\ }
if(e.getSource()==退格){
if(jtf.getText().length()>1){
jtf.setText(jtf.getText().substring(0,jtf.getText().length()-1)); } else { }
13
jtf.setText(\"0\");
湖南人文科技学院课程设计
return;
}
if(e.getSource()==清零){ jtf.setText(\"0\"); return;
}
if(e.getSource()==清空){ jtf.setText(\"0\"); ch='#'; return; }
if(act.equals(\"+/-\")){ if(jtf.getText().charAt(0)!='-'){ jtf.setText(\"-\"+jtf.getText()); } else{ jtf.setText(jtf.getText().substring(1));return; }
}
if(act.equals(\".\")){ jtf.setText(jtf.getText()+act);return;
}
if(act!=\"1/x\"&&act.charAt(0)>='0'&&act.charAt(0)<='9'){
14
湖南人文科技学院课程设计
if(can){ } else{ try{
if(Float.parseFloat(jtf.getText())==0){ } else{ }
jtf.setText(jtf.getText()+act); return;
if(jtf.getText().equals(\"0.\")){ } else{ } return;
jtf.setText(act);
jtf.setText(jtf.getText()+act);
jtf.setText(act); can=false;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,\"输入格式
错误!\警告!\
return;
15
湖南人文科技学院课程设计
}
}
}
if(act.equals(\"+\")||act.equals(\"-\")||act.equals(\"*\")||
act.equals(\"/\")||act.equals(\"%\")){
if(ch!='#'){ try{
num1=计算
(num1,ch,Float.parseFloat(jtf.getText()));
jtf.setText(String.valueOf(num1)); ch=act.charAt(0); can=true; return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,\"输入格式
错误!\警告!\ } else{ try{
num1=Float.parseFloat(jtf.getText()); ch=act.charAt(0);
16
}
return;
湖南人文科技学院课程设计
can=true; return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,\"输入格式
错误!\警告!\ }
if(act.equals(\"sqrt\")){ try{ float } } return;
num=(float)Math.sqrt(Float.parseFloat(jtf.getText()));
jtf.setText(String.valueOf(num)); can=true; return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,\"输入格式错
误!\警告!\ }
if(act.equals(\"1/x\")){
17
}
return;
湖南人文科技学院课程设计
try{
float num=1/Float.parseFloat(jtf.getText()); jtf.setText(String.valueOf(num)); can=true; return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,\"输入格式错
误!\警告!\
return;
}catch(ArithmeticException e1){
JOptionPane.showMessageDialog(null,\"除0错误!\
警告!\ }
if(act.equals(\"=\")){
can=true; try{
if(ch=='#'){ }
float num=Float.parseFloat(jtf.getText()); num1=计算(num1,ch,num);
18
}
return;
return;
湖南人文科技学院课程设计
jtf.setText(String.valueOf(num1)); ch='#'; return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,\"输入格式错
误!\警告!\ }
public float 计算(float a,char c,float b){
float sum; switch(c){
case '+':sum=a+b;break; case '-':sum=a-b;break; case '*':sum=a*b;break; case '/':
if(b==0){
JOptionPane.showMessageDialog(null,\"除0错误!\ } } return;
警告!\ } sum=a/b;
19
return 0;
湖南人文科技学院课程设计
break;
case '%':
if(b==0){
JOptionPane.showMessageDialog(null,\"除0错误!\
警告!\ return 0;
}
sum=a%b; break; default:return 0; }
return sum;
} }
四、系统运行及其结果 程序运行如下: 20
运行状况如下: 例如 运行7+9 先输入7,再按+,输入9
湖南人文科技学院课程设计
21
湖南人文科技学院课程设计
让后按=,输出结果:
五、设计体会、各成员的分工与合作情况介绍。
1、设计体会
本次设计我们组的题目是计算器系统,因为有老师的指导,我们完成了这次课程设计。由于对知识掌握的不够熟练,我们在系统分析和设计的部分花费了较多的时间。经过反反复复的改写、调试,我们最终完成了任务。但由于时间紧迫,有些功能还不够完整。
经过对唱片管理系统的分析与编写,我们得到了很多收获。我
22
湖南人文科技学院课程设计
们四人一组,在此次程序设计的过程中,我们互相讨论、互相学习,在讨论和学习的过程中我们发现自己的优势与不足,然后取长补短,这让我们更加了解到了团队精神的重要。更重要的是这次设计让我们对这门课程有了更深刻的认识,提高了我们分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。
23
因篇幅问题不能全部显示,请点此查看更多更全内容