面向对象程序设计实验指导书55.docx
- 文档编号:27046273
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:17
- 大小:21.32KB
面向对象程序设计实验指导书55.docx
《面向对象程序设计实验指导书55.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验指导书55.docx(17页珍藏版)》请在冰豆网上搜索。
面向对象程序设计实验指导书55
面向对象程序设计实验指导书
--2018级
适用专业:
计算机科学与技术、网络工程、信息与计算科学
苏波
实验一使用面向对象程序设计语言,编写简单的程序
本实验4学时
1.实验目的
熟悉编程环境,熟悉标准库,编制简单程序
2.实验环境与条件
JDK1.6,NetBeans
3.实验内容和步骤
3.1编写一个输出hello,World的Java程序,然后进行编译,运行。
3.2编写程序询问用户姓名,然后向用户问好
4.实验程序示例
注意:
实验程序不允许和实验示例完全一致。
publicclasshello{
publicstaticvoidmain(String[]args){
java.util.ScanneraScanner=newjava.util.Scanner(System.in)。
System.out.print("Name:
")。
Stringname=aScanner.next()。
System.out.println("Hello"+name+"!
PleaseInputYourAge")。
System.out.print("Age:
")。
intaNum=aScanner.nextInt()。
if(aNum<12)
System.out.println("Hello,Kid")。
elseif(aNum<18)
System.out.println("Hello,Howaboutyoustudy?
")。
elseif(aNum<60)
System.out.println("Youhavetoworkhard.")。
else
System.out.println("Areyoustillworking?
")。
}
}
把上面的程序保存为hello.java
使用命令javachello.java编译hello.java,得到java可执行程序hello.class
使用命令javahello执行,得到数据显示结果如下:
Name:
Dan.
HelloDan!
PleaseInputYourAge
Age:
25
Youhavetoworkhard.
程序说明:
1.在netbeans中直接执行上面的程序时会发现语句System.out.print("Name:
")。
并不立即输出出来,而是在输入了名字如Dan后才一齐输出出来,这是集成开发环境的系统的标准输出缓存造成的.
2.newjava.util.Scanner(System.in)产生了一个java.util.Scanner对象,由于产生这个对象时用System.in作为参数,这个Scanner对象会扫描系统的标准输入.
java.util.ScanneraScanner定义了一个java.util.Scanner类型的名字叫做aScanner.
这里的Scanner类型在java.util包里面.
语句java.util.ScanneraScanner=newjava.util.Scanner(System.in)。
中的=的作用是让为产生出来的这一个Scanner类型的对象,起一个名字叫做aScanner
3.aScanner.next()会把用户输入的数据作为一个字符串读入.
Stringname是定义一个String(字符串)类型的变量名字name
语句Stringname=aScanner.next()。
是把用户输入的字符串用变量name代表
4.aScanner.nextInt()会把用户输入的数据作为一个整数(int类型)读入.
intaNum是定义一个int(整数)类型的变量名字aNum
语句intaNum=aScanner.nextInt()。
是把用户输入的整数赋值给变量aNum
附录A:
JDK的安装
(在实验室的计算机里面,JDK和NetBeans已经安装好,但是没有为操作系统配置到JDK的路径,参考步骤3)
(一)安装JDK
本节下面假设使用的是JDK是JavaSE6Update24版(JavaDevelopmentKitStandardEdition6Update24)。
可以根据实际情况选择最新版本的JDK,并把本节下面示例中的24换成实际的数值,如果使用Java7,那么需要把本节下面示例中的6换成7。
第一步,下载JDK
访问JDK的下载页面。
下载网址
根据提示选择运行平台(操作系统和CPU的类型,例如:
windows操作系统,i586兼容类型的CPU)和语言(实际上只能选多国语言),并且必须同意JavaSEDevelopmentKit版权协议后,就开始下载JDK安装程序。
第二步,运行JDK安装程序
●对于windows操作系统
直接运行jdk-6u24-windows-i586-p.exe
●对于Linux操作系统
打开Linux的终端(控制台),通常是选择:
应用程序->附件->终端。
执行命令:
chmod+xjdk-6u24-linux-i586.bin
把jdk-6u24-linux-i586.bin的属性改为可执行。
然后运行JDK安装程序
./jdk-6u24-linux-i586.bin
然后根据提示进行安装即可。
第三步,设置JAVA_HOME环境变量和PATH环境变量
环境变量的作用是让操作系统知道一些软件设置信息,例如软件的安装路径。
环境变量PATH是操作系统寻找可执行程序的路径序列。
操作系统根据环境变量PATH的值(用:
或者。
分隔的多个目录路径),查找要执行的命令(可执行文件)。
●对于windows操作系统
环境变量位置
windows7:
选择开始->控制面板->系统和安全->系统->高级系统设置->环境变量
windowsXP:
选择开始->控制面板->系统->高级->环境变量
windows2000:
选择开始->设置->控制面板->系统->高级->环境变量
设置JAVA_HOME环境变量
增加一个新的环境变量,名称为JAVA_HOME,值为JDK安装到的目录路径。
JDK安装到的目录路径的类似于C:
\ProgramFiles\Java\jdk1.6.0_24。
提示:
该路径中有bin和jre子目录。
设置PATH环境变量
把JDK安装到的目录路径中的bin目录的路径追加在PATH变量的后面。
在PATH环境变量中,各个目录路径之间用英文的分号。
进行分隔,向PATH环境变量追加的新的目录路径的方法为,在已有的PATH的值的后面,增加英文分号。
和路径,例如:
增加目录路径为
。
C:
\ProgramFiles\Java\jdk1.6.0_24\bin
提示:
这个目录路径中有名称为java和javac的程序。
保存后,注销并重新登录Windows。
●对于Linux操作系统
这里假设是使用bashshell的Linux,使用其它shell的Linux与此类似。
在Linux的终端中执行命令
cd
到用户的主目录,使用nano,或者vi,或者gedit修改用户配置文件.bash_profile(如果是ubuntuLinux是.profile)。
在.bash_profile(或者.profile)文件末尾追加三行命令:
JAVA_HOME=$HOME/jdk1.6.0_24
exportJAVA_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等图文混排工具不可以).
用文本编辑器编写源程序如下:
publicclasshello{
publicstaticvoidmain(String[]args){
System.out.println("世界,你好!
")。
}
}
把上面的源程序存为文件hello.java
注意:
必须使用这个文件名.因为文件的名称必须和文件内的类(class)的名称保持一致,并且增加.java为文件名的后缀.
(二)编译
把源程序翻译为Java可执行程序.
打开控制台界面,到保存hello.java文件的目录,执行下面的命令
javachello.java
如果产生了一个新的文件hello.class,那么编译成功.
如果没有产生了一个新的文件hello.class,那么编译失败,通常是源程序中有语法错误.
(三)执行
在java.class的目录,实际上就是当前的目录不用变化,执行下面的命令:
java hello
将得到程序的执行结果显示如下:
世界,你好!
如果得到上面的结果,那么庆祝你的第一个java程序执行成功!
如果没有得到上面的结果,那么参考以前的步骤,看看哪个步骤错了。
实验二基本语句和函数
本实验4学时
1、实验目的:
练习函数的参数、返回值和对象名字(引用)。
2、实验环境与条件:
JDK1.6,Netbeans
3、实验内容:
编写程序:
验证用户名字和口令.使用Java.
具体内容:
在main()提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.由身份验证函数验证用户姓名和口令是否与预先设定的用户姓名和口令一致,并通知用户验证结果.
提示:
Java中的函数必须在类里面定义.
附录A:
Java编写的用户名口令检测函数示例
importjava.util.Scanner。
publicclassMain{
publicstaticbooleancheck(Stringname,Stringpassword){
if(("Dan".equals(name))&&("123456".equals(password)))
returntrue。
else
returnfalse。
}
publicstaticStringinputUserName(){
ScanneraScanner=newScanner(System.in)。
System.out.println("Name:
")。
Stringname=aScanner.next()。
returnname。
}
publicstaticStringinputUserPassword(){
ScanneraScanner=newScanner(System.in)。
System.out.println("Password:
")。
Stringpassword=aScanner.next()。
returnpassword。
}
publicstaticvoidmain(String[]args){
Stringname=inputUserName()。
Stringpassword=inputUserPassword()。
if(check(name,password))
System.out.println("CheckOK")。
else
System.out.println("Wrongnameorpassword")。
}
}
实验三类与对象
本实验4学时
1、实验目的:
类与对象、数据成员、成员函数、构造函数
2、实验环境与条件:
JDK1.6,Netbeans
3、实验内容:
编写程序:
验证用户名字和口令.使用Java.
具体内容:
编写一个用户接口对象,提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.
在main()由用户接口对象提示用户输入用户姓名和口令,并读入用户输入的姓名和口令.然后,由身份验证对象验证用户姓名和口令是否与预先设定的用户姓名和口令一致,并通知用户验证结果.
附录A:
类与对象的基本使用示例
publicclassLogin{
privateStringname。
privateScanneraScanner。
privateString_name。
publicLogin(){
name=newString()。
_name="SHE"。
aScanner=newScanner(System.in)。
}
publicLogin(StringaName){
name=newString()。
_name=aName。
aScanner=newScanner(System.in)。
}
publicvoidcheck(){
if((_name.equals(name)))
System.out.println("OK")。
else
System.out.println("Error")。
}
publicstaticvoidmain(String[]args){
LoginaLogin=newLogin()。
LoginanotherLogin=newLogin("AAA")。
aLogin.inputName()。
aLogin.check()。
anotherLogin.inputName()。
anotherLogin.check()。
}
publicvoidinputName(){
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
附录:
一个文件读写的示例
publicclassFileDemo{
/**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(String[]args){
FileDemofileDemoReadWrite=newFileDemo()。
//fileDemoReadWrite.fileCreate()。
fileDemoReadWrite.fileWrite()。
fileDemoReadWrite.fileRead()。
}
StringfileName="demofile.txt"。
FileInputStreamfileInput=null。
privateFileOutputStreamfileOutput。
publicvoidfileCreate(){
Filefile=newFile(this.fileName)。
if(file.exists()!
=true){
try{
file.createNewFile()。
System.out.println(this.fileName+"Created!
")。
}catch(IOExceptionex){
Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE,null,ex)。
}
}else{
file.delete()。
}
}
publicvoidfileRead(){
try{
fileInput=newFileInputStream(fileName)。
BufferedReaderfileReader=newBufferedReader(newInputStreamReader(fileInput,"utf8"))。
while(fileReader.ready()){
Stringcontent=fileReader.readLine()。
System.out.println(content)。
}
}catch(IOExceptionex){
Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE,null,ex)。
}finally{
try{
fileInput.close()。
}catch(IOExceptionex){
Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE,null,ex)。
}
}
}
publicvoidfileWrite(){
try{
fileOutput=newFileOutputStream(fileName)。
fileOutput.write("java:
simplecomplexlanguage\n".getBytes("utf8"))。
fileOutput.write("java:
简单复合语言\n".getBytes("utf8"))。
}catch(IOExceptionex){
Logger.getLogger(FileDemo.class.getName()).log(Level.SEVERE,null,ex)。
}finally{
try{
fileOutput.close()。
}catch(IOExceptionex){
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=P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 实验 指导书 55