ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:159.77KB ,
资源ID:11537253      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11537253.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java语言程序设计A实验1类与对象.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java语言程序设计A实验1类与对象.docx

1、Java语言程序设计A实验1类与对象实验课程名称:Java语言程序设计A实验项目名称实验1:类与对象实验成绩实 验 者专业班级组 别同 组 者无开始日期第一部分:实验预习报告(包括实验目的及意义,实验基本原理与方法,主要仪器设备及耗材,实验内容及要求,实验方案与技术路线等)一实验目的及意义1根据实际需求,使用UML类图,合理设计类及其成员(实例变量、方法)。2编写、调用构造函数,初始化新建对象。3编写、调用方法,完成相关操作。4实现信息隐藏与封装。5创建对象、调用对象方法。6正确使用对象数组。7设计、实现算法逻辑。二实验基本原理与方法1面向对象的概念、思想、思维方式。2UML面向对象设计初步。

2、2类的概念、结构、定义、使用。3构造函数的概念、结构、定义、调用。4方法的概念、结构、定义、调用。5信息隐藏与封装的概念、实现。6对象的概念、创建、使用。7对象数组的概念、使用。8控制流程。三主要仪器设备及耗材1PC及其兼容机。2计算机操作系统。3程序编辑器EditPlus。4Java开发工具JDK。四实验内容及要求实验1-1:请设计一个类Student,该类的实例变量有学号studentNumber、姓名studentName、专业specialty、学费tuition。学费tuition要实现封装,最低学费4500元。请绘制完整的UML类图,写出类Student的Java源代码。然后,编写

3、测试类StudentTest,给出运行结果。实验1-2:编写类Book,其实例变量简化为:bookNamenumRated5numRated4numRated3numRated2numRated1方法addRating( )应保证能接收一个有效整数作为形参,将与形参匹配的评级人数加1。例如,如果接收3,则numRated3加1。方法getAverage( ),返回所有评级的平均值。编写测试类BookReviewTest,在main( )方法中,创建一个Book对象,为这本图书评级6次,最后输出这本图书的书名、平均评级。程序的一种可能的输出结果:Head First Java,Average R

4、ating: 4.2实验1-2(数组版本):重做实验1-2,使用数组代替变量保存图书评级,所有修改只应局限于类Book内部,测试类BookReviewTest无需修改。实验1-3(选做):编写储蓄账户类及测试类,模拟存款,参考以下运行方式:(1)新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。(2)提示用户从键盘输入储蓄账户编号。(3)若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。(4)相应储蓄账户的余额被更新。(5)存款完成后

5、,提示存款成功,显示该储蓄账户的编号、户名、余额。(6)若输入的储蓄账户编号与新开的5个储蓄账户编号均无法匹配,显示错误提示,并询问是否还要继续存款。(7)用户输入yes,继续执行步骤(2),否则显示退出信息。最基本要求:绘制UML类图;储蓄账户的余额必须确保大于等于0。五实验方案及技术路线(设计思路、UML类图、算法、注意事项) 1)对于实验1-1,可以对studentNumber,studentName,specialty,tuition四个变量都进行封装,使用private关键字,然后在类中使用get和set方法,实现对这些实例变量的获取和更改。在setTuition()方法中,首先通过

6、if语句对传入的参数进行判断,若数值大于或等于4500,则修改成功,否则输出错误提示,简略的UML图如下: 2)对于实验1-2中,各个星级人数的统计通过switch()case语句即可实现,但要注意的是,最好加上default语句用以处理错误输入的情况。数组版本只需要将numRated5、numRated4、numRated3、numRated2、numRated1这几个变量放入一个int数组中即可。3)实验1-3中,因为考虑到各个储蓄账号不能重复,并且在每次操作的时候需要进行匹配,若每次都通过for()循环遍历则比较繁琐,操作时间长,说以采用HashMap集合存储账号,账号number为关键

7、字,每个Account对象为值,因为在测试类中会使用到containsKey()等方法,所以在Account类中需要重写toString()、equal()以及hashCode()方法。简略的UML图如下:第二部分:实验过程记录(可加页)(代码、运行结果、实验中出现的问题及解决过程)实验1-1程序代码如下:1)Student类代码:public class Studentprivate String studentNumber;private String studentName;private String specialty;private double tuition;public St

8、udent(String studentNumber, String studentName, String specialty,double tuition) this.studentNumber = studentNumber; this.studentName = studentName; this.specialty = specialty; this.tuition = tuition;public void setStudentNumber(String studentNumber) this.studentNumber=studentNumber;public String ge

9、tStudentNumber() return studentNumber;public String getStudentName() return studentName;public void setStudentName(String studentName) this.studentName = studentName;public String getSpecialty() return specialty;public void setSpecialty(String specialty) this.specialty = specialty;public void setTui

10、tion(double tuition) if(tuition4500) System.out.println(最低学费为4500,请不要低于此数值。); else this.tuition = tuition;public double getTuition() return tuition;2)StudentTest 类代码:public class StudentTest public static void main(String args) /创建学生实例 Student student1=new Student(学号,姓名,专业,5000); Student student2=ne

11、w Student(学号,姓名,专业,5500); /修改student2的学号 student2.setStudentNumber(新学号); /修改student2的姓名 student2.setStudentName(新姓名); /修改student1的专业信息 student1.setSpecialty(新专业); /修改student1学费信息 student1.setTuition(4500); /输出student1和student2的信息 System.out.println(学号:+student1.getStudentNumber()+n+ 姓名:+student1.get

12、StudentName()+n+ 专业:+student1.getSpecialty()+n+ 学费:+student1.getTuition()+n); System.out.println(学号:+student2.getStudentNumber()+n+ 姓名:+student2.getStudentName()+n+ 专业:+student2.getSpecialty()+n+ 学费:+student2.getTuition()+n); 运行结果如下:省略实验1-2程序代码如下:1)Book类代码:public class Book private String bookName;

13、private int numRate1,numRate2,numRate3,numRate4,numRate5; public Book(String bookName) this.bookName = bookName; /初始化各星级的人数为0 numRate1=0; numRate2=0; numRate3=0; numRate4=0; numRate5=0; public String getBookName() return bookName; public void setBookName(String bookName) this.bookName = bookName; pu

14、blic void addRating(int rateIn) switch(rateIn) case 1:numRate1+;break; case 2:numRate2+;break; case 3:numRate3+;break; case 4:numRate4+;break; case 5:numRate5+;break; default:System.err.println(数字+rateIn+不在星级评定范围,此次输入无效,请输入数字1-5!);break; public double getAverage() double average=0; average=(numRate1

15、*1+numRate2*2+numRate3*3+numRate4*4+numRate5*5)*1.0/(numRate1+numRate2+numRate3+numRate4+numRate5); return average; 2)(数组版)Book类代码:public class Book private String bookName; private int numRate=new int5; public Book(String bookName) this.bookName = bookName; /初始化各星级的人数为0 for(int i=0;i5;i+) numRatei=

16、0; public String getBookName() return bookName; public void setBookName(String bookName) this.bookName = bookName; public void addRating(int rateIn) switch(rateIn) case 1:numRate0+;break; case 2:numRate1+;break; case 3:numRate2+;break; case 4:numRate3+;break; case 5:numRate4+;break; default:System.e

17、rr.println(数字+rateIn+不在星级评定范围,此次输入无效,请输入数字1-5!);break; public double getAverage() double average=0; average=(numRate0*1+numRate1*2+numRate2*3+numRate3*4+numRate4*5)*1.0/(numRate0+numRate1+numRate2+numRate3+numRate4); return average; 3)BookReviewTest类代码:import java.util.Scanner;public class BookRevie

18、wTest public static void main(String args) Book book=new Book(Java大学教程); Scanner sc=new Scanner(System.in); /6次评级 for(int i=1;i=6;i+) System.out.println(书本Java大学教程星级评分开始,请输入数字1-5:); int rating=sc.nextInt(); book.addRating(rating); System.out.println(书名:+book.getBookName()+n +平均星级:+book.getAverage();

19、 运行结果如下:1)当出现输入星级大于5或小于0时2)当输入正常时:实验1-3程序代码如下:1)储蓄账户Account 类代码:public class Account private String number; private String name; private double balance;public Account(String number, String name) this.number = number; this.name = name; balance=0;public String getNumber()return number;public String ge

20、tName()return name;public double getBalance()return balance;public void deposit(double amountIn)balance-=amountIn;public void withdraw(double amountIn)balance+=amountIn;public String toString()return (+number+,+name+,+balance+)n;public boolean equals(Object objIn) Account accIn=(Account)objIn; retur

21、n number.equals(accIn.number);public int hashCode()return number.hashCode();2)测试类AccountTest 代码import java.util.HashMap;import java.util.InputMismatchException;import java.util.Map;import java.util.Scanner;public class AccountTest public static void main(String args) Map accountList=new HashMap(); /

22、创建3个账户并放入集合accountList中 Account account1=new Account(11111,dengqiuping); account1.withdraw(500); accountList.put(11111, account1); Account account2=new Account(22222,lixi); account2.withdraw(100); accountList.put(22222, account2); Accountaccount3=newAccount(33333,chengying); account3.withdraw(1000);

23、 accountList.put(33333, account3); Account account4=new Account(44444,susu); account4.withdraw(5000); accountList.put(44444, account4); Account account5=new Account(55555,zhangxi); account5.withdraw(300); accountList.put(55555, account5); /当用户输入数据类型错误的时候,输出错误提示 try selectChoice(accountList); catch (

24、InputMismatchException e) System.err.println(输入错误,请输入数字1-4!); selectChoice(accountList); public static void selectChoice(Map accountListIn) Scanner sc=new Scanner(System.in); int input; do System.out.println(1.存款); System.out.println(2.取款); System.out.println(3.余额查询); System.out.println(4.退出); Syste

25、m.out.println(请输入操作【1-4】:); input=sc.nextInt(); switch(input) case 1:option1(accountListIn);break; case 2:option2(accountListIn);break; case 3:option3(accountListIn);break; case 4:System.exit(0); /当输入的数字小于1或大于4时输出错误提示 default :System.err.println(无效输入,请输入数字【1-4】!); while(input!=4); /取款操作 private stat

26、ic void option1(Map accountListIn) String tempNumber; Scanner sc1 = new Scanner(System.in); System.out.println(请输入账号(输入0返回上一级):); tempNumber = sc1.next(); if(accountListIn.containsKey(tempNumber) try for(;) System.out.println(请输入存款数额:); Double tempAmount=sc1.nextDouble(); if(tempAmount0) System.err.

27、println(存款数额不能小于0元,请从重输入数值!); else Account currAccount=accountListIn.get(tempNumber); currAccount.withdraw(tempAmount); System.out.println(存款成功!); System.out.println(账号:+currAccount.getNumber()+n+ 账户名:+currAccount.getName()+n+ 余额:+currAccount.getBalance(); break; catch (InputMismatchException e) System.err.println(无效输入,请输入大于0的数值!); option1(accountListIn); else if(tempNumber.equals(0) selectChoice(accountListIn); else String c=reChoice(); if(c.equals(1) option1(accountListIn); else/返回主菜单 /取款 private static void option2(Map accountListIn) Scanner sc2=new Sca

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1