当前位置:文档之家› 利用栈求表达式的值,可供小学生作业任务,并能给出分数数据结构教学规划使用说明格式

利用栈求表达式的值,可供小学生作业任务,并能给出分数数据结构教学规划使用说明格式

利用栈求表达式的值,可供小学生作业任务,并能给出分数数据结构教学规划使用说明格式
利用栈求表达式的值,可供小学生作业任务,并能给出分数数据结构教学规划使用说明格式

中北大学

数据结构

课程设计说明书

2011年12月20日

1.设计任务概述(包括系统总体框图及功能描述)

此课题是研究表达式求值的问题,以帮助小学生完成测试。为了达到这个功能,实际我们要做的就是出题,和计算分数给出评价的工作。整体设计都是以这个要求为轴心进行的。为了直观和方便,现画出软件整体设计模块图。

整体设计模块图可以清晰的看出软件的几大模块。整个系统的操作流程图可以看出操作的整体流程,如下图

2. 本设计所采用的数据结构(如:链表、栈、树、图等)

根据以上功能说明,设计运算信息,堆栈的存储结构,设计程序

完成功能;

3. 功能模块详细设计

在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

3.1 详细设计思想

学生要进行测试,首先要有试题。那么我们就要先建立试题库。这个试题库的试题是我们在程序运行过程中手动输入,存放在一个shujuku.txt的文件中。

首先在主函数中调用创建试题库函数,将试题存入到试题库文件shitiku.txt中,然后将该调用从主函数中删除。

创建试题库函数:创建指向xuanti类型的指针,利用循环将输入的测试题该指针的xuanti单元中,最后将该指针中的测试题写入试题库文件shitiku.txt中。

3.2 核心代码

(正文宋体小四号字,1.5倍行距) #include

#include

#include

#include

#include

#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define ERROR 0

#define OK 1

//定义表达式

typedef struct shiti

{

char a[20];

long result;

}xuanti;

typedef struct SqStack1

{ //建立数字栈

int *base;

int *top;

int stacksize;

}SqStack1;

typedef struct SqStack2

{//建立运算符栈

char *base;

char *top;

int stacksize;

}SqStack2;

void WriteToFile(xuanti *pstu,int num);

void ReadFromFile(xuanti *pstu,int num);

void page_title(char *menu_item)

{//建立菜单

printf(">>> 数学习题库<<<\n\n- %s -\n\n",menu_item); }

void return_confirm()

{

printf("\n按任意键返回……\n");

getch();

}

void IntInitStack(SqStack1 *S1)

{

S1->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));

if(!S1->base)

exit(ERROR);

S1->top=S1->base;

S1->stacksize=STACK_INIT_SIZE;

}//IntInitStack

void CharInitStack(SqStack2 *S2)

{

S2->base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));

if(!S2->base)

exit(ERROR);

S2->top=S2->base;

S2->stacksize=STACK_INIT_SIZE;

}//CharInitStack

long IntGetTop(SqStack1 *S1)

{ //取栈顶元素

long e1;

if((*S1).top==(*S1).base)

return 0;

e1=*((*S1).top-1);

return e1;

}//IntGetTop

char CharGetTop(SqStack2 *S2)

{ //取栈顶元素

char e2;

if((*S2).top==(*S2).base) return 0;

e2=*((*S2).top-1);

return e2;

}//IntGetTop

int IntPush(SqStack1 *S1,int e1)

{//入栈

*(*S1).top++=e1;

return OK;

}//IntPush

int CharPush(SqStack2 *S2,char e2) {//入栈

*(*S2).top++=e2;

return OK;

}//CharPush

int IntPop(SqStack1 *S1)

{//出栈

int e1;

if((*S1).top==(*S1).base)

return 0;

e1=*--(*S1).top;

return e1;

}//IntPop

int CharPop(SqStack2 *S2)

{//出栈

char e2;

if((*S2).top==(*S2).base) return 0;

e2=*--(*S2).top;

return e2;

}//CharPop

char Precede(char a,char b)

{

int i,j;

char Table[8][8]={ ' ','+','-','*','/','(',')','#',

'+','>','>','<','<','<','>','>',

'-','>','>','<','<','<','>','>',

'*','>','>','>','>','<','>','>',

'/','>','>','>','>','<','>','>',

'(','<','<','<','<','<','=',' ',

')','>','>','>','>',' ','>','>',

'#','<','<','<','<','<',' ','=',

}; //优先级表格

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

if(Table[0][i]==a) //纵坐标寻找

break;

for(j=0;j<8;j++) //横坐标寻找

if(Table[j][0]==b)

break;

return Table[j][i];

}//Precede

int Operate(int a,char theta,int b)

{ //计算表达式值:主要是将大的表达式转化成小的表达式进行逐步求值

int c;

if(theta=='+') c=a+b;

else if(theta=='-') c=a-b;

else if(theta=='*') c=a*b;

else c=a/b;

return c;

}//Operate

int IsOptr(char ch)

{

char ptr[10]={'+','-','*','/','(',')','#'};

for(int i=0;i<7;i++)

{

if(ch==ptr[i])

return true;

}

return false;

}

long result(char *a,SqStack1 *OPND,SqStack2 *OPTR) {//求值

char theta;

int b,d,k=0,i=0,j=0,num2=0;

IntInitStack(OPND);

CharInitStack(OPTR);

CharPush(OPTR,'#');

while(a[i]!='=')

{

if(!IsOptr(a[i]))

{

k++;

if(k<=j)

{

num2=(int(a[i])-48);

i++;

}

if(k>j)

{

num2=num2*10+(int(a[i])-48);

k=j=0;

i++;

}

if(!IsOptr(a[i]))

k++;

if(k==j)

IntPush(OPND,num2);

}

else if(IsOptr(a[i]))

{

switch(Precede(a[i],CharGetTop(OPTR))) {

case '<':CharPush(OPTR,a[i++]);

if(a[i]!='('&&a[i]!=')')

j++;

break;

case '=':CharPop(OPTR);i++;break;

case '>':theta=CharPop(OPTR);

d=IntPop(OPND);

b=IntPop(OPND);

IntPush(OPND,Operate(b,theta,d));

break;

}//switch

} //else if

}//while

printf("表达式的正确结果为:");

printf("%d\n",IntGetTop(OPND));

return (IntGetTop(OPND));

}//reslut

void Built_shitiKu()

{

int i,num;

xuanti *pstu;

printf("输入试题数目:\n");

scanf("%d",&num);

fflush(stdin);

pstu=(xuanti *)malloc(num*sizeof(xuanti));//动态分配内存if(pstu==NULL)

{

printf("没有足够的内存空间!\n");

return;

}

for(i=0;i

{//输入试题

printf("第%d道试题:",i+1);

gets(pstu[i].a);

fflush(stdin);

printf("\n");

}

WriteToFile(pstu,num);//将pstu所指向的学生信息写入文件中

memset(pstu,0,num*sizeof(xuanti));//将pstu所指向的内存块清0

ReadFromFile(pstu,num);//从文件中读取学生信息到pstu所指向的内存块中

printf("试题列表:\n");

for(i=0;i

{//输入试题

printf("第%d道试题:",i+1);

printf("%s",pstu[i].a);

printf("\n");

}

free(pstu);//释放动态分配的内存

}

void WriteToFile(xuanti *pstu,int num)

{//将pstu所指向的试题息写入文件shitiku.txt中

FILE *fp;

fp=fopen("shitiku.txt","at");

if(fp==NULL)

{

printf("不能创建shitiku.txt\n");

free(pstu);

exit(0);

}

fwrite(pstu,sizeof(xuanti),num,fp);

fclose(fp);

}

void ReadFromFile(xuanti *pstu,int num) {//从试题库中提取试题

FILE *fp;

fp=fopen("shitiku.txt","rt");

if(fp==NULL)

{

printf("不能打开shitiku.txt\n");

free(pstu);

exit(0);

}

fread(pstu,sizeof(xuanti),num,fp);

fclose(fp);

}

//******************************************

void RecMark(int *m,int num)

{//把得分记录到markrec.txt中

FILE *mp;

mp=fopen("markrec.txt","at");

if(mp==NULL)

{

printf("不能创建markrec.txt\n");

free(m);

exit(0);

}

fwrite(m,sizeof(int),num,mp);

fclose(mp);

}//Recmark

void LookMark(int *m,int num)

{//查看得分记录

FILE *mp;

mp=fopen("markrec.txt","rt");

if(mp==NULL)

{

printf("不能打开markrec.txt\n");

free(m);

exit(0);

}

fread(m,sizeof(int),num,mp);

fclose(mp);

}

//************************************* void RecN(int *m,int num)

{//把m的值记录到n_rec.txt中

FILE *mp;

mp=fopen("n_rec.txt","wt");

if(mp==NULL)

{

printf("不能创建n_rec.txt\n");

free(m);

exit(0);

}

fwrite(m,sizeof(int),num,mp);

fclose(mp);

}//Recmark

void LookN(int *m,int num)

{//查看m的值

FILE *mp;

mp=fopen("n_rec.txt","rt");

if(mp==NULL)

{

printf("不能打开n_rec.txt\n");

free(m);

exit(0);

}

fread(m,sizeof(int),num,mp);

fclose(mp);

}

//************************************* int excersice_begin()

{

int i, j, temp, KEY[20];

int mark,count=0;

int *Mark;

char g;

SqStack1 s1,*OPND;

SqStack2 s2,*OPTR;

xuanti *XT;

OPND=&s1;

OPTR=&s2;

Mark=(int *)malloc(20*sizeof(int));

XT=(xuanti *)malloc(20*sizeof(xuanti)); ReadFromFile(XT,20);

do

{

mark=0;

srand((unsigned)time(NULL));

KEY[0] = rand()%20;

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

{

while(1)

{

temp = rand()%20;

for(j=0;j

{

if(KEY[j]==temp)

break;

}

if(j==i)

{

KEY[i]=temp;

break;

}

}

system("cls");

printf("随机的10个练习题:\n");

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

{

printf("第%d个练习题:",i+1);

printf("%s\n",XT[KEY[i]].a);

printf("请输入计算结果:");

scanf("%ld",&XT[KEY[i]].result);

fflush(stdin);

if(XT[KEY[i]].result==result(XT[KEY[i]].a,OPND,OPTR)) {

mark+=10;

printf("答案正确!");

printf("\n\n");

}

else

{

printf("答案错误!");

printf("\n\n");

数据结构学习总结

数据结构学习总结 经过一学期的学习,我对数据结构有了我自己的认识。一开始,我以为它和C语言和C++一样,都是讲一门语言。但学习之后,发现事实并不是这样,在数据结构的学习中,有线性表,有队,有栈,有树,有图等等。这些看起来没有关系,其实之间有着千丝万缕的联系。线性表是其中最简单的,所以在前几章学习,后面依次逐章变难,学起来也很吃力。 《数据结构与算法》以基本数据结构和算法设计策略为知识单元,系统地介绍了数据结构的知识与应用、计算机算法的设计与分析方法,主要内容包括线性表、树、图和广义表、算法设计策略以及查找与排序算法等。 线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。线性表具有如下的结构特点:均匀性:虽然不同数据表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型和长度。有序性:各数据元素在线性表中的位置只取决于它们的序号,数据元素之前的相对位置是线性的,即存在唯一的“第一个“和“最后一个”的数据元素,除了第一个和最后一个外,其它元素前面均只有一个数据元素直接前驱和后面均只有一个数据元素(直接后继)。在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。链式存储结构将在本网站线性链表中介绍,本章主要介绍用数组实现线性表数据元素的顺序存储及其应用。另外栈、队列和串也是线性表的特殊情况,又称为受限的线性结构。 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生

机械设计作业任务书

机械设计作业任务书 题目: 设计简单千斤顶的螺杆和螺母的主要尺寸 千斤顶是一种简单的起重装置,用手推动手柄即可提升重物。它一般由底座、螺杆、螺母、托杯、手柄、或扳手等零件所组成。已知数据:起重量:40kN 最大起重高度:200mm。

目录 一、设计题目----------------------------------------------------------------------------------------------------3 二、螺母、螺杆选材-------------------------------------------------------------------------------------------3 三、螺杆、螺母设计计算 3.1 耐磨性计算-----------------------------------------------------------------------------------------------3 3.2 螺杆强度校核--------------------------------------------------------------------------------------------4 3.3 螺纹牙强度校核----------------------------------------------------------------------------------------4 3.4 螺纹副自锁条件校核----------------------------------------------------------------------------------5 3.5 螺杆稳定性校核-----------------------------------------------------------------------------------------5 四、螺母外径及凸缘设计------------------------------------------------------------------------------------6 五、参考资料-----------------------------------------------------------------------------------------------------7

数据结构实验二_栈的基本操作

青岛理工大学课程实验报告

s->top=s->base; s->stacksize=stack_init_size; return 1; } int Push(sqstack *s,int e) { if(s->top-s->base>=s->stacksize) { s->base=(int *)realloc(s->base,(s->stacksize+stackincrement)*sizeof(int)); if(!s->base) return 0; s->top=s->base+s->stacksize; s->stacksize+=stackincrement; } *(s->top++)=e; return e; } int Pop(sqstack *s,int e) { if(s->top==s->base) return 0; e=*--s->top; return e; } int stackempty(sqstack *s) { if(s->top==s->base) { return 1; } else Push(s,n%flag); n=n/flag; } while(!stackempty(s)) { e=Pop(s,e); switch(e) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E"); break; case 15: printf("F"); break; default: printf("%d",e); } } printf("\n"); return 0; } int main() { sqstack s; StackInit(&s); conversion(&s); return 0; }

顺序栈的基本操作讲解

遼穿紳範大學上机实验报告 学院:计算机与信息技术学院 专 业 : 计算机科学与技术(师 范) 课程名称:数据结构 实验题目:顺序栈的基本操作 班级序号:师范1班 学号:201421012731 学生姓名:邓雪 指导教师:杨红颖 完成时间:2015年12月25号 一、实验目的: 1 ?熟悉掌握栈的定义、结构及性质; 2. 能够实现创建一个顺序栈,熟练实现入栈、出栈等栈的基本操作; 3?了解和掌握栈的应用。 二、实验环境: Microsoft Visual C++ 6.0

三、实验内容及要求: 栈是一种特殊的线性表,逻辑结构和线性表相同,只是其运算规则有更多的限制,故又称为受限的线性表。 建立顺序栈,实现如下功能: 1. 建立一个顺序栈 2. 输出栈 3. 进栈 4. 退栈 5. 取栈顶元素 6. 清空栈 7. 判断栈是否为空 进行栈的基本操作时要注意栈”后进先出”的特性。 四、概要设计: 1、通过循环,由键盘输入一串数据。创建并初始化一个顺序栈。 2、编写实现相关功能函数,完成子函数模块如下。 3、调用子函数,实现菜单调用功能,完成顺序表的相关操作

五、代码: #include #include #define maxsize 64 typedef int datatype; //定义结构体typedef struct { datatype data[maxsize]; int top; }seqstack; //建立顺序栈seqstack *SET(seqstack *s) { int i; s=(seqstack*)malloc(sizeof(seqstack)); s->top=-1; printf(" 请输入顺序栈元素(整型,以scanf("%d",&i); do{ s->top++; s->data[s->top]=i; scanf("%d",&i); 0 结束):"); }while(i!=0); printf(" 顺序栈建立成功\n"); return s; } //清空栈void SETNULL(seqstack *s) { s->top=-1;} //判断栈空 int EMPTY(seqstack *s) { if(s->top>=0) return 0; else return 1;} //进栈 seqstack *PUSH(seqstack *s) { int x; printf(" 你想要插入的数字:"); scanf("%d",&x); if(s->top==maxsize-1) { printf("overflow"); return NULL; } else {

数据结构学习总结

数据结构与算法课程学习总结 2010年 5月 17日 班级:08计本(2)班姓名:谷敏敏学号:0804012023 时光飞逝,转眼之间,经过十几周的学习,“数据结构与算法”这门课程也已经接近尾声。通过学习、实验,我们明白“数据结构与算法”这门课是我们计算机专业人才培养计划中的一门必修的核心课程,同时也是计算机科学与技术专业同学的一门重要的基础专业课,重要之处不言而喻,所以,对于这门课大家也是比较认真投入的,学的也是比较尽心。当然这还与老师独特的教学风格以及不少的实验训练是密不可分的。 对于本学科的知识内容的概括、总结可如下所示: 1.第一章中是介绍的本学科的的一些基础、相关概念,如数据、数据元素、数据类型 以及数据结构的定义。其中,数据结构包括逻辑结构、存储结构和运算集合。逻辑 结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序 存储、链接存储、索引存储和散列存储四类。紧接着介绍了一些常用的数据运算。 最后着重介绍算法性能分析,包括算法的时间性能分析以及算法的空间性能分析。 2.第二章具体地介绍了顺序表的概念、基本运算及其应用。基本运算有:初始化表、 求表长、排序、元素的查找、插入及删除等。而关于元素查找方法课本例举了多种 方法,有:简单顺序查找、二分查找和分块查找。排序方法有:直接插入排序、希 尔排序、冒泡排序、快速排序、直接选择排序及归并排序等。最后介绍了顺序串的 概念以及字符处理问题,其重点核心内容在于串的模式匹配。 3.第三章介绍的是链表及其应用,链表中数据元素的存储不一定是连续的,还可以占 用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除等功能是不 需要移动元素的,只需变化指针的取向即可,算法简单快捷,。链表这一章中介绍 了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、 查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结 构、功能和基本算法。 4.第四章和第五章是关于堆栈和队列的介绍与应用。堆栈与队列是两种运算受限制的 线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵 循“先进后出”的规则,对堆栈的操作只能在栈顶进行;而队列要遵循“先进先 出”的规则,课本中列出了两种结构的相应的基本算法,如入栈、出栈、入队、出 队等。在介绍队列时,提出了循环队列的概念,以避免“假溢出”的现象。同时, 对于其应用也分别讲述了如括号匹配问题等。 5.第六章介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三 角矩阵、对角矩阵和稀疏矩阵等,课本中分别详细介绍了它们的存储结构。稀疏矩 阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于 关于广义表的应用有:m元多项式的表示问题。 6.第七章是关于二叉树及其应用。在介绍有关概念时,提到了二叉树的性质以及两种 特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以 及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递 归算法)和线索二叉树。二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆与 堆排序。本章为本课程重点内容,需要重点掌握。

华中科技大学《C语言程序设计》课程设计-大型作业任务书-liu

2013年《C语言程序设计》课程设计-大型作业任务书 一、题目 (1)题目1.个人自助游管理信息系统 (2)题目2.停车场收费管理信息系统 (3)题目3.物流配送管理信息系统 二、选题规定 (1)学号尾数(最后一位)为:1、4、7、0者自动选择题目(1),即:题目1.个人自助游管理信息系统。 (2)学号尾数(最后一位)为:2、5、8者自动选择题目(2),即:题目2.停车场收费管理信息系统。 (3)学号尾数(最后一位)为:3、6、9者自动选择题目(3),即:题目3.物流配送管理信息系统。 三、需要处理的基础数据 注:与中文字段名对应的英文字段名自己确定;类型和长度可以根据需要修改。 (一)个人自助游管理信息系统 1 2

3 (二)停车场收费管理信息系统 2.已登记车辆基本信息参考:

3.车辆停车明细基本信息参考: 注:该系统除以上主要信息,还需要设置停车月票具体费用,以及按时计费的规则,这一部分请自行设计。 (三)物流配送管理信息系统 1、物流配送系统,假设只有起始站点才能载货,一辆车的当前配送路线可涉及多条固定配送路线的站点;配送路线基本信息参考: 2

四、需实现的系统功能 (一)各种基本数据的录入 1.个人自助游管理信息系统 ●行程基本信息录入; ●行程每日安排基本信息录入; ●每日消费明细基本信息录入; ●其它信息录入。 2.停车场收费管理信息系统 ●停车场签约单位基本信息录入; ●各单位等级车辆基本信息录入; ●每辆车的停车明细基本信息录入; ●其它信息录入。 3.物流配送管理信息系统 ●配送路线基本信息录入; ●路线经停站点基本信息录入; ●站点经停车辆基本信息录入; ●其它信息录入。 要求每个系统的1级链表、2级链表、3级链表都能够进行基本数据的录入。 (二)各种基本数据的修改 即:允许对已经录入的数据重新进行编辑、修改。如: ●修改停车场签约单位基本信息(修改1级链表中的结点); ●修改某路线经停站点基本信息(修改2级链表中的结点); ●修改每日消费明细基本信息(修改3级链表中的结点)。 要求每个系统的1级链表、2级链表、3级链表都能够进行基本信息的修改。 (三)各种基本数据的插入 如: ●在旅游行程基本信息链(1级链)中插入一条新记录(按发生日期序); ●在某配送路线经停站点基本信息链(2级链)中插入一条新记录(按经停先后序); ●在每日消费明细基本信息链(3级链)中插入一条新记录(按发生日期序)等。

数据结构栈的定义及基本操作介绍

北京理工大学珠海学院实验报告 ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 班级软件工程3班学号 150202102309姓名郭荣栋 指导教师余俊杰成绩 实验题目栈的实现与应用实验时间 一、实验目的、意义 (1)理解栈的特点,掌握栈的定义和基本操作。 (2)掌握进栈、出栈、清空栈运算的实现方法。 (3)熟练掌握顺序栈的操作及应用。 二、实验内容及要求 1.定义顺序栈,完成栈的基本操作:建空栈、入栈、出栈、取栈顶元素(参见教材45页)。 2. 调用栈的基本操作,将输入的十进制数转换成十六进制数。 3. 调用栈的基本操作,实现表达式求值,如输入3*(7-2)#,得到结果15。 三、实验结果及分析 (所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出。)

四、程序清单(包含注释) 1、2. #include #include #include using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXSIZE 100 #define INCREASEMENT 10 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10

typedef int SElemType; typedef int Status; typedef struct{ SElemType *base; SElemType *top; int stacksize; }Sqstack; void StackTraverse(Sqstack S) { while (S.top != S.base) { cout << *(S.top-1) << endl; S.top--; } } Status InitStack(Sqstack &S){ S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base){ exit(OVERFLOW); }

最新数据结构实训总结

精品文档 这次课程设计的心得体会通过实习我的收获如下1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么不可能。 编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意指针的初始化不管它怎么用以免不必要麻烦。 通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解,也形成了一定的个人做事风格。 通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了之前学的基本语法,哈弗曼树最小路径的求取,哈弗曼编码及译码的应用范围,程序结构算法等一系列的问题它使我对数据结构改变了看法。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 精品文档

大型作业格式参考

《三维效果设计与制作》大型作业任务书 大型作业:客厅室内场景制作

摘要 3dsmax在应用范围方面,广泛应用于广告、影视、工业设计、建筑设计、多媒体制作、游戏、辅助教学以及工程可视化等领域。拥有强大功能的3DS MAX被广泛地应用于电视及娱乐业中,比如片头动画和视频游戏的制作,深深扎根于玩家心中的劳拉角色形象就是3DS MAX的杰作。在影视特效方面也有一定的应用。而在国内发展的相对比较成熟的建筑效果图和建筑动画制作中,3DS MAX的使用率更是占据了绝对的优势。根据不同行业的应用特点对3DS MAX的掌握程度也有不同的要求,建筑方面的应用相对来说要局限性大一些,它只要求单帧的渲染效果和环境效果,只涉及到比较简单的动画;片头动画和视频游戏应用中动画占的比例很大,特别是视频游戏对角色动画的要求要高一些;影视特效方面的应用则把3DS MAX的功能发挥到了极至。 卧室、客厅等室内设计效果图的制作在今后的3D行业中占据着相当大的比重。Max 作为一款三维动画与模型设计软件,本身在设计上有着得天独厚的优势。对于3D的学习为酷爱动画的我们是兴趣的使然,也是我们今后学习当中的一个很关键的点。而本次的大型作业正是证明自己能力的一次机会,也是自我挑战的一次很重要的选择。 3dsmax相对于其它的三维设计软件其人性化的设计界面与强大帮助与支持功能为我们在学习的过程中提供了很大的便利。而其能力的提升则在于我们平时的不断学习与练习,和对于身边信息的细心留意,只有多做多练才能在实际的运用中灵活使用其工具,做出效果丰富的作品。在运用这款软件的时候更多的是给予自己更多的思考和创作空间,这样才能实现其应有的价值。

数据结构栈的基本操作,进栈,出栈

第五次实验报告—— 顺序栈、链栈的插入和删除一需求分析 1、在演示程序中,出现的元素以数字出现定义为int型, 2、演示程序在计算机终端上,用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在终端上 3、顺序栈的程序执行的命令包括如下: (1)定义结构体 (2)顺序栈的初始化及创建 (3)元素的插入 (4)元素的删除 (5)顺序栈的打印结果 3、链栈的程序执行的命令包括如下: (1)定义结构体 (2)链栈的初始化及创建 (3)元素的插入 (4)元素的删除 (5)链栈的打印结果 二概要设计 1、顺序栈可能需要用到有序表的抽象数据类型定义: ADT List{ 数据对象:D={ai|ai∈ElemL, i=1,2,...,n, n≥0} 数据关系:R1={|ai-1,ai ∈D, i=2,...,n } 基本操作: InitStack(SqStack &S) 操作结果:构造一个空栈 Push(L,e) 操作结果:插入元素e为新的栈顶元素

Status Pop(SqStack &S) 操作结果:删除栈顶元素 }ADT List; 2、链栈可能需要用到有序表的抽象数据类型定义: ADT List{ 数据对象:D={ai|ai∈ElemL, i=1,2,...,n, n≥0} 数据关系:R1={|ai-1,ai ∈D, i=2,...,n } 基本操作: LinkStack(SqStack &S) 操作结果:构造一个空栈 Status Push(L,e) 操作结果:插入元素e为新的栈顶元素 Status Pop(SqStack &S) 操作结果:删除栈顶元素 }ADT List; 3、顺序栈程序包含的主要模块: (1) 已给定的函数库: (2)顺序栈结构体: (3)顺序栈初始化及创建: (4)元素插入 (5)元素删除

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

数据结构——顺序栈的基本操作

#include using namespace std; # define STACK_INIT_SIZE 100 # define STACKINCREMENT 10 typedef struct { int * base; int * top; int stacksize;//当前栈可使用的最大容量 } SqStack; void InitStack(SqStack &S)//构造一个空栈 { S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int)); if(!S.base) {cout<<"存储分配失败!!!"<=S.stacksize) { S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); if(!S.base) cout<<"存储分配失败!!!"<

数据结构课程总结.

●数据:能够被计算机识别、存储和加工处理的信息的载体。 ●数据元素:数据的基本单位,可以由若干个数据项组成。数据项是具有独立含 义的最小标识单位。 ●数据结构的定义: ●逻辑结构:从逻辑结构上描述数据,独立于计算机。线性结构:一对一关系。线性结构:多对多关系。 ●存储结构:是逻辑结构用计算机语言的实现。顺序存储结构:如数组。链式存储结构:如链表。索引结构:索引表。散列存储结 构:如散列表。 ●对数据的操作:定义在逻辑结构上,每种逻辑结构都有一个运算集合。常用的有:检索、插入、删除、更新、排序。 ●数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。原子类型:简单类型,由语言提供。结构类型:由用户借助 于描述机制定义,是导出类型。 ●程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。 ●算法是一个自定义的计算过程,以一个或多个值输入,并以一个或多个值输 出。 ●评价算法的好坏的因素:算法是正确的;执行算法的时间;执行算法的存储空间;算法易于理解、编码、调试。 ●时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。 渐近时间复杂度:是指当问题规模趋向无穷大时,

该算法时间复杂度的数量级。评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。 ●算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。 ●时间复杂度按数量级递增排列依次为:常数阶、对数阶、线性阶、线性对数阶、平方阶、立方阶、……k次方阶、指数阶。 ●空间复杂度:是某个算法的空间耗费,它是该算法所求解问题规模n的函数。 ●算法的时间复杂度和空间复杂度合称算法复杂度。 ●线性表是由n≥0个数据元素组成的有限序列。n=0是空表;非空表,只能有一个开始结点,有且只能有一个终端结点。 ●线性表上定义的基本运算:构造空表:Initlist;求表长:Listlength;取结点:GetNode;查找:LocateNode;插入:InsertList;删 除:Delete。 ●顺序表是按线性表的逻辑结构次序依次存放在一组地址连续的存储单元中。在存储单元中的各元素的物理位置和逻辑结构中各结 点相邻关系是一致的。地址计算:? ●在顺序表中实现的基本运算:插入:平均移动结点次数为?;平均时间复杂度均为?。删除:平均移动结点次数为?;平均时间复杂 度均为?。 ●线性表的链式存储结构中结点的逻辑次序和物理次序不一定相同,为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,

(完整word版)顺序栈基本操作实验报告

数据结构实验三 课程数据结构实验名称顺序栈基本操作第页 专业班级学号 姓名 实验日期:年月日评分 一、实验目的 1.熟悉并能实现栈的定义和基本操作。 2.了解和掌握栈的应用。 二、实验要求 1.进行栈的基本操作时要注意栈"后进先出"的特性。 2.编写完整程序完成下面的实验内容并上机运行。 3.整理并上交实验报告。 三、实验内容 1.编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行清空、销毁、入栈、出栈以及取栈顶元素操作。 2.编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。 主要功能描述如下: (1)从键盘上输入表达式。 (2)分析该表达式是否合法: ?a) 是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。 ?b) 是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。 ?c) 若是其它字符,则返回错误信息。 (3)若上述处理过程中没有发现错误,则认为该表达式合法,并打印处理结果。 程序中应主要包含下面几个功能函数: ?l void initstack():初始化堆栈 ?l int Make_str():语法检查并计算

?l int push_operate(int operate):将操作码压入堆栈 ?l int push_num(double num):将操作数压入堆栈 ?l int procede(int operate):处理操作码 ?l int change_opnd(int operate):将字符型操作码转换成优先级 ?l int push_opnd(int operate):将操作码压入堆栈 ?l int pop_opnd():将操作码弹出堆栈 ?l int caculate(int cur_opnd):简单计算+,-,*,/ ?l double pop_num():弹出操作数 四、实验步骤 (描述实验步骤及中间的结果或现象。在实验中做了什么事情,怎么做的,发生的现象和中间结果) 第一题: #include using namespace std; #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量 #define OVERFLOW -1 #define OK 1 #define NO -1 #define NULL 0 typedef int Status; typedef char SElemType; typedef struct { SElemType *base; //在栈构造之前和销毁之后,base的值为NULL SElemType *top; //栈顶指针 int stacksize; //当前已分配的存储空间,以元素为单位 } SqStack; Status Initstack(SqStack &S)//构造一个空栈S { S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize= STACK_INIT_SIZE; return OK; }//InitStack Status StackEmpty(SqStack &S) { if(S.base==S.top)

数据结构课程设计报告(完结)

《数据结构》课程设计手册 一、 栈的使用 (一)需求分析 本程序通过java 语言完成栈的构造,对堆栈的数据进行基本的存储操作。具体包括,数据的入栈、出栈、读取等。 入栈操作:要求用户从键盘出入要进栈的数值或字符,对栈满的情况作出提示。 出栈操作:删除栈顶元素,并将删除的数据或字符在运行结果中显示。对栈空的情况作出提示。 读取操作:在插入和删除的任意阶段都可讲栈中的元素读取出来,能够实现对栈中的数据元素个数进行统计。 (二)概要设计 1.为了实现上述程序功能,需要定义栈的数据类型有: static int MAX=5; static String[] item =new String[MAX]; static int top; 2.本程序包含4个函数 Push() 初始条件:栈未满 操作结果:往栈中插入数据; Pop() 初始条件:存在非空栈 操作结果:将栈中的数据删除; Get() 初始条件:存在非空栈 操作结果:显示非空栈中的所有元素; Main() 操作结果:调用以上函数。 程序流程图: Main() Pop() Push() Get()

(三)详细设计 具体代码见Stack.java 基本操作: Stack()构造一个空的栈,初始状态top的指针为-1; 入栈方法public static void push()。该方法中,首先判断是否栈满(top>=MAX-1),如果栈满,则输出提示语“栈满 ,栈中最多能容纳5个元素”,否则从键盘输入数据,并且top指针加1。 出栈方法public static void pop()。首先判断是否栈空(top<0),如果栈空,则输出提示信息“栈空 ,没有可操作的元素”,否则删除栈顶元素。Top指针减1。

自动轧钢PLC大型作业任务书

计控0902《PLC》大型作业任务书一、设计目的: 进一步了解和掌握PLC的基本工作原理及应用,熟练PLC 编程和程序调试。 二、设计内容 1.PLC控制系统原理设计和分析:控制方案、控制方式、元素定义、参数设定。 2.PLC控制系统原理结构分析:控制原理、工作过程、结构框图、原理电路、连接方式及接线。 3.PLC控制系统编程:程序状态转移图、程序梯形图、程序语句表。 4.PLC控制系统调试:程序输入、建立连接、程序运行、结果分析。 三、设计题目: 1.自动轧钢系统 四、设计要求: 1. 自动轧钢机系统 (1)模板上各灯说明:

S1:检测传送带上有无钢板的传感器信号,由模板上的开关控制; S2:检测传送带上钢板到位后的传感器信号,由模板上的开关控制; Y1:压轮;Y2:卸料液压机;M1、M2、M正、M反传送带电机; (2)操作说明:当按下启动按钮,M1、M2运行,传送钢板:当S1有信号(即:S1=ON)时,表示有钢板,则M3正转,S1消失(S1=OFF),S2有信号(即:S2=ON)表示钢板到位。Y1动作,M3反转。反复轧几次后,在S2有信号时,认为轧好,按下停止键,这时Y2动作,卸下钢板。S2=OFF认为已卸下,停。如图1所示。

图1:自动轧钢机系统模拟图 五、进程安排(一周): 1.下达任务书:课题题目介绍及选择,明确设计要求和工作进度,考核方式。 2.系统原理设计:PLC控制系统原理设计和分析:完成原理结构分析、原理结构框图、程序状态转移图、程序梯形图。 3.设计审核及答疑:PLC控制系统设计方案论证分析,设计原理分析,控制方式、参数及程序检查,过程问题分析。 4.系统调试及答辩:PLC控制系统上机运行、程序调试,问题答辩。

数据结构(C语言)栈的基本操作

实验名称栈的基本操作 实验目的 掌握栈这种抽象数据类型的特点及实现方法。 实验内容 从键盘读入若干个整数,建一个顺序栈或链式栈,并完成下列操作: (1)初始化栈; (2)判栈为空; (3)出栈; (4)入栈。 算法设计分析 (一)数据结构的定义 struct stackNode{ int data; struct stackNode *nextPtr; }; typedef struct stackNode listStact; typedef listStact *stackNodePtr; (二)总体设计 程序由主函数、入栈函数,出栈函数,删除函数判官是否为空函数和菜单函数组成。 (1)主函数:调用各个函数以实现相应功能

(三)各函数的详细设计: Function1: void instruct() //菜单 (1):使用菜单显示要进行的函数功能; Function2:void printStack(stackNodePtr sPtr) //输出栈 (1):利用if判断栈是否为空; (2):在else内套用while(头指针不为空条件循环)循环输出栈元素; Function3:void push(stackNodePtr *topPtr,int value //进栈 (1):建新的头指针; (2):申请空间; (3):利用if判断newPtr不为空时循环进栈 (4):把输入的value赋值给newPtr,在赋值给topPtr,再指向下一个位置; Function4:int pop(stackNodePtr*topPtr) //删除 (1):建新的头指针newPtr; (2):利用if判断newPtr是否为空,再删除元素。 (3):把topPtr等于newPtr,把头指针指向的数据赋值给topValue,输出要删除的数据值,头指针指向下一个位置,并清空newPtr; (4):完成上述步骤后,return toPvalue,返回;

数据结构与算法课程学习总结报告

数据结构与算法课程学习总结报告 数据结构与算法是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且也已经成为其他理工专业的热门选修课。随着高级语言的发展,数据结构在计算机的研究和应用中已展现出强大的生命力,它兼顾了诸多高级语言的特点,是一种典型的结构化程序设计语言,它处理能力强,使用灵活方便,应用面广,具有良好的可移植性。通过学习,先报告如下: 一、数据结构与算法知识点 本学期学的《数据结构与算法》这本书共有十一个章节: 第一章的内容主要包括有关数据、数据类型、数据结构、算法、算法实现、C语言使用中相关问题和算法分析等基本概念和相关知识。其中重点式数据、数据类型、数据结构、算法等概念;C语言中则介绍了指针、结构变量、函数、递归、动态存储分配、文件操作、程序测试与调试问题等内容。 第二章主要介绍的是线性逻辑结构的数据在顺序存储方法下的数据结构顺序表(包括顺序串)的概念、数据类型、数据结构、基本运算及其相关应用。其中重点一是顺序表的定义、数据类型、数据结构、基本运算和性能分析等概念和相关知识。二是顺序表的应用、包括查找问题(简单顺序查找、二分查找、分块查找)、排序问题(直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、归并排序)、字符处理问题(模式匹配)等内容。本章重点和难点在查找和排序问题的算法思想上,6种排序方法的性能比较。 第三章主要介绍的是线性逻辑结构的数据在链接存储方法下数据结构链表的相关知识。主要是单链表、循环链表的数据类型结构、数据结构、基本运算及其实现以及链表的相关应用问题,在此基础上介绍了链串的相关知识。在应用方面有多项式的相加问题、归并问题、箱子排序问题和链表在字符处理方面的应用问题等。本章未完全掌握的是循环链表的算法问题和C的描述。 第四章介绍在两种不同的存储结构下设计的堆栈,即顺序栈和链栈的相关知识,了解堆栈的相关应用,掌握应用堆栈来解决实际问题的思想及方法。本章主要内容是顺序栈和链栈的概念、数据类型、数据结构定义和基本运算算法及其性能分析。本章堆栈算法思想较为简单,所以能较好掌握。 第五章主要介绍顺序存储和链接存储方法下的两种队列、顺序(循环)队列和链队列的数据结构、基本运算及其性能分析以及应用。顺序队列(重点是循环队列)和链队列的概念、数据类型描述、数据结构和基本运算算法及其性能分析等。本章同堆栈有点类似,算法思想较为简单,所以能较好掌握;但难点重在循环队列队空、队满的判断条件问题。 第六章“特殊矩阵、广义表及其应用”将学习数组、稀疏矩阵和广义表的基本概念,几种特殊矩阵的存储结构及其基本运算,在此基础上学习特殊矩阵的计算算法与广义表应用等相关问题。本章的重点是相关数据结构的存储结构及其基本运算算法。掌握了特殊矩阵的压缩存储结构,在该存储结构下元素的定位方法,理解了稀疏矩阵的计算和广义表的存储结构。 第七章“二叉树及其应用”的知识结构主要是:非线性结构数据二叉树的定义、性质、逻辑结构、存储结构及其各种基本运算算法,包括二叉树的建立、遍历、线索化等算法。在此基础上,介绍二叉树的一些应用问题,包括哈夫曼编码问题、(平衡)二叉排序树问题和堆排序问题等。 第八章“树和森林及其应用”介绍树和森林的数据结构、基本算法及其性能分析,树和森林与二叉树之间的转换算法等,在此基础上介绍树的应用---B-树,应用B-树来实现数据元素的动态查找。本章基本掌握树和森林的概念和性质、数据结构、树的基本算法及性能

课程设计(大型作业)任务书

上海电力学院 课程设计(大型作业)任务书 (2014/2015学年第1学期) 课题名称计算机硬件技术实践 课题代码 院(系)自动化工程学院 专业自动化/测控技术与仪表 班级 学生 时间2015年1月19日~2015年1月28日 老师签名: 教研室主任(系主任)签名:

一、设计目的 通过本项课程设计,对微机原理课程中涉及的芯片结构、控制原理、硬件编程等方面有一定的感性认识和实践操作能力,更好的理解微机原理课程中讲述的基本原理和概念。 二、设计内容与要求 进行微机原理课程设计前,应学习并掌握了8086/8088汇编语言编程方法,掌握了8255、8253、8259、存储器等芯片的基本结构和工作原理,掌握了芯片编程控制的方法。 本课程设计要求学生设计一个汇编语言或微机应用系统,完成相对完整的测试、控制任务。学生可自主选择规定的参考题目,也可以自定题目(须经指导老师审查)。在下面的参考题目中,只提出最基本设计内容,学生也可以下面的题目为基础,进一步构思,完成有特色的个性化设计。课程设计的参考选题如下(参见《计算机硬件技术实践指导》): (1)计算机钢琴和音乐发生器的设计(见教材) (2)电子时钟的设计(见教材) (3)实例3--数字钟的设计(见教材) (4)实例4--简易计算器的设计(见教材) (5)实例5--温度控制系统的设计(见教材) (6)电子密码锁程序设计。 利用PC机系统功能调用实现电子密码锁。通过显示菜单提示,可输入密码、更改密码、结束程序。 多功能密码锁。密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示00 字样。当输入密码错误时,发出错误警告声音,同时显示FF 字样。当6次误码输入的条件下,产生报警电平报警。还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。设计要求:选用8086 和适当的存储器及接口芯片完成相应的功能;用LED 显示器显示电子锁的当前状态。 (7)电子日历时钟系统程序设计。 功能:1)可通过M键切换显示模式:日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1/100秒)、闹钟(小时、分、秒);2)在日期显示模式,可通过A键依次使年、月、日闪烁或变色,这时可通过I键加1调整;3)在时间显示模式,可通过A键依次使小时、分、秒闪烁或变色,这时可通过I键加1调整;4)在秒表显示模式,可通过I键切换(启动/暂停)计时,当暂停计时时可通过A键复位;5)在闹钟显示模式,可通过A键依次使On/Off标志、小时、分、秒闪烁或变色,这时可通过I键切换On/Off标志或加1调整;6)调整和秒表操作不影响日期和时间的准确性;7)可通过Q键结束程序。编程提示:PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK 信号,频率f=1.1931816MHz。定时器0输出方波的频率为f out=1.1931816/65536=18.2Hz,输出方波的周期T out=1/18.2=54.945ms。8253A每隔55ms引起一次中断,作为定时信号。可用54.945ms作基本计时单位。用BIOS 调用INT 1AH可以取得该定时单位。1s需要1000/54.945=18.2个计时单位)。利用PC机系统功能调用实现电子日历时钟,用INT 21H/02H模拟显示5s的变化。(8)时钟程序设计。

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