《Java语言程序设计》课程设计Word文件下载.docx
《《Java语言程序设计》课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计》课程设计Word文件下载.docx(29页珍藏版)》请在冰点文库上搜索。
![《Java语言程序设计》课程设计Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/e930cd82-4ccf-4c62-ac00-5d0abcc9506e/e930cd82-4ccf-4c62-ac00-5d0abcc9506e1.gif)
格式规范,完全符合要求
格式基本规范,基本符合要求
设计态度
(共15分)
设计态度认真、积极
设计态度比较认真
综合得分
课程设计综合成绩(折合为优、良、中、及格与不及格计)
其它说明:
目录
一、设计内容2
二、设计过程2
2.1需求分析2
2.2概要设计2
2.3详细设计3
2.4代码实现5
2.5程序运行与发布10
一、设计内容11
二、设计过程11
2.1需求分析11
2.2概要设计11
2.3详细设计11
2.4代码实现12
2.5程序运行与发布18
三、总结19
四、参考文献19
一、设计内容
设计GUI界面的简易计算器。
通过框架、文本框、面板、按钮等组件的综合应用实现计算器的加、减、乘、除、取余等简单运算。
二、设计过程
2.1需求分析
所设计的GUI界面计算器是一个使用很方便的程序,能进行加、减、乘、除等运算。
通过设置“Back”按钮,方便删除输入的错误数字,还增加了清空“C”的按钮,方便快速进入下一轮的运算。
2.2概要设计
1.类中的主要成员变量及其属性如下:
名称
变量类型
成员变量描述
f
JFrame
框架
tf
JTextArea
输入输出文本框
bc
JButton
退格按钮
c
清空按钮
plus,jian,cheng,
chu,equ,bfh
运算符按钮
b[]
按钮数组
m
int
数组下标
arg
存储输入的第一个数
t
double
除法运算的结果
flag
boolean
第一次输入
fh
String
保存中间运算符的字符型变量
2.方法
功能
备注
actionPerformed
处理ActionEvent事件
接口方法
calculate
计算
成员方法
main
程序入口
主方法
2.3详细设计
引入包:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
字符串处理:
Stringtext=text1.substring(0,text1.length()-1);
提取下标为0之下标为text1.length()-2的字串
a=s1.charAt(m);
返回字符串第m位置的字符
创建Calculator类实现ActionListener接口:
publicclassCalculatorimplementsActionListener{};
首先声明各个对象,创建各个变量:
JFramef;
JTextFieldtf;
JButtonbc,c,plus,jian,cheng,chu,equ,bfh;
//按钮退格,清空,加,减,乘,除,等号,百分号
JButtonb[]=newJButton[10];
//按钮数组,数字键0~9
doublet;
//除法运算的结果
intm,arg;
//m数字按钮的下标,arg存储输入的第一个数
finalintslength=20;
//设置结果显示有效长度
Stringfh=null;
//保存中间运算符的字符型变量
Stringop="
="
;
booleanflag=true;
//第一次输入
界面设计:
在disp()方法中进行界面设计。
⑴创建标题为“简易计算器”的JFrame框架,采用FlowLayout布局方式,在窗体中添加tf文本框,f.add(tf);
⑵创建四个面板添加各个按钮,各个面板采用网格布局,用for循环控制数字按钮的添加,添加按钮使用内部方法add();
for(m=7;
i!
=11;
i++,m++)
{b[m]=newJButton(String.valueOf(m));
//创建数字按钮
pa2L.add(b[m]);
b[m].addActionListener(this);
if(i==3){
m=3;
}
if(i==6){
m=0;
if(i==9){
m=-1;
}
⑶为各个按钮注册监听器,addActionListener();
⑷单击JFrame框架上的关闭按钮时,JFrame会自动隐藏窗口,但没有真正关闭,窗口还在内存中;
所以继承WindowAdapter适配器类实现窗口的关闭;
f.addWindowListener(newWindowAdapter()//关闭窗口
{
publicvoidwindowClosing(WindowEvente)
{
System.exit
(1);
);
事件响应:
⑴if('
0'
<
=s.charAt(0)&
&
s.charAt(0)<
='
9'
)
if(flag){
tf.setText(s+"
."
);
flag=false;
else{
if(text.equals("
0"
)){
tf.setText(s+"
}else{
tf.setText(text+s+"
}
if(!
op.equals("
arg=Integer.parseInt(text);
System.out.println(arg);
op="
如果第一次输入数字,则文本框显示数字+“.”,并将flag置为false,若在输入数字加在第一次输入内容之后,将数字保存在arg变量中。
⑵按下运算符之后,将运算符保存在fh变量中,并设置变量op的值。
⑶按下等号后调用calculate()方法计算。
publicvoidcalculate(intn)
{
System.out.println(n);
if(fh.equals("
+"
))arg+=n;
elseif(fh.equals("
-"
))arg-=n;
*"
))arg*=n;
%"
))arg%=n;
))arg=n;
tf.setText("
"
+arg+"
if(fh.equals("
/"
))
t=(double)arg/n;
tf.setText("
+t);
}
}
⑷退格
s1=s1.substring(0,text1.length()-1);
提取小数点之前的所有数据。
用for循环实现退格操作,
for(m=0;
m<
s1.length()-1;
m++){//按一下,删除尾部一位
a=s1.charAt(m);
tf.setText(tf.getText()+a);
if(m==s1.length()-2){
tf.setText(tf.getText()+"
}
返回第m位置的字符串。
main()方法:
创建Calculator类对象,调用disp()方法。
2.4代码实现
publicclassCalculatorimplementsActionListener{
JFramef;
JButtonbc,c,plus,jian,cheng,chu,equ,bfh;
//退格,清空,加,减,乘,除,等号,百分号
JButtonb[]=newJButton[10];
doublet;
intm,arg;
finalintslength=20;
Stringfh=null;
booleanflag=true;
Stringop="
publicvoiddisp(){
f=newJFrame("
简易计算器"
f.setBounds(400,300,220,240);
//窗体的大小以及位置
f.setLayout(newFlowLayout());
//流式布局
f.setResizable(false);
//固定窗体的大小
tf=newJTextField(16);
0."
//设置文本框的初始值为0
tf.setHorizontalAlignment(SwingConstants.RIGHT);
//文本框内的数字右对齐
tf.setEditable(false);
//文本框为不可编辑
f.add(tf);
//放置一个面板用来放置Back,C按钮
Panelpa1=newPanel();
f.add(pa1);
pa1.setLayout(newGridLayout(1,2,5,5));
bc=newJButton("
Back"
bc.setForeground(Color.BLUE);
//设置字体颜色
pa1.add(bc);
c=newJButton("
C"
c.setForeground(Color.BLUE);
pa1.add(c);
Panelpa2=newPanel();
f.add(pa2);
pa2.setLayout(newGridLayout(1,2,1,1));
//网格布局
//左侧面板放置数字按钮
Panelpa2L=newPanel();
f.add(pa2L);
pa2L.setLayout(newGridLayout(4,3,3,3));
inti=1;
for(m=7;
i++,m++){
b[m]=newJButton(String.valueOf(m));
//右侧面板放置运算符按钮
Panelpa2R=newPanel();
f.add(pa2R);
pa2R.setLayout(newGridLayout(4,1,3,3));
plus=newJButton("
plus.setForeground(Color.RED);
jian=newJButton("
jian.setForeground(Color.RED);
cheng=newJButton("
cheng.setForeground(Color.RED);
chu=newJButton("
chu.setForeground(Color.RED);
equ=newJButton("
equ.setForeground(Color.RED);
bfh=newJButton("
bfh.setForeground(Color.RED);
pa2R.add(cheng);
pa2R.add(jian);
pa2R.add(plus);
pa2R.add(equ);
pa2L.add(bfh);
pa2L.add(chu);
bc.addActionListener(this);
c.addActionListener(this);
plus.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
equ.addActionListener(this);
bfh.addActionListener(this);
f.addWindowListener(newWindowAdapter()//关闭窗口
f.setVisible(true);
publicvoidactionPerformed(ActionEvente){
Strings=e.getActionCommand();
Stringtext1=tf.getText();
Stringtext=text1.substring(0,text1.length()-1);
if('
else{
elseif(e.getSource()==plus||e.getSource()==jian||e.getSource()==cheng||e.getSource()==chu||e.getSource()==bfh){
op=s;
fh=s;
elseif(e.getSource()==equ){
calculate(Integer.parseInt(text));
if(e.getSource()==c){//清空
flag=true;
elseif(e.getSource()==bc){//退格
Strings1=tf.getText();
s1=s1.substring(0,text1.length()-1);
chara=0;
if(s1.length()>
1){
tf.setText("
for(m=0;
publicstaticvoidmain(Stringargs[]){
Calculatorcal=newCalculator();
cal.disp();
//调用disp()方法
}
2.5程序运行与发布
在Eclipse集成环境中,直接运行Calculator主类,即可执行日历记事本程序,程序运行结果如图所示:
计算器程序界面
设计记事本程序,实现新建、打开、保存、复制、粘贴、设置字体等功能。
所设计的记事本程序在窗体中添加了菜单条、工具栏,用工具栏实现快速打开、保存等功能。
在编辑菜单下有复制、剪切、粘贴功能。
jta
文本域
jmb
JMenuBar
菜单条
jmf,jme,jmg
JMenu
文件、编辑、格式
jmin,jmio,jmis,
copy,cut,paste
JMenuItem
新建、打开、保存、复制、剪切、粘贴
jcuti1,jxieti1
JCheckBoxMenuItem
粗体、斜体
TextEdit
创建窗口
构造方法
windowClosing
关闭窗体
importjava.io.*;
创建TextEdit类实现各个接口:
publicclassCalculatorimplementsActionListener,
ItemListener,WindowListener{};
⑴初始化一个容器,Containerc=this.getContentPane();
不能直接Jframe上添加组件,必须先调用getContentPane()方法。
⑵创建JscrollPane对象jsp,JtextArea不具备滚动能力,但实现了javax.swing包中的javax.swing.ScrollPane接口,允许把它放在JscrollPane中从而实现JtextArea的滚动。
⑶向容器中添加菜单条、工具栏,分别在其中添加菜单项、复选菜单项以及按钮。
重写actionPerfored()方法,e.getSource()返回发生Event的对象,获得事件源。
⑴新建,将文本区内容设为空;
复制、剪切、粘贴分别调用javax.swing包中的方法。
⑵单击复选菜单项设置字体,实现ItemListener接口,重写itemStateChanged()方法,getState()返回复选菜单项的状态。
⑶关闭窗体,重写WindowListener接口中的方法,但其中六个方法的方法体为空。
创建确认对话框,intJOptionPane.showConfirmDialog(所属Jframe,要求确认内容,对话框标题,yes-no按钮)。
⑷打开、保存事件,先创建对象,然后用读写方法从文件中读取数据或将数据写入文件,最后关闭数据流。
构造方法:
在方法中为各个组件注册监听器。
importjava.io.*;
publicclassTextEditextendsJFrameimplementsActionListener,ItemListener,WindowListener
{
Containerc=this.getContentPane();
//初始化一个容器
JTextAreajta=newJTextArea("
简易记事本"
23,15);
JScrollPanejsp=newJScrollPane(jta);
//创建JScrollPane对象,并将jta放入JScrollPane
JMenuBarjmb=newJMenuBar();
JToolBarjToolBar=newJToolBar();
JButtonjButton1=newJButton("
打开"
JButtonjButton2=newJButton("
新建"
JButtonjButton3=newJButton("
保存"
JMenujmf=new