课程名称 实验项目编号 实验学时 学生学号 实验地点 1505P001803 4学时 敬信楼517 面向对象程序设计 实验项目名称 实验日期 学生姓名 指导教师 类与对象 2016.10.4,10.11 李敏杰 党向盈 成绩
实验三 类与对象
一、实验目的
1.掌握类的定义和使用、对象的声明和创建;
2.理解构造方法的作用,掌握构造方法定义和使用; 3.理解类变量与实例变量,类方法与实例方法的区别; 4.掌握包的概念与使用。
二、实验内容及要求
1、编程创建一个立方体类Cube,在其中定义三个变量length,width,height分别表示一个立方体的长、宽和高,再定义一个方法setCube对这三个变量进行初始化,然后定义求立方体的体积和表面积的方法。
(1)编写一个测试类,在main方法中创建立方体对象,求给定尺寸的立方体的体积和表面积,并输入结果。
(2)改用构造方法实现长、宽和高的初始化。
(3)测试类放在包名为com.sy3.exe01.test包中,其它类放在com.sy3.exa01包中。 (知识点:类的定义,对象的创建,构造方法的使用)
(注意:如果需要从键盘输入长宽高的数据时,请从测试类的main方法中输入,程序的其它地方只接受传递的参数) 代码如下:
package com.sy3.exa01; class Cube { privatefloatwidth; privatefloatheight; privatefloatlength;
// 定义有参构造方法初始化属性
public Cube(float width, float height, float length) { this.width = width; this.height = height; this.length = length; }
// 定义求立方体体积的方法 publicfloat volume() { returnwidth*height*length; }
//定义求立方体表面积的方法
publicfloat Surface_area(){ } }
publicclass Exp03_01_20130501439 {
publicstaticvoid main(String[] args) { }
Cube c=new Cube(7,8,9);
System.out.println(\立方体的体积为:\+c.volume());
System.out.println(\立方体的表面积为:\+c.Surface_area());
return 2*(width*height+width*length+height*length);
// 1、编程创建一个立方体类Cube,在其中定义三个变量length,width,height分别表示一个立方体的长、宽和高,
// 再定义一个方法setCube对这三个变量进行初始化,然后定义求立方体的体积和表面积的方法。
// (1)编写一个测试类,在main方法中创建立方体对象,求给定尺寸的立方体的体积和表面积,并输入结果。
// (2)改用构造方法实现长、宽和高的初始化。
// (3)测试类放在包名为com.sy3.exe01.test包中,其它类放在com.sy3.exa01包中。
// (知识点:类的定义,对象的创建,构造方法的使用)
// (注意:如果需要从键盘输入长宽高的数据时,请从测试类的main方法中输入,程序的其它地方只接受传递的参数) }
package com.sy3.exe01.test;
import java.util.Scanner;
class Cube {
public Cube() {
width=setwidth(); height=setheight(); length=setlength(); privateintwidth; privateintheight; privateintlength;
// TODO 自动生成的构造函数存根 }
privateint setwidth() {
Scanner sa = new Scanner(System.in); width = sa.nextInt(); returnwidth;
}
}
privateint setheight() { }
privateint setlength() { }
// 定义求立方体体积的方法 publicint volume() { }
// 定义求立方体表面积的方法 publicint Surface_area() { }
System.out.println(width+\+height+\+length);
return 2 * (width * height + width * length + height * length); System.out.println(width+\+height+\+length); returnwidth * height * length;
Scanner sc = new Scanner(System.in); length = sc.nextInt(); returnlength;
Scanner sb = new Scanner(System.in); height = sb.nextInt(); returnheight;
publicclass 测试类 {
/**
* 班级:15计单1班 * 学号:20130501439 * 姓名:李敏杰
* 实验时间:2016-10-4,10-11
* 本程序的功能是:求立方体的体积和表面积 */
publicstaticvoid main(String[] args) { // TODO 自动生成的方法存根 Cube c1=new Cube();
System.out.println(\立方体的体积为:\+c1.volume());
System.out.println(\立方体的表面积为:\+c1.Surface_area()); } }
运行结果如下:
2、设计并实现一个课程类,代表学校中的一门课程,将这门课程的相关信息
组成该类的属性(如课程代码、课程名称、课程类别、学时、学分等),并在类中定义各个属性相关的访问方法(如获取和设置课程代码、课程名称,课程类别,获取和修改学时、学分,打印输出课程基本信息等),最后使用主函数测试此类(包括创建对象,调用相应方法等)。 课程号 courId 课程名 courName 学分 courCredit 3 3.5 1 3 1 4 学时 courHours 56 56 32 48 32 64 课程类型 courType 专业选修 专业教育 专业教育 专业教育 专业教育 专业教育 E052026 Linux操作系统 S052005 面向对象程序设计 S052006 面向对象程序设计实验 S052037 数据库原理及应用 S052011 数据库原理及应用实验 S052049 操作系统 要求: (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.exa02;
publicclass Course {
public String courid; public String courname;
public String courcredit; public String courhours; public String courtype; publicintpassingScore; Course(){ }
public Course(String incourid,String incourname,String }
publicvoid setType(String incourtype) { }
publicvoid setHours(String incourhours) { }
publicvoid setCredit(String incourcredit) { }
publicvoid setName(String incourname) { }
publicvoid setID(String incourid) { }
public String getcourtype(){ }
public String getcourname(){
returncourtype; courid=incourid;
courname=incourname;
courcredit=incourcredit;
courhours=incourhours;
courtype=incourtype;
setID(incourid); setName(incourname); setCredit(incourcredit); setHours(incourhours); setType(incourtype); courid=\; courname=\; courcredit=\; courhours=\; courtype=\; passingScore=60;
incourcredit,String incourhours,String incourtype){
}
returncourname;
public String getcourid(){ }
public String getcourhours(){ }
@Override
public String toString() { }
public String getcourcredit(){ }
publicvoid ToString(){
System.out.println(getcourid()+\+getcourname()+\+getcou}
returncourcredit;
return\ + courid + \ + courname
+ \courcredit=\ + courcredit + \courhours=\ + courhours + \ + courtype + \ + + \;
returncourhours; returncourid;
passingScore
rcredit()+\+getcourhours()+\+getcourtype());
// 组成该类的属性(如课程代码、课程名称、课程类别、学时、学分等),并在类中定义各个属性相关的访问方法(如获取和设置课程代码、课程名称,课程类别,获取和修改学时、学分,打印输出课程基本信息等),最后使用主函数测试此类(包括创建对象,调用相应方法等)。 // 课程号
// courId // E052026 // S052005 // S052006 // S052037 // S052011 // S052049 }
package com.sy3.exe02.test; import com.sy3.exa02.*; publicclass 测试类 {
课程名 courName
学分 学时 课程类型 courCredit courHours courType
3 3.5 3
56 56 32 48 32
专业选修 专业教育 专业教育 专业教育 专业教育
Linux操作系统 面向对象程序设计 数据库原理及应用 操作系统
面向对象程序设计实验 1 数据库原理及应用实验 1
4
64 专业教育
/**
* 班级:15计单1班 * 学号:20130501439 * 姓名:李敏杰
* 实验时间:2016-10-4,10-11
* 本程序的功能是:打印输出课程基本信息 */
privatestaticvoid printCourses(Course[] courses, float credit) {
System.out.println(\静态方法printCourses输出学分等于credit的课程信publicstaticvoidExp03_02_20130501439(String[] args) { }
}
System.out.println(); printCourses(cour); float credit=(float) 3.5; printCourses(cour,credit);
System.out.print(i.toString() + \); System.out.println(); //
System.out.println(\课程表\ + \ + \课程名\ + \ + \学分\ + + \ + \课程类型\);
Course[] cour = new Course[6];
cour[0] = new Course(\, \操作系统\, \, \, \
= new Course( \, \面向对象程序设计\, \, = new Course(\, \面向对象程序设计实验\, \,
cour[1] cour[2]
\ + \学时\
专业选修\);
\, \专业教育\); \, \专业教育\ );
cour[3] = new Course( \, \数据库原理及应用\, \, \, cour[4] cour[5]
= new Course(\, \数据库原理及应用实验\, \, = new Course(\, \操作系统\\t\, \, \, \
\专业教育\ ); \, \专业教育\ ); 专业教育\ );
System.out.println(\增强型输出数组:\); for (Course i : cour) {
息\); for(Course i:courses){
if((i.courcredit).equals(Float.toString(credit)))//判断两个
字符串类的内容是否相等 Float是包装类 P191
}
}
System.out.print(i+\); System.out.println();
System.out.println();
}
publicstaticvoid printCourses(Course[] courses){
System.out.println(\静态方法printCourses\);
for(Course i1:courses){
}
System.out.println();
}
System.out.print(i1+\); System.out.println();
// 设计并实现一个课程类,代表学校中的一门课程,将这门课程的相关信息
// 组成该类的属性(如课程代码、课程名称、课程类别、学时、学分等),并在类中定义各个属性相关的访问方法(如获取和设置课程代码、课程名称,课程类别,获取和修改学时、学分,打印输出课程基本信息等),最后使用主函数测试此类(包括创建对象,调用相应方法等)。 // 课程号 课程名 学分 学时 课程类型
// 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包中。
(知识点:类的定义,对象的创建,构造方法的重载,对象数组,对象与对象之间的关系) (注意:参考数据如下,所有数据的输入都在测试类里完成) 学号 stuId 姓名 性别 女 女 女 女 女 女 出生日期 stuBirth 1992/10/2 1992/10/3 1992/10/4 1992/10/5 1992/10/6 1992/10/7 班级名称 stuClass 联系电话 QQ号码 stuTel stuQQ 273464 stuName stuSex 20130501401 刘丹 20130501402 徐小怡 20130501404 赵蒙 20130501405 陈冰倩 20130501406 张琦琦 20130501407 施锦烨 13网络1单 13922222222 7843782 13网络1单 13922222223 13网络2单 13922222224 9043550 13网络2单 13922222225 8397231 13网络2单 13922222226 8244973 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 测试类 {
/**
* 班级:15计单1班 * 学号:20130501439 * 姓名:李敏杰
* 实验时间:2016-10-4,10-11 * 本程序的功能是:添加学生信息、修改学生信息和删除学生信息,以及查找学生信息
*/
public static void Exp_03_03_20130501439(String[] args) { Contacts ct = new Contacts();
Scanner ss=new Scanner(System.in);
System.out.println(\欢迎使用信电工程学院通讯录系统!
\
for(;;){ int i;
String id;
System.out.println(\添加学生信息\\t2:按学号删除学生信息\\r3:按学号查找学生信息\\t4:班级查找学生信息\\r5:输出全部学生的信息\\t6:退出系统\ i=ss.nextInt(); if(i==1)
{System.out.println(\请输入添加学生信息:stuId,stuName,stuSex,stuBirth,stuClass,stuTel,stuQQ\ System.out.println(\参考数据如下\\r\
\刘丹 女 1992/10/2 13网络1单 13922222222 7843782\\r\
\徐小怡 女 1992/10/3 13网络1单 13922222223 273464\\r\
\赵蒙 女 1992/10/4 13网络2单 13922222224 9043550\\r\
\陈冰倩 女 1992/10/5 13网络2单 13922222225 8397231\\r\
// \张琦琦 女 1992/10/6 13网络2单 13922222226 8244973\\r\
\施锦烨 女 1992/10/7 13网络3单 13922222227 4137413\ ct.append(new StudentInfo());}
//ss.next(),ss.next(),ss.next(),ss.next(),ss.next(),ss.next(),ss.next() else if(i==2){
System.out.println(\请输入需要删除学生学号;stuId\ id=ss.next(); ct.Delete(id);} else if(i==3){
System.out.println(\请输入需要查找学生的学号;stuId\ id=ss.next();
ct.findByStuId(id);} else if(i==4){
System.out.println(\请输入需要查找学生的班级;stuClass\
id=ss.next();
ct.findByStuClass(id);} else if(i==5){
System.out.println(\输出全部学生的信息\ ct.find();} else if(i==6){
System.out.println(\感谢使用信电工程学院通讯录系统!\\r欢迎再次使用\\t再见!\ break;} else
System.out.println(\输入有误请重新输入:\ } } }
package com.sy3.exa03;
import com.sy3.exa03.StudentInfo;
publicclass Contacts {
publicvoid append(StudentInfo student) {
if (count> 100) {
System.out.println(\当前容量已满\); }
else { stu[0]=new StudentInfo(\,
student.getInfo(); stu[++count] = student; for(int i=0;i if((stu[count].getstuId()).equals(stu[i].getstuId())){ \ private StudentInfo[] stu = new StudentInfo[100];// 存放学生信息 privateintcount = 0; ,\,\,\,\,\ ); } } count--; System.out.println(\输入学号重复!\);}} // } System.out.println(\有效\ for (int i = 0; i stu[i].showStuInfo(); publicvoid find() { } publicvoid findByStuId(String stuId) { } publicvoid findByStuClass(String stuClass) { } publicvoid Delete(String id) { for (int i = 0; i if ((stu[i].getstuId()).equals(id)) { } for (int j = i; j stu[stu.length] = null; count--; stu[j] = stu[j + 1]; for (int i = 0; i if ((stu[i].getstuClass()).equals(stuClass)) stu[i].showStuInfo(); for (int i = 0; i if ((stu[i].getstuId()).equals(stuId)) stu[i].showStuInfo(); for (int i = 0; i stu[i].showStuInfo(); //else System.out.println(\未找到您查询的班级学生信息!\ } // } } //else System.out.println(\您输入的学号不存在\ for (int i = 0; i stu[i].showStuInfo(); } package com.sy3.exa03; import java.util.Scanner; publicclass StudentInfo { public StudentInfo(String stuId, String stuName, String stuSex, String stuClass) { this.stuId = stuId; this.stuName = stuName; this.stuSex = stuSex; stuBirth = \; this.stuClass = stuClass; stuTel = \; stuQQ = \; } public StudentInfo() { stuId = \; stuName = \; stuSex = \; stuBirth = \; stuClass = \; stuTel = \; stuQQ = \; private String stuId; private String stuName; private String stuSex ; private String stuBirth; private String stuClass; private String stuTel; private String stuQQ; { } public StudentInfo(String stuId, String stuName, String stuSex, } publicvoid getInfo() { 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; System.out.println(\请输入 stuId,stuName,stuSex,stuBirth,stuClass,stuTel,stuQQ\); publicvoid setstuBirth(String stuBirth) { } this.stuBirth = stuBirth; publicvoid setstuSex(String stuSex) { } this.stuSex = stuSex; publicvoid setstuName(String stuName) { } this.stuName = stuName; } publicvoid setstuId(String stuId) { } this.stuId = stuId; Scanner sc = new Scanner(System.in); this.stuId = sc.next(); this.stuName=sc.next(); this.stuSex=sc.next(); this.stuBirth = sc.next(); this.stuClass=sc.next(); this.stuTel=sc.next(); this.stuQQ=sc.next(); publicvoid setstuClass(String stuClass) { } publicvoid setstuTel(String stuTel) { } publicvoid setstuQQ(String stuQQ) { } public String getstuId() { } public String getstuName() { } public String getstuSex() { } public String getstuBirth() { } public String getstuClass() { } public String getstuTel() { } public String getstuQQ() { } returnstuQQ; returnstuTel; returnstuClass; returnstuBirth; returnstuSex; returnstuName; returnstuId; this.stuQQ = stuQQ; this.stuTel = stuTel; this.stuClass = stuClass; publicvoid showStuInfo() { System.out.println(getstuId() + \ + getstuName() + \ + getstuSex() + \ + getstuBirth() + \ + getstuClass() } } + \ + getstuTel() + \ + getstuQQ() ); 运行结果如下: