辽宁工程技术大学软件学院
面向对象程序设计课程设计报告
目
录
1. 设计内容...........................................................................................................................................1
2. 概要设计...........................................................................................................................................1
3. 自定义类及接口说明.......................................................................................................................1
4. 程序源码...........................................................................................................................................2
5. 程序运行与调试.............................................................................................................................16
6. 总结.................................................................................................................................................19
7. 参考文献.........................................................................................................................................19
辽宁工程技术大学软件学院
面向对象程序设计课程设计报告
1. 设计内容
设计一个 GUI 猜数字游戏程序该游戏可以由程序随机产生四个 0 到 9 之间的
整数,且不重复。玩游戏者通过由用户输入四个数字来匹配上面所产生的数字。
A 表示位置正确且数字正确,B 表示数字正确而位置不正确。
2. 概要设计
GUI 猜数字游戏需要由程序随机产生四个 0-9 之间不重复的数字,玩游戏者
通过用户界面输入四个数字来匹配上面所产生的数字,程序判断是否正确并给出
提示,A 表示位置正确且数字正确,B 表示数字正确而位置不正确。程序还有游
戏说明,警告提示等功能。关于 GUI 图形界面的实现,考虑到简单、实用、高效
等特点,就选择了 AWT 和 SWING 综合实现。
在 JAVA 程序中可以作为主界面的类主要有两个,一种是简单的容器类,一
种是叫做框架的窗口类(即 JFrame 类)。考虑到 JFrame 类带有标题栏,窗口管
理按钮等其他窗口属性,所以使用 JFrame 框架类作为主界面。
在具体设计的时候,根据分了两个程序,一个为主程序 cai.java,所有的
对象和方法以及为各组件注册事件监听程序,对象的实例化及显示,都是在
cai.java 中创建和实现的;另一个为 ccai.java,用于实现游戏规则窗口。
3. 自定义类及接口说明
类名:cai;ccai
父类:JFrame
作用:实例化对象
//定义和创建各按钮
//定义和创建主菜单
主要成员变量:
JButton[] btn
MenuBar menuBar
Menu file
MenuItem k
MenuItem q
MenuItem t
Menu help
//定义和创建主菜单中的文件选项
//创建菜单选项中的开始游戏
//创建菜单选项中的重新开始
//创建菜单选项中的退出游戏
//定义和创建主菜单中的帮助选项
辽宁工程技术大学软件学院
面向对象程序设计课程设计报告
//创建菜单选项中的游戏规则
//定义对话框和字体窗体中的文本行
//定义文本编辑区
//定义和创建标签
//设置字体对话框
//定义和创建面板
//定义和创建按钮
MenuItem y
JTextField field
JLabel inter
Dialog dialog
JPanel pp
JButton qq
TextArea test2
private String[] bnTexts
boolean iscaculate;
double num1,num2;
String type;
主要成员方法:
public void actionPerformed(ActionEvent e)
public void regListener()
public void button()
//定义string型的变量
//创建按键上的内容
//定义布尔类型的变量
//定义浮点型的变量
//完成具体游戏功能
//为菜单选项注册事件监听器
//为各个按钮注册事件监听器
4. 程序源码
cai.java 文件:
package javaapplication9;
import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
public class cai extends JFrame implements ActionListener{
private String[] bnTexts={"认输","确定","7","8","9","CE","4","5","6",
辽宁工程技术大学软件学院
面向对象程序设计课程设计报告
"C","1","2","3","0"};
JButton[] btn=new JButton[bnTexts.length];
boolean iscaculate;
double num1,num2;
String type;
MenuBar menuBar=new MenuBar();
Menu file=new Menu("文件");
MenuItem k=new MenuItem("开始游戏");
MenuItem q=new MenuItem("重新开始");
MenuItem t=new MenuItem("退出游戏");
Menu help=new Menu("帮助");
MenuItem y=new MenuItem("游戏规则");
JTextField field=new JTextField();
JLabel inter=new JLabel();
Dialog dialog=new Dialog(this, "游戏规则", true);
JPanel pp=new JPanel(new FlowLayout());
JButton qq=new JButton("shab");
static int m[]={10,10,10,10,10,10,10,10,10,10,10,10};
static int n=0;
TextArea test2=new TextArea(50,16);
int a[]=new int[4];
public cai() throws HeadlessException {
super("^-^猜数字");
file.add(k);
file.add(q);
file.add(t);
help.add(y);
this.setMenuBar(menuBar);
menuBar.add(file);
menuBar.add(help);
q.setEnabled(false);
for(int i=0;i
辽宁工程技术大学软件学院
面向对象程序设计课程设计报告
JPanel p6=new JPanel(new FlowLayout());
p6.add(input);
p6.add(result);
test2.setEditable(false);
JPanel p7=new JPanel(new BorderLayout());
p7.add(test2,BorderLayout.CENTER);
JPanel p0=new JPanel(new GridLayout(1,2));
p0.add(inter);
p0.add(field);
JPanel p1=new JPanel(new FlowLayout());
for(int i=0;i<2;i++)
p1.add(btn[i]);
JPanel p2=new JPanel(new GridLayout(2,1));
p2.add(p0);
p2.add(p1);
JPanel p4=new JPanel(new BorderLayout());
JPanel p3=new JPanel(new GridLayout(3,4));
for(int i=2;i
辽宁工程技术大学软件学院
面向对象程序设计课程设计报告
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("开始游戏"))
{
int b[]={0,1,2,3,4,5,6,7,8,9};
for(int i=0;i
辽宁工程技术大学软件学院
面向对象程序设计课程设计报告
if(e.getActionCommand().equals("0"))
if(a[0]==a[1])
{
",JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,"请先开始游戏","警告对话框
}
else
{if(n<4)
{
{
boolean s=true;
loop:
while(s)
{
for(int i=0;i<4;i++)
if(m[i]==0)
break loop;
else continue;
m[n]=0;
n++;
field.setText(field.getText()+0);
s=false;
}
}
}
else
{
话框",JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,"只能输入4个不同数字","警告对
}
}
if(e.getActionCommand().equals("1"))
if(a[0]==a[1])
{
",JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,"请先开始游戏","警告对话框
}
else
{if(n<4)
{
{
boolean s=true;
loop: