Java程序设计实训项目09sxxm

上传人:仙*** 文档编号:36041163 上传时间:2021-10-29 格式:DOC 页数:22 大小:133KB
返回 下载 相关 举报
Java程序设计实训项目09sxxm_第1页
第1页 / 共22页
Java程序设计实训项目09sxxm_第2页
第2页 / 共22页
Java程序设计实训项目09sxxm_第3页
第3页 / 共22页
点击查看更多>>
资源描述
Java程序设计实训项目(09级)实训项目一 动物特性的面向对象描述一、问题描述动物特性描述:a) 狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;b) 猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;c) 青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”; 要求对以上动物特性的描述作面向对象的分析,首先抽取其中的对象,然后分析对象的属性和方法,并分析各个对象之间的关系,最后用Java语言实现。二、开发环境JDK,或Eclipse。三、问题分析1、 抽取第一部分描述中的对象:狗(Dog)、猫(Cat)、青蛙(flog)。2、 分析第一部分描述中涉及的这些对象的特征:是否为哺乳动物(mammal)、是否为肉食性(carnivorous)、情绪怎么样(mood)等。3、 分析这些对象的动作:发出叫声,或者成为“打招呼(sayHello)”的方式。由此看出:1、 每个对象代表了一种动物,具有相似的属性,而每个对象实现了一个相同的方法“打招呼(sayHello)”。于是可以抽象出一个基类,他的名字是“动物(Animal)”。然后可以让上面的对象从动物类继承相同的特征,并强制每个对象实现与“动物”类不同的功能。2、 由于各个动物在不同的情绪下“打招呼”的方式不同,考虑使用多态实现多种打招呼的方式。3、 由于青蛙既是陆生动物又是水生动物,所以青蛙既需要继承“陆生动物”又需要继承“水生动物”,而Java不支持类的多重继承但可以实现多个接口,因此需要将“陆生动物(LandAnimal)”和“水生动物”定义为接口。4、 对于“水生动物”,他们的一半特征是“有鰓(hasGills)”并且“产卵(laysEggs)”;而对于“陆生动物”,一般都有腿,所以可以将“腿的数量(getNumberOfLegs)”作为其属性。四、参考代码public class HelloWorld public static void main(String args) Dog animal1 = new Dog(); Cat animal2 = new Cat(); Frog animal3 = new Frog(); if(animal1.isMammal() System.out.println(狗是哺乳动物); else System.out.println(狗不是哺乳动物); if(animal1.isCarnivorous() System.out.println(狗是肉食动物); else System.out.println(狗不是肉食动物); System.out.println(狗通常的情况下,和人打招呼的方式为: +animal1.sayHello(); System.out.println(狗被抚摸情绪好的时候,打招呼的方式是: +animal1.sayHello(Animal.COMFORTED); System.out.println(狗烦躁的时候,会: +animal1.sayHello(Animal.SCARED); System.out.println(狗有 +animal1.getNumberOfLegs()+条腿); System.out.println(); if(animal2.isMammal() System.out.println(猫是哺乳动物); else System.out.println(猫不是哺乳动物); if(animal2.isCarnivorous() System.out.println(猫是肉食动物); else System.out.println(猫不是肉食动物); System.out.println(猫通常的情况下,和人打招呼的方式为: +animal2.sayHello(); System.out.println(猫情绪好的时候会: +animal2.sayHello(Animal.COMFORTED); System.out.println(猫烦躁的时候会: +animal2.sayHello(Animal.SCARED); System.out.println(猫有 +animal2.getNumberOfLegs()+条腿); System.out.println(); if(animal3.isMammal() System.out.println(青蛙是哺乳动物); else System.out.println(青蛙不是哺乳动物); if(animal3.isCarnivorous() System.out.println(青蛙是肉食动物); else System.out.println(青蛙不是肉食动物); System.out.println(青蛙通常的情况下,打招呼的方式为: +animal3.sayHello(); System.out.println(青蛙情绪好的时候会: +animal3.sayHello(Animal.COMFORTED); System.out.println(青蛙受到惊吓是会: +animal3.sayHello(Animal.SCARED); if(animal3.getLaysEggs() System.out.println(青蛙产卵); else System.out.println(青蛙不产卵); if(animal3.getGillFlag() System.out.println(青蛙有鳃); else System.out.println(青蛙没有鳃); System.out.println(青蛙有 +animal3.getNumberOfLegs()+条腿); abstract class Animal / 下面的两个属性被声明为 public 类型的,而且是静态的 public static final int SCARED = 1;/情绪好 public static final int COMFORTED = 2;/情绪不好,烦躁 /下面的属性被声明为保护类型的,允许在子类中访问 protected boolean mammal = true; /是否哺乳动物属性 protected boolean carnivorous = true; /是否食肉动物属性 protected int mood = COMFORTED;/情绪属性 public boolean isMammal() /判断是否哺乳动物 return(mammal); public boolean isCarnivorous() /判断是否食肉动物 return(carnivorous); abstract public String sayHello(); /打招呼的方式,该方法是抽象的,所以必须在子类中实现 abstract public String sayHello(int moodval); public void setMood(int newValue) /设置情绪值 mood = newValue; public int getMood() /返回情绪值 return(mood); interface LandAnimal /陆生动物接口 public int getNumberOfLegs(); /返回有多少只脚interface WaterAnimal /水生动物接口 public boolean getGillFlag(); /返回是否有腮 public boolean getLaysEggs(); /返回是否产卵class Dog extends Animal implements LandAnimal /狗类继承自动物类,并实现陆生动物接口 / 下面的属性被声明为私有的,并初始化。 private int numberOfLegs = 4; / 缺省构造函数确保属性能够正确设置 public Dog() mammal = true; /是哺乳动物 carnivorous = true; /是食肉动物 / 重载父类的方法 public String sayHello() return(摇摇尾巴); public String sayHello(int moodval) this.setMood(moodval); switch (mood) case SCARED: return(呜呜叫); case COMFORTED: return(旺旺旺叫); return(摇摇尾巴); / 实现 LandAnimal接口 public int getNumberOfLegs() return(numberOfLegs); class Cat extends Animal implements LandAnimal /猫类继承自动物类,并实现生活在陆地上的动物接口 /声明并初始化猫的两个属性 private int numberOfLegs = 4; private boolean tailFlag = true; / 缺省构造函数 public Cat() mammal = true; carnivorous = true; / 重载父类的方法 public String sayHello() return(喵喵叫); public String sayHello(int moodval) this.setMood(moodval); switch (mood) case SCARED: return(嘶嘶叫);/如果情绪烦躁的话,就“嘶嘶叫” case COMFORTED: return(咕噜咕噜叫); /如果情绪好的话,发出“咕噜咕噜”声 return(喵喵叫); /如果情绪好的话,发出“喵”声 / 实现 LandAnimal接口 public int getNumberOfLegs() return(numberOfLegs); class Frog extends Animal implements LandAnimal, WaterAnimal /声明并初始化青蛙的四个属性 private boolean gillFlag = true; private boolean laysEggs = true; private int numberOfLegs = 4; private boolean tailFlag = true; /缺省构造函数 public Frog() mammal = false; carnivorous = false; / 重写父类的“打招呼”的方法 public String sayHello() return(呱呱呱); public String sayHello(int moodval) this.setMood(moodval); switch (mood) case SCARED: return(扑通一声跳入水中); case COMFORTED: return(呱呱呱); return(呱呱呱); / 实现 WaterAnimal接口 public boolean getGillFlag() return(gillFlag); public boolean getLaysEggs() return(laysEggs); / 实现 LandAnimal接口 public int getNumberOfLegs() return(numberOfLegs); 实训项目二 个人简历录入系统一、问题分析编写一个个人简历录入程序,通过文本框录入姓名,通过单选按钮选择性别,通过组合框选择专业(计算机,电子,工商等)和文化程度(大专,本科,硕士,博士等),设置“提交”与“取消”两个按键,当用鼠标点击“提交”按键时,在文本框中显示所填写以及选择的信息。当点击“取消”按键退出系统。 二、开发环境开发工具为JDK,或Eclipse。三、问题分析1、通过swing包中的类完成可视化界面的设计。2、需要使用事件监听类ActionEvent、.ActionListener来完成对事件的操作。3、要使用各种组件,像JButton、JCheckBox等。四、参考代码:package com.hpjianhua.swing; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; public class MyFrame public static void main(String args) new RunFrame(); class RunFrame extends JFrame private JLabel name_label, sex_label, pro_label, lev_label; private TextField field; private JCheckBox manButton, womanButton; private JComboBox proList, levList; private JTextArea mainText; private JButton confirmButton, cancelButton; private JPanel panel1, panel2, panel3, panel4, panel5, panel6, panel1_2, panel3_4, panel5_6; public RunFrame() / this.setLayout(new GridLayout(); this.setTitle(个人简历); this.setSize(300, 400); this.setLocation(200, 200); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); panel5 = new JPanel(); panel6 = new JPanel(); panel1_2 = new JPanel(); panel3_4 = new JPanel(); panel5_6 = new JPanel(); panel1.setLayout(new FlowLayout(); name_label = new JLabel(姓名); panel1.add(name_label); field = new TextField(6); panel1.add(field); panel2.setLayout(new FlowLayout(); sex_label = new JLabel(性别); panel2.add(sex_label); manButton = new JCheckBox(男); panel2.add(manButton); womanButton = new JCheckBox(女); panel2.add(womanButton); panel3.setLayout(new FlowLayout(); pro_label = new JLabel(专业); panel3.add(pro_label); String listValue1 = new String 计算机, 电子, 工商 ; String listValue2 = new String 大专, 本科, 硕士, 博士 ; proList = new JComboBox(listValue1); panel3.add(proList); panel4.setLayout(new FlowLayout(); lev_label = new JLabel(文化程度); panel4.add(lev_label); levList = new JComboBox(listValue2); panel4.add(levList); confimButtonAction cofaction = new confimButtonAction(); cancelButtonAction canaction = new cancelButtonAction(); panel5.setLayout(new FlowLayout(); confirmButton = new JButton(提交); confirmButton.addActionListener(cofaction); panel5.add(confirmButton); cancelButton = new JButton(取消); cancelButton.addActionListener(canaction); panel5.add(cancelButton); panel6.setLayout(new FlowLayout(); mainText = new JTextArea(); mainText.setColumns(20); mainText.setRows(10); panel6.add(mainText); panel1_2.add(panel1, BorderLayout.WEST); panel1_2.add(panel2, BorderLayout.EAST); panel3_4.add(panel3, BorderLayout.WEST); panel3_4.add(panel4, BorderLayout.EAST); panel3_4.add(panel5, BorderLayout.SOUTH); panel5_6.add(panel6, BorderLayout.SOUTH); this.getContentPane().add(panel1_2, BorderLayout.NORTH); / this.getContentPane().add(panel2,BorderLayout.EAST); this.getContentPane().add(panel3_4, BorderLayout.CENTER); this.getContentPane().add(panel5_6, BorderLayout.SOUTH); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); this.setVisible(true); class confimButtonAction implements ActionListener public void actionPerformed(ActionEvent e) String sex =; if(manButton.isSelected() sex=男; else sex=女; mainText.setText(姓名: + field.getText() + n + 性别: + sex + n + 专业: + (String) proList.getSelectedItem() + n + 文化程度: + (String) levList.getSelectedItem() + n); class cancelButtonAction implements ActionListener public void actionPerformed(ActionEvent e) System.exit(0); 实训项目三 计算器Java实现一、问题描述设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。二、实现环境开发环境为JDK,或Eclipse。三、问题分析1、 要求有计算器的操作界面,能够进行加、减、乘、除等混合运算。2、 需要一个创建计算器主窗口的类,ComputerPad.java。3、 需要一个创建运算符号按钮对象的类,NumberButton.java。4、 需要一个负责为主类创建运算符号按钮的对象,OperationButton.java。四、实现代码package computerpad;/* * To change this template, choose Tools | Templates * and open the template in the editor. */* * * author Administrator */import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;import java.text.NumberFormat;public class ComputerPad extends Frame implements ActionListener NumberButton numberButton; OperationButton oprationButton; Button 小数点按钮,正负号按钮,退格按钮, 求倒数按钮,等号按钮,清零按钮; Panel panel; JTextField resultShow; String 运算符号=+,-,*,/; LinkedList 链表; boolean 是否按下等号=false; public ComputerPad() super(计算器); 链表=new LinkedList(); numberButton=new NumberButton10; for(int i=0;i=9;i+) numberButtoni=new NumberButton(i); numberButtoni.addActionListener(this); oprationButton=new OperationButton4; for(int i=0;i4;i+) oprationButtoni=new OperationButton(运算符号i); oprationButtoni.addActionListener(this); 小数点按钮=new Button(.); 正负号按钮 =new Button(+/-); 等号按钮=new Button(=); 求倒数按钮=new Button(1/x); 退格按钮=new Button(退格); 清零按钮=new Button(C); 清零按钮.setForeground(Color.red); 退格按钮.setForeground(Color.red); 等号按钮.setForeground(Color.red); 求倒数按钮.setForeground(Color.blue); 正负号按钮.setForeground(Color.blue); 小数点按钮.setForeground(Color.blue); 退格按钮.addActionListener(this); 清零按钮.addActionListener(this); 等号按钮.addActionListener(this); 小数点按钮.addActionListener(this); 正负号按钮.addActionListener(this); 求倒数按钮.addActionListener(this); resultShow=new JTextField(10); resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); resultShow.setFont(new Font(TimesRoman,Font.PLAIN,14); resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); resultShow.setBackground(Color.white); resultShow.setEditable(false); panel=new Panel(); panel.setLayout(new GridLayout(4,5); panel.add(numberButton1); panel.add(numberButton2); panel.add(numberButton3); panel.add(oprationButton0); panel.add(清零按钮); panel.add(numberButton4); panel.add(numberButton5); panel.add(numberButton6); panel.add(oprationButton1); panel.add(退格按钮); panel.add(numberButton7); panel.add(numberButton8); panel.add(numberButton9); panel.add(oprationButton2); panel.add(求倒数按钮); panel.add(numberButton0); panel.add(正负号按钮); panel.add(小数点按钮); panel.add(oprationButton3); panel.add(等号按钮); add(panel,BorderLayout.CENTER); add(resultShow,BorderLayout.NORTH); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,240,180); setResizable(false); validate(); public void actionPerformed(ActionEvent e) if(e.getSource() instanceof NumberButton) NumberButton b=(NumberButton)e.getSource(); if(链表.size()=0) int number=b.getNumber(); 链表.add(+number); resultShow.setText(+number); 是否按下等号=false; else if(链表.size()=1&是否按下等号=false) int number=b.getNumber(); String num=(String)链表.getFirst(); String s=num.concat(+number); 链表.set(0,s); resultShow.setText(s); else if(链表.size()=1&是否按下等号=true) int number=b.getNumber(); 链表.removeFirst(); 链表.add(+number); 是否按下等号=false; resultShow.setText(+number); else if(链表.size()=2) int number=b.getNumber(); 链表.add(+number); resultShow.setText(+number); else if(链表.size()=3) int number=b.getNumber(); String num=(String)链表.getLast(); String s=num.concat(+number); 链表.set(2,s); resultShow.setText(s); else if(e.getSource() instanceof OperationButton) OperationButton b=(OperationButton)e.getSource(); if(链表.size()=1) String fuhao=b.get运算符号(); 链表.add(fuhao); else if(链表.size()=2) String fuhao=b.get运算符号(); 链表.set(1,fuhao); else if(链表.size()=3) String fuhao=b.get运算符号(); String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1); try double n1=Double.parseDouble(number1); double n2=Double.parseDouble(number2); double n=0; if(运算符号.equals(+) n=n1+n2; else if(运算符号.equals(-) n=n1-n2; else if(运算符号.equals(*) n=n1*n2; else if(运算符号.equals(/) n=n1/n2; 链表.clear(); 链表.add(+n); 链表.add(fuhao); resultShow.setText(+n); catch(Exception ee) else if(e.getSource()=等号按钮) 是否按下等号=true; if(链表.size()=1|链表.size()=2) String num=(String)链表.getFirst(); resultShow.setText(+num); else if(链表.size()=3) String number1=(String)链表.getFirst(); String number2=(String)链表.getLast(); String 运算符号=(String)链表.get(1); try double n1=Double.parseDouble(number1); double n2=Double.parseDouble(number2); double n=0; if(运算符号.equals(+) n=n1+n2; else if(运算符号.equals(-) n=n1-n2; else if(运算符号.equals(*) n=n1*n2; else if(运算符号.equals(/) n=n1/n2; resultShow.setText(+n); 链表.set(0,+n); 链表.removeLast(); 链表.removeLast(); catch(Exception ee) else if(e.getSource()=小数点按钮) if(链表.size()=0) 是否按下等号=false; else if(链表.size()=1)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 销售管理


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!