终稿- -算法设计与分析实验报告格式 3

终稿- -算法设计与分析实验报告格式 3
终稿- -算法设计与分析实验报告格式 3

算法设计与分析实验报告一

实验名称统计数字问题评分

实验日期2013 年11 月 4 日指导教师*&&*

姓名** 专业班级学号20101

一.实验要求

1、掌握算法的计算复杂性概念。

2、掌握算法渐近复杂性的数学表述。

3、掌握用C++语言描述算法的方法。

4.实现具体的编程与上机实验,验证算法的时间复杂性函数。

二.实验内容

统计数字问题

1、问题描述

一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2, (9)

2、编程任务

给定表示书的总页码的10 进制整数n (1≤n≤109) 。编程计算书的全部页码中分别用到多少次数字0,1,2, (9)

三.程序算法

定义数组a[10]存放0到9这10个数出现的次数;个位为第0位,第j位的数字为r。采用while循环从低位向高位统计:a.统计从个位算起前j位0~9个数;b.如果j+1位为0,去掉第j+1位补0个数;c.统计第j+1位出现1~(r-1)个数;d. 统计第j+1位出现r个数。

四.程序代码

#include"stdafx.h"

#include

#include

#include

#include//c++串流控制

using namespace std;

int result_num[10]={0};

void process(int m);

int main(int argc, char* argv[])

{ //cout<

int file_count=0;//文本文件的标题序号

char ctu='y';

while(ctu=='y'||ctu=='Y')

{ process(file_count);

cout<<"是否继续(y/Y)"<

cin>>ctu;

++file_count; }

return 0;}

void process(int m)

{

memset(result_num,0,sizeof(result_num));//每次新的运算均需要把数组值都置为

ostringstream tstr;

int paper_page;

tstr<<"input"<

ofstream fout_test(tstr.str().c_str());//保存页码的文件

tstr.str("");

tstr<<"output"<

ofstream fout_result(tstr.str().c_str());//保存结果的文件

cout<<"请输入页码数:";

cin>>paper_page;

fout_test<

fout_test.close();

for(int i=1;i<=paper_page;++i)

{

int tmp=i;

while(tmp)

{

int num=tmp%10;

++result_num[num];

tmp=tmp/10;

//cout<

} }

for(int j=0;j<10;++j)

{

fout_result<

}

fout_result.close();

}

五.程序调试中的问题

出现一些小错误,修改后程序可运行。

六.实验结果

定义数组a[10]存放0到9这10个数出现的次数,个位为第0位,第j位的数字为r。采用while循环从低位向高位统计: a. 统计从个位算起前j位0~9个数; b. 如果j+1位为0,去掉第j+1位补0个数; c. 统计第j+1位出现1~(r-1)个数; d. 统计第j+1位出现r个数。

基本满足实验要求。

算法设计与分析实验报告二

实验名称分治法实现归并排序算法评分

实验日期2013 年11 月 4 日指导教师

姓名专业班级计算机学号201

一.实验要求

1.了解用分治法求解的问题:当要求解一个输入规模为n,且n的取值相当大

的问题时,

如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1

2.掌握分治法的一般控制流程。

DanC(p,q)

global n,A[1:n]; integer m,p,q; // 1≤p≤q≤n

if Small(p,q) then return G(p,q);

else m=Divide(p,q); // p≤m

return Combine(DanC(p,m),DanC(m+1,q));

endif

end DanC

3.实现典型的分治算法的编程与上机实验,验证算法的时间复杂性函数。

二.实验内容

1.编程实现归并排序算法,程序中加入比较次数的计数功能,输出排序结果和比较次数。

2.输入10组相同的数据,验证排序结果和完成排序的比较次数。

3.与复杂性函数所计算的比较次数比较。

4.用表格列出比较结果。

5.给出文字分析。

三.程序算法

1. 归并排序算法

procedure MERGESORT(low,high)

//A(low;high)是一个全程数组,它含

有high-low+1≥0个待排序的元素//

integer low,high;

if low

then mid←, //求这个集合的分割点//

call MERGESORT(low,mid) //将一个子集合排序//

call MERGESORT(mid+1,high) //将另一个子集合排序

call MERGE(low,mid,high) //归并两个已排序的子集合// endif

end MERGESORT

归并两个已排序的集合

procedure MERGE(low,mid,high)

//A(low:high)是一个全程数组//

//辅助数组B(low;high)//

integer h,i,j,k;

h←low;i←low;j←mid+1;

while h≤mid and j≤high do //当两个集合都没取尽时// if A(h)≤A(j) then B(i) ←A(h);h←h+1

else B(i) ←A(j);j←j+1

endif

i←i+1

repeat

if h>mid then

for k←j to high do //处理剩余的元素//

B(i) ←A(k);i←i+1

repeat

else for k←h to mid do

B(i) ←A(k);i←i+1

repeat

endif

将已归并的集合复制到A

end MERGE

2. 快速排序算法

QuickSort(p,q)

//将数组A[1:n]中的元素

A[p], A[p+1], , A[q]按不降次序排列,

并假定A[n+1]是一个确定的、且大于

A[1:n]中所有的数。//

int p,q; global n, A[1:n];

if p

j=Partition(p, q+1); // 划分后j成为划分元素的位置

QuickSort(p,j-1);

QuickSort(j+1,q);

endif

end QuickSort

procedure PARTITION(m,p)

//退出过程时,p带着划分元素所在的下标位置。//

integer m,p,i;global A(m:p-1)

v←A(m);i←m //A(m)是划分元素//

loop

loop i←i+1 until A(i)≥v repeat //i由左向右移//

loop p←p-1 until A(p)≤v repeat //p由右向左移//

if i

then call INTERCHANGE(A(i),A(p)) //A(i)和A(p)换位// else exit

endif

repeat

A(m) ←A(p);A(p) ←v //划分元素在位置p//

End PARTITION

四.程序代码

1.归并排序

#include

#include

#include

#include

#define M 11

typedef int KeyType;

typedef int ElemType;

struct rec{

KeyType key;

ElemType data;

};

typedef rec sqlist[M];

class guibing{

public:

guibing(sqlist b)

{

for(int i=0;i

r[i]=b[i];

}

void output(sqlist r,int n)

{

for(int i=0;i

cout<

cout<

}

void xuanze(sqlist b,int m,int n)

{

int i,j,k;

for(i=m;i

{

k=i;

for(j=i;j

if(b[k].key>b[j].key) k=j;

if(k!=i)

{

rec temp=b[k];

b[k]=b[i];

b[i]=temp;

}

}

}

void merge(int l,int m,int h,sqlist r2)

{

xuanze(r,l,m);

xuanze(r,m,h);

output(r,M);

int i,j,k;

k=i=l;

for(j=m;i

{

if(r[i].key<=r[j].key)

{

r2[k]=r[i];

i++;

}

else

{

r2[k]=r[j];

j++;

}

output(r2,M);

}

while(j

{

r2[k]=r[j];

j++;

k++;

}

while(i<=m)

{

r2[k]=r[i];

i++;

k++;

}

output(r2,M);

}

private:

sqlist r;

};

void main()

{

cout<<"guibingfa1运行结果:\n";

sqlist a,b;

int i,j=0,k=M/2,n=M;

srand(time(0));

for(i=0;i

{

a[i].key=rand()%80;b[i].key=0;

}

guibing gx(a);

cout<<"排序前数组:\n";

gx.output(a,M);

cout<<"数组排序过程演示:\n";

gx.merge(j,k,n,b);

cout<<"排序后数组:\n";

gx.output(b,M);

cin.get();

}

2.快速排序

#include

#include

#include

#include

#define MAXI 10

typedef int KeyType;

typedef int ElemType;

struct rec{

KeyType key;

ElemType data;

};

typedef rec sqlist[MAXI];

class kuaisu

{

public:

kuaisu(sqlist a,int m):n(m)

{

for(int i=0;i

}

void quicksort(int s,int t)

{

int i;

if(s

i=part(s,t);

quicksort(s,i-1);

quicksort(i+1,t);

}

else return;

}

int part(int s,int t)

{

int i,j;

rec p;

i=s;j=t;p=b[s];

while(i

{

while(i=p.key)j--;

b[i]=b[j];

while(i

b[j]=b[i];

}

b[i]=p;

output();

return i;

}

void output()

{

for(int i=0;i

cout<

cout<

}

private:

sqlist b;

int n;

};

void main()

{ cout<<"kuaisu1.cpp运行结果:\n";

sqlist a1;

int i,n=MAXI,low=0,high=9;

srand(time(0));

for(i=0;i

a1[i].key=rand()%80;

kuaisu px(a1,n);

cout<<"数组排序过程演示:\n";

px.quicksort(low,high);

cout<<"排序后数组:\n";

px.output();

cin.get();

}

五.程序调试中的问题

排序算法设计比较经典也比较难,调试中不乏出现各种问题,借鉴了经典算法最终完成实验。

六.实验结果

1.归并排序

2.快速排序

算法设计与分析实验报告三

实验名称 动态规划算法实现多段图的最短路径问题 评分 实验日期 2013 年 11 月 4 日 指导教师 姓名 专业班级 计算机 学号 2 104

一.实验要求

1. 理解最优子结构的问题。

有一类问题的活动过程可以分成若干个阶段,而且在任一阶段后的行为依赖于该阶段的状态,与该阶段之前的过程如何达到这种状态的方式无关。这类问题的解决是多阶段的决策过程。在50年代,贝尔曼(Richard Bellman )等人提出了解决这类问题的“最优化原理”,从而创建了最优化问题的一种新的算法设计方法-动态规划。

对于一个多阶段过程问题,是否可以分段实现最优决策,依赖于该问题是否有最优子结构性质,能否采用动态规划的方法,还要看该问题的子问题是否具有重叠性质。 最优子结构性质:原问题的最优解包含了其子问题的最优解。

子问题重叠性质:每次产生的子问题并不总是新问题,有些子问题被反复计算多次。问题的最优子结构性质和子问题重叠性质是采用动态规划算法的两个基本要素。

2.理解分段决策Bellman 方程。

每一点最优都是上一点最优加上这段长度。即当前最优只与上一步有关。 U s 初始值,u j 第j 段的最优值。

3.一般方法

1) 找出最优解的性质,并刻画其结构特征;

2) 递归地定义最优值(写出动态规划方程);

3) 以自底向上的方式计算出最优值;

4) 根据计算最优值时得到的信息,构造一个最优解。

步骤1-3是动态规划算法的基本步骤。在只需要求出最优值的情形,步骤4可以省略,步骤3中记录的信息也较少;若需要求出问题的一个最优解,则必须执行步骤4,步骤3中记录的信息必须足够多以便构造最优解。

二.实验内容

1.编程实现多段图的最短路径问题的动态规划算法。

2.图的数据结构采用邻接表。

3.要求用文件装入5个多段图数据,编写从文件到邻接表的函数。

??

???+==≠}.{min ,0ij i j i j s w u u u

4.验证算法的时间复杂性。

三.程序算法

四.程序代码

五.程序调试中的问题

六.实验结果

算法设计与分析实验报告四

实验名称贪心算法实现背包问题评分

实验日期2013 年11 月 4 日指导教师

姓名专业班级计算机10 1 学号201013

一.实验要求

1. 优化问题

有n个输入,而它的解就由这n个输入满足某些事先给定的约束条件的某个子集组成,而把满足约束条件的子集称为该问题的可行解。可行解一般来说是不唯一的。那些使目标函数取极值(极大或极小)的可行解,称为最优解。

2.贪心法求优化问题

算法思想:在贪心算法中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。作出贪心决策的依据称为贪心准则(greedy criterion)。

3.一般方法

1)根据题意,选取一种量度标准。

2)按这种量度标准对这n个输入排序

3)依次选择输入量加入部分解中。如果当前这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。

procedure GREEDY(A,n) /*贪心法一般控制流程*/

//A(1:n)包含n个输入//

solutions←φ //将解向量solution初始化为空/

for i←1 to n do

x←SELECT(A)

if FEASIBLE(solution,x)

then solutions←UNION(solution,x)

endif

repeat

return(solution)

end GREEDY

4.实现典型的贪心算法的编程与上机实验,验证算法的时间复杂性函数。

二.实验内容

1. 编程实现背包问题贪心算法。通过具体算法理解如何通过局部最优实现全局最优,

并验证算法的时间复杂性。

2.输入5个的图的邻接矩阵,程序加入统计prim算法访问图的节点数和边数的语句。

3.将统计数与复杂性函数所计算的比较次数比较,用表格列出比较结果,给出文字分析。

三.程序算法

从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。该算法存在问题:

1. 不能保证求得的最后解是最佳的;

2. 不能用来求最大或最小解问题;

3. 只能求满足某些约束条件的可行解的范围。

(i) 一种贪婪准则为:从剩余的物品中,选出可以装入背包的价值最大的物品,利用这种规则,价值最大的物品首先被装入(假设有足够容量),然后是下一个价值最大的物品,如此继续下去。这种策略不能保证得到最优解。例如,考虑n=2, w=[100,10,10], p =[20,15,15], c = 105。当利用价值贪婪准则时,获得的解为x= [ 1 , 0 , 0 ],这种方案的总价值为2 0。而最优解为[ 0 , 1 , 1 ],其总价值为3 0。

(ii) 另一种方案是重量贪婪准则是:从剩下的物品中选择可装入背包的重量最小的物品。虽然这种规则对于前面的例子能产生最优解,但在一般情况下则不一定能得到最优解。考虑n= 2 ,w=[10,20], p=[5,100], c= 2 5。当利用重量贪婪策略时,获得的解为x =[1,0], 比最优解[ 0 , 1 ]要差。

(iii) 还有一种贪婪准则,就是我们教材上提到的,认为,每一项计算yi=vi/si,即该项值和大小的比,再按比值的降序来排序,从第一项开始装背包,然后是第二项,依次类推,尽可能的多放,直到装满背包。

有的参考资料也称为价值密度pi/wi贪婪算法。这种策略也不能保证得到最优解。利用此策略试解n= 3 ,w=[20,15,15], p=[40,25,25], c=30 时的最优解。虽然按pi /wi 非递(增)减的次序装入物品不能保证得到最优解,但它是一个直觉上近似的解。

而且这是解决普通背包问题的最优解,因为在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,1≤i≤n。

四.程序代码

#include "iostream"

using namespace std;

struct goodinfo

{

float p; //物品效益

float w; //物品重量

float X; //物品该放的数量

int flag; //物品编号

};//物品信息结构体

void Insertionsort(goodinfo goods[],int n)

{

int j,i;

for(j=2;j<=n;j++)

{

goods[0]=goods[j];

i=j-1;

while (goods[0].p>goods[i].p)

{

goods[i+1]=goods[i];

i--;

}

goods[i+1]=goods[0];

}

}//按物品效益,重量比值做升序排列

void bag(goodinfo goods[],float M,int n)

{

float cu;

int i,j;

for(i=1;i<=n;i++)

goods[i].X=0;

cu=M; //背包剩余容量

for(i=1;i

{

if(goods[i].w>cu)//当该物品重量大与剩余容量跳出break;

goods[i].X=1;

cu=cu-goods[i].w;//确定背包新的剩余容量}

if(i<=n)

goods[i].X=cu/goods[i].w;//该物品所要放的量//按物品编号做降序排列

for(j=2;j<=n;j++)

{

goods[0]=goods[j];

i=j-1;

while (goods[0].flag

{

goods[i+1]=goods[i];

i--;

}

goods[i+1]=goods[0];

}

cout<<"最优解为:"<

for(i=1;i<=n;i++)

{

cout<<"第"<

cout<

}

}

int main(void)

{

cout<<"|--------运用贪心法解背包问题---------|"<

cout<<"|-------------------------------------|"<

int i,j,n;

float M;

goodinfo *goods; //定义一个指针

cout<<"press <1> to run the program"<

cout<<"press <0> to exit"<

cin>>j;

while(j)

{

cout<<"请输入物品的总数量:";

cin>>n;

goods=new struct goodinfo [n+1];

cout<<"请输入背包的最大容量:";

cin>>M;

cout<

for(i=1;i<=n;i++)

{

goods[i].flag=i;

cout<<"请输入第"<

cin>>goods[i].w;

cout<<"请输入第"<

cin>>goods[i].p;

goods[i].p=goods[i].p/goods[i].w; //得出物品的效益,重量比

cout<

}

课程设计实验报告

竭诚为您提供优质文档/双击可除 课程设计实验报告 篇一:课程设计(综合实验)报告格式 课程设计报告 (20XX--20XX年度第一学期) 名称:题目:院系:班级:学号:学生姓名:指导教师:设计周数: 成绩:日期:《软件设计与实践》课程设计计算机系软件设计与实践教学组 20XX年1月14 日 《软件设计与实践》课程设计 任务书 一、目的与要求 1.了解网络爬虫的架构和工作原理,实现网络爬虫的基本框架;2.开发平台采用JDK1.60eclipse集成开发环境。 二、主要内容 1.了解网络爬虫的构架,熟悉网页抓取的整个流程。

2.学习宽度优先和深度优先算法,实现宽度crawler应用程序的编写、调试和运行。 3.学习主题爬行及内容分析技术。 4.实现网络爬虫的基本框架。 三、进度计划 四、设计成果要求 1.要求按时按量完成所规定的实验内容; 2.界面设计要求友好、灵活、易操作、通用性强、具有实用性; 3.基本掌握所采用的开发平台。五、考核方式 平时成绩+验收+实验报告。 学生姓名:于兴隆指导教师:王蓝婧20XX年1月2日 一、课程设计的目的与要求1.目的: 1.1掌握crawler的工作原理及实现方法;1.2了解爬虫架构; 1.3熟悉网页抓取的整个流程及操作步骤; 1.4掌握宽度优先,深度优先算法,并实现宽度crawler 应用程序的编写、调试和运行;1.5掌握主题爬行及内容分析技术;1.6实现一个最基础的主题爬虫的过程;1.7理解pageRank算法,并编程验证;二、设计正文 网络爬虫研究与应用 [摘要]:本文通过对网络爬虫研究的逐步展开,讨论了爬虫的相关概念与技术,并通过实验设计了简单的基于宽度

微机原理课程设计电压报警器实验报告

南通大学电子信息学院 微机原理课程设计 报告书 课题名: 班级: 姓名: 学号: 指导老师: 日期: xxx

目录 1.设计目的 (2) 2.设计内容 (2) 3.设计要求 (2) 4.设计原理 (3) 5.硬件电路图 (3) 6.程序代码 (5) 7.程序及硬件系统调试情况 (19) 8.设计总结与体会 (19)

一、设计目的 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。 通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 二、设计内容 设计一个电压报警器,要求采集实验箱提供的0~5V的电压,当输入电压在3V以内,显示电压值,如2.42。当输入电压超过3V,显示ERR,并报警。电压值可在七段数码管显示,点阵广告屏显示或液晶屏显示。报警形式自行设计,

vf课程设计实验报告模板

vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 -

、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾

算法设计与分析实验三

实验三分治算法(2) 一、实验目的与要求 1、熟悉合并排序算法(掌握分治算法) 二、实验题 1、问题陈述: 对所给元素存储于数组中和存储于链表中两中情况,写出自然合并排序算法. 2、解题思路: 将待排序元素分成大小大相同的两个集合,分别对两个集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合.自然排序是通过一次扫描待排元素中自然排好序的子数组,再进行子数组的合并排序. 三、实验步骤 程序代码: #include const int N=100;//定义不可变常量N //各个函数的声明 void ScanTarget(int target[], int n, int head[], int tail[]); int CountHead(int head[]); void MergeSort(int a[], int head[], int tail[], int m); void MergePass(int x[], int y[], int s, int a[], int b[], int m); void Merge(int c[], int d[], int l, int m, int r); //主函数的定义 void main() { char a; do {

int target[N],head[N],tail[N]; int i=0,n,m; for(; i>n; cout<<"请输入需要排序的数列:" <>target[i]; ScanTarget(target,n,head,tail); m=CountHead(head);//调用求长度的函数 MergeSort(target,head,tail,m);//调用归并排序函数 cout<<"排序后:"<>a; } while(a!='n' && a!='N'); } void ScanTarget(int target[], int n, int head[], int tail[])//定义扫描待排数组的函数;{ int i,j=0,k=0; head[k]=0;

程序设计实验报告

学生实验报告 院系:测绘学院 专业班级:测绘13级3班 学号:2013305517 学生姓名:王泽 指导教师:郭辉老师 2016年05月20日

安徽理工大学实验报告 实验课程名称:数据结构与软件开发上机实验 开课院系及实验室:测绘学院红楼二楼机房 实验1 编程基本知识练习 实验目的: 通过该实验课内容的练习,学生应掌握VB 编程的基本语法、变量的定义、数组(动态数组)的定义、VB 语言中子过程与函数的定义以及文本文件的读写等知识。 实验内容: 1)变量的定义动态数组的定义与应用; 2)矩阵的加、减、乘运算(定义Sub()子过程或Function()来实现); 3)数据文件的建立、数据的读取与写入。 实验步骤: 1.编辑界面 1.1 打开VB 编程工具,进入编程主界面。

1.2 在窗体上新建“读入数据”和“输出数据”两个按钮。 1.3 双击“窗体”进入代码输入界面,进行代码编辑。 2.用VB 编写的源代码 2.1 矩阵基本运算源码详见附录一。 (1)两矩阵相加 (2)两矩阵相减 (3)矩阵转置 (4)两矩阵相乘 (5)矩阵求逆 2.2 文本文件(本实验中data.txt)的读取源代码 (1)建立文本文件并输入数据 在桌面上新建一“data.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\data.txt”)。输入以下内容: 6,7,4,0.005 A,35.418 B,45.712 C,25.270

D,24.678 在桌面上新建一“result.txt” ( 文本文件路径为C:\Users\ WH\Desktop\练习\result.txt”)。(2)从文本文件中读数据 Dim linedata as string, m_GaochaN as integer,m_Pnumber as integer,m_knPnumber as integer,M as Double,k1 as integer 'linedata 为存储文本文件一行信息的字符串变量 Dim a() as String,H() as Double 'a()为存储点名,H()存储高程 Open“C:\Users\ WH\Desktop\练习\data.txt”For Input As #1 Line Input #1, linedata k = Split(linedata, ",") m_GaochaN = Val(k(0)) m_Pnumber = Val(k(1)) m_knPnumber = Val(k(2)) M = CDbl(k(3)) For k1 = 1 To m_knPnumber Line Input #1, linedata k = Split(linedata, ",") a(k1)= k(0) GetstationNumber (a) H(k1) = CDbl(k(1)) Next Close #1 (3)将读入点名存储到点名数组中,且返回该点名所对应编号 Function GetstationNumber(name As String) Dim i As Integer For i = 1 To m_Pnumber If P_Name(i) <> "" Then '将待查点名与已经存入点名数组的点比较 If P_Name(i) = name Then GetstationNumber = i Exit For End If Else '待查点是新的点名,将新点名放到P_Name 数组中 P_Name(i) = name GetstationNumber = i Exit For End If Next i End Function (4)从文本文件中写数据(将从data.txt 读入的数据,写入到result.txt 文件中) Open“C:\Users\ WH\Desktop\ 练习\result.txt” For Output As #1 outstring = outstring + str(m_GaochaN) +","

微机课设实验报告

微机课程设计 数字温度计实验报告

一、题目: 上位机:完成界面设计与通讯程序 1、能够显示两个温度值,温度精度0.5度,当超出报警温度阈值时,温度 值后又提示字幕。 2、能够设定报警温度阈值 3、每隔一秒将温度值保存至文件存档。当超出报警温度阈值时,温度值后 面有提示。 4、可以对串口进行设置。 下位机:完成电路设计与控制程序 1、用两个DS18B20测温。 2、通过串口与上位机通信,并传输温度值,接受阈值设置。 3、当超出报警温度阈值时,有相应指示灯提示。 4、将当前温度显示LCD1602液晶屏上,当超出报警温度阈值时,温度值后 有提示。 二、原理 DS18B20是DALLS公司推出的“1—wire”接口的数字温度传感器,可以直接将温度转换为9~12串行信号供单片机处理。由于这种传感器只有一个IO口,是单总线串行接口,单片机可以利用串行通信将数据读出并按照LCD 的协议显示在1602液晶屏上。同时,通过PC机与单片机之间的串行通信,可以用PC机控制温度的警戒值以及记录不同时间测量的温度。 三、原理图 图3.1 LCD、18B20以及串口与单片机最小系统连接图

图3.2电源模块 四、流程图 1、上位机流程图 图4.1.1发送数据流程图图4.1.2 接受数据流程图

2、下位机流程图 图4.2.2读出温度子程序流程图 图4.2.1总流程图 图4.2.4计算温度子程序流程图

图4.2.3 温度转换流程图 图4.2.6温度值显示在LCD1602上 图4.2.5 显示数据刷新子程序 五、源程序 1、上位机程序:见附录1; 2、下位机程序:见附录2; 3、实验结果显示(上位机):见附录3。

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

算法设计与分析实验报告

本科实验报告 课程名称:算法设计与分析 实验项目:递归与分治算法 实验地点:计算机系实验楼110 专业班级:物联网1601 学号:2016002105 学生:俞梦真 指导教师:郝晓丽 2018年05月04 日

实验一递归与分治算法 1.1 实验目的与要求 1.进一步熟悉C/C++语言的集成开发环境; 2.通过本实验加深对递归与分治策略的理解和运用。 1.2 实验课时 2学时 1.3 实验原理 分治(Divide-and-Conquer)的思想:一个规模为n的复杂问题的求解,可以划分成若干个规模小于n的子问题,再将子问题的解合并成原问题的解。 需要注意的是,分治法使用递归的思想。划分后的每一个子问题与原问题的性质相同,可用相同的求解方法。最后,当子问题规模足够小时,可以直接求解,然后逆求原问题的解。 1.4 实验题目 1.上机题目:格雷码构造问题 Gray码是一个长度为2n的序列。序列无相同元素,每个元素都是长度为n的串,相邻元素恰好只有一位不同。试设计一个算法对任意n构造相应的Gray码(分治、减治、变治皆可)。 对于给定的正整数n,格雷码为满足如下条件的一个编码序列。 (1)序列由2n个编码组成,每个编码都是长度为n的二进制位串。 (2)序列中无相同的编码。 (3)序列中位置相邻的两个编码恰有一位不同。 2.设计思想: 根据格雷码的性质,找到他的规律,可发现,1位是0 1。两位是00 01 11 10。三位是000 001 011

010 110 111 101 100。n位是前n-1位的2倍个。N-1个位前面加0,N-2为倒转再前面再加1。 3.代码设计:

Java程序设计-实验报告1-模板 (1)

实验报告 课程名称Java程序设计 实验项目实验一类和对象 系别_________计算机_________ 专业/班级_______计算机类/1402______ 姓名_____李馨雪________ 实验日期______2015.10.10______ 成绩_______________________ 指导教师

一、实验题目:实验一类和对象 二、实验内容: (1)用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。 1)PC类与CPU类和HardDisk类关联的UML图如图所示。 其中,CPU类要求getSpeed()返回speed的值,setSpeed(int m)方法 将参数m的值赋值给speed。 HardDisk类要求getAmount()返回amount的值,setAmount(int m)方 法将参数m的值赋值给amount。 PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk (HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示 cpu的速度和硬盘的容量。 2)主类Test的要求 main()方法中创建一个CPU对象cpu,其speed设置为2200; main()方法中创建一个HardDisk对象disk,其amount设置为200; main()方法中创建一个PC对象pc, pc调用setCPU方法,实参是cpu;调用setHardDisk方法,实参是 disk;调用show方法。 (2)设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下: 1)编写接口Animal,有2个抽象方法cry()和getAnimaName(); 2)编写模拟器类Simulator,该类有一个playSound(Animal animal)方法,其形参是Animal类型,可以调用实现Animal接口的类所重写的cry()方法播放具体动物的声音,调用重写方法显示动物种类的名称; 3)编写实现Animal接口的Dog类和Cat类。具体的UML图如下所示:4)编写主类Application,其main方法中至少包含如下代码: Simulator si=new Simulator();

个人信息管理系统毕业课程设计实验报告

(此文档为word格式,下载后您可任意编辑修改!) 山东交通学院 目录 1.系统分析 (2) 1.1系统需求分析 (2) 1.2项目规划 (2) 1.3系统功能结构分析 (3) 1.4设计目的分析 (3) 2.数据库系统设计 (4) 2.1数据表概要设计 (4) 2.2数据库逻辑结构设计 (4) 3.应用程序设计 (5) 3.1界面设置 (5) 3.2关键技术 (15) 4.系统安装 (20) 建立数据源 (20) 5.设计体会 (21) 参考文献 (22)

摘要 随着经济社会的发展,计算机已被应用到社会生活的各个领域。与此同时,互联网作为信息技术的通信桥梁连接着全球的计算机,而网站作为网络信息主要的表现形式而且还是互联网信息的主要承载者,在网络上表现出其及其重要的地位,并发挥着极其重要的作用。无论是在国内还是国外都得以迅速的发展和壮大,并被人们重视和关注。互联网已经彻底的改变了世界,互联网的世界里蕴藏着无限的可能,在这种情况下,各行各业及其个人、单位、工厂、企事业等等在网上构筑属于自己的网络信息平台,保护自己的网络资源并在互联网上开辟自己的市场和消费群体,以及构造自己的数字化世界和加强全球范围内不同地域的人们联系交流等等活动也就显的日益重要。于是各种各样的网站便如雨后春笋般地出现鱼龙混杂且良莠不齐。因此,个人信息的管理就显得尤为重要了。不仅可以更好的保护个人信息,对日常的使用也会提供很大的方便。关键词:个人信息管理系统;数据集;数据库;Visual C++6.0。 1.系统分析 1.1系统需求分析 在做本系统前,我对系统的需求做了如下分析: 1)登录权限:在登录权限的分析上我们规定必须凭借用户名和密码才可登陆,进行管理。 2)使用者功能:首先说明一下,我们的系统用户对象是个人。关于其本系统的功能,大致可分为日记管理,通讯录管理,备忘录管理,以及个人财务管理;日记管理,其中包括用户对日记编号,时间,地点,事件、人物的查询、

微机控制技术实验报告

《微机控制技术》课程设计报告 课题:最少拍控制算法研究专业班级:自动化1401 姓名: 学号: 指导老师:朱琳琳 2017年5月21日

目录 1. 实验目的 (3) 2. 控制任务及要求 (3) 3. 控制算法理论分析 (3) 4. 硬件设计 (5) 5. 软件设计 (5) 无纹波 (5) 有纹波 (7) 6. 结果分析 (9) 7. 课程设计体会 (10)

1.实验目的 本次课程设计的目的是让同学们掌握微型计算机控制系统设计的一般步骤,掌握系统总体控制方案的设计方法、控制算法的设计、硬件设计的方法。学习并熟悉最少拍控制器的设计和算法;研究最少拍控制系统输出采样点间纹波的形成;熟悉最少拍无纹波控制系统控制器的设计和实现方法。复习单片机及其他控制器在实际生活中的应用,进一步加深对专业知识的认识和理解,使自己的设计水平、对所学知识的应用能力以及分析问题解决问题的能力得到全面提高。 2.控制任务及要求 1.设计并实现具有一个积分环节的二阶系统的最少拍有纹波控制和无纹波控制。 对象特性G (s )= 采用零阶保持器H 0(s ),采样周期T =,试设计单位阶跃,单位速度输入时的有限拍调节器。 2.用Protel 、Altium Designer 等软件绘制原理图。 3.分别编写有纹波控制的算法程序和无纹波控制的算法程序。 4.绘制最少拍有纹波、无纹波控制时系统输出响应曲线,并分析。 3.控制算法理论分析 在离散控制系统中,通常把一个采样周期称作一拍。最少拍系统,也称为最小调整时间系统或最快响应系统。它是指系统对应于典型的输入具有最快的响应速度,被控量能经过最少采样周期达到设定值,且稳态误差为定值。显然,这样对系统的闭环脉冲传递函数)(z φ提出了较为苛刻的要求,即其极点应位于Z 平面的坐标原点处。 1最少拍控制算法 计算机控制系统的方框图为: 图7-1 最少拍计算机控制原理方框图 根据上述方框图可知,有限拍系统的闭环脉冲传递函数为: ) ()(1)()()()()(z HG z D z HG z D z R z C z +==φ (1) )(1)()(11)()()(1z z HG z D z R z E z e φφ-=+== (2) 由(1) 、(2)解得:

《算法设计与分析》递归算法典型例题

算法递归典型例题 实验一:递归策略运用练习 三、实验项目 1.运用递归策略设计算法实现下述题目的求解过程。 题目列表如下: (1)运动会开了N天,一共发出金牌M枚。第一天发金牌1枚加剩下的七分之一枚,第二天发金牌2枚加剩下的七分之一枚,第3天发金牌3枚加剩下的七分之一枚,以后每天都照此办理。到了第N天刚好还有金牌N枚,到此金牌全部发完。编程求N和M。 (2)国王分财产。某国王临终前给儿子们分财产。他把财产分为若干份,然后给第一个儿子一份,再加上剩余财产的1/10;给第二个儿子两份,再加上剩余财产的1/10;……;给第i 个儿子i份,再加上剩余财产的1/10。每个儿子都窃窃自喜。以为得到了父王的偏爱,孰不知国王是“一碗水端平”的。请用程序回答,老国王共有几个儿子?财产共分成了多少份? 源程序: (3)出售金鱼问题:第一次卖出全部金鱼的一半加二分之一条金鱼;第二次卖出乘余金鱼的三分之一加三分之一条金鱼;第三次卖出剩余金鱼的四分之一加四分之一条金鱼;第四次卖出剩余金鱼的五分之一加五分之一条金鱼;现在还剩下11条金鱼,在出售金鱼时不能把金鱼切开或者有任何破损的。问这鱼缸里原有多少条金鱼? (4)某路公共汽车,总共有八站,从一号站发轩时车上已有n位乘客,到了第二站先下一半乘客,再上来了六位乘客;到了第三站也先下一半乘客,再上来了五位乘客,以后每到一站都先下车上已有的一半乘客,再上来了乘客比前一站少一个……,到了终点站车上还有乘客六人,问发车时车上的乘客有多少? (5)猴子吃桃。有一群猴子摘来了一批桃子,猴王规定每天只准吃一半加一只(即第二天吃剩下的一半加一只,以此类推),第九天正好吃完,问猴子们摘来了多少桃子? (6)小华读书。第一天读了全书的一半加二页,第二天读了剩下的一半加二页,以后天天如此……,第六天读完了最后的三页,问全书有多少页? (7)日本著名数学游戏专家中村义作教授提出这样一个问题:父亲将2520个桔子分给六个儿子。分完后父亲说:“老大将分给你的桔子的1/8给老二;老二拿到后连同原先的桔子分1/7给老三;老三拿到后连同原先的桔子分1/6给老四;老四拿到后连同原先的桔子分1/5给老五;老五拿到后连同原先的桔子分1/4给老六;老六拿到后连同原先的桔子分1/3给老大”。结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子? 四、实验过程 (一)题目一:…… 1.题目分析 由已知可得,运动会最后一天剩余的金牌数gold等于运动会举行的天数由此可倒推每一 天的金牌剩余数,且每天的金牌数应为6的倍数。 2.算法构造 设运动会举行了N天, If(i==N)Gold[i]=N; Else gold[i]=gold[i+1]*7/6+i;

C语言程序设计实验报告

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一 C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; printf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序: main( ) {int i=8,j=10,m,n; m=++i;n=j++;

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

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于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/c310806017.html,work.Arp; UPD 实体类:https://www.360docs.net/doc/c310806017.html,work.Icmp;

微机系统课程设计实验报告---交通信号灯自动控制模拟指示系统[13页].docx

微机系统课程设计实验报告

课题:交通信号灯自动控制模拟指示系统 一、课程设计目的 1.掌握CPU与各芯片管脚连接方法,提高借口扩展硬件电路 的连接能力。 2.加深对定时器、计数器和并行借口芯片的工作方式和编程 方法的理解。 3.掌握交通信号灯自动控制系统的设计思路和实现方法。 二、课程设计内容 设计并实现十字路口通信号自动控制模拟指示系统。设该路口由A、B两条通行相交而成,四个路口各设一组红、黄、绿三色信号灯,用两位数码管作倒计时显示。 三、应用系统设计方案 交通信号灯的亮灭时间及数码管显示时间可以通过8253来控制,8253的时钟源采用时钟信号发生器与分频电路提供,通过计算获得计数初值为1000。按照需要设定工作在方式3. 交通信号灯及数码管可以采用系统提供的相应模块,控制可以通过8255可编程并行借口,PA口控制红黄绿交通灯的亮灭,PB口和PC口控制时间显示数码管的段和位。PC0作为OUT1的输入。

四、系统测试结果 1.基本功能实现 (1)以秒为计时单位,两位数码管以十进制递减计数显示通行剩余时间,在递减计数为零瞬间转换。即南 北的绿灯、东西的红灯同时亮30秒,同时南北路口 数码管递减显示绿灯剩余时间;为0时,南北的黄 灯闪烁5秒钟,同时东西的红灯继续亮;南北的红 灯、东西的绿灯同时亮30秒,同时东西路口数码管 递减显示绿灯剩余时间;为0时,南北红灯继续亮, 同时东西的黄灯闪烁5秒;若不结束,则开始循环。 (2)通过键盘可以对红、黄、绿三色信号灯所亮时间再0~99内任意设定。 (3)十字路口的通行气势状态可自行设定,系统启动后自动运行,按“Q”退出。 2、发挥部分实现 (1)增加人工干预模式,在特殊情况下可通过人工干预,手动控制A、B交通灯的切换时间,并可以随时切 换为自动运行模式。 (2)增加夜间控制功能,交通灯在进入夜间模式后,A、B干道上红、绿灯均不亮,黄灯信号灯闪烁。 (3)增加红灯倒计时显示。

《算法设计与分析》实验报告

算法设计与分析课程实验项目目录 学生:学号: *实验项目类型:演示性、验证性、综合性、设计性实验。 *此表由学生按顺序填写。

本科实验报告专用纸 课程名称算法设计与分析成绩评定 实验项目名称蛮力法指导教师 实验项目编号实验项目类型设计实验地点机房 学生学号 学院信息科学技术学院数学系信息与计算科学专业级 实验时间2012年3月1 日~6月30日温度24℃ 1.实验目的和要求: 熟悉蛮力法的设计思想。 2.实验原理和主要容: 实验原理:蛮力法常直接基于问题的描述和所涉及的概念解决问题。 实验容:以下题目任选其一 1).为蛮力字符串匹配写一段可视化程序。 2).写一个程序,实现凸包问题的蛮力算法。 3).最著名的算式谜题是由大名鼎鼎的英国谜人 H.E.Dudeney(1857-1930)给出的: S END +MORE MONEY . 这里有两个前提假设: 第一,字母和十进制数字之间一一对应,也就是每个字母只代表一个数字,而且不同的字母代表不同的数字;第二,数字0不出现在任何数的最左边。求解一个字母算术意味着找到每个字母代表的是哪个数字。请注意,解可能并不是唯一的,不同人的解可能并不相同。3.实验结果及分析: (将程序和实验结果粘贴,程序能够注释清楚更好。)

该算法程序代码如下: #include "stdafx.h" #include "time.h" int main(int argc, char* argv[]) { int x[100],y[100]; int a,b,c,i,j,k,l,m,n=0,p,t1[100],num; int xsat[100],ysat[100]; printf("请输入点的个数:\n"); scanf("%d",&num); getchar(); clock_t start,end; start=clock(); printf("请输入各点坐标:\n"); for(l=0;l

数字电子钟课程设计方案实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号:1405024119 李子鹏学号:1405024125 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日

课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号:1405024119 李子鹏学号:1405024125 指导教师:姚爱琴 2017 年 1 月 6 日

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号:1405024119 李子鹏学号:1405024125 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.1秒信号电路 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.4校时电路 (9) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12)

相关文档
最新文档