课程设计信号分析与处理C语言编程

课程设计信号分析与处理C语言编程
课程设计信号分析与处理C语言编程

勘查技术课程设计:信号分析与处理基础

(西南石油大学---资源与环境学院)

对于勘查技术与工程专业的学生来说,《信号分析与处理基础》是一门专业基础课,我是2010级的,

我们是在大三第一学期上的,这门课数学与物理知识要求比较高,不过一开认真仔细学的话,也会学的好的,起码要比那空洞、生奥、蛋疼《弹性波动力学》好学些。

随着课程的结束,《信号分析与处理基础》的课程设计也随之而来,我们是老师布置了 4 个题目,分单号与双号各自做2道,我是单号,做的是滤波与相关。

这次课程设计,注意考验大家的编程能力,目前我们学过得就只有C 语言,可以用Fortran,Matlab 等等,Matlab 可以现学现用,上手快。但是大家也可以挑战下自己的C 语言,提高下自己的编程能力,这是一次很好地机会,真正实用的时刻。我就是用C 语言编的。

其余2题,我也把程序与结果图收集到了这里,以供学弟、学妹们参考之用!我的QQ :593066480,有什么不懂的,或者好的见教,欢迎来信息交流!

题目如下:

1、滤波

已知原始地震记录x(t),要求:设计滤波器,消除x(t)中10Hz 以下,80Hz 以上的干扰信号。

)()()(t n t s t x +=

)2sin()2sin()(22112

2

t f e

A t f e

A t s t t ππββ--+=

)]2cos()2[sin()(433t f t f A t n ππ+=

建议参数: A 1=1,A 2=0.8,A 3=0.5

f 1=25Hz ,f 2=45Hz ,f 3=5Hz ,f 4=80 取样点数:N=200

抽样间隔:Δ=0.004,?=100

1时域滤波: 由)(*)()(t h t x t y = (h(t)为滤波因子)

)sin()cos(2

)(0t t t

t h ωωπ?=

建议参数:第一参数:ff1=20Hz ,ff2=50Hz 第二参数:ff1=25Hz ,ff2=45Hz 抽样点数:M=60 抽样间隔:Δ=0.004 112ff πω=,222ff πω= 2

1

2ωωω-=

?,2

1

20ωωω+=

单独计算:π

ω

?=

2)0(h

要求:画出x(t),h(t),y(t)图形,为了分析方便,也可以画出有效波s(t),干扰波n(t)及其频谱进行分析,如下图:

最后就是答辩,老师问问题,学生回答。主要注意几点就行了 1, 熟悉课本滤波部分知识;

2, 第二参数要比第一参数滤波效果好,因为门第一参数开大了,进来的干扰波也多了,从

第一参数:Fy 、第二参数Fy 图形上可以看出来,干扰波频谱被压小了。 第二参数压制了干扰波,突显了有效波,所有好。

2频域滤波 由公式:)()()(k H k X k Y ?=

1, 对x(t)进行补0,28

或者29

总之必须是2的次方,因为要用到FFT 公式与IFFT 公式,进行FFT 变换得到X (k );

2, H (k )的求法:H (k )也必须与X (k )点数相同

N

f ?=

?1

, 单门:=??f m 120, =??f m 250

双门:=??f m 120, =??f m 250,3m =N-2m ,4m =N-1m ,

3, )()()(k H k X k Y ?=在用IFFT 反变换得y(t),存在实部与虚部,需要分析与处理 要求:画出H(k)、X(k)、Y(k)图形,并且分析X(k)、Y(k)的区别,还有开单双门的区别与差异,时域与频域滤波谁好、为什么?

3,分析:从单双门实部图形看出,与有效波是完全一样的,但是幅值变大,这体现了滤波突显有效波的特性;从图形看出虚部对结果没有影响;

单双门虚部完全不同,这是由于开单双门效果不同引起的。单门虚部变化大,而且幅值与起伏变化也大,而双门幅值很小,小到可以忽略不计。按理说反变化IFFT后应该只有实部,没有虚部,至于为什么会产生虚部,希望读者自己下去研究下,希望大家相互交流、交流!

第一个注意问题:单门与双门谁好?答案当然是:双门好。因为原始有效波x(t)是实数信号,对应的频谱是偶对称的,单门时,只是让一部分通过了;而双门则全部通过,肯定效果要好!而且实部波形,明显看出双门是干扰部分起伏比单门时要平缓,小得多了。

第二个注意问题:时域与频域哪个好?频域要好,首先从两者波形上可以看出,其次就是频域滤波,只让有效波通过,而之外的完全被滤掉,可谓是真正的理想状态。

第三个注意问题:频域滤波y(t)实部图200点以后,为什么有波形起伏?因为由于时域离散,必将导致频域周期化,这是由于频域周期化的结果。

2、相关

)

2sin()()2sin()(2211t f A t y t f A t x ππ==

建议参数:=1A 1,=1f 30Hz ,抽样点数:M=100 =2A 0.8,=2f 50Hz ,抽样点数:M=150 抽样间隔:Δ=0.004s

要求:画出)()(t y t x 、,)()()(τττ-Rxy Rxy Rxx 、、,)()(ττRyx Ryy 、的图形并分析验证书上自互相关性质的正确性!

3、快速褶积

)

()()()2sin()()2sin()(21222111t x t x t y t f A t x t f A t x *===ππ 建议参数:=1A 1,=1f 25Hz ,抽样点数:M=250 =2A 0.7,=2f 55Hz ,抽样点数:M=200 抽样间隔:Δ=0.004s

4、地震记录的生成和频谱分析

地震记录的生成和频谱分析、信噪比计算以及补0对频谱的影响,给定地震子波的数学表达式:)

2sin()(1

ft A t b t

πα-=

和反射系数序列:=30ξ0.2,=65ξ0.4,=81ξ0.15,=103ξ0.5 =115ξ0.35, =146ξ0.1, =157ξ0.2

产生一个含有随机干扰信号的地震信号:)()()()()()(t n t t b t n t s t x +*=+=ξ (其中n(t)可以用-0.4—+0.4之间的随机数代替) 要求:

1, 制作合成地震记录x(t),并对b(t)和s(t)做频谱分析(用FFT ),其中:b(t)

(N=41,Δ=0.004s ,f=35Hz ,α=100,A 1=1)反射序列和随机干扰N=200; 2, 计算x(t)信噪比,改变n(t)(用-0.8—+0.8之间的随机数代替)的大小再计

算。

信噪比:)()(2

2t n t s SNR ∑

∑= 3, 分别对b(t)后边、前边、中间补0,计算补0前后频谱的变化及补0多少对

频谱的影响。

附带程序:

最麻烦的就是编程序了,开始的时候,是很麻烦,不过只有去啃,就一定会有收获,比如:我开始编褶积程序的时候,整理了几天,上网查,翻图书,后来突然明白,靠公式就可以编出来了。只是FFT需要些功夫,其余都很快!书上介绍的是基2FFT,这个代码网上到处都有,想提升自己的编程能力,就去尝试编基4FFT,以及考虑基nFFT吧,祝大家好运。

1、时域滤波程序代码

#include

#include

#include"conv.cpp"

#include"dft.cpp"

#include"gyh.cpp"

#define T 200//************T表示x(t)点数,R表示n(t)点数

#define R 60

void main()

{

int i,j,B=100;//*********************B表示贝塔的值

FILE *fp;

double A1=1.0,A2=0.8,A3=0.5;//********产生x(t)

double f1=25,f2=45,f3=5,f4=80;//******频率取值

double data=0.004;//******************取样点数

double s[T],n[T], x[T],h[R],y[T+R-1];

double si[T]={0},s1[T]={0},s1i[T]={0},Fs[T]={0};

double ni[T]={0},n1[T]={0},n1i[T]={0},Fn[T]={0};

double xi[T]={0},x1[T]={0},x1i[T]={0},Fx[T]={0};

double hi[T]={0},h1[T]={0},h1i[T]={0},Fh[T]={0};

double y1[T+R-1]={0},yb[T+R-1]={0},yb1[T+R-1]={0},Fy[T+R-1]={0};

for(i=0;i

{

s[i]=A1*exp(-B*pow((i*data),2)) * sin(2*PI*f1*i*data) + A2*exp(-B*pow((i*data),2)) * sin(2*PI*f2*i*data);

n[i]=A3*(sin(2*PI*f3*i*data)+cos(2*PI*f4*i*data));

x[i]=s[i]+n[i];

}

//对s(t)进行频谱分析,用DFT

dft(s,si,s1,s1i,Fs,T,1);

dft(n,ni,n1,n1i,Fn,T,1);

dft(x,ni,x1,x1i,Fx,T,1);

//统一导出

fp=fopen("D:\\sh\\time1\\snxFsFnFx1.txt","w");

for(i=0;i

fprintf(fp,"%f\t%f\t%f\t%f\t%f\t%f\n",s[i],n[i],x[i],Fs[i],Fn[i],Fx[i]); fclose(fp);

//产生h(t)

float ff1=20,ff2=50;//*****************可以修改的h(t)参数

double w1,w2,dataw,w0;

w1=2*PI*ff1,w2=2*PI*ff2;

dataw=(w2-w1)/2,w0=(w2+w1)/2;

h[0]=2*dataw/PI;

for(j=1;j

{

h[j]=(2.0/(PI*j*data))*cos(w0*j*data)*sin(dataw*j*data);

}

dft(h,hi,h1,h1i,Fh,R,1);

gyh(Fh,R);

fp=fopen("D:\\sh\\time1\\hFh.txt","w");

for(j=0;j

fprintf(fp,"%f\t%f\n",h[j],Fh[j]);

fclose(fp);

//褶积滤波得到y(t)

con(x,h,y,T,R);

//对y(t)作傅里叶变换

dft(y,y1,yb,yb1,Fy,T+R-1,1);

//导出y及频谱Y(k)

fp=fopen("D:\\sh\\time1\\yFy1.txt","w");

for(i=0;i

fprintf(fp,"%f\t%f\n",y[i],Fy[i]);

fclose(fp);

printf("\nover\n\n");}

2、频域滤波程序代码:

#include

#include

#include"fft.cpp"

#include"ifft.cpp"

#define G 256

void main()

{

int i,B=100;

FILE *fp;//定义指针文件

double A1=1.0,A2=0.8,A3=0.5;//产生x(t)

double f1=25,f2=45,f3=5,f4=80;//参数

double data=0.004;//抽样间隔

double s[200],n[200];

double x[G]={0},x1[G]={0},h[G]={0},h1[G]={0},y[G]={0},y1[G]={0};

double Fx[G]={0},Fh1[G]={0},Fh2[G]={0},Fy1[G]={0},Fy2[G]={0};

double Y1[G]={0},Y1i[G]={0},Y2[G]={0},Y2i[G]={0};

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

{

s[i]=A1*exp(-B*pow((i*data),2)) * sin(2*PI*f1*i*data) + A2*exp(-B*pow((i*data),2)) * sin(2*PI*f2*i*data);

n[i]=A3*(sin(2*PI*f3*i*data)+cos(2*PI*f4*i*data));

x[i]=s[i]+n[i];

}

//导出x[t]

fp=fopen("D:\\sh\\py\\x.txt","w");

for(i=0;i

fprintf(fp,"%f\n",x[i]);

fclose(fp);

//x[t]频谱计算

fft(x,x1,Fx,G,1);

//导出X(k)

fp=fopen("D:\\sh\\py\\Fx.txt","w");

for(i=0;i

fprintf(fp,"%f\n",Fx[i]);

fclose(fp);

//处理h[t]

double dataf;

double m1,m2,m3,m4;

dataf=1.0/(data*G);

m1=20.0/dataf,m2=50.0/dataf;

m3=G-m2,m4=G-m1;

//计算,导出单门

for(i=0;i

{

if(i>=int(m1)&&i<=int(m2))

Fh1[i]=1;

else Fh1[i]=0;

}

//计算,导出双门

for(i=0;i

{

if((i>=int(m1)&&i<=int(m2))||(i>=int(m3)&&i<=int(m4))) Fh2[i]=1;

else Fh2[i]=0;

}

fp=fopen("D:\\sh\\py\\Fh12.txt","w");

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

fprintf(fp,"%f\t%f\n",Fh1[i],Fh2[i]);

fclose(fp);

for(i=0;i

{

Y1[i]=x[i]*Fh1[i];

Y1i[i]=x1[i]*Fh1[i];

Fy1[i]=sqrt(pow(Y1[i],2)+pow(Y1i[i],2));

}

for(i=0;i

{

Y2[i]=x[i]*Fh2[i];

Y2i[i]=x1[i]*Fh2[i];

Fy2[i]=sqrt(pow(Y2[i],2)+pow(Y2i[i],2));}

fp=fopen("D:\\sh\\py\\Fy12.txt","w");//导出单双门

for(i=0;i

fprintf(fp,"%f\t%f\n",Fy1[i],Fy2[i]);

fclose(fp);

//Y[k]作反变换IFFT,并且导出实部,虚步

ifft(Y1,Y1i,G,-1);

ifft(Y2,Y2i,G,-1);

fp=fopen("D:\\sh\\py\\yt12.txt","w");

for(i=0;i

fprintf(fp,"%f\t%f\t%f\t%f\n",Y1[i],Y1i[i],Y2[i],Y2i[i]);

fclose(fp);

printf("\nover\n\n");}

3、相关程序代码

#include

#include

#include"correl.cpp"

#define PI 3.14159265

void main()

{

int i,j;

double A1=1.0,A2=0.8;

double f1=30,f2=50;

double data=0.004,p=100;

double x[100]={0},y[150]={0},xy[249]={0},yx[249]={0};

double xx[199],yy[299],xyft[249];

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

x[i]=A1*sin(2*PI*f1*i*data);

for(j=0;j<150;j++)//计算y(t)

y[j]=A2 * exp(-p*j*data*j*data)*sin(2*PI*f2*j*data);

correl(x,y,100,150,xy);

correl(x,x,100,100,xx);

correl(y,y,150,150,yy);

correl(y,x,150,100,yx);

FILE *fp,*fp1,*fp2,*fp3,*fp4,*fp5,*fp6;//导出数据

int i1,j1,k,l,m,n;

fp1=fopen("D:\\sh\\data\\x.txt","w");

fp2=fopen("D:\\sh\\data\\y.txt","w");

fp3=fopen("D:\\sh\\data\\xy.txt","w");

fp4=fopen("D:\\sh\\data\\xx.txt","w");

fp5=fopen("D:\\sh\\data\\yx.txt","w");

fp6=fopen("D:\\sh\\data\\yy.txt","w");

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

xyft[i]=yx[i];

fp=fopen("D:\\sh\\data\\xyt.txt","w");

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

fprintf(fp,"%f\n",xyft[i]);

fclose(fp);

for(i1=0;i1<100;i1++)

fprintf(fp1,"%f\n",x[i1]);

fclose(fp1);

for(j1=0;j1<150;j1++)

fprintf(fp2,"%f\n",y[j1]);

fclose(fp2);

for(k=0;k<249;k++)

fprintf(fp3,"%f\n",xy[k]);

fclose(fp3);

for(l=0;l<199;l++)

fprintf(fp4,"%f\n",xx[l]);

fclose(fp4);

for(m=0;m<249;m++)

fprintf(fp5,"%f\n",yx[m]);

fclose(fp5);

for(n=0;n<299;n++)

fprintf(fp6,"%f\n",yy[n]);

fclose(fp6);}

4、地震子波及频谱分析

#include

#include"conv.cpp"

#include"fft.cpp"

#include"uni.cpp"

#define V 64//*********宏定义的参数,可以修改的点数

#define W 256

void main()

{

int i;

FILE *fp;

double A1=1,f=35,a=100;//********************a代表阿尔法α

double data=0.004;//************************* 抽样间隔

double b[V]={0},bi[V]={0},Fb[V]={0},ks[200]={0};

double sz[W]={0},s[200]={0},szi[W]={0},Fsz[W]={0};

double x[W]={0},xi[W]={0},Fx[W]={0},n[200]={0};

double xwp[V];

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

b[i]=A1*exp(-a*i*data)*sin(2*PI*f*i*data);

//*****产生ξ(t)

ks[29]=0.2,ks[64]=0.4,ks[80]=0.15,ks[102]=0.5,ks[114]=0.35,ks[145]=0.1,ks[1 56]=0.2;

fp=fopen("D:\\da\\b.txt","w");

for(i=0;i

fprintf(fp,"%f\n",b[i]);

fclose(fp);

fp=fopen("D:\\da\\ks.txt","w");

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

fprintf(fp,"%f\n",ks[i]);

fclose(fp);

con(b,ks,sz,41,200);

fp=fopen("D:\\da\\s.txt","w");

for(i=0;i

fprintf(fp,"%f\n",sz[i]);

fclose(fp);

for(i=0;i<200;i++)//*******************甩掉后40个样点

s[i]=sz[i];

uni(-0.4,0.4,200,n);//*****************产生随机数

fp=fopen("D:\\da\\n.txt","w");

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

fprintf(fp,"%f\n",n[i]);

fclose(fp);

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

x[i]=s[i]+n[i];

fp=fopen("D:\\da\\x.txt","w");

for(i=0;i

fprintf(fp,"%f\n",x[i]);

fclose(fp);

fft(sz,szi,Fsz,W,1);//**********

fft(b,bi,Fb,V,1);//************************用fft对b[t],x[t]频谱分析fft(x,xi,Fx,W,1);

fp=fopen("D:\\da\\Fs.txt","w");

for(i=0;i

fprintf(fp,"%f\n",Fsz[i]);

fclose(fp);

fp=fopen("D:\\da\\Fb.txt","w");

for(i=0;i

fprintf(fp,"%f\n",Fb[i]);

fclose(fp);

fp=fopen("D:\\da\\Fx.txt","w");

for(i=0;i

fprintf(fp,"%f\n",Fx[i]);

fclose(fp);

for(i=0;i

xwp[i]=atan(bi[i]/b[i]);

fp=fopen("D:\\da\\xw.txt","w");

for(i=0;i

fprintf(fp,"%f\n",xwp[i]);

fclose(fp);}

5、信噪比

#include

#include

#include"conv.cpp"

#include"uni.cpp"

#define PI 3.14159265

#define V 64

#define W 256

void main()

{

int i;

double A1=1,f=35,a=100;

double data=0.004,Sr,tps=0,tpn=0;

double b[V]={0},sz[240]={0},s[200]={0},ks[200]={0};

double x[W]={0},n[200]={0};

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

b[i]=A1*exp(-a*i*data)*sin(2*PI*f*i*data);

ks[29]=0.2,ks[64]=0.4,ks[80]=0.15;

ks[102]=0.5,ks[114]=0.35,ks[145]=0.1,ks[156]=0.2;

con(b,ks,sz,41,200);

for(i=0;i<200;i++)//甩掉后40个样点

s[i]=sz[i];

uni(-0.4,0.4,200,n);//随机数

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

x[i]=s[i]+n[i];

for(i=0;i<200;i++)//信噪比计算

{

tps+=pow(s[i],2);

tpn+=pow(n[i],2);

}

Sr=tps/tpn;

printf("SNR1=%f\n",Sr);}

6、补0影响

汇编语言课程设计

沈阳大学

2.3 MASM的介绍 MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发,历经二三十年的发展,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4等指令系统。 2.4总体设计功能 本次课程设计的内容是采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示 程序,由$及*字符相间,从两侧向中间螺旋汇聚直至形成一个矩形,这就要求该霓虹灯能够动态地进行变化;霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。 定时器中断处理程序:计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。 视频显示程序设计:一般由DOS 或BIOS调用来完成。有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。用INT 10H中断即可建立某种显示方式。用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用。 键盘扫描程序设计:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器,以及检测键盘状态,有无输入,并检测输入各值。 2.5详细功能设计 2.5.1主程序功能 主程序通过调用各个子程序来实现清屏,改变图形等功能,具体调用过程如图1所示。 沈阳大学

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

汇编语言课程设计安排

汇编语言课程设计安排 班级:计本1060110606 课程设计时间:15周 课程设计地点:2#机房 负责教师:程世旭、雷鸣、胡杰、林华、白凯 课设上机时间:上午:8:3011:30 下午:2:305:30 课程设计指导教师安排: 10501:程世旭10502:雷鸣10503:白凯 10504:雷鸣10505:胡杰10506:林华 时间周一周二周三周四周五周六上午10601/2/3 10601/2/3 10601/2/3 10604/5/6 10601/2/3 10601/2/3 验收下午10604/5/6 10604/5/6 10604/5/6 10604/5/6 验收

汇编语言课程设计任务书 课程设计题目:显示系统时间 一、课程设计设计目的 1. 掌握中断的使用方法 2. 掌握BIOS系统功能调用 3. 掌握基本的显存读写技术 4. 学会用汇编语言编写一个较完整的实用程序,培养自己的动手操作能力 5 .学习程序设计的基本思路和方法,编程、调试、撰写报告等 二、程序内容: 第一部分:定义显示界面。 第二部分:调用系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入显存区。(显存的起始地址:B8000H) 第三部分:将存在系统内存区的时间用字符串的形式显示出来。 注意:1、如果用图形方式显示更好, 2、注意设置显示时候的背景颜色 3、可以增加键盘设置的功能,设置显示颜色,显示位置 三、程序设计原理 首先在数据段开辟一显示缓冲区,用来存储系统时间。调用BIOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区。通过写显存将时间显示出来。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。 四、程序流程图

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

微机原理与汇编语言课程设计报告

西北师范大学 计算机科学与工程学院 微机原理与汇编语言 课程设计报告 设计题目:中断控制点阵显示与音乐模块姓名: 学号: 专业班级: 系所中心: 指导老师: 起讫时间: 设计地点: 2016年8月20日

摘要 使用8086汇编语言,在唐都TD-PITE实验箱上进行硬件连线,在计算机上采用与该实验箱配套的软件进行输入,观察实验结果。设计思路是利用在实验箱上i386内集成的两片8259芯片分别进行中断,通过实验箱上的两个脉冲开关发送信号到总线上开放的两个中断口,送入CPU内部的8259中。此时按下脉冲开关kk1+,第一个中断发生,在16*16点阵上循环滚动显示“西北师大汇编设计李泓毅”,若按下kk2+则第二个中断发生,执行音乐模块子程序,利用8254芯片开始响应预先编排好的音乐。 【关键词】级联中断;8259芯片;16*16点阵;8254芯片;SPK音乐模块;脉冲信号

目录 摘要 (2) 第一章课程设计 (2) 1.1 目的和任务 (2) 1.2 设计环境、设备与器材 (2) 第二章设计内容和方案 (3) 2.1 设计内容 (3) 2.2 设计方案 (3) 第三章课程设计相关原理简述 (3) 第四章设计实现 (4) 4.1 系统设计框架结构 (4) 4.2 系统硬件设计 (4) 4.3 系统软件设计 (6) 4.4 程序流程图 (6) 4.5 核心数据结构 (8) 4.6 关键代码片段分析 (10) 第五章设计验证 (10) 5.1 验证步骤及结果 (10) 5.2 数据分析 (10) 5.3 遇到的问题及解决 (11) 5.4 需要讨论的其它问题 (11) 5.5 结论 (11) 第六章设计总结 (12) 第七章本课程教学建议 (13) 第八章参考文献 (13) 第九章附录:源代码 (13) 第一章课程设计 1.1 目的和任务 使用8259芯片进行中断程序设计,在第一个中断中响应字模显示模块,在第二个中断中响应音乐发声模块。

《C语言程序设计》课程设计报告

《C语言程序设计》课程设计报告 (2013— 2014学年第 3 学期) 题目:C语言课程设计 专业:软件工程 班级:软件工程技术2班 姓名学号: 1 林燕萍 指导教师:吴芸 成绩: 计算机科学与技术系 2014 年6月23日

目录 一、课程设计的目的与要求 (1) 二、方案实现与调试 (3) 2.1 掷骰子游戏 (5) 2.2 射击游戏 (7) 2.3 计算存款本息之和 (8) 2.4肇事逃逸 (10) 2.5 礼炮 (12) 2.6 汽车加油 (14) 2.7 大优惠 (16) 2.8 金币 (19) 三、课程设计分析与总结 (23) 附录程序清单 (25) 一、课程设计的目的与要求(含设计指标) C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训,以提高学习者的动手和编程能力,从应试课程转变为实践工具。 这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。达到如下目的: 1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能; 2.让学生扎实掌握C程序设计语言的相关知识; 3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。 编写程序要求遵循如下基本要求: ①模块化程序设计 ②锯齿型书写格式

③必须上机调试通过 二、方案实现与调试 2.1掷骰子游戏 2.1.1 题目内容的描述 1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。 2) 将每人每次的分值累加计分 3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。 4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。 2.1.2输入数据类型、格式和内容限制和输出数据的说明 数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方 2.1.3主要模块的算法描述 本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。 程序流程图 图1 掷骰子游戏 2.1.4调试过程及实验结果

汇编课程设计

燕山大学 汇编语言课程设计说明书 题目:计算机钢琴程序 交通灯控制系统 学院(系):信息科学与工程学院 年级专业: 10级计算机科学2班 学号: 100104010113 学生姓名:马强 学号: 100104010116 学生姓名:夏洋 指导教师:何海涛、邹晓红 完成日期: 2013年7月3日

目录 1.课程设计的目的和意义........................................................................................................... - 2 - 1.1课程设计目的................................................................................................................ - 2 - 1.2课程设计的意义............................................................................................................ - 2 - 2.题目一:计算机钢琴程序....................................................................................................... - 2 - 2.1系统的主要功能............................................................................................................ - 2 - 2.2总体设计方案................................................................................................................ - 2 - 2.2.1扬声器驱动方式................................................................................................. - 2 - 2.2.2延时原理............................................................................................................. - 3 - 2.2.3键盘控制发声程序............................................................................................. - 4 - 2.2.4设计总结............................................................................................................. - 5 - 2.3作品使用说明................................................................................................................ - 6 - 3.题目二:交通灯控制系统....................................................................................................... - 6 - 3.1系统的主要功能............................................................................................................ - 6 - 3.2 系统工作原理............................................................................................................... - 6 - 3.2.1 8259的工作原理................................................................................................ - 6 - 3.2.2 8255A的工作原理:...................................................................................... - 7 - 3.2.3 8253的工作原理:............................................................................................ - 7 - 3.3总体设计方案................................................................................................................ - 7 - 3.3.1程序流程图......................................................................................................... - 8 - 3.3.2接口电路图....................................................................................................... - 11 - 3.4交通灯的设计总结...................................................................................................... - 11 - 4.课程设计心得体会................................................................................................................. - 12 - 5.参考文献................................................................................................................................. - 12 - 6.附录:程序代码..................................................................................................................... - 12 - 6.1计算机钢琴程序代码.................................................................................................. - 12 - 6.2交通灯控制系统代码.................................................................................................. - 14 -

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学 号 指导教师 完成日期

目录 目录 (2) 1概述 (1) 1.1 设计目的 (1) 1.2 设计内容 (1) 2系统需求分析 (1) 2.1 系统目标 (1) 2.2 主体功能 (1) 2.3 开发环境 (1) 3 系统概要设计 (2) 3.1 系统的功能模块划分 (2) 3.2 系统流程图 (3) 4系统详细设计 (3) 5测试 (4) 5.1 测试方案 (4) 5.2 测试结果 (4) 6小结 (5) 参考文献 (6) 附录 (7) 附录源程序清单 (7)

实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 1.2 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 2.2 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 2.3 开发环境 TASM5.0集成环境

汇编课程设计报告

汇编课程设计报告

学 号: 课程设计 题目打印水仙花数 学院计算机科学与技术 专业计算机科学与技术 班级 姓名 指导教师

武汉理工大学《汇编语言程序设计》课程设计 2012 年 6 月28 日 课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 打印水仙花数 初始条件: 理论:完成了《汇编语言程序设计》课程, 对微机系统结构和80系列指令系 统有了较深入的理解,已掌握了汇 编语言程序设计的基本方法和技 巧。 实践:完成了《汇编语言程序设计》的4 个实验,熟悉了汇编语言程序的设 计环境并掌握了汇编语言程序的 调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 进一步理解和掌握较复杂程序的设计方 法,掌握子程序结构的设计和友好用户界 3

2.1简要分析 2.1.1原理说明 可以用标签来接收三位数,标签的好处在于可以限制输入的位数,并且通过实际输入位数可以直接进行一部分的异常处理。 将数存到标签后,因为是以ASCII码的形式存的,所以需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。在转换成十六进制数的过程中,可以对输入的数进行异常处理,判断是否输入有误。 在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数,决定是否输出该数。 在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。 系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其他则提示输入错误并重新输入。 2.1.2程序流程图

(新)汇编语言课程设计四则运算

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制11-2班 姓名: 倪天天 学号:2011025745 指导教师:郝维来 2013年6月28日

摘要 计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。 关键词:计算器,汇编语言,四则运算,功能模块

Abstract Calculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, the judgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator. Keyword:Calculator, assembly language, four arithmetic, functional modules

计算机程序设计(C语言)课程设计报告

计算机程序设计(C语言) 课程设计报告 题目:电子动画时钟 学院:机电工程学院 专业: 班级:090109班 学号: : 指导教师: 设计日期:

一、概述 选题背景:随着社会的进步和科技的发展,电子钟表逐渐成为了人们生活中不可缺少的一部分。设计思路:(一)功能模块设计,1.电子时钟执行主流程2.电子时钟界面显示3.电子时钟按键控制模块4.时钟动画处理模块(二)数据结构设计 1.time结构体 2.全局变量(三)函数功能描述1.keyhandle()2.timeupchange()3.timedownchange()4.digitclock()5.drawcursor()6. clearcursor()7.void clockhandle()8.main()(四)程序实现(五)运行结果。 二、概要设计 2.1、数据结构 此程序中,使用了C语言的time结构体和几个全局变量,1.time结构体struct time { unsigned char ti_min; /*分钟*/ unsigned char ti_hour; /*小时*/ unsigned char ti_hund; /*百分之一秒*/ unsigned char ti_sec; /*秒*/ }; time结构体定义在dos.h文件中,可用来保存系统的当前时间,其中各字段的值的含义如下。 1.unsigned char ti_min:保存分钟值。

2.unsigned char ti_hour:保存小时。 3.unsigned char ti_hund:保存百分之一秒,例如,ti_hund=500,表示1/500秒。 4.unsigned char ti_sec:保存秒数。 2.2、全局变量 下面对程序用到的全局变量及数组进行说明. 1. double h,m,s: 此3个全局变量分别用来保存小时,分钟,秒数。 2. double x,x1,x2,y,y1,y2:保存数字时钟中小时,分,秒在屏幕中显示的坐标值。 3.struct time t[1]:定义一个time结构类型的数组,此数组只有t[0]一个元素。 2.3 模块列表 1.时钟动画处理模块 时钟动画处理模块主要由clockhandle()函数来实现,程序中旧时钟指针的擦除是借助setwritemode(mode)函数设置画线的方式来实现。如果mode=1,则表示画线时用现在特性的线所画之处原有的线性异或(XOR)操作,实际上画出的线是原有线与现在规定的线进行异或后的结果。因此,当线的特性不变时,进行两次画线操作相当于没有画线,即在当前位置处清除了原来的画线。 2.时钟按键控制模块 在电子时钟中,按键控制模块最主要的工作就是必须能读取用户按键,对按键值进行判断,并调用相应函数来执行相关操作。 3.

汇编语言课程设计报告

课程设计报告 课程名称课题名称 汇编语言程序设计 1.显示彩色菱形 2.显示系统当前时间 专业 班级 学号 姓名 指导教师 年月日

课程设计任务书 课程名称汇编语言程序设计 课题 1.显示彩色菱形 2.显示系统当前时间专业班级 学生姓名 学号 指导老师 审批 任务书下达日期年月日 任务完成日期年月日

一、设计内容与设计要求 1.设计内容:通过本周的课程设计,学生能够巩固所学的基础知识,并能 够使学生更加熟练运用汇编程序设计语言来掌握综合汇编程序设计的方法和过程,以及为设计其它应用软件提供帮助,进而提高学生的软件设计能力。 (1)、编制一计算比赛成绩的程序,要求完成以下功能: a、9 名评委,每个评委给分范围为 0~100(整数); b、9名评委给分中,去掉一个最高分和一个最低分,剩余7 名评委的平均分即为参赛者的得分(精确到小数点二位); c、将得分在光标位置处显示出来。 (2) 、编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于30 字的 grade 数组中,各数据的格式为: 学号,成绩 1,成绩 2,?,成绩 5 然后根据 grade 中的学生成绩,把学生名次填入rank 数据组中,并显示出来,格式为:学号,名次 (3)、利用 INT 1CH(大约每秒中断 18.2 次)编写一个中断驻留程序,要求在屏幕的右 上角显示计算机中当前系统时间,显示格式为 时:分: 秒:1/100 秒 (4)、输入一个菱形的两条对角线长,在屏幕上用‘ * ’号画出一个彩色的菱形。 (5)、设置图形方式并显示彩条,要求: 选择背景色为蓝色,调色板为0,然后每行显示一种颜色,每四行重复一次, 一直到整个屏幕都显示出彩条 2.设计要求: 掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一 些实际的问题,为将来编写软件积累一些典型的案例处理经验。 (1)、设计正确,方案合理。 (2)、界面友好,使用方便。 (3)、程序精炼,结构清晰。 (4)、设计报告 5000 字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。 (5)、上机演示。 (6)、按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编

VB程序设计课程设计报告完整版

V B程序设计课程设计 报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

《VB程序设计》 课程设计报告(2016 — 2017 学年第 1 学期) 题目:排序演示 学院:经济与管理学院 班级:物流管理1502 学号: 姓名: 指导教师:阮冰 时间:起 2017年1月3日止 1月6日

一、课程设计基本信息 课程代码:05190124 课程名称:计算机基础课程设计 课程英文名称: Computer-based Course Design 课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群 课程面向专业:生物科学类、制药工程、制药工程(生物制药)、药物制 剂、物流管理 课程类型:必修课 先修课程:大学计算机基础通识选修课程、Visual Basic程序设计课程学分:1 总学时:16 二、课程设计目标 掌握所学语言程序设计的方法,熟悉所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能: 1.培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。 2.通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。 3.系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。 4.根据个人的设计调试过程,撰写设计报告。 三、课程设计内容 利用已掌握的VB程序设计语言基础,以及面向对象的程序设计方法、事件驱动的编程方式,进行应用程序和系统的开发设计。在强化巩固已有编程知识基础之上,训练新的设计与编程思路,通过综合应用所学知识设计、编制、调试实用的Visual Basic程序。 四、课程设计要求 1.要求每个同学都要认真对待,积极参与。 2.课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同 时填写并完成《课程设计报告册》。 3.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计 中完全未参与的将作不及格处理。 五、考核方式

汇编语言课程设计报告

农林大学金山学院 课程设计报告 课程名称:汇编语言课程设计 课程设计题目:动画设计“我爱大自然”姓名: 系:信息与机电工程系 专业:电子信息工程 年级:2008级 学号:082230066 指导教师:\ 职称:助教 2009~2010学年第二学期

目录 1 课程设计的目的 (2) 2 课程设计的要求 (2) 3课程设计报告容 (2) 3.1设计思路 (2) 3.2程序流程图 (2) 3.3设计源程序 (5) 3.4动画示意图 (19) 4 总结 (20) 5参考文献 (20) 6评分标准 (21)

动画设计“我爱大自然” 一、课程设计的目的 《汇编语言课程设计》是电子信息工程专业集中实践性环节之一,是学习完《汇编语言》课程后进行的一次全面的综合练习。其目的是: 培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。 二、课程设计的要求 1)具备初步的独立分析和解决问题的能力; 2)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能; 3)提高综合运用所学的理论知识和方法的能力; 4)训练用系统的观点和软件开发一般规进行软件开发,培养科学的工作方法和作风; 5)设计的题目要求达到一定工作量,并具有一定的深度和难度; 6)编写出课程设计说明书。 三、课程设计报告容 (一)设计思路 “我爱大自然”这个程序中包含了比较多的景物,既有静态的也有动态的,其中还有一段音乐。为了节省存储空间,提高程序设计的效率和质量,使程序简洁、清晰,便于阅读,同时也为了便于修改和扩充,采用子程序设计技术和宏定义,根据程序要实现的若干主要功能及个功能块要调用的公共部分,将程序划分为若干个相对独立的模块,为每个模块编制独立的程序段,最后将这些子程序根据调用关系连成一个整体。 这样,整个程序就被分为几个子程序的有机统一。根据BIOS中断调用原理,设置80×25彩色文本显示方式,分别编写一个子程序显示“I LOVE NATURE,LET US GO AIRING”和一个子程序在屏幕上“画”树。这两个子程序所体现出来的事物都是的。为了实现小鸟

程序设计语言 课程设计题目(补充)

课程设计题目 题目七:销售管理系统 问题描述:设计一个日用商品销售管理系统,以小型超市商品销售为管理对象来设计系统。实现功能:根据销售信息(包含如下内容:商品编号、销售数量、销售单价、销售日期、销售人员;保存为磁盘文件),实现对商品日常信息的管理。 1、日用商品销售信息输入 运用人机对话方式实现商品的商品编号、销售数量、销售单价、销售日期、销售人员的信息录入,以文件的形式保存其信息 2、商品销售信息查询: a) 根据商品编号查询所售商品明细(数量,单价,金额) b) 根据销售日期查询当天所售商品明细(数量,单价,金额) c) 根据销售人员查询某营业员所售商品明细(数量,单价,金额) 3、商品销售信息统计 a) 日销售额统计(按商品编号,销售人员,全部商品)及总销售额统计 b) 月销售额(按商品编号,销售人员,全部商品)及总销售额统计 c) 月度销售排名(按商品编号,销售人员) 知识点:结构体类型变量的应用,文件操作,数据的查询,函数的应用 说明:以十组商品三个营业员构成二十组商品数据 题目八:职工工作量统计系统 问题描述:设计一个以班组职工日常工作量统计为对象的管理系统。 实现功能:根据组内职工日常工作信息(包含如下内容:职工编号,职工姓名,工作内容,完成数量,完成质量,完成日期;保存为磁盘文件),实现对职工日常工作量信息的管理。 1、职工日常工作量信息输入 运用对话方式分别输入职工编号,职工姓名,完成数量,完成质量(优、良、中),完成日期,对就多个完成质量的信息录入,以文件的形式保存其信息 2、职工日常工作量信息统计与输出 a) 以完成工作数量及完成质量进行工作量当日统计排序。名次相同,以完成数量多者优先,再次相同,以职工编号小者优先。 b) 以一个星期为一时间段按上述规则进行排序。 知识点:结构体类型变量的应用,文件操作,数据的查询与排序。 说明:以十人构成一个班组,每天大家都做同一工作来构成数据 题目九:通讯录管理系统 建立一通讯录,输入姓名、电话号码、住址等信息,然后对通信簿进行显示、查找、添加、修改及删除。 功能要求 (1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。 (2) 输入功能:可以一次完成若干条信息的输入。 (3) 显示功能:完成全部通讯录信息的显示(一屏最多显示10条,超过十条应能够自动分

汇编语言课程设计-学生成绩管理系统

1、课程设计的目的、任务 《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。 2、软件需求分析和设计 2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块: (1).插入一个数据(插入学生学号以及语数外三个成绩)。 (2)修改一个数据。 (3)删除学生成绩数据。 (4)查找学生成绩。 (5)查看学生成绩的排名 (6)查看学生成绩分布 (7)按esc键退出系统 2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能: (1)输出显示菜单。 (2)输入学生的成绩 (3)修改学生成绩 (4)删除学生成绩 (5)查询学生成绩 (6)显示学生成绩排名 (7)显示成绩分布统计 (8)按esc键退出系统

2.3依据程序的功能需求,该系统的功能结构图如下 系统功能结构图 2.4 程序流程图:

主程序流程图查找学生成绩

插入学生学号及成绩修改学生的成绩 显示各个学科各分数段的人数 3、程序实现说明

3.1学生管理系统中各子程序如下: (1).输入全部学生学号以及语文,英语,数学三科的成绩。 子程序名:insert 子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。 代码: insert proc near ;定义进程子程序:插入学生,学号及 成绩 call input ;调用input add n,1 ret insert endp (2).修改输入的成绩。 子程序名:modify 子程序描述:通过子程序修改学生的成绩 代码: modify proc near ;定义进程子程序:修改学生学号,成绩 md1:output mess1 ;输出mess1 shuru ;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si] ;先查找输入的学生是否存在 je qq1_1 ;查到的话,就跳转到qq1_1输入修改的值, 也就是重新输入。;结果相等则跳转到qq1_1 add si,1

相关文档
最新文档