《Java语言程序设计》课程设计.docx

上传人:b****2 文档编号:2840481 上传时间:2023-05-04 格式:DOCX 页数:29 大小:62.63KB
下载 相关 举报
《Java语言程序设计》课程设计.docx_第1页
第1页 / 共29页
《Java语言程序设计》课程设计.docx_第2页
第2页 / 共29页
《Java语言程序设计》课程设计.docx_第3页
第3页 / 共29页
《Java语言程序设计》课程设计.docx_第4页
第4页 / 共29页
《Java语言程序设计》课程设计.docx_第5页
第5页 / 共29页
《Java语言程序设计》课程设计.docx_第6页
第6页 / 共29页
《Java语言程序设计》课程设计.docx_第7页
第7页 / 共29页
《Java语言程序设计》课程设计.docx_第8页
第8页 / 共29页
《Java语言程序设计》课程设计.docx_第9页
第9页 / 共29页
《Java语言程序设计》课程设计.docx_第10页
第10页 / 共29页
《Java语言程序设计》课程设计.docx_第11页
第11页 / 共29页
《Java语言程序设计》课程设计.docx_第12页
第12页 / 共29页
《Java语言程序设计》课程设计.docx_第13页
第13页 / 共29页
《Java语言程序设计》课程设计.docx_第14页
第14页 / 共29页
《Java语言程序设计》课程设计.docx_第15页
第15页 / 共29页
《Java语言程序设计》课程设计.docx_第16页
第16页 / 共29页
《Java语言程序设计》课程设计.docx_第17页
第17页 / 共29页
《Java语言程序设计》课程设计.docx_第18页
第18页 / 共29页
《Java语言程序设计》课程设计.docx_第19页
第19页 / 共29页
《Java语言程序设计》课程设计.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《Java语言程序设计》课程设计.docx

《《Java语言程序设计》课程设计.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计》课程设计.docx(29页珍藏版)》请在冰点文库上搜索。

《Java语言程序设计》课程设计.docx

《Java语言程序设计》课程设计

黑龙江科技学院

计算机与信息工程学院

《Java语言程序设计》

课程设计报告

 

姓名:

班级:

指导教师:

 

2010年7月7日

课程设计综合成绩评定

设计题目一:

计算器程序

设计题目二:

记事本程序

考核项目

分值

A

C

得分

设计情况(共70分)

设计工作量与难度

20

设计工作量大与设计有一定难度

设计工作量与难度一般,基本达到了要求

设计

方案

15

设计方案正确、合理

设计方案较正确、基本合理,但不是最优

设计完成情况

35

完成了选题的设计内容,设计功能完整,相关算法设计正确,程序结果正确、直观性好

基本完成了选题的设计内容及主要选题功能,相关算法设计基本正确,程序结果正确

设计报告(共15分)

报告组织结构及内容

10

内容组织及结构合理、内容充实、层次清晰、图表得当

内容组织及结构较合理、内容较充实、层次较清晰、图表应用基本得当

报告排版格式

5

格式规范,完全符合要求

格式基本规范,基本符合要求

设计态度

(共15分)

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

JButton

清空按钮

plus,jian,cheng,

chu,equ,bfh

JButton

运算符按钮

b[]

JButton

按钮数组

m

int

数组下标

arg

int

存储输入的第一个数

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);

tf.setText(s+".");

op="=";

}

}

如果第一次输入数字,则文本框显示数字+“.”,并将flag置为false,若在输入数字加在第一次输入内容之后,将数字保存在arg变量中。

⑵按下运算符之后,将运算符保存在fh变量中,并设置变量op的值。

⑶按下等号后调用calculate()方法计算。

publicvoidcalculate(intn)

{

System.out.println(n);

if(fh.equals("+"))arg+=n;

elseif(fh.equals("-"))arg-=n;

elseif(fh.equals("*"))arg*=n;

elseif(fh.equals("%"))arg%=n;

elseif(fh.equals("="))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

a=s1.charAt(m);

tf.setText(tf.getText()+a);

if(m==s1.length()-2){

tf.setText(tf.getText()+".");

}

}

a=s1.charAt(m);返回第m位置的字符串。

main()方法:

创建Calculator类对象,调用disp()方法。

2.4代码实现

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

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;//保存中间运算符的字符型变量

booleanflag=true;//第一次输入

Stringop="=";

publicvoiddisp(){

f=newJFrame("简易计算器");

f.setBounds(400,300,220,240);//窗体的大小以及位置

f.setLayout(newFlowLayout());//流式布局

f.setResizable(false);//固定窗体的大小

tf=newJTextField(16);

tf.setText("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!

=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;

}

}

//右侧面板放置运算符按钮

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()//关闭窗口

{

publicvoidwindowClosing(WindowEvente)

{

System.exit

(1);

}

}

);

f.setVisible(true);

}

publicvoidactionPerformed(ActionEvente){

Strings=e.getActionCommand();

Stringtext1=tf.getText();

Stringtext=text1.substring(0,text1.length()-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);

tf.setText(s+".");

op="=";

}

}

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){//清空

tf.setText("0.");

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;m

a=s1.charAt(m);

tf.setText(tf.getText()+a);

if(m==s1.length()-2){

tf.setText(tf.getText()+".");

}

}

}

else{

tf.setText("0.");

}

}

}

publicvoidcalculate(intn)

{

System.out.println(n);

if(fh.equals("+"))arg+=n;

elseif(fh.equals("-"))arg-=n;

elseif(fh.equals("*"))arg*=n;

elseif(fh.equals("%"))arg%=n;

elseif(fh.equals("="))arg=n;

tf.setText(""+arg+".");

if(fh.equals("/"))

{

t=(double)arg/n;

tf.setText(""+t);

}

}

publicstaticvoidmain(Stringargs[]){

Calculatorcal=newCalculator();

cal.disp();//调用disp()方法

}

}

 

2.5程序运行与发布

在Eclipse集成环境中,直接运行Calculator主类,即可执行日历记事本程序,程序运行结果如图所示:

计算器程序界面

 

一、设计内容

设计记事本程序,实现新建、打开、保存、复制、粘贴、设置字体等功能。

二、设计过程

2.1需求分析

所设计的记事本程序在窗体中添加了菜单条、工具栏,用工具栏实现快速打开、保存等功能。

在编辑菜单下有复制、剪切、粘贴功能。

2.2概要设计

1.类中的主要成员变量及其属性如下:

名称

变量类型

成员变量描述

jta

JTextArea

文本域

jmb

JMenuBar

菜单条

jmf,jme,jmg

JMenu

文件、编辑、格式

jmin,jmio,jmis,

copy,cut,paste

JMenuItem

新建、打开、保存、复制、剪切、粘贴

jcuti1,jxieti1

JCheckBoxMenuItem

粗体、斜体

2.方法

名称

功能

备注

TextEdit

创建窗口

构造方法

actionPerformed

处理ActionEvent事件

接口方法

windowClosing

关闭窗体

成员方法

main

程序入口

主方法

2.3详细设计

引入包:

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

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按钮)。

⑷打开、保存事件,先创建对象,然后用读写方法从文件中读取数据或将数据写入文件,最后关闭数据流。

构造方法:

在方法中为各个组件注册监听器。

2.4代码实现

importjava.io.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2