《Java程序设计》课内实验指导书.docx
- 文档编号:25431593
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:32
- 大小:200.16KB
《Java程序设计》课内实验指导书.docx
《《Java程序设计》课内实验指导书.docx》由会员分享,可在线阅读,更多相关《《Java程序设计》课内实验指导书.docx(32页珍藏版)》请在冰豆网上搜索。
《Java程序设计》课内实验指导书
北京理工大学珠海学院
计算机学院
《Java程序设计》课内实验指导书
撰写:
赵卓君
2015年6月
实验一:
Java基本语法.........................................................................3...
实验二:
面向对象编程..........................................................................4..
实验三:
异常..........................................................................................7...
实验四:
util包和集合框架...................................................................8...
实验五:
io包和输入输出....................................................................1..0
实验六:
GUI+JDBC编程....................................................................1..2
实验七:
多线程...................................................................................1..6.
实验一:
Java基本语法
一、实验目的:
熟悉Java程序的结构,并能完成一些基本的算法操作。
熟悉Java程序的if-else、
switch-case语句、循环语句以及数组的用法。
二、实验要求:
1、编写一个JavaApplication程序,循环打印如下图所示图案:
【提示】可以将一个整数看成是ASCII码,转换为对应的字符。
如:
(char)65得到ASCII码65对应的字符“A”
2、编写一个Java程序,接受用户输入的一个1~12之间的整数月份,利用switch语句输
出对应月份的天数。
(提示:
在DOS命令窗口里编译运行该程序,如图所示:
)
运行时,在该处
输入的月份
intmonth=Integer.parseInt(args[0]);//在程序中用该行代码获得输入的月份
3、定义一个包含10个整数的数组,求该数组中的最大值、最小值、平均值与总和。
提示:
在DOS命令窗口里编译运行该程序,如图所示:
运行时,在该处
输入10个整数
//获取命令行输入的10个整数
int[]ary=newint[10];
for(inti=0;i ary[i]=Integer.parseInt(args[i]); 实验二: 面向对象编程 一、实验目的: 熟练掌握类的创建与使用,理解封装与抽象的概念,理解信息隐藏以及4种访问控制修 饰符的用法,熟练掌握构造方法的用法。 二、实验要求: 1.问题描述 狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。 狗通常的时候和人 打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓 情绪烦躁时,会发出“呜呜”声; 猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。 猫通常的时候和 人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在 受到惊吓时,会发出“嘶嘶”声; 青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的, 属于卵生。 当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑 通一声跳入水中” 2.问题分析 首先需要抽取问题描述中对象 分析每个对象所具有的特征 分析每个对象所发出的动作 从这些对象的特征中,抽取类的属性和方法 分析类之间的关系,画出类结构图 3.抽象类和对象的基本方法: 抽取对象的基本的方法: 找出句子中所使用的名词 例如: 在句子“小猫喵喵叫”中,我们能够确定一个对象: 猫; 确定对象发出的行为动作的基本的方法: 找出句子中的动词 例如: “旺旺叫”、“喵喵叫”都属于对象发出的动作; 确定对象的属性或者特征的基本的方法: 找出句子中的形容词 例如: “哺乳性的”、“肉食性的”、“卵生的”等等; “是”的关系一般抽象为继承 例如: 狗是一种动物,意味着: “狗”类继承自“动物”类; “有”的关系一般抽象为类的属性 例如: 动物都有情绪,意味着: “情绪”是“动物”类的一个属性; 类关系图 4. 阶段划分 第一阶段: 不考虑情绪影响动物打招呼的方式 编写Animal类,没有mood属性,只有一种SayHello方法; 编写Dog类、Cat类和Frog类,分别继承自Animal类,实现与Animal类不同的 功能; 编写main方法,分别实例化以上三个类的三个对象,测试类方法实现的正确性; 第二阶段: 考虑情绪影响动物打招呼的方式 扩充Animal类、Dog类、Cat类和Frog类,增加Animal类的mood属性,并实现 sayHello方法的多态性 扩充main方法; 第三阶段: 考虑陆生动物和水生动物 定义LandAnimal接口和WaterAnimal接口; 扩充Dog类、Cat类和Frog类,使其实现相应的接口; 扩充main方法; 程序运行结果 三、总结 通过本次项目案例练习了面向对象的Java实现,基本囊括了面向对象的三大特征: 封 装、继承、多态 巩固的知识点 Java基本的程序结构; 类和对象; 类的封装,包括修饰符的使用private/public/protected); 抽象类、抽象方法(abstract关键字); final关键字; 类的继承(extends关键字); 接口的定义和实现(interface/implements关键字); 多态; 实验三: 异常 一、实验目的: 掌握Java异常的处理机制包括多重catch块的使用,理解掌握Java中自定义异常和断 言的使用 二、异常处理 1、在以下给出Java代码基础上,添加异常处理机制的代码,使得代码在出现异常时能正 常结束程序的运行。 publicclassLab4_1{ publicstaticvoidmain(String[]args){ floata[]=newfloat[5]; floatsum=0; for(inti=0;i a[i]=Float.parseFloat(args[i]); System.out.println("第"+(i+1)+"门课程的成绩是: "+a[i]); sum=sum+a[i]; } System.out.println("总成绩是: "+sum); floatavg=sum/a.length; System.out.println("平均成绩是: "+avg); } } (提示: 使用多重catch块) 2、为一个公司编写一个奖金计算程序,用2010减去某位员工入职的年份来计算该员工的 在该公司工作的工龄,如果工龄为零,即当年才入职的员工,奖金为其一个月的工资; 如果工龄没超过3年,奖金为其月工资乘以1.3;如果工龄为3年以上5年以下,奖金 为其月工资*1.5;如果工龄为5年以上,奖金为其月工资*2。 计算公式如下: 工龄不足一年: 奖金=工资 工龄不足3年: 奖金=工资*1.3 工龄3年以上、5年以下: 奖金=工资*1.5 工龄5年以上: 奖金=工资*2 该程序需要入职的年份和月工资作为程序的输入数据,输出是该员工的奖金。 如果输入 的年份比2010年大或者是负数或无效的字符串,则抛出一个自定义异常 (IllegalYearException),并输出“无效入职年份”;如果输入的工资低于500或负数或者抛出 一个自定义异常(IllegalSalaryException),并输出“无效月工资”。 因此该程序需要定义两个 用户自定义异常。 当有无效的入职年份或月工资数据输入时,程序显式抛出自定义异常。 实验四: util包和集合框架 一、实验目的: 理解Random类及其中的方法,并能实际应用。 通过实验,熟悉Collection接口、List 接口、Set接口的常用方法,并学会应用。 熟悉Map接口的方法,学会运用HashMap、TreeMap 类解决实际问题。 二、实验要求: 1、编写程序模拟掷骰子游戏: 同时投掷两个骰子5000次。 每个骰子上共有从1到6的6 个数,计算每次投掷结果两个骰子的数值之和,并统计和输出每种可能的结果在模拟过 程中出现的总次数。 实验运行效果: 解题思路: 每次掷两个骰子的最小和是2,最大是12,一共有11个可能的和 这11个可能的和出现的次数可以放在一个整型数组里 用随机数每次生成2个1~6之间的随机数表示掷两个骰子 2、有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和 差集。 实验运行效果: 试验运行效果: 并集是指两个集合合并,但是去掉重复的元素的集合。 可以使用HashSet类的addAll 的方法将两个集合合并 交集是指两个集合中都有的元素组成的集合,可以使用HashSet类的retainAll的方 法得到两个集合的交集 差集是指属于A集合但是不属于B集合的元素组成的集合 3、按学生人数对高校排名: 珠海有几所普通高等院校,分别是北京理工大学珠海学院,北 京师范大学珠海学院、吉林大学珠海学院、中山大学珠海分校、暨南大学珠海分校,现 要求按照他们的学生人数对这几所大学按降序排序,效果如下: 程序结构: importjava.util.*; //大学类 classUniversityimplementsComparable{ StringuniName;//学校名称 intpopulation;//学生人数 //构造方法 ⋯⋯ //重写compareTo方法 publicintcompareTo(Objecto){ ⋯⋯ } } 实验五: io包和输入输出 一、实验目的: 熟练掌握输入流和输出流的使用方法。 二、实验要求: 5.写入文件: 从标准设备中输入若干行英文句子直到输入“bye”结束,将这些字符串写入 文件。 6.实验运行结果: 解题思路: 1)先构造输入输出流 Filef=newFile("myfile.txt"); BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); BufferedWriterbw=newBufferedWriter(newFileWriter(f)); 2)在循环中使用br的readLine()方法从控制台读取一行,将读到的字符串和“bye”进 行比较。 3)如果比较结果不等于“bye”则将读到的字符串用bw的write(Strings)写入文件。 4)如果比较结果等于“bye”则break跳出循环 5)整个读写过程需要捕获异常 7.从文件中搜索内容: 在刚输入的文件中查找单词,打印出包含了欲找单词的所有文本行 解题思路: 1)创建2个输入流,一个输入流从控制台读取用户的输入,一个输入流从文件中读取 每一行 2)然后用字符串的indexOf()方法来搜索 System.out.println("Pleaseenterthecharacterwhatyouwanttosearch: "); while(str! =null){ if(str.indexOf(strSearch)! =-1){ System.out.println(str); } str=br.readLine(); } 实验六: GUI+JDBC编程 一、实验目的: 掌握Java图形用户界面的设计,和Java的事件处理机制。 掌握JDBC数据 库访问技术,包括对数据库里的数据的增删改查,并开发一个图书信息管理系统。 一、实验要求: 在SQLServer里新建一个名为BookDB的图书数据库,并创建Book、Reader、Borrow 三张表,表中字段的设计如下表 表6-1: 数据库表设计说明 表名字段数据类型说明 BookIDvarchar(20)图书编号(主键) BookNamevarchar(100)图书名称 Book(图书) Authorvarchar(50)作者 Pressvarchar(50)出版社 PressDatedatetime出版日期 Statuschar(4)图书在库的状态(在库或借出) ReaderIDvarchar(20)读者编号(主键) ReaderNamevarchar(50)读者姓名 Reader(读者)Sexchar (2)性别 Phonevarchar(20)联系电话 Addressvarchar(20)联系地址 BorrowIDint借阅编号(自动增长标识列,主键) BookIDvarchar(20)图书编号(外键,引用Book表中 的BookID) Borrow(借阅) ReaderIDvarchar(20)读者编号(外键,引用Reader表中 的ReadaerID) BorrowDatedatetime借阅时间 ReturnDatedatetime还书时间 Memotext备注 三张表之间的关系如图6-1和图6-2: 图6-1图书管理数据库表的设计 图6-2图书管理数据库表的关系图 在每张表中分别输入几行数据(便于进行测试),如图6-3: 图6-3Book、Reader、Borrow表中的数据 在NetBean创建一个Java工程,使用纯Java方式连接数据库,并对Book表中的数据 进行维护(如图6-4所示)和查询(如图6-5所示)。 Reader和Borrow表中的维护和查询请 参照图书信息维护的界面设计。 图6-4图书信息维护界面设计 图6-5图书信息查询界面设计 实验七: 多线程 一、实验目的: 使用线程来控制动画。 熟练掌握线程的创建、状态控制等用法,理解线程的 使用机制。 二、进度条 8.要求: 显示一个进度条,开始运行程序时,每隔一秒进度条向前移动一步,当 进度条走完毕弹出对话框,点击确定,进入下一个方块移动界面 9.运行效果 三、方块移动倒计时 1.要求: 用JBuilder2006做一个方块移动倒计时游戏,界面设计如图所示: 上面的时钟进行倒计时,每隔一秒就减少一秒。 下面的方块可以在方框里随机漂浮移动,但是不允许移出方框。 当按下“暂停”按钮,倒计时暂停计时,方块也停止移动。 按钮表面上 的文字变成“继续计时”。 当按下“继续计时”按钮,倒计时继续计时,方块也继续移动。 当倒计时显示“时间到! ”,方块也停止移动 10.运行效果 进度条组件: 进度条组件重要属性和方法 pgb.setMinimum(0);//设置进度条最小值 pgb.setMaximum(100);//设置进度条最大值 intmin=pgb.getMinimum();//获取进度条最小值intmax=pgb.getMaximum();//获取进度条最大值intvalue=pgb.getValue();//获取进度条当前值 进度条功能代码片段: while(true){ intvalue=pgb.getValue(); value++; pgb.setValue(value); if(value this.sleep(50);//线程休眠50ms }else{ this.interrupt(); JOptionPane.showMessageDialog(null,"加载完毕","系统提示", JOptionPane.INFORMATION_MESSAGE); ⋯⋯//打开方块移动代码 } } 正方形移动的代码片段 pnl.setLocation(x,y); try{ Thread.sleep(50); }catch(InterruptedExceptionex){ ex.printStackTrace(); } if(flag1){ x++; if(x>=350){ x=350;flag1=false; } }else{ x--; if(x<=0){ x=0;flag1=true; } } if(flag2){ y=y+2; if(y>=350){ y=350; flag2=false; } }else{ y=y-2; if(y<=0){ y=0; flag2=true; } } if(lbl.getText().equals("时间到! ")){ running=false; } 暂停继续的代码片段: booleanrunning=true; publicvoidbtn_actionPerformed(ActionEvente){ if(running){ btn.setText("继续计时"); lbl.setBackground(Color.YELLOW);; mt.suspend(); t.suspend();}else{ btn.setText("暂停"); lbl.setBackground(Color.GREEN); mt.resume(); t.resume(); } running=! running; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计 Java 程序设计 实验 指导书