java实验报告4.docx
- 文档编号:5770235
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:30
- 大小:839.92KB
java实验报告4.docx
《java实验报告4.docx》由会员分享,可在线阅读,更多相关《java实验报告4.docx(30页珍藏版)》请在冰豆网上搜索。
java实验报告4
《Java开发技术》实验报告
实验序号:
4 实验项目名称:
第三章第四章练习
学 号
14211452104
姓 名
丁思源
专业、班
14软件一班
实验地点
A-505
指导教师
实验时间
一、实验目的及要求
1.博饼,在eclipse里,制作博饼游戏软件,要求点击开博按钮,模仿6个骰子滚动并输出结果,判断获奖信息。
2.student登陆程序,设计程序查询登陆界面,用户名,密码捆绑,登陆后可以进入另外的页面。
3.监听器实践,设计程序点击主窗口上任意一处,弹出进入第二个窗口。
4.计数器,设计程序执行后显示一个按钮(按钮显示“PushMe!
”)。
用户每单击按钮一次,计数器就会被更新显示总点击数。
5.九九乘法表,要求点击按钮后,窗口上半部分显示九九乘法表。
二、实验设备(环境)及要求
PC机,windowsxp/7,jdk1.6以上
三、实验内容与步骤
1.博饼程序
(1).新建项目
(2).新建包
(3).新建shell可视化类(前三步如下图)
(4).设计程序主界面
(5).开博按钮下添加事件。
主要代码如下:
publicvoidwidgetSelected(org.eclipse.swt.events.SelectionEvente){
//System.out.println("widgetSelected()");//TODOAuto-generatedEventstubwidgetSelected()
Dicedice=newDice();
int[]list=newint[6];
String[]urlimage=newString[6];
for(inti=0;i<6;i++)
{
list[i]=dice.roll();
urlimage[i]="/dsy1010/"+Integer.toString(list[i])+".png";
}
label01.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimage[0])));
label02.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimage[1])));
label03.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimage[2])));
label04.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimage[3])));
label05.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimage[4])));
label06.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimage[5])));
Resultrst=newResult();
result_label.setText(rst.GetResult(list));
}
(6).在骰子归位下添加事件代码如下:
publicvoidwidgetSelected(org.eclipse.swt.events.SelectionEvente){
//System.out.println("widgetSelected()");//TODOAuto-generatedEventstubwidgetSelected()
initDice();
}
});
initDice();
}
publicvoidinitDice()
{
Stringurlimg="/dsy1010/4.png";
label01.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimg)));
label02.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimg)));
label03.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimg)));
label04.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimg)));
label05.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimg)));
label06.setImage(newImage(Display.getCurrent(),getClass().getResourceAsStream(urlimg)));
}
(7).将图片导入包里
(8).新建普通类Dice,设计方法,代码如下:
packagedsy1020;
publicclassDice{
privatefinalintMAX=6;
privateintfaceValue;
publicDice()
{
faceValue=1;
}
publicintroll()
{
faceValue=(int)(Math.random()*MAX)+1;
returnfaceValue;
}
publicvoidsetFaceValue(intvalue)
{
faceValue=value;
}
publicintgetFaceValue()
{
returnfaceValue;
}
publicStringtoString()
{
Stringresult=Integer.toString(faceValue);
returnresult;
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
(9)新建普通类Result设计在获奖区显示输出结果的方法,代码如下:
publicclassResult{
publicStringGetResult(intlist[])
{
inta=0,b=0,c=0,d=0,e=0,f=0;
inti;//Number[i]存储各个骰子的数值
for(i=0;i<6;i++)
{
if(list[i]==1)//判断有几个1
{
a++;
}
if(list[i]==2)//判断有几个2
{
b++;
}
if(list[i]==3)//判断有几个3
{
c++;
}
if(list[i]==4)//判断有几个4
{
d++;
}
if(list[i]==5)//判断有几个5
{
e++;
}
if(list[i]==6)//判断有几个6
{
f++;
}
}
if(d==0&&a<4&&b<4&&c<4&&e<4&&f<4)//没有
{
return"没有";
}
if(d==1&&a<4&&b<4&&c<4&&e<4&&f<4)//一秀
{
return"一秀";
}
if(d==2&&a<4&&b<4&&c<4&&e<4&&f<4)//二举
{
return"二举";
}
if(d==0&&(a==4||b==4||c==4||e==4||f==4))//四进
{
return"四进";
}
if(d==1&&(a==4||b==4||c==4||e==4||f==4))//四进带一秀
{
return"四进带一秀";
}
if(d==2&&(a==4||b==4||c==4||e==4||f==4))//四进带二举
{
return"四进带二举";
}
if(d==3)//三红
{
return"三红";
}
if(a==1&&b==1&&c==1&&d==1&&e==1&&f==1)//对堂
{
return"对堂";
}
if(d==4&&a<2)//状元
{
return"状元";
}
if(a==5||b==5||c==5||e==5||f==5)//五子
{
return"五子";
}
if(d==5)//五四
{
return"五四";
}
if(a==6||b==6||c==6||e==6||f==6)//六同
{
return"六同";
}
if(d==4&&a==2)//状元插金花
{
return"状元插金花";
}
if(d==6)
{
return"状元";
}
returnnull;
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
2.student登陆程序
1.博饼程序
(1).新建项目
(2).新建包
(3).新建shell可视化类Zhujie(前三步如下图)
(4).设计登陆界面
(5).在第一个text控件下添加事件
代码如下:
publicvoidmodifyText(org.eclipse.swt.events.ModifyEvente){
//System.out.println("modifyText()");//TODOAuto-generatedEventstubmodifyText()
Stringtxt=text1.getText()==null?
"":
text1.getText().trim();
if(txt.matches("a-zA-Z]*+[\\d]*+[a-zA-Z]*+[\\d]*+")){
MessageBoxmsgBox=newMessageBox(sShell);
msgBox.setMessage("用户名只能由字母和数字组成!
");
msgBox.open();
text1.selectAll();
}}
在登陆button控件下添加事件
代码如下:
publicvoidwidgetSelected(org.eclipse.swt.events.SelectionEvente){
//System.out.println("widgetSelected()");//TODOAuto-generatedEventstubwidgetSelected()
Useruser=newUser(text1.getText().trim(),text12.getText().trim(),
combojiaose.getSelectionIndex());
ShelloldShell=null;
if(newUserset().isVaild(user)){
oldShell=sShell;
sShell=newMainWindow(user).getsShell();
oldShell.dispose();
sShell.open();
}else{
MessageBoxmsgBox=newMessageBox(sShell);
msgBox.setMessage("用户名或密码错误!
");
msgBox.open();
text1.setText("");
text12.setText("");
}
}
(5).在combo控件下添加代码
代码如下:
privatevoidcreateCombojiaose(){
combojiaose=newCombo(group1,SWT.NONE);
combojiaose.setBounds(newRectangle(91,113,87,20));
combojiaose.setVisibleItemCount
(2);
combojiaose.add("管理员");
combojiaose.add("学生");
combojiaose.add("教师");
}
(5)建user普通类,设计函数,生成get,set,hash,string方法,代码如下:
packageDenglu;
publicclassUser{
@Override
publicStringtoString(){
return"User[name="+name+",password="+password+",job="+job
+"]";
}
@Override
publicinthashCode(){
finalintprime=31;
intresult=1;
result=prime*result+ADMIN;
result=prime*result+STUDENT;
result=prime*result+TEACHER;
returnresult;
}
@Override
publicbooleanequals(Objectobj){
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass()!
=obj.getClass())
returnfalse;
Userother=(User)obj;
if(ADMIN!
=other.ADMIN)
returnfalse;
if(STUDENT!
=other.STUDENT)
returnfalse;
if(TEACHER!
=other.TEACHER)
returnfalse;
returntrue;
}
privateStringname;
privateStringpassword;
privateintjob;
finalintADMIN=0;
finalintSTUDENT=2;
finalintTEACHER=1;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicintgetJob(){
returnjob;
}
publicvoidsetJob(intjob){
this.job=job;
}
publicUser(Stringname,Stringpassword,intjob){
super();
this.name=name;
this.password=password;
this.job=job;
}
}
(6)建userset普通类,键入代码,代码如下:
packageDenglu;
importjava.io.BufferedReader;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.IOException;
importjava.util.HashSet;
publicclassUserset{
HashSet
publicUserset(){
super();
userset=newHashSet
Stringstr=null;
String[]userStr=null;
try{
FileReaderfir=newFileReader("E:
\\java\\Student\\src\\yonghuming.txt");
BufferedReaderbir=newBufferedReader(fir);
while((str=bir.readLine())!
=null){
userStr=str.split(":
");
userset.add(newUser(userStr[0].trim(),userStr[1].trim(),Integer.parseInt(userStr[2])));}
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}}
publicbooleanisVaild(Useruser){
booleanuserValid=false;
if(userset.contains(user)){
userValid=true;
}
returnuserValid;
}}
(6).新建文件yonghuming,存放捆绑的用户名和密码。
用户名密码如下:
admin:
123:
0
wnb:
000:
1
student:
456:
2
(7)新建shell类,为程序登录后显示的界面
3.监听器实践
(1).新建项目
(2).新建包
(3).新建普通类MuJFrame(前三步如下图)
(4)此为主窗口,调用监听器,设计主窗口,代码如下:
packagedsy;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassMuJFrameimplementsActionListener{//因为要执行button的单击事件,需要用到监听器
/**
*@paramargs
*/
//构造函数
publicMuJFrame(){
JFramef=newJFrame("这是第一个窗口");
Containercp=f.getContentPane();
JButtonbt1=newJButton("请点击");
bt1.setSize(100,50);
bt1.addActionListener(this);
cp.add(bt1);
f.setSize(200,150);
//f.pack();
f.show();
f.addWindowListener(newWinLis());
}
publicvoidactionPerformed(ActionEvente)//监听器的actionPerformed方法
{
JLabellb=newJLabel("这是第二个窗口");
JFramenf=newJFrame();
Containercp1=nf.getContentPane();
nf.setTitle("这是一个新JFrame");
nf.setSize(180,100);//设置窗口大小
nf.show();
cp1.add(lb);
nf.addWindowListener(newWinLis());
}
//程序入口
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
newMuJFrame();
}
}
(5).建普通类,设计第二个窗口,代码如下:
packagedsy;
importjava.awt.*;
importjavax.swing.*;
publicclasschuangkou2{
JLabellb1=newJLabel("这是第一个窗口");
JLabellb2=newJLabel("这是第二个窗口");
//构造函数
publicchuangkou2(){
JFramef1=newJFrame();//创建JFrame对象
JFramef2=newJFrame();
Containercp=f1.getContentPane();//创建JFrame的容器对象,获得ContentPane
Containercp1=f2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验 报告