资源描述
课程设计(大作业)报告
课程名称:java课程设计
设计题目:计算器设计
院 系:信息技术学院
班 级:计算机科学与技术(2)班
设 计 者:
学 号:201011010208
指导教师:
设计时间:2011-12-27——2011-12-29
昆明学院
昆明学院课程设计(大作业)任务书
姓 名:蒋孝林 院 系:信息技术学院
专 业:计算机科学与技术专业 学 号: 201011010208
任务起止日期: 2011-12-27——2011-12-29
课程设计题目:计算器设计
课程设计要求:
(1) 课程设计任务及要求
(2) 设计思路、功能原理、功能规划
(3) 总体设计与详细设计---数据分析,算法思路,类设计,功能实现(含程序流程图,主要代码及注释),界面等
(4) 运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等.
(5) 设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识, 巩固了那些知识,有哪些提高。矚慫润厲钐瘗睞枥庑赖。
(6) 参考文献
(7) 报告格式见昆明学院课程设计报告模板,按格式要求完成设计报告。
追求完善,不要仅仅应付老师的检查、,程序要求有良好的结构及编码风格,有必要的注释。
(8)严禁抄袭,如有发现,按不及格处理
工作计划及安排
2011-12-26起至2011-12-27 查询相关资料,对这个关于计算机的Java程序设计进行大体编排聞創沟燴鐺險爱氇谴净。
2011-12-28起至2011-12-30 对程序进行编写,运行,调试
2011-12-30 完成设计
指导教师签字
年 月 日
课程设计(大作业)成绩
学号:201011010208 姓名:蒋孝林 指导教师:何英 老师
课程设计题目: 计算器程序设计
总结:这次的课程设计,是我对Java有了进一步的了解和体会。
对于这次课程设计,我最大的感受就是自己对教材并不是很熟悉,所掌握和熟悉的知识不够,在设计的过程中出现了很多弯路,所以在以后进一步的学习和深入中,我会多查阅一些相关资料,多想,多实践,更好的巩固所学的知识,以求加深对java的理解。我会总结在课程设计中发现的技巧性知识,在议会的学习中 学会学以致用,把学会的更好的应用在生活中,在学习中发现问题。提出问题,然后解决问题。多想同学和老师请教,在以后的学习中取得好的成绩残骛楼諍锩瀨濟溆塹籟。
指导教师评语:
成绩:
填表时间:
指导教师签名:
课程设计(大作业)报告
1、 课程设计介绍 …………………………………………………………………4
1.1课程设计内容 ………………………………………..........................................4酽锕极額閉镇桧猪訣锥。
1.2课程设计要求 ………………………………………………………………….4
2、 总体设计 ………………………………………………………………………4
2.1课设题目总体设计、算法描述………………………………………4
2.1.1、功能模块设计………………………………………………………4
2.1.2、界面设计代码…………………………………………………….4
2.2功能模块图、流程图分析……………………………………………..6
3、 调试与性能分析 (相关截图)……………………………………………6
4、 参考文献…………………………………………………………………………..8
附 录(程序清单).................................................................................................9彈贸摄尔霁毙攬砖卤庑。
1、 课程设计介绍
1.1课程设计内容
本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开根号、百分号、求倒数,还可以实现数值的符号转换操作。 ,Backspace表示退格, CE表示将当前文本框内数据清除,C表示文本框内数据清除。此外还提供了“编辑”、“查看”、“帮助”三个菜单项,使用者可通过使用菜单项实现复制、粘贴功能。界面类似windows自带计算器界面。謀荞抟箧飆鐸怼类蒋薔。
1.2课程设计要求
(1)设计一个标准型的计算器应用程序,完成简单的算法运算。
(2)该程序可以通过鼠标一次键入参加计算的数值,不仅可以参加加减乘除运算,还可以完成开方、百分运算、倒数运算等这些运算,并且还有小数点、正负号、退格、清零这些功能。厦礴恳蹒骈時盡继價骚。
2、总体设计
2.1、课设题目总体设计、算法描述
2.1.1、功能模块设计
计算器基本功能
(1)加法
两个数据进行加操作,可以为小数。
(2)减法
两个数据进行减操作,可以为负数相减。
(3)乘法
两个数相乘操作。
(4)除法
两个数相除操作。
(5)开平方
对任意一个数进行开方运算,可以是小数。
(6)百分号
对任意一个数进行百分号运算。
(7)倒数
对任意一个数进行倒数运算。
算法分析:事件监听器的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分为以下几种情况:数字按钮事件(“0”、“1”、“2”、“3”、….“8”、“9”),运算符按钮事件(“+”、“-”、“,”“*”、“/”、“%”),正负值按钮事件(“+/-”),小数点按钮事件(“.”),等号按钮事件(“=”),求倒按钮事件(“1、x”),退格按钮事件(“CE”),茕桢广鳓鯡选块网羈泪。
清除按钮事件(“C”),
2.1.2、 界面设计代码
计算器的界面由一个文本框及27个按钮组成,具体实现代码如下所示:
JPanel pa1=new JPanel();
pa1.setBackground(new Color(236,231,210));
text=new JTextField("0.",31);
pa1.add("North",text);
//面板添加和按钮的设置
JPanel pa=new JPanel();
JPanel pa2=new JPanel();
JButton bt1=new JButton("Backspace");
JButton bt2=new JButton("CE");
JButton bt3=new JButton("C");
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
pa2.add(bt1);
pa2.add(bt2);
pa2.add(bt3);
pa.setLayout(new BorderLayout());
pa.add(pa2,"North");
JPanel p1=new JPanel();
p1.setLayout(new GridLayout(4,1,2,5));
JButton bt4=new JButton("MC");
JButton bt5=new JButton("MR");
JButton bt6=new JButton("MS");
JButton bt7=new JButton("M+");
p1.add(bt4);
p1.add(bt5);
p1.add(bt6);
p1.add(bt7);
pa.add(p1,"West");
JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 5,2,5));
String buttons[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0",".","=","+","+/-"};鹅娅尽損鹌惨歷茏鴛賴。
JButton btn[]=new JButton[buttons.length];
for (int i = 0; i < buttons.length; i++)
{addButton(p, buttons[i]);
pa.add(p, "Center");
}
pa1.add("South",pa);
this.getContentPane().add(pa1);
}
private void addButton(Container c, String s)
{ JButton b = new JButton(s);
c.add(b);
b.addActionListener(this);
2.2功能模块图、流程图分析
标准计算器
加法运算
减法运算
乘法运算
除法运算
开平方运算
百分号运算
倒数运算
3、调试与性能分析 (相关截图)
(1)标准计算其界面
(2) 、加、减、乘除运算演示
分别输入8和4进行运算演示
※加法
8
+ =
※乘法
*=
※开方运算
sqrt
※百分号运算
%
※倒数运算
1/x
4、 参考文献
Java语言程序设计(第6版) 机械工程出版社
5、附录(程序清单)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class jisuanqi extends JFrame implements ActionListener,ItemListener{籟丛妈羥为贍偾蛏练淨。
JTextField text;
JTextField textMemory;
boolean clickable;
double memoryd; //使用内存中存储的数字
int memoryi;
String copy;
public jisuanqi(){
super("计算器");
setSize(357,253);
}
public void init(){
clickable = true;
JPanel pa1=new JPanel();
pa1.setBackground(new Color(236,231,210));
text=new JTextField("0.",31);
text.setHorizontalAlignment(JTextField.RIGHT);//从右到左預頌圣鉉儐歲龈讶骅籴。
pa1.add("North",text);
//面板添加和按钮的设置
JPanel pa=new JPanel();
JPanel pa2=new JPanel();
JButton bt1=new JButton("Backspace");
JButton bt2=new JButton("CE");
JButton bt3=new JButton("C");
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
pa2.add(bt1);
pa2.add(bt2);
pa2.add(bt3);
pa.setLayout(new BorderLayout());
pa.add(pa2,"North");
JPanel p1=new JPanel();
p1.setLayout(new GridLayout(4,1,2,5));
JButton bt4=new JButton("MC");
JButton bt5=new JButton("MR");
JButton bt6=new JButton("MS");
JButton bt7=new JButton("M+");
p1.add(bt4);
p1.add(bt5);
p1.add(bt6);
p1.add(bt7);
pa.add(p1,"West");
JPanel p = new JPanel();
p.setLayout(new GridLayout(4, 5,2,5));
String buttons[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0",".","=","+","+/-"};渗釤呛俨匀谔鱉调硯錦。
JButton btn[]=new JButton[buttons.length];
for (int i = 0; i < buttons.length; i++)
{addButton(p, buttons[i]);
pa.add(p, "Center");
}
pa1.add("South",pa);
this.getContentPane().add(pa1);
}
private void addButton(Container c, String s)
{ JButton b = new JButton(s);
c.add(b);
b.addActionListener(this);
}
//功能的实现
public void actionPerformed(ActionEvent evt)
{
String s = evt.getActionCommand();
if(s.equals("CE")||s.equals("C")){
text.setText("");
}
////////////////////
else if(s.equals("+/-"))//单击"+/-"选择输入的运算数是正数还是负数
{ double x;
x=Double.parseDouble(text.getText().trim());
text.setText(""+(-x));
}
else
if (s == "sqrt") {
String s1 = text.getText();
if (s1.charAt(0) == '-'&& clickable == true) {
text.setText("负数不能开根号");
clickable = false;
}
else
text.setText(Double.toString(java.lang.Math.sqrt(Double.铙誅卧泻噦圣骋贶頂廡。
parseDouble(text.getText()))));
}
else if(s.equals("%"))//单击了"%"按钮
{ double x;
x=Double.parseDouble(text.getText().trim());
text.setText(""+(0.01*x));
// str.setLength(0);
//y=0d;
}
else if(s.equals("1/x"))//单击了"1/X"按钮
{ double x;
x=Double.parseDouble(text.getText().trim());
if(x==0)
{
text.setText("除数不能为零");
}
else
{
text.setText(""+(1/x));
}
//按下'+/-'按钮时处理
if (s== "+/-" && clickable == true) {
boolean isNumber = true;
String s1 = text.getText();
for (int i = 0; i < s.length(); i++)
if (! (s1.charAt(i) >= '0' && s1.charAt(i) <= '9' || s1.charAt(i) == '.' ||擁締凤袜备訊顎轮烂蔷。
s1.charAt(i) == '-')) {
isNumber = false;
break;
}
if (isNumber == true) {
//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉
if (s.charAt(0) == '-') {
text.setText("");
for (int i = 1; i < s1.length(); i++) {
char a = s1.charAt(i);
text.setText(text.getText() + a);
}
}
//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处
else
text.setText('-' + s);
}
}
//计算器有关内存操作
//'MC'的操作,将内存清0
else
if (s == "MC" && clickable == true) {
memoryd = memoryi = 0;
textMemory.setText("");
}
//'MS'的操作,将当前文本框内容保存入内存,显示'M'
else
if (s == "MS" && clickable == true) {
boolean isDot = false;
textMemory.setText(" M");
for (int i = 0; i < text.getText().length(); i++)
if ('.' == text.getText().charAt(i)) {
isDot = true;
break;
}
//如果是double,则存入memoryd(double存储器)
if (isDot == true) {
memoryd = Double.parseDouble(text.getText());
memoryi = 0; //保证存储器中存放最新的值
}
//如果是int,则存入memoryi(int存储器)
else {
memoryi = Integer.parseInt(text.getText());
memoryd = 0; //保证存储器中存放最新的值
}
}
//'MR'的操作,将存储器中的信息输出
else
if (s == "MR" && clickable == true) {
if (memoryd != 0)
text.setText(Double.toString(memoryd));
if (memoryi != 0)
text.setText(Integer.toString(memoryi));
}
//'M+'的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器
else
if (s == "M+" && clickable == true) {
boolean isDot = false;
for (int i = 0; i < text.getText().length(); i++)
if ('.' == text.getText().charAt(i)) {
isDot = true;
break;
}
if (memoryi != 0) { //存储中是一个int型数
if (isDot == false) //被加数是一个int型数
memoryi += Integer.parseInt(text.getText());
else { //被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零贓熱俣阃歲匱阊邺镓騷。
memoryd = memoryi + Double.parseDouble(text.getText());坛摶乡囂忏蒌鍥铃氈淚。
memoryi = 0;
}
}
else
memoryd += Double.parseDouble(text.getText());
}
}
else
if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals("."))蜡變黲癟報伥铉锚鈰赘。
{ // text.setText("");
if (start)
text.setText(s);
else text.setText(text.getText() + s);
start = false;
}
else
{ if (start)
{ if (s.equals("-"))
{ text.setText(s); start = false; }
else op = s;
}
else
{
double x=Double.parseDouble(text.getText());
calculate(x);
op = s;
start = true;
}
}
}
public void calculate(double n)
{ if (op.equals("+")) arg += n;
else if (op.equals("-")) arg -= n;
else if (op.equals("*")) arg *= n;
else if (op.equals("/")) arg /= n;
else if (op.equals("=")) arg = n;
text.setText("" + arg);
}
private double arg = 0;
private String op = "=";
private boolean start = true;
public void itemStateChanged(ItemEvent e)
{
}
public static void main(String args[])
{
JFrame frame=new JFrame();
jisuanqi myMenu=new jisuanqi();
myMenu.init();
myMenu.setVisible(true);
}
}
- 14 -
展开阅读全文