《JAVA实验报告》word版 本文关键词:实验,报告,JAVA,word
《JAVA实验报告》word版 本文简介:目录实验1Java语言基础实验2数组和字符串编程实验3Java面向对象程序设计实验4Java异常处理实验5多线程编程实验6图形用户界面编程实验7输入与输出实验8网络编程实验9数据库编程实验1Java语言基础一、实验目的和要求1.实验目的通过实验,掌握Java语言程序设计的基本方法。学会Java语言中
《JAVA实验报告》word版 本文内容:
目
录
实验1
Java语言基础
实验2
数组和字符串编程
实验3
Java面向对象程序设计
实验4
Java异常处理
实验5
多线程编程
实验6
图形用户界面编程
实验7
输入与输出
实验8
网络编程
实验9
数据库编程
实验1
Java语言基础
一、实验目的和要求
1.实验目的
通过实验,掌握Java语言程序设计的基本方法。
学会Java语言中标示符的命名、运算符和表达式的应用。
熟练地掌握Java程序流程控制语句的应用。
2.实验内容
1.编写应用程序,计算100(含100)以内所有偶数的和。
2.“水仙花数”是指一个3位数,其个位、十位、百位上的数字的立方和等于该数本身,例如371=33+73+13,因此371是一个水仙花数。编写程序,求所有的水仙花数。
3.编写一个程序,求1-100间的素数。
4.有一函数:
x
(x=1
space--)
System.out.print(““+““+““);
for(int
star=1;
star=1;
r--)
{for(int
space=4-r;
space>0;
space--)
System.out.print(““+““+““);
for(int
star=1;
starb){
return
a;
}else{
return
b;
}
}
public
Integer
minNum(int
a,int
b)
{
if(a>b){
return
b;
}else{
return
a;
}
}
public
static
void
main(String
[]args){
int
a=6,b=2,c=10;
question3
s=new
question3();
int
temp=s.maxNum(a,b);
int
temp1=s.maxNum(temp,c);
System.out.println(“The
MaxNum
is“+temp1);
int
temp2=s.minNum(a,b);
int
temp3=s.minNum(temp2,c);
System.out.println(“The
MinNum
is“+temp3);
}
}
5、
运行结果
实验4
Java异常处理
一、实验目的和要求
掌握异常的概念,以及如何定义、抛出和捕获处理异常。
二、实验内容和原理
(1)
做实验之前要求思考以下问题,作为预习内容;
错误和异常有何区别?查看Java异常类的关系图。
异常是如何抛出、捕获和处理的?
Java捕获和处理异常的结构式怎样的?
Try语句如何嵌套?Trow语句有何作用?Finally程序快的作用是什么?
1.(1)错误与异常的区别:
错误:指在程序编译时如果程序进入死循环,或递归无法结束,或内存溢出。错误只能在编程阶段解决,只能依靠其他程序干预,否则会一直处于非正常状态。
异常:指运算时除数为0,或操作数超过范围,或打开一个文件时发现文件并不存在,或欲装入的类文件丢失,或网络连接中断等。
(2)
java提供了一种利用简单易行的方法检查和处理运行时产生的错误的异常处理机制,它是通过面向对象的方法来处理异常的。在java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。生成的异常对象将
传递给java运行时系统,这一异常的产生和提交过程成为抛弃异常。当java运行时系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这类异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获异常。
(3)
根据程序对错误与异常的处理方式,可以将java中的异常分为Error类,RuntimeException
类和Exception类。其中Error类包括的是一些严重的程序不能处理的系统错误类,如内存溢出,虚拟机错误,栈溢出等。这类错误一般主要与硬件有关,与程序本身无关,通常由系统进行处理,程序本身无需去捕获和处理。程序运行过程中,可能出现RuntimeException类的异常数量相当大,对于运行时的异常类,如数组越界,算术异常等,应通过程序尽量避免而不是去捕获它。
(4)
为了避免程序运行时可能出现的错误,将程序代码放在
try程序块中,紧跟在try语句后面包括一个catch语句,用来指定需要捕获的异常类型。在程序中发生异常时,程序员可以抛出(throw)一个自定义异常类的实例,将其放到异常列中去,并激活java的异常处理机制。当抛出一个异常时,程序的执行就不再是线性的,这样就有可能导致方法的执行中断。在java语言中,使用finally语句来解决此类问题。Finally语句创建一个代码块,在try/catch语句执行后执行,不管是否抛出一个异常,系统都将执行finally
语句的程序代码。
(2)
运行下面的程序,理解异常的抛出、捕获与处理。
Import
java.io.*;
public
class
void
main(String
args[]){
public
static
void
main(String
args[]){
for(int
i=0;ithis.balance){
throw
new
InsufficientFundsException();
}
this.balance-=money;
}
public
void
process(boolean
save,double
money)
{
if(save)
{
System.out.println(“你的余额为:“+balance);
}
else
{
try{
double
left
=
withdrawl(money);
}
catch(InsufficientFundsException
e)
{
}
}
}
public
class
Bank
{
public
static
void
main(String
args[]){
Account
a=new
Account(“****“,400);
System.out.println(“账户余额为“+a.getbalance()+“元“);
a.deposit(500);
System.out.println(“你存入“+a.getbalance()+“元“);
System.out.println(“账户余额为“+a.getbalance()+“元“);
a.withdrawl(300);
}
}
三、主要仪器设备
Eclipe
四、实验数据记录和处理
这些实验很难,我觉得要真正掌握这一部分内容确实不是那么容易,所以以后我更应该多去尝试新的题型,希望能彻底把这一部分给掌握了,以至于使所编写的程序更加健壮,完美。
实验5
多线程编程
一、实验目的和要求
(1)
现成的概念、线程的生命周期。
(2)
多线程的编程:扩展Thread类与使用Runnable接口。
(3)
使用多线程机制实现动画
二、实验内容和原理
(1)
运行下面的程序,理解用创建Thread子类的方法实现多线程。
//S09_01_Thread.Java
Import
java.util.*;
class
S09_01_Thread
extends
Thread
{
int
pauseTime;
String
name;
public
S09_01_Thread(int
x,String
n){
pauseTime=x;
name=n;
}
public
void
run(){
while(true){
try{
system.out.println(name+“:“+new
Date(System.currentTimeMillis()));
Tread.sleep(pauseTime);
}catch(Exception
e){System.out.println(e);}
}
}
static
public
void
main(String
srgs[]){
S09_01_Thread
tp1=new
S09_01_Thread(1000,“Fast“);
tp1.start();
S09_01_Thread
tp2=new
S09_01_Thread(3000,“Slow“);
tp2.start();
}
}
(2)
运行下面的程序,理解用实现Runnable接口的方法实现多线程。
//S09_02_Thread.Java
Import
java.util.*;
class
S09_02_Thread
implements
Runnable
{
int
pauseTime;
String
name;
public
S09_02_Thread(int
x,String
n){
pauseTime=x;
name=n;
}
public
void
run(){
while(true){
try{
system.out.println(name+“:“+new
Date(System.currentTimeMillis()));
Tread.sleep(pauseTime);
}catch(Exception
e){System.out.println(e);}
}
}
static
public
void
main(String
srgs[]){
Thread
t1=new
Thread(new
S09_02_Thread(1000,“Fast“));
t1.start();
Thread
t2=new
Thread(new
S09_02_Thread(3000,“Slow“));
t2.start();
}
}
(3)
创建简单的程序ThreeThread.java,该程序将创建三个线程,每个线程应当显示它所运行的时间(可以考虑使用Date类或Calendar类)。
三、主要仪器设备
Eclipe
四、实验数据记录和处理
五、讨论、心得
说实话这一部分我是稀里糊涂的做完的,在做完这些实验之后我仍然是一知半解.在这一部分我需要多下点功夫多看看资料,来弥补我的不足.本章主要介绍了常见异常及异常处理的一般格式。在实验过程中,用try-catch-finally语句来捕获和处理异常,通过实验练习了该种方法的格式和具体应用。在实验时还通过throw和throws语句练习了异常的抛出。对于throw语句,throw自己主动抛出异常;而throws则在方法声明时抛出。掌握了通过Exception类及其子类创建自定义的异常类。
实验6
图形用户界面编程
一、实验目的和要求
掌握文本组件、按钮和单、复选按钮组件的使用;掌握列表的使用,鼠标、键盘事件的处理;掌握布局控制的方法。
二、实验内容和原理
(1)
编写一个Applet程序响应鼠标事件,当鼠标事件发生时,在状态条显示相应的时间信息。提示:使用showStatus(字符串)方法。
(2)
完成图6-1所示的GUI布局管理,不需要实现功能。
(3)
试设计一窗口,内含一个按钮。开始运行时,按钮显示“Click
Me”字样,当按钮按下时,按钮显示为“Click
Me
Again”字样,再按一次,则按钮显示“Click
Me”字样,依次循环。
(4)
仿照Windows
2000/XP系统提供扫雷游戏编写一个类似功能和界面的扫雷程序。
(5)
编写一个简易文本编辑器,参考界面如图6-2所示。
要求:包含基本的打开、保存、新建等功能。包含菜单,能够对文本的字体类型和颜色进行设置,力求界面美观。
三、主要仪器设备
Eclipe
四、实验数据记录和处理
1.package
shiyan6;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
javax.swing.ButtonGroup;
import
javax.swing.JButton;
import
javax.swing.JFrame;
import
javax.swing.JLabel;
import
javax.swing.JPanel;
import
javax.swing.JRadioButton;
public
class
L08_07
extends
JFrame{
private
JRadioButton
jrb1;
private
JRadioButton
jrb2;
private
JLabel
jlbl;
private
JPanel
jp;
private
JButton
jbtn;
private
String
jlstr;
private
ButtonGroup
bg;
public
L08_07(){
jlstr
=
“你选择的是:“;
this.setTitle(“实现单选按钮的效果“);
jrb1
=
new
JRadioButton(“是“);
jrb2
=
new
JRadioButton(“不是“);
bg
=
new
ButtonGroup();
bg.add(jrb1);
bg.add(jrb2);
jlbl
=
new
JLabel(jlstr);
jbtn
=
new
JButton(“OK“);
jbtn.addActionListener(new
ActionListener()
{
@Override
public
void
actionPerformed(ActionEvent
e)
{
//
TODO
Auto-generated
method
stub
System.exit(1);
}
});
jrb1.addActionListener(new
ActionListener()
{
@Override
public
void
actionPerformed(ActionEvent
e)
{
//
TODO
Auto-generated
method
stub
if(e.getSource()==jrb1){
jlbl.setText(jlstr+jrb1.getText());
}
}
});
jrb2.addActionListener(new
ActionListener()
{
@Override
public
void
actionPerformed(ActionEvent
e)
{
//
TODO
Auto-generated
method
stub
if(e.getSource()==jrb2){
jlbl.setText(jlstr+jrb2.getText());
}
}
});
jp
=
new
JPanel();
jp.add(jrb1);
jp.add(jrb2);
jp.add(jlbl);
jp.add(jbtn);
this.add(jp);
this.setBounds(300,300,230,200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public
static
void
main(String[]
args)
{
//
TODO
Auto-generated
method
stub
L08_07
rt
=
new
L08_07();
}
}
2.package
shiyan6;
import
java.awt.*;
import
java.awt.event.*;
import
javax.swing.*;
public
class
SY07_2
extends
JFrame{
//private
JPanel
panel1=new
JPanel();
//private
JPanel
panel2=new
JPanel();
private
JPanel
panel1_1=new
JPanel(new
GridLayout(4,1));
private
JPanel
panel1_2=new
JPanel(new
GridLayout(4,1));
private
JPanel
panel1_3=new
JPanel(new
GridLayout(5,1));
private
JPanel
panel1_4=new
JPanel(new
GridLayout(5,1));
private
JButton
button1_1=new
JButton(“Remove/“All
Files/“Filter“);
private
JButton
button1_2=new
JButton(“Add/“All
Files/“Filter“);
private
JButton
button2=new
JButton(“Show
FileChooser“);
private
JTextField
input=new
JTextField(“Dialog1“);
private
JCheckBox
chb1_1_1=new
JCheckBox(“Open“,false);
private
JCheckBox
chb1_1_2=new
JCheckBox(“Save“,false);
private
JCheckBox
chb1_1_3=new
JCheckBox(“Custom“,false);
private
JRadioButton
chb1_2_1=new
JRadioButton(“Default
Filtering“,false);
private
JRadioButton
chb1_2_2=new
JRadioButton(“Add
JPG
and
GIF
Filters“,false);
private
JCheckBox
chb1_3_1=new
JCheckBox(“Show
Hidden
Files“,false);
private
JCheckBox
chb1_3_2=new
JCheckBox(“Show
Extension“,false);
private
JCheckBox
chb1_3_3=new
JCheckBox(“Show
FileView“,false);
private
JCheckBox
chb1_3_4=new
JCheckBox(“Show
PreView“,false);
private
JCheckBox
chb1_3_5=new
JCheckBox(“Show
Control
Buttons“,false);
private
JRadioButton
chb1_4_1=new
JRadioButton(“Just
Select
Files
“,false);
private
JRadioButton
chb1_4_2=new
JRadioButton(“Just
Select
Directories“,false);
private
JRadioButton
chb1_4_3=new
JRadioButton(“Select
Files
or
Directories“,false);
private
JRadioButton
chb1_4_4=new
JRadioButton(“Single
Selection“,false);
private
JRadioButton
chb1_4_5=new
JRadioButton(“Multi
Selection“,false);
//private
JCheckBoxMenuItem
cbm2=new
JCheckBoxMenuItem();
private
JRadioButton
chb2_1=new
JRadioButton(“Metal“,false);
private
JRadioButton
chb2_2=new
JRadioButton(“Motif“,false);
private
JRadioButton
chb2_3=new
JRadioButton(“Windows“,false);
public
SY07_2(String
title){
super(title);
getContentPane().setLayout(new
BorderLayout(0,5));
getContentPane().setBackground(Color.gray);
panel1_1.setBackground(Color.gray);
panel1_2.setBackground(Color.gray);
panel1_3.setBackground(Color.gray);
panel1_4.setBackground(Color.gray);
JPanel
panel1=new
JPanel(new
GridLayout(1,4));
panel1_1.add(chb1_1_1);
panel1_1.add(chb1_1_2);
panel1_1.add(chb1_1_3);
panel1_1.add(input);
panel1_2.add(button1_1);
panel1_2.add(button1_2);
panel1_2.add(chb1_2_1);
panel1_2.add(chb1_2_2);
panel1_3.add(chb1_3_1);
panel1_3.add(chb1_3_2);
panel1_3.add(chb1_3_3);panel1_3.add(chb1_3_4);
panel1_3.add(chb1_3_5);panel1_4.add(chb1_4_1);
panel1_4.add(chb1_4_2);panel1_4.add(chb1_4_3);
panel1_4.add(chb1_4_4);panel1_4.add(chb1_4_5);
panel1.add(panel1_1);panel1.add(panel1_2);
panel1.add(panel1_3);panel1.add(panel1_4);
getContentPane().add(panel1,“Center“);
JPanel
panel2=new
JPanel(new
FlowLayout());
panel2.add(chb2_1);
panel2.add(chb2_2);
panel2.add(chb2_3);panel2.add(button2);
getContentPane().add(panel2,“South“);
//this.setVisible(true);
}
public
static
void
main(String[]
args)
{
SY07_2
frm=new
SY07_2(“FileChooserDemo“);
frm.setSize(500,220);
frm.setVisible(true);
frm.addWindowListener(new
WindowAdapter(){
public
void
windowClosing(WindowEvent
e){
System.exit(1);
}
});
}
}
3.package
shiyan6;
import
java.awt.*;
import
java.awt.event.*;
public
class
L08_03
extends
Frame
implements
MouseListener{
static
L08_03
frm=new
L08_03();
static
Button
btn=new
Button(“Click
Me“);
static
int
a=0;
public
static
void
main(String
args[]){
btn.addMouseListener(frm);
frm.setLayout(new
FlowLayout());
frm.setTitle(“按钮测试“);
frm.setSize(300,200);
frm.add(btn);
frm.setVisible(true);
}
public
void
mousePressed(MouseEvent
e){}
public
void
mouseReleased(MouseEvent
e){}
public
void
mouseExited(MouseEvent
e){}
public
void
mouseEntered(MouseEvent
e){}
public
void
mouseClicked(MouseEvent
e){
a++;
if((a%2)!=0)
btn.setLabel(“Click
Me
Again“);
else
btn.setLabel(“Click
Me“);
}
}
4.package
shiyan6;
import
java.
篇2:材料科学基础实验指导书
材料科学基础实验指导书 本文关键词:指导书,材料科学,实验,基础
材料科学基础实验指导书 本文简介:材工专业材料科学基础实验指导书材工《材料科学基础》实验指导书湖北工业大学材料科学与工程学院2013.3实验1淬冷法研究相平衡目的意义在实际生产过程中,材料的烧成温度范围、升降温制度,材料的热处理等工艺参数的确定经常要用到专业相图。相图的制作是一项十分严谨且非常耗时的工作。淬冷法是静态条件下研究系统状
材料科学基础实验指导书 本文内容:
材工专业材料科学基础实验指导书
材工《材料科学基础》实验指导书
湖北工业大学材料科学与工程学院
2013.3
实验1
淬冷法研究相平衡
目的意义
在实际生产过程中,材料的烧成温度范围、升降温制度,材料的热处理等工艺参数的确定经常要用到专业相图。相图的制作是一项十分严谨且非常耗时的工作。淬冷法是静态条件下研究系统状态图(相图)最常用且最准确的方法之一。掌握该方法对材料工艺过程的管理及新材料的开发非常有用。
本实验的目的:
1.
从热力学角度建立系统状态(物系中相的数目,相的组成及相的含量)和热力学条件(温度,压力,时间等)以及动力学条件(冷却速率等)之间的关系。
2.
掌握静态法研究相平衡的实验方法之一
──
淬冷法研究相平衡的实验方法及其优缺点。
3.
掌握浸油试片的制作方法及显微镜的使用,验证Na2O
—
SiO2系统相图。
基本原理
从热力学角度来看,任何物系都有其稳定存在的热力学条件,当外界条件发生变化时,物系的状态也随之发生变化。这种变化能否发生以及能否达到对应条件下的平衡结构状态,取决于物系的结构调整速率和加热或冷却速率以及保温时间的长短。
淬冷法的主要原理是将选定的不同组成的试样长时间地在一系列预定的温度下加热保温,使它们达到对应温度下的平衡结构状态,然后迅速冷却试样,由于相变来不及进行,冷却后的试样保持了高温下的平衡结构状态。用显微镜或X-射线物相分析,就可以确定物系相的数目、组成及含量随淬冷温度而改变的关系。将测试结果记入相图中相应点的位置,就可绘制出相图。
由于绝大多数硅酸盐熔融物粘度高,结晶慢,系统很难达到平衡。采用动态方法误差较大,因此,常采用淬冷法来研究高粘度系统的相平衡。
淬冷法是用同一组成的试样在不同温度下进行试验。样品的均匀性对试验结果的准确性影响较大。将试样装入铂金装料斗中,在淬火炉内保持恒定的温度,当达到平衡后把试样以尽可能快的速度投入低温液体中(水浴,油浴或汞浴),以保持高温时的平衡结构状态,再在室温下用显微镜进行观察。若淬冷样品中全为各向同性的玻璃相,则可以断定物系原来所处的温度(T1)在液相线以上。若在温度(T2)时,淬冷样品中既有玻璃相又有晶相,则液相线温度就处于T1和T2之间。若淬冷样品全为晶相,则物系原来所处的温度(T3)在固相线以下。改变温度与组成,就可以准确地作出相图。
淬冷法测定相变温度的准确度相当高,但必须经过一系列的试验,先由温度间隔范围较宽作起,然后逐渐缩小温度间隔,从而得到精确的结果。除了同一组成的物质在不同温度下的试验外,还要以不同组成的物质在不同温度下反复进行试验,因此,测试工作量相当大。
实验器材
1.
相平衡测试仪
实验设备包括高温炉、温度控制器、铂装料斗及其熔断装置等,如图1-1所示。
熔断装置为把铂装料斗挂在一细铜丝上,铜丝接在连着电插头的个两铁钩之间,欲淬冷时,将电插头接触电源,使发生短路的铜丝熔断,样品掉入水浴中淬冷。
2.偏光显微镜一套,如图1-2所示。
图1—1
仪器装置示意图
1-
高温炉电炉丝
2-
铬铝电偶
3-
熔断装置
4-
电插销5-
铂装料斗6-
电流表
7-温度控制器
8-
电炉底盖
9-
水浴杯
10-
高温炉
11-高温炉保温层
图1-2
偏光显微镜
放大倍数:40×~630×
可做单偏光观察、正交偏光观察、锥光观察及显微摄影
测试步骤
1.
试样制备
按Na2O
:2SiO2摩尔组成计算Na2O和SiO2的的重量百分数,以Na2CO3和SiO2进行配料,混合均匀,将该原料制成玻璃以得到组成均匀的样品。
2.
测试步骤
(1)
先将高温炉升温至750℃,恒温。
(2)
用细铜丝把两个铂金装料斗挂在熔断装置上(注意两挂钩不能相碰)。再把少量试样(0.01
~
0.02
g)装入铂金装料斗内,然后把样品放入高温炉中,盖好高温炉上下盖子。
(3)
在750℃保温30
min。将水浴杯放至炉底,打开高温炉下盖,把熔断装置的电插头接触电源(注意,稍一接触即可)使铜丝熔断,让样品掉入水中淬冷。
(4)
盖上电炉盖,升温至900℃,保温30
min,重复上述步骤淬冷样品。
(5)
取出铂金坩埚,放在高温炉的盖上,利用炉体温度烘干样品。
(6)
取下试样,在捣碎器内砸成粉末(注意,不能研磨),作成浸油试片。
(7)
在偏光显微镜下观察有无晶体析出,并与相图(见图1-3)相比较。
(8)
记录观察结果,写出实验报告。
图1-3
Na2O-SiO2系统相图
思
考
题
1.
用淬冷法研究相平衡有什么优缺点
?
2.
用淬冷法如何确定相图中的液相线和固相线
?
主要参考文献
[1]
孙庆凌、沈淑兰编,《硅酸盐物理化学》实验指导书,武汉工业大学,1992年。
[2]
浙江大学等编,《硅酸盐物理化学》,中国建筑工业出版社,1981年。
[3]
大连轻工业学院,《硅物化实验讲义》。
4
实验2
固相反应
目的意义
固相反应是材料制备中一个重要的高温动力学过程,固体之间能否进行反应、反应完成的程度、反应过程的控制等直接影响材料的显微结构,并最终决定材料的性质,因此,研究固体之间反应的机理及动力学规律,对传统和新型无机非金属材料的生产有重要的意义。
本实验的目的:
1.
掌握TG法的原理,熟悉采用TG法研究固相反应的方法。
2.
通过Na2CO3
-
SiO2系统的反应验证固相反应的动力学规律
─
杨德方程。
3.
通过作图计算出反应的速度常数和反应的表观活化能。
基本原理
固体材料在高温下加热时,因其中的某些组分分解逸出或固体与周围介质中的某些物质作用使固体物系的重量发生变化,如盐类的分解、含水矿物的脱水、有机质的燃烧等会使物系重量减轻,高温氧化、反应烧结等则会使物系重量增加。热重分析法(thermogravimetry,简称TG法)及微商热重法(derivative
thermogravimetry,简称DTG法)就是在程序控制温度下测量物质的重量(质量)与温度关系的一种分析技术。所得到的曲线称为TG曲线(即热重曲线),TG曲线以质量为纵坐标,以温度或时间为横坐标。微商热重法所记录的是TG曲线对温度或时间的一阶导数,所得的曲线称为DTG曲线。现在的热重分析仪常与微分装置联用,可同时得到TG
-
DTG曲线。通过测量物系质量随温度或时间的变化来揭示或间接揭示固体物系反应的机理和/或反应动力学规律。
固体物质中的质点,在高于绝对零度的温度下总是在其平衡位置附近作谐振动。温度升高时,振幅增大。当温度足够高时,晶格中的质点就会脱离晶格平衡位置,与周围其它质点产生换位作用,在单元系统中表现为烧结,在二元或多元系统则可能有新的化合物出现。这种没有液相或气相参与,由固体物质之间直接作用所发生的反应称为纯固相反应。实际生产过程中所发生的固相反应,往往有液相和/或气相参与,这就是所谓的广义固相反应,即由固体反应物出发,在高温下经过一系列物理化学变化而生成固体产物的过程。
固相反应属于非均相反应,描述其动力学规律的方程通常采用转化率G(已反应的反应物量与反应物原始重量的比值)与反应时间t之间的积分或微分关系来表示。
测量固相反应速率,可以通过TG法(适应于反应中有重量变化的系统)、量气法(适应于有气体产物逸出的系统)等方法来实现。本实验通过失重法来考察Na2CO3
-
SiO2系统的固相反应,并对其动力学规律进行验证。
Na2CO3
-
SiO2系统固相反应按下式进行:
Na2CO3
+
SiO2
?
Na2SiO3
+
CO2
↑
恒温下通过测量不同时间t时失去的CO2的重量,可计算出Na2CO3的反应量,进而计算出其对应的转化率G,来验证杨德方程:
[
1-(1-G)1
/
3
]
2
=
Kj
t
的正确性。式中,Kj
=
Aexp(-Q
/
RT)为杨德方程的速度常数,Q为反应的表观活化能。改变反应温度,则可通过杨德方程计算出不同温度下的Kj和Q。
实验器材
1.
设备仪器
[1]
普通热天平(PRT-1型热天平)
普通热天平由四个单元构成,即天平单元,加热单元,气路单元,温度控制单元。
[2]微量热天平(WRT-2型热天平)
图3-1
热天平原理图
1-
机械减码
2-
吊丝系统
3-
密封管
4-
进气口
5-
加热丝
6-
样品盘
7-
热电偶
8-
光学读数
9-
出气口
10-
样品
11-
管状电阻炉
12-
温度控制与显示单元
微量热天平由五个单元构成,即天平单元,加热单元,气路单元,温度控制单元,自动记录单元。
2.
材料
铂金坩埚一只,不锈钢镊子两把,实验原料(化学纯NaCO3一瓶,SiO2一瓶)。
测试步骤
1.样品制备
1
将NaCO3(化学纯)和SiO2(含量99.9
%)分别在玛瑙研钵中研细,过250目筛。
2
SiO2的筛下料在空气中加热至800℃,保温5
h,NaCO3筛下料在200℃烘箱中保温4
h。
3
把上述处理好的原料按NaCO3
:SiO2
=
1
:1摩尔比配料,混合均匀,烘干,放入干燥器内备用。
3.
测试步骤
4.
开冷却水龙头,水量应适中。
5.
接通电炉电源,按预定的升温速率升温,大约10~20℃/min,达到700℃时保温5
min后待测。(温度控制器操作方法参考淬冷法研究相平衡实验中的附注)
6.
称量样品,记录天平零点读数;铂金坩埚放入PRT-1型天平左盘,记录读数;取出坩埚,装入大约0.5
g的样品,再记录天平读数。
7.
将装有样品的坩埚挂在热天平的挂钩上,提升电炉至限位点后固定住电炉。
8.
坩埚置入炉内的同时记录时间,以后每隔3~5
min记录一次时间和重量,记录5~7次数据。
9.
取出坩埚,倒去废样,重新装样,进行750℃的测试。
10.
实验完毕,取出坩埚,将实验工作台物品复原。
数据处理
以下表方式记录实验数据,做
[
1-(1-G)1
/
3
]
2
~
t
图,通过直线斜率求出反应的速度常数Kj
。通过Kj求出反应的表观活化能Q
。
表3-1
实验数据记录
反应时间
t(min)
坩埚与样品重量W1(g)
CO2累计失重量W2(g)
Na2CO3转化率G
[1-(1-G)1/3
]2
Kj
思
考
题
1
温度对固相反应速率有何影响?其它影响因素有哪些
?
2本实验中失重规律怎样
?请给予解释
。
3
影响本实验准确性的因素有哪些
?
主要参考文献
[1]
[日]
日本化学协会编,董万堂,董绍俊
译.《无机固态反应》.科学出版社.1985年。
[2]
浙江大学等编.《硅酸盐物理化学》.中国建筑工业出版社.1981年。
[3]
孙庆凌,沈淑兰编.《硅酸盐物理化学》实验指导书.武汉工业大学.1992年。
126
实验4
组温特性测定
导电材料,尤其是半导体陶瓷材料其导电率温度之间有很强的依赖关系,我们常常可以利用这种变化关系,把这类材料应用在不同的领域。因此,弄清材料导电率随温度的变化规律,可为材料的实际应用提供理论基础。
实验目的:
1、
弄清材料导电率岁温度变化的机理。
2、
掌握材料组温曲线的测绘方法。
基本原理
电阻-温度特性常简称为阻温曲线,指在规定的电压下,电阻器的零功率电阻值与电阻体温度之间的关系。
零功率电阻值是在某一规定的温度下测量电阻器的电阻值,测量时应保证该电阻的功耗引起的电阻值的变化达到可以忽略的程度。
实验器材:
电阻温度特性测定仪
测试步骤
。。。。。。。。。。。。。。。
1、
将被测材料放到测试棒上,并盖上炉盖,
2、
打开电源开关
3、
根据被测的电阻值选择合适的电阻值乘和升温速率,仪表显示温度值和电阻值
4、
打开工作开关,加热炉开始升温,
5、
记录温度和电阻的对应值
6、
温度升至需要的试样温度,关闭工作开关和电源开关。
实验完毕
数据处理
1、
数据记录
这组实验数据有108对,限于篇幅,这里只列几对数据表示:
温度℃
27
32
37
42
47
52
57
62
67
72
…
电阻R
16.6
16.7
17
17.3
17.1
18.2
18.8
19.5
20.4
21.5
…
Log
R
1.2201
1.2227
1.2380
1.2380
1.2601
1.2742
1.2900
1.3096
1.2380
1.2601
…
2、
绘制阻-温曲线
用实验数据在直角毫米坐标纸上做图,得“温度~log
R”关系曲线。用Excel作图结果如下所示。
3、
确定材料的电阻器的最大电阻值,最小电阻值。
在Excel中进行查询,最大电阻为1.61E+07,最小电阻为16.6
4、
电阻温度系数的计算
对室温~100℃的数据,用Excel作图,如下图,并进行线性拟合得温度t时电阻变化的百分率:
温度t时电阻变化的平均百分率按下式计算:
影响因素
1、
试样加工时不仅要表面平整,还要注意使两表面平行,否则试样装在电极上时,会因接触不良而影响测定结果。
2、
在电极上时装试样,要注意试样夹持的力度。为了使实验结果有重复性和可比性,装每快试样的夹持粒度应大致相同。
3、
有的试样经加热后,电阻值有突变点,在电阻值突变点附近,应增加记录密度,以便画出圆滑的曲线。
篇3:软件工程实验心得体会范本
软件工程实验心得体会范本 本文关键词:软件工程,心得体会,实验,范本
软件工程实验心得体会范本 本文简介:软件工程实验心得体会范本经过这学期软件工程实验的学习,深深感到用户需求对软件的重要性。成功的软件产品是建立在成功的需求基础之上的,而高质量的需求来源于用户与开发人员之间有效的沟通与合作。当用户有一个问题可以用计算机系统来解决,而开发人员开始帮助用户解决这个问题,沟通就开始了。需求获取可能是最困难、最
软件工程实验心得体会范本 本文内容:
软件工程实验心得体会范本
经过这学期软件工程实验的学习,深深感到用户需求对软件的重要性。成功的软件产品是建立在成功的需求基础之上的,而高质量的需求来源于用户与开发人员之间有效的沟通与合作。当用户有一个问题可以用计算机系统来解决,而开发人员开始帮助用户解决这个问题,沟通就开始了。
需求获取可能是最困难、最关键、最易出错及最需要沟通交流的活动。对需求的获取往往有错误的认识:用户知道需求是什么,我们所要做的就是和他们交谈从他们那里得到需求,只要问用户系统的目标特征,什么是要完成的,什么样的系统能适合商业需要就可以了,但是实际上需求获取并不是想象的这样简单,这条沟通之路布满了荆棘。首先需求获取要定义问题范围,系统的边界往往是很难明确的,用户不了解技术实现的细节,这样造成了系统目标的混淆。
其次是对问题的理解,用户对计算机系统的能力和限制缺乏了解,任何一个系统都会有很多的用户或者不同类型的用户,每个用户只知道自己需要的系统,而不知道系统的整体情况,他们不知道系统作为一个整体怎么样工作效率更好,也不太清楚那些工作可以交给软件完成,他们不清楚需求是什么,或者说如何以一种精确的方式来描述需求,他们需要开发人员的协助和指导,但是用户与开发人员之间的交流很容易出现障碍,忽略了那些被认为是“很明显“的信息。最后是需求的确认,因为需求的不稳定性往往随着时间的推移产生变动,使之难以确认。为了克服以上的问题,必须有组织的执行需求的获取活动。
需求获取活动要完成的任务或者步骤的过程如下:
1、编写项目视图和范围文档
系统的需求包括四个不同的层次:业务需求、用户需求和功能需求、非功能性需求。业务需求说明了提供给用户新系统的最初利益,反映了组织机构或用户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
非功能性需求是用户对系统良好运作提出的期望,包括了易用性、反应速度、容错性、健壮性等等质量属性。需求获取就是根据系统业务需求去获得系统用户需求,然后通过需求分析得到系统的功能需求和非功能需求。项目视图和范围文档就是从高层次上描述系统的业务需求,应该包括高层的产品业务目标,评估问题解决方案的商业和技术可行性,所有的使用实例和功能需求都必须遵从的标准。而范围文档定义了项目产品所包括的所有工作及产生产品所用的过程。项目相关人员对项目的目标和范围能达成共识,整个项目组都应该把注意力集中在项目目标和范围上。
2、用户群分类
系统用户在很多方面存在着差异,例如:使用系统的频度和程度、应用领域和计算机系统知识、所使用的系统特性、所进行的业务过程、访问权限、地理上的布局以及个人的素质和喜好等等。根据这些差异,你可以把这些不同的用户分成不同的用户类。与ULM中Usecase的Actor概念一样,用户类不一定都指人,也可以包括其他应用系统、接口或者硬件,这样做使得与系统边界外的接口也成为系统需求。将用户群分类并归纳各自特点,并详细描述出它们的个性特点及任务状况,将有助于需求的获取和系统设计。
3、建立核心队
通常用户和开发人员不自觉的都有一种“我们和他们“的想法,产生一种对立关系,把彼此放在对立面,每一方都定义自己的“边界“,只想自己的利益而忽略对方的想法。他们通过文档、记录和对话来沟通,而不是作为一个合作的整体去识别和确定需求完成任务。实践证明这样的方法是不正确的,不会给双方带来一点益处,良好的沟通关系没有建立导致了误解和忽略重要的信息。只有当双方参与者都明白要成功自己需要什么,同时也知道要成功对方需要什么时,才能建立起一种合作关系。
为了建立合作关系通常采取一种组队的方式来获取需求,建立一个由用户代表和开发人员组成的联合小组作为需求获取的核心队伍。联合小组将负责识别需求、分析解决方案和协商分歧,小组成员可以采用会议、电子邮件、综合办公系统等方式进行交流,但交流时应注意以下原则:小组会议应该由中立方来组织和主持,用户和开发人员都要参加;交流预先要确定准备和参与的规则;议题要明确并覆盖所有关键点,但信息来源应该自由;交流目标要明确,并告知所有的成员。
4、确定使用实例
从用户代表处收集他们将使用系统完成所需任务的描述,讨论用户与系统间的交互方式和对话要求,这就是使用实例,一个单一的使用实例可能包括完成某项任务的许多逻辑相关任务和交互顺序。使用实例方法给需求获取带来的好处来自于该方法是用以任务为中心和以用户为中心的观点,比起使用以功能为中心和以开发者为中心的方法,使用实例方法可以使用户更清楚地理解和认识到新系统允许他们做什么和怎么做。描写使用实例的时候要注意使用简洁直白的表述,尽量使用主动语态,用“系统“或者“用户“作为主语,比如“用户提交用户密码,系统验证用户密码是否正确“,还有一点在描述中不要设计界面细节,比如“用户从下拉框中选择产品类型“。使用实例为以后写用例场景描述中的基本路径和扩展路径提供了素材。
5、分析用户工作流程
分析用户工作流程观察用户执行业务任务的过程,通过分析使用实例得到系统的用例图。编制用例图文档将有助于明确系统的使用实例和功能需求,统一建模语言的使用有助于与用户进一步交流。每个用例的描述应包括:编号,为每个用例分配一个唯一的编号,为需求的追溯提供了方便;参与者,与这个用例交互的
actor;前置条件,开始用例前所必须具备的系统状态;后置条件,用例完成后系统达到的状态;基本路径,用例完成的关键路径,也是用户期望的路径;扩展点,基本路径的分枝,表示意外情况;字段说明,路径中名称的进一步分解说明,对以后类属性的定义和数据库字段设计起作用;设计约束,实现用例的非功能约束。
6、检查问题报告
通过检查当前已经运行系统的问题报告来进一步完善需求客户的问题报告及补充需求为新系统或新版本提供了大量丰富的改进及增加特性的想法,负责提供用户支持及帮助的人能为收集需求过程提供极有价值的信息。
7、需求重用
如果客户要求的功能与已有的系统很相似,则可查看需求是否有足够的灵活性以允许重用一些已有的软件组件。业务建模和领域建模式需求重用的最好方法,像分析模式和设计模式一样,需求也有自己的模式。
总结
:经过一学期的软工实验,深刻感到其重要性的同时也学到了不少的东西
,将对我在今后的软件开发过程中起极大的作用。