Java硬核程序设计实验“类与对象”详解【细节满满&源码完整】

 作为上学年 “Java硬核程序设计实验详解” 系列补充 

目录

☀️| 一、实验目的

☀️| 二、实验内容

⭐️1、编程创建一个立方体类Cube

⭐️2、设计并实现一个课程类,代表学校中的一门课程...

⭐️3、设计并实现一个“信电工程学院学生通信录”系统

☀️| 三、实验源代码

❥1.源代码:

❥2.源代码:

❥3.源代码:

☀️| 四、实验总结


☀️| 一、实验目的

1.掌握类的定义和使用、对象的声明和创建;

2.理解构造方法的作用,掌握构造方法定义和使用;

3.理解类变量与实例变量,类方法与实例方法的区别;

4.掌握包的概念与使用。


☀️| 二、实验内容

⭐️1、编程创建一个立方体类Cube

在其中定义三个变量length,width,height分别表示一个立方体的长、宽和高,再定义一个方法setCube对这三个变量进行初始化,然后定义求立方体的体积和表面积的方法。

(1)编写一个测试类,在main方法中创建立方体对象,求给定尺寸的立方体的体积和表面积,并输入结果。

(2)改用构造方法实现长、宽和高的初始化。

(3)测试类放在包名为com.sy3.exe01.test包中,其它类放在com.sy3.exa01包中。

(知识点:类的定义,对象的创建,构造方法的使用)

(注意:如果需要从键盘输入长宽高的数据时,请从测试类的main方法中输入,程序的其它地方只接受传递的参数)

⭐️2、设计并实现一个课程类,代表学校中的一门课程...

将这门课程的相关信息组成该类的属性(如课程代码、课程名称、课程类别、学时、学分等),并在类中定义各个属性相关的访问方法(如获取和设置课程代码、课程名称,课程类别,获取和修改学时、学分,打印输出课程基本信息等),最后使用主函数测试此类(包括创建对象,调用相应方法等)。

课程号

课程名

学分

学时

课程类型

courId

courName

courCredit

courHours

courType

E052026

Linux操作系统

3

56

专业选修

S052005

面向对象程序设计

3.5

56

专业教育

S052006

面向对象程序设计实验

1

32

专业教育

S052037

数据库原理及应用

3

48

专业教育

S052011

数据库原理及应用实验

1

32

专业教育

S052049

操作系统

4

64

专业教育

要求:

(1)创建一个课程类Course,定义该类的各个属性(如上表第二行),为个属性设置相应的setter/getter方法。

(2)定义一个没有参数和带有全部参数的构造方法。

(3)重写toString()方法,返回课程的信息。

(4)在该类中定义一个类变量passingScore,及格标准为60.

(5)新建测试类,在main方法中创建一个大小为6的课程数组,把上面表格中的6门课信息保存在该数组中。利用增强型循环输出课程的信息。

(6)在测试类中定义一个静态方法printCourses(Course[] courses),通过该方法输出课程中的信息。

(7)在测试类中定义一个静态方法printCourses(Course[] courses,float credit),通过该方法输出学分等于credit的课程信息。

(8)测试类放在包名为com.sy3.exe02.test包中,其它类放在com.sy3.exa02包中。

(知识点:类的定义,对象的创建,构造方法的使用,对象数组,静态变量和静态方法,方法重载)

(注意:课程的信息可以直接给定,不一定要通过键盘输入)

⭐️3、设计并实现一个“信电工程学院学生通信录”系统

系统采用字符界面,在出现的主界面中按提示输入相应字符以选择“增加”、“删除”、“修改”、“查找”等功能进行操作。学生通信录信息的存储可采用数组的方式。

要求:

(1)新建一个学生信息类StudentInfo,定义该类的各个属性(如下表第二行),变量的访问修饰符为private,为个属性设置相应的setter/getter方法。

(2)为StudentInfo类定义三个构造方法,一个没有参数,一个带有学号、姓名、性别及班级四个参数,一个带有全部参数。

(3)在StudentInfo类中定义显示学生信息的方法 void showStuInfo()。

(4)创建一个通讯录类Contacts,在该类中定义一个能最大能容纳100个学生的对象数组students,该数组用于保存学生信息,定义一个表示当前有几个学生信息的变量count,该变量类型为整型。变量的访问修饰符为private,为个属性设置相应的setter/getter方法。

(5)在Contacts类中定义添加学生信息、修改学生信息和删除学生信息,以及查找学生信息的方法。

   ● void append(StudentInfo student)

   //在添加学生信息时,学号要保证是唯一的,且保证没有超过最大100人。

   ● void update(StudentInfo newStudent,String stuId)

   //根据学号进行修改

   ● void delete(String stuId)

   //根据学号删除学生信息

   ● Student findByStuId(String stuId)

   //根据学号查找某个学生信息

   ● Student[] findByStuClass(String stuClass)

   //根据班级查找某个班里学生信息

   ● Student[] find()

   //查找所有学生信息

(6)创建测试类,根据输入的命令参数完成学生通讯录信息的“增加”、“删除”、“修改”、“查找”等功能。

(7)测试类放在包名为com.sy3.exe03.test包中,其它类放在com.sy3.exa03包中。

(知识点:类的定义,对象的创建,构造方法的重载,对象数组,对象与对象之间的关系)

(注意:参考数据如下,所有数据的输入都在测试类里完成)

学号

姓名

性别

出生日期

班级名称

联系电话

QQ号码

stuId

stuName

stuSex

stuBirth

stuClass

stuTel

stuQQ

20130501401

刘丹

1992/10/2

13网络1单

13922222222

7843782

20130501402

徐小怡

1992/10/3

13网络1单

13922222223

273464

20130501404

赵蒙

1992/10/4

13网络2单

13922222224

9043550

20130501405

陈冰倩

1992/10/5

13网络2单

13922222225

8397231

20130501406

张琦琦

1992/10/6

13网络2单

13922222226

8244973

20130501407

施锦烨

1992/10/7

13网络3单

13922222227

4137413

数据部分:


☀️| 三、实验源代码

1.源代码:

package EXPS.Exp03.com.sy3.exa01.test;
import EXPS.Exp03.com.sy3.exa01.Cube;
import java.util.Scanner;
/**
 * 班级:19软嵌2
 * 学号:20190507223
 * 姓名:夏旭
 * 实验时间:2020-4-6
 * 本程序的功能是:实现立方体类Cube
 */
public class Exp03_01_20190507223 {
    public static void main(String[] args) {
        Cube cube=new Cube();
        System.out.println("请输入长宽高(空格隔开)");
        Scanner sc=new Scanner(System.in);
        int len=sc.nextInt();
        int wid=sc.nextInt();
        int hei=sc.nextInt();
        cube.setCube(len,wid,hei);
        System.out.println("表面积: "+cube.countSurfacearea());
        System.out.println("体积: "+cube.countVolume());
    }
}

package EXPS.Exp03.com.sy3.exa01;

public class Cube {
    private int length;
    private int width;
    private int height;
    public Cube(){
        this.length=this.width=this.height=0;
    }
    public Cube(int length,int width,int height){
        this.length=length;
        this.width=width;
        this.height=height;   
    }
    public int countSurfacearea(){
        int a=this.length;
        int b=this.width;
        int c=this.height;
        return (a*b+b*c+a*c)*2;
    }
    public int countVolume(){
        return this.length*this.width*this.height;
    }
    public void setCube(int length, int width, int height) {
        this.length = length;
        this.width = width;
        this.height = height;
    }
    public int getLength() {
        return length;
    }
    public void setLength(int length) {
        this.length = length;
    }
    public int getWidth() {
        return width;
    }
    public void setWidth(int width) {
        this.width = width;
    }
    public int getHeight() {
        return height;
    }
    public void setHeight(int height) {
        this.height = height;
    }
}

2.源代码:

package EXPS.Exp03.com.sy3.exa02.test;
import EXPS.Exp03.com.sy3.exa02.Course;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/**
 * 班级:19软嵌2
 * 学号:20190507223
 * 姓名:夏旭
 * 实验时间:2020-4-6
 * 本程序的功能是:实现一个课程类
 */
public  class Exp03_02_20190507223 {
    public static void main(String[] args) {
        String [][] courseArray={
                {"E052026",    "Linux操作系统",   "3"    ,"56", "专业选修"},
                {"S052005","面向对象程序设计","3.5","56","专业教育"},
                {"S052006","面向对象程序设计实验","1","32","专业教育"},
                {"S052037","数据库原理及应用","3","48","专业教育"},
                {"S052011","数据库原理及应用实验","1","32","专业教育"},
                {"S052049","操作系统","4","64","专业教育"},
        };
        Course []lis=new Course[6];
        int idx=0;
        for(String[] i:courseArray){
            lis[idx++]=new Course(i[0],i[1],Float.parseFloat(i[2]),Integer.parseInt(i[3]),i[4]);
        }
        printCourses(lis);

    }
    public static List<Course> printCourses(Course[] courses, float credit){
        List<Course> res=new ArrayList<>();
        for(int i=0;i<courses.length;i++){
            if(credit==courses[i].getCourCredit()){
                res.add(courses[i]);
            }
        }
        return res;
    }
    public static void printCourses(Course[] courses){
        for(Course i:courses){
            System.out.println(i.toString());
        }
    }
}

package EXPS.Exp03.com.sy3.exa02;

public class Course {
    private String courId;
    private String courName;
    private float courCredit;
    private int courHours;
    private String courType;
    static {
        int passingScore=60;
    }
    public Course(String courId,String courName,float courCredit,int courHours,String courType){
        this.courId=courId;
        this.courName=courName;
        this.courCredit=courCredit;
        this.courHours=courHours;
        this.courType=courType;
    }
    public String getCourId() {
        return courId;
    }
    public void setCourId(String courId) {
        this.courId = courId;
    }
    public String getCourName() {
        return courName;
    }
    public void setCourName(String courName) {
        this.courName = courName;
    }
    public double getCourCredit() {
        return courCredit;
    }
    public void setCourCredit(float courCredit) {
        this.courCredit = courCredit;
    }
    public int getCourHours() {
        return courHours;
    }
    public void setCourHours(int courHours) {
        this.courHours = courHours;
    }
    public String getCourType() {
        return courType;
    }
    public void setCourType(String courType) {
        this.courType = courType;
    }

    @Override
    public String toString() {
        return "Course{" +
                "courId='" + courId + '\'' +
                ", courName='" + courName + '\'' +
                ", courCredit=" + courCredit +
                ", courHours=" + courHours +
                ", courType='" + courType + '\'' +
                '}';
    }
}

3.源代码:

package EXPS.Exp03.com.sy3.exa03.test;
import EXPS.Exp03.com.sy3.exa03.Contacts;
import EXPS.Exp03.com.sy3.exa03.StudentInfo;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
 * 班级:19软嵌2
 * 学号:20190507223
 * 姓名:夏旭
 * 实验时间:2020-4-6
 * 本程序的功能是:实现一个“信电工程学院学生通信录”系统
 */
public class Exp03_03_20190507223 {
    private static Boolean flag=false;
    public static void main(String[] args)  {
        Contacts contacts=new Contacts();
        contacts.setList(loadData());
        System.out.println("数据导入完成");
        Scanner sc=new Scanner(System.in);
        while(!flag){
            printMenu();
            int type=sc.nextInt();
            if(type<1 || type>5){
                System.out.println("输入有误,请重新输入");
                continue;
            }
            if(type==1){
                System.out.println("请依次输入学号,姓名,性别,生日,班级,电话,QQ");
                sc.skip("\n");
                String dataLine= sc.nextLine();

                String [] dataArray=dataLine.split(" ");
                if(dataArray.length!=7){
                    System.out.println("信息格式有误,将退回");
                    continue;
                }
                StudentInfo node=new StudentInfo();
                buildNode(node,dataArray);
                contacts.append(node);
            }
            else  if(type==2){
                System.out.println("请输入要删除的学号");
                sc.skip("\n");
                String sId=sc.next();
                contacts.delete(sId);

            }
            else  if(type==3){
                System.out.println("请输入要修改的学号");
                sc.skip("\n");
                String sId=sc.next();
                System.out.println("请输入数据");
                sc.skip("\n");
                String sData=sc.nextLine();
                String []dataArray=sData.split(" ");
                StudentInfo node=new StudentInfo();
                buildNode(node,dataArray);
                contacts.update(node,sId);

            }
            else if(type==4){
                boolean queryFlag=false;
                while(!queryFlag){
                    printQueryMenu();
                    sc.skip("\n");
                    int qType=sc.nextInt();
                    if(qType==1){
                        System.out.println("输入学号");
                        sc.skip("\n");
                        String sId=sc.next();
                        StudentInfo res=contacts.findByStuId(sId);
                        if(res!=null){
                            System.out.println(res.toString());
                        }
                        else{
                            System.out.println("未找到数据");
                        }

                    }
                    else if (qType==2){
                        System.out.println("输入班级");
                        sc.skip("\n");
                        String sClass=sc.next();
                        List<StudentInfo> members=contacts.findByStuClass(sClass);
                        if(members.size()!=0){
                            for(int i=0;i<members.size();i++){
                                System.out.println(members.get(i).toString());
                            }
                        }
                        else{
                            System.out.println("未找到数据");
                        }
                    }
                    else if(qType==3){
                        List<StudentInfo> members=contacts.find();
                        if(members.size()!=0){
                            for(int i=0;i<members.size();i++){
                                System.out.println(members.get(i).toString());
                            }
                        }
                        else{
                            System.out.println("数据空");
                        }

                    }
                    else{
                        queryFlag=true;
                    }
                }
            }
            else{
                flag=true;
            }
        }

    }
    public static ArrayList<StudentInfo> loadData() {
        ArrayList<StudentInfo> res=new ArrayList<>();
        res.add(new StudentInfo("20130501401","刘丹","女","1992/10/2","13网络1单","13922222222","7843782 "));
        res.add(new StudentInfo("20130501402","徐小怡","女","1992/10/3","13网络1单","13922222223","273464"));
        res.add(new StudentInfo("20130501404","赵蒙","女","1992/10/4","13网络2单","13922222224","9043550" ));
        res.add(new StudentInfo("20130501405","陈冰倩","女","1992/10/5","13网络2单","13922222225","8397231" ));
        res.add(new StudentInfo("20130501406","张琦琦","女","1992/10/6","13网络2单","13922222226","8244973"));
        //res.append(new StudentInfo("20130501407","施锦烨","女","1992/10/7","13网络3单","13922222227","4137413"));
        return res;
    }
    public static void printMenu(){
        System.out.println("-----------------");
        System.out.println("1.增    2.删     3.改       4.查    5.退出");
        System.out.println("-----------------");
    }
    public static void buildNode(StudentInfo node,String[] dataArray){
        node.setStuId(dataArray[0]);
        node.setStuBirth(dataArray[1]);
        node.setStuSex(dataArray[2]);
        node.setStuBirth(dataArray[3]);
        node.setStuClass(dataArray[4]);
        node.setStuTel(dataArray[5]);
        node.setStuQQ(dataArray[6]);

    }
    public static void  printQueryMenu(){
        System.out.println("-----------------");
        System.out.println("1.根据学号查找    2.根据班级查找     3.查找全部数据       4.返回");
        System.out.println("-----------------");
    }
}

package EXPS.Exp03.com.sy3.exa03;
import java.util.ArrayList;
import java.util.List;
public class Contacts {
    private  final int maxPool=100;
    private int count;
    private ArrayList<StudentInfo> list;

    public int getMaxPool() {
        return maxPool;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public ArrayList<StudentInfo> getList() {
        return list;
    }
    public void setList(ArrayList<StudentInfo> list) {
        this.list = list;
    }
    public void append(StudentInfo student){
        if(this.count>=maxPool){
            System.out.println("添加失败,序列已满");
            return;
        }
        String Id=student.getStuId();
        for(int i=0;i<list.size();i++){
            String tempId=list.get(i).getStuId();
            if(Id.equals(tempId)){
                System.out.println("添加失败,该学号已存在");
                return;
            }
        }
        list.add(student);
        System.out.println("添加完成");
    }
    public void update(StudentInfo newStudent,String stuId){
        for(int i=0;i<list.size();i++){
            if(stuId.equals(list.get(i).getStuId())){
                list.remove(i);
                list.add(newStudent);
                System.out.println("修改完成");
                return;
            }
        }
        System.out.println("未找到数据");
    }
    public void delete(String stuId){
        for(int i=0;i<list.size();i++){
            if(stuId.equals(list.get(i).getStuId())){
                list.remove(i);
                System.out.println("删除成功");
                return;
            }
        }
        System.out.println("未找到数据 ");

    }
    public StudentInfo findByStuId(String stuId){
        for(int i=0;i<list.size();i++){
            if(stuId.equals(list.get(i).getStuId())){

                return list.get(i);
            }
        }
        return null;
    }
    public List<StudentInfo> findByStuClass(String stuClass){
        List<StudentInfo> res=new ArrayList<>();
        for(int i=0;i<list.size();i++){
            if(stuClass.equals(list.get(i).getStuClass())){
                res.add(list.get(i));
            }
        }
        return res;
    }
    public List<StudentInfo> find(){
        return list;
    }


}

package EXPS.Exp03.com.sy3.exa03;
import javax.print.DocFlavor;
public class StudentInfo {
    private String stuId;
    private String stuName;
    private String stuSex;
    private String stuBirth;
    private String stuClass;
    private String stuTel;
    private String stuQQ;
    public StudentInfo() {


    }
    public StudentInfo(String stuId,String stuName,String stuSex,String stuClass){
        this.stuId = stuId;
        this.stuName = stuName;
        this.stuSex = stuSex;
        this.stuClass = stuClass;
    }

    public StudentInfo(String stuId, String stuName, String stuSex, String stuBirth, String stuClass, String stuTel, String stuQQ) {
        this.stuId = stuId;
        this.stuName = stuName;
        this.stuSex = stuSex;
        this.stuBirth = stuBirth;
        this.stuClass = stuClass;
        this.stuTel = stuTel;
        this.stuQQ = stuQQ;
    }

    public String getStuId() {
        return stuId;
    }
    public void setStuId(String stuId) {
        this.stuId = stuId;
    }
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public String getStuSex() {
        return stuSex;
    }
    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }
    public String getStuBirth() {
        return stuBirth;
    }
    public void setStuBirth(String stuBirth) {
        this.stuBirth = stuBirth;
    }
    public String getStuClass() {
        return stuClass;
    }
    public void setStuClass(String stuClass) {
        this.stuClass = stuClass;
    }
    public String getStuTel() {
        return stuTel;
    }
    public void setStuTel(String stuTel) {
        this.stuTel = stuTel;
    }
    public String getStuQQ() {
        return stuQQ;
    }
    public void setStuQQ(String stuQQ) {
        this.stuQQ = stuQQ;
    }

    public void showStuInfo(){
        System.out.println("stuId="+stuId);
        System.out.println("stuName="+stuName);
        System.out.println("stuSex="+stuSex);
        System.out.println("stuBirth="+stuBirth);
        System.out.println("stuClass="+stuClass);
        System.out.println("stuTel="+stuTel);
        System.out.println("stuQQ="+stuQQ);
    }

    @Override
    public String toString() {
        return "StudentInfo{" +
                "stuId='" + stuId + '\'' +
                ", stuName='" + stuName + '\'' +
                ", stuSex='" + stuSex + '\'' +
                ", stuBirth='" + stuBirth + '\'' +
                ", stuClass='" + stuClass + '\'' +
                ", stuTel='" + stuTel + '\'' +
                ", stuQQ='" + stuQQ + '\'' +
                '}';
    }
}

☀️​​​​​​​| 四、实验总结

通过这次实验,我掌握了类的定义和使用、对象的声明和创建。理解了构造方法的作用以及类变量与实例变量,掌握了构造方法的定义和使用以及类方法与实例方法的区别。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米莱虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值