Java语言程序设计A实验1类与对象Word格式文档下载.docx

上传人:b****3 文档编号:8012251 上传时间:2023-05-09 格式:DOCX 页数:24 大小:159.77KB
下载 相关 举报
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第1页
第1页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第2页
第2页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第3页
第3页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第4页
第4页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第5页
第5页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第6页
第6页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第7页
第7页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第8页
第8页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第9页
第9页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第10页
第10页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第11页
第11页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第12页
第12页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第13页
第13页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第14页
第14页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第15页
第15页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第16页
第16页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第17页
第17页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第18页
第18页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第19页
第19页 / 共24页
Java语言程序设计A实验1类与对象Word格式文档下载.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java语言程序设计A实验1类与对象Word格式文档下载.docx

《Java语言程序设计A实验1类与对象Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计A实验1类与对象Word格式文档下载.docx(24页珍藏版)》请在冰点文库上搜索。

Java语言程序设计A实验1类与对象Word格式文档下载.docx

请设计一个类Student,该类的实例变量有学号studentNumber、姓名studentName、

专业specialty、学费tuition。

学费tuition要实现封装,最低学费4500元。

请绘制完

整的UML类图,写出类Student的Java源代码。

然后,编写测试类StudentTest,给

出运行结果。

实验1-2:

编写类Book,其实例变量简化为:

bookName

numRated5

numRated4

numRated3

numRated2

numRated1

方法addRating()应保证能接收一个有效整数作为形参,将与形参匹配的评级人数加

1。

例如,如果接收3,则numRated3加1。

方法getAverage(),返回所有评级的平均值。

编写测试类BookReviewTest,在main()方法中,创建一个Book对象,为这本图书评级6次,最后输出这本图书的书名、平均评级。

程序的一种可能的输出结果:

HeadFirstJava,AverageRating:

4.2

实验1-2(数组版本):

重做实验1-2,使用数组代替变量保存图书评级,所有修改只应局限于

类Book内部,测试类BookReviewTest无需修改。

实验1-3(选做):

编写储蓄账户类及测试类,模拟存款,参考以下运行方式:

(1)新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。

(2)提示用户从键盘输入储蓄账户编号。

(3)若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。

(4)相应储蓄账户的余额被更新。

(5)存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余额。

(6)若输入的储蓄账户编号与新开的5个储蓄账户编号均无法匹配,显示错误提示,并询问是否还要继续存款。

(7)用户输入yes,继续执行步骤

(2),否则显示退出信息。

最基本要求:

绘制UML类图;

储蓄账户的余额必须确保大于等于0。

五.实验方案及技术路线(设计思路、UML类图、算法、注意事项)

1)对于实验1-1,可以对studentNumber,studentName,specialty,tuition四个变量都进行封装,使用private关键字,然后在类中使用get和set方法,实现对这些实例变量的获取和更改。

在setTuition()方法中,首先通过if语句对传入的参数进行判断,若数值大于或等于4500,则修改成功,否则输出错误提示,简略的UML图如下:

2)对于实验1-2中,各个星级人数的统计通过switch(){case}语句即可实现,但要注意的是,最好加上default语句用以处理错误输入的情况。

数组版本只需要将numRated5、numRated4、numRated3、numRated2、numRated1这几个变量放入一个int[]数组中即可。

3)实验1-3中,因为考虑到各个储蓄账号不能重复,并且在每次操作的时候需要进行匹配,若每次都通过for()循环遍历则比较繁琐,操作时间长,说以采用HashMap集合存储账号,账号number为关键字,每个Account对象为值,因为在测试类中会使用到containsKey()等方法,所以在Account类中需要重写toString()、equal()以及hashCode()方法。

简略的UML图如下:

 

第二部分:

实验过程记录(可加页)(代码、运行结果、实验中出现的问题及解决过程)

⏹实验1-1

程序代码如下:

1)Student类代码:

publicclassStudent

{

privateStringstudentNumber;

privateStringstudentName;

privateStringspecialty;

privatedoubletuition;

publicStudent(StringstudentNumber,StringstudentName,Stringspecialty,doubletuition)

this.studentNumber=studentNumber;

this.studentName=studentName;

this.specialty=specialty;

this.tuition=tuition;

}

publicvoidsetStudentNumber(StringstudentNumber){

this.studentNumber=studentNumber;

publicStringgetStudentNumber(){

returnstudentNumber;

publicStringgetStudentName(){

returnstudentName;

publicvoidsetStudentName(StringstudentName){

publicStringgetSpecialty(){

returnspecialty;

publicvoidsetSpecialty(Stringspecialty){

publicvoidsetTuition(doubletuition){

if(tuition<

4500)

{

System.out.println("

最低学费为4500,请不要低于此数值。

"

);

}

else

{this.tuition=tuition;

publicdoublegetTuition(){

returntuition;

2)StudentTest类代码:

publicclassStudentTest{

publicstaticvoidmain(String[]args){

//创建学生实例

Studentstudent1=newStudent("

学号"

"

姓名"

专业"

5000);

Studentstudent2=newStudent("

5500);

//修改student2的学号

student2.setStudentNumber("

新学号"

//修改student2的姓名

student2.setStudentName("

新姓名"

//修改student1的专业信息

student1.setSpecialty("

新专业"

//修改student1学费信息

student1.setTuition(4500);

//输出student1和student2的信息

学号:

+student1.getStudentNumber()+"

\n"

+

"

姓名:

+student1.getStudentName()+"

专业:

+student1.getSpecialty()+"

学费:

+student1.getTuition()+"

+student2.getStudentNumber()+"

+student2.getStudentName()+"

+student2.getSpecialty()+"

+student2.getTuition()+"

运行结果如下:

省略

⏹实验1-2

1)Book类代码:

publicclassBook{

privateStringbookName;

privateintnumRate1,numRate2,numRate3,numRate4,numRate5;

publicBook(StringbookName)

this.bookName=bookName;

//初始化各星级的人数为0

numRate1=0;

numRate2=0;

numRate3=0;

numRate4=0;

numRate5=0;

publicStringgetBookName()

returnbookName;

publicvoidsetBookName(StringbookName)

publicvoidaddRating(intrateIn)

switch(rateIn)

{

case1:

numRate1++;

break;

case2:

numRate2++;

case3:

numRate3++;

case4:

numRate4++;

case5:

numRate5++;

default:

System.err.println("

数字"

+rateIn+"

不在星级评定范围,此次输入无效,请输入数字1-5!

}

publicdoublegetAverage()

{doubleaverage=0;

average=(numRate1*1+numRate2*2+numRate3*3+numRate4*4+numRate5*5)*1.0/(numRate1+numRate2+numRate3+numRate4+numRate5);

returnaverage;

2)(数组版)Book类代码:

publicclassBook

privateint[]numRate=newint[5];

for(inti=0;

i<

5;

i++)

numRate[i]=0;

numRate[0]++;

numRate[1]++;

numRate[2]++;

numRate[3]++;

numRate[4]++;

publicdoublegetAverage(){

doubleaverage=0;

average=(numRate[0]*1+numRate[1]*2+numRate[2]*3+numRate[3]*4+numRate[4]*5)*1.0/(numRate[0]+numRate[1]+numRate[2]+numRate[3]+numRate[4]);

3)BookReviewTest类代码:

importjava.util.Scanner;

publicclassBookReviewTest{

publicstaticvoidmain(String[]args)

Bookbook=newBook("

Java大学教程"

Scannersc=newScanner(System.in);

//6次评级

for(inti=1;

=6;

System.out.println("

书本《Java大学教程》星级评分开始,请输入数字1-5:

intrating=sc.nextInt();

book.addRating(rating);

书名:

+book.getBookName()+"

+"

平均星级:

+book.getAverage());

1)当出现输入星级大于5或小于0时

2)当输入正常时:

⏹实验1-3

1)储蓄账户Account类代码:

publicclassAccount

privateStringnumber;

privateStringname;

privatedoublebalance;

publicAccount(Stringnumber,Stringname)

this.number=number;

this.name=name;

balance=0;

publicStringgetNumber()

returnnumber;

publicStringgetName()

returnname;

publicdoublegetBalance()

returnbalance;

publicvoiddeposit(doubleamountIn)

balance-=amountIn;

publicvoidwithdraw(doubleamountIn)

balance+=amountIn;

publicStringtoString()

return"

("

+number+"

+name+"

+balance+"

)\n"

;

publicbooleanequals(ObjectobjIn)

AccountaccIn=(Account)objIn;

returnnumber.equals(accIn.number);

publicinthashCode()

returnnumber.hashCode();

2)测试类AccountTest代码

importjava.util.HashMap;

importjava.util.InputMismatchException;

importjava.util.Map;

publicclassAccountTest{

Map<

String,Account>

accountList=newHashMap<

();

//创建3个账户并放入集合accountList中

Accountaccount1=newAccount("

11111"

dengqiuping"

account1.withdraw(500);

accountList.put("

account1);

Accountaccount2=newAccount("

22222"

lixi"

account2.withdraw(100);

account2);

Accountaccount3=newAccount("

33333"

chengying"

account3.withdraw(1000);

account3);

Accountaccount4=newAccount("

44444"

susu"

account4.withdraw(5000);

account4);

Accountaccount5=newAccount("

55555"

zhangxi"

account5.withdraw(300);

account5);

//当用户输入数据类型错误的时候,输出错误提示

try{

selectChoice(accountList);

}catch(InputMismatchExceptione){

System.err.println("

输入错误,请输入数字1-4!

publicstaticvoidselectChoice(Map<

accountListIn)

Scannersc=newScanner(System.in);

intinput;

do

{

System.out.println("

1.存款"

2.取款"

3.余额查询"

4.退出"

请输入操作【1-4】:

input=sc.nextInt();

switch(input)

{

case1:

option1(accountListIn);

case2:

option2(accountListIn);

case3:

option3(accountListIn);

case4:

System.exit(0);

//当输入的数字小于1或大于4时输出错误提示

default:

无效输入,请输入数字【1-4】!

}

}while(input!

=4);

//取款操作

privatestaticvoidoption1(Map<

{StringtempNumber;

Scannersc1=newScanner(System.in);

请输入账号(输入'

0'

返回上一级):

tempNumber=sc1.next();

if(accountListIn.containsKey(tempNumber))

try{

for(;

System.out.println("

请输入存款数额:

DoubletempAmount=sc1.nextDouble();

if(tempAmount<

0)

{

System.err.println("

存款数额不能小于0元,请从重输入数值!

}

else

AccountcurrAccount=accountListIn.get(tempNumber);

currAccount.withdraw(tempAmount);

System.out.println("

存款成功!

账号:

+currAccount.getNumber()+"

"

账户名:

+currAccount.getName()+"

余额:

+currAccount.getBalance());

break;

}catch(InputMismatchExceptione){

System.err.println("

无效输入,请输入大于0的数值!

option1(accountListIn);

}}

elseif(tempNumber.equals("

0"

))

{selectChoice(accountListIn);

else

Stringc=reChoice();

if(c.equals("

1"

{option1(accountListIn);

else{//返回主菜单

}}}

//取款

privatestaticvoidoption2(Map<

accountListIn)

Scannersc2=newSca

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2