收藏 分销(赏)

面向对象程序设计实验指导书资料.doc

上传人:丰**** 文档编号:3583547 上传时间:2024-07-10 格式:DOC 页数:27 大小:47.50KB 下载积分:10 金币
下载 相关 举报
面向对象程序设计实验指导书资料.doc_第1页
第1页 / 共27页
面向对象程序设计实验指导书资料.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
面向对象程序设计实验指导书 -- 级 适用专业: 计算机科学与技术、 网络工程、 信息与计算科学 苏波 实验一 使用面向对象程序设计语言, 编写简单的程序 本实验4学时 1. 实验目的 熟悉编程环境, 熟悉标准库, 编制简单程序 2. 实验环境与条件 JDK1.6, Net Beans 3. 实验内容和步骤 3.1 编写一个输出hello,World的Java程序, 然后进行编译, 运行。 3.2 编写程序询问用户姓名, 然后向用户问好 4. 实验程序示例 注意: 实验程序不允许和实验示例完全一致。 public class hello {     public static void main(String[] args) {         java.util.Scanner aScanner = new java.util.Scanner(System.in);         System.out.print("Name: ");         String name = aScanner.next();         System.out.println("Hello " + name + "! Please Input Your Age");         System.out.print("Age:");         int aNum = aScanner.nextInt();         if(aNum<12)             System.out.println("Hello, Kid");         else if(aNum<18)             System.out.println("Hello, How about you study?");         else if(aNum<60)             System.out.println("You have to work hard.");         else             System.out.println("Are you still working?");     } } 把上面的程序保存为hello.java 使用命令javac hello.java编译hello.java,得到java可执行程序hello.class 使用命令java hello执行,得到数据显示结果如下: Name: Dan. Hello Dan! Please Input Your Age Age:25 You have to work hard. 程序说明:     1. 在netbeans中直接执行上面的程序时会发现语句System.out.print("Name: ");并不立即输出出来,而是在输入了名字如Dan后才一齐输出出来,这是集成开发环境的系统的标准输出缓存造成的.     2.new java.util.Scanner(System.in)产生了一个java.util.Scanner对象, 由于产生这个对象时用System.in作为参数, 这个Scanner对象会扫描系统的标准输入. java.util.Scanner aScanner定义了一个java.util.Scanner类型的名字叫做aScanner. 这里的Scanner类型在java.util包里面. 语句java.util.Scanner aScanner = new java.util.Scanner(System.in);中的=的作用是让为产生出来的这一个Scanner类型的对象,起一个名字叫做aScanner     3.aScanner.next()会把用户输入的数据作为一个字符串读入. String name是定义一个String(字符串)类型的变量名字name 语句String name = aScanner.next();是把用户输入的字符串用变量name代表     4. aScanner.nextInt()会把用户输入的数据作为一个整数(int类型)读入. int aNum是定义一个int(整数)类型的变量名字aNum 语句 int aNum = aScanner.nextInt();是把用户输入的整数赋值给变量aNum 附录A: JDK的安装 ( 在实验室的计算机里面, JDK和Net Beans已经安装好, 可是没有为操作系统配置到JDK的路径, 参考步骤3) (一) 安装JDK 本节下面假设使用的是JDK是Java SE 6 Update 24版( Java Development Kit Standard Edition 6 Update 24) 。能够根据实际情况选择最新版本的JDK, 并把本节下面示例中的24换成实际的数值, 如果使用 Java 7, 那么需要把本节下面示例中的6换成7。 第一步, 下载JDK 访问JDK的下载页面。 下载网址 根据提示选择运行平台( 操作系统和CPU的类型, 例如: windows操作系统, i586兼容类型的CPU) 和语言( 实际上只能选多国语言) , 而且必须同意 Java SE Development Kit 版权协议后, 就开始下载 JDK安装程序。 第二步, 运行JDK安装程序 ● 对于windows操作系统 直接运行jdk-6u24-windows-i586-p.exe ● 对于Linux操作系统 打开Linux的终端( 控制台) , 一般是选择: 应用程序->附件->终端。执行命令: chmod +x jdk-6u24-linux-i586.bin 把jdk-6u24-linux-i586.bin的属性改为可执行。然后运行 JDK安装程序 ./jdk-6u24-linux-i586.bin 然后根据提示进行安装即可。 第三步, 设置JAVA_HOME环境变量和PATH环境变量 环境变量的作用是让操作系统知道一些软件设置信息, 例如软件的安装路径。环境变量PATH是操作系统寻找可执行程序的路径序列。操作系统根据环境变量PATH的值( 用:或者;分隔的多个目录路径) , 查找要执行的命令( 可执行文件) 。 ● 对于windows操作系统 环境变量位置 windows 7: 选择 开始->控制面板->系统和安全->系统->高级系统设置->环境变量 windows XP: 选择 开始->控制面板->系统->高级->环境变量 windows : 选择 开始->设置->控制面板->系统->高级->环境变量 设置JAVA_HOME环境变量 增加一个新的环境变量, 名称为JAVA_HOME, 值为JDK安装到的目录路径。JDK安装到的目录路径的类似于C:\Program Files\Java\jdk1.6.0_24。提示: 该路径中有bin和jre子目录。 设置PATH环境变量 把JDK安装到的目录路径中的bin目录的路径追加在PATH变量的后面。在PATH环境变量中, 各个目录路径之间用英文的分号;进行分隔, 向PATH环境变量追加的新的目录路径的方法为, 在已有的PATH的值的后面, 增加英文分号;和路径, 例如: 增加目录路径为 ;C:\Program Files\Java\jdk1.6.0_24\bin 提示: 这个目录路径中有名称为java和javac的程序。 保存后, 注销并重新登录Windows。 ● 对于Linux操作系统 这里假设是使用bash shell的Linux, 使用其它shell的Linux与此类似。 在Linux的终端中执行命令 cd 到用户的主目录, 使用nano,或者vi,或者gedit修改用户配置文件.bash_profile( 如果是ubuntu Linux是.profile) 。在.bash_profile( 或者.profile) 文件末尾追加三行命令: JAVA_HOME=$HOME/jdk1.6.0_24 export JAVA_HOME PATH=$JAVA_HOME/bin:"${PATH}" 保存后, 注销并重新登录Linux。 第四步, 测试安装和配置JDK是否成功 检查Java虚拟机的版本。执行 java -version 应当看到Java虚拟机的信息。看到Java版本与安装的JDK的版本一致, 表示安装配置Java虚拟机/Java编译器成功, 否则表示安装或者配置有问题, 需要重新安装或者重新配置( 一般是没有配置好PATH环境变量造成的错误)。 检查Java编译器的版本。Java编译器的名称是javac。执行 javac -version 应当看到Java编译器的信息。看到显示的Java版本与安装的JDK的版本一致, 表示安装配置Java虚拟机/Java编译器成功, 否则表示安装或者配置有问题, 需要重新安装或者重新配置( 一般是没有配置好PATH环境变量造成的错误)。 附录B: Java程序设计的基本步骤示例 编写并执行第一个java程序的具体过程 (一) 编写Java源程序. 使用文本编辑器     windows的记事本,Unix/Linux的gedit文本编辑器或者vi/emacs(如果你会用它们)     (注意: word/Office等图文混排工具不能够). 用文本编辑器编写源程序如下: public class hello {     public static void main(String[] args) {         System.out.println("世界,你好!");     } } 把上面的源程序存为文件 hello.java 注意: 必须使用这个文件名.因为文件的名称必须和文件内的类(class)的名称保持一致,而且增加.java为文件名的后缀. (二) 编译 把源程序翻译为Java可执行程序. 打开控制台界面,到保存hello.java文件的目录,执行下面的命令 javac hello.java 如果产生了一个新的文件hello.class,那么编译成功. 如果没有产生了一个新的文件hello.class,那么编译失败,一般是源程序中有语法错误. (三) 执行 在java.class的目录,实际上就是当前的目录不用变化,执行下面的命令: java   hello 将得到程序的执行结果显示如下: 世界,你好! 如果得到上面的结果, 那么庆祝你的第一个java程序执行成功! 如果没有得到上面的结果, 那么参考以前的步骤, 看看哪个步骤错了。 实验二 基本语句和函数 本实验4学时 1、 实验目的: 练习函数的参数、 返回值和对象名字( 引用) 。 2、 实验环境与条件: JDK1.6, Netbeans 3、 实验内容: 编写程序: 验证用户名字和口令.使用Java. 具体内容:    在main()提示用户输入用户姓名和口令,并读入用户输入的姓名和口令. 由身份验证函数验证用户姓名和口令是否与预先设定的用户姓名和口令一致, 并通知用户验证结果. 提示:     Java中的函数必须在类里面定义. 附录A: Java编写的用户名口令检测函数示例 import java.util.Scanner; public class Main {     public static boolean check(String name, String password){         if(("Dan".equals(name))&&("123456".equals(password)))             return true;         else             return false;     }     public static String inputUserName(){         Scanner aScanner = new Scanner(System.in);         System.out.println("Name:");         String name = aScanner.next();         return name;     }    public static String inputUserPassword(){         Scanner aScanner = new Scanner(System.in);         System.out.println("Password:");         String password = aScanner.next();         return password;     }     public static void main(String[] args) {         String name = inputUserName();         String password = inputUserPassword();         if(check(name, password))             System.out.println("Check OK");         else             System.out.println("Wrong name or password");     } } 实验三 类与对象 本实验4学时 1、 实验目的: 类与对象、 数据成员、 成员函数、 构造函数 2、 实验环境与条件: JDK1.6, Netbeans 3、 实验内容: 编写程序: 验证用户名字和口令.使用Java. 具体内容:     编写一个用户接口对象,提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.    在main()由用户接口对象提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.然后, 由身份验证对象验证用户姓名和口令是否与预先设定的用户姓名和口令一致, 并通知用户验证结果. 附录A: 类与对象的基本使用示例 public class Login {     private String name;     private Scanner aScanner;     private String _name;     public Login(){         name = new String();         _name = "SHE";         aScanner = new Scanner(System.in);     }        public Login(String aName){         name = new String();         _name = aName;         aScanner = new Scanner(System.in);     }     public void check(){         if( (_name.equals(name)) )                        System.out.println("OK");         else             System.out.println("Error");     }     public static void main(String[] args) {         Login aLogin = new Login();         Login anotherLogin = new Login("AAA");         aLogin.inputName();         aLogin.check();         anotherLogin.inputName();         anotherLogin.check();      }     public void inputName() {         System.out.println("Name:");         name = aScanner.next();     } } 实验四 文件流 本实验4学时 1、 实验目的: 文件流的基本操作 2、 实验环境与条件: JDK1.6, Netbeans 3、 实验内容: 编写一个身份验证对象,验证用户名字和口令是否正确.要求用户的名字和口令来自于一个配置文件(纯文本文件格式). 编写一个用户接口对象,提示用户输入用户姓名和口令,并读入用户输入的姓名和口令. 在main()由用户接口对象提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.然后, 由身份验证对象验证用户姓名和口令是否与配置文件的用户姓名和口令一致, 并通知用户验证结果. 配置文件的具体格式示例如下: 用户名1:口令1 选做的实验内容: 编写一个用户接口对象,提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.    在main()由用户接口对象提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.然后, 由身份验证对象验证用户姓名和口令是否与配置文件的用户姓名和口令一致, 并通知用户验证结果. 在上述过程中,使用字符串流处理类java.io.Reader,java.io.Writer处理utf-8文件. 要求配置文件中保存多个用户名和口令, 能够使用任意一对(用户名,口令)都能够登录成功. 提示,使用字符串分割. 配置文件的具体格式示例如下: 用户名1:口令1 用户名2:口令2 用户名3:口令3 用户名4:口令4 用户名5:口令5 用户名6:口令6 附录: 一个文件读写的示例 public class FileDemo { /** * @param args the command line arguments */ public static void main(String[] args) { FileDemo fileDemoReadWrite = new FileDemo(); // fileDemoReadWrite.fileCreate(); fileDemoReadWrite.fileWrite(); fileDemoReadWrite.fileRead(); } String fileName = "demofile.txt"; FileInputStream fileInput = null; private FileOutputStream fileOutput; public void fileCreate() { File file = new File(this.fileName); if (file.exists() != true) { try { file.createNewFile(); System.out.println(this.fileName + " Created!"); } catch (IOException ex) { Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE, null, ex); } } else { file.delete(); } } public void fileRead() { try { fileInput = new FileInputStream(fileName); BufferedReader fileReader = new BufferedReader(new InputStreamReader(fileInput, "utf8")); while (fileReader.ready()) { String content = fileReader.readLine(); System.out.println(content); } } catch (IOException ex) { Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE, null, ex); } finally { try { fileInput.close(); } catch (IOException ex) { Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE, null, ex); } } } public void fileWrite() { try { fileOutput = new FileOutputStream(fileName); fileOutput.write("java: simplecomplexlanguage\n".getBytes("utf8")); fileOutput.write("java: 简单复合语言\n".getBytes("utf8")); } catch (IOException ex) { Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE, null, ex); } finally { try { fileOutput.close(); } catch (IOException ex) { Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE, null, ex); } } } } 实验五 具体类与继承、 访问控制 本实验4学时 1、 实验目的: 利用继承, 实现程序功能的扩充, 字符串和文件流的基本操作 2、 实验环境与条件: JDK1.6, Netbeans 3、 实验内容: 编写程序: 在前一个实验的基础上完成。增加: 一个具有修改口令功能的身份验证对象。口令要求保存到文件中。 验证用户名字和口令: 编写一个身份验证对象,验证用户名字和口令是否正确.在此基础上,利用类继承,编写一个利用配置文件的身份验证对象, 要求用户的名字和口令来自于一个配置文件(纯文本文件格式). 编写一个用户接口对象,提示用户输入用户姓名和口令,并读入用户输入的姓名和口令. 在main()由用户接口对象提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.然后, 由身份验证对象验证用户姓名和口令是否与配置文件的用户姓名和口令一致, 并通知用户验证结果.。 重新运行程序, 能够使用用户ID和新的口令经过验证。 一些可能有用的提示: 能够使用构造函数中从文件中读出口令。 选做的内容: 在此基础上, 提供一个用”加密”的方式保存口令的身份验证类。最简单的”加密”的方法能够使用按位异或实现。 算法如下: 假设口令为Password, x是一个密钥, 使用按位异或方式进行加密和解密。在C++中用^表示按位异或操作。 加密: Password ^ x = Passwordx 解密: Passwordx ^ x = Password 实验六 多态性和异常处理 本实验4学时 1、 实验目的: 学习使用虚函数实现多态性。经过编写、 调试程序理解异常的产生和处理。 2、 实验环境与条件: JDK1.6, Netbeans 3、 实验内容: 设计一个身份验证接口Auth,用于验证用户名字和口令是否正确. 编写一个利用配置文件的身份验证类Auth1, 具有用户名和口令验证功能. 要求用户的名字和口令来自于一个配置文件(纯文本文件格式). 配置文件格式为: 姓名1:密码1 姓名2:密码2 编写另一个利用配置文件的身份验证类Auth2, 具有用户名和口令验证功能. 要求用户的名字和口令来自于一个配置文件(纯文本文件格式). 配置文件格式为: 姓名1 密码1 姓名2 密码2 在main()中创立用户姓名和口令输入对象,提示用户输入用户姓名和口令, 并读入用户输入的姓名和口令. 然后, 分别创立两种类型的身份认证对象,以验证用户姓名和口令是否与配置文件的用户姓名和口令一致, 利用一个专门的函数通知用户验证结果. void echoResult(Auth aAuth, String name, String password) { if(aAuth.check(name, password)) System.out.println("OK"); else System.out.println("Error"); } 异常处理 在派生类的构造函数中增加异常处理。例如: 当保存密码的文件不存在时, 产生异常。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 技术指导

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服