西南交通大学JAVA期末作业.docx
《西南交通大学JAVA期末作业.docx》由会员分享,可在线阅读,更多相关《西南交通大学JAVA期末作业.docx(16页珍藏版)》请在冰豆网上搜索。
西南交通大学JAVA期末作业
平时程序期末提交
一、题目
提交内容:
在本学期布置的作业中任选五题,每章只能选择1题,提交源程序(含必要注释)。
另写一份word文档,注明所做题目题号,内容,对应文件名称,并绘制其中任意2个程序对应的UML图。
二、第2章选题
题目:
PP2.5Writeanapplicationthatconvertsmilestokilometers.Readthemilesvaluefromtheuserasafloatingpointvalue.
运行结果:
源程序见miles2kilometers.java。
//********************************************************************
//miles2kilometers.javaAuthor:
//
//
//
//********************************************************************
importjava.util.Scanner;
publicclassmiles2kilometers
{
publicstaticvoidmain(String[]args)
{
Scannerscan=newScanner(System.in);//创建新Scanner
System.out.print("请输入英里数(miles):
");
System.out.print("转换为公里数(kilometers)为:
"+scan.nextFloat()*1.60953+"\n\n");//直接获取计算后结果
}
}
三、第3章选题
题目:
PP3.7Writeanapplicationthatdisplaysaframecontainingtwolabelsthatdisplayyourname,oneforyourfirstnameandoneforyourlast.Experimentwiththesizeofthewindowtoseethelabelschangetheirorientationtoeachother.
运行结果:
源程序见Name.java。
//********************************************************************
//Name.javaAuthor:
//
//
//********************************************************************
importjava.awt.*;
importjavax.swing.*;
publicclassName
{
publicstaticvoidmain(String[]args)
{
JFrameframe=newJFrame("PP3.7");//标题意为第四版(我用的第四版)教材第3.7题
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认关闭动作操作
//设置第一个JPanel
JPanelsubPanel1=newJPanel();
subPanel1.setPreferredSize(newDimension(150,100));
subPanel1.setBackground(Color.green);
JLabellabel1=newJLabel("XX");
subPanel1.add(label1);
//设置第二个JPanel
JPanelsubPanel2=newJPanel();
subPanel2.setPreferredSize(newDimension(150,100));
subPanel2.setBackground(Color.blue);
JLabellabel2=newJLabel("XXXX");
subPanel2.add(label2);
//设置母面板包含两个子JPanel
JPanelprimary=newJPanel();
primary.setBackground(Color.yellow);
primary.add(subPanel1);
primary.add(subPanel2);
frame.getContentPane().add(primary);//JPanel只能以此函数载入JFrame
frame.pack();
frame.setVisible(true);
}
}
四、第4章选题
题目:
PP2.5Writeanapplicationthatconvertsmilestokilometers.Readthemilesvaluefromtheuserasafloatingpointvalue.
运行结果:
源程序见Counter.java。
//********************************************************************
//Counter.javaAuthor:
//
//经过不懈努力,将Panel类和main主函数整合到了一个java文件中。
//是为作业第二题。
//
//********************************************************************
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassCounterextendsJPanel
{
inti=50;
JPanelpanel1=newJPanel();
JButtonbutton1=newJButton("Increment");
JButtonbutton2=newJButton("Decrement");
JLabellabel1=newJLabel("50");
publicCounter()//构造方法
{
add(button1);
add(button2);
add(label1);
button1.addActionListener(newinevent());
button2.addActionListener(newdeevent());//将事件加入按钮中
}
publicstaticvoidmain(String[]args)
{
Counterpanelc=newCounter();//创建Counter对象
JFrameframe1=newJFrame("XXXXXXX");
frame1.getContentPane().add(panelc);
frame1.pack();
frame1.setVisible(true);//只有将JFrame创建于main函数中才能成功地将类与引用类的文件整合为一个java
}
privateclassineventimplementsActionListener
{
publicvoidactionPerformed(ActionEventevent)
{
i++;
label1.setText(Integer.toString(i));
}
}
privateclassdeeventimplementsActionListener
{
publicvoidactionPerformed(ActionEventevent)
{
i--;
label1.setText(Integer.toString(i));
}
}
}
五、第5章选题
题目:
PP5.16Developasimpletoolforcalculatingbasicstatisticsforasegmentoftext.Theapplicationshouldhaveasinglewindowwithascrollingtextbox(aJTextArea)andastatsbox.Thestatsboxshouldbeapanelwithatitledborder,containinglabeledfieldsthatdisplaythenumberofwordsinthetextboxandtheaveragewordlength,aswellasanyotherstatisticsthatyouwouldliketoadd.Thestatsboxshouldalsocontainabuttonthat,whenpressed,recomputesthestatisticsforthecurrentcontentsofthetextfield.
运行结果:
以HansChristianAndersen的《ACHEERFULTEMPER》统计
特别在被引用的PCount类中加入提示信息
源程序。
//********************************************************************
//CountText.javaAuthor:
//
//
//
//
//********************************************************************
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassCountText
{
publicstaticvoidmain(String[]args)
{
JFrameFMain=newJFrame("第5章作业第2题");
FMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FMain.getContentPane().add(newPCount());
FMain.pack();
FMain.setVisible(true);
}
}
//********************************************************************
//PCount.javaAuthor:
//
//此class全面封装,可独立运用于其余application。
//
//
//********************************************************************
importjava.util.Scanner;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassPCountextendsJPanel
{
privateJPanelPA,PB;
privateJTextAreaTArea;
privateJLabelLCouText,LAveText;
privateJButtonBCount;
privateStringtext;
publicPCount()
{
PA=newJPanel();
PB=newJPanel();
TArea=newJTextArea();
LCouText=newJLabel("单词总数:
");
LAveText=newJLabel("\n\n平均单词长度:
");
BCount=newJButton("统计");
ButtonListenerlistener=newButtonListener();
PA.setPreferredSize(newDimension(150,400));
PA.add(TArea);
TArea.setAutoscrolls(true);//不知为何此句无效
TArea.setPreferredSize(newDimension(150,400));
//欲图使JTextArea布满整个JPanel,但未找到途径,此为无奈之举
PB.setPreferredSize(newDimension(150,400));
PB.add(LCouText);
PB.add(LAveText);
PB.add(BCount);
BCount.addActionListener(listener);
add(PA);
add(PB);
}
publicstaticvoidmain(String[]args)
{
System.out.print("请运行CountText.class。
ByXXX\n");
}
privateclassButtonListenerimplementsActionListener
{
privateintcount/*单词总数*/,al/*单词总长度*/;
privatedoubleavel/*单词平均长度*/;
privatebooleanshowword;
//此事件中可判断英文字符出现频率等数据
//连贯英文被任意字符分割(不光是空格)均认为是单词间间隔
publicvoidactionPerformed(ActionEventevent)
{
count=0;
al=0;
avel=0.0;
showword=false;
text=TArea.getText();
text=text.toUpperCase();//转换为大写以便判断
for(inti=0;i{
if((text.charAt(i)>=65)&&(text.charAt(i)<=90))//若当前字符为大写英文
{
al++;
if(showword==false)//若出现新单词,则计数+1
{
count++;
showword=true;
}
}
else
showword=false;
}
if(count!
=0)avel=al/(double)count;
LCouText.setText("单词总数:
"+count);
LAveText.setText("平均单词长度:
"+avel);
}
}
}
UML类图:
六、第7章选题
题目:
1.Designandimplementaprogramthatdisplaysanumerickeypadthatmightappearonaphone.Abovethekeypadbuttons,showalabelthatdisplaysthenumbersastheyarepicked.Totherightofthekeypadbuttons,includeanotherbuttontoclearthedisplay.Useaborderlayouttomanagetheoverallpresentation,andagridlayouttomanagethekeypadbuttons.Putaborderaroundthekeypadbuttonstogroupthemvisually,andaborderaroundthedisplay.
运行结果:
源程序。
//********************************************************************
//Keypad.javaAuthor:
//
//
//
//
//********************************************************************
importjava.awt.*;
importjavax.swing.*;
publicclassKeypad
{
publicstaticvoidmain(String[]args)
{
JFrameFMain=newJFrame("第7章作业第1题");
FMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FMain.getContentPane().add(newPKeypad());
FMain.pack();
FMain.setVisible(true);
}
}
//********************************************************************
//PKeypad.javaAuthor:
//
//此class全面封装,可独立运用于其余application。
//
//
//********************************************************************
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassPKeypadextendsJPanel
{
privateJPanelPNum;
privateJLabelLNum;
privateJButtonB1;
privateJButtonB2;
privateJButtonB3;
privateJButtonB4;
privateJButtonB5;
privateJButtonB6;
privateJButtonB7;
privateJButtonB8;
privateJButtonB9;
privateJButtonBX;
privateJButtonB0;
privateJButtonBJ;
privateJButtonBClr;
publicPKeypad()
{
PNum=newJPanel();
LNum=newJLabel("",JLabel.RIGHT);//向右对齐
LNum.setPreferredSize(newDimension(200,30));//若不设置Label大小则无数据时不显示
B1=newJButton("1");
B2=newJButton("2");
B3=newJButton("3");
B4=newJButton("4");
B5=newJButton("5");
B6=newJButton("6");
B7=newJButton("7");
B8=newJButton("8");
B9=newJButton("9");
BX=newJButton("*");
B0=newJButton("0");
BJ=newJButton("#");
BClr=newJButton("清屏");
ButtonListenerlistener=newButtonListener();
//所有元件构造结束
PNum.add(B1);
PNum.add(B2);
PNum.add(B3);
PNum.add(B4);
PNum.add(B5);
PNum.add(B6);
PNum.add(B7);
PNum.add(B8);
PNum.add(B9);
PNum.add(BX);
PNum.add(B0);
PNum.add(BJ);//小键盘按钮面板加入按钮
PNum.setLayout(newGridLayout(4,3));
this.setLayout(newBorderLayout());
this.add(LNum,BorderLayout.NORTH);
this.add(PNum,BorderLayout.CENTER);
this.add(BClr,BorderLayout.EAST);//主面板加入元件
LNum.setBorder(BorderFactory.createLineBorder(Color.GRAY,2));
PNum.setBorder(BorderFactory.createMatteBorder(0,2,2,2,Color.GRAY));//添加边框
B1.addActionListener(listener);
B2.addActionListener(listener);
B3.addActionListener(listener);
B4.addActionListener(listener);
B5.addActionListener(listener);
B6.addActionListener(listener);
B7.addActionListener(listener);
B8.addActionListener(listener);
B9.addActionList