《信息论与编码》课程实验报告

《信息论与编码》课程实验报告
《信息论与编码》课程实验报告

《信息论与编码》

课程实验报告1

1、实验目的

通过上机实习实现对信源及其熵的运算对课本知识的认识上加于运用并熟悉其算法过程;熟悉二变量多种信息量的计算方法,设计实验的数据结构和算法。

2、实验内容

(1)利用random函数和归一化方法构造一个二维离散随机变量(X,Y);

(2)分别计算X与Y的熵、联合熵、条件熵:H(X)、H(Y)、H(X,Y)

H(X|Y)、I(X|Y);

3、数据结构与算法描述

(1)函数及子函数的定义

for(i=0;i

for(j=0;j

{

arr[i][j]=(double)(rand()%100+1);

sum+=arr[i][j];

}

for(i=0;i

for(j=0;j

arr[i][j]/=sum; 实现N维随机变量

hx+=log2(x[i])*x[i] x 熵的计算

hy+=log2(y[i])*y[i] y 熵的计算

hxy+=arr[i][j]*log2(arr[i][j]) 联合熵的计算公式

(2)主函数main()实现初始化操作,完成对子函数的调用

(3)子函数

double log2(double x) 实现将二的对数的转换

void getarr(int n,int m) 随机产生N维离散变量(X,Y)

void disparr(int n,int m) 实现输出并归一化的联合矩阵

double geth_x(int n,int m) 求X的熵

double geth_y(int n,int m) 求Y的熵

double geth_xy(int n,int m) 求X Y的联合熵

double get_y_x(int n,int m) 求H(Y|X)

double get_x_y(int n,int m) 求H(X|Y)

void Iu() 求平均互信息

4、实验结果

5、实验结果分析与体会

对该实验结果进行分析并没有发现大的问题,实验结果还趋于正常;通过本次试验使我更加了解了信源及其熵的数学模型和计算方法并通过在计算机编程培养了我们的动手能力为我们以后的工作起了一定的作用。

6、源程序:

#include

#include

#include

#include

#define N 100

double arr[N][N]={0};

int n,m;

double log2(double);

void getarr(int,int);

void disparr(int,int);

double geth_x(int,int);

double geth_y(int,int);

double geth_xy(int,int);

double get_y_x(int,int);

double get_x_y(int,int);

void Iu();

void main()

{

double hx,hy,hxy,hx_y,hy_x;

printf("输入矩阵的行数:n=");

scanf("%d",&n);

printf("输入矩阵的列数:m=");

scanf("%d",&m);

getarr(n,m);

disparr(n,m);

hx=geth_x(n,m);

printf("x的熵: H(X)= %f",hx);

hy=geth_y(n,m);

printf("\ny的熵: H(Y)= %f",hy);

hxy=geth_xy(n,m);

printf("\nxy联合熵: H(XY)= %f",hxy);

hx_y=get_y_x(n,m);

printf("\ny|x的熵: H(x|y)= %f",hx_y);

hy_x=get_x_y(n,m);

printf("\nx|y的熵: H(y|x)= %f",hy_x);

Iu();

}

double log2(double x)

{

return (log(1./x)/log(2));

}

void getarr(int n,int m)

{

int i,j;

double sum=0;

srand((unsigned int)(time(NULL)));

for(i=0;i

for(j=0;j

{

arr[i][j]=(double)(rand()%100+1); sum+=arr[i][j];

}

for(i=0;i

for(j=0;j

arr[i][j]/=sum;

}

void disparr(int n,int m)

{

int i,j;

printf("联合矩阵:P(x,y)=\n");

for(i=0;i

{

for(j=0;j

printf("%f ",arr[i][j]);

printf("\n\n");

}

}

double geth_x(int n,int m)

{

int i,j;

double hx=0;

double x[N]={0};

for(i=0;i

for(j=0;j

x[i]+=arr[j][i];

for(i=0;i

hx+=log2(x[i])*x[i];

return hx;

}

double geth_y(int n,int m)

{

int i,j;

double hy=0;

double y[N]={0};

for(i=0;i

for(j=0;j

y[i]+=arr[i][j];

for(i=0;i

hy+=log2(y[i])*y[i];

return hy;

}

double geth_xy(int n,int m)

{

int i,j;

double hxy=0;

for(i=0;i

for(j=0;j

hxy+=arr[i][j]*log2(arr[i][j]);

return hxy;

}

double get_y_x(int n,int m)

{

double xx,yy;

xx=geth_xy(n,m);

yy=geth_x(n,m);

return (xx-yy);

}

double get_x_y(int n,int m)

{

double xx,yy;

xx=geth_xy(n,m);

yy=geth_y(n,m);

return (xx-yy);

}

void Iu()

{

printf("\n平均互信息:I(X:Y)= %f\n",(geth_x(n,m)-get_x_y(n,m))); }

…………………………

《信息论与编码》

课程实验报告2

1、实验目的

掌握香农编码方法并用程序实现。

2、实验内容

(1)对已知的信源相应的概率进行编码;

(2)分别对X中的字符进行香农编码;

(3)有能力的同学,完成对X中的字符进行Huffman编码。

3、数据结构与算法流程

d[i]=(int)(-log(a[i])/log(2)) 对计算相应信源符号的码长for(i=1;i

{

pp[i]=pp[i-1]+a[i-1];

} 计算各对应信源符号的累加概率

for(i=0;i

{

printf("a[%d]\t",i);

for(j=0;j

{

if(2*pp[i]>=1)

{

printf("1");

pp[i]=2*pp[i]-1;

}

else

{

printf("0");

pp[i]=2*pp[i];

}

}

printf("\n");

} 计算各对应信源符号的码字

4、实验数据与实验结果

5、实验结果分析与体会

本程序通过输入N个信源的概率对其进行香农编码,并运用书上的例题结果并无差异,但是并没有对概率进行排序还有待于提高;通过这次试验让我更加了解了香农编码的过程及其的

算法。

6、源程序:

#include

#include

#include

#include

#include

void main()

{

float a[100],p=0.0,pp[100];

double c[100];

int b[100],d[100];

int n,i,j;

printf("输入信源符号的个数:");

scanf("%d",&n);

printf("输入各信源对应的概率并按0结束:\n"); for(i=0;i

scanf("%f\n",&a[i]);

printf("输入的信源概率是:\n");

for(i=0;i

printf("a[%d]=%f\t",i,a[i]);

printf("\n");

for(i=0;i

{

c[i]=(-log(a[i])/log(2));

d[i]=(int)(-log(a[i])/log(2));

if((c[i]-d[i])>0)

b[i]=(int)c[i]+1;

else

b[i]=d[i];

}

printf("各信源对应码长:\n");

for(i=0;i

printf("b[%d]=%d\t",i,b[i]);

pp[0]=0.0;

for(i=1;i

{

pp[i]=pp[i-1]+a[i-1];

}

printf("\n");

printf("各信源对应累加概率:\n");

for(i=0;i

printf("pp[%d]=%f\t",i,pp[i]);

printf("\n");

printf("各信源对应的码字:\n"); for(i=0;i

{

printf("a[%d]\t",i);

for(j=0;j

{

if(2*pp[i]>=1)

{

printf("1");

pp[i]=2*pp[i]-1;

}

else

{

printf("0");

pp[i]=2*pp[i];

}

}

printf("\n");

}

}

…………………………

《信息论与编码》

课程实验报告3

1、实验目的

掌握用递推算法计算典型信道的容量的方法并用程序实现。

2、实验内容

(1)利用random函数和归一化方法构造一个N维离散随机变量(X,Y)概率转移矩阵;

(2)用递推算法计算(或直接计算)各种二进信道的容量;

3、数据结构与算法描述

double *sum1=NULL;

sum1=(double *)calloc(r,sizeof(double)); 定义指针变量并为该变量申请向的空间

for(i=0;i

{ for(j=0;j

{

p_ji[i][j]=(double)(rand()%100+1);

sum1[i]+=p_ji[i][j];

}

}

for(i=0;i

for(j=0;j

{

p_ji[i][j]/=sum1[i];

printf("%f\t",p_ji[i][j]);

}

printf("\n");

free(sum1); 用rand和归一化的方法产生随机N维信道转移概率矩阵并输出后释放空间

for(i=0;i

{

sum[i]=0.0;

for(j=0;j

{

if(fabs(q_ij[i][j]>=DEL))

sum[i]+=p_ji[i][j]*log(q_ij[i][j])/log(2.0);

}

sum[i]=pow(2.0,sum[i]);

p_j+=sum[i];

}

for(i=0;i

{

p_i[i]=sum[i]/p_j;

} 运用迭代方法计算信道容量

4、实验数据与实验结果

5、实验结果分析与体会

在本次实验中我遇到很多问题不管是指针的运算,随机转移矩阵输出规范还有就是信道容量的计算;虽然有些问题解决了,但是还有些问题不知道咋办。就是在输出的时候不知道哪有错虽然输出了结果但是要出错希望以后能够提高。、通过这次实验了解了信道容量的计算和程序的实现,虽然在实验中遇到了很大麻烦但是它们让我进步了不少,也增进了知识。

6、源程序:

#include

#include

#include

#define DEL 1e-6

#include

void main()

{

register int i,j;

register int k;

int r,s;

double *sum1=NULL;

double *p_i=NULL;

double **p_ji=NULL;

double **q_ij=NULL;

double C,C_pre,validate;

double *sum=NULL;

double p_j;

printf("输入概率转移矩阵的行数 r=");

scanf("%d",&r);

printf("输入概率转移矩阵的列数 s=");

scanf("%d",&s);

p_i=(double *)calloc(r,sizeof(double));

p_ji=(double **)calloc(r,sizeof(double));

for(i=0;i

{

p_ji[i]=(double *)calloc(s,sizeof(double)); }

q_ij=(double **)calloc(r,sizeof(double*));

for(i=0;i

{

q_ij[i]=(double *)calloc(s,sizeof(double)); }

sum1=(double *)calloc(r,sizeof(double)); srand((unsigned int)(time(NULL)));

printf("随机转移矩阵为:\n");

printf("\n");

for(i=0;i

{ for(j=0;j

{

p_ji[i][j]=(double)(rand()%100+1);

sum1[i]+=p_ji[i][j];

}

}

for(i=0;i

for(j=0;j

{

p_ji[i][j]/=sum1[i];

printf("%f\t",p_ji[i][j]);

}

printf("\n");

free(sum1);

for(i=0;i

{

validate=0.0;

for(j=0;j

{ validate+=p_ji[i][j];}

}

for(i=0;i

{p_i[i]=1.0/(double)r;}

C=-200;

k=0;

sum=(double *)calloc(r,sizeof(double));

do

{

k++;

for(j=0;j

{

p_j=0.0;

for(i=0;i

p_j+=p_i[i]*p_ji[i][j];

if(fabs(p_j)>=DEL)

for(i=0;i

q_ij[i][j]=p_i[i]*p_ji[i][j]/p_j;

else

for(i=0;i

q_ij[i][j]=0.0;

}

p_j=0.0;

for(i=0;i

{

sum[i]=0.0;

for(j=0;j

{

if(fabs(q_ij[i][j]>=DEL))

sum[i]+=p_ji[i][j]*log(q_ij[i][j])/log(2.0); }

sum[i]=pow(2.0,sum[i]);

p_j+=sum[i];

}

for(i=0;i

{

p_i[i]=sum[i]/p_j;

}

C_pre=C;

C=log(p_j)/log(2.0);

}while(fabs(C-C_pre)/C>DEL);

free(sum);

sum=NULL;

printf("\n");

//printf("迭代次数: %d \n\n",k);

printf("信道容量: %.6f bit/symblo \n\n",C); printf("最大入口分布: ");

for(i=0;i

printf(" %.6f",p_i[i]);

printf("\n");

for(i=s-1;i>=0;i--)

{

free(q_ij[i]);

q_ij[i]=NULL;

}

free(q_ij);

q_ij=NULL;

for(i=r-1;i>=0;i--)

{

free(p_ji[i]);

p_ji[i]=NULL;

}

free(p_ji);

p_ji=NULL;

free(p_i);

p_i=NULL;

exit(0);

}

………………………

《信息论与编码》

课程实验报告4

1、实验目的

通过对书上循环冗余校验码(CRC)的认识推广到16位、32位校验码的生成,并通过实验巩固理论知识。

2、实验内容

1、生成Crc32的查询表

2、计算CRC32校验值

3、数据结构与算法描述

函数名:GetCrc32

函数原型:unsigned int GetCrc32(char* InStr,unsigned int len) 参数:InStr ---指向需要计算CRC32值的字符串

len ---为InStr的长度

返回值为计算出来的CRC32结果。

函数名:GetCrc16

函数原型:unsigned short GetCrc16(char* InStr,unsigned int len) 参数:InStr ---指向需要计算CRC32值的字符串

len ---为InStr的长度

返回值为计算出来的CRC16结果。

unsigned int Crc32Table[256];

int i,j;

unsigned int Crc;

for (i = 0; i < 256; i++)

{

Crc = i;

for (j = 0; j < 8; j++){

if (Crc & 1)

Crc = (Crc >> 1) ^ 0xEDB88320;

else

Crc >>= 1;

}

Crc32Table[i] = Crc;

} 生成Crc32的查询表

Crc=0xffffffff;

for( i=0; i

{

Crc = (Crc >> 8) ^ Crc32Table[(Crc & 0xFF) ^ InStr[i]]; }

Crc ^= 0xFFFFFFFF;

return Crc;

} 开始计算CRC32校验值

CRC16方法和CRC32的方法一样

4、实验数据与实验结果

5、实验结果分析与体会

通过网上查阅资料和对课本知识的理解,其实本程序只是按照相应的算法对要进行循环冗余校验码的字符进行校验的,结果应该没什么差异。

通过本次实验加强了对循环冗余校验码知识的理解并通过上机实习加强了动手能力,提高了自己知识水平。

6、源程序:

unsigned int GetCrc32(char* InStr,unsigned int len)

{

//生成Crc32的查询表

unsigned int Crc32Table[256];

int i,j;

unsigned int Crc;

for (i = 0; i < 256; i++)

{

Crc = i;

for (j = 0; j < 8; j++){

if (Crc & 1)

Crc = (Crc >> 1) ^ 0xEDB88320;

else

Crc >>= 1;

}

Crc32Table[i] = Crc;

操作系统-Linux课程实验报告

实验、 Linux Ubuntu的安装、创建新的虚拟机VMWare 实验 Shell编程 1.实验目的与内容 通过本实验,了解Linux系统的shell机制,掌握简单的shell编程技巧。 编制简单的Shell程序,该程序在用户登录时自动执行,显示某些提示信息,如“Welcome to Linux”, 并在命令提示符中包含当前时间、当前目录和当前用户名等基本信息。 2.程序源代码清单 #include<> #include int main(){ printf("Hello Linux\n"); int pid; int state; int pfd[2]; pipe(pfd); if (fork()==0){ printf("In the grep progress\n"); dup2(pfd[0],0); close(pfd[0]); close(pfd[1]); execlp("grep","grep","sh",0); perror("exelp grep error"); } esle if(fork()==0){ printf("In the ps progress\n"); dup2(pfd[1],1); close(pfd[0]); close(pfd[1]); execlp("ps","ps","-ef",0); perror("execlp ps -ef"); }

close(pfd[1]); close(pfd[0]); wait(&state); wait(&state); } 实验内核模块 实验步骤: (1).编写内核模块 文件中主要包含init_clock(),exit_clock(),read_clock()三个函数。其中init_clock(),exit_clock()负责将模块从系统中加载或卸载,以及增加或删除模块在/proc中的入口。read_clock()负责产生/proc/clock被读时的动作。 (2).编译内核模块Makefile文件 # Makefile under ifneq ($(KERNELRELEASE),) #kbuild syntax. dependency relationshsip of files and target modules are listed here. obj-m := else PWD := $(shell pwd) KVER ?= $(shell uname -r) KDIR := /lib/modules/$(KVER)/build all: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: rm -rf .*.cmd *.o *. *.ko .tmp_versions *.symvers *.order endif 编译完成之后生成模块文件。 (3).内核模块源代码 #include #include #include #include #include #include #define MODULE #define MODULE_VERSION "" #define MODULE_NAME "clock" struct proc_dir_entry* my_clock; int read_clock(char* page, char** start, off_t off, int count, int* eof, void* data) { int len; struct timeval xtime;

计算机操作系统实验课实验报告

实验报告 实验课程: 计算机操作系统学生姓名:XXX 学号:XXXX 专业班级:软件 2014年12月25日

目录 实验一熟悉Windows XP中的进程和线程.. 3实验二进程调度 (7) 实验三死锁避免—银行家算法的实现 (18) 实验四存储管理 (24)

实验一熟悉Windows XP中的进程和线程 一、实验名称 熟悉Windows XP中的进程和线程 二、实验目的 1、熟悉Windows中任务管理器的使用。 2、通过任务管理器识别操作系统中的进程和线程的相关信息。 3、掌握利用spy++.exe来察看Windows中各个任务的更详细信息。 三、实验结果分析 1、启动操作系统自带的任务管理器: 方法:直接按组合键Ctrl+Alt+Del,或者是在点击任务条上的“开始”“运行”,并输入“taskmgr.exe”。

2、调整任务管理器的“查看”中的相关设置,显示关于进程的以下各项信息,并 完成下表: 表一:统计进程的各项主要信息 3、启动办公软件“Word”,在任务管理器中找到该软件的登记,并将其结束掉。再

从任务管理器中分别找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,试着结束它们,观察到的反应是任务管理器无法结束进程, 原因是该系统是系统进程。 4、在任务管理器中找到进程“explorer.exe”,将之结束掉,并将桌面上你打开的所 有窗口最小化,看看你的计算机系统起来什么样的变化桌面上图标菜单都消失了、得到的结论explorer.exe是管理桌面图标的文件(说出explorer.exe进程的作用)。 5、运行“spy++.exe”应用软件,点击按钮“”,切换到进程显示栏上,查看进 程“explorer.exe”的各项信息,并填写下表: 进程:explorer.exe 中的各个线程

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.360docs.net/doc/c17547476.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

数值分析实验报告之常微分方程数值解

数学与计算科学学院实验报告 实验项目名称常微分方程数值解 所属课程名称数值方法B 实验类型验证 实验日期 2013.11.11 班级 学号 姓名 成绩

【实验过程】(实验步骤、记录、数据、分析) 注:以下图形是通过Excel 表格处理数据得出,并未通过MATLAB 编程序所得! 1、1(0)1dy y x dx y ?=-++???=? 由题可知精确解为:x y x e -=+,当x=0时,y(x)=0。 h=0.1 表1 h=0.1时三个方法与精确值的真值表 图1 h=0.1时三个方法走势图 步长 Euler 法 预估校正法 经典四阶库 精确值 0.1 1.010000 1.005000 1.004838 1.249080 0.2 1.029000 1.019025 1.018731 1.055455 0.3 1.056100 1.041218 1.040818 1.091217 0.4 1.090490 1.070802 1.070320 1.131803 0.5 1.131441 1.107076 1.106531 1.176851 0.6 1.178297 1.149404 1.148812 1.226025 0.7 1.230467 1.197211 1.196586 1.279016 0.8 1.287421 1.249975 1.249329 1.335536 0.9 1.348678 1.307228 1.306570 1.395322 1.0 1.413811 1.368541 1.367880 1.458127

h=0.05(此时将源程序中i的围进行扩大,即for(i=0;i<20;i++)) 表2 h=0.05时三个方法与精确值的真值表步长Euler法预估校正法经典四阶库精确值 0.05 1.002500 1.001250 1.001229 1.011721 0.10 1.007375 1.004877 1.004837 1.024908 0.15 1.014506 1.010764 1.010708 1.039504 0.20 1.023781 1.018802 1.018731 1.055455 0.25 1.035092 1.028885 1.028801 1.072710 0.30 1.048337 1.040915 1.040818 1.091217 0.35 1.063421 1.054795 1.054688 1.110931 0.40 1.080250 1.070436 1.070320 1.131801 0.45 1.098737 1.087752 1.087628 1.153791 0.50 1.118800 1.106662 1.106531 1.176851 0.55 1.140360 1.127087 1.126950 1.200942 0.60 1.163342 1.148954 1.148812 1.226025 0.65 1.187675 1.172193 1.172046 1.252062 0.70 1.213291 1.196736 1.196585 1.279016 0.75 1.240127 1.222520 1.222367 1.306852 0.80 1.268121 1.249485 1.249329 1.335536 0.85 1.297215 1.277572 1.277415 1.365037 0.90 1.327354 1.306728 1.306570 1.395322 0.95 1.358486 1.336900 1.336741 1.426362 1.00 1.390562 1.368039 1.367880 1.458127 图2 h=0.05时三个方法走势图

操作系统实验报告心得体会

操作系统实验报告心得体会 每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。但是每完成一个任务我都兴奋不已。一开始任务是任务,到后面任务就成了自己的作品了。总体而言我的课设算是达到了老师的基本要求。总结一下有以下体会。 1、网络真的很强大,用在学习上将是一个非常高效的助手。几乎所有的资料都能够在网上找到。从linux虚拟机的安装,到linux的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。这些都能在网上找到。也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。当然网上的东西很乱很杂,自己要能够学会筛选。 不能决定对或错的,有个很简单的方法就是去尝试。就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。所以要非常的谨慎,尽量少出差错,节省时间。多找个几个参照资料,相互比较,

慢慢研究,最后才能事半功倍。 2、同学间的讨论,这是很重要的。老师毕竟比较忙。对于课程设计最大的讨论伴侣应该是同学了。能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。 3、敢于攻坚,越是难的问题,越是要有挑战的心理。这样就能够达到废寝忘食的境界。当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。 4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。在经过大量的资料查阅之后,我对段错误有了一定的了解,并且能够用相应的办法来解决。 在编程中以下几类做法容易导致段错误,基本是是错误地使用指针引起的 1)访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址 2)内存越界(数组越界,变量类型不一致等) 访问到不属于你的内存区域

计算机网络课程设计实验报告

校园网的组建与应用 摘要: 本文针对实验室的设备环境,对校园网的组网方式进行了研究和模拟,并最终提出了一套完整的校园网组网方案。 实验中我们对路由器、交换机等组网基础设备进行了认真的研究。关于路由器,我们实现了本地基本配置,并分别使用路由器的串口和以太网口实现了不同网段的网络互联,对路由器静态及动态路由机制进行了探究。关于交换机,我们实现了VLAN的划分以及不同VLAN间的相互通信,对广播风暴现象的产生原理及解决方案进行了特定的实验。综合两者的功能,我们对多种网络拓扑结构进行了分析,讨论和改进。最后通过实验和模拟提出了一套完整的校园网组建方案。 在此方案中,我们在实现了网络互通的情况下,我们进行了IP地址的划分,IP地址利用DHCP进行自动分配。并根据模拟实际,对不同的主机进行VLAN划分,同时保证不同VLAN间的相互访问与特定VLAN的保护与单向访问。同时构建内部防火墙保证校园网与外部的安全访问。构建了完整可靠的网络之后,依据校园网的功能和服务需求,我们搭建了FTP服务器,用于提供基础的网络服务。 限于实验室条件的限制,我们的方案并不是完全能够适用于现实的。但是,通过实验使我们对校园网乃至更大的网络有了更加深刻的了解。

目录

一、前言 随着信息的调整膨胀,全球信息已经进入以计算机网络为核心的时代。作为科技先导的教育行业,计算机校园网已是教育进行科研和现代化管理的重要手段。近几年、校园网已经取得很大的发展,中国教育科研网投入运营,全国多所高校校园网络开通联网。 随着学校教育手段的现代化,很多学校已经逐渐开始将学校的管理和教学过程向电子化方向发展,校园网的有无以及水平的高低也将成为评价学校及学生选择学校的新的标准之一,此时,校园网上的应用系统就显得尤为重要。一方面,学生可以通过它在促进学习的同时掌握丰富的计算机及网络信息知识,毫无疑问,这是学生综合素质中极为重要的一部分;另一方面,基于先进的网络平台和其上的应用系统,将极大的促进学校教育的现代化进程,实现高水平的教学和管理。 学校目前正加紧对信息化教育的规划和建设。开展的校园网络建设,旨在推动学校信息化建设,其最终建设目标是将建设成为一个借助信息化教育和管理手段的高水平的智能化、数字化的教学园区网络,最终完成统一软件资源平台的构建,实现统一网络管理、统一软件资源系统,并保证将来可扩展骨干网络节点互联带宽为10G,为用户提供高速接入网络,并实现网络远程教学、在线服务、教育资源共享等各种应用;利用现代信息技术从事管理、教学和科学研究等工作。最终达到在网络方面,更好的对众多网络使用及数据资源的安全控制,同时具有高性能,高效率,不间断的服务,方便的对网络中所有设备和应用进行有效的时事控制和管理。 二、综述 2.1 概述 从物理意义上来说,校园网就是一种局域网。校园网是各类型网络中一大分支,有着非常广泛的应用及代表性。作为新技术的发祥地,学校、尤其是高等院校,和网络的关系是密不可分的。作为“高新技术孵化器”的高校,是知识、人才的高地,资源十分丰富,比其他行业更渴求网络新技术、网络新应用,

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

操作系统实验报告

操作系统实验报告 实验名称: 系统的引导 所在班级: 指导老师: 老师 实验日期: 2014年3 月29 日

一、实验目的 ◆熟悉hit-oslab实验环境; ◆建立对操作系统引导过程的深入认识; ◆掌握操作系统的基本开发过程; ◆能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 二、实验容 1. 阅读《Linux核完全注释》的第6章引导启动程序,对计算机和Linux 0.11的引导过程进行初步的了解。 2. 按照下面的要求改写0.11的引导程序bootsect.s。 3. 有兴趣同学可以做做进入保护模式前的设置程序setup.s。 4. 修改build.c,以便可以使用make BootImage命令 5. 改写bootsect.s主要完成如下功能: bootsect.s能在屏幕上打印一段提示信息XXX is booting...,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等。 6. 改写setup.s主要完成如下功能: bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s 向屏幕输出一行"Now we are in SETUP"。setup.s能获取至少一个基本的硬件参数(如存参数、显卡参数、硬盘参数等),将其存放在存的特定地址,并输出到屏幕上。setup.s不再加载Linux核,保持上述信息显示在屏幕上即可。 三、实验环境

本实验使用的系统是windows系统或者是Linux系统,需要的材料是osexp。 四、实验步骤 1. 修改bootsect.s中的提示信息及相关代码; 到osexp\Linux-0.11\boot目录下会看到图1所示的三个文件夹,使用UtraEdit 打开该文件。将文档中的98行的mov cx,#24修改为mov cx,#80。同时修改文档中的第246行为图2所示的情形。 图1图2 图3 2. 在目录linux-0.11\boot下,分别用命令as86 -0 -a -o bootsect.obootsect.s和 ld86 -0 -s -obootsectbootsect.o编译和bootsect.s,生成bootsect文件; 在\osexp目录下点击MinGW32.bat依此输入下面的命令: cd linux-0.11 cd boot as86 -0 -a -o bootsect.obootsect.s ld86 -0 -s -o bootsectbootsect.o

计算机网络课程设计实验报告

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于Winpcap的网络流量统计分析 指导教师:张伟 目录 第一章总体设计 一、实体类设计 --------P3 二、功能类设计 --------P3 三、界面设计 --------P3

第二章详细设计 一、实体类实现 --------P4 二、功能类实现 --------P4 三、界面实现 --------P5 第三章源代码清单及说明 一、CaptureUtil.java --------P7 二、MyPcapPacketHandler.java --------P9 三、PacketMatch.java --------P9 四、Windows.java --------P13 第四章运行结果 --------P19 第五章心得体会 --------P21 第一章总体设计 一、实体类设计 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计 二、功能类设计 (1)网卡获取 (2)包的抓捕

(3)包的处理 三、界面设计 (1)布局 (2)按钮功能连接 第二章第二章详细设计 一、实体类实现 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。 本程序采用Java编写,基于win10pcap。Win10pcap是winpcap在win10系统上的适用版本。Java对于winpcap使用jnetpcap进行支持。对于TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在jnetpcap的jar包中大部分已经封装好了相关的实体类型。对应如下:ARP 实体类:https://www.360docs.net/doc/c17547476.html,work.Arp; UPD 实体类:https://www.360docs.net/doc/c17547476.html,work.Icmp;

操作系统课程设计实验报告

河北大学工商学院 课程设计 题目:操作系统课程设计 学部信息学部 学科门类电气信息 专业计算机 学号2011482370 姓名耿雪涛 指导教师朱亮 2013 年6月19日

主要内容 一、设计目的 通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。 二、设计思想 实现一个模拟操作系统,使用VB、VC、CB等windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。 设计模板如下图: 注:本人主要涉及设备管理模块

三、设计要求 设备管理主要包括设备的分配和回收。 ⑴模拟系统中有A、B、C三种独占型设备,A设备1个,B设备2个,C设备2个。 ⑵采用死锁的预防方法来处理申请独占设备可能造成的死锁。 ⑶屏幕显示 注:屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 设备管理模块详细设计 一、设备管理的任务 I/O设备是按照用户的请求,控制设备的各种操作,用于完成I/O 设备与内存之间的数据交换(包括设备的分配与回收,设备的驱动管理等),最终完成用户的I/O请求,并且I/O设备为用户提供了使用外部设备的接口,可以满足用户的需求。 二、设备管理函数的详细描述 1、检查设备是否可用(主要代码) public bool JudgeDevice(DeviceType type) { bool str = false; switch (type) { case DeviceType.a: {

数值分析实验报告资料

机电工程学院 机械工程 陈星星 6720150109 《数值分析》课程设计实验报告 实验一 函数插值方法 一、问题提出 对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1 求五次Lagrange 多项式5L ()x ,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈) 实验步骤: 第一步:先在matlab 中定义lagran 的M 文件为拉格朗日函数 代码为: function[c,l]=lagran(x,y) w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1; for j=1:n+1 if(k~=j) v=conv(v,poly(x(j)))/(x(k)-x(j)); end end l(k,:)=v; end c=y*l; end

第二步:然后在matlab命令窗口输入: >>>> x=[0.4 0.55 0.65 0.80,0.95 1.05];y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382]; >>p = lagran(x,y) 回车得到: P = 121.6264 -422.7503 572.5667 -377.2549 121.9718 -15.0845 由此得出所求拉格朗日多项式为 p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845 第三步:在编辑窗口输入如下命令: >> x=[0.4 0.55 0.65 0.80,0.95 1.05]; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.0845; >> plot(x,y) 命令执行后得到如下图所示图形,然后 >> x=0.596; >> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718 *x-15.084 y =0.6257 得到f(0.596)=0.6257 同理得到f(0.99)=1.0542

操作系统实验报告

操作系统实验报告 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

许昌学院 《操作系统》实验报告书学号: 姓名:闫金科 班级:14物联网工程 成绩: 2016年02月

实验一Linux的安装与配置 一、实验目的 1.熟悉Linux系统的基本概念,比如Linux发行版、宏内核、微内核等。 2.掌握Linux系统的安装和配置过程,初步掌握Linux系统的启动和退出方 法。 3.熟悉Linux系统的文件系统结构,了解Linux常用文件夹的作用。 二、实验内容 1.从网络上下载VMware软件和两个不同Linux发行版镜像文件。 2.安装VMware虚拟机软件。 3.在VMware中利用第一个镜像文件完成第一个Linux的安装,期间完成网络 信息、用户信息、文件系统和硬盘分区等配置。 4.在VMware中利用第二个镜像文件完成第二个Linux的安装,并通过LILO或 者GRUB解决两个操作系统选择启动的问题。 5.启动Linux系统,打开文件浏览器查看Linux系统的文件结构,并列举出 Linux常用目录的作用。 三、实验过程及结果 1、启动VMware,点击新建Linux虚拟机,如图所示: 2、点击下一步,选择经典型,点击下一步在选择客户机页面选择 Linux,版本选择RedHatEnterpriseLinux5,如图所示: 3、点击下一步创建虚拟机名称以及所要安装的位置,如图所示: 4、点击下一步,磁盘容量填一个合适大小,此处选择默认值大小 10GB,如图所示: 5、点击完成,点击编辑虚拟机设置,选择硬件选项中的CD-ROM (IDE...)选项,在右侧连接中选择“使用ISO镜像(I)”选项,点 击“浏览”,找到Linux的镜像文件,如图所示:

网络课程设计实验报告--QQ聊天实现

计算机网络课程设计报告 设计选题网络聊天室 姓名马继鸣 学号 0909090630 完成时间 2012-1-12 一、需求分析

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。 主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。 二. 设计 1.设计思想: 课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服 务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客 户端登录到服务器端才可以实现正常的聊天功能。

2.功能设计 (1)服务器端的主要功能如下。 在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000. 当停止服务时,断开所有用户连接。 (2)客户端的主要功能如下。 连接到已经开启聊天服务的服务端。 当服务器端开启的话,用户可以随时登录与注销。

用户可以向所有人发送消息。 3.详细设计 聊天室服务器端设计 聊天室服务器中主要的功能文件的功能如下: MyButLis.java 主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。 public class MyButLis implements ActionListener private MyServe server; private JTextField filed1; public void actionPerformed(ActionEvent e) MyChatSet.java 服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。 public static ArrayList servers=new ArrayList();//线程队列 public static void addThread(MyserThread th) //增加一个服务器线程对象 public static void sendReMess(String type,String state,String s,MyserThread myth)//返回应答信息 public static void SendOSMess(String type,String user)//其他用户上下线信息 public static void SendChatMess(String type,String sender,String reciver,String Mess)//聊天信息 public static void SendList//用户列表 MyCheckTool.java 保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。 //建立码表,用以保存用户信息 private static Map maps=new HashMap(); public static boolean CheckUser(MyUserInfo user)// 验证用户名

操作系统实验报告

操作系统教程 实 验 指 导 书 姓名: 学号: 班级:软124班 指导老师:郭玉华 2014年12月10日

实验一WINDOWS进程初识 1、实验目的 (1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。 (2)掌握WINDOWS API的使用方法。 (3)编写测试程序,理解用户态运行和核心态运行。 2、实验内容和步骤 (1)编写基本的Win32 Consol Application 步骤1:登录进入Windows,启动VC++ 6.0。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序: E:\课程\os课\os实验\程序\os11\debug>hello.exe 运行结果 (如果运行不成功,则可能的原因是什么?) : 有可能是因为DOS下路径的问题 (2)计算进程在核心态运行和用户态运行的时间 步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。 步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。 步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。 E:\课程\os课\os实验\程序\os12\debug>time TEST.exe 步骤4:运行结果 (如果运行不成功,则可能的原因是什么?) : 因为程序是个死循环程序 步骤5:分别屏蔽While循环中的两个for循环,或调整两个for循环的次数,写出运行结果。 屏蔽i循环: 屏蔽j循环: _______________________________________________________________________________调整循环变量i的循环次数:

操作系统实验报告

操作系统实验报告 银行家算法 班级:计算机()班 姓名:李君益 学号:(号) 提交日期: 指导老师: 林穗 一、设计题目 加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 要求编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效的防止和避免死锁的发生。 二、设计要求

内容: 编制银行家算法通用程序,并检测思考题中所给状态的安全性。 要求: (1)下列状态是否安全?(三个进程共享个同类资源) 进程已分配资源数最大需求数 (状态) (状态) (2)考虑下列系统状态 分配矩阵最大需求矩阵可用资源矩阵 问系统是否安全?若安全就给出所有的安全序列。若进程请求(),可否立即分配? 三、设计分析 一.关于操作系统的死锁 .死锁的产生 计算机系统中有许多独占资源,他们在任一时刻只能被一个进程使用,如磁带机,绘图仪等独占型外围设备,或进程表,临界区等软件资源。两个进程同时向一台打印机输出将导致一片混乱,两个进程同时进入临界区将导致数据库错误乃至程序崩溃。正因为这些原因,所有操作系统都具有授权一个进程独立访问某一辞源的能力。一个进程需要使用独占型资源必须通过以下的次序: ●申请资源 ●使用资源 ●归还资源 若申请施资源不可用,则申请进程进入等待状态。对于不同的独占资源,进程等待的方式是有差别的,如申请打印机资源、临界区资源时,申请失败将一位这阻塞申请进程;而申请打开文件文件资源时,申请失败将返回一个错误码,由申请进程等待一段时间之后重试。只得指出的是,不同的操作系统对于同一种资源采取的等待方式也是有差异的。 在许多应用中,一个进程需要独占访问多个资源,而操作系统允许多个进程并发执行共享系统资源时,此时可能会出现进程永远被阻塞的现象。这种现象称为“死锁”。 2.死锁的定义 一组进程处于死锁状态是指:如果在一个进程集合中的每个进程都在等待只能由该集合中的其他一个进程才能引发的时间,则称一组进程或系统此时发生了死锁。 .死锁的防止 .死锁产生的条件: ●互斥条件

软件项目管理课程设计实验报告

专业班级:软件工程131班姓名:王凯 学号:139074159 指导教师:李伟 2016-05-13

我们生活在一个快速变迁,社会经济大跨步向前迈跃的时代,市场经济突飞猛进,形成了一个多元化市场。在信息系统集成行业中,人们越来越认识到了项目管理的重要性。只有通过不断的学习和进行科学化的实施项目管理,才能使我们在整个项目中满足项目要求,降低项目成本、缩短项目工期、确保项目质量,最终达到用户需求和保障公司的利益。项目管理包括项目范围管理、项目时间管理、项目成本管理、项目质量管理、人力资源管理、项目沟通管理、项目风险管理、项目采购管理和项目整体管理。 项目整体管理包括保证项目各要素相互协调所需要的过程,它需要在相互影响的项目目标和方案中做出平衡,以满足或超出项目干系人的需求和期望。 项目整体管理是在计划实施执行中将项目整体计划目标按步实施展开并转变成项目产出物的管理过程。是一项从项目开始到项目结束的全局性管理工作。实际执行项目时,为了更好完成项目标、任务和计划,我们还要在项目管理中进行综合变更控制。项目整体管理可使用于项目管理的每个阶段。

目录 1、项目概述 (1) 2、工作任务(Statement Of Work,SOW)书 (1) (一)整体要求 (1) (二)系统逻辑模型 (2) (三)系统功能描述 (4) (四)应达到的技术指标和参数 (4) 3、项目进度计划 (5) (一)分解项目工作 (5) (二)项目工作关系表 (6) (三)项目甘特图 (7) (四)网络进度计划图 (8) (五)里程碑计划 (10) 4、项目规模成本估算 (10) (一)分解项目工作 (10) (二)项目规模估算表 (12) (三)计算开发成本 (13) (四)计算管理、质量成本 (13) (五)直接成本 (13) (六)计算间接成本 (14)

操作系统实验报告.

学生学号0121210680225 实验课成绩 武汉理工大学 学生实验报告书 实验课程名称操作系统 开课学院计算机科学与技术学院 指导老师姓名刘军 学生姓名李安福 学生专业班级软件sy1201 2014 — 2015 学年第一学期

《操作系统》实验教学大纲 课程编号: 课程名称:操作系统/Operating System 实验总学时数:12学时 适应专业:计算机科学与技术、软件工程 承担实验室:计算机科学与技术学院实验中心 一、实验教学的目的和任务 通过实验掌握Linux系统下常用键盘命令、系统调用、SHELL编程、后台批处理和C程序开发调试手段等基本用法。 二、实验项目及学时分配 序号实验项目名称实验学时实验类型开出要求 01 Linux键盘命令和vi 2 设计必开 02 Linux下C编程 2 设计必开 03 SHELL编程和后台批处理 2 设计必开 04 Linux系统调用(time) 2 设计必开 05 Linux进程控制(fork) 4 设计必开 三、每项实验的内容和要求: 1、Linux键盘命令和vi 要求:掌握Linux系统键盘命令的使用方法。 内容:见教材p4, p9, p40, p49-53, p89, p100 2、Linux下的C编程 要求:掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。 内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。 3、SHELL编程和后台批处理 要求:掌握Linux系统的SHELL编程方法和后台批处理方法。 内容:(1) 将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。 (2) 将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。 (3) 修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键 盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容, 然后输出到屏幕。 4、Linux系统调用使用方法。

计算机网络课程设计内容及要求

《计算机网络课程设计》 一、课程设计的目的 计算机网络课程设计是专业实践环节之一,是学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的是引导学生将书本上抽象的概念与具体的实现技术相结合,使学生体会网络协议的设计与实现过程,以及专业技术人员所使用的基本方法和技巧,培养学生解决计算机网络问题的实际能力,掌握组建计算机网络的基本技术,提高学生的综合应用能力。 二、课程设计要求和内容 课程设计要求: 1、正确理解题意; 2、具有良好的编程规范和适当的注释; 3、有详细的文档,文档中应包括设计题目涉及的基础知识、设计思路、程序流程图、程序清单、开发中遇到的问题及解决方法、设计中待解决的问题及改进方向。 4、有一定的自学能力和独立分析问题、解决问题的能力。包括学会自己分析解决问题的方法,对设计中遇到的问题,能通过独立思考、查阅工具书、参考文献,寻找解决方案。评分标准: 1.是否有正确的运行结果; 2.是否有良好的编程规范和适当的注释; 3.文档是否完备。 课程设计内容即参考题目:(任选下列一题或自行另选设计题目): XX 高校校园网网络规划与设计 一、需求分析 (1)用户规模500 台计算机。 (2)用户大致平均分散在4栋楼房内,4 栋楼房排成前后两排,楼房之间各相距200米,楼房高4 层。每栋楼的4 楼用户构成两个VLAN。 (3)中心机房设在其中1 栋楼房的1 楼靠近另一栋楼房的一端。 (4)安装对外WWW、业务WWW、邮件、FTP、BBS、DNS、数据库七个服务器。提供匿 名服务,但FTP 仅对内部开放。 (5)提供LAN、WLAN接入。 (6)在业务WWW 服务器上配备基于Web 的业务应用系统,所有用户使用业务系统实现 网上办公。 (7)要求出口带宽为1Gbps。 二、设计要求 (1)写出简要的可行性分析报告。 (2)设计网络结构,并给出解释。 (3)除用户计算机已购置外,其余全部设备和通信线路需要重新购买、安装。试具体给出全部主要设备的配置、型号或技术指标及其测算依据。 (4)给出工程预算(包括设备、线路等,不含施工费)及其计算依据。 2、设计一个中小企业网络规划与设计的方案 一、用户需求 (1)公司有1000台PC (2)公司共有7 个部门,不同部门的相互访问要求有限制,公司有3 个跨省的分公司。

相关文档
最新文档