兰州商学院陇桥学院。
工学系课程设计报告。
设计题目:二叉树与算术表达式
系别:工学系。
专业 (方向):信息管理与信息系统
年级、 班。
学生姓名。学生学号。
指导教师。2013 年 12 月 25 日。
目录。一、系统开发的背景 1
二、 系统分析与设计 1
一)系统功能要求 1
二)系统模块结构设计 1
三、 系统的设计与实现 1
一)输入和存储表达式:input_expr()、readexpr( )1
二)输出中缀表达式writeexper() 3
四、 系统测试 4
一) 测试input_expr()、readexpr( )4
二)测试writeexper() 4
五、总结 4
六、附件(**、部分图表) 5
二叉树与算术表达式。
一、系统开发的背景。
为了方便求出一个表达式的值,因此设计这个算法完成这个功能。
二、 系统分析与设计。
一)系统功能要求。
1、 readexpre(e)—以字符序列的形式输入语法正确的前缀表达式并构造表达式e。
2、 writeexpre(e)—用带括弧的中缀表达式输出表达式e。
二)系统模块结构设计。
通过对系统功能的分析,算术表达式系统功能如图1所示。
图1 二叉树与算术表达式功能图。
通过上图的功能分析,把整个系统划分为2个模块:
1、 输入和存储表达式,通过input_expr()函数来实现;
2、 输出中缀表达式,通过writeexpr()函数来实现;
三、 系统的设计与实现。
一)输入和存储表达式:input_expr()、readexpr( )
分析:用input expr()进行数据的录入,再通过readexpr()将之前录入的数据存储进二叉树。
该模块具体**如下:
status input_expr(char *string,int flag)
if(flag==0)printf("请输入正确的前缀表示式:")
else printf("请以表达式的原书写形式输入正确表示式:")
flushall();
gets(string);
if(strlen(string)==1)
printf("表达式只有一个字符,为运算符,错误!")return 0;}
else if((string[0]>=0'&&string[0]<'9')|string[0]>=a'&&string[0]<=z')|string[0]>=a'&&string[0]<=z'))
printf("表达式只有一个字符!")return 1;}
else return 1;
status readexpr(bitree *e,char *exprstring)
sqstack s;
int i,len;
bitree p,q;
(*e)=(bitree)malloc(sizeof(bitnode));
(*e)->lchild=null;
(*e)->rchild=null;
len=strlen(exprstring);
if(len==1)
erchashu(e,exprstring,0);
else else
elseif(!q->lchild) else
if(stackempty(s)&&i>=len)
return 1;else
注:该流程图见附件。
二)输出中缀表达式writeexper()
分析:通过这个模块将之前输入与存储的数据输出。
该模块的具体**如下:
void writeexpr(bitree e)
if(e)else writeexpr(e->lchild);
else writeexpr(e->lchild
if(e->"d",e->
else printf("%c",e->
if(e->rchild&&e->rchild->
else writeexpr(e->rchild);
else writeexpr(e->rchild);
四、 系统测试。
一) 测试input_expr()、readexpr( )
测试是否能够正确执行录入程序。
二) 测试writeexper()
测试是否能够正确输出,检查错误。
五、总结。此次课程设计相对于我来说,,相对于这个学期写的那些小算法来说,这个课程设计能充分发挥出学习数据结构后的能力;现实应用度增加。
从接触c语言编程到现在,我就觉得:编程不是简简单单的写出程序,更多的是出错处理。这次课程设计中,更让我深刻体会到这个道理。
而花费了我很多时间的是在调试和测试数据上!这次课程设计,不仅训练了我对visual c++6.0的调试器的操作的熟练度;而且,让我在发现问题解决问题中深刻地理解到完善程序的重要性。
在我所设计的这个程序中所没有的完成的功能有:assign(v,c)—实现对变量v的赋值(v=c),变量的初值为0。 value(e)—对算术表达式e求值。
compoundexpr(p,e1,e2)--构造一个新的复合表达式(e1)p(e2)
做课程设计,我觉得,第一点是架构,一个好的架构,可以让细节更完善;在这次课程设计中,我首先确定的是一个架构——前缀表达式构造表达式为架构——其余的操作都是在这个架构上增加扩充。第二点是调试测试分析,一个完善的程序是要经过千锤百炼的,也能做到更加完善;第三点是心得的总结!
总的来说,这次课程设计,让我学了很多,总结了很多!
六、附件。流程图:readexpr( )
完整**:#include<>
#include <>
typedef int status;
typedef enumelemtag;
typedef struct telemtype
elemtag tag;union
telemtype;
typedef struct bitnode
bitnode,*bitree;
typedef bitree selemtype;
#define stack_init_size 10
#define stackincrement 2
typedef struct sqstack
selemtype *base;
selemtype *top;
int stacksize;
}sqstack;
status initstack(sqstack *s)
(*s).base=(selemtype *)malloc(stack_init_size*sizeof(selemtype));
(*s).top=(*s).base;
(*s).stacksize=stack_init_size;
return 1;
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...