experiment @ lzptc , 2nd实训《Java语言程序设计》专业实习

  Java 语言程序设计》专业实习任务(一)

一、设计目的:

本次设计是对教材前7章的总结。在学习Java基本语法的基础上,利用面向对象的程序设计方法解决一些简单的问题。设计的目的在于掌握 Java 的基本原理、设计方法和使用规则;能够运用面向对象方法分析问题,并利用所学知识合理地进行设计;熟练掌握Application的编写和运行过程;并能够进行简单的GUI设计。

二、设计题目:

㈠程序改错。根据题目要求调试下面的程序, 分析错误原因并改正 ,直到运行正确, 写出运行结果

  ⒈输出 40 以内的素数,每行输出 6 个数。

    public class Prime_1_1{

     public static void main(String[] args){

    final int MAX=40;

    int i,j,num;

    System.out.print(2+"/t");

    counter++;

    for(num=3;num<=MAX;num=num+2);

     {int k=3;

      while(num%k!=0&&k<num) k=k+2;

      if(k==num)

        { System.out.print(num+"/t");

          counter++;

          if(counter%6==0) System.out.println();

        }

       }

     }

}

 

⒉给对象 u 初始化 ( 姓名: liqiang  性别: m) ,并显示该对象的数据成员值。

public class Hide_1_2{

  String name;

  char gender;

  public Hide_1_2(String name,char ch)

  {

   name=name;

   gender=ch;

  }

 

  public showInfor()

  {

    System.out.println("Name: "+name);

    System.out.println("Gender: "+gender);

  }

  public static void main(String[] args){

    Hide_1_2 u= new Hide_1_2("liqiang",'m');

    u.showInfor();

  }

}

⒊调用 Link 类的方法完成两个字符串的连接和输出。

class Link{

 

   public String connect(String str1,String str2)

   {

    return str1.concat(str2);

   }

}

 

public class Method_1_3{

  public static void main(String[] args){

    String str;

    str=Link.connect("Hello ","Java!");    // 不要改动这条语句

    System.out.println(str);

  }

}

⒋利用父类的 print() 方法输出年龄

class Mankind{

  int age;

  private void print()

  {

   System.out.println("Age is: "+age);

  }

}

 

public class Kids_1_4 extends Mankind{

  public Kids_1_4(int x)

  {

    age=x;

  }

  public static void main(String[] args){

  Kids_1_4 u=new Kids_1_4(13);

  u.print();

  }

}

 

㈡根据提示功能, 补充 下面的程序, 写出运行结果

⒈找出数组中的最大值并显示;同时显示出它在数列中的位置(如:值是 70  位置是 5

public class Find_2_1{

  public static void main(String[] args){

    int a[]={11,21,9,12,70,4};

    int max=a[0],i,position=0;

    for(       ;i<a.length;i++)

      if(max<a[i])

         {max=a[i];

          position=      ②   ;

         }

    for(i=0;i<a.length;i++)

      System.out.print(" "+a[i]);

    System.out.println();

    System.out.println("The max is: "+max);

    System.out.println("The position in the list is: "+       );

  }

}

 

⒉为一只 4 岁的鄂鱼设置名称和年龄,并显示这些信息,均用方法完成。根据提示,仿照已有的方法完成下面的程序。

class Animal{

  private String name;

  private int age;

 

  public String getName(){

    return name;

  }

 

  得到年龄 :getAge()

 

  设置姓名 :setName()

 

  public void setAge(int x){

    age=x;

  }

}

public class Animal_2_2 extends Animal{

  public static void main(String[] args){

    Animal_2_2 u=new Animal_2_2();

    u.setName("crocodile");

    u.setAge(4);

    System.out.println("It's name is: "+     );   // 输出姓名

    System.out.println("It's age is: "+      );   // 输出年龄

  }

 

}

 

㈢分析程序,根据场景描述, 设计程序的存储路径,并输出运行结果

  3 个程序如下所示:( Package_4_1.java Show1.java Show2.java

  源文件: Package_4_1.java 

import exam.Show1;

import exam.pour.Show2;

public class Package_4_1{

  public static void main(String[] args){

    Show1 u1=new Show1();

    Show2 u2=new Show2();

    System.out.println("Disp come from Show1:");

    u1.print();

    System.out.println();

    System.out.println("Disp come from Show2:");

    u2.print();

  }

}

     源文件:Show1.java

package exam;

public class Show1{

  public void print()

    {

      System.out.println("Hello! I am a class named Show1");

    }

}

  源文件: Show2.java

package exam.pour;

public class Show2{

  public  void print()

   {

    System.out.println("OK!  I am a class named Show2");

   }

}

   

题目要求

假设把源文件 Package_4_1.java 放到E 盘的Java 子目录里,如下所示:

 

     在这个目录底下,为了正确编译和运行该文件,如何存放Show1.java和Show2.java两个源文件。 画出设置正确的目录结构

E:/java>java Package_4_1

Disp come from Show1:

Hello! I am a class named Show1

 

Disp come from Show2:

OK!  I am a class named Show2

 

㈣根据题目要求, 编写程序 写出运行结果

⒈求 1 +2 +3 + +10

⒉动物都可以呼吸,于是有一个方法叫 breathe() ,可以输出信息“ Breathing …”;

  鱼是动物的一种,也可以呼吸,但输出信息“ Bubbling …”会更好;

  有一种鱼叫肺鱼,能够像陆地动物那样呼吸,所以对于它们用“ Breathing …”就可以了。

  要求:

     根据上面的描述,确定类的继承关系。

     显示一条肺鱼的呼吸方式—— Breathing

     显示一条鱼(不是肺鱼)的呼吸方式—— Bubbling

     提示:

          鱼继承于动物;

          利用覆盖或调用父类方法等手段完成显示要求。

3. 通过接口和继承实现下述功能:

定义一个接口 IPerson ,封装一个方法: void print()// 输出人员有关信息。

利用 IPerson 接口规范,定义一个类 Teacher ,表示某学校教师的最基本信息。

4 个属性:工号 ID ,姓名 name 性别 sex ,年龄 age ,工龄 workAge ,工资 salary ,职务 job

2 个构造方法: Teacher ( String ID, String name, char sex , int age , int workAge, double salary , String job) Teacher( String ID, int   workAge, double salary , String job)

13 个成员方法:使用 set/get 方法设置或获取教师的姓名、性别、年龄、工龄、工资、职务;输出教师的工号、姓名、工龄、工资和职务信息: print()

再定义一个 Teacher 类的子类 Director ,表示教师中的主任。主任有专门的助理。

3 个成员变量:工号 ID ,姓名 name ,助理名 assistantName

2 个构造方法: Director ( String ID, String name, char sex , int age , int workAge, double salary , String job, String assistantName) Director ( String ID, String name, String assistantName)

3 个成员方法:使用 set/get 方法设置或获取主任的助理名;输出主任的工号、姓名、工龄、工资、职务和他的助理: print()

利用 IPerson 接口规范,定义一个类 Student ,表示某学校学生的最基本信息。

8 个属性:学号 ID 姓名 name 性别 sex 年龄 age ,平时成绩 ordiScore ,期末成绩 fianlScore

2 个构造方法: Student(String ID) Student(String ID, String name, char sex , int age)

12 个成员方法:使用 set/get 方法设置或获取学生的姓名、性别、年龄、平时成绩、期末成绩。统计总成绩,总成绩的计算方式是:平时成绩 *20%+ 期末成绩 *80% CalculateTotalScore( ) ;输出学生的学号、姓名、平时成绩、期末成绩: print( )

定义一个主类 Test1, 该类中利用 Teacher 类和 Director 类,使用 set/get 方法为每个教师的相关属性设置值,输出每个教师的工号、姓名、工龄、工资和职务以及主任的助理名。

定义一个主类 Test2 ,该类中利用 Student 类,使用 set/get 方法为每个学生的相关属性设置值,输出每个学生的学号、姓名、平时成绩、期末成绩及总成绩。

 

㈤程序 Caculate.java 完成的功能是:进行消费金额的结算。运行界面如下所示。

 

1.    功能描述

①在没有进行消费茶品的选择前,文本域内不可输入;只有选择后,才可以输入数量。

②取消某一个费茶品的选择时,文本域内不可输入。

③如果是“内用”,附加 100 元的消费金额。

2.    题目要求

①完成程序段①~⑤的编写。

②回答问题①~③。

3.    提示信息

JCheckBox 提供方法 . boolean isSelected()____ 得到按钮的状态

JRadioButton 提供方法 . boolean isSelected()____ 得到按钮的状态

4.    程序清单( Caculate.java

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Caculate extends JFrame implements ActionListener

{

  // 定义出现的组件:由上而下,自左致右

  JLabel jLabel0 = new JLabel();

 

  JCheckBox jCheckBox1 = new JCheckBox();

  JCheckBox jCheckBox2 = new JCheckBox();

  JCheckBox jCheckBox3 = new JCheckBox();

 

  JTextField jTextField1 = new JTextField(8);

  JTextField jTextField2 = new JTextField(8);

  JTextField jTextField3 = new JTextField(8);

 

  JLabel jLabel1 = new JLabel();  JLabel jLabel2 = new JLabel();  JLabel jLabel3 = new JLabel();

 

  JRadioButton jRadioButton1 = new JRadioButton();

  JRadioButton jRadioButton2 = new JRadioButton();

  // 问题 1 :定义 buttonGroup1 对象的作用是什么?

  ButtonGroup buttonGroup1 = new ButtonGroup();    

 

  JLabel jLabel4= new JLabel();      JButton jButton1 = new JButton();

 

  // 定义用到的容器

  JPanel jPanel1 = new JPanel();  JPanel jPanel2 = new JPanel();  JPanel jPanel3 = new JPanel();

  JPanel jPanel4 = new JPanel();  JPanel jPanel5 = new JPanel();  JPanel jPanel6 = new JPanel();

 

  public Caculate() {

    try {

/*    设置关闭窗口

      问题 2 :记住这种关闭窗口的方式: JFrame 类提供的方法,设置用户关闭这个框架时默认发生的操作。写出利用事件监听机制关闭窗口的 4 个关键步骤和代码,并做必要的阐述。

*/

      setDefaultCloseOperation(EXIT_ON_CLOSE);

      jbInit();

    }

    catch (Exception exception) {

      exception.printStackTrace();

    }

  }

 

  private void jbInit()

   {

    // 获取根容器、设置布局、大小、标题

    Container cp = getContentPane();

    cp.setLayout(new GridLayout(6,1));

 

 

    // 设置用到的容器布局

    jPanel1.setLayout(new FlowLayout());    jPanel2.setLayout(new FlowLayout());

    jPanel3.setLayout(new FlowLayout());    jPanel4.setLayout(new FlowLayout());

    jPanel5.setLayout(new FlowLayout());    jPanel6.setLayout(new FlowLayout());

 

 

    // 设置组件属性:由上而下,自左致右

    jLabel0.setFont(new Font(" 隶书 ", Font.PLAIN, 24));

    jLabel0.setText("/" /" 泡沫红茶店 ");

 

    jCheckBox1.setText(" 泡沫红茶( 35 元) ");

    jCheckBox2.setText(" 茶( 50 元) ");

    jCheckBox3.setText(" 木瓜奶茶( 40 元) ");

 

    // 填充程序①:注册事件源

 

    jTextField1.setText("0");         jTextField2.setText("0");          jTextField3.setText("0");

    jTextField1.setEditable(false);    jTextField2.setEditable(false);    jTextField3.setEditable(false);

 

    jLabel1.setText(" ");           jLabel2.setText(" ");            jLabel3.setText(" ");

 

    jRadioButton1.setText(" 内用 ");     jRadioButton1.setSelected(true);   

jRadioButton2.setText(" 外带 ");

    buttonGroup1.add(jRadioButton1);    buttonGroup1.add(jRadioButton2);

 

    // 使得 jLabel4 对象呈现凹下去的外观,用于突出显示结算金额

    jLabel4.setBorder(BorderFactory.createLoweredBevelBorder());

    // 设置 jLabel4 对象外观的大小

    jLabel4.setPreferredSize(new Dimension(60, 20));    jButton1.setText(" 结帐 ");

    jButton1.addActionListener(this);

 

    // 将组件加载到容器里 : 自上而下

    jPanel1.add(jLabel0 );

    jPanel2.add(jCheckBox1);     jPanel2.add(jTextField1);    jPanel2.add(jLabel1);

    jPanel3.add(jCheckBox2);    jPanel3.add(jTextField2);    jPanel3.add(jLabel2);

    jPanel4.add(jCheckBox3);    jPanel4.add(jTextField3);    jPanel4.add(jLabel3);

    jPanel5.add(jRadioButton1);  jPanel5.add(jRadioButton2);

    jPanel6.add(jButton1);        jPanel6.add(jLabel4);

 

    // 问题 3 :下面这 6 条语句完成了什么功能?

    cp.add(jPanel1);    cp.add(jPanel2);    cp.add(jPanel3);   

cp.add(jPanel4);    cp.add(jPanel5);    cp.add(jPanel6);

  }

 

  public void actionPerformed(ActionEvent e) {

    int money = 0;

    //getSource() 方法返回事件源对象

    if(e.getSource()==jCheckBox1)

       {  // 填充程序②:对 jCheckBox1 的选择做处理 }

    if(e.getSource()==jCheckBox2)

    {   // 填充程序③:对 jCheckBox2 的选择做处理 }

    if(e.getSource()==jCheckBox3)

        {   // 填充程序④:对 jCheckBox3 的选择做处理 }

    if(e.getSource()==jButton1)

       {  // 填充程序⑤:计算价钱并显示 }

  }

 

 

   public static void main(String[] args){

     Caculate cc = new Caculate();

     cc.setSize(400,350);

     cc.setTitle("Please caculat:");

     cc.setVisible(true);

   }

}

 

三、设计要求

1 ㈠~㈤题必做。

2 .积极查阅相关教材、资料,独立完成。

四、实习报告撰写内容和要求

(一)内容

1.       系统环境(硬件环境、软件环境)

2.       设计内容:

        ①设计题目

②题目分析:根据题目要求写(没有则省略)

③程序清单(或者补充程序段,如第㈡题;对于第㈠题,用彩笔画出修改的地方)

运行结果

3.       设计难点及解决办法

4.       创新及技巧:根据自己的设计过程进行汇总,如果没有就不用写。

5.       心得体会

(二)要求

1.         统一书写在实习报告上。

2.       认真填写实习报告,程序要写完整,补充程序段要做特殊标记。

五、设计时间:一 周(第17周)。具体时间参考实验室安排表。

六、说明:

①考勤占评分的 20% (提前完成的同学需要找老师登记) ,程序调试占评分的 40% ,设计报告占评分的 40% 严禁抄袭、复印实习报告,否则相同报告均以零分计。

②设计中,要提前编制下次调试的程序,计划好每次上机的内容,积极、高效、独立地完成这次设计任务。对没有准备的同学,禁止上机。

 

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值