《Java语言程序设计》软件实验指导书.docx
- 文档编号:24510004
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:22
- 大小:131.31KB
《Java语言程序设计》软件实验指导书.docx
《《Java语言程序设计》软件实验指导书.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计》软件实验指导书.docx(22页珍藏版)》请在冰豆网上搜索。
《Java语言程序设计》软件实验指导书
本科实验报告
课程名称:
java程序设计
实验地点:
实验室110
专业班级:
物联网1401学号:
2014002010
学生姓名:
李涛宇
指导教师:
李君蝉
实验成绩:
2016年6月20日
实验1Java语言基础
1.实验目的
(1)通过实验,掌握Java语言程序设计的基本方法。
(2)学会Java语言中标示符的命名、运算符和表达式的应用。
(3)熟练地掌握Java程序流程控制语句的应用。
2.实验内容
“水仙花数”是指一个3位数,其个位、十位、百位上的数字的立方和等于该数本身,例如371=33+73+13,因此371是一个水仙花数。
编写程序,求所有的水仙花数。
3.实验步骤及结果
(1)实验过程中实验步骤及其结果。
package实验测试;
publicclassFlower{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
inta,b,c;
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
if(a*a*a+b*b*b+c*c*c==100*a+10*b+c)
System.out.println(100*a+10*b+c+"是水仙花数");
}
}
(2)实验体会。
本实验虽然是java语言基础实验,但只运用到了java的输出,实际上仍然使用的是C语言基础中对于循环的控制。
在多重循环控制中注意循环变量的控制。
实验2数组和字符串编程
1.实验目的
(1)通过实验,掌握Java语言中数组、字符串程序设计的基本方法。
(2)较熟练地掌握Java程序数组的应用、字符串处理操作的方法应用。
2.实验内容
输入一段字符串,统计其中有多少个单词。
(单词用空格隔开)
3.实验步骤及结果
(1)实验过程中实验步骤及其结果。
package实验测试;
importjava.util.Scanner;
publicclassLetter{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println("请输入一串字符");
Scannersc=newScanner(System.in);
Stringmessage=sc.nextLine();
String[]sp=message.split("");
System.out.println("字符串单词数位:
"+sp.length);
}
}
(2)实验体会
这个实验主要运用了java语言中对于字符串进行处理的函数,由于丰富的库函数,java可以调用函数,便捷地实现其他语言需要很多代码才能实现的功能,应该熟悉java语言常用的库函数。
实验3Java面向对象程序设计
1.实验目的
掌握Java面向对象程序设计中类、继承、包和接口的概念与应用,能熟练应用方法、类、成员变量等元素。
2.实验内容
(1)创建一个复数类complex,以附属进行数学运算、复数具有如下格式:
RealPart+ImaginaryRart*I,其中,I为-1的平方根。
要求如下:
1 利用浮点变量表示此类的私有数据。
提供两个构造方法,一个用于此类声明的对象的初始化;一个为默认的无参构造方法。
2 提供两复数加、减、乘的运算方法。
3 按格式(a,b)打印复数。
其中a为实部,b为虚部。
(2)编程实现以下简单超市管理,具体要求如下:
1 实现描述超市的类Suppermacket类,具有货架属性,记录系统中现有商品,定义盘点商品的函数check(盘点各类商品的数量,并输出盘点结果),查询商品的函数query,并显示查询结果;
2 定义商品类Goods,具有商品名称Name,商品价格Price,商品产地Producer等属性,操作Sale(销售商品,余额不足时给予提示)、Add(商品上架操作)和ShowMe(显示商品信息)。
3 main函数,测试以上所要求的各种功能,即可以根据菜单命令增加、删除、查询商品、盘点商品,以及商品销售和商品上架的操作
提示:
①超市货架可以使用商品数组,数组大小100表明存放100个商品。
②注意实现商品查询的多态性,要求可以根据商品的名称或产地或价格查询商品的数量。
3.实验步骤及结果
(1)实验过程中实验步骤及其结果。
package实验测试;
publicclassComp{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Complexa=newComplex(3,1);
Complexb=newComplex(2,5);
a.sub(a,b);
a.add(a,b);
}
}
classComplex
{
privatedoubleRealPart;
privatedoubleImaginaryRart;
publicComplex(doublerealPart,doubleimaginaryRart){
super();
RealPart=realPart;
ImaginaryRart=imaginaryRart;
}
voidadd(Complexa,Complexb){
RealPart=a.RealPart+b.RealPart;
ImaginaryRart=a.ImaginaryRart+b.ImaginaryRart;
System.out.println("两复数相加结果为("+RealPart+","+ImaginaryRart+")");
}
voidsub(Complexa,Complexb){
RealPart=a.RealPart-b.RealPart;
ImaginaryRart=a.ImaginaryRart-b.ImaginaryRart;
System.out.println("两复数相减结果为("+RealPart+","+ImaginaryRart+")");
}
}
(2)实验体会
复数类的实验通过自定义复数类,实现复数的加减,java通过类的调用可以实现新的数据类型与功能。
复数类的实现也是基于对基本数据类型的定义操作。
超市管理题目功能复杂,根据描述,没有正确理解题目所表达的意图,在看到网上相关参考后恍然大悟。
代码非常复杂,但是注重每个细节功能的实现。
实验4Java异常处理
1.实验目的
掌握异常的概念,以及如何定义、抛出和捕获处理异常。
2.实验内容
在实验三中的超市、商品类中创建一个自定义异常类。
要求:
在定义商品类时,若销售商品数量大于余额则作为异常处理(InsufficientFundsException)。
提示:
1 产生异常条件是某类商品销售数量大于库存额,因此是否抛出异常要先判断该条件。
2 确定产生异常的方法,应该在sale方法中产生异常InsufficientFundsException。
3 处理异常安排在调用sale的时候,因此sale方法要声明异常,由上级方法捕获并处理。
4 要定义好自己的异常。
3.实验步骤及结果
(1)实验过程中实验步骤及其结果。
importjava.io.*;
importjava.util.Scanner;
publicclassMain{
staticStringname;
staticfloatprice;
staticintnum;
staticStringproducer;
staticSupermarktmarket=newSupermarkt();
publicstaticvoidmain(String[]args)throwsIOException{
inti=0;
while(true){
market.ShowMenu();
i=Integer.parseInt(Getline());
switch(i){
case1:
Add();
break;
case2:
Del();
break;
case3:
Showgoods();
break;
case4:
Query();
break;
case5:
System.out.print("成功退出系统");
return;
default:
System.out.println("输入错误,请重新输入!
");
break;
}
}
}
publicstaticvoidQuery(){
System.out.println("**查询商品**");
System.out.print("商品名:
");
name=Getline();
if(!
market.Query(name)){
System.out.print("没有该商品");
}
}
publicstaticvoidShowgoods(){
System.out.println("**显示所有商品**");
if(!
market.Showgoods()){
System.out.println("没有任何商品");
}
}
publicstaticvoidDel(){
System.out.println("**删除商品**");
System.out.print("商品名称:
");
name=Getline();
if(market.Del(name)){
System.out.println("删除商品->"+name+"成功!
");
}
else{
System.out.println("该商品不存在");
}
}
publicstaticvoidAdd(){
System.out.println("**增加商品**");
System.out.print("商品名称:
");
name=Getline();
System.out.print("商品价格:
");
price=Float.parseFloat(Getline());
System.out.print("商品数量:
");
num=Integer.parseInt(Getline());
System.out.print("商品产地:
");
producer=Getline();
if(market.Add(name,price,num,producer)){
System.out.println("增加商品->"+name+"成功!
");
}else{
System.out.println("存在相同商品,增加失败!
");
}
}
publicstaticStringGetline(){
Scannerscan=newScanner(System.in);
Stringstr=scan.nextLine();
returnstr.trim();
}
}
2)
publicclassGoods{
privateStringname;
privatefloatprice;
privateintnum;
privateStringproducer;
publicGoods(Stringname,floatprice,intnum,Stringproducer){
this.name=name;
this.price=price;
this.num=num;
this.producer=producer;
}
publicStringGetName(){
returnthis.name;
}
publicfloatGetPrice(){
returnthis.price;
}
publicintGetNum(){
returnnum;
}
publicStringGetProducer(){
returnthis.producer;
}
publicvoidShowgoods(){
System.out.print("商品名称:
"+name+"商品价格:
"+price+"商品数量:
"+num+"商品产地:
"+producer+"\n");
}
}
3)
importjava.util.Vector;
publicclassSupermarkt{
staticVector
publicvoidShowMenu(){
System.out.println("---------");
System.out.println("1.增加商品");
System.out.println("2.删除商品");
System.out.println("3.显示商品");
System.out.println("4.查询商品");
System.out.println("5.退出系统");
System.out.println("--------");
return;
}
//增加商品
publicbooleanAdd(Stringname,floatprice,intnum,Stringproducer){
intcount=listgoods.size();
for(inti=0;i if(listgoods.get(i).GetName().equals(name)) returnfalse; Goodsnewgoods=newGoods(name,price,num,producer); listgoods.add(newgoods); returntrue; } //删除商品 publicbooleanDel(Stringname) { intcount=listgoods.size(); for(inti=0;i if(listgoods.get(i).GetName().equals(name)){ listgoods.remove(i); returntrue; } returnfalse; } //显示商品 publicbooleanShowgoods(){ intcount=listgoods.size(); if(count==0) returnfalse; else{ for(inti=0;i listgoods.get(i).Showgoods(); returntrue; } } //查询商品 publicbooleanQuery(Stringname){ intcount=listgoods.size(); for(inti=0;i if(listgoods.get(i).GetName().equals(name)){ listgoods.get(i).Showgoods(); returntrue; } returnfalse; } (2)实验体会。 Java语言由于异常处理的存在,使得java可以对程序运行中出现的不合法数据或事件有处理能力,针对不同的情况,可以使用不同的trycatch进行分别处理。 Java程序更加具有强壮性。 实验5多线程编程 1.实验目的 (1)现成的概念、线程的生命周期。 (2)多线程的编程: 扩展Thread类与使用Runnable接口。 (3)使用多线程机制实现动画 2.实验内容 (1)创建简单的程序ThreeThread.java,该程序将创建三个线程,每个线程应当显示它所运行的时间(可以考虑使用Date类或Calendar类)。 3.实验步骤及结果 (1)实验过程中实验步骤及其结果 importjava.text.SimpleDateFormat; importjava.util.*; publicclassHi{ publicstaticvoidmain(Stringargs[]){ SimpleDateFormats2=newSimpleDateFormat("yyyy年MM月dd日EEEEE时mm分ss秒"); newHiH(s2,"jerry").start(); newHiH(s2,"liming").start(); newHiH(s2,"merry").start(); } } classHiHextendsThread{ privateSimpleDateFormata; privateStrings1; publicHiH(SimpleDateFormata,Stringstr){ this.a=a; s1=str; } publicvoidrun(){ synchronized(this.a){ System.out.println(""+s1); System.out.println(this.a.format(newDate())); try{ sleep((int)(Math.random()*1000)); } catch(InterruptedExceptione){} } } } 运行结果 (2)实验体会 本实验通过sleep与start控制线程在三个线程之间灵活切换,使得java程序利用率更加提高。 在就绪,执行,挂起之间切换。 实验6图形用户界面编程 1.实验目的 掌握文本组件、按钮和单、复选按钮组件的使用;掌握列表的使用,鼠标、键盘事件的处理;掌握布局控制的方法。 2.实验内容 (1)试设计一窗口,内含一个按钮。 开始运行时,按钮显示“ClickMe”字样,当按钮按下时,按钮显示为“ClickMeAgain”字样,再按一次,则按钮显示“ClickMe”字样,依次循环。 3.实验步骤及结果 (1)实验过程中实验步骤及其结果 package图形界面; importjava.awt.event.MouseEvent; importjava.awt.event.MouseListener; importjavax.swing.JButton; importjavax.swing.JFrame; publicclassGUI{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub JFramefrm=newJFrame(); frm.setLayout(null); frm.setVisible(true); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frm.setBounds(500,250,250,150); JButtonbtn=newJButton("ClickMe"); frm.add(btn); btn.setBounds(120,60,120,30); ButtonListenerbln=newButtonListener(btn); btn.addMouseListener(bln); } } classButtonListenerimplementsMouseListener{ booleant=true; JButtonbtn; publicButtonListener(JButtonbtn){ this.btn=btn; } @Override publicvoidmouseClicked(MouseEventarg0){ //TODOAuto-generatedmethodstub t=! t; } @Override publicvoidmouseEntered(MouseEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseExited(MouseEventarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidmousePressed(MouseEventarg0){ //TODOAuto-generatedmethodstub if(t)btn.setText("ClickMeAgain"); elsebtn.setText("ClickMe"); } @Override publicvoidmouseReleased(MouseEventarg0){ //TODOAuto-generatedmethodstub } } (2)实验体会 图形用户界面使得java程序更具有交互性。 在本实验中,通过事件监听器的注册,可以对不同的鼠标指令多态地进行不同反应。 编程中由于对button组建的函数不太熟悉,导致实现接口时出现问题。 实验7输入与输出 1.实验目的 (1)掌握Java两种基本输入/输出流类的使用。 (2)掌握Java文件类型的使用。 (3)掌握文件的输入、输出方法。 2.实验内容。 (1)编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言程序设计 Java 语言程序设计 软件 实验 指导书