实验八-输入输出流

合集下载

实验一 P1口输入、输出实验

实验一 P1口输入、输出实验

实验一P1口输入、输出实验一.实验要求1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

2.P1口做输入口,接八个拨动开关,以实验机上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。

二.实验目的1.学习P1口的使用方法。

2.学习延时子程序的编写和使用。

三. 实验电路及连线实验一时,P1.0-P1.7接L0-L7。

实验二时,P1.0-P1.7接K0-K7,PO0-PO7接L0-L7。

CS273接8300H。

四.实验说明1.P1口是准双向口。

它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。

因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。

若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

2.延时子程序的延时计算问题对于程序DELAY:MOV R0,#00HDELAY1:MOV R1,#0B3HDJNZ R1,$DJNZ R0,DELAY1查指令表可知MOV,DJNZ 指令均需用两个机器周期,而一个机器周期时间长度为12/11.0592MHz,所以该段程序执行时间为:((0B3+1)×256+1)×2×12÷11059200=100.002mS五.实验框图程序框图:TP1A.ASM主程序框图TP1B.ASM主程序框图六.附加实验内容1、用P1口的P1.0-P1.3作输出口接4个发光二极管,P1.4-P1.7作输入口接4个拨动开关,将开关的状态读进来并在发光二极管上显示。

七.实验报告要求1、书写实验目的、实验内容、实验连线、以及实验中的观察结果;2、画出流程图、编写实验程序,写出实验的心得体会。

面向对象的程序设计(C++)教学大纲

面向对象的程序设计(C++)教学大纲

面向对象的程序设计(C++)教学大纲教学目的本课程为高级语言程序设计的入门课程,完全针对零起点的学生,可作为其他信息类相关课程的基础课。

目标是使学生通过本课程的学习,掌握面向对象程序设计的基本概念和方法、C++的基本语法和编程方法;学会使用集成开发环境;掌握程序调试方法;初步了解常用数据结构和非数值算法;初步了解C++标准模板库的使用方法。

教学任务完成《C++语言程序设计(第4版)》教材内容,及《C++语言程序设计(第4版)学生用书》中的实验内容,另有学生自主选题的大作业、选作的论文回报告。

学时:大课30、实验30、课外30、课外讨论10学时。

教学内容的结构课程由4个模块共12个教学单元组成,对应于《C++语言程序设计(第4版)》的十二章内容。

教学活动以及教学方法上的基本要求大课、实验、课外作业、自选题目的大作业、论文和报告结合,学时大课30、实验30、课外30。

另有课外讨论环节。

通过大课讲解基本原理和方法;通过实验课巩固大课内容,并在助教辅导下完成基础实验,当堂由助教验收;课外作业由学生独立完成,并提交清橙考试系统进行评分。

自选题目的大作业要在期中提交选题报告,逐一批改并给出评语,期末提交全部文档及程序并且逐一答辩。

答辩形式为:学生演示5分钟,教师提问5分钟,当即给出成绩。

论文和报告属于加分因素。

课外讨论安排在每次大课之后,加1学时,自愿参加,每人每学期至少参加一次。

内容为:教师对难点进行复习、讲解补充例题,学生提问和讨论。

模块及单元教学目标与任务模块1:程序设计基础单元1 绪论要点:●面向对象程序设计语言的产生和特点,面向对象方法的由来及其基本概念,面向对象的软件工程简介;●信息在计算机中的表示和存储,程序的开发过程。

教学任务:1.1计算机程序设计语言的发展1.2面向对象的方法1.3面向对象的软件开发1.4信息的表示与存储1.5程序的开发过程作业及实验:作业1、实验一单元2 C++简单程序设计要点:●C++语言的发展历史及其特点;●构成C++语句的基本部分—字符集、关键字、标识符、操作等;●C++的基本数据类型和自定义数据类型;●顺序、选择和循环结构。

面向对象程序设计(Java)实验指导书

面向对象程序设计(Java)实验指导书
实验指导书
10 信息管理与信息系统 专业
雷金娥编 2012 年 9 月
目录
实验一 Java Application 程序的编辑、编译和运行 ..................................... 2 实验二 Java 程序设计基础.................................................................................. 4 实验三 类的封装 ................................................................................................... 5 实验四 类的继承 ..................................................................................................... 6 实验五 类的多态 ..................................................................................................... 8 实验六 接口与实现接口的类 ............................................................................. 12 实验七 图形用户界面设计 ................................................................................. 14 实验八 线程设计 ................................................................................................. 16 实验九 输入/输出流与文件操作......................................................................... 18 实验十 数据库应用设计 ..................................................................................... 20

(实验八)直流稳压电源

(实验八)直流稳压电源

实验八直流稳压电路一.实验摘要1、参照实验箱的直流稳压电路模块,对组成该电路的各个部分进行测试和连接。

2、用示波器测量单相桥式全波整流电路的输入和输出波形,用万用表的直流电压档测量输出电压。

3、测量经过电容滤波之后的输入和输出波形,测试直流电压。

4、测量经过三端稳压块稳压之后的输入和输出波形,测量直流电压。

5、稳压电源的静态调试和动态调试。

静态调试指当负载变化时,观察输出电压是否有变化。

动态调试指用示波器测量输出端的纹波电压波形。

二.实验主要仪器二极管,万用表,示波器,及其他电子元件。

三.实验原理直流稳压电源的功能是将交流电压变为直流电压。

交流电压常常是50Hz工频电压。

通常所说的直流稳压电源输出的“直流”电压,严格地说是直流加交流电压,其中以直流为主。

只有在对直流电压有很高要求的场合使用的精密直流电源才是没有交流分量的直流电压源。

一般地说,若要求直流稳压电源输出电压中交流分量越少,则直流稳压电源的电路越复杂。

通常,直流稳压电源的内阻很小,但不为零。

通过直流电源内阻形成的电子系统中的级间耦合,对于电子系统是十分有害的,一般地说,随着直流稳压电源输出电流的增大,直流稳压电源的内阻也将增大。

通常直流稳压电源输出电压随输入电压的变化和输出电流的变化而变化,且输出电流的增加而增大。

一般地说,若要求输入电压的变化和输出电流的变化时直流稳压电源输出电压变化越小,则直流稳压电源的电路越复杂。

1)桥式整流电路整流电路常采用二极管单相全波整流电路,电路如图3.4所示。

在U2的正半周内,二极管D1、D2导通,D3、D4截止;U的负半周内,D3、D4导2通,D1、D2截止。

正负半周内部都有电流流过的负载电阻RL,且方向是一致的。

2)电容滤波电路电路如图,在直流输出端接滤波电容可减小输出中的交流分量。

理论上,在同一频率下容量大的电容其容抗小,这样一大一小电容相并联后其容量小的电容C2不起作用。

但是,由于大容量的电容器存在感抗特性,等效为一个电容与一个电感串联。

《Java程序设计》课程教学大纲

《Java程序设计》课程教学大纲

《Java程序设计》课程教学大纲课程编号:08120031课程名称:Java程序设计/JAVA Programming总学时/学分:48/3(其中理论32学时,实验16学时)适用专业:计算机科学与技术一、课程目标通过本课程学习,学生应达到如下目标:目标1. 识别Java语言特点、基本语法、语言机制。

目标2. 将面向对象方法知识运用在程序设计案例中,能使用JAVA常用类、枚举、lambda 表达式、容器、泛型进行实例编程验证。

目标3. 利用JavaSE中的异常处理、输入输出等技术来表达处理程序应用问题。

目标4. 将图形用户界面和数据库编程技术运用中综合应用程序设计中。

目标5. 搭建Java开发环境,能设计实现各种Java技术的应用程序,且能测试运行。

二、课程目标对毕业要求的支撑三、教学过程安排四、实验或上机内容五、课程目标达成方法六、考核标准本门课程考核包括6个部分,分别为考试、作业、实验、讨论和测验。

具体要求及评分方法如下:1、期末考试试卷知识点要求2、作业3、实验4、讨论设置讨论课一次,要求学生按照讨论题目分组查阅资料,归纳总结,撰写报告。

5、测验随堂测验,老师给出题目,学生回答。

具体有任课老师给出评分标准。

七、教材及主要参考资料[1] 黑马程序员. Java基础入门(第2版)[M]. 清华大学出版社, 2018.[2] 郑人杰、马素霞、殷人昆. 软件工程概论(第2版)[M]. 机械工业出版社,2016.[3] Gay S.Horstmann. Java核心技术(第10版)[M]. 机械工业出版社,2016.[4] Y.Daniel Liang(美). Java语言程序设计(第10版)[M]. 机械工业出版社.2015.[5] 李刚. 疯狂Java讲义(第4版)[M]. 电子工业出版社,2018.[6] 封亚飞. 揭秘Java虚拟机[M]. 电子工业出版社,2017.[7] Bruce Eckel(美). Java编程思想(第4版)[M]. 机械工业出版社,2007.。

实验八实验报告电工学

实验八实验报告电工学

实验八实验报告电工学中山大学电工原理及其应用实验报告SUN YAT-SEN UNIVERSITY院(系):移动信息工程学号:审批专业:软件工程实验人:实验题目:实验九:BJT单管共射电压放大电路一、实验目的1. 掌握放大电路静态工作点的测试方法,分析静态工作点对放大器性能的影响。

2. 掌握放大电路动态性能(电压增益、输入电阻、输出电阻、最大不失真输出电压以及幅频特性等)的测试方法。

3. 进一步熟练常用电子仪器的使用二、预习思考题1. 阅读教材中有关单管放大电路的内容并估算实验电路的性能指标。

假设:3DG6 的β=100,Rb2=20KΩ,Rb1=60KΩ,RC=2KΩ,RL=2KΩ。

估算放大电路的静态工作点,电压增益AV,输入电阻Ri和输出电阻RO2、阅读实验附录中有关示波器的使用、晶体管特性图示仪简介以及放大电路干扰和自激振荡消除的内容。

3、能否用直流电压表直接测量晶体管的VBE?为什么实验中要采用测VB、VE,再间接算出VBE的方法?答:一般的电压表直接测不准,会引起电路参数变化,因为电表直接接在输入端,形成额外的输入信号。

而测UB、UE时,电压表的一端是接地的,不容易形成额外输入。

4、怎样测量Rb1阻值?答:用万用表电阻档测量。

5、当调节偏置电阻Rb1,使放大电路输出波形出现饱和或截止失真时,晶体管的管压降VCE怎样变化?答:饱和失真时Uce减小Ic 增大,截止失真时Uce增大Ic减小。

6、改变静态工作点对放大电路的输入电阻Ri有否影响?改变外接电阻RL对输出电阻RO有否影响?答:因为Ri≈Rbe‖Rb1‖Rb2;Ro≈Rc,所以对输入电阻有影响对输出电阻吴影响。

7、在测试AV,Ri和RO时怎样选择输入信号的大小和频率?为什么信号频率一般选1KHz,而不选100KHz或更高?答:应该选Ui=10mv作用f=1KHZ左右,因为,试验电路为阻容耦合单管共射放大电路,阻容耦合单管放大电路的下限频率fL越小电路的低频响应越好,所以采用1KHZ而不用更高的8.单管共射级放大电路测试中,如果将函数信号发生器,交流毫伏表,示波器中任一仪器的二个测试端子接线换位,将会出现什么问题?答:对于函数信号发生器:如果有波形输出,例如正弦波,则在示波器端的显示是反相。

标准输入输出流

标准输入输出流

标准输入输出流标准输入输出流(Standard Input/Output Stream)是计算机程序中常用的一种输入输出方式,它是程序与外部环境进行数据交换的重要方式。

在大多数编程语言中,都有对标准输入输出流的支持,比如在C语言中,可以使用stdio.h库中的函数来进行标准输入输出操作。

在本文中,我将介绍标准输入输出流的基本概念、使用方法和一些常见的应用场景。

标准输入流(stdin)是程序从键盘或其他输入设备读取数据的流,而标准输出流(stdout)则是程序向屏幕或其他输出设备输出数据的流。

这两个流在程序运行时都是默认打开的,可以直接使用,不需要额外的操作。

除了标准输入输出流之外,还有标准错误流(stderr),用于输出程序的错误信息。

在C语言中,可以使用printf函数向标准输出流输出数据,使用scanf函数从标准输入流读取数据。

比如:```c。

int num;printf("Please input a number: ");scanf("%d", &num);printf("The number you input is: %d\n", num);```。

上面的代码中,printf函数将提示用户输入一个数字,然后使用scanf函数从标准输入流读取用户输入的数字,并使用printf函数将其输出到标准输出流。

除了C语言之外,其他编程语言也都提供了类似的标准输入输出流操作方式。

比如在Python中,可以使用input函数获取用户输入,使用print函数输出数据。

在Java中,可以使用System.in和System.out来进行标准输入输出操作。

标准输入输出流在实际应用中有着广泛的用途。

比如在命令行程序中,通常会使用标准输入输出流来与用户进行交互;在网络编程中,可以使用标准输入输出流来进行数据的读写;在文件处理中,可以使用标准输入输出流来进行文件的读写操作。

JAVA语言程序设计实验报告

JAVA语言程序设计实验报告

实验一、安装JDK并熟悉java的运行环境实验二、基本语法练习实验三、面向对象编程实验(4)实验四、异常处理实验实验五、小应用程序实验实验六、图形图像实验实验七、GUI(图形用户接口)实验(4)实验八、多线程实验实验九、输入输出流实验(4)实验十、数据库应用实验(4)实验一、安装JDK并熟悉java的运行环境一、实验目的熟悉JA V A的运行环境及学习简单的编程。

二、预习内容安装工具软件的基本方法。

三、实验设备与环境装有JA V A语言工具软件(Eclipse )的微机若干四、实验内容安装Eclipse及JA V A的核心编译程序J2SDK。

1、打开Eclipse的安装盘安装Eclipse。

2、在相同目录下安装J2SDK。

3、打开Eclipse软件对J2SDK文件进行配置。

4、编写一应用程序,在屏幕上显示“HELLO WORLD”和爱心标志。

Pulic class Hello{public static void main(String args[]){//在屏幕上显示“HELLO WORLD”和爱心标志}}5、编写一小程序实现上述功能:在屏幕上显示“HELLO WORLD”和爱心标志。

实验结果五、注意事项⒈认真填写实验报告⒉遵守实验室各项制度,服从实验指导教师的安排⒊按规定的时间完成实验六、说明本次实验建议学时数2学时七、实验总结与体会实验二、基本语法练习一、实验目的⒈熟悉Java的基本语法⒉编写应用程序接收命令行参数⒊编写应用程序接收用户从键盘的输入⒋掌握字符串与数组的基本方法二、预习内容java编程的基本结构三、实验设备与环境装有JA V A语言工具软件(Eclipse )的微机若干四、实验内容⒈编写一个应用程序求若干个数的平均数,原始数字要求从命令行输入。

应用程序中main方法的参数String类型的数组args能接受用户从命令行键入的参数。

(1)编辑A verage.java。

class A verage{public static void main(String args[ ]){double n,sun=0;for (int l=0;l<args.legth;l++){sum=sum+Double.valueOf(arg[l].doubleV alue();)}n=sum/args.length;System.out.println(“average=”+n);}}命令行参数:12.34 34.45 21212121注意:1)参数的个数可以利用args.length来取得。

实验八实验报告电工学

实验八实验报告电工学

中山大学电工原理及其应用实验报告S U N Y A T-S E N U N I V E R S I T Y院(系):移动信息工程学号:审批专业:软件工程实验人:实验题目:实验九:BJT单管共射电压放大电路一、实验目的1. 掌握放大电路静态工作点的测试方法,分析静态工作点对放大器性能的影响。

2. 掌握放大电路动态性能(电压增益、输入电阻、输出电阻、最大不失真输出电压以及幅频特性等)的测试方法。

3. 进一步熟练常用电子仪器的使用二、预习思考题1.阅读教材中有关单管放大电路的内容并估算实验电路的性能指标。

假设:3DG6 的β=100,Rb2=20KΩ,Rb1=60KΩ,RC=2KΩ,RL=2KΩ。

估算放大电路的静态工作点,电压增益AV,输入电阻Ri和输出电阻RO2、阅读实验附录中有关示波器的使用、晶体管特性图示仪简介以及放大电路干扰和自激振荡消除的内容。

3、能否用直流电压表直接测量晶体管的VBE?为什么实验中要采用测VB、VE,再间接算出VBE的方法?答:一般的电压表直接测不准,会引起电路参数变化,因为电表直接接在输入端,形成额外的输入信号。

而测UB、UE时,电压表的一端是接地的,不容易形成额外输入。

4、怎样测量Rb1阻值?答:用万用表电阻档测量。

5、当调节偏置电阻Rb1,使放大电路输出波形出现饱和或截止失真时,晶体管的管压降VCE怎样变化?答:饱和失真时Uce减小Ic增大,截止失真时Uce增大Ic减小。

6、改变静态工作点对放大电路的输入电阻Ri有否影响?改变外接电阻RL对输出电阻RO有否影响?答:因为Ri≈Rbe‖Rb1‖Rb2;Ro≈Rc,所以对输入电阻有影响对输出电阻吴影响。

7、在测试AV,Ri和RO时怎样选择输入信号的大小和频率?为什么信号频率一般选1KHz,而不选100KHz 或更高?答:应该选Ui=10mv作用f=1KHZ左右,因为,试验电路为阻容耦合单管共射放大电路,阻容耦合单管放大电路的下限频率fL越小电路的低频响应越好,所以采用1KHZ而不用更高的8.单管共射级放大电路测试中,如果将函数信号发生器,交流毫伏表,示波器中任一仪器的二个测试端子接线换位,将会出现什么问题?答:对于函数信号发生器:如果有波形输出,例如正弦波,则在示波器端的显示是反相。

程序设计基础(CC++)实验报告

程序设计基础(CC++)实验报告

实验一熟悉C++程序开发环境1、实验目的1. 了解C++的集成开发环境2. 熟悉C++程序的开发过程(编译、连接、调试、运行及查看结果)3. 理解简单的C++程序结构2、实验内容(教材19页)1.编写一程序输出用*组成的菱形图案2.设计一个程序,输入两个数,将它们相除,观察结果为无限循环小数时按精度从小到大输出结果。

实验二顺序结构1、实验目的1. 理解C++程序的顺序结构2. 熟悉C++程序的开发过程(编译、连接、调试、运行及查看结果)3. 理解简单的C++程序结构2、实验内容(教材48页)1.摄氏温度与华氏温度的转换公式为:c=5/9*(f-32),其中c为摄氏温度,f为华氏温度。

写出两者互相转换的表达式,将表达式放到程序中,以整数形式输入一种温度,以整数形式输出转换后温度值。

实验三选择结构1、实验目的1. 理解C++程序的条件判断2. 进一步提高程序调试与修改编译错误的能力3. 理解C++程序结构,增强可读性2、实验内容(教材48页)1.输入一元二次方程的系数,求方程得解。

实验四循环结构(一)1、实验目的1. 理解C++程序的各种循环结构2. 进一步提高程序调试与修改编译错误的能力3. 理解C++程序结构,增强可读性2、实验内容(教材48页)1.求100~200之间不能被3整除也不能被7整除的数实验五循环结构(二)1、实验目的1. 理解C++程序的各种循环结构2. 进一步提高程序调试与修改编译错误的能力3. 理解C++程序结构,增强可读性2、实验内容(教材69页)1.编写一程序,按下列公式求圆周率,精确到最后一项绝对值小于10-8。

公式π/4≈1-1/3+1/5-1/7+…实验六函数1、实验目的1. 理解C++程序的函数声明、定义方法。

2. 进一步提高程序调试与修改编译错误的能力3. 理解函数参数的传递。

2、实验内容(教材95页)1.编写程序,设计一个函数判断一个整数是否为素数。

实验七数组(一)1、实验目的1. 理解C++程序的数组概念。

实验八液体混合装置控制的模拟

实验八液体混合装置控制的模拟

实验八液体混合装置控制的模拟在MF24模拟实验挂箱中液体混合装置的模拟控制实验区完成本实验一、实验目的熟练使用各条基本指令,通过对工程实例的模拟,熟练地掌握PLC的编程和程序调试。

二、控制要求本装置为两种液体混合模拟装置,SL1、SL2、SL3为液面传感器,液体A、B阀门与混合液阀门由电磁阀YV1、YV2、YV3控制,M为搅匀电机,控制要求如下:初始状态:装置投入运行时,液体A、B阀门关闭,混合液阀门打开20秒将容器放空后关闭。

启动操作:按下启动按钮SB1,装置就开始按下列约定的规律操作:液体A阀门打开,液体A流入容器。

当液面到达SL2时,SL2接通,关闭液体A阀门,打开液体B阀门。

液面到达SL1时,关闭液体B阀门,搅匀电机开始搅匀。

搅匀电机工作6秒后停止搅动,混合液体阀门打开,开始放出混合液体。

当液面下降到SL3时,SL3由接通变为断开,再过2秒后,容器放空,混合液阀门关闭,开始下一周期。

停止操作:按下停止按钮SB2后,在当前的混合液操作处理完毕后,才停止操作(停在初始状态上)。

三、液体混合装置控制的模拟实验面板图:此面板中,液面传感器用钮子开关来模拟,启动、停止用动合按钮来实现,液体A阀门、液体B阀门、混合液阀门的打开与关闭以及搅匀电机的运行与停转用发光二极管的点亮与熄灭来模拟。

四、输入/输出接线列表输入接线SB1SB2SL1SL2SL3 X0X1X2X3X4输出接线YV1YV2YV3YKM Y0Y1Y2Y3五、工作过程分析根据控制要求编写的梯形图分析其工作过程。

启动操作:按下启动按钮SB1,X000的动合触点闭合,M100产生启动脉冲,M100的动合触点闭合,使Y000保持接通,液体A电磁阀YV1打开,液体A流入容器。

当液面上升到SL3时,虽然X004动合触点接通,但没有引起输出动作。

当液面上升到SL2位置时,SL2接通,X003的动合触点接通,M103产生脉冲,M103的动合触点接通一个扫描周期,复位指令RST Y000使Y000线圈断开,YV1电磁阀关闭,液体A停止流入;与此同时,M103的动合触点接通一个扫描周期,保持操作指令SET Y001使Y001线圈接通,液体B电磁阀YV2打开,液体B流入。

IO口输入、输出实验

IO口输入、输出实验

实验一I/O口输入、输出实验2010.04.20一、实验目的:了解LED二极管的工作原理。

掌握LED二极管亮灭左右移的编程方法。

二、实验原理:八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮。

我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。

表1三、实验电路原理图四、程序框图实验程序:START: MOV ACC,#0FEH ;ACC中先装入LED1亮的数据(二进制的11111110)MOV P1,ACC ;将ACC的数据送P1口MOV R0,#7LOOP1: RL A ;将ACC中的数据左移一位MOV P1,A ;把ACC左移后的数据送p1口显示ACALL DELAY ;调用延时子程序DJNZ R0,LOOP1 ;没有移动够7次继续移动MOV R1,#7LOOP2: RR A ;将ACC中的数据右移一位MOV P1,A ;把ACC右移后的数据送p1口显示ACALL DELAYDJNZ R1,LOOP2AJMP START ;移动完7次后跳到开始重来,以达到循环流动效果;----- 延时子程序 -----DELAY: MOV R2,#255D1: MOV R3,#255DJNZ R3,$DJNZ R2,D1RET ;延时子程序结束,返回到调用处的下一句END ;程序结束实验现象:实验实现了单一灯的左移右移。

开始时P1.0口的LED点亮,然后P1.1→P1.2→P1.3→┅→P1.7的LED依次点亮,实现了右移。

当P1.7的LED点亮后,P1.6→P1.5→P1.4→┅→P1.0口的LED又依次点亮,实现了左移。

然后循环,从而实现灯的循环左右移。

实验结论:通过单片机对P1口赋值,然后利用移位RL和RR指令使相应的LED点亮,可以实现灯的左右移。

硬件实验八8255输入、输出实验

硬件实验八8255输入、输出实验

硬件实验⼋8255输⼊、输出实验硬件实验⼋ 8255输⼊、输出实验⼀、实验要求利⽤8255可编程并⾏⼝芯⽚,实现输⼊/输出实验,实验中⽤8255PA ⼝作输出,PB ⼝作输⼊。

⼆、实验⽬的1、了解8255芯⽚结构及编程⽅法。

2、了解8255输⼊/输出实验⽅法。

三、实验电路及连线8255的CS/接地址译码/CS0,则命令字地址为8003H 。

PA0-PA7(PA ⼝)接LED0-LED7(LED )、PB0-PB7(PB ⼝)接K0-K7(开关量)。

数据线、读/写控制、地址线、复位信号板上已接好。

四、实验说明可编程通⽤接⼝芯⽚8255A 有3个8位的并⾏I/O ⼝,它有3种⼯作⽅式。

本实验采⽤的是⽅式0:PA ,PC ⼝输出,PB ⼝输⼊,通过对8255A 编程实现将开关状态送发光⼆极管显⽰。

mode equ 0 ; ⽅式0,PA,PC输出,PB输⼊ PortA equ #8000h ; Port A的地址PortB equ #8001h ; Port BPortC equ #8002h ; Port CCAddr equ 8003h ; 控制字地址Org 0ljmp startorg 0100hstart: mov a, #modemov dptr, #CAddrmovx @dptr , a;实验1:通过PortA输出,控制led灯从左到右逐次点亮EX_A:mov a,#80Hmov dptr,#PortAmov b,#8HOutA:movx @dptr ,arr amov r5,#1call delay ; 延时;实验2:通过PortB将开关状态送 PortA 输出EX_B:mov dptr, #PortBmovx a,@dptrmov dptr, #PortAmovx @dptr, amov r5,#2call delayljmp startdelay:mov r7,#0ddd: djnz r7,ddddjnz r6,ddddjnz r5,dddretend硬件实验九外部中断(急救车与交通灯)⼀、实验要求本实验模拟交通信号灯控制,⼀般情况下正常显⽰,有急救车到达时,两个⽅向交通信号灯全红,以便让急救车通过。

实验八、输入输出实验

实验八、输入输出实验

实验八、输入/输出实验一、实验目的了解模型机输出寄存器的结构及控制方法,掌握手动输出控制和程序输出控制的基本方法,以便学会与外设之间的数据交换方法。

二、实验要求使用CP226实验平台,完成数据的输入与输出控制,并能得到准确的实验结果。

三、实验内容分别采用手动控制方式(脱机方式)和微程序控制方式(联机方式)以BCD码的方法输入和输出两位学生学号的后两位(假设学号分别为10112025、10112008,则后两位的BCD 码分别是25H和08H)。

其具体内容如下:1.采用手动控制方式,将某位学生学号以BCD码的方式通过IN寄存器输入到累加器A,然后再输出到输出寄存器OUT中(IN寄存器的输入端内部已经连接到了K23..K16,所以不必再连线,此时J1要与J2相连);2.采用微程序控制方式,将某位学生学号以BCD码的方式输入到累加器A,然后在输出到输出寄存器OUT中。

相关的代码如下:IN ;通过输入寄存器IN输入数据到累加器A中,数据在K23..L16上OUT ;将累加器A中数据输出到输出寄存器OUT,结果可以从LED灯上看出IN ;通过输入寄存器IN输入数据到累加器A中,数据在K23..L16上OUT ;将累加器A中数据输出到输出寄存器OUT,结果可以从LED灯上看出END请在微程序控制的层面上跟踪和分析上述指令的执行过程,并完成程序跟踪表8-1。

表8-1:程序跟踪表(只跟踪前两条指令)四、实验电路下面是输入寄存器IN、输出寄存器OUT和输出选择器的电路图图8-1 输入寄存器IN的电路图图8-2 输出寄存器OUT的电路图图8-3 数据输出到总线的选择电路图五、实验接线与控制信号设置1.实验内容1(手动方式)手动方式的实验连线请同学们自己考虑完成,这里要注意:写入累加器时AEN=0、OUTEN=1,而写入OUT寄存器时,AEN=1、OUTEN=0。

2.实验内容2(联机方式)联机实验要注意下述连接:●拔掉实验仪上所有的手工连接的接线;●用8 芯电缆连接J1 和J2;●将控制方式开关KC拨到“微程序”方向。

《面向对象程序设计c++》实验指导书

《面向对象程序设计c++》实验指导书

实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。

2、掌握如何编辑、编译、连接和运行一个C++程序。

3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。

二、实验要求1、分析下列程序运行的结果。

程序一:#include <iostream.h>int add(int x,int y=8);void main(){ int x=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}int add(int x,int y){ return x+y;}程序二:#include <iostream.h>void main(){ int *p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}程序三:#include <iostream.h>void main(void){ int i=10;int &r=i;r++;cout<<"i="<<i<<", r="<<r<<'\n';i=88;cout<<"i="<<i<<", r="<<r<<'\n';}程序四:#include <iostream.h>int f(int i){ static int k=1;for(;i>0;i--)k +=i;return k;}void main(){ int i;for(i=0;i<5;i++)cout<<f(i)<<" ";}程序五:#include <iostream.h>void func();int n=1;void main(){ static int a;int b= -9;cout <<"a:"<<a<<" b:"<<b<<" n:" <<n<<endl;b+=4;func();cout <<"a:"<<a<<" b:"<<b<<" n:"<<n<<endl;n+=10;func();}void func(){ static int a=2; int b=5;a+=2;n+=12;b+=5;cout <<"a:" <<a<<" b:" <<b<<" n:" <<n <<endl;}实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。

实验八 实验指导(8255简单输入输出)

实验八 实验指导(8255简单输入输出)

实验指导
实验八 8255简单输入输出实验
一、实验目的
1、熟练掌握8255A 并行接口芯片原理
2、熟练掌握8255A 初始化方法
3、熟练掌握IN 、OUT 指令 二、实验内容
1、利用8255A 的A 口控制发光二极管D0~D7按1、3、5、
7和2、4、6、8交替点亮规律变化,交替点亮10次后结束。

2、8255A 的B 口为输入,接8个开关K0~K7,C 口为输出,
接8个发光二极管LED D0~D7,利用开关控制LED 的点亮,要求开关Ki 向上,对应的Di 亮,开关Ki 向下,对应的Di 灭,当开关状态为10101010B 时,结束程序运行。

三、实验步骤:
1、按题目要求连接实验线路。

2、编写实验程序,经编译、链接无误后下载到实验箱。

3、运行程序,(改变拨动开关,)同时观察LED 显示,验证程 序功能。

4、完成实验报告。

实验报告新增要求:
⑴写出8255控制字。

⑵画出系统接线图。

⑶运行结果描述。

参考软件延时子程序(延时参数0F00H 可根据需要调整)
• DELAY PROC • PUSH CX • MOV CX, 0F00H • L1: PUSH AX • POP AX • LOOP L1 • POP CX • RET • DELAY ENDP
片选译码:
四、实验接线
1、参考框图
2、参考框图。

《面向对象程序设计》实验指导书

《面向对象程序设计》实验指导书

《⾯向对象程序设计》实验指导书《⾯向对象程序设计》实验指导书郭⽟柱⼴东商学院信息学院⼆0⼀0 年⼗⼆⽉⽬录实验⼀ Java基础实验实验⼆ Java⾯向对象特性试验--Java中的类、对象和⽅法实验三类的继承、多态、接⼝、访问控制符与修饰符实验四 Java资源及其利⽤实验五 Java 语⾔的异常处理实验六输⼊输出流实验七图形⽤户界⾯设计实验⼋ Java Applet及多线程试验附录1 实验报告格式实验⼀ Java 基础实验⼀、实验⽬的与要求1. 学习编写简单的Java 程序。

2. 学习掌握Java 基本数据类型及其基本运算。

3. 学习掌握Java 的基本流程控制语句。

⼆、相关知识1. 了解JDK 的⼯作环境,以及如何使⽤JDK 进⾏编程。

2. 熟悉集成软件 eclipse3.5及其使⽤。

⼆、实验内容1. 编写Hello.java 程序并运⾏。

2. ⽤Java 语⾔编写⼀个应⽤程序在屏幕上输出1000之内的素数。

3. ⼀个数如果恰好等于它的因⼦之和,这个数就称为“完数”,⽐如28=1+2+4+7+14。

编写⼀个应⽤程序在屏幕上输出1000之内的完数。

4. 求满⾜1!+2!+3!+ …+n!≤9999的最⼤整数n 。

5. ⼀个三位的整数如果它的各位数字的⽴⽅之和等于这个三位数,就称此数为⽔仙花数,⽐如 333173371++=,编写⼀个应⽤程序在屏幕上输出所有⽔仙花数。

6. 下⾯程序的输出结果是什么?实验⼆ Java⾯向对象特性试验-Java中的类、对象和⽅法⼀、实验⽬的与要求1. 掌握类的定义和使⽤。

2. 掌握对象的声明、创建和使⽤。

3. 掌握构造⽅法的定义和使⽤。

4. 掌握类⽅法(静态⽅法)和⾮类⽅法(⾮静态⽅法)的区别和使⽤。

5. 掌握成员变量和局部变量的区别和使⽤。

⼆、实验内容1. 编写⼀个Java程序,定义⼀个表⽰学⽣的类,类名Student,其成员变量有:学号、班级姓名、性别、年龄;成员⽅法:(1)获得班号(2)获得姓名(3)获得年龄(4)修改年龄;创建⼀个Student的对象,修改该对象的年龄,并输出该对象的年龄。

实验八集成运算放大器的基本应用(i)

实验八集成运算放大器的基本应用(i)

40 模拟电子技术实验实验八集成运算放大器的基本应用(I)─模拟运算电路一、实验目的1. 研究由集成运算放大器组成的比例、加法、减法和积分等基本运算电路的功能。

2.了解运算放大器在实际应用时应考虑的一些问题。

二、实验设备与器件三、实验原理集成运算放大器是一种具有高电压放大倍数的直接耦合多级放大电路。

当外部接入不同的线性或非线性元器件组成输入和负反馈电路时,可以灵活地实现各种特定的函数关系。

在线性应用方面,可组成比例、加法、减法、积分、微分、对数等模拟运算电路。

1.理想运放的特性在大多数情况下,运放可被视为理想器件,就是将运放的各项技术指标理想化,理想运放需要满足下列条件:开环电压增益A ud=∞输入阻抗r i=∞输出阻抗r o=0带宽f BW=∞失调与漂移均为零等。

理想运放在线性应用时的两个重要特性:(1)输出电压U O与输入电压之间满足关系式U O=A ud(U+-U-)由于A ud=∞,而U O为有限值,因此,U+-U-≈0。

即U+≈U-,称为“虚短”。

(2)由于r i=∞,故流进运放两个输入端的电流可视为零,即I IB=0,称为“虚断”。

这说明运放对其前级吸取电流极小。

上述两个特性是分析理想运放应用电路的基本原则,可简化运放电路的计算。

2.基本运算电路(1)反相比例运算电路实验八 集成运算放大器的基本应用(Ⅰ) 41电路如图8-1所示。

对于理想运放,该电路的输出电压与输入电压之间的关系为i 1F O U R R U -=为了减小输入级偏置电流引起的运算误差,在同相输入端应接入平衡电阻R 2=R 1 // R F 。

图8-1 反相比例运算电路 图8-2 反相加法运算电路(2)反相加法电路电路如图8-2所示,输出电压与输入电压之间的关系为)(i22F i11F O U R RU R R U +-= R 3=R 1 / / R 2 / / R F (3)同相比例运算电路(a) 同相比例运算电路 (b) 电压跟随器图8-3 同相比例运算电路图8-3(a)是同相比例运算电路,它的输出电压与输入电压之间的关系为i 1F O )(1U R R U += R 2=R 1 / / R F42 模拟电子技术实验当R 1→∞时,U O =U i ,即得到如图8-3(b)所示的电压跟随器。

JAVA实验报告

JAVA实验报告

日期:2018年5月地点:明向校区公共机房6(1)实验题目,实验原理和内容一、实验目的:JAVA结构化程序设计二、实验原理:声明不同数据类型的变量,使用关系运算符和逻辑运算符,使用表达式语句与复合语句,使用选择语句,使用循环语句。

实验内容及要求:1、题目1:编写程序,实现从键盘输入一个0到100之内的整数,把百分制分数到等级分数的转换////>=90 A// 80~89 B// 70~79 C// 60~69 D// <60 E2、成法口诀阵形3、华氏和摄氏的转换法4、.从键盘输入10个数,排序输出。

要求:请同学们把调试好的程序及运行结果、存在的问题写在下面(不够可以附页)。

1、package test1;import java.util.*;public class TEST1 {public static void main(String[] args){System.out.println("请输入一个0到100之间的整数");Scanner scanner=new Scanner(System.in);int x;int m=scanner.nextInt();x=m/10;switch(x){ case 9: System.out.println("A");break;case 8: System.out.println("B");break;case 7: System.out.println("C");break;case 6: System.out.println("D");break;default: System.out.println("E");break;}}}2、package test2;public class TEST2 {public static void main(String[] args){int num;int m;for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){num=i*j;System.out.print(j+"*"+i+"="+num+ "\t");if(i==j)System.out.println(); }}}}3、package test3;import java.util.*;public class TEST3 {public static void main(String[] args){Scanner scanner=new Scanner(System.in);while(true) {System.out.println("请输入要转换的温度类型:c或f");String a=scanner.nextLine();String num1=new String("c");String num2=new String("f");String num3=new String("exit");if(a.equals(num1)){System.out.println("请输入要转换摄氏的温度:..");double C=scanner.nextFloat();System.out.println("对应的华氏温度为:");System.out.println(32+C*1.8+"F");}if(a.equals(num2)){System.out.println("请输入要转换华氏的温度:..");double F=scanner.nextFloat();System.out.println("对应的摄氏温度为:"+"C");System.out.println((F-32)/1.8+"C");}if(a.equals(num3)) break;String bank=scanner.nextLine();}}}4、package test4;import java.util.*;public class Test4 {public static void main(String[] args){Scanner scanner=new Scanner(System.in);int m;int[] a=new int[10];for(int i=0;i<=9;i++)a[i]=scanner.nextInt();int temp;for(int i=0;i<10;i++){ for(int j=i+1;j<10;j++){ if(a[i]>a[j]){temp=a[i];a[i]=a[j];a[j]=temp;}}}for(int x=0;x<=9;x++)System.out.print(a[x]+" ");}}日期:2018年5月地点:明向校区公共机房6(2)实验题目,实验原理和内容一.实验目的:数组、字符串与异常处理二.实验原理:使用数组,使用字符串与字符串类,处理异常。

实验八 时序逻辑电路设计实验

实验八 时序逻辑电路设计实验

实验八时序逻辑电路设计实验一、实验概述本实验是使用74LS74双D触发器构成一个扭环形计数器,以及使用74LS112双JK触发器构成三进制加法计数器。

二、实验目的1、掌握简单的时序电路的设计方法2、掌握简单时序电路的调试方法三、实验预习要求1、查找74LS74、74LS112、74LS00芯片引脚图,并熟悉引脚功能2、复习教材中异步2n进制计数器构成方法及同步2n进制计数器构成方法的内容3、复习同步时序电路和异步时序电路的设计方法4、设计画出用74LS74构成异步四进制减法计数器的逻辑电路图5、设计画出用74LS112构成同步四进制加法计数器的逻辑电路图四、实验原理时序逻辑电路是数字逻辑电路的重要组成部分,时序逻辑电路又称时序电路,主要由存储电路和组合逻辑电路两部分组成。

它和我们熟悉的其他电路不同,其在任何一个时刻的输出状态由当时的输入信号和电路原来的状态共同决定,而它的状态主要是由存储电路来记忆和表示的。

同时时序逻辑电路在结构以及功能上的特殊性,相较其他种类的数字逻辑电路而言,往往具有难度大、电路复杂并且应用范围广的特点。

时序逻辑电路通常可以分为同步时序逻辑电路和异步时序逻辑电路两大类。

同步时序逻辑电路从构成方式来讲,同步时序电路所有操作都是在同一时钟严格的控制下步调一致地完成的。

从电路行为上,同步电路的时序电路公用同一个时钟,而所有的时钟变化都是在时钟的上升沿(或下降沿)完成的。

同步逻辑是时钟之间存在固定因果关系的逻辑,所有时序逻辑都是在同源时钟控制下运行。

注意,在用Verilog HDL实现时,并不要求是同一时钟,而是同源时钟。

所谓的同源时钟是指同一个时钟源衍生频率比值为2的幂次方,且初相位相同的时钟。

异步时序逻辑电路异步时序逻辑电路,顾名思义就是电路的工作节奏不一致,不存在单一的主控时钟,主要是用于产生地址译码七、FIFO和异步RAM的读写控制信号脉冲。

除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件;电路状态改变完全有外部输入的变化直接引起。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验八输入输出流1.实验目的1、掌握字符输入、输出流的用法2、掌握使用Scanner类解析文件3、掌握Console流的使用2.实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。

1) 实验1举重成绩单2) 实验2统计英文单词3) 实验3密码流4) 实验4学读汉字5)实验5 读取Zip文件2、设计编写程序完成以下任务。

1)修改实验2,要求按字典顺序输出全部不相同的单词。

2)参考实验3编写一个程序,程序运行时,要求用户输入的密码是:hello。

如果用户输入了正确的密码。

程序将输出“你好,欢迎你!”。

程序允许用户2次输入的密码不正确,一旦超过2次,程序将立刻退出。

3)在本机的磁盘系统中,找一个文件夹,利用File类的提供方法,列出该文件夹中的所有文件的文件名和文件的路径,执行效果如下:路径是xxx的文件夹内的文件有:文件名:abc.txt路径名:c:\temp\abc.txt--------------------------------------------文件名:def.txt路径名:c:\temp\def.txt知识点:File管理4)使用java的输入输出流将一个文本文件的内容读出并在控制台将文件中的内容打印出来。

(参考书上P184页)5)从控制台输入一串字符串,将该串字符串写入到磁盘某位置上的out.txt文件中去。

(参考教材P183页)6)使用java的输入输出流将一个文本文件的内容按行读取,每读一行就顺序添加行号,并写入到另一个文件中.7)定义一个Person类,包含姓名、年龄、身份证号码属性。

有一个带参数的构造方法用于对所有属性赋值,还有一个study的方法,里面只打印一条“我喜欢学习”的话。

写一个Test类,里面实例化若干个Person对象,并将这些对象写入到obj.txt文件中去。

8)创建c:/test.txt文件并在其中输入"hello world"创建一个输入流读取该文件中的文本并且把小写的l变成大写L再利用输出流写入到d:\test.txt中实现步骤:(1)在本地硬盘C盘下创建一个文件test.txt(2)创建一个包含main()方法的类,并在main中编写代码(3)运行代码并且测试结果实现过滤器的功能效果显示:知识点:IO字符流、String常用方法3.实验步骤略4.评分标准1.A——内容功能完善,编程风格好,人机接口界面好;2.B——内容功能完善,编程风格良好,人机接口界面良好;3.C——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。

(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)附录:实验1 举重成绩单1.模板代码AnalysisResult.javaimport java.io.*;import java.util.*;public class AnalysisResult {public static void main(String[] args) {try{File fRead=new File("d:\\score.txt");File fWrite=new File("d:\\scoreAnalysis.txt");Writer out=//【代码1】//以尾加方式创建指向文件fWrite的out流BufferedWriter bufferWrite=//【代码2】//创建指向out的bufferWrite流Reader in=//【代码3】//创建指向文件fRead的in流BufferedReader bufferRead=//【代码4】//创建指向in的bufferRead流String str=null;while((str=bufferRead.readLine())!=null){double totalScore=Fenxi.getTotalScore(str);str=str+"总成绩:"+totalScore;System.out.println(str);bufferWrite.write(str);bufferWrite.newLine();}bufferRead.close();bufferWrite.close();}catch(FileNotFoundException e){System.out.println(e.toString());}catch(IOException e){System.out.println(e.toString());}}}Fenxi.javaimport java.util.regex.*;public class Fenxi {public static double getTotalScore(String s){String regex="\\d{1,5}";double totalScore=0.0;Pattern p = pile(regex);Matcher m = p.matcher(s);while(m.find()) {try{totalScore=totalScore+Double.parseDouble(m.group());}catch(NumberFormatException e){System.out.println(e.getMessage());}}return totalScore;}}实验2 统计英文单词字1.模板代码WordStatistic.javaimport java.io.*;import java.util.Scanner;import java.util.Vector;public class WordStatistic{Vector<String> allWord,noSameWord;File file=new File("d:\\english.txt");Scanner sc=null;String regex;WordStatistic(){allWord=new Vector<String>();noSameWord=new Vector<String>();regex="[\\s\\d\\p{Punct}]+";try{sc=//【代码1】//创建指向file的sc//【代码2】//sc调用useDelimiter(String regex)方法,向参数传递regex }catch(IOException exp){System.out.println(exp.toString());}}void setFileName(String name){file=new File(name);try{sc=new Scanner(file);eDelimiter(regex);}catch(IOException exp){System.out.println(exp.toString());}}public void wordStatistic(){try{while(sc.hasNext()){String word=sc.next();allWord.add(word);if(!noSameWord.contains(word)){noSameWord.add(word);}}}catch(Exception e){}}public Vector<String> getAllWord(){ return allWord;}public Vector<String> getNoSameWord(){ return noSameWord;}}OutputWordMess.javaimport java.util.*;public class OutputWordMess {public static void main(String args[]){Vector<String> allWord,noSameWord;WordStatistic statistic=new WordStatistic();statistic.setFileName("d:\\hello.txt");//【代码3】//statistic调用wordStatistic方法allWord=statistic.getAllWord();noSameWord=statistic.getNoSameWord();System.out.println("共有"+allWord.size()+"个英文单词");System.out.println("有"+noSameWord.size()+"个互不相同英文单词");System.out.println("按出现频率排列:");int count[]=new int[noSameWord.size()];for(int i=0;i<noSameWord.size();i++){String s1=noSameWord.elementAt(i);for(int j=0;j<allWord.size();j++){String s2=allWord.elementAt(j);if(s1.equals(s2)){count[i]++;}}}for(int m=0;m<noSameWord.size();m++){for(int n=m+1;n<noSameWord.size();n++){if(count[n]>count[m]){String temp=noSameWord.elementAt(m);noSameWord.setElementAt(noSameWord.elementAt(n),m);noSameWord.setElementAt(temp,n);int t=count[m];count[m]=count[n];count[n]=t;}}}for(int m=0;m<noSameWord.size();m++){double frequency=(1.0*count[m])/allWord.size();System.out.printf("%s:%-7.3f",noSameWord.elementAt(m),frequency);}}}实验3 密码流1.模板代码PassWord.javaimport java.io.*;public class PassWord {public static void main(String[] args) {boolean success=false;int count=0;Console cons;char[] passwd;cons=System.console();while(true){System.out.print("输入密码:");passwd=cons.readPassword();count++;String password= new String(passwd);if(password.equals("tiger123")){success=true;System.out.println("您第"+count+"次输入的密码正确!");break;}else{System.out.println("您第"+count+"次输入的密码"+password+"不正确!");}if(count==3){System.out.println("您"+count+"次输入的密码都不正确!");System.exit(0);}}if(success){try{File file=new File("D:\\score.txt");FileReader inOne=new FileReader(file);BufferedReader inTow=new BufferedReader(inOne);String s=null;while((s=inTow.readLine())!=null){System.out.println(s);}inOne.close();inTow.close();}catch(FileNotFoundException fe){System.out.println(fe.toString());}catch(IOException ioe){System.out.println(ioe.toString());}}}}实验4 学读汉字1.模板代码ChineseCharacters.javaimport java.io.*;import java.util.StringTokenizer;public class ChineseCharacters{ public StringBuffer getChinesecharacters(File file){ StringBuffer hanzi=new StringBuffer();try{ FileReader inOne=【代码1】 //创建指向文件f的inOne 的对象BufferedReader inTwo=【代码2】 //创建指向文件inOne的inTwo 的对象String s=null;int i=0;while((s=【代码3】)!=null) //inTwo读取一行{ StringTokenizer tokenizer=new StringTokenizer(s," ,'\n' ");while(tokenizer.hasMoreTokens()){ hanzi.append(tokenizer.nextToken());}}}catch(Exception e) {}return hanzi;}}StudyFrame.javaimport java.awt.*;import java.awt.event.*;import java.io.*;import javax.sound.sampled.*;public class StudyFrame extends Frame implements ItemListener,ActionListener,Runnable { ChineseCharacters chinese;Choice choice;Button getCharacters,voiceCharacters;Label showCharacters;StringBuffer trainedChinese=null;Clip clip=null;Thread voiceThread;int k=0;Panel pCenter;CardLayout mycard;TextArea textHelp;MenuBar menubar;Menu menu;MenuItem help;public StudyFrame(){ chinese=new ChineseCharacters();choice=new Choice();choice.add("training1.txt");choice.add("training2.txt");choice.add("training3.txt");showCharacters=new Label("",Label.CENTER);showCharacters.setFont(new Font("宋体",Font.BOLD,72)); showCharacters.setBackground(Color.green);getCharacters=new Button("下一个汉字");voiceCharacters=new Button("发音");voiceThread=new Thread(this);choice.addItemListener(this);voiceCharacters.addActionListener(this);getCharacters.addActionListener(this);Panel pNorth=new Panel();pNorth.add(new Label("选择一个汉字字符组成的文件")); pNorth.add(choice);add(pNorth,BorderLayout.NORTH);Panel pSouth=new Panel();pSouth.add(getCharacters);pSouth.add(voiceCharacters);add(pSouth,BorderLayout.SOUTH);pCenter=new Panel();mycard=new CardLayout();pCenter.setLayout(mycard);textHelp=new TextArea();pCenter.add("hanzi",showCharacters);pCenter.add("help",textHelp);add(pCenter,BorderLayout.CENTER);menubar=new MenuBar();menu=new Menu("帮助");help=new MenuItem("关于学汉字");help.addActionListener(this);menu.add(help);menubar.add(menu);setMenuBar(menubar);setSize(350,220);setVisible(true);addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);}});validate();}public void itemStateChanged(ItemEvent e){ String fileName=choice.getSelectedItem();File file=new File(fileName);trainedChinese=chinese.getChinesecharacters(file);k=0;mycard.show(pCenter,"hanzi") ;}public void actionPerformed(ActionEvent e){ if(e.getSource()==getCharacters){ if(trainedChinese!=null){ char c=trainedChinese.charAt(k);k++;if(k>=trainedChinese.length())k=0;showCharacters.setText(""+c);}else{ showCharacters.setText("请选择一个汉字字符文件");}}if(e.getSource()==voiceCharacters){ if(!(voiceThread.isAlive())){ voiceThread=new Thread(this);}try{ voiceThread.start();}catch(Exception exp){}}if(e.getSource()==help){ mycard.show(pCenter,"help") ;try{ File helpFile=new File("help.txt");FileReader inOne=【代码4】 //创建指向文件helpFile的inOne 的对象 BufferedReader inTwo=【代码5】 //创建指向文件inOne的inTwo 的对象 String s=null;while((s=inTwo.readLine())!=null){ textHelp.append(s+"\n");}inOne.close();inTwo.close();}catch(IOException exp){}}}public void run(){ voiceCharacters.setEnabled(false);try{ if(clip!=null){ clip.close()}clip=AudioSystem.getClip();File voiceFile=new File(showCharacters.getText().trim()+".wav");clip.open(AudioSystem.getAudioInputStream(voiceFile));}catch(Exception exp){}clip.start();voiceCharacters.setEnabled(true);}}StudyMainClass.javapublic class StudyMainClass{ public static void main(String args[]){ new StudyFrame();}}实验5 读取Zip文件1.模板代码ReadZipFile.javaimport java.io.*;import java.util.zip.*;public class ReadZipFile{ public static void main(String args[]){ File f=new File("book.zip");File dir=new File("Book");byte b[]=new byte[100];dir.mkdir();try{ ZipInputStream in=new ZipInputStream(new FileInputStream(f));ZipEntry zipEntry=null;while((zipEntry=in.getNextEntry())!=null){ File file=new File(dir,zipEntry.getName());FileOutputStream out=new FileOutputStream(file);int n=-1;System.out.println(file.getAbsolutePath()+"的内容:");while((n=in.read(b,0,100))!=-1){ String str=new String(b,0,n);System.out.println(str);out.write(b,0,n);}out.close();}in.close();}catch(IOException ee){System.out.println(ee); }}。

相关文档
最新文档