java简单计算器开发GUI图形化界面设计与实现

1.1. 课程性质

JAVA 程序设计是计算机专业本科生的必修专业主干课程,授课对象为计算

机科学与技术专业、数字媒体技术、信息安全专业等相关专业的本科生。

课程全面、系统地介绍 JAVA 语言的基本知识及程序设计技术,使学生掌握

Java 语言的语法、数据类型、流程控制等基本知识和面向对象程序设计思想的

Java 实现;了解 Java 常用的系统类;学习异常处理、线程、图形用户界面设计、

网络通信等内容。使学生的专业知识进一步完善和丰富,为将来的开发和研究工

作打下一定的基础。

1.2. 课程任务

(1) 巩固和加深学生对 Java 语言课程的基本知识的理解和掌握;

(2) 掌握 Java 语言编程和程序调试的基本技能;

(3) 利用 Java 语言进行基本的程序设计;

(4) 掌握书写程序设计说明文档的能力;

(5) 提高运用 Java 语言解决实际问题的能力。

2. 课程设计要求

编写一个计算器,可实现加减乘除等一系列运算。

编程要求:选择某一种运算后,根据输入的数据给出运算结果。

编程提示:在设计出的计算器界面上,通过按钮来实现基本的功能。

3. 课程设计内容

3.1. 选题描述

使用图形用户界面,设计计算器,用户通过鼠标依次输入需要计算的数值,

点击相应计算功能按钮,可以完成以下功能:

按键功能

±同时做“加减”运算

=等号键

%取余键,做“取余”运算

+-*/做“和差积商”运算

sqrt平方根

in反向

cos余弦

sin正弦

CE清除键,清除当前输入的数据或符号

3.2. 画出流程图

(1) 核心功能流程图


3.3. 题目设计 (代码)

public classCalculator extendsMouseAdapter {

JFrame list;

// Container con;

JTextField show;

JButton[] jbNum= newJButton[10];

JPanel jpMain; // 主面板

JPanel jpRight; // 右子面板主要用于存放运算符和等号

JPanel jpLight; // 左子面板用于存放数字,符号, “.”

JButton dight; // 小数点

JButton sign; // 正负号

JButton add; // 加号

JButton sub; // 减号

JButton multiply; // 乘号

JButton divide; // 除号

JButton power; // 求幂

JButton cos; // cos

JButton sin; // sin

JButton ln; // ln

JButton ce; // 清除

JButton equal; // 等于

JButton mod; // 取余

JButton sqrt; // sqrt

double sum= 0; // 临时结果

boolean b= false; // 监控运算符是否被点击,错误是否出现,用于实现下一次点击按钮时清空

operator i= operator.un; // 记录等号符点击前某一运算符点击次数,用于实现连加或者连减等

int op; // 记录操作符

// 操作符一包括+-*/%^

enumoperator {

addsubmuldivmodpowsincossqrtlnun

}

voiddisplay() {

// 创建主窗口,添加一个Text框,

list= newJFrame("计算器");

list.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

list.setSize(360, 230);

list.setLocation(400, 300);

list.setBackground(Color.LIGHT_GRAY); // 设置窗口背景颜色

list.setResizable(false);

list.setLayout(newFlowLayout(FlowLayout.CENTER));

show= newJTextField(31);

show.setHorizontalAlignment(JTextField.RIGHT); // 文本框内文字右对齐

show.setEditable(false); // 文本框不可编辑

list.add(show);

// 创建面板并设置布局

jpMain= newJPanel();

jpRight= newJPanel();

jpLight= newJPanel();

jpMain.setLayout(newGridLayout(1, 2));

jpRight.setLayout(newGridLayout(4, 3, 3, 3));

jpLight.setLayout(newGridLayout(4, 3, 3, 3));

list.add(jpMain);

jpMain.add(jpLight);

jpMain.add(jpRight);

// 创建0~9按钮对象

for(int i= 9; i>= 0; i--) {

jbNum[i] = newJButton(String.valueOf(i));

jbNum[i].setForeground(Color.BLUE);

jpLight.add(jbNum[i]);

jbNum[i].addMouseListener(this);

}

add= newJButton("+");

sub= newJButton("-");

multiply= newJButton("*");

divide= newJButton("/");

power= newJButton("x^y");

sin= newJButton("sin");

cos= newJButton("cos");

ln= newJButton("ln");

ce= newJButton("CE");

equal= newJButton("=");

mod= newJButton("%");

sqrt= newJButton("sqrt");

jpRight.add(divide);

jpRight.add(sqrt);

jpRight.add(ln);

jpRight.add(multiply);

jpRight.add(sin);

jpRight.add(mod);

jpRight.add(sub);

jpRight.add(cos);

jpRight.add(ce);

jpRight.add(add);

jpRight.add(power);

jpRight.add(equal);

// 给所有按钮注册监听器

dight= newJButton(".");

sign= newJButton("±");

jpLight.add(sign);

jpLight.add(dight);

add.addMouseListener(this);

sub.addMouseListener(this);

multiply.addMouseListener(this);

divide.addMouseListener(this);

power.addMouseListener(this);

sin.addMouseListener(this);

cos.addMouseListener(this);

ln.addMouseListener(this);

ce.addMouseListener(this);

equal.addMouseListener(this);

mod.addMouseListener(this);

sqrt.addMouseListener(this);

dight.addMouseListener(this);

sign.addMouseListener(this);

list.setVisible(true);

}

3.4. 运行程序(结果截图)

(1) 运行界面


(2)加减乘除(+-*/)


(3)清除运算(CE)


(4)开平方根(sqrt)


(5)三角函数(sin\cos)


4. 总结

该文章分析了一个系统设计与实现,实际上就是让我们建立一个技术体现出来,最主要是要明白自己开发的这个程序它到底有哪些功能,这都是需要我们一开始就需要思考并且根据流程图来设计的。

为此,从题目上来讲,这个系统是需要JAVA一定基础及图形化界面的知识,但仅靠这两个是不行的,中间会运用到网页相关模块。而且开发这个系统我也需要去思考这个开发环境和开发的工具,我在做这个项目的时候,中途很多不会的技术需要自己去学习,比如运算符的实现,界面api函数的调用,都需要解决,经过网上资料的查阅,及同学的帮助。最终设计出一个比较完整的图形化GUI计算器系统。

5. 参考文献

[1]张墨华,张永强.Java程序设计[M].北京:清华大学出版社,.2021:123-124.

[2]贾素玲等编译.J2EE技术实践[M]. 高等教育出版社. 2018.

[3]柳永坡,刘雪梅,赵长海.JSP应用开发技术[M].北京:人民邮电出版, 2019.

[4]林帅,林雄.Java泛型研究[J]. 电脑开发与应用. 2018(03).


免费源码获得:扫码关注微信公众号:ancenok,然后回复:011

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容