资源描述
淮海工学院计算机工程学院
实验报告书
课程名: 《面向对象程序设计》
实验名称:年份闰年的判断及星座性格查看
竞猜游戏
班 级: 软件081
学 号: 110831123
姓 名: XX
评语:
成绩: 指导教师:
批阅时间: 年 月 日
《 面向对象程序设计 》实验报告 - 10 -
一、目的与要求
(1) 了解Java开发工具:认识J2SE开发环境,对TextPad、JCreator、NetBeans、Eclipse等开发工具有初步的了解,能够利用以上的某一种开发工具编写调试简单的 Java Application 和Applet程序,了解Java程序的编辑、编译和运行过程。
(2) 学会简单Java程序设计:掌握Java的数据类型、变量、数组、表达式、流程控制语句的使用,并能编写Java Application和Applet,正确运用变量、表达式和流程控制语句,对字符、图形界面下的输入、输出有初步的体验。
要求:
二、实验内容或题目
1、 编写一个Java Apple程序,随机生成或任意输入一个日期数据,判断是否闰年,并算出是周几,或判断对应的星座与性格;
2、以2010年春节晚会为主题,编写一个图文并茂的竞猜游戏,用图形界面的Java Application程序实现。
三、实验步骤与源程序
第一题:
import java.applet.*; //加载applet包
import java.awt.*; //加载图形界面设计要用是抽象窗口工具包
import java.awt.event.*; //加载图形界面下响应事件的包
import javax.swing.*; //加载swing包(图形用户界面)
public class MyJavaApplet extends Applet implements ActionListener ////一定一个继承了Applet的公共类,并实现动作事件接口
{
Panel pBottom=new Panel(); //下(南)部定义一个放一按钮的面板容器
Label prompt; //定义一个标签
TextField year,month,day,output; //定义四个文本框
Button bt1,bt2; //定义两个按钮
int y,m,j,d; //定义年月日,j表示是否是闰年
Image myImage; //定义图片
public void init() //实现Applet的init方法,初始化界面
{
myImage = new ImageIcon("x.jpg").getImage(); //最初显示的图片
prompt=new Label("请在方框中分别输入年、月、日:");
year=new TextField(6); //表示年的文本框
month=new TextField(6); //表示月的文本框
day=new TextField(6); //表示天的文本框
output=new TextField(95); //输出文本框
bt1=new Button("是否是闰年");
bt2=new Button("看看星座性格");
add(prompt); //将显示的题目的标签加入到面板中
pBottom.add(output); //将输出文本框加入到面板中
add(year); //将年的文本框加入到面板中
add(month); //将月的文本框加入到面板中
add(day); //将天的文本框加入到面板中
add(bt1); //将按钮1的文本框加入到面板中
add(bt2); //将按钮2的文本框加入到面板中
add(pBottom,BorderLayout.SOUTH); //将按钮面板放在整个界面的下(南)部
//为按钮注册事件监听器
bt1.addActionListener(this);
bt2.addActionListener(this);
setBackground(Color.green);
setSize(700,450); //设置界面宽度、高度
}
public void paint(Graphics g)
{
g.drawImage(myImage,200,100,300,300,this); //显示图片,参数表示图片宽度、高度
}
public void actionPerformed(ActionEvent e) //实现动作事件接口的方法
{
//将年月日转换为数型
y=Integer.parseInt(year.getText());
m=Integer.parseInt(month.getText());
d=Integer.parseInt(day.getText());
if(e.getSource()==bt1) //如将按钮1按下
{//判断是否为闰年
if((y%4==0&&y%100!=0)||y%400==0)
{
j=1; //是闰年则赋予1
output.setText(year.getText()+"是闰年!");
}
else
{
j=0; //不是闰年则赋予0
output.setText(year.getText()+"不是闰年!");
}
}
if(e.getSource()==bt2) //如将按钮2 按下
{//对应每个星座并输出
if((m==3&20<d)|(m==4&d<20))
{
output.setText("生于该天的人为白羊座,性格:可用一句话每坚强来代表。不论面对任何事情,都会全力以赴白羊的羊角正可用来说明这种个性。 ");
myImage = new ImageIcon("白羊座.jpg").getImage(); //插入图片
repaint();
}
if((m==4&d>19)|(m==5&d<21))
{
output.setText("生于该天的人为金牛座,性格:金牛座的性格就像牛一般,处世相当慎重,但在另一方面也很顽固,只要一发起脾气来,往往没有人能够阻止");
myImage = new ImageIcon("金牛座.jpg").getImage(); //插入图片
repaint();
}
if((m==5&d>20)|(m==6&d<22))
{
output.setText("生于该天的人为双子座,性格:在性格方面的最大特征便是具有极敏锐的观察力,然而另一方面来说,也就犯了样样都懂,却样样不精的毛病。 ");
myImage = new ImageIcon("双子座.jpg").getImage(); //插入图片
repaint();
}
if((m==6&d>21)|(m==7&d<23))
{
output.setText("生于该天的人为巨蟹座,性格:巨蟹座的性格可用一句话来表示充满母爱。感情丰富,对事物的感受性强。");
myImage = new ImageIcon("巨蟹座.jpg").getImage(); //插入图片
repaint();
}
if((m==7&d>22)|(m==8&d<23))
{
output.setText("生于该天的人为狮子座,性格:狮子座的人,性格相当于百兽之王的狮子,坚强、可靠、骄傲、宽大。");
myImage = new ImageIcon("狮子座.jpg").getImage(); //插入图片
repaint();
}
if((m==8&d>22)|(m==9&d<23))
{
output.setText("生于该天的人为处女座,性格:处女座的人,正是人如其名,具有纯洁、洁癖及正义感。处女座的人最讨厌不合理的事。");
myImage = new ImageIcon("处女座.jpg").getImage(); //插入图片
repaint();
}
if((m==9&d>22)|(m==10)&d<23)
{
output.setText("生于该天的人为天枰座,性格:对于善恶两极端的想法、保持着很平衡的状态,这是天秤座的个性。");
myImage = new ImageIcon("天枰座.jpg").getImage(); //插入图片
repaint();
}
if((m==10&d>22)|(m==11&d<22))
{
output.setText("生于该天的人为天蝎座,性格:天蝎座的人的性格,表面上看似十分静,内心似乎充满着用不完的充沛活动力。");
myImage = new ImageIcon("天蝎座.jpg").getImage(); //插入图片
repaint();
}
if((m==11&d>21)|(m==12&d<22))
{
output.setText("生于该天的人为射手座,性格:射手座的人大方而无拘无束,精力充沛,好争论,脾气急躁,对权位有野心,对受磨难及压迫的人有慈悲的心肠。");
myImage = new ImageIcon("射手座.jpg").getImage(); //插入图片
repaint();
}
if((m==12&d>21)|(m==1&d<20))
{
output.setText("生于该天的人为魔蝎座,性格:摩羯座常给人一种严肃无趣的刻板印象,一切都从最现实的观点出发,脚踏实地的从零做起,并追求实实在在的结果。");
myImage = new ImageIcon("魔蝎座.jpg").getImage(); //插入图片
repaint();
}
if((m==1&d>19)|(m==2&d<19))
{
output.setText("生于该天的人为水瓶座,性格:水瓶座的人颇富知性,且具有锐利的观察力、推测能力、以及富有冒险的开拓精神。");
myImage = new ImageIcon("水瓶座.jpg").getImage(); //插入图片
repaint();
}
if((m==2&d>18)|(m==3&d<21))
{//判断是否会有该天
if((j==1&m==2&d>29)|(j==0&m==2&d>28))
{
output.setText("该年2月会有这天吗?");
myImage = new ImageIcon("yw.jpg").getImage(); //插入图片
repaint();
}
else
{
output.setText("生于该天的人为双鱼座,性格:双鱼座的人,因性格比较脆弱,不太坚定,所以,有时太忠厚老实,容易受别人的连累。");
myImage = new ImageIcon("双鱼座.jpg").getImage(); //插入图片
repaint();
}
}
//判断是否会有该天
if((m<8&d%2!=0&d>31)|(m<8&d%2==0&d>30)|(m>7&d%2!=0&d>30)|(m>7&d%2==0&d>31))
{
output.setText("该年会有这天吗?");
myImage = new ImageIcon("yw.jpg").getImage(); //插入图片
repaint();
}
}
}
}
第二题:
import java.awt.*; //加载图形界面设计要用是抽象窗口工具包
import java.awt.event.*; //加载图形界面下响应事件的包
import javax.swing.*; //加载swing包(图形用户界面)
public class JavaAppGraphicsInOut extends Frame implements ActionListener
{
Panel pNorth=new Panel(); //上(北)部定义一个放题目和答案输入框的面板容器
Panel pSouth=new Panel(); //下(南)部定义一个放一排按钮的面板容器
Panel pCenter=new Panel(); //中部定义一个放图片是面板容器
Image myImage;
Button btStart,btOk,btCancel,btCloose; //定义四个按钮
Label prompt=new Label(" 2010年春节晚会竟猜");;
TextField input=new TextField(10),output=new TextField(25);//定义两个文本框,一个用于输入,一个用于输出
private String people="小虎队"; //设定的答案
public JavaAppGraphicsInOut()
{
super("图形界面的Java Application程序"); //设置窗体标题
myImage = new ImageIcon("cw.jpg").getImage();
this.setLayout(new BorderLayout()); //设置当前整个界面为BorderLayout(东南西北中型)的布局编辑器
pNorth.add(prompt); //将显示题目的标签加入上部面板
pNorth.add(input); //将输入答案的文本框加入上部面板
pNorth.add(output); //将判断答案的文本框加入上部面板
add(pNorth,BorderLayout.NORTH); //将问答题面板放在整个界面的上(北)部
Image myImage;
//定义几个按钮
btStart=new Button("开始游戏");
btOk=new Button("确定");
btCancel=new Button("取消");
btCloose=new Button("关闭");
//为按钮注册事件监听器
btStart.addActionListener(this);
btOk.addActionListener(this);
btCancel.addActionListener(this);
btCloose.addActionListener(this);
//将按钮加载到窗体中
pSouth.add(btStart);
pSouth.add(btOk);
pSouth.add(btCancel);
pSouth.add(btCloose);
add(pSouth,BorderLayout.SOUTH); //将按钮面板放在整个界面的下(南)部
setSize(800,600); //设置窗体宽高
setVisible(true); //让窗体可见
}
public void paint(Graphics g)
{
g.drawImage(myImage,40,20,this); //显示图片,参数表示图片宽度、高度
}
public void actionPerformed(ActionEvent evt) //实现动作事件接口的方法
{
if(evt.getSource()==btStart) //判断是否“开始游戏”按钮被按下
{
prompt.setText("2010春晚的歌舞类获一等奖的是谁?"); //设置标签提示文字
}
else if(evt.getSource()==btOk) //判断是否 “确定”按钮被按下
{
if(input.getText().equals("小虎队")) //判断是否是正确答案
{
output.setText("恭喜!答对了!送你个小礼物吧"); //输出“恭喜!答对了!”
myImage = new ImageIcon("lw.jpg").getImage();
repaint();
}
else
{
output.setText("答错了,再试一次吧!"); //输出"答错了,再试一次吧!"
myImage = new ImageIcon("bs.jpg").getImage();
repaint();
}
}
else if(evt.getSource()==btCancel) //判断是否“清除”按钮被按下
{
input.setText(""); //将答案输入框清空
output.setText(""); //将判断正确与否框清空
}
else if(evt.getSource()==btCloose) //判断是否“关闭”按钮被按下
{
System.exit(0); //系统正常退出,如果参数是1,则为异常退出
}
}
public static void main(String ar[])
{
new JavaAppGraphicsInOut(); //构造一个新窗体对象
}
}
四、测试数据与实验结果(可以抓图粘贴)
第一题中:输入年月日,点“是否是闰年”判断是否为闰年,如下图:
点按钮“看看星座性格”,查看生于该天的人星座性格,见下图:
如输入年份不规范,则下图说所示:
第二题:
初始界面见下图,点开始游戏进行竞猜:
如答错,则会有提示信息,并换张图片:
如答对,则会提示领奖品,答对时,奖品自动弹出:
五、结果分析与实验体会
第一次JAVA程序编程,还有很多不足,两个程序其实都有同一特点,就是在每按一个按钮都会有不同的图片显示,增加视觉效果。在第一题中,不足的是,星座定值没有放入数组中,还有判断年份输入规范与否没有用老师说的系统自动判断的方法,主要是并不知道系统有哪些自带程序可以直接调用,这还需要我自己认真钻。第二题竞猜中,跟老师程序有所不同,奖品并没有单独设定个按钮,而是只要答对就会弹出奖品的图片。
虽然这次做的不是很完美,但毕竟是自己写的,也学习了不少,最大的疑问就是系统到底自带哪些可直接执行的函数方法。自己也会加倍努力学习的。
展开阅读全文