课程设计报告

发布 2022-10-01 06:04:28 阅读 9420

兰州商学院陇桥学院。

工学系课程设计报告。

设计题目:二叉树与算术表达式

系别:工学系。

专业 (方向):信息管理与信息系统

年级、 班。

学生姓名。学生学号。

指导教师。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语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...