当前位置:文档之家› c++课程设计

c++课程设计

c++课程设计
c++课程设计

目录

前言 (3)

第一章C++简介 (4)

第二章需求分析 (7)

第三章设计分析 (12)

2.1 功能模块 (12)

2.2 流程图 (15)

第四章运行及测试结果 (12)

第五章课程设计总结 (23)

附录 (26)

参考文献 (38)

前言

在当今社会,C++的应用越来越广泛,Forrester最新的调查显示,C++、微软、VisualBasic和java是众多公司产品体系的首选语言。对100家公司的调查显示,C/C++、VisualBasic和Java在产品体系中的使用比例分别是59%、61%和66%。传统上认为,C++相对于目前一些新潮的语言,如Java、C#,优势在于程序的运行性能。这种观念并不完全。如果一个人深信这一点,那么说明他并没有充分了解和理解C++和那个某某语言。同时,持有这种观念的人,通常也是受到了某种误导。对于这些公司而言,他们隐藏了C++同某某语言间的核心差别,而把现在多数程序员不太关心的差别,也就是性能,加以强化。因为随着cpu性能的快速提升,性能问题已不为人们所关心。这叫“李代桃僵”。很多涉世不深的程序员,也就相信了他们。

这次主要是关于C++方面的程序设计,通过一周的时间,最终交上设计说明书,并完成答辩,方可合格,本次做的,是关于矩阵加法和减法的运算语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。

通过对c++认识,我们也慢慢的崇中认识到,c与c++相比存在着很多不足之处。无论兼容性和设计思想,还是代码质量,c++都有显著的提高,通过上面的调查,我们也可以看出,现在有很多很潮的语言相许诞生,而且一种比一种强大,对网络编辑和游戏编辑的作用越来越大,我感觉,学好几门语言,对以后这方面的变成作用很大,也为适应这个飞速发展的社会而奋斗,是否能掌握一手先进的知识决定着你是否是一位人才,你是否能在这个社会上立足。在这个物竞天择的社会,只有不断的提高自己的能力才能更好的适应这个社会,才能跟上社会的发展。

第一章C++简介

C++的发展史:语言的发展是一个逐步递进的过程,C++ 是直接从 C 语言发展过来的,而 C 语言是从 B 语言发展过来的,B 语言是 BCPL 的一个解释性后代,BCPL 是 Basic CPL。其中最有趣的是 CPL 中 C 的由来,由于当时这个语言是剑桥大学和伦敦大学合作开发的,在伦敦的人员加入之前,C 表示剑桥,伦敦人员加入之后,C 表示 Combined 组合。还有一种非正式的说法,C 表示 Christopher,因为 Christopher 是 CPL 背后的主要动力。

最初导致C++诞生的原因是在Bjarne博士等人试图去分析UNIX的内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样将内核模块化。同年10月,Bjarne博士完成了一个可以运行的预处理程序,称之为Cpre,它为C 加上了类似Simula的类机制。在这个过程中,Bjarne博士开始思考是不是要开发一种新的语言,当时贝尔实验室对这个想法很感兴趣,就让Bjarne 博士等人组成一个开发小组,专门进行研究。

当时不是叫做C++,而是C with class,这是把它当作一种C语言的有效扩充。由于当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有两个问题最受关注:C++要在运行时间、代码紧凑性和数据紧凑性方面能够与C语言相媲美,但是还要尽量避免在语言应用领域的限制。在这种情况下,一个很自然的想法就是让C++从C语言继承过来,但是我们的Bjarne博士更具有先见之明,他为了避免受到C语言的局限性,参考了很多的语言,例如:从Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL获得了//注释,从Ada得到了模板、名字空间,从Ada、Clu和ML取来了异常。

1983年8月,第一个C++实现投入使用, 1983年12月,Rick Mascitti 建议命名为CPlusPlus,即C++。 1985年2月,第一个C++ Release E发布。 10月,CFront的第一个商业发布,CFront Release 1.0。

10月,Bjarne博士完成了经典巨著The C++ Programming Language第一

版。1986年11月,C++第一个商业移植CFront 1.1,Glockenspiel。

1987年2月, CFront Release 1.2发布。11月,第一个USENIX C++会议在新墨西哥州举行。1988年10月,第一次USENIX C++实现者工作会议在科罗拉多州举行。1989年12月,ANSI X3J16在华盛顿组织会议。1990年3月,第一次ANSI X3J16技术会议在新泽西州召开. 5月, C++的又一个传世经典ARM诞生。7月,模板被加入。1991年6月, The C++ Programming Language第二版完成。6月,第一次ISO WG21会议在瑞典召开。10月,CFront Release 3.0发布。1993年3月,运行时类型识别在俄勒冈州被加入。7月,名字空间在德国慕尼黑被加入。1994年8月, ANSI/ISO委员会草案登记。1997年7月, The C++ Programming Language第三版完成。10月,ISO标准通过表决被接受。1998年11月,ISO标准被批准。

C++的特点:C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。

C++既具有适合于系统程序设计的C语言所具有的可适应性和高效性,又能在其程序组织结构方面具有像Simula那样的语言设施。在设计的时候,还做了很大的努力,使得引借自Simula的高层次的程序设计技术能够应用于系统程序设计之中。这即是说,C++所提供的抽象机制能够被应用于那些对效率和可适应性具有极高要求的程序设计任务之中。在C++的设计中只要在不严重影响其对强型别检查的支持的地方,都尽量做到与C的“source-link”方式相兼容。除了某些微小的细节差别之外,C++将C[Kernighan,1978][Kernighan,1988]作为一个子集包含了进来。C++与C的兼容性使得C++程序员立刻就能有一个完整的语言和工具集可用。还有两点也很重要,一是有大量关于C的高质量的教学素材已经存在,二是C++程序员可以利用C++与C的兼容性而直接并有效的使用大量现成的程序库。在决定将C作为C++的基础的时候,C还没有像后来那样出类拔萃、

炙手可热,所以在考虑这个问题的时候,与C语言所提供的可适应性和高效性相比,C语言的流行程度只是个次要的考虑因素。

然而,与C的兼容性也使得C++在某些语法和语义上保留了C的一些瑕疵之处。比如,C语言的声明语法就实在远不及优美;而其内建型别的隐式转换规则也是混乱无章法的。还有另一个大问题,就是许多从C转向C++的程序员并没有认识到,代码质量上的显著提高只能通过在程序设计风格上的显著改变来达到。

题目是矩阵类设计,所实现的功能是定义矩阵类,包含行、列和矩阵数据元素并输入输出矩阵,并实现矩阵加法和乘法及减法的功能。

矩阵是线性代数的一个主要内容,又是解决众多问题的有力工具。因此,深入理解矩阵运算的来龙去脉,对学好线性代数便会起到极其有益的作用。然而,在矩阵的运算中,矩阵的加法,数与矩阵之积,都与实数或向量中相应的运算较为一致,因而易于接受,便于掌握。唯独矩阵的乘法,则与学过的各种乘法大相径庭,相差甚殊,不仅初学者感到莫名其妙,难以接受,甚至学完这门课程仍大惑不解而心存疑窦。

2.1 功能模块

下图显示了,源码程序所实现的所有功能。其中包括矩阵的加法、乘法和减法。

图4-1总功能图

类的定义:class Matrix

//上述定义了一个Matrix类

{

public://类的共享形式,为共享。

Matrix():row(0),column(0),m(0){}

Matrix(const Matrix& ma); 进行构造函数的声明,为下面的构造函数的建立提供一个前提。

~Matrix();//给Matrix类加入一个内联的空析构函数。

void setMatrix(int r,int c,double **ma);

int getRow(){return row;}

int getColumn(){return column;}

void display();将矩阵显示函数的定义

Matrix& operator=(const Matrix& ma);运算符=重载成员函数

Matrix operator+(const Matrix& ma)const;运算符+重载成员函数

Matrix operator-(const Matrix& ma)const;运算符重载成员函数

Matrix operator*(const Matrix& ma)const;运算符重载成员函数

private://私有的数据成员

int row;

int column;

double** m;

};

2.2 流程图

1、总操作流程图

2、矩阵加法模块图3-2总流程图

功能:实现任意两个可加性矩阵相加

Matrix Matrix::operator +(const Matrix &ma) const/重载运算符+函数实现

{

double** result=new double *[this->row];定义个变量,为double型,将动

态储存空间的double型值赋予他。

for(int i=0;irow;i++)

result[i]=new double[this->column];同上赋值过程

for(int i6=0;i6row;i6++)

for(int j=0;jcolumn;j++)

result[i6][j]=this->m[i6][j]+ma.m[i6][j];实现矩阵的加法运算

Matrix temp; 定义类对象

temp.setMatrix(this->row,this->column,result); 对象的成员函数实现

for(int i7=0;i7row;i7++)

delete[] result[i7];释放内存

delete[] result;

return temp;

}

图3-3矩阵加法流程图

3、矩阵的乘法模块

功能:实现任意两个可乘性矩阵相乘

Matrix Matrix::operator *(const Matrix &ma) const重载运算符*函数实现{

for(int i=0;irow;i++)

result[i]=new double[this->column];给变量result赋值

double entry;定义对象

for(int i11=0;i11row;i11++)

for(int j=0;j

entry=0;

for(int k=0;kcolumn;k++)

entry=entry+(this->m[i11][k])*(ma.m[k][j]);实现矩阵乘法功能

result[i11][j]=entry;

}

Matrix temp;

temp.setMatrix(this->row,ma.column,result);

for(int i12=0;i12row;i12++)

delete[] result[i12];

delete[] result;

return temp;

}

图3-4矩阵乘法流程图

第四章运行及测试结果

运行很顺利,经过测试,程序运行处相应的结果。并根据题意的要求,做到矩阵的输入,矩阵的加法和乘法,并运行出结果输出矩阵。

1、显示主功能菜单

图4-1主功能菜单

2、矩阵加法执行结果

3、矩阵减法执行结果

图4-3矩阵的减法功能

4、矩阵乘法执行结果

图4-4矩阵的乘法功能5、输出矩阵形式

图4-5矩阵输出

第五章课程设计总结

在课程设计中,牵涉到了很多知识点,我看的最多的书就是谭浩强的关于C++方面的书,其中用到C++中关于重载函数的知识,还有类的定义,构造函数和析构函数的建立。通过程序编辑、编译、连接、运行和调试编译,来实现矩阵相加相乘。

头文件的作用,加强安全检测,通过头文件可能方便地调用库功能,而不必关心其实现方式,这样更为简单的读出程序。还有派生类的构造函数应在初始化表里调用基类的构造函数;派生类和基类的析构函数应加Virtual关键字。不要小看构造函数和析构函数,其实编起来还是不容易。内存的分配方式,分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题

1、静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。

2、栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。

3、堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。

内存分配的注意事项:用new或malloc分配内存时,必须要对此指针赋初值。用delete 或free释放内存后,必须要将指针指向NULL,不能修改指向常量的指针数据。

关于const和#define的比较:const有数据类型,#define没有数据类型个别编译器中const可以进行调试,#define不可以进行调试,在类中定义常量有两种方式:

1、在类在声明常量,但不赋值,在构造函数初始化表中进行赋值;

2、用枚举代替const常量。

当然还有很多知识,这里不一一罗列啦,通过这次C++课程设计,我也从中学习了很多知识,说实话,以前对C++的重要性缺乏认识,不知道他的重要性所在,在这次学习中,我也从网上收集了很多的资料,先理解,然后在一一分析,在分析的过程中不断的学习,不断的领悟。

在这个过程中,每次的浏览都让自己感触很深,我们真的什么也不会,真的。在上网浏览的过程中,我也加了几个专业的群,里面都是一些编程人员。原本想通过他们能给自己一些帮助,但是当我想他们求助的时候却引起了他们的质疑,他们说在这个群里基本上都是一些编程人员,你怎么会提出这么简单的问题呢,再说了,要求都给你写啦,为什么这么简单的还没有搞明白,自己也不动脑子想想。

被群主这么一说,我真的无地自容啦,真的什么也不会什么也不懂,跟那些专业的编程人员比起来,我们真的太次啦。在以后,学好一门办成语言的重要性,我心里也很清楚,在以前自己也很想静下心来去学几门语言,但总是半途而废,怎么坚持都坚持不下来。那个时候就开始想着那些很牛的编程人员是不是天生的啊,为什么都有那么大的恒心,那么大的毅力。

在班里面也有很多同学在编程方面很厉害,感觉他们的水平也是很高的,但是通过他们的所作所为,让我慢慢的打消了以前的念头,编程员不是天生的,他们是在不断的练习中让自己变得很强。他们所做的和我们所做的截然不同,他们才是才子,而我们呢,就是过客,真的很后悔自己没有好好的学习一门语言,没好好的学习C。

最近大四的学长都离校啦,他们的很多书都在外边出售。我的心里面彭生了一种意念,那就是捡起他们的资源,来让自己更丰富。我就去买书,买了好多,基本上都是关于编程语言的,想在暑假好好的学一学,让自己也变成这方面的非文盲,让自己强大起来,这次必须说到做到,因为这次的课程设计对我打击太大了,让我深深的感触到自己到底与别人相差多远,相差多大。

我买到了一本C#,开始还不知道他是干什么用的,通过网上我明白了他是在C、C++的基础上有发展出来的另一种很潮流的汇编语言,相对于C、C++他有

很多的优越性,他吸收了C、C++的很多优点,并且解决了C、C++出现的很多问题,是一种很好的汇编语言。这个暑假自己就想好好的发奋一下,好好做,争取能学好这个汇编语言。

附录

源代码为:

#include //基类的输入输出

#include //字符串头文件

using std::cout;//作用域

using std::cin;

using std::endl;

/***********************矩阵类的定义**********************************/

class Matrix//定义矩阵类

{

public:

Matrix():row(0),column(0),m(0){}//构造函数

Matrix(const Matrix& ma); //构造函数的声明

~Matrix();

void setMatrix(int r,int c,double **ma);//成员函数

int getRow(){return row;}

int getColumn(){return column;}

void display();//陈列函数

Matrix& operator=(const Matrix& ma);//运算符=重载成员函数

Matrix operator+(const Matrix& ma)const;//运算符+重载成员函数

Matrix operator-(const Matrix& ma)const;//运算符重载成员函数

Matrix operator*(const Matrix& ma)const;//运算符重载成员函数

private://私有的数据成员

int row;

int column;

double** m;

};

/***********************构造函数**********************************/

/*****************************************************************/ Matrix::Matrix(const Matrix &ma)//构造函数的实现

{

this->row=ma.row;//字符串的行和列

this->column=ma.column;

m=new double *[row];//动态分配存储空间

for(int i1=0;i1

m[i1]=new double[column];

for(int i2=0;i2

for(int j=0;j

m[i2][j]=ma.m[i2][j];

}

/**************************析构函数***************************************/

Matrix::~Matrix()//析构函数的实现

{

for(int i=0;irow;i++)

delete[] m[i];

delete[] m;

}

/*****************************************************************/ void Matrix::setMatrix(int r,int c,double** ma)//设置输入矩阵的实现

{

for(int i=0;irow;i++)

delete[] m[i];

delete[] m;

this->row=r;

this->column=c;

m=new double *[row];

for(int i3=0;i3

m[i3]=new double[column];

for(int i4=0;i4

for(int j=0;j

m[i4][j]=ma[i4][j];//赋值m是指针变量

}

/*********************输出矩阵********************************************/

void Matrix::display()//显示函数的实现

{

if(m==0) cout<<"矩阵无法实现\n";

else{

for(int i=0;i

for(int j=0;j

cout<

cout<

}

}

}

/************************重载“=”*****************************************/

Matrix& Matrix::operator =(const Matrix &ma)//重载运算符=函数实现

{

if(m!=0)

{

for(int i=0;irow;i++)

delete[] m[i];

C语言课程设计报告-游戏2048

东华理工大学C语言课程设计报告 学院:国际教育学院学院专业:电子信息工程 班级:1420606 学号:201420060638 姓名:钟天运

一、课程设计题目:游戏2048 二、课程设计要求: a)使用C语言编写2048这款游戏 b)能够正常运行,拥有游戏界面。 c)能正常进行游戏从开始到结束。 d)用户操作方便 三、设计思路: a)游戏介绍: i.2048是一款简单的数字类游戏,界面是一个 4*4的方形格子。每个格子里可以为空或者有 一个2^n的数值。 ii.用户可以输入4种指令,分别是:上下左右,游戏会根据用户的指定的方向,将格子中 的数值向对应方向进行移动,直至移动到最边 上的格子或者有其他数值占用,如果碰到等大 数值,将会进行合并。此外,成功移动后,会 在一个空格子随机生成一个2或者4 iii.游戏目标是合成2048这个数值或者更大的数值。 b)实现思路: i.可以使用二维数组来保存4*4格子中的数值 ii.指令,可以通过输入字符函数,读取用户

在键盘上的方向键,进行判断执行对应的代 码。 iii.游戏界面,可以使用简单的特殊制表符,来实现,并通过清屏函数来进行反复同位置打 印界面。 iv.需要判断游戏结束的函数,以及记录游戏分数和步骤的变量 v.当游戏结束时,能够询问用户是否重新开始。 vi.随机生成一个新数,可以调用随机函数,使用时间做种子。 c)实现难点: i.打印游戏界面,要实现灵活能根据棋盘数组里 面的数据灵活打印。 ii.执行操作时,数值的移动和合并。

四、流程图

五、C语言源代码 // 游戏2048.c #include "windows.h" #include "time.h" #include "stdio.h" #include "conio.h" #include "string.h" //宏定义常量方向键值 //const int LEFT = 75, UP = 72, RIGHT = 77, DOWN = 80; #define LEFT 75 #define UP 72 #define RIGHT 77 #define DOWN 80 const char error_str[] = "您上次输入的指令无法识别,请重新输入。"; struct board { int place[4][4]; long int stepn; long int num; //存储游戏分数 long int time; int dtk; //direction key 记录方向键,及操作方向 int over; int zeronum; }; //该函数为游戏运行函数,当只是玩游戏的时候。进入该函数,游戏控制函数。int main() { //place数组为棋盘,其中为零代表空,-1代表不能合并的牌,其他2的倍数值为本身含义,初始化为全0。 struct board board1, board_backup; int newgame(struct board *, int), show(struct board *), operate(struct board *); char str[100] = "首次运行游戏"; //用于记录系统返回给用户的信息,例如:上一步执行向左合并,按键有误等 newgame(&board1, 0); //调用函数为新局初始化,第二个

C语言课程设计总结

C语言课程设计总结 一、设计题目: 猜数字和贪吃蛇小游戏。 专业:09电气工程及其自动化 组号:第十组 组员:马邢(组长)、王维、毛亮、汪小成、魏坤波、陈维康、高裴石、石峰、葛良志、冯鑫源 指导教师:黄莉莉 二、任务分配: 我们组分为两队,一对制作贪吃蛇游戏,另一对制作猜数字游戏。制作贪吃蛇的人员是马邢,葛良志,高裴石,石峰,陈维康。石峰和高裴石负责收集程序材料,马邢和葛良志负责整理和编写程序,陈维康辅助我们工作。制作猜数字的是魏坤波,王维,毛亮,汪小成,冯鑫源。魏坤波和王维负责编写程序,其他三人收集材料并帮助他们人编写和调试程序。 三、心得体会: 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今让我我们仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,几个星期的日子里,可以学

到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,也懂得集体团队的重要性。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在黄老师的辛勤指导下,终于游逆而解。同时,在黄老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢

C语言课程设计参考模板

C语言课程设计 题目 XXXXXXX 二级学院电子与信息工程学院 班级 1X级XXXXX 专业X班 姓名 XXX 学号 XXX 指导教师梁建勇 2016年07月01日

通讯录管理系统 电子与信息工程学院C语言课程设计任务书

2014022061 刘言松 通讯录管理系统 刘言松安康学院 2014级电子与信息工程系电子信息工程2班 摘要:通讯录管理系统是生活中不可缺少的部分编写了一个通讯录管理系统是十分必要的。本程序设计具有通讯信息的输入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。程序用了条件、循环、结构体等知识点。可运用于小的管理软件。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。 关键词:通讯录管理系统;结构体;条件语句;循环结构;指针 1引言 学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C 语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。通过程序设计,达到理论与实际应用相结合,提高对信息管理系统的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现信息管理系统。 2设计方案 2.1设计思路 建立一个函数,用来添加、显示、删除、查询、修改等信息,完成通讯录的功能。主函数可以调用五个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、退出系统等功能。在主函数中可以以1、2、3、4、5、数字键分别可以执行某个功能模块 3程序设计与实施 3.1根据该流程图定义数据类型建立函数 typedef struct { char score; //编号 char name[10]; //姓名 char num[15]; //电话号码

智能计算导论课程设计

西安电子科技大学 智能计算导论课程实验报告SAR图像变化检测

SAR图像变化检测 1 引言 遥感变化检测是指通过对不同时期同一区域的遥感图像进行比较分析,根 据图像之间的差异得到我们所需要的地物或目标的变化信息。现代遥感技术的飞速发展为变化检测提供了一种便捷的途径,遥感数据成为变化检测的主要数据源。 与可见光和红外遥感相比,微波遥感具有无可比拟的优点:微波能穿透云雾、雨雪,具有全天候、全天时的工作能力。二,微波对地物有一定穿透能力。三,采用侧视方式成像,覆盖面积大。正是这些优点,使得SAR 图像日益成为变化 检测的重要数据源。 SAR 变化检测技术的需求日益广泛。目前,全球坏境变化加剧,城市急速发展,洪水、地震等自然灾害时有发生,这些都需要及时掌握相关动态信息,为相关决策部门提供支持,而SAR 的种种优点为快速响应提供了技术支持和应急保障。 2 定义 变化检测是指通过分析同一地区不同时间的图像,检测出该地区的地物随时间发生变化的信息 SAR图像的变化检测是指利用多时相获取的同一地表区域的SAR图像来确定和分析地表变化,能提供地物的空间展布及其变化的定性与定量信息 3 常用方法

本报告所用算法流程图 4 实验结果

5 程序 %initial clc clear all close all

Ia=imread('2002.5.bmp');%read image Ib=imread('2005.4.bmp'); Iag=Ia(:,:,1);%rgb2gray Ibg=Ib(:,:,1); %midfilt Iam=medfilt2(Iag); Ibm=medfilt2(Ibg); %find difference ia_double = double(Iam)+1; %uint8todouble ia1 = ia_double/255; %unit ib_double = double(Ibm)+1; ib1 = ib_double/255; di_image=di(ia1,ib1); %构造模糊差异 di_image1=uint8(di_image.*256); di_image1=double(di_image1); %FCM bilateral_di_image=bilateral(di_image1,36,6); %双边滤波 bilateral_di_image1=uint8(bilateral_di_image); bilateral_di_image=double(bilateral_di_image1); fcm_image=fcm(bilateral_di_image); %聚类 [T]=mis(Re,fcm_image,N,L); k=T; disp(sprintf('12óD%d??????£??ó2??????a%d',N*L,k)); p=k/(N*L)*100 disp(sprintf('?ó2??ê?a%2.4f',p)) %display figure(1); subplot(2,3,1),imshow(Ia); title('原图a'); subplot(2,3,2),imshow(Iam); title('图a中值滤波图'); subplot(2,3,3),imshow(Ib); title('原图b'); subplot(2,3,4),imshow(Ibm); title('图b中值滤波图'); subplot(2,3,5),imshow(di_image); title('模糊差异图'); subplot(2,3,6),imshow(bilateral_di_image1); title('双边滤波图'); figure(2); imshow(fcm_image); title('聚类图'); function [img1] = bilateral(img,winsize,sigma) winsize = round( (winsize-1)/2 )*2 + 1;

仓库管理系统C课程设计报告

《高级语言程序设计》 课程设计报告 设计题目图书管理系统 专业计算机科学与技术 班级 姓名 学号 2007 年6 月5日 目录 1.设计目的 (3) 2.设计思想 (3) 3.类及对象设计 (4) 4.程序源代码 (5) 5.调试记录 (16) 6.总结 (18) 仓库管理系统 1.设计目的 通过实习进一步掌握所学的基本知识,学会解决实际问题的方法 2设计题目 1、问题描述(功能要求):某公司现有以下设备:普通电视机、DVD、带DVD 的电视机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%,要求对所有的库存设备都能按照品名进行显示、查找、增加和删除、保存的功能。

2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。 2.设计思想 (1)设计classadmin管理库,实现对仓库信息的描叙;class shelf柜台类库实现建立电器资料;class ele电器类,实现对电器的描述,电器的编号,货架号,名称,数量,价格等;class mana函数类,实现对电器的入库,查找,出库等。 (3)设计菜单来实现功能设计 1、输入商品 2、商品查找 3、查询入库 4、商品出库 5、退出系统 3.设计类及对象 (1)本程序定义了四个类,定义如下: classadmin { public: admin(); private:

c语言课程设计报告

C语言程序设计B 课程设计报告 设计题目:学生成绩管理系统年级班级: 学号: 姓名: 指导教师: 2020 年 6 月 18 日

目录 一、设计目的 (3) 二、课程设计内容和要求 (4) 三、总体设计 (5) 四、主要步骤 (12) 五、功能实现 (13) 六、功能测试 (64) 七、评价程序 (83) 八、课程设计体会 (84)

一、设计目的 程序设计能力是当代理工类大学生的必备能力,当学生学习了C语言之后,编程能力远远不能达到开发实际应用程序的要求,特备是对其中的指针、结构体、链表和文件部分的理解和应用都比较弱。 程序设计的目的是通过对面向过程的学习,将C语言的主要知识点进行综合,针对提高学生C语言程序设计能力,强化编写较大的应用软件能力,熟练运用已掌握的知识解决实际需要解决的问题,以达到更加熟知指针、链表、结构体、文件读取、标准库的使用。 主要目的为以下几点: 1、熟练掌握面向过程(结构化)程序设计基本知识; 2、综合运用所学知识解决实际问题; 3、受到面向过程(结构化)程序设计的基本训练; 4、体会面向过程(结构化)开发程序的过程。

二、课程设计内容和要求 1.课程设计内容: 学生通过使用C语言进行编写算法,开发学生成绩管理系统,以实现对学生成绩的管理。 2.课程设计要求 1)具有菜单,可以在菜单上进行选择; 2)能实现学生数据录入、修改、删除、查询; 3)能实现数据排序; 4)有数据输出功能; 5)有数据读取与存储功能; 6)一个学生的数据(称为:每条记录)包含姓名、学号、语文、数 学、英语、总分、名次等信息; 7)以结构方式存储每条记录; 8)多条记录以链表方式存储到内存; 9)随时可将全部数据存储到磁盘文件中,方便下次从磁盘读取数据。

人工智能课程设计doc资料

人工智能课程设计

人工智能<五子棋> 技术报告 简介 本课程设计是基于alpha-beta剪枝算法的五子棋的博弈游戏,具有悔棋,可选择禁手,支持人机对战,人人对战等功能。整个设计基于Java语言开发,界面美观大方。 alpha-beta剪枝技术的基本思想或算法是,边生成博弈树边计算评估各节点的倒推值,并且根据评估出的倒推值范围,及时停止扩展那些已无必要再扩展的子节点,即相当于剪去了博弈树上的一些分枝,从而节约了机器开销,提高了搜索效率。具体的剪枝方法如下: (1) 对于一个与节点MIN,若能估计出其倒推值的上确界β,并且这个β值不大于 MIN的父节点(一定是或节点)的估计倒推值的下确界α,即α≥β,则就不必再扩展该 MIN节点的其余子节点了(因为这些节点的估值对MIN父节点的倒推值已无任何影响了)。这一过程称为α剪枝。 (2) 对于一个或节点MAX,若能估计出其倒推值的下确界α,并且这个α值不小于 MAX的父节点(一定是与节点)的估计倒推值的上确界β,即α≥β,则就不必再扩展该MAX节点的其余子节点了(因为这些节点的估值对MAX父节点的倒推值已无任何影响了)。这一过程称为β剪枝。 1、数据结构定义 本文定义15*15的五子棋棋盘,实现算法,在算法中采用的数据结构包括:int isChessOn[][]描述当前棋盘,0表示黑子,1表示白字,2表示无子;int pre[][]记录棋点的x,y坐标。 由于本课程设计是基于Java语言开发的,在Java中只能用类表示并实现所定义的数据结构。所以下面将用类来描述相应的数据结构及算法:public class ChessPanel{ private ImageIcon map; //棋盘背景位图 private ImageIcon blackchess; //黑子位图 private ImageIcon whitechess; //白子位图 public int isChessOn [][]; //棋局 protected boolean win = false; // 是否已经分出胜负 protected int win_bw; // 胜利棋色 protected int deep = 3, weight = 7; // 搜索的深度以及广度 public int drawn_num = 110; // 和棋步数 int chess_num = 0; // 总落子数目 public int[][] pre = new int[drawn_num + 1][2]; // 记录下棋点的x,y坐标最多 (drawn_num + 1) 个 public int sbw = 0; //玩家棋色黑色0,白色1 public int bw = 0; // 当前应该下的棋色 0:黑色(默认), 1:白色 protected int x_max = 15, x_min = 0; // 边界值,用于速度优化

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

C语言程序设计课程设 计报告 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

《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主要模块的算法描述

c语言课程设计体会

体会 通过这次C语言的课程设计,我明白了很多也知道了很多,更收获了很多。在课程设计的过程中出现过困难, 三周的课程设计已经结束了。回想学习C语言的过程中,既有快乐又有烦恼, 回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计的过程中遇到的问题,这毕竟独立做的,难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识从新温故。这次课设终于顺利完成了,在设计中遇到了很多编程问题 做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对于我们C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在美妙啊! 很感谢这次的课程设计,它使我更加地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,在做任何事倒要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比通向成功的铺路石,不可或缺。 人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的道路上,总遇到重重困难,但正是因为困难我们才变得更坚强。今后的路还很长,面对困难,让我们用行动去俘虏它吧!

C+课程设计报告代码

C++课程设计报告 专业: 学号: 姓名: 同组人: 提交日期: 【设计目的】 1、通过设计一个较为简单的《商场库存货物管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。 2、了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。【设计内容】 1、设计某公司的库存管理系统。此程序是为了更好的处理货物的详细信息。包括货物的货物的入库、出库、查询、统计。并且能够很好的让使用者了解库存货物的有关信息。 2、系统要求能够按编号显示、查找、增加、删除、和保存各类货物的信息。输入和输出货物的有关信息并且对输入保存文件里确定程序至少具备以下功能:查询模块、增加模块、删除模块、货物的有关信息数据存盘等的基本模块。 3、系统具有“货物的有关信息数据存盘”的功能,所以货物的有关信息数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出货物的有关信息,可以方便用户使用,避免数据重复录入,考虑到系统实现简洁,货物数据文件采用文本文件,货物数据文件名:date.dat。 4、作为一个完整的系统,除了具有增加货物,删除货物的信息模块,还应该具有修改货物相关信息的功能,所以本系统具备了“商品入库”、“商品出库”、“查询统计”、“商品报损”、“退出系统”,这5个基本功能,就可以以最简捷的方式实现对货物的管理,也就实现了系统的要求。 5、下图中黑体字部分程序块为我完成的代码块

【实验环境】 1.硬件环境: (1)电脑型号戴尔 Inspiron 5557 笔记本电脑 (扫描时间:2017年01月11日) (2)操作系统Windows 10 Enterprise 64位 ( DirectX 12 ) (3)处理器英特尔 Core i7-6500U @ 2.50GHz 双核 (4)主板戴尔 03XTY7 ( 英特尔 PCI 标准主机 CPU 桥 - 100 Series 芯片组Family/eSPI Controller - 9D48 ) (5)内存8 GB ( 镁光 DDR3L 1600MHz ) (6)主硬盘三星 SSD 850 EVO 500GB ( 500 GB / 固态硬盘 ) (7)显卡Nvidia GeForce 930M ( 4 GB ) (8)显示器友达 AUO38ED ( 15.3 英寸 ) 2.软件环境:Windows 10 Enterprise 64位 ( DirectX 12 )、Visual Studio 2015 【设计中使用函数说明】 (1)char manage::first_face()//首页:该函数是该系统的首页。 (2)void manage::in_cangku()//入库函数:该函数是将商品信息录入到文件中。 (3)void manage::out_cangku()// 出库函数:该函数将商品信息读取后找到用户想要出库的商品然后进行商品报损。 (4)void manage::find_property()//查询函数:该函数用于让用户选择自己想要的查询商品的方式:俺商品名称查询、按商品价格查询、按商品价格查询。

C语言课程设计题目汇总

目录 题目6:通讯录程序设计(限2人)........................................................................................................................................... 题目10:机房机位预定系统(限2人)..................................................................................................................................... 题目13:工资纳税系统............................................................................................................................................................. 题目41:条件编译.....................................................................................................................................................................

题目6:回文数的形成............................................................................................................................................................... 杨顺民题目 C语言程序课程设计题目 题目1:年历显示 功能要求: (1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 题目2:小学生测验 面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。 功能要求: (1)电脑随机出10道题,每题10分,程序结束时显示学生得分; (2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的; (3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案; (4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分; (5)总成绩90以上显示“SMART” ,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”

智能仪器设计课程设计

智能仪器设计课程设计 8. 试设计智能仪表 实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配Cu100热电阻,测温范围为0℃~150℃。采用位式(两位、三位,具有滞环)控制、并用晶闸管过零驱动1000W电加热器(电源电压为AC220V)。 《智能仪器设计基础课程设计》----40题目 教学说明: 如下设计题目应该在课程开始时布置,并在教学中安排时间,以产品设计案例教学方式讲授如何理解题目以及如何实现题目,并补充完成题目所需要的相关知识。 如下的智能仪表课程设计题目,都是小型智能仪表产品开发方面的题目。涉及智能仪表硬件与软件设计。智能仪器课程设计是智能仪器课程教学的重要环节,根据设计智能仪表产品的课程改革目的,特选择一些小型智能仪表产品作为课设题目,满足教学需求。课程题目小,学生容易学,上手快,可以在短时间走完智能仪表设计的全过程,学会产品设计步骤。 1.设计基本要求 (1)正确理解设计题目,经过查阅资料,给出正确设计方案,画出详细仪表原理框图(各个功能部分用方框表示,各块之间用实际信号线连接)。 在互连网上收集题目中所用到的器件资料,例如传感器(热偶分度表等)、信号调理电路、AD转换器、单片机、继电器、电源、显示器件等。 在互连网上收集相关单片机的显示、AD转换、显示、控制算法等程序。 在充分研究这些资料基础之上,给出设计方案(选择信号调理电路、单片机、显示、按键输入、继电器驱动、电源等,简要说明选择的理由) (2)用Protel99SE软件设计仪表详细原理图。 要求正确标记元件序号、元件数值、封装名。 (3)设计PCB图 在画PCB前应该购买元件,因为有了元件才知道封装尺寸,但也可以不购买元件,只到元件商店测量实际元件尺寸后,画封装图。 (4)熟悉单片机内部资源,学会ADC、SPI接口、定时器、中断、串口、I/O引脚等模块的编程。 (5)采用C语言开发所设计仪表的程序。 按照题目要求,确定仪表需要完成的任务(功能),然后分别编制各任务的程序。程序应该有说明,并有详细注释。 说明:若是不安装实验板或是最小系统板,就只能用Atmel公司的A VR Studio软件或是Keil软件(随意下载)仿真,则学习效果将大打折扣。 2.设计(考试)说明书 说明书内容: (1)封面内容: 《智能仪器设计基础》考试题 题目号:

C课程设计报告含代码

C课程设计报告含代码Newly compiled on November 23, 2020

专业: C++课程设计报告 学号: 姓名: 同组人: 提交日期: 【设计目的】 1、通过设计一个较为简单的《商场库存货物管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。 2、了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。【设计内容】 1、设计某公司的库存管理系统。此程序是为了更好的处理货物的详细信息。包括货物的货物的入库、出库、查询、统计。并且能够很好的让使用者了解库存货物的有关信息。 2、系统要求能够按编号显示、查找、增加、删除、和保存各类货物的信息。输入和输出货物的有关信息并且对输入保存文件里确定程序至少具备以下功能:查询模块、增加模块、删除模块、货物的有关信息数据存盘等的基本模块。 3、系统具有“货物的有关信息数据存盘”的功能,所以货物的有关信息数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出货物的有关信息,可以方便用户使用,避免数据重复录入,考虑到系统实现简洁,货物数据文件采用文本文件,货物数据文件名:。 4、作为一个完整的系统,除了具有增加货物,删除货物的信息模块,还应该具有修改货物相关信息的功能,所以本系统具备了“商品入库”、“商品出库”、“查询统计”、“商品报损”、“退出系统”,这5个基本功能,就可以以最简捷的方式实现对货物的管理,也就实现了系统的要求。 5、下图中黑体字部分程序块为我完成的代码块

c语言课程设计报告书

课程设计报告书 所属课程:c语言 项目:库函数模拟系统 指导老师:邹姝稚 班级:软件1401 姓名:江闯 学号:141403107 分数:

1.任务描述: 本系统开发的代码模拟了下列库函数的功能: (1).模拟gets和puts的功能:能接收一个字符串,将其写入ASCII文件,并且可以读出显示。 (2).在不使用字符串库函数的条件下,编程实现字符串的拷贝,连接,求长,倒置功能。 (3).字符串加密功能:将一段明文建立到一个ASCII文件中,按加密的算法加密后写入密文文件,最终实现将明文和密文文件都显示出来。 (4).编程实现字符串与对应数字的相互转换功能。 2.总体设计: 模块调用图: 图1

函数调用图: 图2 函数功能: (1)函数gp( ):模拟gets和puts的功能 (2)函数kaobei( ):实现字符串的拷贝 (3)函数lianjie( ):实现字符串的连接 (4)函数qiuchang( ):实现字符串的求长 (5)函数daozhi( ):实现字符串的倒置 (6)函数jiami( ):实现字符串的加密功能,最后将明文和密文文件都显示出来 (7)函数zhuanhuan1( ):将数字字符串转换为对应的数字 (8)函数zhuanhuan2( ):将数字转换为对应的数字字符串 3.详细设计: (1).模仿gets和puts功能: gets和puts功能与scanf和printf函数的功能相似,但是也不是完全相同,本系统模拟功能的程序总共运用了两次函数调用技术,模拟gets运用了一次,模拟puts运用了一次。 (2)..字符串的拷贝功能: 字符串的拷贝功能程序设计源于strcpy的功能,其中运用了字符串数组和指针的相关技术,还运用了一组while语句,实现语句的循环,从而将一个字符串拷贝到一个空数组中。

智能控制系统课程设计

目录 有害气体的检测、报警、抽排.................. . (2) 1 意义与要求 (2) 1.1 意义 (2) 1.2 设计要求 (2) 2 设计总体方案 (2) 2.1 设计思路 (2) 2.2 总体设计方框图 2.3 完整原理图 (4) 2.4 PCB制图 (5) 3设计原理分析 (6) 3.1 气敏传感器工作原理 (7) 3.2 声光报警控制电路 (7) 3.3 排气电路工作原理 (8) 3.4 整体工作原理说明 (9) 4 所用芯片及其他器件说明 (10) 4.1 IC555定时器构成多谐振荡电路图 (11) 5 附表一:有害气体的检测、报警、抽排电路所用元件 (12) 6.设计体会和小结 (13)

有害气体的检测、报警、抽排 1 意义与要求 1.1.1 意义 日常生活中经常发生煤气或者其他有毒气体泄漏的事故,给人们的生命财产安全带来了极大的危害。因此,及时检测出人们生活环境中存在的有害气体并将其排除是保障人们正常生活的关键。本人运用所学的电子技术知识,联系实际,设计出一套有毒气体的检测电路,可以在有毒气体超标时及时抽排出有害气体,使人们的生命健康有一个保障。 1.2 设计要求 当检测到有毒气体意外排时,发出警笛报警声和灯光间歇闪烁的光报警提示。当有毒气体浓度超标时能自行启动抽排系统,排出有毒气体,更换空气以保障人们的生命财产安全。抽排完毕后,系统自动回到实时检测状态。 2 设计总体方案 2.1 设计思路 利用QM—N5气敏传感器检测有毒气体,根据其工作原理构成一种气敏控制自动排气电路。电路由气体检测电路、电子开关电路、报警电路、和气体排放电路构成。当有害气体达到一定浓度时,QM—N5检测到有毒气体,元件两极电阻变的很小,继电器开关闭合,使得555芯片组成的多谐电路产生方波信号,驱动发光二极管间歇发光;同时LC179工作,驱使蜂鸣器间断发出声音;此时排气系统会开始抽排有毒气体。当气体被排出,浓度低于气敏传感器所能感应的范围时,电路回复到自动检测状态。

C语言课程设计报告-模板

C语言课程设计报告 班级:16 物联网 一、题目说明 (1)读取输入信息,能正确进行数字运算

(2)拥有记忆功能,可查询最近几次计算结果并继续进行数字运算。 二、基本功能实现 (1)能实现两个数之间的加减,乘,除,乘方,开方等运算。 (2)实现记忆功能,可保留近十位结果,可用#键查看。(3)*键作为清0键,清除当前屏幕上的值为0表示重新开三、设计流程(可以画流程图,可以直接写说明)

四、代码 #include #include #include #include double yunsuan(double a, char operate, double b); //处理数值之间的运算void PutRes(double array[], double res, int *i); //保存该次运算结果 int main() { char str[40]; double a = 0; double b = 0; double res = 0; double history[10] = {0,0,0}; char opt; int i = 0; printf("欢迎进入计算功能(eg: 1 \n+ 1 ; '#':查询历史结果; 'q':退出程序)·\n"); while(1){

fgets(str,40,stdin); //将从键盘的一整行标准输入保存在字符串str中 if(sscanf(str,"%lf", &a) == 1){ //将str以长浮点型的格式放入a中,如果返回值为1,说明输入的是数值, scanf("%c %lf", &opt, &b); //获取操作符的值和另外一个操作数的值 res = yunsuan(a,opt,b); //调用yunsuan()函数计算,并将结果给res printf("%lf %c %lf = %lf\n\n",a, opt, b, res); PutRes(history, res, &i); //调用函数PutRes()将本次结果保存到数组history中(i用引用传递) // printf("%d\n", i); }else if(sscanf(str,"%c",&opt) == 1){ //将str以字符型的格式放入opt中,如果返回值为1,说明输入的是字符 if(opt == '#'){ //如果opt为‘#’,则显示history 中的数值 int j = 0; for(j = 0; j < i; ++j){ //i为history中存放的数值个数 printf(" %lf ", history[j]); } printf("\n");

c语言课程设计

课程设计报告 课程设计名称:学生成绩管理系统 系别:三系 学生姓名: 班级: 学号: 成绩: 指导教师: 开课时间:2013-2014 学年二学期 目录

一、课程设计目的 (2) 二、课程设计内容 (2) 三、学生成绩管理系统概要设计(包含几大功能模块) (4) 3.1、各个模块功能 (4) 3.2、各函数的功能和实现 (4) 四、成绩管理系统详细设计(各功能模块的具体实现算法——流程图) (5) 4.1、本人所负责的部分: (5) 4.2、其他附带源程序: (7) 五、总结 (18)

学生成绩管理系统 一、课程设计目的 建立学生成绩管理系统,利用计算机对学生成绩进行管理,方便学生查看自己成绩,对学生的基本信息,成绩录入,修改,删除,查询统计等提供一系列的操作。帮助广大师生提高工作效率,实现学生成绩管理工作流程的系统化,规范化,减少人力投资。 二、课程设计内容 对学生信息(包括学号、语文、数学、英语、)进行管理,包括学生成绩的信息保存,输入、输出、查询、删除、统计、修改、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 1、用C语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语)进行管理,包括学生成绩的信息输入、输出、查询、删除、统计、保存、退出; 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2) 录入功能:从键盘输入学生的姓名学号及三科成绩 (3) 输出功能:完成全部学生记录的显示 (4)、查询功能:完成按姓名或者学号查找学生记录,并显示 (5)删除功能:按学号进行删除某学生的成绩

智能家居课程设计报告

南通大学 智能家居监控系统设计 学院:电气工程 班级:电115 姓名:刘家辰 学号: 1112002083

目录 1 引言 (3) 2 系统设计 (3) 3 硬件设计 (4) 3.1单片机的选型 (4) 3.2温度监测模块 (5) 3.2.1 温度传感器简介 . (5) 3.2.2测量原理 (5) 3.2.3电路仿真 (6) 3.3烟雾监测模块 (7) 3.4 Zigbee 模块 (8) 3.5报警模块 (9) 3.6键盘输入模块 (10) 3.7液晶显示模块 (11) 3.8人体红外感应模块 . (11) 4 主机软件设计 (12) 4.1主机程序整体框架 (13) 4.2无线发送 / 接收程序 . (13) 4.3温度监测节点程序 . (15) 4.4烟雾监测节点程序 . (17) 4.5红外热释电监测节点程序 . (18) 5 设计体会 (20)

6 参考文献 (20) 7 附录 (21) 主机电路原理图 (21)

1引言 随着社会经济和科学技术的发展,社会信息化程度越来越高,物联网的推出是 时代发展的需要,“三网合一”、“ 三屏合一” 等新概念不断提出,智能家居 成为未来家居的发展方向。智能家居在两个方面具有重要作用: (1)家居智化,继而实现住户舒适最大化,家庭安全最大化。智能家居通过 其智能家庭控制帮助人们改进生活方式,重新安排每天的时间计划表,并为高质 量的生活环境提供安全保障。 (2)智能家居的另一个重要作用是降低能源消耗,操作成本最小化,帮助人们 节约日常能源消耗开支。 智能家居主要通过智能家庭控制系统实现,家庭控制网络是实现智能家庭控制 系统的关键。近几年,各种家庭网络推进组织相继成立,并各自推出了相 关建议和标准,但这些技术标准缺乏统一的通信接口,相互间不兼容 , 无法提供家 庭控制网络的完整解决方案。因此,智能家居研究者面临的最大挑战和机遇是家用 电子领域缺乏统一的通信标准和互操作协议。 2系统设计 智能家居监控系统的总体设计框图如图 1 所示。该系统采用主从方式,主机 负责接收无线信息、GSM远程报警、传感器阈值设置,从机负责温度、气体、烟雾、等环境信号采集处理及无线发送。本文研制的智能家居环境监测报警系统能够实时 监测煤气泄漏、火灾、电热毯过热等温度异常、外人闯入等危险状态, 并可实现电话号码报警,设置传感器阈值等功能。

相关主题
文本预览
相关文档 最新文档