JAVA语言程序设计实验五定义和使用类和对象实验报告 2.docx
《JAVA语言程序设计实验五定义和使用类和对象实验报告 2.docx》由会员分享,可在线阅读,更多相关《JAVA语言程序设计实验五定义和使用类和对象实验报告 2.docx(18页珍藏版)》请在冰点文库上搜索。
JAVA语言程序设计实验五定义和使用类和对象实验报告2
**大学**学院
JAVA语言程序设计实验报告
实验名称:
实验五定义和使用类和对象
班级:
姓名:
学号:
实验地点:
日期:
一、实验目的:
1、掌握类和构造方法的定义
2、理解静态和非静态成员变量的区别
3、掌握创建类实例的方法
二、实验环境:
有Java环境的计算机若干台
三、实验内容和要求:
1.下面是一个教师类Teacher,用于学校某个系部的管理。
系部在管理教师时,所关心的信息主要有教师编号、姓名、性别、年龄、家庭住址、电话号码等,于是抽取这些属性来描述"教师"这个实体。
考虑到教师年龄、家庭住址、电话号码等不宜对无关人员公开,于是将这些数据设为私有的成员变量(即实行保护)。
要获得这些数据,必须使用类所提供的一组方法,并给出口令。
检查口令是否正确是由私有方法checkPasswork完成的。
阅读并编译这一程序,体会类的成员变量、类的方法以及访问权限的设计。
要求a:
先不看下面代码,自己先设计一个类
要求b:
阅读下面程序,错误改正后,并进行验证测试。
classTeacher//定义教师类
{//声明成员变量
StringtCode;//教师编号
StringtName;//教师姓名
StringtSex;//教师性别
privateStringtAge;//教师年龄
privateStringtAddr;//家庭住址
privateStringtTelenmb;//电话号
privateStringtPassword;//访问口令//声明构造方法
Teacher(Stringpassword){tPassword=password;}//声明成员方法
privateintcheckPassword(Stringpassword)//私有方法:
检查口令是否正确
{if(tPassword==password)return1;elsereturn0;}
voidprint(){
System.out.println("tcode="+tCode+\n+"tname="+tName
+"tage="+tAge+"tAddr="+tAddr+"tTelenmb="+tTelenmb);
}
voidsetAge(Stringpassword,Stringage)//置年龄
{if(checkPassword(password)==1){tAge=age;}}
StringgetAge(Stringpassword)//取年龄
{if(checkPassword(password)==1)returntAge;
elsereturn"Wrongpassword!
";}
voidsetAddr(Stringpassword,Stringaddr)//置家庭地址
{if(checkPassword(password)==1){tAddr=addr;}}
StringgetAddr(Stringpassword)//取家庭地址
{if(checkPassword(password)==1)returntAddr;
elsereturn"Wrongpassword!
";}
voidsetTelenmb(Stringpassword,Stringtelenmb)//置电话号码
{if(checkPassword(password)==1){tTelenmb=telenmb;}}
StringgetTelenmb(Stringpassword)//取电话号码
{if(checkPassword(password)==1)returntTelenmb;
elsereturn"Wrongpassword!
";}
}
publicclassTestTeacher{
publicstaticvoidmain(Stringargs[]){
Teachert1=newTeacher("123");t1.setAge("124","46");//error
t1.setAge("123","48");//right
t1.setAddr("124","ttt");
t1.setAddr("123","学院");
t1.setAddr("124","88362146");
t1.setTelenmb("123","88362146");
t1.print();
}
}
2、参考上题实例,设计学生类
classStudent//Student是类名
{
//声明成员变量
intsNumber;//学号
StringsName;//姓名
StringsClass;//班号
}
publicclassCheck0//主类Check0
{
publicstaticvoidmain(Stringargs[])//主方法main
{Studentx=newStudent();//创建Student类的对象x
//访问成员变量
x.sName=″myname″;
x.sNumber=900001;
System.out.println(x.sName);
System.out.println(x.sNumber);
}
}
若要使Student类可用于一个全校同学的通信录程序,设计一具更完善的Student类,设计时应考虑抽取哪些属性来描述"学生"这个实体,哪些数据需要保护,应提供哪些方法,等等
3、(课堂讲解实例)定义一个银行账户,要求有身份证号码,用户名和密码,余额等属性:
定义一个银行账户类,该类中有以下几个属性和方法:
classAccount
{
intid;
Stringname;
floatleftmoney;
Stringpass;
publicbooleanwithdrawMoney(floatamount){}
publicbooleansaveMoney(floatamount){}
}
要求:
第一:
使用eclipse给每个属性增加get和set方法,即封装性
第二在读余额的属性上要求验证密码
第三、完成存钱和取钱的方法,要求也需要密码验证
最后写一个类测试账户类。
附课堂代码:
importjavax.swing.JOptionPane;
publicclassaccount{
privateintID;
privatefloatleft;
privateStringpass;
publicintgetID(){returnID;
}
publicvoidsetID(intiD){
ID=iD;}
publicfloatgetLeft(){
returnleft;
}
publicvoidsetLeft(floatleft){
this.left=left;
}
publicStringgetPass(){
returnpass;
}
publicvoidsetPass(Stringpass){
this.pass=pass;
}
voidinqury()
{
Stringpass1=JOptionPane.showInputDialog("输入密码");
if(pass1.equals(getPass()))
{floata=getLeft();
JOptionPane.showConfirmDialog(null,a,"余额",0);}
}
voiddespoit(floatmoney)
{left=left+money;}
voidwitharaw(floatmoney)
{left=left-money;}
}
classbanktest
{publicstaticvoidmain(Stringargs[])
{
//accountaofzdd=newaccount();
accountaofzdd;
aofzdd=newaccount();
aofzdd.setPass("123");
aofzdd.setLeft(456789123);
aofzdd.inqury();
}
}
4、编写一个学校类,其中包括成员变量scoreLine(录取分数线)和对该变量进行设置和获取的方法。
1)编写一个学生类,她的成员变量有考生的name(姓名)、id(考号)、intgretResult(综合成绩)、sports(体育成绩)。
它还有获取学生的综合成绩和体育成绩的方法。
2)编写一个录取类,它的一个方法用于判断学生是否符合录取条件。
其中录取条件为:
综合成绩在录取分数线之上,或体育成绩在96分以上并且综合成绩大于300分。
该类中的main()方法建立若干个学生对象,对输出符合录取条件的学生,输出其信息及“被录取”。
要求:
1)学生类的构造方法带4个参数,分别接收学生的姓名、考号、综合成绩和体育成绩。
2)学校类仅包括静态成员变量和方法
四、实验步骤:
1.
classTeacher//定义教师类
{//声明成员变量
StringtCode;//教师编号
StringtName;//教师姓名
StringtSex;//教师性别
privateStringtAge;//教师年龄
privateStringtAddr;//家庭住址
privateStringtTelenmb;//电话号
privateStringtPassword;//访问口令//声明构造方法
Teacher(Stringpassword){tPassword=password;}//声明成员方法
privatebooleancheckPassword(Stringpassword){//私有方法:
检查口令是否正确
if(tPassword==password)
returntrue;
else
returnfalse;
}
voidprint(){
System.out.println("tcode="+tCode+"\ntname="+tName+
"\ntage="+tAge+"\ntAddr="+tAddr+"\ntTelenmb="+tTelenmb);
}
voidsetAge(Stringpassword,Stringage){//置年龄
if(checkPassword(password))
tAge=age;
}
StringgetAge(Stringpassword){//取年龄
if(checkPassword(password))
returntAge;
else
return"Wrongpassword!
";
}
voidsetAddr(Stringpassword,Stringaddr){//置家庭地址
if(checkPassword(password))
tAddr=addr;
}
StringgetAddr(Stringpassword){//取家庭地址
if(checkPassword(password))
returntAddr;
else
return"Wrongpassword!
";
}
voidsetTelenmb(Stringpassword,Stringtelenmb){//置电话号码
if(checkPassword(password))
tTelenmb=telenmb;
}
StringgetTelenmb(Stringpassword){//取电话号码
if(checkPassword(password))
returntTelenmb;
else
return"Wrongpassword!
";
}
}
publicclassTestTeacher{
publicstaticvoidmain(Stringargs[]){
Teachert1=newTeacher("123");
t1.setAge("124","46");//error
t1.setAge("123","48");//right
t1.setAddr("124","ttt");
t1.setAddr("123","学院");//right
t1.setAddr("124","88362146");
t1.setTelenmb("123","88362146");//right
t1.print();
}
}
2.
classStudent{//Student是类名
intsNumber;//学号
StringsName;//姓名
StringsClass;//班号
privateStringsAge;//年龄
privateStringsAddr;//家庭住址
privateStringsTelenmb;//联系电话
privateStringsDormitory;//寝室号
privateStringsPassword;//访问口令
Student(Stringpassword){sPassword=password;}//声明成员方法
privatebooleancheckPassword(Stringpassword){
if(sPassword==password)
returntrue;
else
returnfalse;
}
voidprint(){
System.out.println("sName="+sName+"\nsNumber="+sNumber+"\nsClass"+sClass+
"\nsage="+sAge+"\ntAddr="+sAddr+"\nsTelenmb="+sTelenmb+"\nsDormitory="+sDormitory);
}
voidsetAge(Stringpassword,Stringage){//置年龄
if(checkPassword(password))
sAge=age;
}
StringgetAge(Stringpassword){//取年龄
if(checkPassword(password))
returnsAge;
else
return"Wrongpassword!
";
}
voidsetAddr(Stringpassword,Stringaddr){//置家庭地址
if(checkPassword(password))
sAddr=addr;
}
StringgetAddr(Stringpassword){//取家庭地址
if(checkPassword(password))
returnsAddr;
else
return"Wrongpassword!
";
}
voidsetTelenmb(Stringpassword,Stringtelenmb){//置电话号码
if(checkPassword(password))
sTelenmb=telenmb;
}
StringgetTelenmb(Stringpassword){//取电话号码
if(checkPassword(password))
returnsTelenmb;
else
return"Wrongpassword!
";
}
voidsetDormitory(Stringpassword,Stringdormitory){//置寝室号
if(checkPassword(password))
sDormitory=dormitory;
}
StringgetDormitory(Stringpassword){//取寝室号
if(checkPassword(password))
returnsDormitory;
else
return"Wrongpassword!
";
}
}
publicclassCheck0{//主类Check0
publicstaticvoidmain(Stringargs[]){//主方法main
Studentx=newStudent("123");//创建Student类的对象x
//访问成员变量
x.sName="张三";
x.sNumber=900001;
x.sClass="1801";
x.setAge("123","18");
x.setAddr("123","浙江");
x.setTelenmb("123","10086");
x.setDormitory("123","101");
x.print();
}
}
3.
importjava.util.Scanner;
classAccount{
privateintid;//身份证号码
privateStringname;//用户名
privateStringpassword;//密码
privatefloatleftmoney;//余额
voidsetID(intID){//置身份证号码
id=ID;
}
intgetID(){//取身份证号码
returnid;
}
voidsetname(Stringname){//置用户名
this.name=name;
}
Stringgetname(){//取用户名
returnname;
}
voidsetleftmoney(floatleftmoney){//置余额
this.leftmoney=leftmoney;
}
floatgetleftmoney(){//取余额
System.out.println("读余额验证密码");
if(inqury())
returnleftmoney;
return0;
}
voidsetpassword(Stringpassword){//置密码
this.password=password;
}
Stringgetpassword(){//取密码
returnpassword;
}
publicbooleaninqury(){//密码验证
Scanners=newScanner(System.in);
System.out.println("请输入密码:
");
Stringpass=s.next();
if(pass.equals(getpassword())){
System.out.println("密码正确");
returntrue;
}
else
System.out.println("密码错误");
returnfalse;
}
publicvoidwithdrawMoney(floatmoney){//取钱
System.out.println("取钱验证密码");
if(inqury())
leftmoney=leftmoney-money;
}
publicvoidsaveMoney(floatmoney){//存钱
System.out.println("存钱验证密码");
if(inqury())
leftmoney=leftmoney+money;
}
}
publicclassTestAccount{//测试账户类
publicstaticvoidmain(Stringargs[]){
Accounta1=newAccount();
a1.setID
(1);
a1.setname("我");
a1.setpassword("123");
a1.setleftmoney(10000);
System.out.println("余额为"+a1.getleftmoney());
a1.saveMoney(500);
System.out.println("存钱5000后的余额为"+a1.getleftmoney());
a1.withdrawMoney(100);
System.out.println("取钱100后的余额为"+a1.getleftmoney());
}
}
4.
classStudent{
Stringname;//姓名
Stringid;//考号
floatintgretResult;//综合成绩
floatsports;//体育成绩
publicStudent(Stringname,Stringid,floatintgretResult,floatsports){//构造方法
this.name=name;
this.id=id;
this.intgretResult=intgretResult;
this.sports=sports;
}
publicvoidsetintgretResult(floatintgretResult){//置综合成绩
this.intgretResult=intgretResult;
}
publicfloatgetintgretResult(){//取综合成绩
returnintgretResult;
}
publicvoidsetsports(floatsports){//置体育