实验2实验报告格式

合集下载

实验2:4位加法器 实验报告

实验2:4位加法器 实验报告

EDA 技术基础实验报告实验项目名称:用原理图输入法设计4位加法器学院专业:信息学院电子专业姓名:学号:实验日期:20 实验成绩:实验评定标准:一、实验目的熟悉利用Quartus Ⅱ的原理图输入方法设计简单组合电路,掌握层次化设计的方法。

并通过一个4位全加器的设计把握利用EDA 软件进行原理图输入方式的电子线路设计的详细流程。

二、实验器材电脑一台Quartus Ⅱ软件三、实验内容与步骤1.在Quartus Ⅱ软件中建立工程,画图生成一个半加器的.bdf文件。

2.将此半加器文件设置成可调用的元件,使之成为一个元件符号存盘。

3.设计全加器顶层文件,以.bdf存盘。

4.将设计项目(.bdf文件)设置成工程和时序仿真。

5.截图保存波形文件图,及仿真结果。

6.将全加器原理图文件设置成符号元件,以供4位加法器的更高层设计。

7.按实验要求画出4位加法器原理图,建立其波形并仿真,截下仿真结果图。

四、实验电路图(程序)1.半加器电路原理图如下:半加器h_adder.bdf电路原理图(1)2.全加器电路原理图如下:全加器f_adder.bdf电路原理图(2)3.4位加法器four_adder.bdf电路原理图如下:4位加法器four_adder.bdf电路原理图(3)五、实验仿真结果及分析1. 全加器的仿真波形图如下:全加器波形仿真图(3)分析:ain, bin, cin 三段为输入,sum 为和,com 为进位,满足相关的逻辑表达式{sum =(ain ′bin ′cin ′+ain bin ′cin +ain ′bin cin +ain bin cin ′)‘com =(ain ′bin ′+bin ′cin ′+ain′cin′)′2. 4位全加器仿真波形图如下:分析:4位a[3..0]输入与4位b[3..0]输入以及来自cin 输入的数码相加得到4位输出s[3..0]和进位输出c,由图可见满足加法原理。

操作系统实验二实验报告

操作系统实验二实验报告

操作系统实验二实验报告一、实验目的本次操作系统实验二的主要目的是深入理解和掌握进程管理的相关概念和技术,包括进程的创建、执行、同步和通信。

通过实际编程和实验操作,提高对操作系统原理的认识,培养解决实际问题的能力。

二、实验环境本次实验使用的操作系统为 Windows 10,编程环境为 Visual Studio 2019。

三、实验内容及步骤(一)进程创建实验1、首先,创建一个新的 C++项目。

2、在项目中,使用 Windows API 函数`CreateProcess`来创建一个新的进程。

3、为新进程指定可执行文件的路径、命令行参数、进程属性等。

4、编写代码来等待新进程的结束,并获取其退出代码。

(二)进程同步实验1、设计一个生产者消费者问题的模型。

2、使用信号量来实现生产者和消费者进程之间的同步。

3、生产者进程不断生成数据并放入共享缓冲区,当缓冲区已满时等待。

4、消费者进程从共享缓冲区中取出数据进行处理,当缓冲区为空时等待。

(三)进程通信实验1、选择使用管道来实现进程之间的通信。

2、创建一个匿名管道,父进程和子进程分别读写管道的两端。

3、父进程向管道写入数据,子进程从管道读取数据并进行处理。

四、实验结果及分析(一)进程创建实验结果成功创建了新的进程,并能够获取到其退出代码。

通过观察进程的创建和执行过程,加深了对进程概念的理解。

(二)进程同步实验结果通过使用信号量,生产者和消费者进程能够正确地进行同步,避免了缓冲区的溢出和数据的丢失。

分析结果表明,信号量机制有效地解决了进程之间的资源竞争和协调问题。

(三)进程通信实验结果通过管道实现了父进程和子进程之间的数据通信。

数据能够准确地在进程之间传递,验证了管道通信的有效性。

五、遇到的问题及解决方法(一)在进程创建实验中,遇到了参数设置不正确导致进程创建失败的问题。

通过仔细查阅文档和调试,最终正确设置了参数,成功创建了进程。

(二)在进程同步实验中,出现了信号量使用不当导致死锁的情况。

实验二实验报告

实验二实验报告

C语言程序设计报告二数据类型,运算符和简单的输入输出计算机学院软件工程2班王莹0411402011,实验目的(1)掌握C语言数据类型,了解字符型数据和整型数据的内在关系。

(2)掌握对各种数值型数据的正确输入方法。

(3)学会使用C语言的有关算数运算符,移机包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。

(4)学会编写和运行简单的应用程序。

(5)进一步熟悉C程序的编辑、编译、连接和运行的过程。

2,实验内容和步骤(1)输入并运行教材第3章第4题给出的程序。

○1运行以上程序,分析为什么会输出这些信息。

因为第6行是将c1,c2按%c的格式输出,97是字符a的AS CⅡ代码,98是字符b的AS CⅡ代码。

第7行是将c1,c2按5d的格式输出,所以输出两个十进制整数。

○2如果将程序第4,5行改为c1=197;c2=198;运行时会输出由于Visual C++6.0字符型数据是作为signed char类型处理,它存字符的有效范围为0~127,超出此范围的处理方法,不痛的系统得到的结果不痛,因而用“%d”格式输出,结果是不可预期的。

用“%d”格式输出时,输出c1=-59,c2=-58.这是按补码形式输出的,内存字节中第1位为1时,作为负数。

59和197之和等于256,58与198之和也等于256.○3如果将程序第3行改为int c1,c2;运行时会输出因为97和98在int类型的有效范围。

(2)输入第3章第5题得程序。

即:用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。

运行时分别按一下方式输入数据,观察输出结果,分析原因。

1,a=3,b=7,x=8.5,y=71.82,A,a↙2,a=3 b=7 x=8.5 y=71.82 A a↙3,a=3 b=7 8.5 71.82 A a↙4,a=3 b=7 8.5 71.82Aa↙5,3 7 8.5 71.82Aa↙6,a=3 b=7↙8.571.82↙A↙a↙7,a=3 b=7↙8.571.82↙Aa↙8,a=3 b=7↙8.671.82Aa↙12345678(3)输入以下程序○1编译和运行程序,注意i,j,m,n各变量的值。

实验二实验报告

实验二实验报告
答:当输入信号固定时,接入旁路电容使得放大倍数增大。在输出不失真的情况下,输入信号的频率越高,旁路电容应该越小,输入信号频率越低,旁路电容应该越大。
注:表格空间不够可自行加页.
2.300
(3)保持Rc不变,放大器接入负载RL,在改变RL数值情况下测量并计算,结果填表2.3。
表2.3负载对电压增益的影响
给定参数
实测
实测计算
估算
RL
Vin(mV)
Vout(V)
Au
Au
100K
5.0
11.5m
2.3
2.26
2.2K
5.0
10.9m
2.18
2.0
5.1K
5.0
3.39m
0.678
答:1)静态工作点受所选三极管以及R1,R2,RC,RE,滑动变阻器的影响,除滑动变阻器外值都确定,所以主要受滑动变阻器的影响,调节滑动变阻器使得Ve处在1.9~2.2之间,使得电路处在静态工作点,起放大电路作用。
(2)电压放大倍数与所选三极管和输出电阻(R4,R5,R6)有关。输出电阻越大,电压放大倍数越大。输出电阻越小,电压放大倍数越小,对输出波形影响较小。
三、实验内容
1、实验电路图
2、实验原理
分压式共射极放大电路,其电压增益为:
若发射极Re加入旁路电容,电压增益变为:
3、实验步骤
1.基本电路
按所给电路图进行连接
2.静态分析
设定电路各元件参数,调整滑动变阻器RV2使电路处于放大工作状态(VE=1.9-2.2V左右),通过测量并计算填表2.1。
记录电路各阻值大小:RV2= 30k;R1= 33k;R2= 24k;RE= 2.2k;RC= 5.1k;电源V= +12V。

实验二实验报告

实验二实验报告

实验二实验报告1. 引言实验二旨在探究某一特定现象或者现象之间的关系,并且通过实验数据和分析来验证或者推论相关理论。

本实验主要目的是研究X现象,并且分析X现象与Y之间的关系。

通过实验结果的观察和数据的统计分析,我们可以深入了解该现象的特点和规律。

2. 实验设计2.1 实验装置本次实验采用了XXXX装置来模拟实验环境,并利用XX测量设备来获取相关数据。

2.2 实验步骤1) 步骤一:准备实验装置,按照实验要求设置相关参数。

2) 步骤二:开启实验装置,记录初始数据。

3) 步骤三:对实验环境进行一定的处理或者改变,观察现象,记录数据。

4) 步骤四:重复步骤三,采集足够的数据。

5) 步骤五:整理数据并进行分析。

3. 实验结果与数据分析通过实验数据的统计和分析,我们得出以下结论:在实验过程中,我们观察到X现象的特征是......通过记录的数据我们可以发现......3.2 结果二对于不同的实验环境参数,我们发现X现象与Y之间存在一定的关联性......通过数据分析,我们可以得出......3.3 结果三进一步的实验数据表明......这与我们之前的推测相符,同时也与X 理论一致......4. 讨论与分析通过实验结果与数据分析,我们可以得出以下结论:4.1 讨论一实验结果验证了X理论,并且揭示了X现象的某些特征......这对于进一步研究和应用X现象具有重要的意义......4.2 讨论二实验中发现的X与Y之间的关联性,给我们提供了一定的启示和思考......进一步探究X与Y之间的机制可以推动相关领域的发展......5. 结论通过实验二的设计与结果分析,我们得出以下结论:实验结果表明X现象在特定条件下具有一定规律性和可重复性,验证了X理论的正确性。

5.2 结论二实验进一步揭示了X与Y之间的关联性,为相关领域的研究和应用提供了参考。

6. 总结本次实验通过设计与实施,详细研究了X现象,并探究了X与Y 之间的关系。

软件测试实验二实验报告

软件测试实验二实验报告

软件测试实验二实验报告一、实验目的本次软件测试实验的主要目的是熟悉并掌握软件测试的基本方法和技术,通过对一个具体软件系统的测试,发现软件中存在的缺陷和问题,提高软件的质量和可靠性。

二、实验环境1、操作系统:Windows 102、测试工具:Jmeter、Selenium、Bugzilla3、开发语言:Java4、数据库:MySQL三、实验内容1、功能测试对软件的登录功能进行测试,包括输入正确和错误的用户名、密码,验证登录是否成功以及相应的提示信息是否准确。

测试软件的注册功能,检查输入的各项信息是否符合要求,如用户名长度、密码强度等。

对软件的搜索功能进行测试,输入不同的关键词,检查搜索结果的准确性和完整性。

2、性能测试使用 Jmeter 工具对软件的并发性能进行测试,模拟多个用户同时登录、搜索等操作,观察系统的响应时间、吞吐量等性能指标。

对软件的数据库操作性能进行测试,包括插入、查询、更新和删除数据,检查数据库的响应时间和资源占用情况。

3、兼容性测试在不同的浏览器(如 Chrome、Firefox、IE 等)上运行软件,检查界面显示和功能是否正常。

在不同的操作系统(如 Windows、Mac OS、Linux 等)上安装和运行软件,验证其兼容性。

4、安全测试对软件的用户认证和授权机制进行测试,检查是否存在未授权访问和越权操作的情况。

测试软件对 SQL 注入、XSS 攻击等常见安全漏洞的防范能力。

四、实验步骤1、功能测试步骤打开软件登录页面,输入正确的用户名和密码,点击登录按钮,观察是否成功登录并跳转到相应页面。

输入错误的用户名或密码,检查提示信息是否清晰准确。

进入注册页面,输入合法和不合法的注册信息,如用户名过短、密码强度不够等,查看系统的校验结果。

在搜索框中输入关键词,点击搜索按钮,对比搜索结果与预期是否一致。

2、性能测试步骤打开 Jmeter 工具,创建测试计划,添加线程组、HTTP 请求等元素。

实验报告格式2篇

实验报告格式2篇

实验报告格式2篇实验报告格式一:一、实验目的本实验的目的是为了探究水的蒸发对环境温度的影响。

二、实验设备1. 温度计。

2. 干湿球温度计。

3. 一瓶蒸馏水。

4. 毛玻璃烧杯。

5. 密封化玻璃瓶。

6. 电子称。

三、实验步骤1. 取一定量的蒸馏水,放入密封化玻璃瓶中,并在瓶子的表面贴上一张白色的纸。

2. 将干湿球温度计放在室内,记录环境温度为T1。

3. 将毛玻璃烧杯放在室内,放入50毫升的蒸馏水并记录烧杯中蒸发的时间。

4. 现将干湿球温度计送到烧杯的边缘,记录湿球温度为T2,最后记录干球温度为T3。

5. 经过一定量的时间后,观察瓶子表面的白色纸片,记录移动的水滴数。

四、实验结果1. 环境温度:T1=25℃。

2. 湿球温度:T2=24℃。

3. 干球温度:T3=25℃。

4. 记录的移动水滴数:5。

5. 记录的蒸发时间:5分钟。

五、实验分析和讨论通过以上实验,我们可以发现,在环境温度为25℃时,50毫升的蒸馏水在5分钟内仅仅蒸发了5滴水。

这说明,在低温条件下水的蒸发是比较缓慢的。

此外,我们发现干湿球温度计是一种很好的实验工具,在实验室里可以通过这种方法对蒸发速率进行有效的测量。

六、实验结论在该实验中,我们探究了空气中温度对水的蒸发速率的影响。

实验结果表明,在环境温度较低时,水的蒸发速率较缓慢。

该实验也证明了干湿球温度计是一种非常有效的测量蒸发速率的工具。

实验报告格式二:一、实验目的本实验的目的是探究氯离子在水中的溶解度和饱和度的影响因素。

二、实验设备和药品1. 分析天平2. 毛细管3. 密度计4. 洛氏硬度计5. 混合槽(含盖子)6. 毒气仪(含头盔和集气瓶)7. 酸度计8. 飞液滴定器9. 氯化银试剂10. 硝酸银试剂11. 氯化钠12. 不同温度下的水三、实验步骤1. 取10毫升的氯化钠水溶液,并加入不同浓度的硫酸铜溶液,使其成为不同饱和度的氯离子水溶液。

2. 在不同温度(10℃、20℃、30℃、40℃)的介质中测定氯离子水溶液的溶解度,并用密度计测量水中的溶质的浓度。

实验二铸铁、有色金属及合金显微组织分析(含实验报告格式)

实验二铸铁、有色金属及合金显微组织分析(含实验报告格式)
270 10 300 ≤207 体、阀盖
350
5-
147~ 241
机油泵齿轮
420
2

2297~ 302
柴油机、汽油机曲轴;
490
2

2297~ 磨床、铣床、车床的主轴 302 ;空压机、冷冻机缸体、
560
2

2417~ 缸套 实验32二1铸铁、有色金属及合金显微组织分析(含实验报告格
式)
第一部分:常用铸铁组织观察
实验二铸铁、有色金属及合金显微组织分析
性能:脆性大,很少使用(含。实验报告格式)
第一部分:常用铸铁组织观察
3、灰口铸铁的种类
根据石墨(G)在铸铁中存在形态,可分为:
普通灰铸铁:石墨呈片状 其基体组织有3种(F基、P基、 F基+P基)
可锻铸铁:石墨呈团絮状 其基体组织有3种(F基、P基、 F基+P基)
一、生产方法:
先将铸铁浇注成白口铸铁,然后进行高温石墨化退 火,使渗碳体分解得到团絮状石墨。
二、可锻铸铁的组织
可锻铸铁有铁素体和珠光体两种基体。
实验二铸铁、有色金属及合金显微组织分析 (含实验报告格式)
第一部分:常用铸铁组织观察 三、可锻铸铁的牌号
铁素体可锻铸铁以“KT”表示,珠光体可锻铸铁以“KTZ” 表示。其后的两组数字表示最低抗拉强度和延伸率。
球墨铸铁:石墨呈球状 其基体组织与处理状态有关(铸态、退火态、 正火态、等温淬火态)
蠕墨铸铁:石墨呈蠕虫状
实验二铸铁、有色金属及合金显微组织分析 (含实验报告格式)
第一部分:常用铸铁组织观察
一、灰铸铁的组织
第1节 普通灰铸铁
灰铸铁有铁素体、珠光体、(铁素体+珠光体)+石墨三种基

实验报告格式模板2篇

实验报告格式模板2篇

实验报告格式模板2篇实验报告格式模板一一、实验目的二、实验原理1. 实验所用仪器设备及原理2. 实验步骤三、实验内容四、实验结果及分析五、实验结论六、实验心得实验报告格式模板二一、实验目的1. 掌握实验室常用仪器的使用方法。

2. 学习实验中常用的物理量和单位,并掌握它们的换算方法。

3. 要求实验过程中务必保证实验操作规范,认真记录实验数据。

二、实验装置及仪器设备1. 实验所需仪器设备:气压计、天平、台秤、热平衡装置、热敏电阻、数字电压表、导热仪、等温线圈等。

2. 仪器及设备原理:(1)气压计:利用大气压力对液体产生作用使液位升高或降低来测量气压。

(2)天平:用于称量物体的重量。

(3)台秤:用于称量重物的重量。

(4)热平衡装置:在规定的时间内达到一定温度的能力,使实验室环境的温度、湿度稳定的装置。

(5)热敏电阻:温度传感器,其电阻值随温度变化而改变。

(6)数字电压表:一种电压数字量测量仪器。

(7)导热仪:通过样品所传递热量,测定样品的导热系数。

(8)等温线圈:用于测量导体在电流流过的情况下所产生的热量。

三、实验步骤1. 仪器的组装:按照所需仪器的使用说明书,组装各仪器在实验台上。

2. 电路的连接:将各仪器所需电线连接在电路板上,确保电路的通电安全。

3. 数据记录:根据实验要求和指导教师要求,对实验过程中各物理量和实验数据进行记录。

4. 实验结果处理:根据记录的数据,运用实验理论知识进行数据处理,对实验结果进行分析和总结。

四、实验结果及分析1. 实验中所测各物理量数据:(1)气压计:0.2MPa;(2)天平:250g;(3)台秤:5kg;(4)热平衡装置:25℃;(5)热敏电阻:30Ω;(6)数字电压表:8V;(7)导热仪:100W/m·K。

2. 实验结果的分析:由上述数据可知,实验结果比较稳定,满足实验的要求和指导教师的要求。

五、实验结论本次实验通过对实验要求和指导教师要求的不断探索和学习,我们学到了更多的实验操作技巧和知识,进一步提高了实验操作能力和科学素养,也为今后的科研工作提供了更多的帮助和支持。

实验二 实验报告表(1)

实验二 实验报告表(1)

.实验二实验报告表
实验名称:
学号1120172270 姓名刘江班级:02041703 实验时间:2017年10月16日
实验报告表2-1 数值型数据在计算机中的二进制实验记录表
说明:本实验对计算机内存数据的存放拟定为:①整数用两个字节存储,并负数只考虑原码;②实数用4个字节存储,其中阶码部分占一个字节。

实验报告表2-2 其他进制数据与二进制转化实验记录表
实验报告表2-3 数据的原码、补码和反码表示实验记录表
实验报告表2-4 二进制算术运算实验记录表
实验报告表2-5溢出实验记录表
实验报告表2-6浮点数的小数点浮动实验记录表
实验报考表2-7 表示浮点数的二进制串中阶码位数改变实验记录表。

实验报告格式要求

实验报告格式要求

实验报告格式要求
一、学生实验报告内容要求:
1.实验报告封面,见附件1
2.实验一:见附件2
3.实验二:
(注:1、采用学校的实验报告纸
2、实验报告按照实验项目分开写,每一个实验应当写一份。

3、指导老师必须在每份实验报告上写评语,并按百分制给出成绩、签上
老师名字。

并且要计算出最后成绩,登记在点名册的总成绩栏。


二、实验报告装袋要求:
1.点名记分册
说明:点名记分簿的内容包括学生出勤情况,平时或期中考试成绩。

备注: 1、符号意思:√到○旷课¢迟到、早退
注意:要登记学生每次实验课的出勤情况,每个实验报告的成绩,并且要计算出最后成绩,登记在总成绩栏
2.学生实验报告
注意:要按照学生的学号、实验项目顺序整理装袋。

3.实验指导书
附件1:采用16K纸张
福建农林大学材料工程学院
实验报告
实验课程名称
实验项目数总学时
专业年级
姓名
学号
教师
总成绩
日期年月日
附件2:采用学校的实验报告纸写
实验一
时间:地点:学时数:
一、实验目的意义
二、实验主要仪器与试剂
三、实验工艺设计与计算
四、实验主要过程
五、实验原始数据记录与结果计算
六、实验的分析与讨论
七、教师评语、成绩及签名。

实验2实验报告

实验2实验报告

实验2实验报告在我们探索知识的道路上,实验就像是一个个神秘的冒险,每一次都充满了未知和惊喜。

今天,我要和大家分享的就是实验 2 的奇妙之旅。

这次实验的主题是关于具体实验主题。

为了能顺利完成这个实验,我们可是做了充分的准备。

老师提前给我们讲解了实验的原理和步骤,让我们心里有了个底。

实验开始啦!我紧张又兴奋地摆弄着实验器材,就像一个即将出征的战士在检查自己的武器装备。

我小心翼翼地拿起实验器材名称,眼睛紧紧盯着它,生怕一个不小心就出了差错。

旁边的小伙伴也都全神贯注,教室里安静得只能听到我们紧张的呼吸声。

按照预定的步骤,我先进行了第一步操作。

这一步看起来简单,可真做起来还真不容易。

我得控制好操作的关键因素,稍微有一点偏差,可能就会影响整个实验结果。

我深吸一口气,告诉自己要稳住。

经过几次尝试,终于成功地完成了这一步,心里不禁小小地欢呼了一下。

接下来的步骤越来越复杂,我感觉自己的大脑在飞速运转。

在进行关键步骤名称的时候,我遇到了一个大难题。

怎么都达不到预期的效果,我急得满头大汗。

这时,我想起老师说过的话:“遇到问题不要慌,要冷静思考。

”于是,我停下手中的动作,重新审视了一遍实验步骤,仔细观察了其他同学的操作,终于发现了自己的错误。

原来是我在错误的具体方面上出了岔子。

找到问题所在后,我迅速调整,终于顺利地度过了这个难关。

在整个实验过程中,我和小伙伴们互相帮助,互相鼓励。

当有人遇到困难时,大家都会停下自己的工作,一起出谋划策。

这种团队合作的氛围让我感到特别温暖,也让我明白了在学习的道路上,我们不是一个人在战斗。

经过一番努力,实验终于接近尾声。

当看到最终的实验结果时,那种成就感简直无法用言语来形容。

我们的努力没有白费,实验成功啦!通过这次实验,我不仅学到了知识,还锻炼了自己的动手能力和解决问题的能力。

更重要的是,我明白了做任何事情都要有耐心、细心,遇到困难不能轻易放弃。

这就是我的实验 2 之旅,充满了挑战和收获。

初三化学实验报告第二章

初三化学实验报告第二章
空气中:
氧气中:
5、取少量硫放入燃烧匙中,加热到硫燃烧,观察现象。再将燃烧匙伸到盛满氧气的集气瓶中,观察现象。
空气中:
氧气中:
6、用坩埚钳夹住螺旋状的铁丝,并点燃铁丝下的火柴,待火柴杆将燃尽时,将它们伸入盛满氧气的集气瓶中,观察现象
7、硫酸铜溶液中滴加氢氧化钠溶液
第二章实验报告
一、完成表格
实验内容
实验现2、实验室,加热氯酸钾和二氧化锰的混合物
3、二氧化锰中滴加过氧化氢(双氧水)溶液
4、将一小块木炭用坩埚钳夹住,在空气中点燃后,伸入盛满氧气的集气瓶中,观察现象。待燃烧结束后,取出坩埚钳,向集气瓶中倒入少量澄清石灰水,振荡,观察现象。

实验二+实验报告表

实验二+实验报告表

实验二实验报告表
实验名称:计算机中的数据表示
学号姓名班级:
实验时间:年月日
示;②实数用4个字节存储,其中阶码部分占一个字节,用移码表示。

实验报告表2-2-1其他进制数据转化为二进制数据实验记录表
注意:表格中至少两组数据,一组为整数,一组为实数。

实验报告表2-2-2二进制数据转化为其他进制数据实验记录表
注意:表格中至少两组数据,一组为整数,一组为实数。

实验报告表2-4 二进制算术运算实验记录表
实验报告表2-5溢出实验记录表
注意:提交之前WORD文件名改为:2-学号姓名。

实验2 晶体的电光实验报告

实验2 晶体的电光实验报告

实验2 晶体的电光实验数据处理
1.研究LN 晶体的电光效应,测量铌酸锂晶体的电光特性和参数 (2)调制法测定LN 晶体的半波电压:
第一次倍频失真对应的电压V 1=143V ,第二次倍频失真对应的电压V 3=832V 。


31832143689V V V V V V π=-=-=。

由3022()2d V n l
πλγ=
得:12
223
0() 6.41102d n V l πλγ-==⨯
3.电光调制器P-V 工作曲线的测量: (1
依据数据作出电光调制器P-V 工作曲线:
(2)极值法测定LN 晶体的半波电压:
从图中可以看到,V 在100~150V 时取最小值,在800~850V 时取最大值。

分别在这两个
比较数据可以得出,极小值大致出现在1110V V ≈,极大值大致出现在3805V V ≈,由
此可得31805110695V V V V V V π=-=-=
由3022()2d V n l
πλγ=
得:12223
0() 6.35102d
n V l πλγ-==⨯ 4.测量值与理论值比较:
晶体基本物理量:
算出理论值3022()649.22d
V V n l
πλγ=
=。

与理论值相比,调制法测量结果相对误差约6.1%,
极值法测量结果误差约7.1%,实验值与理论值符合较好。

其中,动态法比极值法更精确。

实验2_双液相实验报告

实验2_双液相实验报告

化工实验报告实验名称双元系液液相平衡实验班级化21 姓名张腾学号 2012011864 成绩实验时间 2014.11.26 同组成员何佳倩1.实验目的(1)学习双元系液液相平衡测定的原理(2)绘制异丁醇-水体系相图,学会分配系数的计算(3)掌握基团贡献法计算液液相平衡的方法2.实验原理异丁醇与水部分互溶,恒压下二元液夜相平衡体系自由度f=1,因此确定了T,组成随之确定。

恒温下,通过测定两相折光指数,便可查图获得平衡组成,并获得液液平衡情况。

3.仪器设备与化学试剂(1)仪器设备恒温水浴,电磁加热搅拌器,阿贝折光仪,液液平衡釜,取样器和吸管。

(2)化学试剂分析纯级异丁醇和去离子水,其部分物性如下表:表 1 异丁醇与水的物理性质4.实验步骤(1)合上电闸,打开恒温槽,将温度恒定在30℃(2)开电磁搅拌开关(不要打开加热开关)并调节至适当的搅拌速度(3)观察平衡釜中的温度计,5min内温差不超过0.1℃,即停止搅拌(4)静置5min,继续观察有无温度变化。

(5)仔细观察液液分界面,用清洁的吸管吸取上层清液,洗涤3次,再吸取上层样品,供折光分析用(注意,吸取样品时必须十分细心,防止上下液层有所混杂)(6)将下层取样器沿着铁架降至液液平衡釜底部,抽出玻璃棒,使下层清液流入下层取样管中,再用清洁的吸管插入下层取样管中,按吸取上层样品的方法取样(注意:吸管需干燥,清洁)(7)用阿贝折光仪分析样品,折光仪恒温25.5±0.1℃,取样两次取平均(注意:不要连续两次取同一相,以对原有平衡造成更大破坏,应按照上相、下相再上相、下相的顺序)(8)将釜内温度提高至40及50℃,重复上述工作。

(9)实验完毕,关电源,将试液倒回回收瓶,做好清洁工作。

5.实验数据记录及数据处理5.1 原始实验数据室温: 20.7 ℃;大气压: 101325 Pa表2实验数据注:α相是上部的醇相,β相是下部的水相。

在25.5℃时,折光指数n D与异丁醇的摩尔分数χ1呈如下线性关系:水相:n D=0.41903x+1.33246 x=(n D-1.33246)/0.41903醇相:n D=0.01524x+1.38064 x=(n D-1.38064)/0.01524将摩尔分数转化为质量分数,得到不同温度下水-异丁醇共轭体系中的组成如下表:表 2 异丁醇-水体系质量分数平衡温度/K 304.35 313.25 316.95 320.750.8593 0.8387 0.8626 0.85100.0883 0.0810 0.0779 0.0779注:换算时取异丁醇的相对分子质量为74,水的相对分子质量为18。

实验报告范例_2

实验报告范例_2

实验二培养过程中的显微观察与应用一、实验目的1.练习显微镜的使用方法。

2.掌握酵母菌形态观察的基本方法,并学习描述不同生长阶段的酵母菌的形态特征。

3.学习用血球计数法估算酵母菌的数量。

4.根据酵母菌细胞形态的不同,计算出芽率。

5.学习用染色法估算酵母菌的存活率。

6.学习用计算机软件测量微生物大小。

二、实验原理1.显微镜的结构及工作原理。

2.血球计数法的原理血球计数板是一块特制的载玻片,上面有四条平行槽将载玻片分为三个平台,中间的平台较宽,其中间又被一短槽隔成两半,每边平台上各有一个含九个大格的方格网,中间大格为计数室。

实验所用的计数室的规格是25*16型,称为麦氏血细胞计数板,有25个中方格,每个中方格分为16个小方格。

应用血球计数板在显微镜下直接计算微生物细胞的数量,方法是先测定若干个中方格中的微生物细胞数量,再换算成每毫升菌液中微生物细胞数量。

计数5个中方格内细菌数,设为A,菌液的稀释度为B,则菌液浓度=(A/5)*25*10*1000*B(个/毫升)。

3.出芽的酵母菌细胞呈葫芦状。

4.微生物细胞大小的测定。

计算机软件的调用可直接测定微生物细胞的大小,根据细胞放大倍数可算出细胞的实际大小,还可以直接导出生成表格。

5.通过染色后观察细胞形态确定细胞是否存活。

染色原理:活细胞因新陈代谢及有较强的还原能力呈现原色,而死细胞或代谢较慢的老细胞因无还原能力而被美蓝染成蓝色或淡蓝色。

三、实验材料显微镜,血球计数板,培养时间分别为24h 48h 72h的酵母菌,载玻片,盖玻片,酒精,蒸馏水,镊子,擦镜纸,美蓝染色剂,移液管四、实验内容1.将显微镜置于实验台上利于观察的位置;调节光的亮度,将显微镜的光源打开,调节旋钮至适当亮度;打开计算机。

2.调至10*倍镜,上升镜筒至最好处,将血球计数板放在载物台上,夹好。

3.移动血球计数板到物镜下方,调节粗准焦螺旋使物镜下降,至出现方格,调节细准焦螺旋至物像清晰,移动血球计数板,把要观察的位置移到视野中间,调至40*镜,调节细准焦螺旋至物像清晰。

单片机综合实验报告格式实验报告2

单片机综合实验报告格式实验报告2

单片机综合实验报告格式实验报告2实验报告2:单片机综合实验一、实验目的本实验的目的是通过应用所学的单片机知识,综合运用各种功能模块,设计并实现一个完整的单片机系统。

二、实验器材1. STC89C52单片机开发板2. 七段数码管模块3. LED灯模块4. 蜂鸣器模块5. 按键模块6. 电阻、电容等常规元件7. 万用表等实验工具三、实验原理本实验的设计要求是实现一个闹钟功能,包括当前时间显示、闹钟时间设置和闹钟响铃等功能。

具体实现过程如下:1. 使用七段数码管模块显示当前时间,通过定时器中断实现时间的自动更新。

2. 使用按键模块设置闹钟时间,通过按键中断实现设置的功能。

3. 使用LED灯模块和蜂鸣器模块作为闹钟的响铃指示信号。

四、实验过程1. 确定使用的IO口,连接相应的模块到单片机开发板上。

2. 编写初始化程序,包括定时器的初始化配置,IO口的设置等。

3. 编写定时器中断程序,用于更新时间显示的逻辑。

4. 编写按键中断程序,用于接收设置闹钟时间的信号。

5. 编写闹钟响铃程序,通过控制LED灯和蜂鸣器的开关来实现。

6. 编写主程序,实现整个闹钟功能的循环执行。

五、实验结果经过实验测试,实现了一个完整的闹钟功能,能够准确显示当前时间,并能够根据设置的闹钟时间进行响铃。

六、实验总结通过这次实验,我巩固了单片机的基础知识,并熟悉了各种功能模块的使用方法。

同时,我也学会了如何综合运用这些知识和技能,设计并实现一个完整的单片机系统。

实践中遇到的问题和挑战也促使我进一步提高了解决问题的能力和创新思维。

总的来说,这次实验对我来说是一次很有意义和收获的实践。

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

实验2实验报告格式《计算机图形学》实验2实验报告实验题目:多视图绘图程序实验内容:掌握多视图绘图的概念,掌握二维统计图的绘制方法。

调用实验1中自己编写的基本包,绘制自己所设计的统计图形(饼图、直方图以及折线)。

编写程序调用验证之。

参考程序:有一个示范程序MultiViewport.java基本概念:(详细叙述自己对实验内容的理解)计算机视图:是基于合成照相机的,原则上可以实现所有的经典视图,但是它更强调对象定义与照相机定义之间的独立性。

多视图:就是将若干个绘制好的图形按照一定的规则(可以是自己设计的规则,也可以是已经存在的图形的规则),组成一个具有特定意义的图形,在同一个视图中显示出来。

算法设计:(详细叙述自己设计的多视图统计图以及程序的功能、算法及实现)饼图:仅排列在工作表的一列或一行中的数据可以绘制到饼图中。

饼图显示一个数据系列中各项的大小与各项总和的比例。

饼图中的数据点显示为整个饼图的百分比。

本程序中的饼图统计的是学生成绩状况。

直方图:又称柱状图、质量分布图。

是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。

本程序使用矩形的填充来实现柱状图形。

程序中横轴表示成绩分段,纵轴表示人数分布。

折线:以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图。

可以反应事物的变化趋势。

本程序是统计学生成绩趋势,折线的转折点就是某个等级的人数所占总人数的比例。

本程序功能:实现饼图、直方图和折线对学生成绩的统计。

饼图算法:根据各个类别所占总统计数的比例来确定其在饼图中所占的比例大小,每一个类别就是一个扇形,扇形的大小是根据所占比例确定的。

假设在中等成绩段的学生人数是m人,统计的总人数是n人,那么中等成绩段在饼图中的比例就是m/n,其在饼图中的大小是m/n*360。

直方图算法:根据每个类别占总调查人数的比例来确定柱状图的高低,每一个类别所占的比例就是一个矩形在直方图中的相对高度,一个类别就是用一个矩形表示,矩形的宽度就是成绩分布段。

如果在图中绘制出来就是按照每个类别所占的比例扩大或缩小多少倍,在图形中较好的表现出来。

如果人数多,则柱状就会高,反之则低。

折线算法:以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图。

在本程序中的折线的每一段都是一条线段。

简单的说,就是将直方图的柱状的最高点改为一个点,然后将不同类别的点连接起来,就形成了折线图。

折线的转折点就是某个等级的人数所占总人数的比例。

代码:(给出主要的Java程序和注解)//定义用户的canvas类,实现// 从用户坐标到视图的转换// 视图到JavaAWT坐标的转换// 用户坐标系的二维图形的描画方法,等//用编译命令javac -d . MyCanvas.java把本文件制作成包MyCanvas//在调用这个包的程序里加入语句import first.MyCanvas;package first; //制作的包名,这里包名和类名同import java.io.*;import java.awt.*;import java.awt.image.*;//定义canvas类public class MyCanvas extends Component {//用户坐标系范围缺省值([-1,1],[-1,1])protected double userMinx=-1; //用户坐标系X轴的最小值protected double userMaxx=1; //用户坐标系X轴的最大值protected double userMiny=-1; //用户坐标系Y轴的最小值protected double userMaxy=1; //用户坐标系Y轴的最大值//视图的坐标范围缺省值([0,1],[0,1])protected double[] viewMinx; //各视图X轴最小值的数组protected double[] viewMaxx; //各视图X轴最大值的数组protected double[] viewMiny; //各视图Y轴最小值的数组protected double[] viewMaxy; //各视图Y轴最大值的数组final static int DefaultViewportMax=256; //缺省的视图数protected int viewportMax=DefaultViewportMax; //最大视图数protected int viewportNum=0; //当前视图数protected int currentViewport=0; //当前视图的索引号//窗口大小final static int DefaultWindowSize=256; //缺省的窗口大小protected int windowWidth=DefaultWindowSize; //窗口宽度protected int windowHeight=DefaultWindowSize; //窗口宽度//定义Java AWT 的Graphics 和 Componentprotected Graphics graphics; //MyCanvas的Graphics数据类protected Component component; //MyCanvas的component数据类protected Color currentFrontColor=Color.white; //当前前景颜色protected Color currentBackColor=Color.white; //当前背景色//构造方法//缺省的构造方法中viewportMax=256public MyCanvas(Component a) {component=a; //设定MyCanvas类所用的Componentgraphics=a.getGraphics(); //设定MyCanvas类所用的graphicswindowWidth=a.getSize().width; //窗口宽度windowHeight=a.getSize().height; //窗口高度createViewport(DefaultViewportMax);//创建视图}//创建视图private void createViewport(int max) {currentViewport=0; //设定当前视图索引号viewportMax=max; //设定视图数的最大值viewMinx=new double[viewportMax]; //存放各视图X轴最小值viewMaxx=new double[viewportMax]; //存放各视图X轴最大值viewMiny=new double[viewportMax]; //存放各视图y轴最小值viewMaxy=new double[viewportMax]; //存放各视图y轴最大值viewMinx[currentViewport]=0.0; //设定当前视图的坐标轴范围viewMiny[currentViewport]=0.0;viewMaxx[currentViewport]=1.0;viewMaxy[currentViewport]=1.0;viewportNum=1; //当前视图数}//设定用户坐标系范围public void setWindow(double x1,double x2,double y1,double y2) {userMinx=x1; //设定窗口(用户坐标系)X轴的最小值userMaxx=x2; //设定窗口(用户坐标系)X轴的最大值userMiny=y1; //设定窗口(用户坐标系)y轴的最小值userMaxy=y2; //设定窗口(用户坐标系)y轴的最大值}//设定视图public void setViewport(double x1,double x2,double y1,double y2) {currentViewport=viewportNum; //设定新的当前视图索引号viewportNum++; //当前视图数加1viewMinx[currentViewport]=x1; //存放视图的X轴最小值viewMaxx[currentViewport]=x2; //存放视图的X轴最大值viewMiny[currentViewport]=y1; //存放视图的y轴最小值viewMaxy[currentViewport]=y2; //存放视图的y轴最大值}//视图复位public void resetViewport() {currentViewport=0; //当前视图索引号重归于零viewMinx[currentViewport]=0.0; //设定当前视图的坐标轴范围viewMiny[currentViewport]=0.0;viewMaxx[currentViewport]=1.0;viewMaxy[currentViewport]=1.0;viewportNum=1; //当前视图数}//将视图坐标系的点转换到Java AWT坐标public int getIntX(double x) {return (int)(windowWidth * x); //注意视图坐标0-1之间}public int getIntY(double y) {return (int)(windowHeight * (1-y));//Y轴方向相反}//将用户坐标的点转换到视图坐标public double viewX(double x) {double s=(x-userMinx)/(userMaxx-userMinx);double t=viewMinx[currentViewport]+s* //坐标的平移及压缩(viewMaxx[currentViewport]-viewMinx[currentViewport]);return t;}public double viewY(double y) {double s=(y-userMiny)/(userMaxy-userMiny);double t=viewMiny[currentViewport]+s* //坐标的平移及压缩(viewMaxy[currentViewport]-viewMiny[currentViewport]);return t;}//将用户坐标的点转换到Java AWT坐标public int getX(double x) {double xx=viewX(x); //先将x转换到视图坐标int ix=getIntX(xx); //将视图坐标转换到Java AWT坐标return ix;}public int getY(double y) {double yy=viewY(y); //先将y转换到视图坐标int iy=getIntY(yy); //将视图坐标转换到Java AWT坐标return iy;}//将用户坐标系的宽度、高度值投影到Java AWT坐标public int getDimensionX(double w) {doublex=viewMaxx[currentViewport]-viewMinx[currentViewport];x*=windowWidth*w/(userMaxx-userMinx); //按比例投影,经由视图坐标系return ((int)Math.abs(x)); //用户坐标系可能反向}public int getDimensionY(double h) {doubley=viewMaxy[currentViewport]-viewMiny[currentViewport];y*=windowHeight*h/(userMaxy-userMiny); //按比例投影,经由视图坐标系return ((int)Math.abs(y)); //用户坐标系可能反向}//有关当前颜色的设定方法:画笔颜色、前景色、背景色public Color getColor() {return currentFrontColor; //得到当前颜色序号}public void setColor(Color c) {graphics.setColor(c); //设置图形对象的颜色currentFrontColor=c; //设定当前颜色序号}public Color getForeground() {return currentFrontColor; //得到当前前景色序号}public void setForeground(Color c) {component.setForeground(c); //设置前景色currentFrontColor=c; //设定当前前景色序号}public Color getBackground() {return currentBackColor; //得到当前背景色序号}public void setBackground(Color c) {component.setBackground(c); //设置背景色currentBackColor=c; //设定当前背景色序号}//-----各类图形的描画方法-----------//直线画法:两点式参数public void drawLine(double x1,double y1,double x2,double y2) {//从用户的点坐标转换到Java AWT坐标int ix1=getX(x1); int iy1=getY(y1);int ix2=getX(x2); int iy2=getY(y2);graphics.drawLine(ix1,iy1,ix2,iy2);//这个方法它是怎样画直线的?}//矩形画法:对角式参数public void drawRect(double x1,double y1,double x2,double y2) {//从用户的点坐标转换到Java AWT坐标int ix1=getX(x1); int iy1=getY(y1);int ix2=getX(x2); int iy2=getY(y2);int ix0=(ix1<ix2)?ix1:ix2; //矩形左上角坐标int iy0=(iy1<iy2)?iy1:iy2;int width=Math.abs((ix1-ix2))+1; //矩形宽度,单位像素int height=Math.abs((iy1-iy2))+1; //矩形高度graphics.drawRect(ix0,iy0,width,height);}//矩形填充public void fillRect(double x1,double y1,double x2,double y2){//从用户的点坐标转换到Java AWT坐标int ix1=getX(x1); int iy1=getY(y1);int ix2=getX(x2); int iy2=getY(y2);int ix0=(ix1<ix2)?ix1:ix2; //矩形左上角坐标int iy0=(iy1<iy2)?iy1:iy2;int width=Math.abs((ix1-ix2))+1; //矩形宽度,单位像素int height=Math.abs((iy1-iy2))+1; //矩形高度graphics.fillRect(ix0,iy0,width,height); //填充算法如何实现?}//矩形区域的清除public void clearRect(double x1,double y1,double x2,double y2) {//从用户的点坐标转换到Java AWT坐标int ix1=getX(x1); int iy1=getY(y1);int ix2=getX(x2); int iy2=getY(y2);int ix0=(ix1<ix2)?ix1:ix2; //矩形左上角坐标int iy0=(iy1<iy2)?iy1:iy2;int width=Math.abs((ix1-ix2))+1; //矩形宽度,单位像素int height=Math.abs((iy1-iy2))+1; //矩形高度graphics.clearRect(ix0,iy0,width,height); //算法等同填充}//圆角矩形画法public void drawRoundRect(double x1,double y1,double x2,double y2,double arcW,double arcH) { //圆弧高度、圆弧宽度//从用户坐标的点转换到Java AWT坐标int ix1=getX(x1); int iy1=getY(y1);int ix2=getX(x2); int iy2=getY(y2);int ix0=(ix1<ix2)?ix1:ix2; //矩形左上角坐标int iy0=(iy1<iy2)?iy1:iy2;int width=Math.abs((ix1-ix2))+1; //矩形宽度,单位像素int height=Math.abs((iy1-iy2))+1; //矩形高度int iarcWidth=getDimensionX(arcW); //圆弧宽度投影到Java AWT坐标int iarcHeight=getDimensionX(arcH);//圆弧高度投影graphics.drawRoundRect(ix0,iy0,width,height,iarcWidth,iarcH eight);}//圆角矩形填充public void fillRoundRect(double x1,double y1,double x2,double y2,double arcW,double arcH) { //圆弧高度、圆弧宽度//从用户坐标的点转换到Java AWT坐标int ix1=getX(x1); int iy1=getY(y1);int ix2=getX(x2); int iy2=getY(y2);int ix0=(ix1<ix2)?ix1:ix2; //矩形左上角坐标int iy0=(iy1<iy2)?iy1:iy2;int width=Math.abs((ix1-ix2))+1; //矩形宽度,单位像素int height=Math.abs((iy1-iy2))+1; //矩形高度int iarcWidth=getDimensionX(arcW); //圆弧宽度投影到Java AWT坐标int iarcHeight=getDimensionX(arcH);//圆弧高度投影graphics.fillRoundRect(ix0,iy0,width,height,iarcWidth,iarcH eight);}//带阴影矩形的画法public void draw3DRect(double x1,double y1,double x2,double y2, boolean raised) { //阴影抬升或者洼陷//从用户坐标的点转换到Java AWT坐标int ix1=getX(x1); int iy1=getY(y1);int ix2=getX(x2); int iy2=getY(y2);int ix0=(ix1<ix2)?ix1:ix2; //矩形左上角坐标int iy0=(iy1<iy2)?iy1:iy2;int width=Math.abs((ix1-ix2))+1; //矩形宽度,单位像素int height=Math.abs((iy1-iy2))+1; //矩形高度graphics.draw3DRect(ix0,iy0,width,height,raised);}//椭圆的画法(圆心坐标和两个半径)public void drawOval(double x,double y,double xr,double yr) { //圆心从用户坐标转换到Java AWT坐标int ix=getX(x); int iy=getY(y);int ixr=getDimensionX(xr); //x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr); //y轴半径投影int x0=ix-ixr; //椭圆外切矩形的左上角x坐标int y0=iy-iyr; //椭圆外切矩形的左上角y坐标graphics.drawOval(x0,y0,2*ixr,2*iyr);}//椭圆的填充(圆心坐标和两个半径)public void fillOval(double x,double y,double xr,double yr) { //圆心从用户坐标转换到Java AWT坐标int ix=getX(x); int iy=getY(y);int ixr=getDimensionX(xr); //x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr); //y轴半径投影int x0=ix-ixr; //椭圆外切矩形的左上角x坐标int y0=iy-iyr; //椭圆外切矩形的左上角y坐标graphics.fillOval(x0,y0,2*ixr,2*iyr);}//圆弧的画法(圆心坐标和椭圆弧两个半径,两个角度)public void drawArc(double x,double y,double xr,double yr, double startAngle,double arcAngle) {//圆心从用户坐标转换到Java AWT坐标int ix=getX(x); int iy=getY(y);int ixr=getDimensionX(xr); //x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr); //y轴半径投影int x0=ix-ixr; //椭圆外切矩形的左上角x坐标int y0=iy-iyr; //椭圆外切矩形的左上角y坐标int is=(int)(90-(startAngle+arcAngle)); //开始角度//注意Java AWT从Y轴顺时针度量int ia=(int)arcAngle; //扇形的圆心角graphics.drawArc(x0,y0,2*ixr,2*iyr,is,ia);}//扇形的填充(圆心坐标和椭圆弧两个半径,两个角度)public void fillArc(double x,double y,double xr,double yr, double startAngle,double arcAngle) {//圆心从用户坐标转换到Java AWT坐标int ix=getX(x); int iy=getY(y);int ixr=getDimensionX(xr); //x轴半径投影到Java AWT坐标int iyr=getDimensionX(yr); //y轴半径投影int x0=ix-ixr; //椭圆外切矩形的左上角x坐标int y0=iy-iyr; //椭圆外切矩形的左上角y坐标int is=(int)(90-(startAngle+arcAngle)); //开始角度//注意Java AWT从Y轴顺时针度量int ia=(int)arcAngle; //扇形的圆心角graphics.fillArc(x0,y0,2*ixr,2*iyr,is,ia);}//折线public void drawPolyline(double[] x,double[] y,int numPoints) {int[] ix=new int[numPoints];int[] iy=new int[numPoints];for(int i=0;i<numPoints;i++) {ix[i]=getX(x[i]); //从用户坐标点转换到Java AWT坐标iy[i]=getY(y[i]);}graphics.drawPolyline(ix,iy,numPoints);}//多边形public void drawPolygon(double[] x,double[] y,int numPoints){int[] ix=new int[numPoints];int[] iy=new int[numPoints];for(int i=0;i<numPoints;i++) {ix[i]=getX(x[i]); //从用户坐标点转换到Java AWT坐标iy[i]=getY(y[i]);}graphics.drawPolygon(ix,iy,numPoints); //封闭的折线图}//多边形填充public void fillPolygon(double[] x,double[] y,int numPoints) {int[] ix=new int[numPoints];int[] iy=new int[numPoints];for(int i=0;i<numPoints;i++) {ix[i]=getX(x[i]); //从用户坐标点转换到Java AWT坐标iy[i]=getY(y[i]);}graphics.fillPolygon(ix,iy,numPoints); //掌握填充的算法是重点}//写字符串public void drawString(String str,double x,double y) { //从用户坐标点转换到Java AWT坐标int ix=getX(x); int iy=getY(y);graphics.drawString(str,ix,iy);}//获取当前Graphics类的字体public Font getFont() {return graphics.getFont();}//设定当前Graphics类的字体public void setFont(Font f) {graphics.setFont(f);}//定义一种字体:仅对window已有字体放大尺寸public Font MyFont(String name,int style,double size) { int DefaultFontSize=12;if(size<=0) size=1.0; //字体大小不能为负数int isize=(int)(DefaultFontSize*size); //定义字体的大小Font f=new Font(name,style,isize); //构造字体return f;}//Java AWT坐标系到视图坐标系的反向转换public int getViewport(int ix,int iy){if(viewportNum==1) return 0; //默认视图double s=(double)(ix)/(double)windowWidth;double t=(double)(windowHeight-iy)/(double)windowHeight;for(int i=0;i<viewportNum;i++) { //视图索引号if(s>=viewMinx[i] && s<=viewMaxx[i] &&t>=viewMiny[i] && t<=viewMaxy[i]) return i;}return 0;}//视图到用户坐标系的反向转换(x坐标)public double getUserX(int ix,int v) {double t=(double)(ix)/(double)windowWidth;doublex=userMinx+(t-viewMinx[v])/(viewMaxx[v]-viewMinx[v])*(userMaxx-userMinx);return x;}//视图到用户坐标系的反向转换(y坐标)public double getUserY(int iy,int v) {double t=(double)(windowHeight-iy)/(double)windowHeight;doubley=userMiny+(t-viewMiny[v])/(viewMaxy[v]-viewMiny[v])*(userMaxy-userMiny);return y;}//******线段光栅化的成员变量********protected Image image; //Java图像类的对象protected MemoryImageSource mis; //内存图像数据源protected int pixelWidth; //图像点阵的宽度(像素数)protected int pixelHeight; //图像点阵的高度(像素数)protected int[] pixel; //存放图像点的颜色(行优先一维存放)protected int xoffset; //像素数据窗口内X坐标的偏移protected int yoffset; //像素数据窗口内Y坐标的偏移//直线(光栅化)实数型Bresenham算法public void rasterizeDrawLine(double x1,double y1,double x2,double y2) {double leftTopx,leftTopy;//从用户坐标到Java AWT坐标int ix1=getX(x1);int iy1=windowHeight-getY(y1); //到窗口下方的像素数int ix2=getX(x2);int iy2=windowHeight-getY(y2); //到窗口下方的像素数if(x1<x2){leftTopx=x1; //左上角的X坐标值设为x1(用户坐标)xoffset=ix1; //窗口中的偏移量是Java AWT坐标}else{leftTopx=x2; //左上角的X坐标值设为x2(用户坐标)xoffset=ix2; //窗口中的偏移量是Java AWT坐标}if(y1<y2){ //用户坐标原点在左下,Java AWT在左上leftTopy=y2; //左上角的y坐标值设为y2yoffset=iy1; //窗口中的偏移量是Java AWT坐标}else{ //用户坐标原点在左下,Java AWT在左上leftTopy=y1; //左上角的y坐标值设为y1(用户坐标)yoffset=iy2; //窗口中的偏移量是Java AWT坐标}int dx=ix2-ix1; //取得X向的间距int dy=iy2-iy1; //取得y向的间距int adx=Math.abs(dx); //X向的间距的绝对值int ady=Math.abs(dy); //Y向的间距的绝对值pixelWidth=adx+1; //图像点阵的宽度(像素数)pixelHeight=ady+1; //图像点阵的高度(像素数)//一维数组存放图像点的颜色(行优先)pixel=new int[pixelWidth*pixelHeight];for(int k=0;k<pixelWidth*pixelHeight;k++)pixel[k]=0x00000000; //预设透明背景,32位0int sx=(dx>0)?1:-1; //取正负号,1或者-1int sy=(dy>0)?1:-1;int x=ix1; //x从ix1开始循环int y=iy1; //y从iy1开始循环if(adx==0) { //说明这是平行于Y轴的直线for(int j=1;j<=ady;j++) {myPutPixel(x,y); //调用同类成员函数,设当前定像素颜色y+=sy; //y坐标的改变量为1或者-1个像素}}else if(ady==0) { //说明这是平行于x轴的直线for(int i=1;i<=adx;i++) {myPutPixel(x,y); //调用同类成员函数,设当前定像素颜色i+=sx; //x坐标的改变量为1或者-1个像素}}else if(adx>ady) { //直线走向贴近x轴方向double d=(double)dy/(double)dx; //直线斜率double ty=(double)y;for(int i=1;i<=adx;i++,x+=sx) { //x增加1或者-1个像素myPutPixel(x,y); //调用同类成员函数,设定当前像素颜色ty+=sx*d; //y坐标相应的改变量(像素)if(Math.abs(ty-y)>Math.abs(ty-y-sy))y+=sy; //沿y向前进了一个像素}}else { //直线走向贴近Y轴方向(adx<=ady)double d=(double)dx/(double)dy; //直线斜率double tx=(double)x;for(int j=1;j<=ady;j++,y+=sy) { //y增加1或者-1个像素myPutPixel(x,y); //调用同类成员函数,设当前定像素颜色tx+=sy*d; //y坐标相应的改变量(像素)if(Math.abs(tx-x)>Math.abs(tx-x-sx))x+=sx; //沿x向前进了一个像素}}/**作成内存图像源**/mis=new MemoryImageSource(pixelWidth,pixelHeight,pixel,0,pixelWidth); //生成内存图像有五个参数image=createImage(mis); //生成图像/**调用显示图像方法,需要四个参数**/myDrawImage(image,leftTopx,leftTopy,this);} //结束Bresenham算法//设定当前像素的颜色public void myPutPixel(int i,int j) {int r=getColor().getRed()&0xff; //获取当前红色值int g=getColor().getGreen()&0xff; //绿色值int b=getColor().getBlue()&0xff; //蓝色值int a=0xff000000|(r<<16)|(g<<8)|b;//组成像素值为32位二进制数,存放到像素数组的相应位置pixel[(pixelHeight-1-(j-yoffset))*pixelWidth+(i-xoffset)]=a ;//其它位置为初始设置的透明色,不覆盖原来已显示的像素}//图像的显示public boolean myDrawImage(Image img,double x,double y,ImageObserver observer) {//从用户坐标点转换到Java AWT坐标int ix=getX(x); int iy=getY(y);//调用AWT的图像显示return graphics.drawImage(img,ix,iy,observer);}//******画笔移动方法*******protected double lastX=0; //画笔当前位置X坐标protected double lastY=0; //画笔当前位置Y坐标//抬笔移动到指定位置public void moveTo(double x,double y) {lastX=x; //更新画笔的当前位置lastY=y;}//落笔移动到指定位置public void lineTo(double x,double y) {drawLine(lastX,lastY,x,y); //画直线lastX=x; //更新画笔的当前位置lastY=y;}} //结束Mycanvas类package second;//MultiViewport.java//多视图程序import java.awt.*; //绘图基于java AWT包import java.applet.Applet;import first.MyCanvas;//定义多视图类public class TestMyMulView extends Applet {MyCanvas m; //定义MyCanvas类的对象final static int idealSizeX=600; //窗口宽度final static int idealSizeY=600; //窗口高度//Applet程序的自动初始化方法initpublic void init() {m=new MyCanvas(this); //生成MyCanvas类的对象}//画圆饼统计图(成绩统计)public void paintPIGraph_1(MyCanvas m) {double r=0.8; //外圆半径double cr=0.3; //内圆半径/*利用三基色构造颜色*/m.setColor(new Color((float)0.95,(float)0.75,(float)0.6));double excellent=0.15*360; //优秀占15%对应的扇形角m.fillArc(0,0,r,r,0,excellent); //从0度起画"优秀"对应的扇形/* 扇弧终止点的坐标 */double excellentX=r*Math.sin(excellent*Math.PI/180);double excellentY=r*Math.cos(excellent*Math.PI/180);double sum=excellent; //从0度起已经画出的扇弧角度m.setColor(newColor((float)0.80,(float)0.80,(float)0.50));double good=0.25*360; //良好占25%对应的扇形角m.fillArc(0,0,r,r,sum,good); //从sum度起画"良好"对应的扇形sum+=good; //从0度起已经画出的扇弧角度/* 扇弧终止点的坐标 */double goodX=r*Math.sin(sum*Math.PI/180);double goodY=r*Math.cos(sum*Math.PI/180);m.setColor(newColor((float)0.65,(float)0.85,(float)0.40));double medium=0.35*360; //中等占35%对应的扇形角m.fillArc(0,0,r,r,sum,medium); //从sum度起画"中等"对应的扇形sum+=medium; //从0度起已经画出的扇弧角度double mediumX=r*Math.sin(sum*Math.PI/180); //扇弧终止点的坐标double mediumY=r*Math.cos(sum*Math.PI/180);m.setColor(newColor((float)0.50,(float)0.90,(float)0.30));double pass=0.20*360; //及格占20%对应的扇形角m.fillArc(0,0,r,r,sum,pass); //从sum度起画"及格"对应的扇形sum+=pass; //从0度起已经画出的扇弧角度double passX=r*Math.sin(sum*Math.PI/180); //扇弧终止点的坐标double passY=r*Math.cos(sum*Math.PI/180);m.setColor(newColor((float)0.35,(float)0.95,(float)0.2));double fail=0.05*360; //优秀占5%对应的扇形角m.fillArc(0,0,r,r,sum,fail); //从sum度起画"不及格"对应的扇形sum+=fail; //从0度起已经画出的扇弧角度double failX=r*Math.sin(sum*Math.PI/180); //扇弧终止点的坐标double failY=r*Math.cos(sum*Math.PI/180);m.setColor(Color.black); //当前颜色m.drawOval(0,0,r,r); //画(椭)圆m.drawLine(0,0,0,r); //画起点方位半径m.drawLine(0,0,excellentX,excellentY); //画扇形分界线半径m.drawLine(0,0,goodX,goodY);m.drawLine(0,0,mediumX,mediumY);m.drawLine(0,0,passX,passY);m.drawLine(0,0,failX,failY);/* 定义字体,标准大小 */Fontf0=m.MyFont(m.getFont().getName(),m.getFont().getStyle(),1.0);m.setFont(f0); //设定字体m.drawString("优秀",0.1,0.47); //写字符串m.drawString("15%",0.1,0.30);m.drawString("良好",0.25,0.0); //写字符串m.drawString("25%",0.25,-0.15);m.drawString("中等",-0.28,-0.3); //写字符串m.drawString("35%",-0.28,-0.45);m.drawString("及格",-0.5,0.17); //写字符串m.drawString("20%",-0.5,0.02);m.drawLine(-0.1,0.47,-0.2,1.0); //画引线m.drawString("不及格",-0.2,1.15); //写字符串m.drawString("5%",-0.2,1.0);Fontf1=m.MyFont(m.getFont().getName(),m.getFont().getStyle(),1.5);//字体放大m.setFont(f1);m.drawString("成绩统计图",-0.4,-1.2); //写字符串} //圆饼统计图结束//饼图画法// //Applet程序的描绘方法paint// public void paint(Graphics g) {// m.setBackground(Color.white); //当前背景色// m.setWindow(-1,1,-1,1); //用户坐标系范围// //视图定义(第一个圆饼统计图在窗口的位置)// m.setViewport(0.5,1.0,0.25,0.75); //窗口右半面,上下居中// paintPIGraph_1(m); //画饼统计图// m.setViewport(0.0,0.5,0.25,0.75); //窗口左半面,上下居中// paintPIGraph_1(m); //再画圆饼统计图// m.resetViewport(); //视图复位// Fontf2=m.MyFont(m.getFont().getName(),m.getFont().getStyle(),2.0);//字体放大// m.setFont(f2);// m.drawString("圆饼统计图演示",-0.4,-0.9); //写字符串// } //描绘方法paint结束// //直方图画法public void paint(Graphics g){m.setBackground(new Color(200,200,200)); //背景色灰白m.setColor(Color.BLACK); //设定前景色为黑色m.setWindow(-1,1,-1,1); //设定用户坐标系范围//缺省的视图为m.setViewport(0,1,0,1)和Java AWT窗口大小一样m.drawLine(-0.9,-0.9,0.9,-0.9); //画X轴m.drawString("X轴",1,-1); //X轴写字符串m.drawLine(-0.9,-0.9,-0.9,0.9); //画Y轴m.drawString("Y轴",-0.9,0.9); //Y轴写字符串//优秀占15%,良好占25%,中等占35%,及格占20%,不及格占5%m.setColor(Color.RED);m.fillRect(-0.9, -0.9, -0.7, -0.4);m.drawString("-0.4", -0.9, -0.4);m.setColor(Color.BLUE);m.fillRect(-0.7, -0.9, -0.5, 0);m.drawString("0", -0.9, 0);m.setColor(Color.GREEN);m.fillRect(-0.5, -0.9, -0.3, 0.5);m.drawString("0.5", -0.9, 0.5);m.setColor(Color.ORANGE);m.fillRect(-0.3, -0.9, -0.1, -0.2);m.drawString("-0.2",-0.9, -0.2);m.setColor(Color.PINK);m.fillRect(-0.1, -0.9, 0.1, -0.8);m.setColor(Color.BLACK);m.drawString("-0.8",-0.9, -0.8);m.drawString("优秀",-0.9, -1.0);m.drawString("不及格",-0.1, -1.0);m.drawString("良好",-0.7, -1.0);m.drawString("中等",-0.5, -1.0);m.drawString("及格",-0.3, -1.0);m.drawString("深红色代表优秀占15%", 0.2, 0.6);m.drawString("蓝色代表良好占25%", 0.2, 0.4);m.drawString("绿色代表中等占35%", 0.2, 0.2);m.drawString("橘色代表及格占20%", 0.2, 0.0);m.drawString("桃红色代表不及格占5%", 0.2, -0.2);m.drawString("X轴代表成绩分布段", 0.2, -0.4);m.drawString("Y轴代表在成绩段的人数", 0.2, -0.6);m.setColor(Color.RED);m.drawString("直方统计图演示", -0.6, 0.8);}// public void paint(Graphics g){// m.setBackground(new Color(200,200,200)); //背景色灰白// m.setColor(Color.BLACK); //设定前景色为黑色// m.setWindow(-1,1,-1,1); //设定用户坐标系范围// //缺省的视图为m.setViewport(0,1,0,1)和Java AWT窗口大小一样// m.drawLine(-0.9,-0.9,0.9,-0.9); //画X轴// m.drawString("X轴",1,-1); //X轴写字符串// m.drawLine(-0.9,-0.9,-0.9,0.9); //画Y轴// m.drawString("Y轴",-0.9,0.9); //Y轴写字符串//// //优秀占15%,良好占25%,中等占35%,及格占20%,不及格占5%// m.setColor(Color.RED);// m.drawLine(-0.9, -0.4, -0.5, 0);// m.drawString("-0.5", -0.5, -0.9);// m.drawString("-0.4", -0.9, -0.4);// //m.drawLine(-0.5, -0.9, -0.5, 0);// m.setColor(Color.BLUE);// m.drawLine(-0.5, 0, -0.1, 0.5);// m.drawString("-0.1", -0.1, -0.9);// m.drawString("0", -0.9, 0);// //m.drawLine(-0.1, -0.9, -0.1, 0.5);// m.setColor(Color.GREEN);// m.drawLine( -0.1, 0.5, 0.3, -0.2);// m.drawString("0.3", 0.3, -0.9);// m.drawString("0.5", -0.9, 0.5);// //m.drawLine(0.3, -0.9, 0.3, -0.2);// m.setColor(Color.ORANGE);// m.drawLine( 0.3, -0.2, 0.7, -0.8);// m.drawString("0.7", 0.7, -0.9);// m.drawString("-0.2",-0.9, -0.2);// //m.drawLine(0.7, -0.9, 0.7, -0.8);// m.setColor(Color.BLACK);// m.drawString("深红色代表优秀到良好的趋势", 0.2, 0.6);// m.drawString("蓝色代表良好到中等的趋势", 0.2, 0.4);// m.drawString("绿色代表中等到及格的趋势", 0.2, 0.2);// m.drawString("橘色代表及格到不及格的趋势", 0.2, 0.0);// m.drawString("X轴代表成绩分布段", 0.2, -0.2);// m.drawString("Y轴代表在成绩段的人数", 0.2, -0.4);// m.setColor(Color.RED);// m.drawString("折线统计图演示", -0.6, 0.8);// }} //显式曲线描绘类结束运行结果:(给出运行结果的截屏和说明)上面图中所显示的是学生成绩的分布情况在直方统计图中的效果。

相关文档
最新文档