实验二 Java简单类与对象


Java实验报告

班级 2020级软件工程3班
学号 20209155
姓名 毛路桥
完成时间 2022年3月27日

实验二 Java简单类与对象

一、 实验目的

(1) 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
(2) 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
(3) 理解static修饰符对类、类成员变量及类方法的影响。

二、 实验内容

  1. 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
    (1) 使用构造函数完成各属性的初始赋值
    (2) 使用get…()和set…()的形式完成属性的访问及修改
    (3) 提供计算面积的getArea()方法和计算周长的getLength()方法
  2. 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。

三、 实验过程

题目一

写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
代码截图如下:

代码截图如下:
在这里插入图片描述

运行结果如下:

在这里插入图片描述

题目一完整代码:

package operator;
public class Rectangle {
    private double height;
    private double width;
    private String color;
    public Rectangle(double width,double height,String color){
        this.setColor(color);
        this.setHeight(height);
        this.setWidth(width);
    }
    public double getHeight() {

        return height;
    }
    public void setHeight(double height) {

        this.height = height;
    }
    public double getWidth() {

        return width;
    }
    public void setWidth(double width) {
        this.width = width;
    }
    public String getColor() {

        return color;
    }
    public void setColor(String color) {

        this.color = color;
    }
    public void getArea(){
        double area=0;
        area=this.height*this.width;
        System.out.println("矩形的面积:"+area);
    }
    public void getLength(){
        double length;
        length=width+height+width+height;
        System.out.println("矩形的周长:"+length);
    }
    public String toString(){
        String recStr="矩形的高度:"+this.getHeight()+"宽度:"+this.getWidth()+"颜色:"+this.getColor();
        return recStr;
    }
    public static void main(String[] args) {
        Rectangle rec=new Rectangle(5,10,"红色");
        rec.getArea();
        rec.getLength();
        System.out.println(rec.toString());
    }
}

题目二

银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。

代码截图如下:

在这里插入图片描述

运行结果如下:
在这里插入图片描述
题目二完整代码:

package Account;
import java.util.Scanner;
import java.util.Date;

    class Test {
        private String sign,password,name="none",date;
        private double balance;
        public Test(String password,double balance){
            this.setPassword(password);
            this.setBalance(balance);
        }
        public String getsign() {
            return sign;
        }
        public void setsign(String sign) {
            this.sign = sign;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public double getBalance() {
            return balance;
        }
        public void setBalance(double balance) {
            this.balance = balance;
        }
        public String getDate() {
            return date;
        }
        public void setDate(String date) {
            this.date = date;
        }
    }

     class Bank {
        static Test per[]=new Test[100];
        static int i=-1;
        static int id=0;
        static String s;
        public static void main(String[] args) {
            for(int j=0;j<100;j++){
                per[j]=new Test("123456",0.0);
            }
            zhuyemian();
        }

        public static void yewu(int i) {
            System.out.println("1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回");
            Scanner input=new Scanner(System.in);
            switch(input.nextInt()){
                case 1:System.out.println("存款金额:");
                    per[i].setBalance(input.nextDouble()+per[i].getBalance());
                    System.out.println("存款成功!");yewu(i);
                case 2:System.out.println("取款金额:");
                    if(per[i].getBalance()-input.nextDouble()<0){
                        System.out.println("余额不足!");yewu(i);
                    }
                    else{
                        per[i].setBalance(per[i].getBalance()-input.nextDouble());
                        System.out.println("取款成功!");yewu(i);
                    }
                case 3:System.out.println("请输入新密码:");
                    per[i].setPassword(input.next());
                    System.out.println("修改成功!");yewu(i);
                case 4:System.out.println("您的账户标识为:"+per[i].getsign());yewu(i);
                case 5:System.out.println("您的姓名为:"+per[i].getName());yewu(i);
                case 6:System.out.println("您的开户日期为:"+per[i].getDate());yewu(i);
                case 7:System.out.println("您的余额为:"+per[i].getBalance());yewu(i);
                case 0:zhuyemian();
            }
        }

        public static void denglu() {
            System.out.println("请输入您的姓名:");
            Scanner input=new Scanner(System.in);
            s=input.next();
            i=-1;
            while(i<99){
                i++;
                if(s.equals(per[i].getName())){
                    System.out.println("请输入您的密码:");
                    if(input.next().equals(per[i].getPassword())){
                        System.out.println("登陆成功!");
                        yewu(i);
                    }
                    else{
                        System.out.println("姓名或密码有误,请重新输入");
                        denglu();
                    }
                }
            }
            System.out.println("没有此用户!");
            zhuyemian();
        }

        public static void kaihu() {
            per[id]=new Test("123456",0.0);
            if(id>=100){
                s="uniqueid"+id;
                per[id].setsign(s);
            }else if(id>=10){
                s="uniqueid0"+id;
                per[id].setsign(s);
            }else{
                s="uniqueid00"+id;
                per[id].setsign(s);
            }
            Date date=new Date();
            per[id].setDate(date.toString());
            System.out.println("请输入您的姓名:");
            Scanner input=new Scanner(System.in);
            per[id].setName(input.next());
            System.out.println("开户成功,您的初始密码为123456,请尽快更改!");
            id++;
            denglu();
        }

        public static void zhuyemian() {
            System.out.println("1:开户 2:业务办理");
            Scanner input =new Scanner(System.in);
            s=input.next();
            if(s.equals("1")){
                kaihu();
            }
            if(s.equals("2")){
                denglu();
            }
        }
    }

总结:通过学习,加深了自己对String类方法知识的理解,李津老师讲课非常有活力,每堂课都自己操作,然后每个知识点讲的也是非常的细致明白。本周实验题主要用于复习和练习String类方法及知识内容中的一些对Java程序源代码的封装性,实验题第一题求矩形面积周长,实验内容包括string类方法、get()、set()对源代码信息进行封装、this关键字。其它的话也没有太大课外的知识点。那么第二题的话,运用目前学习的Java内容还不足以实现对其的读法。1、String类在Java中比较特殊,String可以实验直接赋值的方式,也可以通过构造方法进行实例化,前者只产生一个实例化对象,而且此实例化对象可以重用,后者将产生两个实例化对象,其中一个是垃圾空间,在Sting中比较内容equals方法,而“==”比较的只是两个字符串的地址值。字符串的内容一旦声明则不可被改变。

``

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java面向对象与多线程综合实验是一个综合性实验,旨在帮助学生巩固Java面向对象和多线程的相关知识,并应用在实际编程中。 在这个实验中,学生需要设计一个简单的图书管理系统,该系统可以管理图书的借阅和归还,并包含一些基本的图书信息管理功能。这个系统应该基于面向对象的设计原则,将图书、借阅者和库存等概念抽象为对象,并建立它们之间的关联关系。 为了提高系统的并发性能,学生还需要使用多线程编程技术,将借阅和归还的操作并行执行。可以使用线程池来管理多个借阅和归还的线程,并使用锁机制来确保借阅和归还操作的安全性,避免并发访问冲突。 在实验过程中,学生需要实现以下主要功能: 1. 图书的添加、删除和查询功能:学生可以定义一个图书类,包含图书的基本信息,如书名、作者、ISBN等。通过使用面向对象的思想,学生可以设计一个图书管理类,实现图书的添加、删除和查询等功能。 2. 借阅和归还功能:学生可以定义一个借阅者类,包含借阅者的基本信息,如姓名、学号等。通过使用面向对象的思想,借阅者和图书之间可以建立关联关系。学生需要实现借阅和归还的功能,并确保借阅者不能借阅超过一定数量的图书。 3. 多线程处理:学生可以使用多线程编程技术,将借阅和归还的操作并行执行。可以使用线程池来管理多个借阅和归还的线程,并使用锁机制来确保借阅和归还操作的安全性,避免并发访问冲突。 通过完成这个实验,学生可以加深对Java面向对象和多线程的理解,同时也能提高编程的能力和实践经验。此外,这个实验还可以帮助学生培养分析和解决问题的能力,提高软件开发的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值