文档视界 最新最全的文档下载
当前位置:文档视界 › 数据结构表达式求值实验报告

数据结构表达式求值实验报告

数据结构表达式求值实验报告
数据结构表达式求值实验报告

竭诚为您提供优质文档/双击可除数据结构表达式求值实验报告

篇一:数据结构实验二——算术表达式求值实验报告

《数据结构与数据库》

实验报告

实验题目算术表达式求值

学院:化学与材料科学学院

专业班级:09级材料科学与工程系pb0920603

姓学

邮名:李维谷号:pb09206285箱:

liwg@https://www.docsj.com/doc/003404018.html,指导教师:贾伯琪

实验时间:20XX年10月10日

一、需要分析

问题描述:

表达式计算是实现程序设计语言的基本问题之一,它的实现是栈的应用的一个典型例子。设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈的应用实现对算术表达式进行四则混合运算。

问题分析:

在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。

设置运算符栈(字符型)和运算数栈(浮点型)辅助分析算符优先关系。在读入表达式的字符序列的同时完成运算符和运算数的识别处理,然后进行运算数的数值转换在进行四则运算。

在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内的栈顶数据变化过程,最后得到运算结果。

算法规定:

输入形式:一个(:数据结构表达式求值实验报告)算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为使实验更完善,允许操作数为实数,操作符为(、)、.(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。

输出形式:演示表达式运算的中间结果和整个表达式的最终结果,以浮点型输出。

程序功能:对实数内的加减乘除乘方运算能正确的运算出结果,并能正确对错误输入和无定义的运算报错,能连续测试多组数据。

测试数据:正确输入:12*(3.6/3+4^2-1)#

输出结果:194.4

无定义运算:12*(3.6/(2^2-4)+1)#

输出结果:表达式出错,除数为0,无意义

错误输入:12+s#

输出结果:eRRoR!

二、概要设计

拟采用两种类型的展分别对操作数和操作符进行操作。程序中将涉及下列两个抽象数据类型:

1、设定“操作数”的栈的抽象数据类型定义:

ADTsqstack_f{

?数据对象:D={aiai?R,i?n}数据关系:

R1={|ai?1,ai?D,i=2,?,n}

约定an端为栈顶,ai端为栈底。

基本操作:

Initstack_f(??*/^?,i?n}数据关系:

R1={|ai?1,ai?D,i=2,?,n}

约定an端为栈顶,ai端为栈底。

基本操作:

Initstack_c(//存储实型数据元素的一位数组

float*top;//栈顶指针

intstacksize;//栈数组容量

}sqstack_f;//有序存储实型的顺序表类型

typedefstruct{

char*base;//存储字符数据元素的一位数组

char*top;//栈顶指针

intstacksize;//栈数组容量

}sqstack_c;//有序存储字符型的顺序表类型

voidInitstack_f(sqstack_f*s)

voidInitstack_f(sqstack_f*s)

//构造一个存储实型(字符型)的空栈,预设空间为100,分配失败就退出

voidgetTop_f(sqstack_f*s,float*e)

voidgetTop_c(sqstack_c*s,char*e)

//若栈s不空,则以e带值返栈顶元素,否则显示错误“eRRoR”,并退出程序

voidpush_f(sqstack_f*s,floate)

voidpush_c(sqstack_c*s,chare)

//在s的栈顶插入新的栈顶元素e,若栈的当前空间已满,则追加存储空间

voidpop_f(sqstack_f*s,float*e)

voidpop_c(sqstack_c*s,char*e)

//若栈s不空,则删除栈s的栈顶元素,用e带值返回,否则退出程序

其中部分操作的伪码算法(由于比较类似,以浮点型的

栈为例)

voidInitstack_f(sqstack_f*s)

{//构造一个存储实型的空栈,预设空间为100,分配失败就退出

s->base=(float*)malloc(TTAcK_InIT_sIZe*sizeof(float ));

if(!s->base)

exit(1);

s->top=s->base;

s->stacksize=TTAcK_InIT_sIZe;

}

voidgetTop_f(sqstack_f*s,float*e)

{//若栈s不空,则以e带值返栈顶元素,否则显示错误“eRRoR”,并退出程序if(s->top==s->base)

{

printf("eRRoR!\n");

exit(1);

}

*e=*(s->top-1);

}

voidpush_f(sqstack_f*s,floate)

{//在s的栈顶插入新的栈顶元素e,若栈的当前空间已满,则追加存储空间

if(s->top-s->base>=s->stacksize)

{

s->base=(float*)realloc(s->base,(s->stacksize+sTAcK IncRemenT)*sizeof(float));if(!s->base)

{

printf("oVeRFLow!\n");

exit(1);

}

s->top=s->base+s->stacksize;

s->stacksize+=sTAcKIncRemenT;

}

*s->top++=e;

}

voidpop_f(sqstack_f*s,float*e)

{//若栈s不空,则删除栈s的栈顶元素,用e带值返回,否则退出程序

if(s->top==s->base)

exit(1);

*e=*--s->top;

数据结构表达式求值实验报告

竭诚为您提供优质文档/双击可除数据结构表达式求值实验报告 篇一:数据结构实验二——算术表达式求值实验报告 《数据结构与数据库》 实验报告 实验题目算术表达式求值 学院:化学与材料科学学院 专业班级:09级材料科学与工程系pb0920603 姓学 邮名:李维谷号:pb09206285箱: liwg@https://www.docsj.com/doc/003404018.html,指导教师:贾伯琪 实验时间:20XX年10月10日 一、需要分析 问题描述: 表达式计算是实现程序设计语言的基本问题之一,它的实现是栈的应用的一个典型例子。设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈的应用实现对算术表达式进行四则混合运算。

问题分析: 在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。 设置运算符栈(字符型)和运算数栈(浮点型)辅助分析算符优先关系。在读入表达式的字符序列的同时完成运算符和运算数的识别处理,然后进行运算数的数值转换在进行四则运算。 在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内的栈顶数据变化过程,最后得到运算结果。 算法规定: 输入形式:一个(:数据结构表达式求值实验报告)算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为使实验更完善,允许操作数为实数,操作符为(、)、.(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。 输出形式:演示表达式运算的中间结果和整个表达式的最终结果,以浮点型输出。 程序功能:对实数内的加减乘除乘方运算能正确的运算出结果,并能正确对错误输入和无定义的运算报错,能连续测试多组数据。 测试数据:正确输入:12*(3.6/3+4^2-1)#

人事管理系统-软件工程实验报告

软件工程实验报告 课题:人事管理系统学生姓名: 学号: 专业班级: 指导教师: 同组成员:

需求分析 一、实验目的 掌握软件需求的结构化分析方法。 二、实验任务与实验要求 导出系统详细的逻辑模型,这里用数据流图来表示。 三、实验内容 (1)功能分析 经过初步分析“人事管理系统”应该具备以下主要功能。 1、职员个人信息资料的增加、修改和删除; 2、职员的考勤录入和查询; 3、职员工资结算和查询; 4、人事管理人员的变化和操作授权; 由于是使用计算机管理,就带来了新的功能:用户登陆、操作人员的管理、基本数据的维护、由数据安全产生的数据备份与恢复。 (2)、关系模式 在满足函数依赖和无损连接的基础上,使数据的设计更加合理。在本系统中只有3个实体,那就是普通员工、管理员、超级管理员,他们权限的不听通过角色来区分。在整个系统中超级管理员只有一人,管理员二人。一个人只可以在普通员工、管理员、超级管理员中处于一个角色,而不可以兼任。其具体的关系模式如下: 普通员工(员工号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间) 管理员(管理员号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间) 超级管理员(超级管理员号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间) 工资(员工号,时间,基本工资,提成,奖金) 考勤(员工号,时间,迟到,早退,管理员号) 注意:“”表示主码,“”表示既是主码又是外码。 E-R图如下所示

数据字典设计: 为了方便数据库的管理和维护,本系统只设计一个数据库workers.mdb,其中包含worker(员工信息表)、manager(考勤信息表)、booklist(工资信息表) 表1-1 worker(员工信息表)各字段设计 表1-2 monit (考勤信息表)各字段设计

算术表达式的求解-数据结构课程设计报告

课程设计报告 题目:算术表达式求值 一、需求分析 1、设计要求: 给定一个算术表达式,通过程序求出最后的结果 1>、从键盘输入要求解的算术表达式; 2>、采用栈结构进行算术表达式的求解过程; 3>、能够判断算术表达式正确与否; 4>、对于错误表达式给出提示; 5>、对于正确的表达式给出最后的结果; 2、设计构想: 为了实现算符优先算法使用两个工作栈,一个称作OPTR,以寄存运算符;另一个称作OPND,用以寄存操作数或运算结果。在操作数和操作符入栈前,通过一个函数来判别,输入的是操作数还是操作符,操作数入OPND,操作符入OPTR。在输入表达式的最后输入‘#’,设定‘#’的优先级最低,代表表达式输入结束。在表达式输入过程中,遇操作数则直接入栈,遇到运算符则与栈顶运算符比较优先级,若当前运算符优先级高,则当前运算符入栈,扫描下一符号;否则栈顶运算符出栈,两操作数出栈,进行运算,所得结果入数栈,重新比较当前运算符与新栈顶运算符。如此重复直到栈顶运算符与当前符号均为‘#’,运算结束。 二、概要设计 1、本程序包含的模块:

(1)栈模块——实现栈抽象数据类型 (2)运算模块——实现数据表达式的运算(3)主程序模块 三、详细设计 (1)栈模块 1、定义栈结构 struct Sqstack

{ elemtype *top;//栈顶元素 elemtype *base; //栈底元素 int stacksize;//栈的大小 }; 2、栈的基本操作 ①初始化栈 status initstack(struct Sqstack &s) { s.base=(elemtype *)malloc(stack_size*sizeof(elemtype)); if(!s.base) return OVERFLOW; s.top=s.base; s.stacksize=stack_size; return OK; } ②入栈 status push(struct Sqstack &s,elemtype e) {

数据结构实验二——算术表达式求值实验报告

《数据结构与数据库》 实验报告 实验题目 算术表达式求值 学院:化学与材料科学学院 专业班级:09级材料科学与工程系PB0920603 姓名:李维谷 学号:PB09206285 邮箱:liwg@https://www.docsj.com/doc/003404018.html, 指导教师:贾伯琪 实验时间:2010年10月10日 一、需要分析 问题描述:

表达式计算是实现程序设计语言的基本问题之一,它的实现是栈的应用的一个典型例子。设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈的应用实现对算术表达式进行四则混合运算。 问题分析: 在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。 设置运算符栈(字符型)和运算数栈(浮点型)辅助分析算符优先关系。在读入表达式的字符序列的同时完成运算符和运算数的识别处理,然后进行运算数的数值转换在进行四则运算。 在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内的栈顶数据变化过程,最后得到运算结果。 算法规定: 输入形式:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为使实验更完善,允许操作数为实数,操作符为(、)、.(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。 输出形式:演示表达式运算的中间结果和整个表达式的最终结果,以浮点型输出。 程序功能:对实数内的加减乘除乘方运算能正确的运算出结果,并能正确对错误输入和无定义的运算报错,能连续测试多组数据。 测试数据:正确输入:12*(3.6/3+4^2-1)# 输出结果:194.4

实验报告格式范文

实验报告格式范文 实验一撰写可行性研究报告 一、实验目的 1、掌握可行性研究步骤; 2、学习编制可行性研究报告。 二、实验要求 硬件:Intel Pentium 120 或以上级别的CPU,大于16MB的内存。 软件:Win dows 95/98/2000 操作系统,Office 97/2000 软件 学时:2学时 写岀此项实验报告 三、实验内容 1、可行性研究(结构化分析)方法; 2、绘制数据流图,使用Word写实验报告。 四、实验步骤 1 ?引言 1.1 编写目的 可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解。 经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方案进行初步设计及合理安排。明确开发风险及其所带来的经济效益。本报告经审核后,交软件经理审查。 1 . 2 项目背景 (1 )待开发的软件产品名称:旅行社机票预定系统。 (2)本项目的提岀者:冯剑。开发者:李翀。用户:旅行社 (3)本软件产品将用于旅行社的机票预定和费用的记录。

1 . 3术语说明 DFD (数据流图):一种描述书记变换的图形工具,是结构化分析方法最普遍采用的表示手段,但数据流图并不是结构化分析模型的全部,数据字典和小说明为数据流图提供了补充,并用以验证图形表示的正确性、一致性和完整性,三者共同构成了被建系统的模型。 1 . 4.系统参考文献 参考文献见附录 2?可行性研究的前提 2.1基本要求 ⑴功能 本软件实现的功能有:为游客提供机票预定服务,提高旅游局的服务质量和服务效率。 对航班数据库的查询和修改,对机票费用记帐数据库的查询和修改,记录旅客信息(姓名、性别、年龄、身份证号、单位、旅行时间、目的地)、航班时间和班次,打印机票和帐单。 (2) 性能 时间:提供的信息必须及时的反映在工作平台上。售票系统的定单必须无差错的存 储在机场的主服务器上。对服务器上的数据必须进行及时正确的刷新。一笔业务在一分钟内完成。空间:运行空间 2M。 (3) 系统的输入和输岀 输入:旅行社定票单。数据完整,详实。 输岀:机票、帐单。简捷,快速,实时。 (4) 处理流程 旅行社将定票信息输入定票系统,系统输岀机票和帐单给旅客。 5 )安全保密要求

数据结构算术表达式求值实验报告

软件技术基础实验报告 实验名称:表达式计算器 系别:通信工程 年级: 班级: 学生学号: 学生姓名: 《数据结构》课程设计报告 题目简易计算表达式的演示 【题目要求】 要求:实现基本表达式计算的功能 输入:数学表达式,表达式由整数和“+”、“-”、“×”、“/”、“(”、“)”组成输出:表达式的值 基本操作:键入表达式,开始计算,计算过程和结果记录在文档中 难点:括号的处理、乘除的优先级高于加减

1.前言 在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。 算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-*、/、=,用#表示结束。 算法输出:表达式运算结果。 算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。 2.概要设计 2.1 数据结构设计 任何一个表达式都是由操作符,运算符和界限符组成的。我们分别用顺序栈来寄存表达式的操作数和运算符。栈是限定于紧仅在表尾进行插入或删除操作的线性表。顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top 指示栈顶元素在顺序栈中的位置,base 为栈底指针,在顺序栈中,它始终指向栈底,即top=base 可作为栈空的标记,每当插入新的栈顶元素时,指针top 增1,删除栈顶元素时,指针top 减1。 2.2 算法设计 为了实现算符优先算法。可以使用两个工作栈。一个称为OPTR ,用以寄存运算符,另一个称做OPND ,用以寄存操作数或运算结果。 1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素; 2.依次读入表达式,若是操作符即进OPND 栈,若是运算符则和OPTR 栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR 栈的栈顶元素和当前读入的字符均为”#”)。 2.3 ADT 描述 ADT Stack{ 数据对象:D={ i a |i a ∈ElemSet,i=1,2,…,n, n ≧0} 数据对象:R1={< 1 ,-i i a a >| 1-i a ,D a i ∈,i=2,…,n}

数据流图实验报告

数据流图实验报告 篇一:软件工程实验报告 篇二:需求分析实验报告 软件工程实践报告 计科12—1班 杨光敏 08123234 (一)软件需求分析 1.实验目的 学习图形工具软件VISIO,掌握结构化需求分析方法,熟练绘制数据流图;学习快速原型工具的使用。 2.基本要求 (1)针对银行ATM系统进行需求分析工作,了解银行ATM系统的功能、流程;(2)安装VISIOXX以上版本软件,熟练应用Visio绘制DFD图,绘制银行ATM系统数据流图,完成系统的软件逻辑模型; (3)安装Axure RP Pro 或者Balsamiq Mockups快速原型软件,学习绘制软件原型,完成银行ATM系统的软件原型。 3.系统概述 (1)ATM系统为银行提供一套高效稳定可靠的终端服务平台,为储户登录,

存款,取款,查询,打印凭条,转账,修改密码等操作提供便利。 图1 ATM工作流程 (2).用户特点 本软件的用户主要是银行的广大持卡人,大多都具有使用ATM经验。另外,我们的系统要实现的一个重要目标就是当储户取钱出现故障时能在下笔业务进行之前自动恢复。以此来方便用户和保障用户的利益。本系统还为用户提供了足够的界面友好性和易操作性。即使是一个对ATM系统完全陌生的客户,也可以在交易界面的提示下顺利完成交易。 另外一部分的用户是银行工作人员,本系统不予考虑。 4需求说明 (1) 基本描述 ATM终端可以接受一张可识别的银行储蓄卡,通过储户身份验证后,同储户进行各种交互,例如:查询、存款、取款、打印凭条等;处理储户相应的要求,执行对应操作,为储户服务。该系统要求须保持一定时间内的交易记录,系统应每天自动汇总各种交易数据与服务器进行对账。同时,在通讯失败或其他交易结果不确定的情况下,ATM要自动发起冲正交易,以保证账务的完整性。 本系统的实现需要记录一些相关信息,其中包括的信息有:用户信息和交易信息。

四则运算表达式求值实验报告

HUNAN UNIVERSITY 课程实习报告 题目:四则运算表达式求值 学生姓名: 学生学号: 专业班级: 指导老师: 完成日期:

一、需求分析 四则运算表达式求值,将四则运算表达式用中缀表达式表示,然后转换为后缀表达式,并计算结果。 本程序要求利用二叉树后序遍历来实现表达式的转换,同时可以使用实验2的结果来求解后缀表达式的值。 在字符界面上输入一个中缀表达式,回车表示结束。如果该中缀表达式正确,那么在字符界面上输出其后缀表达式,其中后缀表达式中两相邻操作数之间利用空格隔开;如果不正确,在字符界面上输出表达式错误提示。 测试数据 输入: 21+23*(12-6) 输出: 21 23 12 6 -*+ 二、详细设计 输入和输出的格式 输入 本程序可以将输入的四则运算表达式(中缀表达式)转换为后缀表达式 输出 后缀表达式为://输出结果的位置 表达式的值为://输出结果的位置 三、调试分析 本次实验的难点主要是在建立二叉树的问题上。关于如何把中缀表达式存入二叉树中,我参考了网上的一些方法,成功实现了目标,但是却遇到了一个问题,那就是不能处理小数,甚至两位或两位以上的整数。因为如果采用字符数组来存储操作数,运算符合一位整数还可以处理,但对于两位数就就会出问题,最后我改进采用字符串数组来存储操作数,成功解决了问题。 另外在处理输入的非法表达式问题中,我也费了很大功夫,但总体问题不大。 四、测试结果 五、用户使用说明(可选) 1、运行程序时 提示输入四则运算表达式 本程序可以将中缀表达式转化为后缀表达式,并计算结果 请输入四则运算表达式: 输出 后缀表达式为: 表达式的值为: 程序源代码(c++) #include #include #include #include

实验分析数据流和绘制数据流图

实验报告课程名称_软件工程导论__________ 学院____计算机工程学院_________班级14软件1班 学号2014144141 姓名秦川 2016年11月8日

批阅教师时间实验成绩 课程名称软件工程 学号2014144141姓名秦川实验日期2016.11.8实验名称实验2分析数据流和绘制数据流图 实验目的: 1、掌握数据流的分析方法 2、掌握数据流图的绘制 实验内容: 任务一绘制数据流图 任务二分析数据流和绘制数据流图 案例一:总务办公管理系统 案例二:火车票预订系统 实验原理: 数据流图(DFD)是软件系统系统的逻辑模型,仅仅描绘数据在软件中流动(从输入移动到输出)的过程中所经受的变换(即加工处理)。 数据流图的绘制方法:根据数据流图的四种成分:源点或终点,处理,数据存储和数据流,从问题描述中提取数据流图的四种成分;然后依据“自顶向下、从左到右、由粗到细、逐步求精”的基本原则进行绘制。 基本符号如下:

实验过程与结果: 1.运行Microsoft Office Visio2007 运行Microsoft Office Visio2007 2.选择“软件和数据库”中的“数据流模型图”模板 选中数据流模型图模板

3.用鼠标选拉图标进行绘图 任务一绘制数据流图 试绘制工资管理系统的数据流图,根据数据流图的符号说明仔细理解下图含义: 这是学校教职工工资管理系统,教师根据课时表,职工根据任务表来确定个人工资情况,数据按以下方向传递: 首先,对课时表或任务表进行审核,审核后的数据经排序形成专用表格; 再进行一系列额外计算,包括个人所得说、住房公积金、保险费得出具体所发工资,并将工资表发给银行; 然后,向教职工展示工资所得明细; 最后,形成编制报表,更新分类表后,交于会计。 其中,人事科负责人事数据,教师与职工的工资由银行发放,会计做好报表的统计。

数据结构课程设计_表达式求值问题

实验表达式求值问题 1.问题描述 表达式是数据运算的基本形式。人们的书写习惯是中缀式,如:11+22*(7-4)/3.中缀式的计算按运算符的优先级及括号优先的原则,相同级别从左到右进行计算。表达式还有后缀表达式(如:11 22 7 4 - * 3 / +)和前缀表达式(+ 11 / * 22 - 7 4 3)。后缀表达式 和前缀表达式中没有括号,给计算带来方便。如后缀表达式计算时按运算符出现的先后进行计算。本设计的主要任务是进行表达式形式的转换及不同形式的表达式计算。 2.数据结构设计 (1)顺序栈类定义:首先应在类中定义成员函数,以此来完成顺序栈的相关操作,如下: class SqStack { private: T *base; //栈底指针 int top; //栈顶 int stacksize; //栈容量public: SqStack(int m); //构建函数 ~SqStack(){delete [] base;top=0;stacksize=0;} //析构函数 void Push(T x); //入栈 T Pop(); //出栈 T GetTop(); //获取栈顶元素

int StackEmpty(); //测栈空 void ClearStack(); //清空栈 void StackTop(); //返回栈顶指针 void StackTranverse(); //显示栈中元素 }; (2)顺序栈类实现:对顺序栈进行初始化,初始化的首要操作就是创建一个空顺序栈。 Step1:申请一组连续的存空间为顺序栈使用: base=new T[m]; i f(base==NULL) { cout<<"栈创建失败,退出!"<

《数据结构课程设计》表达式求值实验报告

实验课程名称 专业班级 学生姓名 学号 指导教师 20 至 20 学年第学期第至周

算术表达式求值演示 一、概述 数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 在这次的课程设计中我选择的题目是算术表达式求值演示。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。 二、系统分析 1.以字符列的形式从终端输入语确的、不含变量的整数表达式。利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。 2.一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存操作数和运算结果。 3.演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。 4.程序执行时的命令: 本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊

的命令,只需按提示输入表达式即可。(要注意输入时格式,否者可能会引起一些错误)5. 测试数据。 三、概要设计 一个算术表达式中除了括号、界限符外,还包括运算数据和运算符。由于运算符有优先级别之差,所以一个表达式的运算不可能总是从左至右的循序执行。每次操作的数据或运算符都是最近输入的,这与栈的特性相吻合,故本课程设计借助栈来实现按运算符的优先级完成表达式的求值计算。 算法设计 程序包含三个模块 (1) 主程序模块,其中主函数为 void main{ 输入表达式; 根据要求进行转换并求值; 输出结果; } (2) 表达式求值模块——实现具体求值。 (3) 表达式转换模块——实现转换。 各个函数之间的调用关系

表达式求值实验报告

淮海工学院计算机工程学院 课程设计报告 设计名称:数据结构课程设计 选题名称:表达式求值 姓名:学号: 专业班级: 系(院):计算机工程学院 设计时间: 设计地点:软件工程实验室、教室 指导教师评语: 成绩: 签名: 年月日

1.课程设计目的 1、训练学生灵活使用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。 2.课程设计任务和要求: 任务 根据教材《数据结构-C语言描述》(耿国华主编)和参考书《数据结构题集(C语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择使用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。 设计题目从任务书所列选题表中选取,每班每题不得超过2人。 学生自选课题 学生原则上可以结合个人爱好自选课题,要求课题有一定的深度和难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选课题需在18周前报课程设计指导教师批准方可生效。 要求: 1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备和否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。 3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释; 4、每位同学需提交可独立运行的程序; 5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算); 6、课程设计实践作为培养学生动手能力的一种手段,单独考核。 3.课程设计说明书

软件工程实验报告

软 件 工 程 实 验 报 告 班级:计算机科学与技术1102班 学号:1108030209 姓名:蒙雨茹

实验一:使用Microsoft Visio 1.1实验目的: (1)熟悉Visio的工作环境及组成。 (2)掌握Visio软件绘制图表的基本操作。 (3)掌握基本流程图的设计方法。 1.2实验内容: 绘制基本流程图 1.3实验步骤: (1)打开一个模板,,在主菜单中依次选择【文件】->【新建】->【选 择绘图类型】,出现“选择绘图类型”窗口,在【类别】下,单击 【流程图】,在【模板】下,单击【基本流程图】。 (2)添加形状,将【形状】窗口中模具上的自己需要的形状拖到绘图页 面中合适的位置。并添加文本、连接不同形状,使流程图完整的显 现出来。 1.4实验结果:

实验二:数据流图 2.1 实验目的 (1)熟悉Visio的工作环境及组成。 ⑵掌握Visio软件绘制图表的基本操作。 ⑶掌握数据流图的设计方法。 2.2 实验内容 习题3-3,3-4,3-5 2.3 实验步骤 (1)打开模板 ①在主菜单中,依次选择【文件】——【新建】——【选择绘图类型】,出现“选择绘图类型”窗口。 ②在左侧【类别】下,单击【软件】。 ③在右侧【模板】下,单击【数据流模型图】。 (2)绘制顶层图 ①在顶层进程页面中添加、移动图形元素并调整其大小。将所需要元素用鼠标拖动到模板里,添加所需的元素符号。 接口:输入源点或输出终点,其中注明源点或终点的名称。 进程:即处理,输入数据在此进行变换产生输出数据,其中注明进程的名称。数据存储:用于代表系统中存储的信息,其中注明信息的名称。 数据流:被加工的数据及其流向。流线上注明数据名称,箭头代表数据流动方向。 ②向图形元素中添加文本,并修改数据流图中的文字和格式。 连接图形元素。 ③使用“数据流”连接线将“接口”、“进程”和“数据存储”等形状互相连接起来。 逻辑连接:将数据流起点、终点拖拽到进程或接口中央位置,进程或接口被红色框包围时松开鼠标,这时可看到数据流符号相应端点为红色方框。拖动进程或接口,可看到流据流的端点随着进程或接口的移动而移动。

数据结构表达式求值代码

//代码部分: #include using namespace std; #define MAXSIZE 100 typedef char ElemType;//定义栈 typedef struct{ char a[MAXSIZE]; int top;//栈顶指针 }SqStack; char op[8]={'+','-','*','/','(',')','#'};//运算符集 char ch[7][7]={ //运算符优先关系集{'>','>','<','<','<','>','>'}, {'>','>','<','<','<','>','>'}, {'>','>','>','>','<','>','>'}, {'>','>','>','>','<','>','>'}, {'<','<','<','<','<','=',' '}, {'>','>','>','>',' ','>','>'}, {'<','<','<','<','<',' ','='} }; void InitStack(SqStack &s) { for(int i=0;i

ElemType Pop(SqStack &s,ElemType &e) { if (s.top==0) { cout<<"Stack is empty!"<

数据结构算术表达式求值课程设计

目录 1.前言 (2) 2.问题描述 (3) 3.总体设计·····················································································错误!未定义书签。 3.1 概要设计 ······························································································错误!未定义书签。 3.1.1 数据结构的选择 (3) 3.1.2 相关功能函数 (3) 3.1.3 函数模块调用关系 (4) 3.2详细设计和编码 (5) 4.运行与测试 (9) 4.1 上机调试 (9) 4.2 算法时间和空间性能分析 (10) 4.3程序运行测试结果 (11) 5. 总结与心得 (13) 5.1设计中难点的总结以及其它解决方案 (13) 5.2 实验心得 (14) 6. 用户使用说明 (16) 7. 参考文献 (16) 8. 附录1(源代码清单) (16) 9. 附录2(成绩评定表) (25) 1

1.前言 课程设计是实践性教学中的一个重要环节,它以某一课程为基础,它可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。 在数据结构的学习和课程设计过程中,我发现它要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,都必须加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。对于我们专业来说,虽然说对技术要求不是特别高,但是在实际操作过程中,没有足够的专业知识对于编程来说是远远不可以达到要求的,所以对于这次的课程设计,我们必须要通过自己额外补充知识来完成它。 在这次的课程设计中我选择的题目是表达式的求值演示。它的基本要求是:以字符序列的形式从终端输入语法正确的,不含变量的表达式。利用算符优先关系,实现对算术四则混合运算表达式的求值,并演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。对于表示出栈在每执行一个过程中都要输出它的变化,这点我认为在编程中是比较困难的,以我自身的能力,是不可能在规定的时间内完成任务的,所以我参考了很多有价值的书籍来帮助我完成我的程序设计。 2

算术表达式求值-数据结构实验报告

清华大学数据结构课程实验报告(20 -20 学年第学期) 报告题目:算术表达式求值 任课老师: 专业: 学号: 姓名: 二0一年月日

摘要:现代科学技术高速发展,各种高科技产品频频问世,而各种技术的基础都离不开基本的表达式求值,它虽然简单,但却是任何复杂系统的基本执行操作。栈是一种重要的线性结构,从数据结构的角度看,它是一种特殊的线性表,具有先入先出的特点。而算符优先法的设计恰巧符合先入先出的思想。故我们基于栈这种数据结构,利用算符优先法,来实现简单算术表达式的求值。 关键字:算符优先法;算术表达式;数据结构;栈 一、课题概述 1、问题描述 一个算术表达式是由运算数、运算符、界限符组成。假设操作数是正整数,运算符只含有加“+”、减“-”、乘“*”、除“/”四种二元运算符,界限符有左括号“(”、右括号“)”和表达式起始、结束符“#”。利用算符优先法对算术表达式求值。 2、设计目的 (1)通过该算法的设计思想,熟悉栈的特点和应用方法; (2)通过对算符优先法对算术表达式求值的算法执行过程的演示,理解在执行相应栈的操作时的变化过程。 (3)通过程序设计,进一步熟悉栈的基本运算函数; (4)通过自己动手实现算法,加强从伪码算法到C语言程序的实现能力。3、基本要求: (1)使用栈的顺序存储表示方式; (2)使用算符优先法; (3)用C语言实现; (4)从键盘输入一个符合要求的算术表达式,输出正确的结果。 4、编程实现平台 Microsoft Visual C++ 6.0 二、设计思路及采取方案 1、设计思路: 为了实现算符优先法,可以使用两个工作栈。一个称做OPTR,用以寄存运

软件工程实验报告_学生成绩管理系统

软件工程实验报告 学生成绩管理系统的设计与实现 学生姓名 学号 班级 成绩 指导教师 年月日

目录 1 课题描述 (3) 2 可行性研究 (4) 2.1 编写目的 (4) 2.2 项目背景 (4) 2.3 定义(术语) (4) 2.4 数据流程和处理流程 (4) 2.5 可行性分析的前提 (5) 2.6 可行性分析 (5) 3 需求分析 (7) 3.1 学生成绩管理系统功能需求 (7) 3.2 学生成绩管理系统性能要求 (8) 3.3 数据流图 (8) 3.4 数据字典 (9) 3.5 学生信息管理系统逻辑结构图 (12) 3.6 用户信息实体关系图 (12) 4 概要设计 (13) 4.1 编写目的 (13) 4.2 项目背景 (13) 4.3 任务概述 (13) 4.4 总体设计 (13) 4.5接口设计 (17) 4.6数据结构设计 (17) 5 详细设计 (19) 5.1 系统程序流程图 (19) 5.2 界面设计 (21) 5.3 程序界面截图 (22) 5.4 程序源代码 (27) 6 软件测试 (58) 7 总结 (62)

1 课题描述 随着互联网的发展,利用INTERNET 技术来实现“无纸办公”这个概念已经深入人心,校园网作为学校信息化建设的一个平台在完成资源共享、互联网访问、教务管理、电子备课等方面发挥了重要作用。服务教学、提高教学水平和效果是校园网建设的核心目标和核心价值,本系统立足于校园实际,着眼于未来发展,建成符合标准化协议、通用性较强、实用的系统,以提高高校的现代化管理水平,实现信息资源的共享。该项目主要是服务于教学方面,进一步方便教师的工作和学生的学习,从而从侧面达到提高学校的教学方面‘软件’质量。可以说它适用于每一所高校,因此很有开发价值。我们不敢说该产品是所有该系列产品中最好的,但是我们这里要强调的是它具有使用范围广,实用性强,使用简单,所花经费少等优点。我们可以肯定的说它将在高校的使用过程中其优点将得到最充分的体现。 主要功能有三方面: 管理员,登陆,进入系统,可以进行管理员操作,进行学生信息、教师信息、课程信息的编辑、查询、删除、修改、添加、打印等操作。 学生,登陆,进入系统,可以进行查询、修改、打印等操作。 教师,登陆,进入系统,可以进行查询、学生成绩录入、修改、打印等操作。 软件系统目标: (1)本系统具有很强的可靠行,可以对录入的学生信息进行效验,对数据进行修改、删除,规定各种权限。 (2)本系统中的模块具有很强的可续性,可以方便管理人员的修改与维护。 (3)本系统操作方便、灵活、简单。 (4)本系统可高效、快速的查询到学生的基本信息。

数据结构课程设计_表达式求值【完整版】

XXXXXX大学《数据结构》课程设计报告 班级: 学号: 姓名: 指导老师:

目录 一算术表达式求值 一、需求分析 二、程序的主要功能 三、程序运行平台 四、数据结构 五、算法及时间复杂度 六、测试用例 七、程序源代码 二感想体会与总结

算术表达式求值 一、需求分析 一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#。引入表达式起始、结束符是为了方便。编程利用“算符优先法”求算术表达式的值。 二、程序的主要功能 (1)从键盘读入一个合法的算术表达式,输出正确的结果。 (2)显示输入序列和栈的变化过程。 三、程序运行平台 Visual C++ 6.0版本 四、数据结构 本程序的数据结构为栈。 (1)运算符栈部分: struct SqStack //定义栈 { char *base; //栈底指针 char *top; //栈顶指针 int stacksize; //栈的长度 }; int InitStack (SqStack &s) //建立一个空栈S { if (!(s.base = (char *)malloc(50 * sizeof(char)))) exit(0); s.top=s.base; s.stacksize=50; return OK; } char GetTop(SqStack s,char &e) //运算符取栈顶元素 { if (s.top==s.base) //栈为空的时候返回ERROR { printf("运算符栈为空!\n"); return ERROR; } else e=*(s.top-1); //栈不为空的时候用e做返回值,返回S的栈顶元素,并返回OK

数据结构课程设计:算术表达式

表达式求值 一目的 利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题 目,利用C/C++语言进行程序设计,并规地完成课程设计报告。通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描 述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。设计一个程序,演示以字符序列的形式输入不含变量的实数表达式求值的计算结果 二需求分析 设计一个程序,演示以字符序列的形式输入不含变量的实数表达式求值的计算结果。对于这个程序我们从输入,输出,和功能三方面来分析。 1.程序输入:从键盘上输入表达式,一个算术表达式,由常量、运算符和括号组成(以字符串形式输入,不含变量)。为了简化,操作数只能为浮点数,操作符为“ +”、“-”、“*”、“/”、“(”、“)”,用“#“表示结束。 2.程序输出:表达式运算结果,运算符栈、运算数栈、输入字符和主要操作变化过程,如运算符栈、运算数栈的出入记录,字符出入栈的过程,打印出完整的过程。 3.功能要求及说明:从键盘上输入表达式。分析该表达式是否合法(包含分母不能为零的情况): (1)是数字,则判断该数字的合法性。 (2)是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。 (3)若是其它字符,则返回错误信息。 若上述处理过程中没有发现错误,则认为该表达式合法,并打印处理结果。 三概要设计 1.数据结构的选择: 任何一个表达式都是由操作符,运算符和界限符组成的。我们分别用顺序栈来寄存表达式的操作数和运算符。栈是限定于紧仅在表尾进行插入或删除操作的线性表。

实验一 软件结构化分析实验报告

实验一软件结构化分析 实验目的: 1) 熟练使用Visio的图形模板绘制出专业图表 2)掌握系统的功能描述、性能描述方法; 3) 掌握需求分析工具数据流图、数据字典等; 4) 掌握系统需求分析的步骤和方法。 实验要求: 要求做到使用结构化数据流分析技术分析课题需求,写出详细的数据流图和数据字典,编写 实验内容: 用结构化数据流分析技术进行软件系统需求分析,得出系统得数据流图和数据字典。实验步骤: 1) 到相关单位进行需求分析。 2) 综合利用Internet网和相关书籍整理并完善需求分析。 3) 画出系统数据流图。 4) 得出系统数据字典。 1.软件系统需求描述:(从功能,性能上进行描述) 本系统可细化为两个子系统:销售系统和采购系统。 销售系统的主要工作过程为:首先由教师及学生提交购书单,经教材发行人员审核是有效购书单后,开发票,登记并返还给教师和学生领书单,教师和学生即可去书库领书。 采购系统的主要工作过程为:若是脱销教材,则登记缺书单给书库采购人员,一旦新书入库后,即发进书通知给教材发行人员。

本系统是学校教材订购系统,希望通过计算机能实现对教材采购自动化管理,达到节省人力和提高工作效率的目的。凡书库中的书的数量发生变化(包括领书或进书)时,都应修改相关的书库记录,例如库存表或进/出库表 所以在本次实验中我们应注意教师(学生)与教材发行人员与书库采购员之间的联系;两个子系统:销售系统与采购系统之间的联系,两个子系统合为一个教材订购系统,而与销售系统和采购系统都有关系的是教材发行人员,教师(学生)、图书采购员都需要与教材发行人员联系凡书库中的书的数量发生变化(包括领书或进书)时,都应修改相关的书库记录,例如库存表或进/出库表。 2.软件系统数据流图(由加工、数据流、文件、源点和终点四种元素组成): 3.软件系统数据字典: 1.数据流条目 2.加工条目 3.文件条目 4. 实验小结 本次实验我主要思考了两个子系统之间的关系,以及它们的基本实现方法,教师发书单给教材发行人员后,教材发行人员通过审核销售系统的库存表如教材充足,则返回书单去领书,如缺书书库采购人员进书后将教材的数量输入采购系统库存表反馈给教材发行人员。

相关文档
相关文档 最新文档