网络通信实验报告(实验1…7)

网络通信实验报告(实验1…7)
网络通信实验报告(实验1…7)

网络通信程序设计课程设计

班级: 12网络

姓名:

学号:

评分标准

序号内容分值得分

1 程序源码30分

2 封面和目录5分

3 编程内容概述5分

4 编程环境5分

5 编程实验过程10分

6 编程技术点30分

7 总结展望5分

8 文档的写作文笔与格式规范10分

评分总分

目录

1、引言 .......................................................................................................................................

1.1引言………………………………………………………………………………………………….

1.2实验环境…………………………………………………………………………………………….

2、网络编程基础实验......................................................................

2.1编程目的.........................................................................................................................

2.2要求和编程技术点........................................................................................................

2.3程序关键代码................................................................................................................

2.4运行结果........................................................................................................................

3、面向socket编程 .........................................................................................................

3.1.socket设计要求和编程技术点..................................................................................

3.2.程序修改的功能...........................................................................................................

3.3.程序代码:...................................................................................................................

3.4.运行结果:...................................................................................................................

4、基于UDP的网络编程 ...................................................................................................

4.1.UDP设计要求和编程技术点........................................................................................

4.2.程序修改的功能...........................................................................................................

4.3.程序修改以及代码:...................................................................................................

4.4.运行结果:...................................................................................................................

5、基于协议的网络编程 ...................................................................................................

5.1.网络协议设计要求与编程技术点...............................................................................

5.2.程序修改的功能...........................................................................................................

5.3. 程序代码……………………………………………………………………………

5.4. 运行结果……………………………………………………………………………

6、组播编程 .......................................................................................................................

6.1.实验要求与编程技术点...............................................................................................

6.2.程序修改的功能...........................................................................................................

6.3.程序修改以及代码:...................................................................................................

6.4.运行结果:...................................................................................................................

7、心得体会 .......................................................................................................................

1、引言

1.1引言

网络编程简单的理解就是两台计算机相互通讯数据,通过使用套接字来达到进程间通信目的编程就是网络编程。网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理。

网络通讯程序设计这门课程采用Java语言进行程序编写,Java突出的优点是通过预定义的库可以实现很强的功能,而不需要程序员做很多的事情。对于Java而言,这些Socket的Api存在与https://www.360docs.net/doc/4a4604523.html, 这个包里面,因此只要导入这个包就可以准备网络编程了, Socket、UDP、组播、协议就是网络编程技术的一部分。这门课程的课程设计就从socket、UDP、组播、协议几个方面分别进行编写一些简单的例子。

1.2编程环境

一台PC,Windowxp系统,Netbeans6软件

2、网络编程基础实验

2.1编程目的

①学会基于NetBeans6编写JAVA程序;

②掌握基础的I/O流编程技术;

③掌握基于Thread类编程的具体应用。

2.2要求和技术点

要求:

①建立一个独立的文件管理编程的JAVA工程;

②能正确运行且能实现文件管理程序;

③对文件管理程序的功能进行拓广,使用Thread类实现文件管理。

编程技术点:

①基于NetBeans6编写JAVA程序;

②I/O流编程技术;

③Thread类编程的具体应用。

2.3程序关键代码

1/ioTest.java

import java.io.File;

import java.io.IOException;

/**

* @author Administrator

*/

public class ioTest {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

String s_FileName = "d:/test.txt";

String s_DFileName = "d:/test1.txt";

new ioTest().copy(s_FileName, s_DFileName);

}

public boolean mkdirectory(String dir){

File file =new File(dir);

//如果文件夹不存在则创建

if (!file.exists() && !file .isDirectory()) {

System.out.println("//不存在");

file.mkdir();

return true;

} else {

System.out.println("//目录已存在");

return false;

}

}

public void copy(String source, String target) {

try {

WeiInputStream wis = new WeiInputStream(source);

WeiOutputStream wos = new WeiOutputStream(target);

// 复制文件

int b;

while((b = wis.read()) != -1) {

wos.write(b);

}

wis.close();

wos.close();

} catch (IOException e) {

System.err.println(e);

}

}

}

2/newjframe.java

源目录:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser chooser = new JFileChooser();

// chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

if (ret == JFileChooser.APPROVE_OPTION) {

File dir = chooser.getSelectedFile();

String s = dir.getPath();

jTextField1.setText(s);

} // dir is the selected directory}

}

目标目录

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

JFileChooser chooser = new JFileChooser();

chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

int ret = chooser.showOpenDialog(null);

if (ret == JFileChooser.APPROVE_OPTION) {

File dir = chooser.getSelectedFile();

String s = dir.getPath();

jTextField2.setText(s);

}

}

复制:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String s1 = jTextField1.getText();

String s2 = jTextField2.getText();

if (s1.length() > 0 && s2.length() > 0) {

new ioTest().copy(s1, s2);

}

}

}

3/weiinputstream.java

import java.io.*;

/**

* @author Administrator

*/

public class WeiInputStream {

private String fileName;

private FileInputStream fileInputStream;

private BufferedInputStream bufferedInputStream;

public WeiInputStream(String fileName) {

this.fileName = fileName;

try {

//定义输入流

fileInputStream = new FileInputStream(fileName);

} catch (IOException e) {

System.err.println(e);

}

}

public int read() throws IOException {

return bufferedInputStream.read();

}

public void close() throws IOException {

bufferedInputStream.close();

}

}

4/weioutputstream.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

import java.io.*;

/**

* @author Administrator

*/

public class WeiOutputStream {

private String fileName;

private FileOutputStream fileOutputStream;

private BufferedOutputStream bufferedOutputStream;

private DataOutputStream dataOutputStream;

public WeiOutputStream(String fileName) {

this.fileName = fileName;

try {

//定义输出流

fileOutputStream = new FileOutputStream(fileName);

bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

dataOutputStream = new DataOutputStream(bufferedOutputStream);

} catch (IOException e) {

System.err.println(e);

}

}

public void write(int b) throws IOException {

dataOutputStream.write(b);

}

public void close() throws IOException {

dataOutputStream.close();

}

}

2.4运行结果

3、面向socket编程

3.1.socket设计要求和编程技术点

要求:

①建立两个独立的面向SOCKET编程的JAVA工程,用于服务器和客户端系统;

②建立SOCKET的JAVA类,并能正确运行且能实现SOCKET通信;

③对JAVA类的功能进行拓广,使SOCKET用于某一具体的应用。

技术点:

①SOCKET的接受连接和监听数据

②.socket编程的一对一与一对多通信

③对JAVA类的功能进行拓广,使SOCKET用于某一具体的应用

3.2.程序修改的功能

①实现界面图形化:客户端实现界面图形化,服务端则没有界面图形化。

②实现客户端能够即时聊天功能:当打开server端后,运行两个客户端,便可进行即

时聊天,聊天记录没有保存,没有显示IP,只能进行简单的聊天。每当一个客户端连接上时,服务端会显示“a client connected!”,当每一个客户端退出时,便会显示“client closed!”

3.3.程序关键代码:

3.3.1服务端—ChatServer的代码:

import java.io.*;

import https://www.360docs.net/doc/4a4604523.html,.*;

import java.util.*;

boolean started = false;

ServerSocket ss = null;

List clients = new ArrayList();

public static void main(String[] args) {

new ChatServer().start();

}

public void start() {

try {

ss = new ServerSocket(8888);

started = true;

} catch (BindException e) {

System.out.println("端口使用中....");

System.out.println("请关掉相关程序并重新运行服务器!");

System.exit(0);

} catch (IOException e) {

e.printStackTrace();

}

try {

while(started) {

Socket s = ss.accept();

Client c = new Client(s);

System.out.println("a client connected!");

new Thread(c).start();

clients.add(c);

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

ss.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

class Client implements Runnable {

private Socket s;

private DataInputStream dis = null;

private DataOutputStream dos = null;

private boolean bConnected = false;

public Client(Socket s) {

try {

dis = new DataInputStream(s.getInputStream());

dos = new DataOutputStream(s.getOutputStream());

bConnected = true;

} catch (IOException e) {

e.printStackTrace();

}

}

public void send(String str) {

try {

dos.writeUTF(str);

} catch (IOException e) {

clients.remove(this);

System.out.println("对方退出了!我从List里面去掉了!");

}

}

public void run() {

try {

while(bConnected) {

String str = dis.readUTF();

System.out.println(str);

for(int i=0; i

Client c = clients.get(i);

c.send(str);

}

}

} catch (EOFException e) {

System.out.println("Client closed!");

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if(dis != null) dis.close();

if(dos != null) dos.close();

if(s != null) {

s.close();

}

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

3.3.2客户端—ChatClient代码:

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import https://www.360docs.net/doc/4a4604523.html,.*;

public class ChatClient extends Frame {

Socket s = null;

DataOutputStream dos = null;

DataInputStream dis = null;

private boolean bConnected = false;

TextField tfTxt = new TextField();

TextArea taContent = new TextArea();

Thread tRecv = new Thread(new RecvThread());

public static void main(String[] args) {

new ChatClient().launchFrame();

}

public void launchFrame() {

setLocation(400, 300);

this.setSize(300, 300);

add(tfTxt, BorderLayout.SOUTH);

add(taContent, BorderLayout.NORTH);

pack();

this.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent arg0) {

disconnect();

System.exit(0);

}

});

tfTxt.addActionListener(new TFListener());

setVisible(true);

connect();

tRecv.start();

}

s = new Socket("127.0.0.1", 8888);

dos = new DataOutputStream(s.getOutputStream());

dis = new DataInputStream(s.getInputStream());

System.out.println("connected!");

bConnected = true;

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public void disconnect() {

try {

dos.close();

dis.close();

s.close();

} catch (IOException e) {

e.printStackTrace();

}

}

private class TFListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

String str = tfTxt.getText().trim();

tfTxt.setText("");

try {

dos.writeUTF(str);

dos.flush();

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

private class RecvThread implements Runnable {

public void run() {

try {

while(bConnected) {

String str = dis.readUTF();

taContent.setText(taContent.getText() + str + '\n');

} catch (SocketException e) {

System.out.println("退出了,bye!");

} catch (EOFException e) {

System.out.println("退出了,bye - bye!");

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

3.4.运行结果:

①运行服务端,接着运行客户端,多个客户端互发信息,运行显示如下:

图2-1 启动程序运行效果

②关闭客户端后关闭服务端,运行结果如下:

图2-2 关闭程序后显示结果

4、基于UDP的网络编程

4.1.UDP设计要求和编程技术点

要求:

①建立两个独立的基于UDP编程的JAVA工程,用于服务器和客户端系统;

②建立UDP的JAVA类,并能正确运行且能实现数据报通信;

③对JAVA类的功能进行拓广,使基于UDP编程用于某一具体的应用。

技术点:

① UDP编程的主要三个类(DatagramPacket,DatagramSocket,MulticastSocket)

② UDP编程的通信流程中接收端与发送端的差异性。

4.2.程序修改的功能

①实现界面图形化

②能手动输入对方IP,跟对方建立聊天

③实现客户端实时聊天功能,能够互发信息,聊天消息能显示对方IP地址和对方名字

4.3.程序修改以及代码:

UDP_A:

import https://www.360docs.net/doc/4a4604523.html,.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class A extends JFrame implements Runnable, ActionListener {

JTextField outmessage = new JTextField(30);

JTextField name = new JTextField(12);

JTextArea inmessage = new JTextArea(12, 20);

JButton b = new JButton("发送");

JTextField add = new JTextField(30);

A() {

super("UDP聊天");

setBounds(500, 100, 400, 400);

setVisible(true);

Box a = Box.createVerticalBox();

Box c = Box.createHorizontalBox();

Box p = Box.createHorizontalBox();

Box h = Box.createHorizontalBox();

b.addActionListener(this);

p.add(new JLabel("你的名字:"));

p.add(name);

p.add(outmessage);

p.add(b);

a.add(p);

a.add(c);

a.add(h);

Container con = getContentPane();

con.add(new JScrollPane(inmessage), BorderLayout.CENTER);

con.add(a, BorderLayout.SOUTH);

Thread thread = new Thread(this);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

validate();

thread.start();

public void actionPerformed(ActionEvent event) {

if (event.getSource() == b) {

String s;

s = name.getText() + " said: " + outmessage.getText();

byte[] b = s.trim().getBytes();

try {

InetAddress address = InetAddress.getByName(add.getText().trim());

DatagramPacket data = new DatagramPacket(b, b.length, address, 8989);

DatagramSocket mail = new DatagramSocket();

mail.send(data);

inmessage.append("You said: " + outmessage.getText()+'\n');

outmessage.setText(null);

outmessage.requestFocus();

} catch (Exception e) {

}

}

}

public void run() {

DatagramPacket pack = null;

DatagramSocket mail = null;

byte[] b = new byte[5689];

try {

pack = new DatagramPacket(b, b.length);

mail = new DatagramSocket(8787);

} catch (Exception e) {

}

while (true) {

try {

mail.receive(pack);

String message = new String(pack.getData(), 0, pack.getLength());

inmessage.append(message+'\n');

} catch (Exception e) {

}

}

}

public static void main(String[] args) {

A a = new A();

}

}

UDP_B:

import java.awt.*;

import https://www.360docs.net/doc/4a4604523.html,.*;

import java.awt.event.*;

public class B extends JFrame implements Runnable, ActionListener { JTextField outmessage = new JTextField(30);

JTextField name = new JTextField(12);

JTextArea inmessage = new JTextArea(12, 20);

JButton b = new JButton("发送");

JTextField add = new JTextField(30);

B() {

super("UDP聊天");

setBounds(200, 100, 400, 400);

setVisible(true);

Box a = Box.createVerticalBox();

Box c = Box.createHorizontalBox();

Box p = Box.createHorizontalBox();

Box q = Box.createHorizontalBox();

b.addActionListener(this);

p.add(new JLabel("你的名字"));

p.add(name);

p.add(outmessage);

p.add(b);

// q.add(l);

a.add(p);

a.add(c);

a.add(q);

Container con = getContentPane();

con.add(new JScrollPane(inmessage), BorderLayout.CENTER);

con.add(a, BorderLayout.SOUTH);

Thread thread = new Thread(this);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

validate();

thread.start();

}

public void actionPerformed(ActionEvent event) {

if (event.getSource() == b) {

String s;

s = name.getText() + " said: " + outmessage.getText();

byte[] b = s.trim().getBytes();

try {

DatagramPacket data = new DatagramPacket(b, b.length, address, 8787);

DatagramSocket mail = new DatagramSocket();

mail.send(data);

inmessage.append('\n'+"You said: " + outmessage.getText());

outmessage.setText(null);

outmessage.requestFocus();

} catch (Exception e) {

}

}

// else if (event.getSource() == l) {

// F u = new F();

// }

}

public void run() {

DatagramPacket pack = null;

DatagramSocket mail = null;

byte[] b = new byte[5689];

try {

pack = new DatagramPacket(b, b.length);

mail = new DatagramSocket(8989);

} catch (Exception e) {

}

while (true) {

try {

mail.receive(pack);

String message = new String(pack.getData(), 0, pack.getLength());

//inmessage.append("Data came from:" + pack.getAddress());

inmessage.append('\n'+message);

} catch (Exception e) {

}

}

}

public static void main(String[] args) {

B b = new B();

}

}

4.4.运行结果:

5、基于协议的网络编程

5.1.网络协议设计要求和编程技术点

要求:

①建立一个的基于协议编程的JAVA工程;

②建立协议编程的JAVA类,并能正确运行且能实现协议通信;

③对JAVA类的功能进行拓广,使基于协议编程用于某一具体的应用。

技术点:

①网络协议的基本要求

②基于协议编程的设计思路和技术

③基于协议编程的具体应用

5.2.程序修改的功能

①修改协议。

5.3.程序修改以及代码:

package Protocol;

import java.io.*;

import https://www.360docs.net/doc/4a4604523.html,.*;

public class ClientMainTest {

public static void main(String[] args) throws IOException {

Socket kkSocket = null;

PrintWriter out = null;

BufferedReader in = null;

try {

kkSocket = new Socket("localhost", 5252);

out = new PrintWriter(kkSocket.getOutputStream(), true);

in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));

}

catch (UnknownHostException e) {

System.err.println("Don't know about host of server.");

System.exit(1);

catch (IOException e) {

System.err.println("Couldn't get I/O for the connection ");

System.exit(1);

}

BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

String fromServer;

String fromUser;

while ( (fromServer = in.readLine()) != null) {

System.out.println("Server: " + fromServer);

if (fromServer.equals("Bye.")) {

break;

}

fromUser = stdIn.readLine();

if (fromUser != null) {

System.out.println("Client: " + fromUser);

out.println(fromUser);

}

}

out.close();

in.close();

stdIn.close();

kkSocket.close();

}

}

package Protocol;

import java.io.*;

import https://www.360docs.net/doc/4a4604523.html,.*;

public class MultiServerTest {

public static void main(String[] args) throws IOException {

ServerSocket serverSocket = null;

boolean listening = true;

try {

serverSocket = new ServerSocket(5252);

}

catch (IOException e) {

System.err.println("Could not listen on port: 5252.");

System.exit( -1);

}

while (listening) {

new MultiServerThreadTest(serverSocket.accept()).start();

}

serverSocket.close();

}

package Protocol;

import java.io.*;

import https://www.360docs.net/doc/4a4604523.html,.*;

public class MultiServerThreadTest extends Thread {

private Socket socket = null;

public MultiServerThreadTest(Socket socket) {

super("MultiServerThreadTest");

this.socket = socket;

}

public void run() {

try {

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream()));

String inputLine, outputLine;

ServerProtocolTest kkp = new ServerProtocolTest();

outputLine = kkp.processInput(null);

out.println(outputLine);

while ( (inputLine = in.readLine()) != null) {

outputLine = kkp.processInput(inputLine);

out.println(outputLine);

if (outputLine.equals("Bye")) {

break;

}

}

out.close();

in.close();

socket.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

package Protocol;

public class ServerProtocolTest {

private static final int WAITING = 0;

private static final int SENTKNOCKKNOCK = 1; private static final int SENTCLUE = 2;

private static final int ANOTHER = 3;

private static final int NUMJOKES = 5;

private int state = WAITING;

private int currentJoke = 0;

private String[] clues = {

"1", "2", "3", "4", "5"};

private String[] answers = {

"6",

"7",

"8",

"9",

"10"};

public String processInput(String theInput) { String theOutput = null;

if (state == WAITING) {

theOutput = "Hello";

state = SENTKNOCKKNOCK;

}

else if (state == SENTKNOCKKNOCK) {

if (theInput.equalsIgnoreCase("Hello!")) {

theOutput = clues[currentJoke];

数据结构实验7实验报告

暨南大学本科实验报告专用纸 课程名称数据结构实验成绩评定 实验项目名称习题6.51 指导教师孙世良 实验项目编号实验7 实验项目类型实验地点实验楼三楼机房学生姓名林炜哲学号2013053005 学院电气信息学院系专业软件工程 实验时间年月日午~月日午温度℃湿度(一)实验目的 熟悉和理解二叉树的结构特性; 熟悉二叉树的各种存储结构的特点及适用范围; 掌握遍历二叉树的各种操作及其实现方式。 (二)实验内容和要求 编写一个算法,输出以二叉树表示的算术表达式,若该表达式中含有括号,则应该在输出时添上。 (三)主要仪器设备 实验环境:Microsoft Visual Studio 2012 (四)源程序 #include #include typedef struct bitnode{ char data; struct bitnode *lchild,*rchild; }bitnode,*bitree; void create(bitree &T){ char t; t=getchar();

if(t==' ') T=NULL; else{ if( !( T=(bitnode*)malloc(sizeof(bitnode)) ) ) exit(0); T->data=t; create(T->lchild); create(T->rchild); } } void middle_order(bitree &Node){ if(Node != NULL){ if((Node->data=='*'||Node->data=='/')&&(Node->lchild->data=='+'|| Node->lchild->data=='-')) printf("( "); middle_order(Node->lchild); if((Node->data=='*'||Node->data=='/')&&(Node->lchild->data=='+'|| Node->lchild->data=='-')) printf(") "); printf("%c ", Node->data); if((Node->data=='*'||Node->data=='/')&&(Node->rchild->data=='+'|| Node->rchild->data=='-')) printf("( "); middle_order(Node->rchild); if((Node->data=='*'||Node->data=='/')&&(Node->rchild->data=='+'|| Node->rchild->data=='-')) printf(") "); } } int main() { bitree y; printf("以先序遍历的方式输入二叉树:"); create(y); printf("输出表达式:"); middle_order(y); return 0; } (五)数据调试

Windows命令接口实验报告

Windows命令接口实验 一.实验题目: 第29题——操作系统接口:Windows命令接口。(3人) 4分 二.实验任务: 1.设计要求: ●为Windows操作系统建立兼容的DOS命令接口,文件与目录命令; ●具体命令:DIR, RD,CD,MD, DEL,MOVE,REN, COPY, XCOPY, TIME, DATE,SORT,重定向命令>,<.,|,MORE,TYPE ,CLS,EXIT命令格式可参照Windows的CMD.EXE或MS-DOS提供的命令; ●设计命令的名称、参数等格式; ●可以字符形式接收命令,执行命令,然后显示命令执行结果. 2.设计目的: (1)DIR命令:能够正确显示一个目录里面的子目录和文件 (2)RD命令:能够删除一个空目录 (3)CD命令:能够打开一个存在的目录 (4)MD命令:能够建立一个空目录 (5)DEL命令:能够删除一个文件 (6)MOVE命令:能够移动一个目录或文件 (7)REN命令:能够重命名一个目录或文件 (8)XCOPY命令:能够拷贝整个目录 (8)TIME命令:显示系统的时间 (8)DATE命令:显示系统的日期 (8)SORT命令:对文本内容进行分类 (8)MORE命令:逐步分屏显示 (8)TYPE命令:显示文本内容 (8)CLS命令:清楚屏幕显示 (8)EXIT命令:退出 三:实验环境: 1.PC机一台386以上 2.Microsoft Visual Studio2010 软件 3.实现语言:C语言

四:原理及算法描述: 1.基本原理: 用户利用联机命令接口实现与机器的交互时,先在终端的键盘上打入所需的命令,由终端处理程序接受该命令,并将它显示在终端屏幕上。当一条命令输入完后,由命令解释程序对命令进行分析,然后执行相应命令的处理程序。 2.算法描述: (1)存贮输入的各命令参数 void store_parameter(char *buffer,char *parameter[10],int *para_num) 说明:将输入的命令一条一条存储parameter[10]中,最大允许的参数个数为10个。 算法描述:为buffer设置一个指针buffer_point,如果该指针向下移动,碰到空格,继续向下移动,直到遇到字符,读进各存储变量中parameter[10],最后如果遇到’\0’,则结束。 (2)浏览一个路径下的目录和文件 void my_dir(char *a[],int *num) 说明:该命令只能显示当前目录中的文件和子目录和当前目录中子目录中的文件和子目录。并无如Windows中命令参数如此丰富。主要是考虑其复杂性,予以简化了。 算法描述:如果只接受到mydir命令,后面并无其他参数时,显示当前目录下文件和子目录。如果接受到两个参数,如果第二个参数(表示当前目录中子目录)存在,则显示该目录下文件和子目录,如果不存在,则报错。 (3)删除一个存在的目录,如果不存在,删除失败! void my_rd(char *a[],int *num) 算法描述:如果该目录存在且为空目录,则删除,否则失败。 (4)打开一个存在的目录,如果不存在,打开失败! void my_cd(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要打开的目录。如果该目录存在,则成功,否则失败。 (5)创建一个目录 void my_md(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要建立的目录。如果存在该目录,失败,否则成功。 (6)删除一个存在的文件,如果不存在,删除文件失败! void my_del(char *a[],int *num) 算法描述:如果接受到两个参数,第二个参数表示要删除的文件。如果该文件存在,则删除成功,否则失败。 (7)移动一个存在的文件,否则,移动失败 void my_move(char *a[],int *num)

Web网页设计实验报告

WEB系统开发 综合实验报告 题目红尘客栈网上订房页面 专业计算机科学与技术(信息技术及应用) 班级计信2班 学生蒋波涛 重庆交通大学 2013年

目录 一、设计目的 (3) 二、设计题目 (3) 三、结构设计 (3) 四、技术分析 (4) 五、设计过程 (7) 六、实验心得 (10) 七、实验总结 (11)

一、设计目的 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet 应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。我们当代大学生更是离不开网络给我们带来的好处与便利.但是,我们成天浏览的网站网页到底是如何制作的呢?我想这一点很多同学都没有去深究过.所以,这学期我选择了”web网页设计”这门课, 本课程的设计目的是通过实践使同学们经历网页制作的全过程. 通过设计达到掌握网页设计、制作的技巧。 了解和熟悉网页设计的基础知识和实现技巧。根据题目的要求,给出网页设计方案,可以按要求,利用合适图文素材设计制作符合要求的网页设计作品。 熟练掌握Photoshop cs3、Dreamweaver cs等软件的的操作和应用。增强动手实践能力,进一步加强自身综合素质。学会和团队配合,逐渐培养做一个完整项目的能力。 二、设计题目 《红尘客栈》 三、结构设计 选定主题,确定题目之后,在做整个网站之前对网站进行需求分析。首先,做好需求调研。调研方式主要是上网查阅资料,在图书馆里翻阅相关书籍。 然后,调研结束之后对整个网站进行功能描述,并对网站进行总体规划,接着逐步细化。 我们选做的主题是个人主页,并且选定题目为“红尘客栈”,其目的是做一个简单的网站,介绍酒店概况,提供一定的资讯信息。 四、技术分析 (一)建立布局 在这次的网页设计中用到大量的布局,所以怎么样建立布局是关键。Dreamweaver cs3是大多数人设计网页的称手兵器,也是众多入门者的捷径。特别是其在布局方面的出色表现,更受青睐。大家都知道,没有表格的帮助,很难组织出一个协调合理的页面。 1.点击“ALT+F6”键,进入布局模式,插入布局表格。建立一个大概的布局。 2.使用背景图片:选中该项,按浏览可以插入一幅准备好的图片作为表格的背景,因为图片是以平铺的形式作为表格背景,所以表格大小和图片尺寸都要控制好。 (二)网页中的图像

数据库上机实验7实验报告

上机实验七——视图的建立及操作 一、实习目的: 掌握创建、删除、和查询视图的方法,验证可更新视图和不可更新视图。 二、实习准备: 1.复习第三章3.6节视图 2. 完成习题三第16题中的各项操作的SQL语句。 3.了解可更新视图和不课更新视图 三、实习内容:验证习题三第16题中的各项操作的SQL语句。 ①建立01311班选修了1号课程的学生视图Stu_01311_1 CREATE VIEW Stu_01311_1 AS SELECT * FROM Grade WHERE Cno='1'AND Sno in( SELECT Sno FROM Student WHERE Clno='01311') WITH CHECK OPTION ②建立01311班选修了1号课程并且成绩不及格的学生视图Stu_01311_2 CREATE VIEW Stu_01311_2 AS SELECT * FROM Grade

WHERE Cno='1'AND Gmark<60 AND Sno in( SELECT Sno FROM Student WHERE Clno='01311') WITH CHECK OPTION ③建立视图Stu_year,由学生学号、姓名、出生年份组成 CREATE VIEW Stu_year AS SELECT Sno,Sname,year=2001-Sage FROM Student ④查询1990年以后出生的学生姓名 SELECT Sname FROM Student WHERE 2001-Sage<1990; ⑤查询01311班选修了1号课程并且成绩不及格的学生的学号、姓名、出生年份SELECT Sno,Sname,2014-Sage FROM Student WHERE Clno=01311 AND EXISTS(

C实验报告7参考答案

《高级语言程序设计》实验报告班级:学号:姓名:成绩: 实验7 函数程序设计 一、实验目的 1.掌握函数定义的方法。 2.掌握函数实参与形参的传递方式。 3.掌握函数的嵌套调用和递归调用的方法。 4.了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容 1 (1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名存盘。 #include <> #include <> void sub( char s[], char t[] ) { int i, d; d=strlen( s ); for( i=1; i< d ; i++ ) for( i=0; i< d ; i++ ) t[i]=s[d-1-i] ; for( i=0; i #include<> #define ARR_SIZE = 80; #define ARR_SIZE 80 void Inverse(char str[]) void Inverse(char str[]);

实验报告七-键盘扫描及显示实验

信息工程学院实验报告 课程名称:微机原理与接口技术 实验项目名称:键盘扫描及显示实验 实验时间: 班级: 姓名: 学号: 一、实 验 目 的 1. 掌握 8254 的工作方式及应用编程。 2. 掌握 8254 典型应用电路的接法。 二、实 验 设 备 了解键盘扫描及数码显示的基本原理,熟悉 8255 的编程。 三、实 验 原 理 将 8255 单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。实验具体内容如下:将键盘进行编号,记作 0~F ,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近 6 次按下的按键编号。 键盘及数码管显示单元电路图如图 7-1 和 7-2 所示。8255 键盘及显示实验参考接线图如图 7-3 所示。 图 7-1 键盘及数码管显示单元 4×4 键盘矩阵电路图 成 绩: 指导老师(签名):

图 7-2 键盘及数码管显示单元 6 组数码管电路图 图 7-3 8255 键盘扫描及数码管显示实验线路图 四、实验内容与步骤 1. 实验接线图如图 7-3 所示,按图连接实验线路图。

图 7-4 8255 键盘扫描及数码管显示实验实物连接图 2.运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。 图 7-5 8255 键盘扫描及数码管显示实验程序编辑界面 3. 运行程序,按下按键,观察数码管的显示,验证程序功能。 五、实验结果及分析: 1. 运行程序,按下按键,观察数码管的显示。

流量计性能测定实验报告doc

流量计性能测定实验报告 篇一:孔板流量计性能测定实验数据记录及处理篇二:实验3 流量计性能测定实验 实验3 流量计性能测定实验 一、实验目的 ⒈了解几种常用流量计的构造、工作原理和主要特点。 ⒉掌握流量计的标定方法(例如标准流量计法)。 ⒊了解节流式流量计流量系数C随雷诺数Re的变化规律,流量系数C的确定方法。 ⒋学习合理选择坐标系的方法。 二、实验内容 ⒈通过实验室实物和图像,了解孔板、1/4园喷嘴、文丘里及涡轮流量计的构造及工作原理。 ⒉测定节流式流量计(孔板或1/4园喷嘴或文丘里)的流量标定曲线。 ⒊测定节流式流量计的雷诺数Re和流量系数C的关系。 三、实验原理 流体通过节流式流量计时在流量计上、下游两取压口之间产生压强差,它与流量的关系为: 式中: 被测流体(水)的体积流量,m3/s; 流量系数,无因次;

流量计节流孔截面积,m2; 流量计上、下游两取压口之间的压强差,Pa ; 被测流体(水)的密度,kg/m3 。 用涡轮流量计和转子流量计作为标准流量计来测量流量VS。每一 个流量在压差计上都有一对应的读数,将压差计读数△P和流量Vs绘制成一条曲线,即流量标定曲线。同时用上式整理数据可进一步得到C—Re关系曲线。 四、实验装置 该实验与流体阻力测定实验、离心泵性能测定实验共用图1所示的实验装置流程图。 ⒈本实验共有六套装置,流程为:A→B(C→D)→E→F→G→I 。 ⒉以精度0.5级的涡轮流量计作为标准流量计,测取被测流量计流量(小于2m3/h流量时,用转子流量计测取)。 ⒊压差测量:用第一路差压变送器直接读取。 图1 流动过程综合实验流程图 ⑴—离心泵;⑵—大流量调节阀;⑶—小流量调节阀; ⑷—被标定流量计;⑸—转子流量计;⑹—倒U管;⑺⑻⑽—数显仪表;⑼—涡轮流量计;⑾—真空表;⑿—流量计平衡阀;⒁—光滑管平衡阀;⒃—粗糙管平衡阀;⒀—回流阀;⒂—压力表;⒄—水箱;⒅—排水阀;⒆—闸阀;⒇—

键盘实验报告

基于单片机4×4键盘的实现 成员:刘耀鹏、高攀、谢富田 2014年7月20日

理论分析 本实验是基于AT89C52单片机来实现4×4阵列键盘的输入,用七段数码管输出相应的键值,从而提供良好的人机接口。AT89C52单片机是一个8位的单片,与51系列单片机相比较,其最大的区别是多了一个计数定是中断。 采用12MHz的晶振,采用内接法,对电路提供一个时间基准,P1端口作为键盘的输入端口,P0端口为数据输出端口,P1端口输入的键值,在P0端口产生相应的输出。4×4键盘被抽象为16个开关按钮(每行4个共四行),那么久有4位行控制线,和列四位控制线,当开关接通时,则按键按下,数码管显示相应的键值,具体硬件电路如下: 电路中排阻限流作用,以达到对数码管保护作用,P2口作为位选端口,数码管8接P2.0端口,数码管7接P0.1端口。以达到位选

的作用,对于电路可编写一下程序: 2、程序如下: #include #include #define uint unsigned int #define uchar unsigned char //uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09}; uchar code table[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; /********************************************************** **** * 名称: Delay_1ms() * 功能: 延时子程序,延时时间为1ms * x * 输入: x (延时一毫秒的个数) * 输出: 无 *********************************************************** ****/ void Delay_1ms(uint x) { uint i; uchar j;

计网实验报告(三) (4500字)

计算机网络实验报告(三) ——编程实现可靠数据传输原理 go-back-n (一)实验目的: 运用各种编程语言实现基于go-back-n 的可靠数据传输软件。通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。 (二)实验内容: (1).选择合适的编程语言编程实现基于go-back-n 的可靠数据传输软件。 (2).在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。 (三)实验原理: 1.gbn协议含义:go-back-n arq 中文翻译为后退n式arq、回退n式arq。该协议对传统的自动重传请求 (arq,automatic repeat reques)进行了改进,从而实现了在接收到ack之前能够连续发送多个数据包。 在go-back-n arq中,发送端不需要在接收到上一个数据包的ack后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的nack,则发送端将nack对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。 后退n帧arq的图例: 后退n帧arq就是从出错处重发已发出过的n个帧。 2.go-back-n 的有限状态机模型表示如图所示: (a) (b) 图3.1 go-back-n 的有限状态机模型(a)发送端 (b)接受端 (四)实验步骤: 在eclipse平台编写并调试gbn模拟java程序,观察三组以上实验结果,验证程序可以正确模拟gbn的发送规则。 (五)实验结果: 以下为随机数模拟的某次发送情况: 接收方开始接收分组数据! 发送方开始发送分组数据! 发送方现在开始第一次发送序号为0的数据分组 当前窗口内的分组情况为: 第0号窗口里面存放的是序号为1的马上待发送的数据分组! 第1号窗口里面存放的是序号为2的马上待发送的数据分组! 第2号窗口里面存放的是序号为3的马上待发送的数据分组! 接收方收到了序号为0的分组! 该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ack!发送方收到了ack,序号为0并且开始加以确认! 发送方现在开始第一次发送序号为1的数据分组 当前窗口内的分组情况为: 第0号窗口里面存放的是序号为2的马上待发送的数据分组! 第1号窗口里面存放的是序号为3的马上待发送的数据分组!

数据库实验报告记录7

数据库实验报告记录7

————————————————————————————————作者:————————————————————————————————日期:

《数据库原理》实验报告 题目:实验七事务与并发控制学号姓名班级日期Xxxx Xx Xxx 2016.11.10 一. 实验内容、步骤以及结果 假设学校允许学生将银行卡和校园卡进行绑定,在 student 数据库中有如下的基本表,其中校园卡编号 cardid 即为学生的学号: icbc_card(studcardid,icbcid,balance) //校园卡 ID,工行卡 ID,银行卡余额 campus_card(studcardid,balance) //校园卡 ID,校园卡余额数据创建的代码:

1.编写一个事务处理(begin tran)实现如下的操作:某学号为20150032的学生要从银 行卡中转账200元到校园卡中,若中间出现故障则进行rollback。(15分) 修改后的结果: 2.针对本题的数据库和表,分别用具体的例子展现四种数据不一致问题:丢失修改、 读脏数据、不可重复读和幻读(删除和插入)。(40分,每种数据不一致10分) 丢失修改: --事务一: begin tran declare @balance decimal(10,2) select @balance=balance from campus_card where studcardid='20150033' waitfor delay'00:00:05' set @balance=@balance-10 update campus_card set balance=@balance where studcardid='20150033' commit tran go select balance from campus_card where studcardid='20150033'

实验报告答案

实验2:MIPS指令系统和MIPS体系结构 一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解 (4)熟悉MIPS体系结构 二. 实验内容和步骤 首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言。(1)、启动MIPSsim(用鼠标双击MIPSsim.exe)。 (2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。 (3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。 可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。 (4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。 (5)、查看“寄存器”窗口PC寄存器的值:[PC]=0x00000000。 (6)、执行load和store指令,步骤如下: 1)单步执行一条指令(F7)。 2)下一条指令地址为0x00000004,是一条有 (有,无)符号载入字节 (字节,半字,字)指令。 3)单步执行一条指令(F7)。 4)查看R1的值,[R1]= 0xFFFFFFFFFFFFFF80 。 5)下一条指令地址为0x00000008,是一条有 (有,无)符号载入字 (字节,半字,字)指令。 6)单步执行1条指令。 7)查看R1的值,[R1]=0x0000000000000080 。 8)下一条指令地址为0x0000000C ,是一条无 (有,无)符号载入字节 (字节,半字,字)指令。 9)单步执行1条指令。 10)查看R1的值,[R1]= 0x0000000000000080 。 11)单步执行1条指令。 12)下一条指令地址为0x00000014 ,是一条保存字 (字节,半字,字)指令。 13)单步执行一条指令。

运用8255设计的键盘及显示接口-实验报告(含接线图+源程序)

运用8255设计的键盘及显示接口 图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。将键盘中的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C 口为输入口; PB0—PB7与七段代码显示器连接B口为输出。 程序执行过程如下:识别是否有键按下,方法是使PA0一PA3输出全0,读C 口(行值) 中只要有一位为0,就说明有键按下,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段代码显示器就显示与该键相同的数值。 实验步骤 8255接口的应用键盘及显示接线图 注:圆圈处是要求接的连线。 (1)按图4接线。 (2)输入源程序,汇编、连接后装入系统。 (3)执行程序后,按一下键盘,7段代码就会显示相应的数字。

程序 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,3000H MOV AL,00H MOV [SI],AL ;清空存放数据的缓冲区 MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV DI,3003H MOV AL,81H ;8255方式字定义选择0方式,A口为输出; OUT 63H,AL;B口为输出;C口为输入 BEGIN: CALL DIS ;显示七段代码管数据的子程序 CALL CLEAR ;七段代码管清0子程序 CALL CCSCAN ;检测是否有键按下子程序 JNZ INK1 ;

计算机网络模拟器实验报告记录(1)

计算机网络模拟器实验报告记录(1)

————————————————————————————————作者:————————————————————————————————日期:

计算机网络模拟器实验报告 学院:学号:姓名: 实验名称:计算机网络模拟器试验 实验说明:共5个实验,其中前3个必做,后2个选做。 一、实验目的 1、掌握模拟器软件的使用方法; 2、掌握配置PC、交换机、路由器的方法; 3、掌握为交换机设置VLAN,为端口设置TRUNK的 方法。 二、实验环境(请注意关闭杀毒软件) WinXP/WIN7、HW-RouteSim 2.2(软件请到BB 课程资源下载,下载后直接解压缩运行;下载前请 关闭杀毒软件) 三、实验步骤及结果 实验一:计算机和交换机基本设置 添加一个交换机,两个计算机,连接A电脑到交换机3号端口,B电脑到6号端口,双击交换机,进入终端配置:

system password: [Quidway]sysname S3026 ;交换机重命名为S3026 [S3026]super password 111 ;设置特权密码为111 [S3026]quit sys password:111 [S3026]display currect-config ;查看当前所有配置[S3026]display vlan all ;查看当前VLAN设置观察此时所有交换机端口都在同一个vlan1内。 双击小电脑A: login:root password:linux [root@PCAroot]# ? ;输入?号查看命令提示[root@PCAroot]#ifconfig eth0 10.65.1.1 netmask 255.255.0.0 双击小电脑B: login:root password:linux [root@PCAroot]#ifconfig eth0 10.65.1.2 netmask 255.255.0.0 点击A电脑做测试: [root@PCA root]#ping 10.65.1.2

大学物理实验报告答案大全(实验数据)

U 2 I 2 大学物理实验报告答案大全(实验数据及思考题答案全包括) 伏安法测电阻 实验目的 (1) 利用伏安法测电阻。 (2) 验证欧姆定律。 (3) 学会间接测量量不确定度的计算;进一步掌握有效数字的概念。 实验方法原理 根据欧姆定律, R = U ,如测得 U 和 I 则可计算出 R 。值得注意的是,本实验待测电阻有两只, 一个阻值相对较大,一个较小,因此测量时必须采用安培表内接和外接两个方式,以减小测量误差。 实验装置 待测电阻两只,0~5mA 电流表 1 只,0-5V 电压表 1 只,0~50mA 电流表 1 只,0~10V 电压表一 只,滑线变阻器 1 只,DF1730SB3A 稳压源 1 台。 实验步骤 本实验为简单设计性实验,实验线路、数据记录表格和具体实验步骤应由学生自行设计。必要时,可提示学 生参照第 2 章中的第 2.4 一节的有关内容。分压电路是必须要使用的,并作具体提示。 (1) 根据相应的电路图对电阻进行测量,记录 U 值和 I 值。对每一个电阻测量 3 次。 (2) 计算各次测量结果。如多次测量值相差不大,可取其平均值作为测量结果。 (3) 如果同一电阻多次测量结果相差很大,应分析原因并重新测量。 数据处理 (1) 由 U = U max ? 1.5% ,得到 U 1 = 0.15V , U 2 = 0.075V ; (2) 由 I = I max ? 1.5% ,得到 I 1 = 0.075mA , I 2 = 0.75mA ; (3) 再由 u R = R ( 3V ) + ( 3I ) ,求得 u R 1 = 9 ? 101 &, u R 2 = 1& ; (4) 结果表示 R 1 = (2.92 ± 0.09) ?10 3 &, R 2 = (44 ± 1)& 光栅衍射 实验目的 (1) 了解分光计的原理和构造。 (2) 学会分光计的调节和使用方法。 (3) 观测汞灯在可见光范围内几条光谱线的波长 实验方法原理

C实验报告7参考答案

《高级语言程序设计》实验报告班级:_________ 学号:_______ 姓名:_________ 成绩:_________ 实验7函数程序设计 一、实验目的 1 ?掌握函数定义的方法。 2. 掌握函数实参与形参的传递方式。 3. 掌握函数的嵌套调用和递归调用的方法。 4. 了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容 1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。|) (1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放 在t所指的数组中。例如,当s所指字符串的内容为“ ABCD时,t所指数组中的内容为“DCBAABCD纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c存盘。 #i nclude #in clude void sub( char s[], char t[]) { int i, d; d=strle n( s ); for( i=1; i< d ; i++ ) for( i= 0; i< d ; i++ ) t[i]=s[d-1-i]; for( i=0; i #i nclude #defi ne ARR_SIZE = 80; #define ARR_SIZE 80

实验四 键盘扫描及显示设计实验报告

实验四键盘扫描及显示设计实验报告 一、实验要求 1. 复习行列矩阵式键盘的工作原理及编程方法。 2. 复习七段数码管的显示原理。 3. 复习单片机控制数码管显示的方法。 二、实验设备 1.PC 机一台 2.TD-NMC+教学实验系统 三、实验目的 1. 进一步熟悉单片机仿真实验软件 Keil C51 调试硬件的方法。 2. 了解行列矩阵式键盘扫描与数码管显示的基本原理。 3. 熟悉获取行列矩阵式键盘按键值的算法。 4. 掌握数码管显示的编码方法。 5. 掌握数码管动态显示的编程方法。 四、实验内容 根据TD-NMC+实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能: 1.扫描键盘输入,并将扫描结果送数码管显示。 2.键盘采用 4×4 键盘,每个数码管显示值可为 0~F 共 16 个数。 实验具体内容如下: 将键盘进行编号,记作 0~F,当按下其中一个按键时,将该按键对应的编号在一个数码 管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数 码管上可以显示最近 4 次按下的按键编号。 五、实验单元电路及连线 矩阵键盘及数码管显示单元

图1 键盘及数码管单元电路 实验连线 图2实验连线图 六、实验说明 1. 由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为 5~10ms。这是一个很重要的时间参数,在很多场合都要用到。 键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按

计网实验报告

电气工程学院 计算机网络实验报告 姓名:彭思琦 学号:15291191 指导教师:张洪和 实验日期:2017-12-09 18:00-22:00

一、计算机信息 计算机的 IP 地址:192.168.0.5 子网掩码:255.225.255.0 默认网关:无 二、 报告内容 1 ) 画出实验室的网络拓扑图, 将每个网络用 CIDR 记法进行表示, 并注明你用的电脑处在哪一个网络。 实验室的网络拓扑图: 1. 由机房电脑组成的网络中,用 CIDR 记法要写成: 192.168.0.0/24 WAN LAN:10.10.10.1 LAN:192.168.1.1

2. TCPIP_1 CIDR 记法为:10.10.10.1/24 TCPIP_2 CIDR 记法为: 192.168.1.1/24 1 . 实验一任务一 2)在你的电脑上打开cmd 窗口,ping 一下192.1 68.0.0 网络的任何一台在线的主机,将实际运行结果进行图片保存,粘贴到实验报告上。 PING 本机 PING 百度(此部分在寝室完成)

3)在ping 的过程中,利用wireshark 捕捉包含对应ICMP 报文的MAC 帧,将此MAC 帧的各个控制字段,以及此MAC 帧中包含的IP 数据报的各个控制字段,进行标注或者用文字列出。本机IP:172.27.69.177 目的地址:74:1f:4a:9b:a1:67 源地址:30:10:b3:b8:bd:a3 类型:协议类型ipv4(8000) 版本:4 首部长度:5 首部长度5*4=20 字节 区分服务:00

实验报告7-虚拟变量

2013-2014学年第 一 学期 实 验 报 告 实验课程名称 虚拟变量模型 专 业 班 级 资产评估1101 学生 学号 31105073 学 生 姓 名 方申慧 实验指导教师 董美双 编号:

实验名称多重共线性检验与修正指导老师董美双成绩 专业资产评估班级 1101 姓名方申慧学号 31105073 一、实验目的 目的:通过实验,理解并掌握虚拟变量模型的意义、建模的方法、虚拟变量引入的原则和技巧等。 要求:熟练掌握虚拟变量引入的加法方式和乘法方式,并正确解读和分析回归结果。 首先做例题8-10,按步骤分析季节性因素的影响;然后利用上证指数的数据分析股市周效应(周1-周5任选),或者自己收集数据按上面的步骤做一遍,把结果输出到word文档中。 步骤: 例题8-10 Dependent Variable: Y Method: Least Squares Date: 11/28/13 Time: 09:12 Sample: 1982:1 1988:4 Included observations: 28 C 2431.198 93.35790 26.04170 0.0000 T 48.95067 4.528524 10.80941 0.0000 D1 1388.091 103.3655 13.42896 0.0000 D2 201.8415 102.8683 1.962136 0.0620 D3 85.00647 102.5688 0.828775 0.4157 R-squared 0.945831 Mean dependent var 3559.718 Adjusted R-squared 0.936411 S.D. dependent var 760.2102 S.E. of regression 191.7016 Akaike info criterion 13.51019 Sum squared resid 845238.2 Schwarz criterion 13.74808

串行接口实验报告

课程实验报告实验名称:串行接口 专业班级: 学号: 姓名: 同组人员: 指导教师: 报告日期:

实验二 1. 实验目的 (3) 2. 实验内容 (3) 3. 实验原理 (3) 4. 程序代码 (6) 5. 实验体会 (13)

实验二 1.实验目的 1.熟悉串行接口芯片8251的工作原理 2.掌握串行通讯接收/发送程序的设计方法 2.实验内容 通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。具体过程如下: 1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。 2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。 3.实验原理 1.8251控制字说明 在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。 另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。 2.8251方式指令(端口地址2B9H)

3.8251工作指令(端口地址2B9H) 4.8251状态字(端口地址2B9H) 5.8253控制字(283H) 6.8253计数初值(283H) 计数初值=时钟频率/(波特率×波特率因子)本实验:脉冲源=1MHz 波特率=1200 波特率因=16 计数初值= 1000000/1200*16=52

计网实验报告(一)

计算机网络实验报告(一) ——Windows环境下用java实现web服务器 (一)实验目的: 通过本实验进一步理解HTTP协议的技术细节以及WEB服务器的实现原理并了解java提供的支持TCP协议的借口和类的使用。 (二)实验内容: (1)处理一个http请求 (2)接收并解析http请求 (3)从服务器文件系统中获得被请求的文件 (4)创建一个包括被请求的文件的http响应信息 (5)直接发送该信息到客户端 (三)实验原理: HTTP协议的作用原理: WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP 协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤: (1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。 (2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。 原理示意图如下: (四)实验步骤: 考虑利用java提供给TCP的端口和系统定义类进行传输实现,大致分为以下几步: (1) 创建ServerSocket类对象,监听端口7977。这是为了区别于HTTP的标准TCP/IP 端口80而取的; (2) 等待、接受客户机连接到端口7977,得到与客户机连接的socket; (3) 创建与socket字相关联的输入流instream和输出流outstream; (4) 从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:GET 路径/文件名HTTP/1.0 (5) 从请求信息中获取请求类型。如果请求类型是GET,则从请求信息中获取所访问的HTML文件名index.html。 (6) 如果HTML文件存在,则打开HTML文件,把HTTP头信息和HTML文件内容通过socket传回给Web浏览器,然后关闭文件。否则发送错误信息给Web浏览器; (7) 关闭与相应Web浏览器连接的socket字。

相关文档
最新文档