java课设.docx
《java课设.docx》由会员分享,可在线阅读,更多相关《java课设.docx(21页珍藏版)》请在冰豆网上搜索。
java课设
辽宁工业大学
JAVA程序设计课程设计(论文)
题目:
计算器
院(系):
专业班级:
学号:
学生姓名:
指导教师:
教师职称:
起止时间:
2008.12.22至2009.1.2
程序设计专题(报告)任务及评语
院(系):
软件学院教研室:
软件教研窒
学号
学生姓名
专业班级
程序设计(报告)题目
计算器
程序设计(报告)任务
程序设计专题的任务与要求:
(1)掌握Java编程、面向对象的基础知识。
(2)较熟练地编写Java应用程序Application。
(3)了解Java的常用标准类库、编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2009年1月5日
目录
第1章课程设计的目的与要求1
1.1课程设计目的1
1.2课程设计的实验环境1
1.3课程设计的预备知识1
1.4课程设计要求1
第2章课程设计内容2
2.1课程设计主要内容2
2.2概要设计2
2.2.1自定义类说明2
2.3详细设计4
2.4测试分析4
2.4.1程序运行情况17
2.4.2程序异常处理18
第3章课程设计总结20
参考资料21
第1章课程设计的目的与要求
1.1课程设计目的
《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2课程设计的实验环境
硬件要求能运行Windows9.X操作系统的微机系统。
JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.3课程设计的预备知识
熟悉JAVA语言及ECLIPSE开发工具。
1.4课程设计要求
按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章课程设计内容
2.1课程设计主要内容
本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,backspace表示退格,CE表示初始化,MS表示存储显示栏中的数字(显示左端出现m),MC表示清除存储的数字(存数变0,m消失),MR表示在显示栏中显示存储的数字,M+表示将显示栏中的数字加到存储的数字。
在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。
本系统采用了awt包,程序实现了文本编辑器的基本功能有:
打开文件,文件保存,文件另存为,退出,信息,查找,复制,剪切,粘贴,文字颜色,设置字体,设置字形,设置字号大小,该编辑器在技术上没有实现将文本以不同的颜色显示的功能。
Java程序编辑器是:
图形界面,线程,流与文件等技术的综合应用。
文本编辑区选用TextArea作为主要的部件。
文件操作的实现:
利用字符文件流readFromFile和writeToFile方法来实现。
由于java的特性,可能用任何一个编辑器来编辑,于是就将windows记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。
在设计类的时候考虑简单明了,就设计了一个主类和默认属性类做为程序的整体框架,所有的对象和方法是在默认属性类中创建和实现的。
2.2概要设计
2.2.1自定义类说明
(1)类名:
d*
作用:
自定义的异常类,用来处理计算结果溢出*
继承的父类:
Frame类*
实现的接口:
没有*
(2)成员变量见表1
表1Myd成员变量
成员变量描述
变量类型
名称
文件
File
File
文本区
JTextArea
Textarea
单选按钮菜单项
JRadioButtonMenuItem
Rbmi_red,rbmi_blue,rbmi_green,
rbmi_pink,rbmi_yellow
菜单项
JMenuItem
menuitem_copy,menuitem_cut,
menuitem_paste,menuitem_seek
字体菜单项
JMenuItem
menuitem_song,menuitem_fang
menuitem_hua,menuitem_kai
字形菜单项
JMenuItem
menuitem_normal,
menuitem_bold,
menuitem_italic
字号菜单项
JMenuItem
menuitem_20,menuitem_30,
menuitem_40,menuitem_50,
菜单
JMenuItem
menuitem_exit,menuitem_infor
快捷菜单
JPopupMenu
Popupmenu
颜色菜单项
JMenuItem
menuitem_red,menuitem_green,
menuitem_blue,menuitem_pink
menuitem_yellow
对话框
JDialog
Dialog,dialog1
对话框按钮
JButton
Button_seek
查找文本条
JTextArea
Textfield_seek
标签
JLabel
Label_seek,label_infor
文件名
String
Seek
(3)方法见表2
表2Myd方法
方法名
功能
备注
Myd
创建文本编辑器
构造方法
Dialog
创建对话框
Dialog1
创建对话框1
addMenu
添加菜单栏菜单项
writeToFile
向文本区写文件
readFromFile
读文件
openDialog
打开文件
saveDialog
保存对话框
actionPerformed
事件处理
itemStateChanged
ItemListener事件处理方法
mouseClicked
鼠标处理事件
接口方法
mouseEvent
鼠标处理事件
接口方法
mouseReleased
鼠标处理事件
接口方法
mouseEntered
鼠标处理事件
接口方法
mouseExit
鼠标处理事件
接口方法
mouseDragged
鼠标处理事件
接口方法
Main
程序开始运行
2.3详细设计
importjava.awt.*;
importjava.awt.event.*;
importjava.lang.*;
importjavax.swing.*;
publicclassdextendsFrame
{
//声明三个面板的布局
GridLayoutgl1,gl2,gl3;
Panelp0,p1,p2,p3;
JTextFieldtf1;
TextFieldtf2;
Buttonb0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBufferstr;//显示屏所显示的字符串
doublex,y;//x和y都是运算数
intz;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"
staticdoublem;//记忆的数字
publicd()
{
gl1=newGridLayout(1,4,10,0);//实例化三个面板的布局
gl2=newGridLayout(4,1,0,15);
gl3=newGridLayout(4,5,10,15);
tf1=newJTextField(27);//显示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0");
tf2=newTextField(10);//显示记忆的索引值
tf2.setEditable(false);
//实例化所有按钮、设置其前景色并注册监听器
b0=newButton("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(newBt());
b1=newButton("CE");
b1.setForeground(Color.red);
b1.addActionListener(newBt());
b2=newButton("C");
b2.setForeground(Color.red);
b2.addActionListener(newBt());
b3=newButton("MC");
b3.setForeground(Color.red);
b3.addActionListener(newBt());
b4=newButton("MR");
b4.setForeground(Color.red);
b4.addActionListener(newBt());
b5=newButton("MS");
b5.setForeground(Color.red);
b5.addActionListener(newBt());
b6=newButton("M+");
b6.setForeground(Color.red);
b6.addActionListener(newBt());
b7=newButton("7");
b7.setForeground(Color.blue);
b7.addActionListener(newBt());
b8=newButton("8");
b8.setForeground(Color.blue);
b8.addActionListener(newBt());
b9=newButton("9");
b9.setForeground(Color.blue);
b9.addActionListener(newBt());
b10=newButton("/");
b10.setForeground(Color.red);
b10.addActionListener(newBt());
b11=newButton("sqrt");
b11.setForeground(Color.blue);
b11.addActionListener(newBt());
b12=newButton("4");
b12.setForeground(Color.blue);
b12.addActionListener(newBt());
b13=newButton("5");
b13.setForeground(Color.blue);
b13.addActionListener(newBt());
b14=newButton("6");
b14.setForeground(Color.blue);
b14.addActionListener(newBt());
b15=newButton("*");
b15.setForeground(Color.red);
b15.addActionListener(newBt());
b16=newButton("%");
b16.setForeground(Color.blue);
b16.addActionListener(newBt());
b17=newButton("1");
b17.setForeground(Color.blue);
b17.addActionListener(newBt());
b18=newButton("2");
b18.setForeground(Color.blue);
b18.addActionListener(newBt());
b19=newButton("3");
b19.setForeground(Color.blue);
b19.addActionListener(newBt());
b20=newButton("-");
b20.setForeground(Color.red);
b20.addActionListener(newBt());
b21=newButton("1/X");
b21.setForeground(Color.blue);
b21.addActionListener(newBt());
b22=newButton("0");
b22.setForeground(Color.blue);
b22.addActionListener(newBt());
b23=newButton("+/-");
b23.setForeground(Color.blue);
b23.addActionListener(newBt());
b24=newButton(".");
b24.setForeground(Color.blue);
b24.addActionListener(newBt());
b25=newButton("+");
b25.setForeground(Color.red);
b25.addActionListener(newBt());
b26=newButton("=");
b26.setForeground(Color.red);
b26.addActionListener(newBt());
//实例化四个面板
p0=newPanel();
p1=newPanel();
p2=newPanel();
p3=newPanel();
//创建一个空字符串缓冲区
str=newStringBuffer();
//添加面板p0中的组件和设置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的组件和设置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的组件并设置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的组件并设置其在框架中的位置和大小
p3.setLayout(gl3);//设置p3的布局
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);
p3.setBounds(60,110,250,150);
//设置框架中的布局为空布局并添加4个面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止调整框架的大小
//匿名类关闭窗口
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//构造监听器
classBtimplementsActionListener
{
publicvoidactionPerformed(ActionEvente2)
{
try{
if(e2.getSource()==b1)//选择"CE"清零
{
tf1.setText("0");//把显示屏清零
str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数
}
elseif(e2.getSource()==b2)//选择"C"清零
{
tf1.setText("0");//把显示屏清零
str.setLength(0);
}
elseif(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
elseif(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空缓冲区以便接收新的另一个运算数
y=0d;
z=0;
}
elseif(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
elseif(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
elseif(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
elseif(e2.getSource()==b26)//单击等号按钮输出计算结果
{
str.setLength(0);
switch(z)
{
case0:
tf1.setText(""+(x+y));break;
case1:
tf1.setText(""+(x-y));break;
case2:
tf1.setText(""+(x*y));break;
case3:
tf1.setText(""+(x/y));break;
}
}
elseif(e2.getSource()==b24)//单击"."按钮输入小数
{
if(tf1.getText().trim().indexOf('.')!
=-1)//判断字符串中是否已经包含了小数点
{
}
else//如果没数点有小
{
if(tf1.getText().trim().equals("0"))//如果初时显示为0
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
elseif(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}
y=0d;
}
elseif(e2.getSource()==b11)//求平方根
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText("数字格式异常");
if(x<0)
tf1.setText("负数没有平方根");
else
tf1.setText(""+Math.sqrt(x));
str.setLength(0);
y=0d;
}
elseif(e2.getSource()==b16)//单击了"%"按钮
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(0.01*x));
str.setLength(0);
y=0d;
}
elseif(e2.getSource()==b21)//单击了"1/X"按钮
{
x=Double.parseDouble(tf1.getText().trim());
if(x==0)
{
tf1.setText("除数不能为零"