已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象实验指导书 面向对象程序设计实验指导书长沙学院计算机科学与技术系前言本教材由四个实训项目组成,每个实验项目又包含13个实验,可供教师授课时选用或让学生自学。 希望读者能独立完成实验,多思考,多实践,唯有实践才是学好一门计算机语言的不二法门。 由于计算机科学技术发展迅速,计算机学科知识更新很快,加之编者水平和时间有限,书中不妥之处在所难免,敬请批评指正。 一、实验目的和要求 1、实验目的力图通过本实践课程的学习,使学生掌握编写、调试和运行Java程序的基本技巧,熟悉面向对象技术的主要原则和思维方法,借助Java把这些原则和特点融入具体的程序中,包括类库、GUI、异常、I/O流、数据库接口的编程,建立由感性到理性的深入认识,提高解决实际问题的能力。 2、实验要求实验的编排本着循序渐近、由浅入深的原则,基本覆盖了Java程序设计的主要方面,要求学生实验前认真准备,实验后提供实验报告,给出详细设计结果以及设计依据。 实验报告的格式应采用统一封面,统一的实验报告纸。 封面应包括课程名称、实验序号、名称、专业、班级、姓名、同组实验者、实验时间。 实验报告内容应包括实验名称、目的、内容、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。 二、实验环境介绍 1、硬件设备要求PC及其联网环境 2、软件设备要求Windows xp操作系统;Eclipse3.2或者MyEclipse6.5集成开发工具; 三、实验内容和学时分配序号实训项目名称内容提要实训时数实训类型实训要求每组人数序号实训项目名称内容提要实训时数实训类型实训要求每组人数1面向对象特征的应用熟悉开发环境,环境变量的设置;掌握Java程序的、编译和运行。 定义类,包括成员变量、函数,构造函数,创建对象,发送消息。 掌握类的继承关系和派生方法,多态的概念与使用,接口的定义与使用。 12实训必开12数组与字符串在循环中访问数组下标,字符串查找与替换。 2实训必开13图形界面编程掌握图形界面的设计4实训必开14高级编程的应用掌握自定义异常语句抛出并捕获;文件输入输出流;掌握常用的输入输出流用法。 使用JDBC连接数据库,实现对数据库的增删改查。 6实训必开1注 1、实验类型分演示、验证、综合、设计、研究创新;实训类型为实训。 2、实验(实训)要求分必开、选开。 3、每组人数一般基础课12人、专业课24人、上机1人。 4、以上实验(实训)根据课程性质,只选取其中一种。 四、实验前准备在D盘建立以自己姓名的拼音首字母为名称的文件夹,以便保存实验数据。 实训项目一面向对象特征的应用实验一Java开发环境J2SE1.1实验目的1)熟悉Java开发环境的搭建方法,掌握开发Java应用程序的三个步骤编写源文件、编译源文件和运行应用程序。 2)熟悉java集成开发工具(IDE)的使用。 3)阅读并学习基本的Java程序结构,熟悉编码规范。 1.2实验内容(2课时)1)观看老师运行一个简单的java聊天程序。 2)新建一个Hello.java程序,在控制台打印“欢迎使用本聊天系统!”。 3)新建一个Test类,在test类中打印下面表达式的运算结果,设a=3,b=-5,f=true: (1)-a%b+ (2)(a=1&a=1&a=12?a:b)。 4)自己在myeclipse里面新建工程,新建类,输入下面代码,阅读程序,观察程序的运行结果,注意编码规范的问题。 public class TestWhatpublic staticvoid main(String args)boolean leap;int year=xx;if(year%4=0&year%100!=0)|(year%400=0)System.out.println(year+is what?);else System.out.println(year+is notwhat?);year=xx;if(year%4!=0)leap=false;else if(year%100!=0)leap=true;else if(year%400!=0)leap=false;else leap=true;if(leap=true)System.out.println(year+is what?);else System.out.println(year+is notwhat?);year=2050;if(year%4=0)if(year%100=0)if(year%400=0)leap=true;else leap=false;else leap=false;else leap=false;if(leap=true)System.out.println(year+is what?);else System.out.println(year+is notwhat?);运行程序,查看输出结果。 1.4实验报告实验二类与对象2.1实验目的1)掌握对象的实例化及类成员的调用。 2)掌握Java中类成员(属性、方法)的访问控制修饰符。 3)掌握设计类的基本技巧。 2.2实验内容(4课时)1)新建一个工程,新建一个包(basic),新建一个类,在类里面写一个方法用来判断三角形的三条边能否构成三角形,并要求能判断出是等腰等边还是普通三角形,在main函数里面实例化对象,调用该方法。 2)新建另一包(test),然后新建另一个类,测试能不能调用步骤1中的方法.3)Java API有一个类java.util.GregorianCalendar,可用来获得某个日期的年、月、日,用无参数的构造函数创建当前日期的实例,get(GregorianCalendar.YEAR),get(GregorianCalendar.MONTH),get(GregorianCalendar.DAY_OF_MONTH)返回日期的年、月、日。 写程序显示当前的年、月、日。 4)创建聊天程序中的用户类(User),用户拥有自己的名称、出生年份、年龄、密码等信息。 其中年龄要通过出生年份计算出来。 5)请考虑以上User类各种方法的访问性,并设计出合理的访问控制修饰符。 2.3实验步骤1)在MyEclipse中新建一个Java工程,工程文件保存到E盘自己名字下,在工程下新建包basic,新建类Trangle2)新建另一包(test),然后新建另一个类TrangleTest,用import basic.Trangle;语句导入Trangle类,然后在main方法中实例化对象,测试方法的调用情况。 3)java.util.Date类使用系统的当前日期和时间创建一个日期对象并返回一个长整数,表示从1970年1月1日00:00:00开始经历的毫秒数。 java.util.GregorianCalendar类用来操纵一个日期对象的各个部分,所以典型的用法是GregorianCalendar cal=new GregorianCalendar();/用来创建一个GregorianCalendar对象cal.setTime(new Date();/将该对象的时间设置为当前日期和时间4)创建用户类确定类的属性和方法,定义用户类;并测试User类是否能正常工作。 运行程序,查看输出结果。 2.4实验报告把实验内容1)2)3)写到实验报告上,并写出步骤2)的分析结果。 实验三继承与多态3.1实验目的1)掌握类的继承关系和派生方法,多态的概念与使用.2)掌握接口的定义与使用。 3)综合运用以上知识实现聊天系统中的用户模块。 3.2实验内容(6课时)1)定义矩形类和它的子类正方形类,并增加一个Printable接口,用于以字符和图形的方式打印矩形和正方形的信息。 (1)定义矩形类,用户输入矩形的长与宽,程序计算其面积和周长; (2)定义矩形类的派生类-正方形类。 正方形类的操作同样是求周长和面积; (3)定义一个接口Printable,其中包括一个方法printWay(),这个方法没有形参,返回值为空; (4)改写矩形类,使之实现Printable接口,用printWay()将矩形的相关信息(长、宽、周长、面积)打印在屏幕上; (5)改写正方形类,重载printWay()方法,将正方形的边长、周长、面积打印在屏幕上; (6)在Printable接口中增加一个新的printWay(char)方法,并改写矩形类、正方形类定义。 这个方法有一个字符类型的形参,返回值为空,功能是利用给出的字符打印,例如形参为&,一个长为5,宽为3的矩形的屏幕打印结果为&2)综合运用继承、接口的相关知识实现聊天系统中的用户模块。 具体参照实验步骤。 3.3实验步骤有关用户模块需要在实验二的基础上增加内容,具体步骤如下1)在聊天程序中所有的用户可能都会有一些公共的方法,下面我们定义一个接口Userable,其中包括一个information方法,这个方法没有形参,返回值为空;请使用关键字“interface”定义接口Userable;2)修改用户类User,增加一个用户类型属性,并实现接口类Userable。 4)接着我们在User类中定义多个构造方法,分别能根据用户名、密码及出生年份,用户类型等信息来初始化对象。 public User(String name)public User(String name,String pwd)public User(String name,String pwd,int born)public User(String name,String pwd,int born,int type)5)有选择地为属性加上getter/setter方法,比如其中的年龄属性只需要定义get方法,在修改出生年份时就得修改年龄大小。 6)现在我们可以定义User类的子类-普通用户类GeneralUser,它实现information方法打印“马可(用户名)是普通用户,20(年龄)岁”。 大家把模板完善一下7)有了上面的经验,现在我们怎么创建VIP用户类VIPUser了?8)现在我们就完成了用户模块的所有用户类了,我们应该把功能相似的类放到同一个目录下。 现在我们新建一个包“qq.server.user”,把所有的类剪切进来,在类最前面加上打包代码“package qq.server.user;”。 9)最后我们写一个程序类Test代码如下package qq.server.user.test;import qq.server.user.GeneralUser;import qq.server.user.User;import qq.server.user.VIPUser;public classTestUserpublic staticvoid main(String args)User gerneralUser=new GeneralUser(马可,123456,1970);User vipUser=new VIPUser(汪涵,123456,1974);gerneralUrmation();vipUrmation();执行TestUser类,看输出结果。 10)实验分析 (1)GeneralUser能调用User类的属性吗? (2)GeneralUser类必须实现information方法吗? (3)在User中实现information方法public voidinformation()System.out.println(name);执行TestUser,程序结果是什么? (4)把TestUser中User gerneralUser=new GeneralUser(马可,123456,1990);User vipUser=new VIPUser(马可,123456,1994);改为User gerneralUser=new GeneralUser(马可,123456);User vipUser=gerneralUser;执行,程序结果是什么? (5)把User中protected String name;改为static protectedString name;执行,程序结果是什么?为什么?3.4实验报告写出所有的类,把实验步骤中第9步的输出结果写到报告上,实验分析写前三点。 实训项目二数组与字符串1.1实验目的1)掌握Java中一维数组和二维数组的定义使用2)掌握字符串查找、替换及截取子串的方法3)使用数组完成聊天系统中的用户管理类1.2实验内容(2课时)1)编写程序接收用户输入的一个字符串和一个字符,将字符串中出现的所有该字符删除,打印新生成的字符串;2)完成数组的初始化和输出,见实验步骤23)定义一个用户管理类UserManager.java。 UserManager管理聊天系统中的所有用户,有添加用户(用户注册)、删除用户、查询用户、比较两个用户是否相等、返回当前用户数等功能。 4)(选作)使用ArrayList改写UserManager。 1.3实验步骤1)参考String类或StringBuffer类的API说明,找到StringBuffer类的deleteCharAt(int index),indexOf(String str,int fromIndex)的用法。 2)下面的代码定义了一个类,类里面有2个方法,分别初始化了一个一维数组和二维数组,请在此基础上打印出一维数组和二维数组的元素,打印最好能用方法实现。 3)定义一个用户管理类用来管理用户,首先得保存所有的用户信息,用什么保存多个用户信息?数组是也。 那么我们就在用户管理类中添加一个用户数组了。 public classUserManager/数组大小private intsize=100;/注意数组声明的格式,必须在创建时确定数组大小private UseruserList=new Usersize;/当前用户数private intindex;4)管理用户首先就是往集合里面添加用户,写一个添加用户的方法。 public booleanaddUser(User user)if(index 6)判断用户是否存在(用户的登录名和密码是否正确),这里定义一个方法exist方法public booleanexist(Stringname,String pwd)/自己完成7)定义一个方法返回当前用户数。 聪明的你还能定义出其它的方法吗?8)编写测试类Test.java public classTestpublic staticvoid main(String args)User u1=new User(张三,123456);User u2=new User(李四,sdf);User u3=new User(王五,dfgg);UserManager um=new UserManager();um.addUser(u1);um.addUser(u2);um.addUser(u3);User user=um.getUserByName(张三);System.out.println(+user.pwd);boolean bool=um.exist(李四,sddddd);System.out.println(bool);9)实验分析 (1)实验结果是什么? (2)打印出当前的用户数 (3)怎么用ArrayList类代替数组?用ArrayList有什么好处?1.4实验报告把实验内容1),2),3)所有的类写在实验报告纸上,把实验步骤中第八步的输出结果写到报告上,完成实验分析。 实训项目三图形界面编程1.1实验目的1)掌握解Java系统图形用户界面的工作原理和界面的设计步骤2)掌握图形界面的基本组件及事件响应方法3)掌握图形界面布局策略的设计与使用1.2实验内容(4课时)1)编写一个简单的图形界面程序,要求在窗体里显示四个按钮,名称分别为红色、白色、绿色、蓝色,布局管理器设为FlowLayout,要求单击红色按钮,窗体背景显示为红色,点击其它按钮同样。 2)构建聊天客户界面,包括消息显示文本框、消息发送文本框、选择好友的选择框、发送按钮。 并为发送按钮添加事件,把消息显示在消息窗口中。 1.3实验步骤1)对于实验内容1),要求界面按如下方式显示,教师可根据学生情况先让学生自己独立做一段时间,然后带着学生一起完成该内容。 2)我们首先开发一个简单的界面程序ClientChatUI,一个界面首先是一个JFrame对象,即一个窗体;然后我们就可以在窗体上添加组件;最后为组件添加事件。 (1)完成一个带窗体的界面/显示一个窗体界面的方法public voidshowFrame()/设置标题this.setTitle(java:欢迎+this.userName);java.awt.FlowLayout fl=new java.awt.FlowLayout (0);this.setLayout(fl);this.setSize(300,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/窗体关闭时程序退出this.setVisible(true); (2)定义一个initUI方法,在方法中添加如界面所示的组件两个JLabel、一个显示消息的JTextArea、一个消息发送的JTextFiel、一个选择用户的JComboBox、一个发送按钮JButton,相关代码片段如下,学生可根据实际需要组织程序结构。 (3)添加发送事件 (4)实验分析运行程序,看是否得到了预期结果?服务器界面怎么写?1.4实验报告把实验内容2)完整代码写在实验报告纸上,把实验运行结果截图贴到实验报告纸上。 实训项目四高级编程的应用实验一异常、i/o流与文件1.1实验目的 (1)了解流式输入输出的基本概念; (2)熟悉Java.io包中常用的基本输入输出类; (3)掌握程序与文件之间的基本输入输出操作; (4)掌握java的异常处理机制和方法1.2实验内容(4课时)1)使用JApplet实现某一门课程的分数录入系统,界面包括学号、姓名、班号、成绩的输入域和一个录入按钮。 当用户单击录入按钮时,程序检查各输入域中是否有非空的数据,如有空域则抛出一个Exception对象;同时程序检查成绩输入域,如果不是数值信息或是负的数值信息,也抛出相应的异常。 在抛出异常前应提供详细的信息说明,从而使使用该程序的用户了解所出现的问题,同时思考虑上述异常出现时程序应该如何处理。 2)把字符串“xx2324,张三,男,25,软件工程”,保存到文件”d:a.txt”中,接着读取并打印a.txt文件中的内容。 2)把我们在聊天界面中发送的消息保存到日志文件里面,在界面上添加一个历史按钮,当点击历史按钮时读取日志文件内容。 1.3实验步骤1)把字符串“xx2324,张三,男,25,软件工程”,保存到文件”d:a.txt”中,并读取打印a.txt文件中的内容。 (1)定义变量message,值为“xx2324,张三,男,25,软件工程”; (2)创建指向”D:a.txt”的文件对象 (3)创建输出流 (4)把message写入流(文件)中 (5)关闭输出流 (6)创建输入流 (7)读取文件内容 (8)打印文件内容 (9)关闭输入流2)把我们在聊天界面中发送的消息保存到日志文件里面,在界面上添加一个历史按钮,当点击历史按钮时读取日志文件内容。 实验思路如下 (1)编写聊天界面,添加发送按钮的鼠标点击事件 (2)在事件处理方法中把聊天信息写入文件,注意不能覆盖文件里面已有的信息。 File myFile=new File(D:a.log);FileOutputStream fout=new FileOutputStream(myFile,true);/追加或者使用DataOutputStream dout=new DataOutputStream(new FileOutputStream(myfile);来实现各种类型数据的输出。 (3)在界面上添加一个”历史”按钮,完成事件处理方法。 当点击按钮时,把日志(a.log)里面的内容显示到聊天界面中。 实验代码如下所示,相关部分请同学自己完成import java.awt.event.*;import java.io.*;import javax.swing.*;/*客户机聊天主界面:显示接收到的消息,发送功能,用户列表*/publilassClientChatUI extendsJFrameprivate String userName;/登陆成功的用户名private JTextAreajta_recive=new JTextArea(15,25);/显示接收到消息的组件private JComboBoxjcb_users=new JComboBox();/在线用户名的下拉框public ClientChatUI(StringuserName)this.userName=userName;initUI();showFrame();/初始化界面显示组件private voidinitUI()/用户名的标签JLabel la_name=new JLabel(接收到的消息:);JLabel la_users=new JLabel(发送给:);final JTextFieldjtf_sned=new JTextField (20);/发送输入框javax.swing.JButton bu_send=new javax.swing.JButton(Send);/添加一个历史按钮javax.swing.JButton bu_history=new javax.swing.JButton(历史);/添加好友jcb_users.addItem(张三);jcb_users.addItem(李四);this.add(la_name);this.add(jta_recive);this.add(la_users);this.add(jtf_sned);this.add(jcb_users);this.add(bu_send);this.add(bu_history);/为发送按钮添加事件ActionListener sendListener=new ActionListener()public voidactionPerformed(ActionEvent e)String reciver=(String)jcb_users.getSelectedItem();reciver=reciver.trim();/去除空格String content=jtf_sned.getText();/发送一条聊天消息String message=userName+对+reciver+说:+content+rn;jta_recive.append(message);/显示到界面jtf_sned.setText();writeLog(message);/为历史按钮添加事件/此处代码请同学们自己完成bu_send.addActionListener(sendListener);jtf_sned.addActionListener(sendListener);/显示一个窗体界面的方法public voidshowFrame()/设置标题this.setTitle(java:欢迎+this.userName);java.awt.FlowLayout fl=new java.awt.FlowLayout (0);this.setLayout(fl);this.setSize(300,500);this.setDefaultCloseOperation (3);/窗体关闭时程序退出this.setVisible(true);/保存聊天记录private voidwriteLog(String message)File logFile=new File(D:a.log);FileOutputStream fout=null;/写文件try/以追加的方式写文件fout=new FileOutputStream(logFile,true);fout.write(message.getBytes();catch(IOException e)e.printStackTrace();finallytryfout.close();catch(IOException e)e.printStackTrace();/读取聊天记录private StringreadLog()/读取聊天记录的代码怎么写,请同学们自己完成return s;public staticvoid main(Stringargs)new ClientChatUI(maowei);1.4实验报告把实验内容2)完整代码写在实验报告纸上,把实验运行结果截图贴到实验报告纸上。 实验二Java数据库编程接口2.1实验目的1)掌握用java代码完成数据库的增删改查;2)掌握jdbc编程技术;3)使用JDBC完成用户登陆验证。 2.2实验内容(2课时)1.为聊天系统设计用户登录认证程序 (1)使用sql语句在sql serverxx中新建用户表User,表结构如下用户表(user)字段名字段类型约束限制说明user_login VARCHAR (15)PK用户登录名user_name VARCHAR (20)Not null用户姓名user_psw VARCHAR (20)Not null用户登陆密码插入以下记录用户登录名用户姓名用户登陆密码张三张三111111lisi李四111111 (2)新建登陆界面,当用户登陆成功时弹出“登陆成功界面”,失败时弹出”登陆名或密码错误!”。 2.设计一个字符界面的员工信息管理系统,实现如下功能,要求将查询和删除等数据库的操作封装在DAO类里,另外设计一个Action类中,由它调用DAO对象并实现与用户交互的输入输出部分。 (1)创建一个数据库,建立一个员工表(职工编号,职工姓名、性别、出生年月,部门号及工资) (2)当用户选择“查询”功能时,通过命令行参数读入一个部门号,程序显示该部门的职工信息,输出职工姓名、性别、出生年月及工资。 (3)当用户选择“删除”功能时,从终端读入一个职工号,如果输入的职工号不存在,要给出相应的提示;若该职工号存在,则从emp表中删除该职工记录,并显示成功删除的提示信息。 2.3实验步骤1.为聊天系统设计用户登录认证程序1)在sqlserverxx中新建聊天数据库chat。 写出创建用户表user的sql语句,在数据库chat的查询窗口中执行此语句。 2)使用sql语句往user表中插入用户数据。 3)新建用户登陆界面,如下图,添加登陆事件。 4)新建ConnToSqlServer类,实现连接数据库的验证方法。 package user.login;import java.sql.Connection;import java.sql.DriverManager;elseSystem.out.println(没有此用户+login);catch(Exception e)System.out.println(数据库连接失败!+e);e.printStackTrace();return bool;5)在登陆事件的处理方法中调用ConnToSqlServer.connDB方法,返回真显示”登陆成功”,否则显示”登陆失败”。 参考方法JOptionPane.showMessageDialog(null,登陆成功!);/弹出一个窗口,显示登陆成功。 2.4实验报告把实验内容 1、2写在实验报告纸上,把实验运行结果截图贴到实验报告纸上。 附录1组件与事件类的补充资料表1组件及其常用方法组件常用方法Button getLabel(),setLabel(String),getActionCommand(),setActionCommand()Checkbox getLabel(),setLabel(String),getState(),setState(),setCheckboxGroup(CheckboxGroup)CheckboxGroup setSelectedCheckbox(CheckboxGroup)Label getText(),setText(String)List add(String),add(String,int),getItem(int),getItemCount(),getItems(),getSelectedIndex(),getSelectedItems()TextArea Append(String),insert(String,int),replaceRang
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 正交各向异性热弹性带型中两类裂纹边值问题的深入探究与应用分析
- 欧美对华贸易转移立法:剖析、影响与应对策略
- 欧盟温室气体减排政策的发展、成效与启示:基于可持续发展视角的分析
- 2026年机电安装培训考试试题及答案
- 橡胶水泥混凝土路用性能的多维度探究与实践应用
- 2026年低压电工实操业务知识考试卷及答案(共二十套)
- 2026年湖南郴州小升初考试试题及答案
- 2026年民生药业培训考试试题及答案
- 模糊PID控制:矿井水处理自动投药系统的创新变革
- 模拟电路仿真中Verilog - A导数优化算法的深度剖析与应用
- 肾脏毒性药物科普
- 2024-2025学年湖南省长沙市浏阳市八年级下学期期中语文试题
- SY-T 4214-2024 石油天然气建设工程施工质量验收规范 油气田非金属管道工程
- 2025级全科转岗出科考核试题及答案(消化科)
- 《老年人能力评估实务》智慧健康养老服务全套教学课件
- 北京市工程勘察服务成本要素信息(试行)2025
- GB/T 45898.1-2025医用气体管道系统终端第1部分:用于压缩医用气体和真空的终端
- 数智企业经营沙盘模拟实训教程-课程标准
- 停产产品管理办法
- DB32∕T 4937-2024 土地征收前社会稳定风险评估规范
- 中学生电动车管理制度
评论
0/150
提交评论