实验报告(实验二)

合集下载

实验二杨氏弹性模量的测定实验报告

实验二杨氏弹性模量的测定实验报告

实验二杨氏弹性模量的测定实验报告一、实验目的1、学会用伸长法测量金属丝的杨氏弹性模量。

2、掌握光杠杆测量微小长度变化的原理和方法。

3、学会用逐差法处理实验数据。

二、实验原理杨氏弹性模量是描述固体材料抵抗形变能力的物理量。

假设一根粗细均匀的金属丝,长度为 L,横截面积为 S,受到外力 F 作用时伸长了ΔL。

根据胡克定律,在弹性限度内,应力(F/S)与应变(ΔL/L)成正比,比例系数即为杨氏弹性模量 E,其表达式为:\E =\frac{F \cdot L}{S \cdot \Delta L}\在本实验中,F 由砝码的重力提供,S 可通过测量金属丝的直径 d计算得出(\(S =\frac{\pi d^2}{4}\)),ΔL 是微小长度变化量,难以直接测量,采用光杠杆法进行测量。

光杠杆是一个带有可旋转支脚的平面镜,其前足尖放在固定平台上,后足尖置于待测金属丝的测量端,平面镜与金属丝平行。

当金属丝伸长ΔL 时,光杠杆后足尖随之下降ΔL,带动平面镜转过一个小角度θ。

设从望远镜中看到的标尺刻度的变化为Δn,光杠杆常数(即光杠杆前后足尖的垂直距离)为 b,望远镜到平面镜的距离为 D,则有:\(\tan\theta \approx \theta =\frac{\Delta L}{b}\)\(\tan 2\theta \approx 2\theta =\frac{\Delta n}{D}\)由上述两式可得:\(\Delta L =\frac{b \cdot \Delta n}{2D}\)将其代入杨氏弹性模量的表达式,可得:\E =\frac{8FLD}{\pi d^2 b \Delta n}\三、实验仪器杨氏弹性模量测定仪、光杠杆、望远镜、标尺、砝码、千分尺、游标卡尺等。

四、实验步骤1、调整仪器调节杨氏弹性模量测定仪底座的水平调节螺丝,使立柱铅直。

将光杠杆放在平台上,使平面镜与平台面垂直,前、后足尖位于同一水平面内。

语音信号处理实验报告实验二

语音信号处理实验报告实验二

语音信号处理实验报告实验二一、实验目的本次语音信号处理实验的目的是深入了解语音信号的特性,掌握语音信号处理的基本方法和技术,并通过实际操作和数据分析来验证和巩固所学的理论知识。

具体而言,本次实验旨在:1、熟悉语音信号的采集和预处理过程,包括录音设备的使用、音频格式的转换以及噪声去除等操作。

2、掌握语音信号的时域和频域分析方法,能够使用相关工具和算法计算语音信号的短时能量、短时过零率、频谱等特征参数。

3、研究语音信号的编码和解码技术,了解不同编码算法对语音质量和数据压缩率的影响。

4、通过实验,培养我们的动手能力、问题解决能力和团队协作精神,提高我们对语音信号处理领域的兴趣和探索欲望。

二、实验原理(一)语音信号的采集和预处理语音信号的采集通常使用麦克风等设备将声音转换为电信号,然后通过模数转换器(ADC)将模拟信号转换为数字信号。

在采集过程中,可能会引入噪声和干扰,因此需要进行预处理,如滤波、降噪等操作,以提高信号的质量。

(二)语音信号的时域分析时域分析是对语音信号在时间轴上的特征进行分析。

常用的时域参数包括短时能量、短时过零率等。

短时能量反映了语音信号在短时间内的能量分布情况,短时过零率则表示信号在单位时间内穿过零电平的次数,可用于区分清音和浊音。

(三)语音信号的频域分析频域分析是将语音信号从时域转换到频域进行分析。

通过快速傅里叶变换(FFT)可以得到语音信号的频谱,从而了解信号的频率成分和分布情况。

(四)语音信号的编码和解码语音编码的目的是在保证一定语音质量的前提下,尽可能降低编码比特率,以减少存储空间和传输带宽的需求。

常见的编码算法有脉冲编码调制(PCM)、自适应差分脉冲编码调制(ADPCM)等。

三、实验设备和软件1、计算机一台2、音频采集设备(如麦克风)3、音频处理软件(如 Audacity、Matlab 等)四、实验步骤(一)语音信号的采集使用麦克风和音频采集软件录制一段语音,保存为常见的音频格式(如 WAV)。

操作系统实验二实验报告

操作系统实验二实验报告

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

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

二、实验环境本次实验使用的操作系统为 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各变量的值。

软件测试实验二实验报告

软件测试实验二实验报告

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

二、实验环境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 请求等元素。

频率计实验报告(二)

频率计实验报告(二)

频率计实验报告(二)引言概述:本文是关于频率计实验报告的第二篇。

在上一篇实验报告中,我们介绍了频率计的原理和使用方法。

在本文中,我们将继续讨论频率计的准确性、稳定性以及实验中可能遇到的问题和解决方法。

通过本次实验,我们将深入了解频率计的性能和应用情况。

正文:一、频率计的准确性1. 选择合适的输入信号:合适的输入信号能够提高频率计的准确性。

应根据实际需求选择合适的信号源,例如使用稳定的标准信号源进行校准,或者根据被测信号的特点进行合理选择。

2. 校准频率计:频率计应定期进行校准,确保准确性。

校准过程中需注意输入电平、信号形状等因素对准确性的影响,及时进行调整和校准,提高频率计的准确性。

二、频率计的稳定性1. 加强电源管理:频率计的稳定性与供电电压、电源干扰等因素密切相关。

合理管理电源,选择稳定的供电电压,避免电源波动对频率计稳定性的影响。

2. 提高抗干扰能力:频率计应具备一定的抗干扰能力,可以通过加装滤波器、进行屏蔽等方式减小外部干扰对频率计的影响,提高稳定性。

3. 保持恒温环境:频率计对环境温度敏感,应保持恒温环境,避免温度变化对频率计稳定性的影响。

三、实验中可能遇到的问题及解决方法1. 频率计读数不稳定:可能是由于输入信号波动引起的,可以尝试增加信号源的稳定性或调整信号输入方式。

2. 频率计误差较大:可能是由于输入电平过高或过低导致的,可以通过减小或增大输入信号电平进行调整。

3. 频率计显示故障:可能是由于设备故障引起的,可以检查设备连接是否正常、是否存在损坏等问题,并进行相应维修或更换操作。

四、实验中的注意事项1. 注意输入信号的频率范围:在实验中应选择适合频率范围的输入信号,避免超出频率计的测量范围。

2. 避免过高电压输入:过高的输入电压可能导致频率计损坏或显示异常,需根据设备的额定电压进行输入控制。

3. 防止外界干扰:实验时需注意周围环境的电磁干扰,如尽量远离其他电磁辐射源,以确保测量准确性和稳定性。

化教实验二实验报告

化教实验二实验报告

实验二:中学化学基本实验技能训练---------常用仪器的规范操作练习【实验教学研究目的】1.熟练掌握几种常用简单仪器的规范操作技能,养成规范操作的习惯。

2.了解各种常用仪器的使用要求,做到准确、快速地操作各种仪器。

3.了解有刻度的测量仪器的刻度组成及其测量方法,能正确读数与数据表示。

4.进一步培养严肃认真一丝不苟的科学态度。

【实验教学研究内容】1.试管的使用:A、在试管中进行氯化铝溶液与氢氧化钠溶液的反应;B、在试管中进行CuO与稀H2SO4的反应;C、在试管中制取无水CuSO4的反应。

2.对5.0g粗盐进行提纯(只求除去不容物)3.配制100mL0.5mol/L的NaCl溶液【实验教学研究步骤】(一)实验研究方案的设计一.试管的使用A、在试管中进行氯化铝溶液与氢氧化钠溶液的反应;取取一支试管,往里面加入2mL的0.5mol/L AlCl3溶液,再逐滴加入0.5mol/L NaOH溶液,观察实验现象,同时观察二者反应的用量关系。

B、在试管中进行CuO与稀H2SO4的反应;往试管中加入少量的固体CuO粉末,再加入适量2 mol/L H2SO4溶液,观察实验现象,必要时可以加热;C、在试管中制取无水CuSO4的反应。

往试管中加入少量胆矾固体,平铺到试管底部,并加热至白色固体,观察实验现象。

二.粗盐的提纯(对5.0g粗盐进行提纯):A、溶解用托盘天平称取5.0g粗盐倒入烧杯里,加入适量的蒸馏水溶解,可用玻璃棒搅拌加速溶解,直加到粗盐全部溶解时为止。

B、过滤将滤纸折叠后用水润湿使其紧贴漏斗内壁并使滤纸上沿低于漏斗口(最好能形成一段水柱),倾倒液体的烧杯口要紧靠玻璃棒,玻璃棒的末端紧靠有三层滤纸的一边,漏斗末端紧靠承接滤液的烧杯的内壁。

慢慢倾倒液体,溶液液面低于滤纸上沿,同时洗涤烧杯2-3次,再洗涤沉淀,待滤纸内无水时,仔细观察滤纸上的剩余物及滤液的颜色,滤液仍浑浊时,应该再过滤一次。

三.溶液的配制(配制100mL0.5mol/L的NaCl溶液):先计算所需氯化钠的质量,n(NaCl)=0.1*0.5=0.05mol n(NaCl)=2.9g,所以用天平称取NaCl固体,倒入干净烧杯中,加少量水溶解,然后用玻璃棒插入容量瓶刻线以下,烧杯贴在玻璃棒上,利用玻璃棒,将溶液引流到100ml容量瓶中,再用蒸馏水洗涤玻璃棒和烧杯,洗涤液也需要倒入容量瓶中,反复多次,在快达到容量瓶体积四分之三时适当摇匀下容量瓶,再加蒸馏水到刻线一下1~2 cm处改用滴管滴加蒸馏水,到凹页面最低处于刻线重合,盖好瓶塞,食指按住塞子,将瓶子反复颠倒10次左右。

实验二 实验报告

实验二        实验报告
生成设备驱动程序详细信息表的最简单的命令是:
Driverquery /fo:csv –v >*.csv
输入Mem:
Driverquery /fo:csv –v >*.csv
输入Driverquery:
输入SystemInfo:
电子表格:
③、网络通信命令Ping:使用 ping可以测试计算机名和计算机的 ip 地址,验证与远程计算机的连接,通过将 icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接,该命令只有在安装了 tcp/ip 协议后才可以使用。打开打开命令提示符窗口输入Ping命令,并记载运行结果。
(1)系统信息命令 例如Time,Date,Mem,Driverquery和SystemInfo等。
(2)系)文件系统命令 例如Copy,Del和Mkdir等。
(4)网络通信命令 例如Ping,Netstat和Route等。
四、实验操作过程及实验结果记录
(实验二)
专业班级:学号:姓名:
实验项目名称:Windows 2000/XP命令控制界面教师评分:
一、实验目的和要求
目的:对日常使用的Windows 2000/XP系统的命令控制界面做进一步了解。
要求:了解Windows 2000/XP操作系统的常用操作命令;了解Windows 2000/XP操作系统命令的直接使用和批处理使用的方法。
六、实验过程中所遇问题思考与讨论(根据个人具体情况选做)
六、参考文献:
1、《操作系统教程》,第3版,孙钟秀主编, 高等教育出版社。
2、《计算机操作系统教程习题解答与实验指导书》,第2版,张尧学编著,清华大学出版社。
3、《操作系统实验与课程设计》,庞丽萍编,华中科技大学出版社。

实验二决策树实验实验报告

实验二决策树实验实验报告

实验二决策树实验实验报告
一、实验目的
本实验旨在通过实际操作,加深对决策树算法的理解,并掌握
决策树的基本原理、构建过程以及应用场景。

二、实验原理
决策树是一种常用的机器学习算法,主要用于分类和回归问题。

其基本原理是将问题划分为不同的决策节点和叶节点,通过一系列
的特征测试来进行决策。

决策树的构建过程包括特征选择、划分准
则和剪枝等步骤。

三、实验步骤
1. 数据收集:从开放数据集或自有数据中选择一个适当的数据集,用于构建决策树模型。

2. 数据预处理:对收集到的数据进行缺失值处理、异常值处理
以及特征选择等预处理操作,以提高模型的准确性和可靠性。

3. 特征选择:采用合适的特征选择算法,从所有特征中选择对
分类或回归任务最重要的特征。

4. 构建决策树模型:根据选定的特征选择算法,以及划分准则(如信息增益或基尼系数)进行决策树模型的构建。

5. 模型评估:使用交叉验证等方法对构建的决策树模型进行评估,包括准确率、召回率、F1-score等指标。

6. 模型调优:根据评估结果,对决策树模型进行调优,如调整模型参数、采用剪枝技术等方法。

7. 模型应用:将得到的最优决策树模型应用于实际问题中,进行预测和决策。

四、实验结果及分析
在本次实验中,我们选择了某电商网站的用户购买记录作为数据集,利用决策树算法构建用户购买意愿的预测模型。

经过数据预处理和特征选择,选取了用户地理位置、年龄、性别和购买历史等特征作为输入。

利用信息增益作为划分准则,构建了一棵决策树模型。

实验报告实验2 数据类型与表达式

实验报告实验2 数据类型与表达式

实验报告_实验 2 数据类型与表达式(学生学号__姓名)一、实验目的:1、熟悉基本数据类型(int、char、float、double)占用的字节数和存储形式,能够定义基本数据类型的变量,使用这些类型的数据;2、掌握字符数据的存储形式及其与整数的运算,能正确理解“字符数据”与“字符串”的区别与联系,熟悉常用转义字符的使用;3、熟悉字符常量与一般常量的定义、使用;4、掌握算术运算符(重点是/和%)、自增(++)和自减(--)运算符的使用,能够构建正确的表达式,并输出其结果;5、理解不同类型数据之间运算时的类型转换规则,掌握强制类型转换的方法。

二、实验内容1、(基础题)用sizeof运算符可以得到各种类型数据占用存储单元长度,利用数据间的关系和不同控制符,可以得到查看数据的存储形式。

回答下列问题:(1)sizeof运算符如何使用?它的操作数可以是类型关键字吗?答:可用sizeof(类型名或数据) 来获取该类型数据所占字节数。

可以。

(2)整数的占用长度与其数值大小有关吗?答:有。

(3)字符串中’\’’、’\n’、’\t’的功能各是什么?答:单引号,换行,水平制表。

(4)字符串的一个英文字母占几个字节?一个汉字占几个字节?尾部还有什么字符?答:1个字节;4个字节;结束符‘\0’。

(5)整数的存储形式是什么?答:二进制补码。

2、(基础题)字符数据以整数方式(ASCII)存储的,可以与整数进行+、-运算,既可以用“字符”方式输出,也可以用“整数”方式输出。

回答下列问题:(1)字符数据在内存中是以什么方式存储的?答: ASCII码。

(2)字符数据与整型数据能相互赋值、运算吗?如何以“整数”方式和“字符”方式输出字符?答:能,整数:”%d”,字符:”%c”。

(3)大小写字母的ASCII有什么关系?(如:’G’与’g’)答:ASCII码相差32。

(4)如何由’A’、’a’分别得到后续的大写字母、小写字母?答:’A+1’,’a+1.’(5)字符间的距离如何计算?由一字符能分别得到ASCII比它小5、大10的两个字符吗?若能,如何得到?答:两个ASCII码绝对值相减,’a’-5,’a’+10.(6)说明“C”与’c’的联系与区别,能否写成”dog”、’boy’?答:”C”字符串,’c’字符,能.3、(基础题)符号常量与常变量(即用const关键字定义)的使用:回答问题:(1)写出用符号常量定义PI的格式;#define PI 3.14(2)写出用“常变量”方式定义PI值的语句。

大学计算机实验报告(二)2024

大学计算机实验报告(二)2024

大学计算机实验报告(二)引言:本文是大学计算机实验报告的第二部分,旨在探讨与分析在实验过程中所遇到的问题以及实验结果的总结。

概述:本报告将分为五个大点进行阐述。

首先,我们将回顾实验的目标和背景。

然后,我们将详细介绍设计和实施实验的方法与步骤。

接下来,我们将讨论实验过程中遇到的问题,并提供解决方案。

最后,我们将分析实验结果以及它们对我们的研究和学习的意义。

正文:1. 实验的目标和背景- 介绍实验的背景,包括相关的理论知识和前人研究成果。

- 解释实验的目标,即我们尝试解决的问题或验证的假设。

2. 设计和实施实验的方法与步骤- 详细描述实验所采用的方法和步骤。

- 解释实验中使用的软件和硬件工具。

- 介绍实验的实施过程,包括数据收集和实验参数设置等。

3. 实验过程中遇到的问题及解决方案- 列举实验过程中遇到的问题。

- 分析这些问题对实验结果的可能影响。

- 提供针对每个问题的解决方案和改进措施。

4. 实验结果的分析及意义- 呈现实验所得到的主要结果。

- 解释这些结果与实验目标之间的关系。

- 分析结果的可靠性和局限性。

5. 总结- 对实验进行全面总结,包括实验目标的达成情况和实验过程中的收获。

- 讨论实验中存在的局限性和可能的改进空间。

- 提出进一步研究的建议和展望。

总结:通过实验过程以及对实验结果的分析,我们得出结论...... (在这里总结实验的主要发现和结果)。

此外,对于进一步研究的建议和展望,我们认为...... (在这里提出进一步研究的方向和可能的改进空间)。

通过本报告的详细阐述,我们深入了解了实验的目标和背景,并详细描述了实验的设计和实施方法。

我们还提出了实验过程中遇到的问题及其解决方案,并对实验结果进行了分析和总结。

这些研究成果为我们进一步深化研究和学习提供了有力的支持。

实验二 面向对象编程实验报告

实验二 面向对象编程实验报告

实验二面向对象编程实验报告一、实验目的本次实验旨在深入理解和掌握面向对象编程的基本概念和方法,通过实际编程操作,提高运用面向对象思想解决问题的能力,熟悉面向对象编程的开发流程和技巧,培养良好的编程习惯和代码规范。

二、实验环境本次实验使用的编程环境为具体编程环境名称及版本,操作系统为操作系统名称及版本。

三、实验内容(一)问题描述设计一个简单的学生管理系统,能够实现对学生信息(包括姓名、学号、年龄、成绩等)的录入、查询、修改和删除操作。

(二)类的设计1、设计一个`Student` 类,用于表示学生对象。

该类包含以下属性:`name`(姓名)、`student_id`(学号)、`age`(年龄)、`score`(成绩)。

2、为`Student` 类添加构造函数,用于初始化学生对象的属性。

3、为`Student` 类添加`get` 和`set` 方法,用于获取和设置学生对象的属性值。

(三)功能实现1、录入功能:实现用户输入学生信息,并创建`Student` 对象进行存储。

2、查询功能:根据学号或姓名查询学生信息,并输出查询结果。

3、修改功能:根据学号或姓名找到对应的学生对象,修改其属性值。

4、删除功能:根据学号或姓名删除对应的学生对象。

四、实验步骤(一)类的实现```javapublic class Student {private String name;private String studentId;private int age;private double score;public Student(String name, String studentId, int age, double score) {thisname = name;thisstudentId = studentId;thisage = age;thisscore = score;}public String getName(){return name;}public void setName(String name) {thisname = name;}public String getStudentId(){return studentId;}public void setStudentId(String studentId) {thisstudentId = studentId;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}public double getScore(){return score;}public void setScore(double score) {thisscore = score;}}```(二)主函数实现```javaimport javautilArrayList;import javautilScanner;public class StudentManagementSystem {private ArrayList<Student> students;public StudentManagementSystem(){students = new ArrayList<>();}public static void main(String args) {StudentManagementSystem system = new StudentManagementSystem();Scanner scanner = new Scanner(Systemin);while (true) {Systemoutprintln("1、录入学生信息");Systemoutprintln("2、查询学生信息");Systemoutprintln("3、修改学生信息");Systemoutprintln("4、删除学生信息");Systemoutprintln("5、退出系统");int choice = scannernextInt();switch (choice) {case 1:systemaddStudent(scanner);break;case 2:systemqueryStudent(scanner);break;case 3:systemmodifyStudent(scanner);break;case 4:systemdeleteStudent(scanner);break;case 5:Systemoutprintln("感谢使用,再见!");Systemexit(0);default:Systemoutprintln("输入有误,请重新输入!");}}}//录入学生信息public void addStudent(Scanner scanner) {Systemoutprintln("请输入学生姓名:");String name = scannernext();Systemoutprintln("请输入学生学号:");String studentId = scannernext();Systemoutprintln("请输入学生年龄:");int age = scannernextInt();Systemoutprintln("请输入学生成绩:");double score = scannernextDouble();Student student = new Student(name, studentId, age, score);studentsadd(student);Systemoutprintln("学生信息录入成功!");}//查询学生信息public void queryStudent(Scanner scanner) {Systemoutprintln("请输入查询方式(1、按学号查询 2、按姓名查询):");int queryType = scannernextInt();if (queryType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (queryType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//修改学生信息public void modifyStudent(Scanner scanner) {Systemoutprintln("请输入修改方式(1、按学号修改 2、按姓名修改):");int modifyType = scannernextInt();if (modifyType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("请输入新姓名:");String newName = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetName(newName);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (modifyType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("请输入新学号:");String newStudentId = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetStudentId(newStudentId);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//删除学生信息public void deleteStudent(Scanner scanner) {Systemoutprintln("请输入删除方式(1、按学号删除 2、按姓名删除):");int deleteType = scannernextInt();if (deleteType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (deleteType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}}```五、实验结果通过对程序的运行和测试,能够成功实现学生信息的录入、查询、修改和删除功能。

实验二戴维南定理实验报告

实验二戴维南定理实验报告

实验二戴维南定理实验报告实验二:戴维南定理实验报告引言:戴维南定理(D'Alembert's principle)是力学中一项重要的原理,它在分析物体的平衡和运动时起到了关键作用。

本次实验旨在通过实际操作验证戴维南定理,并深入探究其原理和应用。

实验目的:1. 验证戴维南定理的正确性;2. 理解戴维南定理的物理意义;3. 掌握运用戴维南定理解决实际问题的方法。

实验器材:1. 弹簧振子;2. 动力学实验装置;3. 计时器;4. 重物。

实验步骤:1. 将弹簧振子固定在实验装置上,并使其处于静止状态;2. 通过实验装置施加一个水平方向的力,使弹簧振子开始运动;3. 使用计时器记录弹簧振子的运动时间;4. 改变施加的力的大小和方向,重复步骤2和3。

实验结果与分析:通过实验观察和数据记录,我们得到了弹簧振子在不同条件下的运动时间。

根据戴维南定理,物体在平衡或运动状态下所受的合外力矩为零。

我们可以根据实验结果验证这一定理的正确性。

首先,当施加的力为零时,弹簧振子处于静止状态。

根据戴维南定理,此时物体所受的合外力矩为零,即弹簧振子处于平衡状态。

实验结果显示,弹簧振子在此情况下停留在原位,验证了戴维南定理的正确性。

其次,当施加的力不为零且方向与弹簧振子运动方向相反时,根据戴维南定理,物体所受的合外力矩仍为零。

实验结果显示,弹簧振子的运动时间较长,与我们的预期相符。

最后,当施加的力不为零且方向与弹簧振子运动方向相同时,根据戴维南定理,物体所受的合外力矩不为零。

实验结果显示,弹簧振子的运动时间较短,与我们的预期相符。

结论:通过本次实验,我们验证了戴维南定理的正确性。

戴维南定理告诉我们,在平衡或运动状态下,物体所受的合外力矩为零,这是物体保持平衡或运动的必要条件。

实际应用中,我们可以利用戴维南定理解决各种力学问题,例如分析刚体的平衡条件、计算物体的加速度等。

实验中,我们使用弹簧振子作为实验对象,通过改变施加的力的大小和方向,观察弹簧振子的运动时间,并与戴维南定理进行对比分析。

实验二运算器实验报告

实验二运算器实验报告

实验二运算器实验报告
实验二是运算器实验,旨在让我们了解计算机运算器的结构和工作原理。

在本次实验中,我们通过搭建运算器电路并进行验证,深入理解了运算器的运作过程,为我们今后学习和应用计算机原理打下了基础。

一、实验原理
运算器是计算机中重要的组成部分,用于实现各种算术和逻辑运算。

在本次实验中,我们首先学习了运算器的基本原理和功能,并了解了运算器中常用的逻辑门电路,如与门、或门、非门等。

接着,我们根据原理和逻辑门电路的特点,搭建了一个16位的运算器电路,并测试了电路的逻辑功能和运算准确性。

二、实验步骤
1. 搭建16位运算器电路,包括与门、或门、非门等逻辑电路。

2. 对搭建的运算器电路进行测试,如测试与门、或门、非门电路的逻辑输出是否正确。

3. 实现加法和减法运算功能,测试运算器的运算准确性。

4. 对搭建的运算器电路进行进一步优化,提高电路工作效率和运算速度。

三、实验结果
经过实验测试,我们成功搭建了一个16位的运算器电路,并对电路进行了多项测试和验证。

在逻辑输出方面,与门、或门、非门电路均能够正确输出逻辑值,验证了运算器电路的逻辑功能。

在加法和减法运算方面,运算器电路能够正确实现运算功能,并输出正确的运算结果,这表明运算器电路的运算准确性良好。

四、实验总结
通过本次实验,我们深入理解了计算机中运算器的工作原理和结构,掌握了运算器电路的搭建和运作方法,并初步掌握了在运算器上实现加法和减法运算的原理和方法。

此外,我们还了解了运算器电路的优化方法和技巧,提高了电路工作效率和运算速度。

这些知识和技能对我们今后学习和应用计算机原理具有重要的指导意义。

实验二-实验报告(进程管理)

实验二-实验报告(进程管理)

实验二模拟实现进程管理组长:李和林软件1402一、实验目的1.理解进程的概念,明确进程和程序的区别。

2.理解并发执行的实质。

3.掌握进程的创建,睡眠,撤销等进程控制方法。

二、实验内容用C语言,JAVA语言,C++语言编写程序,模拟实现创建新的进程;查看运行进程,换出某个进程;杀死运行进程。

三、实验准备1.进程的定义进程是程序在一个数据集合上的运行过程,是系统资源分配和调度的一个独立单位。

一个程序在不同的数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。

2.进程的状态通常情况下,一个进程必须具有就绪,执行和阻塞三种基本情况。

1)就绪状态当进程已分配到除处理器外的所有必要资源后,只要再获得处理器就可以立即执行,这时进程的状态就为就绪状态。

在一个系统里,可以有多个进程同时处于就绪状态,通常把这些就绪进程排成一个或多个队列,称为就绪队列。

2)执行状态处于就绪状态的进程一旦获得处理器,就可以运行,进程状态也就处于执行状态,在单处理器系统中,只能有一个进程处于执行状态,在多处理器系统中,则可能有多个进程处于执行状态3)阻塞状态正在执行的进程因为发生某些事件而暂停运行,这种受阻暂停的状态称为阻塞状态,也可称为等待状态。

通常将处于阻塞状态的进程拍成一个队列,称为阻塞队列,在有些系统中,也会按阻塞原因的不同将阻塞状态的进程排成多个队列。

3.进程状态之间的转换4.进程控制块1)进程控制块的作用进程控制块是进程实体的重要组成部分,主要包含下述四个方面的信息:a)进程标示信息b)说明信息c)现场信息d)管理信息5.进程控制块的组织方式1)链接方式2)索引方式6.进程控制原语1)创建原语2)撤销原语3)阻塞原语4)唤醒原语7.程序代码#include<stdio.h>#include<iostream>using namespace std;void clrscr();void create();void run( );void exchange( );//唤出void kill( );void wakeUp( );//唤醒struct process_type{int pid;int priority;//优先次序int size;int state;//状态char info[10];};struct process_type internalMemory[20];int amount=0,hangUp=0,pid,flag=0;//数目,挂起void main( ){int n;int a;n=1;clrscr( );while(n==1){cout<<"\n********************************************";cout<<"\n* 进程演示系统 *";cout<<"\n********************************************";cout<<"\n 1.创建新的进程 2.查看运行进程 ";cout<<"\n 3.换出某个进程 4.杀死运行进程 ";cout<<"\n 5.唤醒某个进程¨ 6.退出系统 ";cout<<"\n*********************************************"<<endl;cout<<"请选择 ";cin>>a;switch(a){case 1:create( );break;case 2:run( );break;case 3:exchange();//换出break;case 4:kill();break;case 5:wakeUp();break;case 6:exit(0);default:n=0;}}}void create(){ //创建进程int i=0;if (amount>=20){cout<<" 内存已满,请先结束或换出进程";}else{for (i=0;i<20;i++){if (internalMemory[i].state==0){break;}}cout<<"请输入新进程的pid: "<<endl;cin>>internalMemory[ i ].pid;cout<<"请输入新进程的优先级: "<<endl;cin>>internalMemory[amount].priority;cout<<"请输入新进程的大小: "<<endl;cin>>internalMemory[amount].size;cout<<"请输入新进程的内容: "<<endl;cin>>internalMemory[amount].info;internalMemory[i].state=1;amount++;}}void clrscr()//清除内存空间{for (int i=0;i<19;i++){internalMemory[i].pid=0;internalMemory[i].priority=0;internalMemory[i].size=0;internalMemory[i].state=0;}amount=0;}void run(){for (int i=0;i<20;i++){if (internalMemory[i].state==1){cout<<"当前内存中的进程:\n"<<endl;cout<<"当前运行的进程: ";cout<<internalMemory[i].pid<<endl;cout<<"当前运行进程的优先级: ";cout<<internalMemory[i].priority<<endl;cout<<"当前运行进程占用的空间大小: ";cout<<internalMemory[i].size;}}}void exchange( ){//唤出优先级最小的进程if (!amount){cout<<"当前没有运行进程\n";return;}cout<<"\n输入换出进程的ID值: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){if (internalMemory[i].state==1){internalMemory[i].state=2;hangUp++;cout<<"\n已经成功换出进程\n";}else if (internalMemory[i].state==0){cout<<"\n要换出的进程不存在";}else{cout<<"\n要换出的进程已被挂起\n";}flag=1;break;}}if (flag==0){cout<<"\n要换出的进程不存在";}}void kill( ){if (!amount){cout<<"当前没有运行进程\n";return;}cout<<"请输入要杀死的进程: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){if (internalMemory[i].state==1){internalMemory[i].state=0;amount--;cout<<"此进程被杀死"<<pid;}else if (internalMemory[i].state==0){cout<<"\n要杀死的进程不存在\n";}else{cout<<"\n要杀死的进程已被挂起\n";}flag=1;break;}}if (!flag){cout<<"\n要杀死的进程不存在\n";}}void wakeUp(){if (!amount){cout<<"当前没有运行进程"<<endl;return;}if (!hangUp){cout<<"当前没有挂起进程";return;}cout<<"请输入pid: ";cin>>pid;for (int i=0;i<20;i++){if (pid==internalMemory[i].pid){flag=0;if (internalMemory[i].state==2){internalMemory[i].state=1;hangUp--;cout<<"已经成功唤醒进程\n";}else if (internalMemory[i].state==0){cout<<"\n要换醒的进程不存在\n";}else{cout<<"\n要唤醒的进程已被挂起\n";}break;}}if (flag){cout<<"\n要唤醒的进程已被挂起\n"<<endl;}}8.实现的结果。

实验报告范例

实验报告范例

实验二培养过程中的显微观察与应用一、实验目的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*镜,调节细准焦螺旋至物像清晰。

实验二土壤分析样品制备实验报告

实验二土壤分析样品制备实验报告

实验二-土壤分析样品制备-实验报告实验二:土壤分析样品制备一、实验目的本实验旨在掌握土壤分析样品制备的基本步骤和方法,学习如何将原始土壤样品处理成可用于化学和物理分析的样品,为后续的土壤分析实验做好准备。

二、实验原理土壤分析样品制备是将原始土壤样品进行粉碎、研磨、过筛、混匀、装瓶等操作,以便于后续的化学和物理分析。

制备过程中应尽量减少样品中的水分和有机质等成分的损失,保证样品的代表性和一致性。

三、实验步骤1.准备实验器具:样品研磨器、筛子、混匀器、分样器、干燥器、样品瓶等。

2.选取具有代表性的原始土壤样品,将其进行风干、破碎、研磨,直至全部通过100目筛。

3.将研磨后的样品进行混合,确保样品均匀一致。

4.使用分样器将混合后的样品分成若干份,每份约100g。

5.将分好的样品装入干燥、洁净的样品瓶中,贴上标签,注明样品编号、采样地点、时间等信息。

6.根据需要,可对样品进行进一步处理,如加入保护剂、进行真空封装等。

四、实验结果与讨论(一)实验结果在实验过程中,我们发现以下问题:1.土壤样品的代表性是关键。

为了保证样品的代表性,我们需要在不同区域、深度和方向上采集足够数量的样品,并进行混合。

2.研磨过程中,部分样品可能会堵塞筛孔,需要定期清理筛子并进行适当的维护。

3.分样过程中,要确保分样器清洁无残留,以免影响样品的纯净性和均匀性。

4.样品装瓶后,应立即贴上标签并记录相关信息,避免混淆。

(二)讨论通过本次实验,我们了解了土壤分析样品制备的基本步骤和方法,并掌握了相关的操作技巧。

以下是对实验的一些讨论:1.在制备过程中,要尽量减少样品中水分和有机质的损失。

为此,我们可以将样品置于干燥器中干燥,并定期翻动,以确保样品干燥均匀。

同时,在研磨过程中应避免过度粉碎,以免破坏土壤的结构和性质。

2.为了提高样品的代表性,我们可以对多个原始样品进行混合,并尽量保证每个样品的数量和质量相等。

此外,还可以在采样前对采样地点进行合理的规划和设计,如采用网格采样法等。

实验二独立按键试验实验报告

实验二独立按键试验实验报告

实验二独立按键试验实验报告
一、实验目的
独立按键试验是为了验证按键与单片机的连接是否正常,并测试按键
功能是否正常,通过实验掌握按键接口的使用和按键的原理。

二、实验原理
在实际应用中,常常需要使用按键来实现硬件的控制。

按键的原理是:当按键关闭时,两个按键引脚之间短接,按键关闭。

当按键打开时,两个
按键引脚之间断开,按键打开。

三、实验仪器
1.单片机开发板
2.按键
3.面包板和杜邦线
4.电源线
四、实验步骤
1.将按键连接到单片机开发板上的按键接口,并接通电源。

2.编写程序,监测按键是否被按下,并通过串口输出按键的状态。

3.烧录程序到单片机,运行程序。

4.进行按键试验。

五、实验结果与分析
按下按键后,通过监测按键引脚的电平变化,可以判断按键是否被按下。

根据不同的按键连接方式,可能需要使用上拉电阻或下拉电阻来连接按键。

六、实验结论
通过独立按键试验,我们验证了按键与单片机的连接是否正确,并测试了按键的功能。

在实际应用中,可以根据需要使用按键来实现硬件的控制。

七、实验心得
通过本次实验,我掌握了按键接口的使用方法和按键的原理。

在实际应用中,按键是一个常用的控制元件,有了这次实验的经验,以后在使用按键时会更加得心应手。

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

北京林业大学
2013 学年— 2014 学年第 2学期 Java程序设计基础实验
报告书
专业:电子班级:电子
姓名:学号:
实验地点:任课教师:黄儒乐
实验题目:类的继承、抽象类、上转型对象、接口
实验环境: Windows2000/XP;局域网
实验要求:
1. 对所有实验内容中涉及到的命令均要亲自实践,对照实验指导书进行。

2. 把实验中出现的问题以及最后解决的情况反馈到实验报告中。

3. 程序作业的源代码要求反馈到实验报告中。

实验内容:
1.使用抽象类实现如下程序:
按模板要求,将【代码1】~【代码6】替换为Java程序代码。

HardWork.java
abstract class Employee
{
public abstract double earnings( );
}
class YearWorker extends Employee
{
【代码1】// 重写earnings( )方法,返回年薪值
}
class MonthWorker extends Employee
{
【代码2】// 重写earnings( )方法,返回月薪值
}
class WeekWorker extends Employee
{
【代码3】// 重写earnings( )方法,返回周薪值
}
class Company
{
Employee[ ] employee;
double salaries=0;
Company(Employee[ ] employee)
{
this.employee=employee;
}
public double salariesPay( )
{
salaries=0;
【代码4】// 计算公司年工资总额salaries
return salaries;
}
}
public class HardWork
{
public static void main(String args[ ])
{
【代码5】创建Employee[ ] employee对象,数组的初始化长度通过args[]参数来传递
for(int i=0;i<employee.length;i++)
{
【代码6】当i能被3整除时,初始化一个WeekWorker对象存放到employee[i]位置。

当i除以3余1时,初始化一个MonthWorker对象存放到employee[i]位置。

当i除以3余2时,初始化一个YearWorker对象存放到employee[i]位置。

}
Company company=new Company(employee);
System.out.println("公司年工资总额:"+company.salariesPay( ) );
}
}
2.将抽象类改为接口,改造上述程序:
要求:新的程序命名为HardWork2.java,package 设置为demo
一、抽象类
1.源代码
abstract class Employee {
public abstract double earnings();
}
class YearWorker extends Employee{
public double earnings(){
double salary=81;
return salary;
}
}
class MonthWorker extends Employee{
public double earnings(){
double ms=6;
return ms*12;
}
}
class WeekWorker extends Employee{
public double earnings(){
double ws=1;
return ws*4*12;
}
}
class Company{
Employee[] employee;
double salaries=0;
Company(Employee[] employee)
{
this.employee=employee;
}
public double salariesPay()
{
salaries=0;
for(int i=0;i<employee.length;i++){
salaries=salaries+employee[i].earnings();
}
return salaries;
}
}
public class HardWork{
public static void main(String args[]){
Employee[] employee=new Employee[9];
for(int i=0;i<employee.length;i++){
if(i%3==0)
employee[i]=new WeekWorker();
else if(i%3==1)
employee[i]=new MonthWorker();
else if(i%3==2)
employee[i]=new YearWorker();
}
Company company=new Company(employee);
System.out.println("公司年工资总额:"+company.salariesPay());
}
}
2.运行结果
二、接口类
1.源代码
package demo;
abstract interface Employee {
public abstract double earnings();
}
class YearWorker implements Employee{
public double earnings(){
double salary=101;
return salary;
}
}
class MonthWorker implements Employee{
public double earnings(){
double ms=6;
return ms*12;
}
}
class WeekWorker implements Employee{
public double earnings(){
double ws=1;
return ws*4*12;
}
}
class Company{
Employee[] employee;
double salaries=0;
Company(Employee[] employee)
{
this.employee=employee;
}
public double salariesPay()
{
salaries=0;
for(int i=0;i<employee.length;i++){
salaries=salaries+employee[i].earnings();
}
return salaries;
}
}
public class HardWork2{
public static void main(String args[]){
Employee[] employee=new Employee[21];
for(int i=0;i<employee.length;i++){
if(i%3==0)
employee[i]=new WeekWorker();
else if(i%3==1)
employee[i]=new MonthWorker();
else if(i%3==2)
employee[i]=new YearWorker();
}
Company company=new Company(employee);
System.out.println("公司年工资总额:"+company.salariesPay());
}
}
2.运行结果
三、出现的问题
四、结论分析。

相关文档
最新文档