Java实验报告

班级 计科二班 学号 20188437 姓名 何磊

完成时间 2019/9/12

评分等级

实验二 Java简单类与对象

  1. 实验目的
    1. 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
    2. 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
    3. 理解static修饰付对类、类成员变量及类方法的影响。
  2. 实验内容
    1. 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:

      (1) 使用构造函数完成各属性的初始赋值

      (2) 使用get…()和set…()的形式完成属性的访问及修改

      (3) 提供计算面积的getArea()方法和计算周长的getLength()方法

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

1.

(一)实验代码:

package Rectangle表示矩形;

public class Rectangle {

double width,height,area,length;

String color;

public Rectangle(double width,double height,String color){

this.setWidth(width);

this.setHeight(height);

this.setColor(color);

this.setArea(width,height);

this.setLength(width,height);

}

public void tell(){

System.out.println("宽:"+getWidth()+",高:"+getHeight()+",颜色:"+getColor()+",面积:"+getArea()+",周长:"+getLength());

}

public double getWidth() {

return width;

}

public void setWidth(double width) {

this.width = width;

}

public double getHeight() {

return height;

}

public void setHeight(double height) {

this.height = height;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public double getArea(){

return area;

}

public void setArea(double width,double height){

this.area=width*height;

}

public double getLength(){

return length;

}

public void setLength(double width,double height){

this.length=2*(width+height);

}

}

public class调用Rectangle类 {

public static void main(String[] args) {

Rectangle rec=new Rectangle(15,20,"red");

rec.tell();

}

}

(二)运行结果

2.

(一)实验代码:

package 银行系统;

import java.util.Scanner;
import java.util.Date; class chuli {
private String user,password,name="none",date;
private double balance;
public chuli(String password,double balance){
this.setPassword(password);
this.setBalance(balance);
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
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;
}
} public class bank {
static chuli per[]=new chuli[100];
static int i=-1;
static int id=0;
static String s;
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int j=0;j<100;j++){
per[j]=new chuli("123456",0.0);
}
zhuyemian();
} public static void yewu(int i) {
// TODO Auto-generated method stub
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].getUser());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() {
// TODO Auto-generated method stub
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() {
// TODO Auto-generated method stub
per[id]=new chuli("123456",0.0);
if(id>=100){
s="uniqueid"+id;
per[id].setUser(s);
}else if(id>=10){
s="uniqueid0"+id;
per[id].setUser(s);
}else{
s="uniqueid00"+id;
per[id].setUser(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() {
// TODO Auto-generated method stub
System.out.println("1:开户 2:业务办理");
Scanner input =new Scanner(System.in);
s=input.next();
if(s.equals("1")){
kaihu();
}
if(s.equals("2")){
denglu();
}
}
}

(二)运行结果

1:开户 2:业务办理

请输入您的姓名:

何磊

没有此用户!

1:开户 2:业务办理

1

请输入您的姓名:

何磊

开户成功,您的初始密码为123456,请尽快更改!

请输入您的姓名:

何磊

请输入您的密码:

123456

登陆成功!

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

3

请输入新密码:

654321

修改成功!

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

0

1:开户 2:业务办理

2

请输入您的姓名:

何磊

请输入您的密码:

123456

姓名或密码有误,请重新输入

请输入您的姓名:

何磊

请输入您的密码:

654321

登陆成功!

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

7

您的余额为:0.0

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

6

您的开户日期为:Sat Sep 14 13:22:58 CST 2019

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

5

您的姓名为:何磊

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

4

您的账户标识为:uniqueid000

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

1

存款金额:

10

存款成功!

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

7

您的余额为:10.0

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

2

取款金额:

5

取款成功!

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

7

您的余额为:5.0

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

2

取款金额:

6

余额不足!

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

0

1:开户 2:业务办理

1

请输入您的姓名:

李代传

开户成功,您的初始密码为123456,请尽快更改!

请输入您的姓名:

李代传

请输入您的密码:

123456

登陆成功!

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

7

您的余额为:0.0

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

6

您的开户日期为:Sat Sep 14 13:24:45 CST 2019

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

5

您的姓名为:李代传

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

4

您的账户标识为:uniqueid001

1:存款 2:取款 3:变更密码 4:查询账户标识 5:查询姓名 6:查询开户日期 7:当前余额 0:返回

总结:

这一次的java实验教上一周难度有所提升,但也只是新知识的基础应用,完成的还算顺利吧。

第二题的想法是运用对象数组实现用户信息的储存,用主页面方法、开户办法、业务办理方法、登陆方法这几个主要方法,业务办理方法中实现各种要求的功能。Date方法获取日期来自百度。

第二题遇到的主要问题是没有将对象数组实例化导致程序运行异常中断。

本周学习了String类、this关键字、static关键字、对象数组、包。内容很多, 需要课余复习消化。

第二次Java实验报告的更多相关文章

  1. 20135231 JAVA实验报告三:敏捷开发与XP实践

    ---恢复内容开始--- JAVA实验报告三:敏捷开发与XP实践 20135231 何佳 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习 ...

  2. 20155310第一周JAVA实验报告

    20155310第一周JAVA实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 使用JDK和IDE编译.运行简单 ...

  3. 20145310第一周JAVA实验报告

    20145310第一周JAVA实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 使用JDK和IDE编译.运行简单 ...

  4. 第六周学习总结&java实验报告四

    第六周学习总结&java实验报告四 学习总结: 上一周因为接近国庆假期,所以老师没有讲太多的新知识点,只要是带我们一起做了一个动物模拟变声器的实验,进一步了解和学习到继承的 有关知识点和应用: ...

  5. Java实验报告五:Java网络编程及安全

    Java实验报告五:Java网络编程及安全                                                                               ...

  6. Java实验报告二:Java面向对象程序设计

    Java实验报告二:Java面向对象程序设计                                                                               ...

  7. 20145203盖泽双:Java实验报告二

    Java实验报告二:Java面向对象程序设计 实验要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容 ...

  8. 20145322第一次JAVA实验报告

    20145322第一周JAVA实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的熟悉(Linux + Eclipse) 实验日期:2016.04.08 实 ...

  9. Java实验报告(一)

    Java实验报告(一) 实验过程 1. 打印输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个" ...

随机推荐

  1. 【leetcode】1296. Divide Array in Sets of K Consecutive Numbers

    题目如下: Given an array of integers nums and a positive integer k, find whether it's possible to divide ...

  2. socket、tcp、udp、http 的认识

    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输 ...

  3. shell拷贝文件到另一台机器

    #!/bin/bash data=$(date "+%Y-%m-%d %H:%M:%S") ip='192.168.10.14' password='fan' gitBak='/v ...

  4. 0079 Ehcache 3.x应用入门及通过JCache与Spring整合

    基本要素:版本.概念与抽象 Ehcache 3.x是一个用Java语言实现的缓存库,并且实现了 JSR107规范 Ehcache从2.x升级到3.x后,Maven依赖从 net.sf.ehcache: ...

  5. 2017 ZSTU寒假排位赛 #5

    题目链接:https://vjudge.net/contest/148901#overview. A题,排序以后xjbg即可. B题,弄个数组记录当前列是不是删除以及当前行是不是已经大于下一行然后乱搞 ...

  6. 最小n个和(优先队列)

    给出两个包含 nn 个整数的数组 AA,BB.分别在 AA, BB 中任意出一个数并且相加,可以得到 n^2n2个和.求这些和中最小的 nn 个. 输入格式输入第一行一个整数 n(1 \le n \l ...

  7. Leetcode题目分类整理

    一.数组 8) 双指针 ---- 滑动窗口 例题: 3. Longest Substring Without Repeating Characters 描述:Given a string, find ...

  8. CISCO实验记录一:路由器基本配置

    一.路由器基本配置要求 1.设置路由器名为:hehe 2.设置特权模式下password为ccna,secret为ccnp,vty线路密码为ccie 3.所有明文密码都加密 二.路由器基本配置命令 1 ...

  9. 第二届强网杯部分题writeup

    0x00 题目名称 签到 操作内容:   FLAG值: flag{welcome_to_qwb} 0x01 题目名称 Weclome 操作内容: 通过查看文件发现是一个bmp格式的图片文件,然后加上后 ...

  10. Ubuntu 配置ISCSI服务

    摘要:sudo apt-get install iscsitarget立刻搞定, 然后编辑配置文件:sudovim/etc/ietd.conf默认的配置文件, 有详细的配置说明和示例,本博先备份了事, ...