面向对象程序设计 实验三 类与对象(立方体类Cube、课程类、“信电工程学院学生通信录”系统)

您所在的位置:网站首页 立方体类的实现Box 面向对象程序设计 实验三 类与对象(立方体类Cube、课程类、“信电工程学院学生通信录”系统)

面向对象程序设计 实验三 类与对象(立方体类Cube、课程类、“信电工程学院学生通信录”系统)

2024-07-17 20:07| 来源: 网络整理| 查看: 265

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

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

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

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

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

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

        主类

package com.sy3.exe01.test; import com.sy3.exa01.Cube; import java.util.Scanner; public class Exp_03_01_20200508146 { public static void main(String[] args) { Cube cube = new Cube(); Scanner in = new Scanner(System.in); System.out.println("请输入长宽高:"); int len = in.nextInt(); int wid = in.nextInt(); int high = in.nextInt(); cube.setCube(len, wid, high); System.out.println("表面积: " + cube.cacuSurface() + " 体积: " + cube.cacuVolume()); in.close(); } }

        子类

package com.sy3.exa01; public class Cube { private int length; private int width; private int height; public Cube() { this.length = 0; this.width = 0; this.height = 0; } public Cube(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; } public void setCube(int length, int width, int height) { this.length = length; this.width = width; this.height = height; } public int cacuSurface() { return (this.length * this.width + this.width * this.height + this.length * this.height) * 2; } public int cacuVolume() { return this.length * this.width * this.height; } } 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包中。

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

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

        主类

package com.sy3.exe02.test; import com.sy3.exa02.Course; public class Exp_03_02_20200508146 { public static void main(String[] args) { String[] courseId = { "E052026", "S052005", "S052006", "S052037", "S052011", "S052049" }; String[] courseName = { "Linux操作系统", "面向对象程序设计", "面向对象程序设计实验", "数据库原理及应用", "数据库原理及应用实验", "操作系统" }; float[] courseCredit = { 3, 3.5f, 1, 3, 1, 4 }; int[] courseHours = { 56, 56, 32, 48, 32, 64 }; String[] courseType = { "专业选修", "专业教育", "专业教育", "专业教育", "专业教育", "专业教育" }; Course[] lis = new Course[6]; for (int i = 0; i < 6; ++i) { lis[i] = new Course(courseId[i], courseName[i], courseCredit[i], courseHours[i], courseType[i]); } printCourses(lis); printCourses(lis, 1); } public static void printCourses(Course[] courses) { System.out.println("全部课程信息:"); for (int i = 0; i < 6; ++i) { System.out.println(courses[i].toString()); } /* * for (Course it : courses) { System.out.println(it.toString()); } */ } public static void printCourses(Course[] courses, float credit) { System.out.println("学分等于" + credit + "的课程信息:"); for (Course it : courses) { if (it.getCourCredit() == credit) { System.out.println(it.toString()); } } } }

        子类

package 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() { } 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 float 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; } public void setCour(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; } @Override public String toString() { return "Course{" + "courId='" + courId + '\'' + ", courName='" + courName + '\'' + ", courCredit=" + courCredit + ", courHours=" + courHours + ", courType='" + courType + '\'' + '}'; } } 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

        主类

package com.sy3.exe03.test; import java.util.Scanner; import com.sy3.exa03.Contacts; import com.sy3.exa03.StudentInfo; public class Exp_03_03_20200508146 { private static Scanner cin = new Scanner(System.in); private static boolean isEnd = false; private static String[] stuHead = { "学号", "姓名", "性别", "出生日期", "班级名称", "联系电话", "QQ号码" }; private static Contacts contacts = new Contacts(); public static void main(String[] args) { int operation; contacts.setOrinInfo(); while (!isEnd) { printRootMenu(); operation = cin.nextInt(); if (operation < 0 || operation > 4) { System.out.println("非法输入!"); continue; } switch (operation) { case 0: opEnd(); break; case 1: opAdd(); break; case 2: opDel(); break; case 3: opUpdate(); break; case 4: opQuery(); break; } } } public static void printRootMenu() { System.out.println("-----------------------------------------------------"); System.out.println("1:增加 2:删除 3:修改 4:查找 0:退出"); System.out.println("-----------------------------------------------------"); } public static void printQueryMenu() { System.out.println("-----------------------------------------------------"); System.out.println("1:根据学号查找 2:根据班级查找 3:查找全部数据 0:退出"); System.out.println("-----------------------------------------------------"); } public static void printUpdateMenu() { System.out.println("--------------------------------------------------------------------------"); System.out.println("1:修改学号 2:修改姓名 3:修改性别 4:修改出生日期 5:修改班级 6:修改电话 7:修改QQ 0:退出"); System.out.println("(若需修改多项信息, 请于一行中输入待修改项与修改值并以回车结束当前项信息输入)"); System.out.println("--------------------------------------------------------------------------"); } public static void printInfoHead() { for (int i = 0; i < 7; i++) { System.out.print(stuHead[i] + " "); } System.out.println(); } public static void opEnd() { System.out.println("系统已退出"); isEnd = true; cin.close(); } public static void opAdd() { StudentInfo temp = new StudentInfo(); System.out.println("请依次输入:"); printInfoHead(); temp.setStuId(cin.next()); temp.setStuName(cin.next()); temp.setStuSex(cin.next()); temp.setStuBirth(cin.next()); temp.setStuClass(cin.next()); temp.setStuTel(cin.next()); temp.setStuQQ(cin.next()); temp.setStuState(true); contacts.append(temp); } public static void opDel() { System.out.println("请输入待删除学生的学号:"); String Id = cin.next(); contacts.delete(Id); return; } public static void opUpdate() { System.out.println("请输入待修改学生的学号:"); String stuId = cin.next(); StudentInfo newStudent = contacts.findByStuId(stuId); if (newStudent == null) { System.out.println("查无此人!返回至主菜单"); return; } printUpdateMenu(); while (true) { int op = cin.nextInt(); if (op == 0) break; String opValue = cin.next(); switch (op) { case 1: newStudent.setStuId(opValue); break; case 2: newStudent.setStuName(opValue); break; case 3: newStudent.setStuSex(opValue); break; case 4: newStudent.setStuBirth(opValue); break; case 5: newStudent.setStuClass(opValue); break; case 6: newStudent.setStuTel(opValue); break; case 7: newStudent.setStuQQ(opValue); break; } } contacts.update(newStudent, stuId); return; } public static void opQuery() { printQueryMenu(); String op = cin.next(); String opValue; switch (op) { case "1": opValue = cin.next(); printInfo1(contacts.findByStuId(opValue)); break; case "2": opValue = cin.next(); printInfo2(contacts.findByClass(opValue)); break; case "3": printInfo2(contacts.find()); break; case "0": break; default: System.out.println("输入非法!\n返回至主菜单"); break; } return; } public static void printInfo1(StudentInfo stuInfo) { if (contacts.getSizePoolFind()


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3