java实验报告 计算器 记事本 井字游戏.docx
- 文档编号:24349813
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:51
- 大小:286.71KB
java实验报告 计算器 记事本 井字游戏.docx
《java实验报告 计算器 记事本 井字游戏.docx》由会员分享,可在线阅读,更多相关《java实验报告 计算器 记事本 井字游戏.docx(51页珍藏版)》请在冰豆网上搜索。
java实验报告计算器记事本井字游戏
课程设计报告
实验内容:
综合课程设计
相关课程:
Java程序设计
学期:
2009-2010学年第2学期
学时学分:
48学时3学分
专业班级:
xxxxxxxx
学 号:
xxxxxxxxxxx
姓 名:
xxxxxxx
指导老师:
xxx
提交日期:
xxxx年xx月xx日
题目JAVA课程设计
一、实验目的
通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。
信科0821班学生的课程设计主要是Java语言程序设计的实现。
通过该课程设计,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。
二、实验环境
硬件环境CPU:
AMD5000+双核主板:
华硕M2N-X显示器:
1024x768/256色
操作系统:
WindowsXP;JDK:
jdk-6u18-windows-i586;
运行环境以及调试软件:
JCreatorPro
三、实验内容
内容一:
设计一个计算器,利用它可以进行简单的四则运算(加、减、乘、除、开方)等,但仅限于十进制下,此外还可以进行(八进制,十进制,十六进制)之间的相互转换。
内容二:
设计一个记事本,菜单中要求有文件,编辑,和帮助。
文件中有新建、打开、保存和退出;编辑中有剪切、复制和粘贴;帮助中显示开发人和版本信息。
内容三:
编写tic-tac-toe游戏程序。
即3*3的9个方格子,每人下一次看谁先连成一行3个
四、算法分析、设计与描述
1.算法分析和设计
内容
(1)
算法分析:
首先,设计对输入数字的进行转换,不进行转换操作则默认为十进制,然后进行符号转换操作以及正弦函数等,接着可以进行加减乘除等运算,添加“C”、“CE”按钮进行退格和清空操作,清空操作显示“0”,最后在帮助中显示开发人信息。
功能及界面设计:
功能1:
按下数字键在液晶平上会显示数字,这时计算器最基本的功能。
功能2:
输入数字后,点击进制转换,可转换成二、八进制;按“exp”“log”键,则进行e次幂运算和自然对数运算;按“tan”“cos”“sin”则进行三角函数运算。
功能3:
按“+”“-”“*”“/”分别进行四则运算
功能4:
在任何时候按下“+/-”键,计算器文本框上的数字置反号。
功能5:
第一次按下“运算”键,再按下数字键,将重新输入第二个数字。
再次按下“运算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。
功能6:
按下“C”键向前退格,按下“CE”键,数据被全部清除
功能7:
按下“帮助”键查看制作人信息
功能8:
按下“选项”键,点“退出”键退出
计算器面板设计
选项
进制转换
帮助
(输出区域)
sqrt
+/-
exp
C
CE
7
8
9
log
/
4
5
6
tan
*
1
2
3
cos
-
0
.
=
sin
+
算法描述
内容
(2)
算法分析:
此程序应当符合大众化,因为记事本是一个常用程序,因此我们常用计算机系统带的记事本进行设计本程序,其功能有以下几个方面:
(1)“菜单”中有“文件”,“编辑”,“帮助”三个主菜单。
(2)“文件”中有“新建”,“打开”,“保存”,“退出”四个子菜单:
分别用于新建文件,打开文件,保存文件,退出记事本。
(3)“编辑”中有“剪切”,“复制”,“粘贴”三个子菜单:
用于剪切文字,复制文字,粘贴文字。
(4)“帮助”菜单中有“关于”用来显示作者信息
记事本面板设计:
文件
编辑
帮助
(文本区)
内容(3)
算法分析:
1初始化游戏,2检查棋子是否布满游戏格局,格局被布满则进行赢者判断,没布满则“X”下棋,3再次检查游戏格局是否被棋子布满,没布满则轮到“O”下棋,且跳到步骤2,若布满格局则进行赢者判断
算法描叙:
五、程序设计
1.程序设计的基本思路
内容
(1):
计算结果显示区设计
privateJTextFielddisplayField
保存+,-,*,/,=命令
privateStringlastCommand
保存计算结果
privatedoubleresult
判断是否为数字的开始
privatebooleanstart
设置布局、为按钮注册事件监听器
publicCalculator()
调用成员方法添加菜单
this.addmyMenu()
按钮的单击事件处理方法
publicvoidactionPerformed(ActionEvente)
退格键的实现方法
if(input.equals("C")){if(str.length()>0)
displayField.setText(str.substring(0,str.length()-1));//
清零键的实现方法
input.equals("CE")
displayField.setText("0");
start=true;
内容
(2):
使用的包如下:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
为按钮添加行为监听器:
ActionListener
为按钮添加键盘适配器:
KeyListener
菜单设计:
JMenuBarmbar;
JMenumnuFile,mnuEdit,mnuHelp;
JMenuItemfileNew,fileOpen,fileSave,fileExit;
JMenuItemeditCut,editCopy,editPaste,editSelectAll,editDel;
JMenuItemhelpAbout;
JToolBartlbr;
ImageIconiconNew,iconOpen,iconSave;
ImageIconiconCut,iconCopy,iconPaste;
JButtonbttnNew,bttnOpen,bttnSave;
JButtonbttnCut,bttnCopy,bttnPaste;
打开异常处理:
catch(Exceptionex)
{
JOptionPane.showMessageDialog
(
this,
ex.getMessage(),
"打开失败",
JOptionPane.ERROR_MESSAGE
);
}
退出异常处理:
if(txtChanged)
{
intres;
res=JOptionPane.showConfirmDialog
(
this,
"保存更改?
",
"退出",
JOptionPane.YES_NO_CANCEL_OPTION
);
if(res==JOptionPane.YES_OPTION)
{
saveFile();
}
elseif(res==JOptionPane.CANCEL_OPTION)
{
return;
}
内容(3)
创建并且初始化盘区单位
privatecharwhoseTurn='X';
创建并且初始化状态标签
privateCell[][]cells=newCell[3][3];
privateJLabeljlblStatus=newJLabel("X'sturntoplay");
确认玩家顺序
publicTicTacToe(){
JPanelp=newJPanel(newGridLayout(3,3,0,0));
for(inti=0;i<3;i++)
for(intj=0;j<3;j++)
p.add(cells[i][j]=newCell());
判断盘区单位全部是否被棋子占领
publicbooleanisFull(){
for(inti=0;i<3;i++)
for(intj=0;j<3;j++)
if(cells[i][j].getToken()=='')
returnfalse;
returntrue;
}
判断有指定的象征的玩家胜利
publicbooleanisWon(chartoken){
for(inti=0;i<3;i++)
if((cells[i][0].getToken()==token)
&&(cells[i][1].getToken()==token)
&&(cells[i][2].getToken()==token)){
returntrue;
}
for(intj=0;j<3;j++)
if((cells[0][j].getToken()==token)
&&(cells[1][j].getToken()==token)
&&(cells[2][j].getToken()==token)){
returntrue;
}
if((cells[0][0].getToken()==token)
&&(cells[1][1].getToken()==token)
&&(cells[2][2].getToken()==token)){
returntrue;
}
if((cells[0][2].getToken()==token)
&&(cells[1][1].getToken()==token)
&&(cells[2][0].getToken()==token)){
returntrue;
}
returnfalse;
}
2.程序代码
内容
(1):
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsFrameimplementsActionListener,WindowListener
{
privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFielddisplayField;//计算结果显示区
privateStringlastCommand;//保存+,-,*,/,=命令0
privatedoubleresult;//保存计算结果
privatebooleanstart;//判断是否为数字的开始
privateJMenuBarmenubar;
privateJMenuItemm_exit,m2_ejz,m2_bjz;
privateDialogdialog;
privateLabellabel_dialog;
privateJButtonbutton_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,
button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,
button_plus,button_minus,button_multiply,button_divide,button_point,
button_equal,button_log,button_tan,button_cos,button_sin,button_exp;
publicCalculator()//构造方法设置布局、为按钮注册事件监听器
{
super("Calculator");
this.setLocation(240,200);
this.setSize(350,300);
this.setResizable(true);
this.setLayout(newGridLayout(7,1));
this.addmyMenu();//调用成员方法添加菜单
displayField=newJTextField(30);
this.add(displayField);
displayField.setEditable(true);
start=true;
result=0;
lastCommand="=";
JPanelpanel0=newJPanel();
panel0.setLayout(newGridLayout(1,4,4,4));
JPanelpanel1=newJPanel();
panel1.setLayout(newGridLayout(1,5,4,4));
this.add(panel1);
button_sqrt=newJButton("sqrt");
button_plusminus=newJButton("+/-");
button_exp=newJButton("exp");
button_CE=newJButton("C");
button_cancel=newJButton("CE");
JPanelpanel2=newJPanel();
panel2.setLayout(newGridLayout(1,5,4,4));
this.add(panel2);
button_7=newJButton("7");
button_8=newJButton("8");
button_9=newJButton("9");
button_log=newJButton("log");
button_divide=newJButton("/");
JPanelpanel3=newJPanel();
panel3.setLayout(newGridLayout(1,5,4,4));
this.add(panel3);
button_4=newJButton("4");
button_5=newJButton("5");
button_6=newJButton("6");
button_tan=newJButton("tan");
button_multiply=newJButton("*");
JPanelpanel4=newJPanel();
panel4.setLayout(newGridLayout(1,5,4,4));
this.add(panel4);
button_1=newJButton("1");
button_2=newJButton("2");
button_3=newJButton("3");
button_cos=newJButton("cos");
button_minus=newJButton("-");
JPanelpanel5=newJPanel();
panel5.setLayout(newGridLayout(1,5,4,4));
this.add(panel5);
button_0=newJButton("0");
button_point=newJButton(".");
button_equal=newJButton("=");
button_sin=newJButton("sin");
button_plus=newJButton("+");
panel1.add(button_sqrt);
panel1.add(button_plusminus);
panel1.add(button_exp);
panel1.add(button_CE);
panel1.add(button_cancel);
panel2.add(button_7);
panel2.add(button_8);
panel2.add(button_9);
panel2.add(button_log);
panel2.add(button_divide);
panel3.add(button_4);
panel3.add(button_5);
panel3.add(button_6);
panel3.add(button_tan);
panel3.add(button_multiply);
panel4.add(button_1);
panel4.add(button_2);
panel4.add(button_3);
panel4.add(button_cos);
panel4.add(button_minus);
panel5.add(button_0);
panel5.add(button_point);
panel5.add(button_equal);
panel5.add(button_sin);
panel5.add(button_plus);
button_sqrt.addActionListener(this);
button_plusminus.addActionListener(this);
button_exp.addActionListener(this);
button_CE.addActionListener(this);
button_cancel.addActionListener(this);
button_7.addActionListener(this);
button_8.addActionListener(this);
button_9.addActionListener(this);
button_log.addActionListener(this);
button_divide.addActionListener(this);
button_4.addActionListener(this);
button_5.addActionListener(this);
button_6.addActionListener(this);
button_tan.addActionListener(this);
button_multiply.addActionListener(this);
button_1.addActionListener(this);
button_2.addActionListener(this);
button_3.addActionListener(this);
button_cos.addActionListener(this);
button_minus.addActionListener(this);
button_0.addActionListener(this);
button_point.addActionListener(this);
button_equal.addActionListener(this);
button_sin.addActionListener(this);
button_plus.addActionListener(this);
this.addWindowListener(newWinClose());//注册窗口监听器
this.setVisible(true);
}
privatevoidaddmyMenu()//菜单的添加
{
JMenuBarmenubar=newJMenuBar();
this.add(menubar);
JMenum1=newJMenu("选项");
JMenum2=newJMenu("进制转换");
JMenuItemm1_exit=newJMenuItem("退出");
m1_exit.addActionListener(this);
JMenuItemm2_ejz=newJMenuItem("二进制");
m2_ejz.addActionListener(this);
JMenuItemm2_bjz=newJMenuItem("八进制");
m2_bjz.addActionListener(this);
JMenum3=newJMenu("帮助");
JMenuItemm3_Help=newJMenuItem("作者");
m3_Help.addActionListener(this);
dialog=newDialog(this,"关于",true);//模式窗口
dialog.setSize(240,80);
label_dialog=newLabel("",Label.CENTER);//标签的字符串为空,居中对齐
dialog.add(label_dialog);
dialog.addWindowListener(this);//为对话框注册窗口事件监听器
m1.add(m1_exit);
menubar.add(m1);
m2.add(m2_ejz);
m2.add(m2_bjz);
menubar.add(m2);
m3.add(m3_Help);
menubar.add(m3);}
publicvoidactionPerformed(ActionEvente)//按钮的单击事件处理方法
{
if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||
e.getSource().equals(button_3)||e.getSource().equals(button_4)||
e.getSource().equals(button_5)||e.getSource().equals(button_6)||
e.getSource
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java实验报告 计算器 记事本 井字游戏 java 实验 报告 游戏