当前位置:文档之家› 算数表达式求解课程设计说明书

算数表达式求解课程设计说明书

算数表达式求解课程设计说明书
算数表达式求解课程设计说明书

中北大学

数据结构

课程设计说明书

2013 年 1月 17 日

1.设计目的

《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的:

?了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

?初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

?提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

?训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科

学的工作方法和作风。

2.设计内容和要求

2.1设计内容:

(1)本案例要求从键盘中输入一串四则运算表达式,由计算机求出表达式的运算结果。

(2)要求能够判断公式的正确性,如括号是否匹配,有没有算术表达式之外的字符(3)对于有错的表达式,要提示出错信息

(4)对于正确的表达式,能够正确求出值

2.2设计要求:

(1)符合课题要求,实现相应功能;

(2)要求界面友好美观,操作方便易行;

(3)注意程序的实用性、安全性;

3.需求分析

3.1系统概述

表达式求值运算式实现程序设计语言基本问题之一,也是栈的应用的典型例子。

深入了解栈和队列的特性,学会在实际应用中灵活运用。

3.2需求概述

3.2.1 目标

a. 软件开发意图、目标及范围: 本案例要求从键盘中输入一串四则运算表达式,

由计算机求出表达式的运算结果; 要求能够判断公式的正确性,如括号是否匹

配,有没有算术表达式之外的字符; 对于有错的表达式,要提示出错信息。

b. 主要功能、处理流程、数据流程:

3.2.2 运行环境

PC微机

DOS操作系统或 Windows 操作系统

Turbo C 程序集成环境或 Visual C++ 程序集成环境

3.2.3 约束条件

以字符序列的形式从终端输入语法正确、不含变量的算术表达式

算法优先级别:

3.3需求规格

3.3.1系统总功能

1)系统功能模块图

(图一:系统功能模块图)

2)系统流程图

(图二:系统流程图)3)数据流图

(图三:数据流图)

3.4功能需求:接受正确表达是后进行计算并输出结果。

3.5可靠性和可用性需求:接收错误表达式后反馈提示信息;退出程序时进行询问选择。

3.6约束:仅能输入规定字符。如:数字、运算符号、小数点、括号、Q、C、E。

3.7尚未解决的问题:无法记录计算过的数据。

4.测试用例

(2+16)/9,13*3,-5+3,-5*21,-2/8,2--3,1.0000000*5,0.975000/0.01 4.本设计所采用的数据结构

/*操作数堆栈*/

typedef struct

{

double data[N];

int numTop;

}Stack1;

Stack1 *numStack;

/*界符堆栈*/

typedef struct

{

char data[N];

int opTop;

}Stack2;

Stack2 *opStack;

5.功能模块详细设计

5.1 栈结构功能功能模块设计(段冰倩完成)5.1.2流程图

(图四:栈的初始化)

(图五:栈的判空)

(图六:入栈操作)

(图七:出栈操作)

5.1.3源代码

//操作数栈与界符栈初始化

Stack1 *Init_numStack()

{

numStack=(Stack1*)malloc(sizeof(Stack1)); numStack->numTop=0;

return numStack;

}

Stack2 *Init_opStack()

{

opStack=(Stack2*)malloc(sizeof(Stack2)); opStack->opTop=0;

return opStack;

}

//操作数栈判空

int Empty_numStack(Stack1 *numStack)

{

if(numStack->numTop==0) return 1;

else return 0;

}

//界符栈判空

int Empty_opStack(Stack2 *opStack)

{

if(opStack->opTop==0) return 1;

else return 0;

}

//入栈(操作数)

int Push_numStack(Stack1 *numStack,char x)

{

if(numStack->numTop==N-1) return 0;

else

{

numStack->numTop++;

numStack->data[numStack->numTop]=x;

return 1;

}

}

//出栈(操作数)

double Pop_numStack(Stack1 *numStack,char*x)

{

if(Empty_numStack(numStack)) return 0;

else return(numStack->data[numStack->numTop]); }

//入栈(界符)

int Push_opStack(Stack2 *opStack,char x)

{

if(opStack->opTop==N-1) return 0;

else

{

opStack->opTop++;

opStack->data[opStack->opTop]=x;

return 1;

}

}

//出栈(界符)

int Pop_opStack(Stack2 *opStack,char*x)

{

if(Empty_opStack(opStack)) return 0;

else return(opStack->data[opStack->--opTop]);

}

5.2 算术表达式计算模块设计(王东鹏完成)

5.2.1函数功能说明:

Computer函数在本程序的功能是实现数与运算符号输入时的判定

Result函数在本程序中的功能是通过在computer函数中对该函数的调用实现存储在num 中的数值运算

函数设计思路(1)通过建立一个字符串数组存放输入的数字字符和运算字符

(2)通过强制转换把字符串类型数据转换成双精度浮点型数据

(3)把数据和运算界符分别压栈在两个栈中,然后通过判断进行比较和出栈运算

5.2.2 流程图(另附)

5.2.3源代码

double result(double num1,char op,double num2) /*执行运算*/

{

if(op=='+') return num1+num2;

if(op=='-') return num1-num2;

if(op=='*') return num1*num2;

if(op=='/') return num1/num2;

return 0;

}

int compute(char str[]) /*利用栈结构对算术表达式进行求解,分析表达式*/ { Init_numStack();

Init_opStack();

double num=0;

int i=0,j=1,k=1; /*j代表小数点后位数,k代表数字符号(正负)*/

int Flag=0; /*Flag=0表示不是小数位,1表示是小数位*/

while(str[i]!='\0'||opStack->opTop>0) /*如果算术表达式不为空*/ {

if(str[i]>='0'&&str[i]<='9') /*如果当前字符是阿拉伯数字字符*/ if(Flag==0)

num=num*10+str[i]-'0'; /*多位数计算*/

else

{

num+=(str[i]-'0')/(j*10.0); /*小数计算*/

j*=10;

}

else /*如果当前字符不是阿拉伯数字字符*/

if(str[i]=='.') /*那么它是否小数点*/

Flag=1; /*设置标志,表明下一个应该是小数位,如果下一个不是小数位,应该归零*/

else /*如果当前字符不是阿拉伯数字字符,也不是小数点*/

if( k==1&&str[i]=='-'&&(i==0||op(str[i-1])) ) /*如果当前字符是'-',符号标志为1,当前是第一个字符或前一个字符为'+','-','*','/','('这些字符*/

k=-1;

else

{

if(i>0&&!op(str[i-1])&&str[i]!='('&&str[i-1]!=')') /*i>0且前一字符不是'+','-','*','/','(',')'这些字符,且当前字符不是'('*/

{

numStack->data[numStack->numTop++]=num*k; /*压num*k入操作数堆栈*/

num=0; j=1; Flag=0; k=1;

}

if( opStack->opTop==0||str[i]=='(')

opStack->data[opStack->opTop++]=str[i];/*如界符堆栈为空或当前字符为'(',将当前字符压入界符堆栈*/

else

if(str[i]==')') /*若当前字符为')'*/

{

while(opStack->opTop>0&&opStack->data[--opStack->opTop]!='(')

{

numStack->data[ numStack->numTop-2]=result(numStack->data[numStack->numTop-2],o pStack->data[opStack->opTop],numStack->data[numStack->numTop-1]);

numStack->numTop--;

} /*分别从操作数堆栈,界符堆栈出栈响应元素执行计算,结果送入操作数堆栈*/

/*直到遇到界符'(',这是正常情况,或者界符堆栈为空,这表明表达式是有错误的*/ if(opStack->data[opStack->opTop]!='(') return 0;

}

else /*界符堆栈非空,当前字符不是'(',也不是')'*/

{

if(str[i]=='\0'&&numStack->numTop==0) return 0; /*如果表达式结束,或操作数堆栈已空,返回调用处*/

while(opStack->opTop>0&&op(str[i])<=op(opStack->data[opStack->opTop-1]))

{

numStack->data[numStack->numTop-2]=result(numStack->data[numStack->numTop-2],op Stack->data[--opStack->opTop],numStack->data[numStack->numTop-1]);

numStack->numTop--;

} /*分别从操作数堆栈,界符堆栈出栈响应元素执行计算,结果送操作数堆栈*/

/*直到当前运算符的优先级低于栈元素的优先级,把当前字符压栈*/

if(str[i]!='\0')

opStack[opTop++]=str[i];

}

}

if(str[i]!='\0')

i++;

}

if( numStack->numTop!=1||!Empty_opStack(opStack))

return 0;

return 1;

}

5.3 输出模块、优先级选择模块(宋超峰完成)

5.3.1流程图

(图九:主函数流程图)

5.3.2源代码

int op(char ch) /*将运算符映射为数字,表示优先级*/

{

if(ch=='+'||ch=='-') return 2;

if(ch=='*'||ch=='/') return 3;

if(ch=='(') return -1;

return 0;

}

/*程序主界面*/

void view()

{

system("cls");

printf(" \n");

printf(" ╭═══════════════╮\n");

printf(" ║算数表达式求解║\n");

printf(" ╭══════┤├══════╮\n");

printf(" ║║清除 (C) 等于 (E) 退出 (Q) ║║\n");

printf(" ║╰═══════════════╯║\n");

printf(" ║╭───────────────────────╮║\n");

printf(" ╰══┤制作:段冰倩宋超峰杨建波王东鹏├══╯\n");

printf(" ╰───────────────────────╯\n");

}

void main()

{

char ch;

system("color 03");

view();

printf("\n请输入一个长度小于%d的算术表达式,按'E'得到结果 \n",N); ch=getch();

select(ch);

}

5.4 选择功能模块(杨建波完成)

5.4.1流程图

(图十:选择模块)

5.4.2源代码

void select(char ch)

{ int compute(char str[]);

int i=0,j=0;

char str[N]="\0";

char num[N]="\0";

double temp;

while( 1 )

{

if(ch=='.'||ch==')'||op(ch)||ch>='0'&&ch<='9')

{

str[i++]=ch;

str[i]='\0';

view();

printf("\n请输入一个长度小于%d的算术表达式,按'E'得到结果 \n",N); printf("%s",str);

if( ch=='-'&&(i==1||op(str[i-2]))||ch>='0'&&ch<='9' )

{

num[j++]=ch;

num[j]='\0';

}

else j=0;

}

if(ch=='C'||ch=='c') /*清除数据*/

{

if(strlen(str))

str[--i]='\0';

view();

printf("\n请输入一个长度小于%d的算术表达式,按'E'得到结果\n",N);

printf("%s",str);

}

if(ch=='E'||ch=='e') /*求算术表达式的值*/

{

if(compute(str))

{

printf("\n=%g\n",numStack->data[0]);

j=0; temp=numStack->data[0];

}

else

{

view();

printf("\n请输入一个长度小于%d的算术表达式,按'E'得到结果\n",N);

printf("%s",str);

printf("\n输入的算术表达式有误!");

}

i=0; j=0; str[0]='\0';

}

if(ch=='Q'||ch=='q') /*退出程序*/

{

printf("\n退出?(是Y/否N)\n");

ch=getch();

if(ch=='Y'||ch=='y') break;

else /*否定退出,程序继续运行*/

{

view();

printf("\n请输入一个长度小于%d的算术表达式,按'E'得到结果\n",N);

printf("%s",str);

}

}

ch=getch();

}

}

6.源代码

#include

#include

#include

#include

#include

#define N 100

//double numStack[N]={0};

//int numTop; /*操作数堆栈栈顶相对栈底的偏移量,可以用来判断堆栈是否为空*/ //char opStack[N];

//int opTop; /*界符堆栈栈顶相对栈底的偏移量,可以用来判断堆栈是否为空*/

/*操作数堆栈*/

typedef struct

{

double data[N];

int numTop;

}Stack1;

Stack1 *numStack;

/*界符堆栈*/

typedef struct

{

char data[N];

int opTop;

}Stack2;

Stack2 *opStack;

//操作数栈与界符栈初始化

Stack1 *Init_numStack()

{

numStack=(Stack1*)malloc(sizeof(Stack1));

numStack->numTop=0;

算术表达式求值演示程序

数理学院 课程设计报告书 课程名称数据结构课程设计 设计题目算术表达式求值演示 专业班级 学号 姓名 指导教师

2014 年12 月

4.2.2 基本操作: InitStack(&S) 操作结果:构造一个空栈S。 GetTop(S) 初始条件:栈S 已存在。 操作结 果: 用P 返回S的栈顶元素。Push(&S 初始条 件:,ch) 栈S 已存在。 操作结 果:插入元素ch 为新的栈顶元素。 Pop(&S) 初始条件:栈S 已存在。 操作结 果:删除S 的栈顶元素。 In(ch) 操作结果:判断字符是否是运算符,运算符即返回1 Precede(c1, c2) 初始条件:c1,c2 为运算符。操作结果:判断运算符优先权,返回优先权高的。Operate(a,op,b) 初始条件:a,b 为整数,op为运算符。操作结果: a 与 b 进行运算,op 为运算符,返回其值。num(n) 操作结果:返回操作数的长度。EvalExpr() 初始条件:输入表达式合法。操作结果:返回表达式的最终结果。}ADT Stack 主程序的流程:

EvaluateExpression() 函数实现了对表达式求值的功能,main() 函数直接调用EvaluateExpression() 对输入的表达式求值输出。 4.2.3 函数的调用关系图

4.3 详细设计 4.3.1 ① . Precede(char c1,char c2)判断运算符优先权,返回优先权高的 算符间的优先关系 如下: 算法伪代码如下: char Precede(char c1,char c2) { static char array[49]={ >', '>', '<', '<', '<', '>', '>', >', '>', '<', '<', '<', '>', '>', >', '>', '>', '>', '<', '>', '>', >', '>', '>', '>', '<', '>', '>', <', '<', '<', '<', '<', '=', '!', >', '>', '>', '>', '!', '>', '>', <', '<', '<', '<', '<', '!', '='}; // 用一维数组存储 49 种情况 switch(c1) { /* i 为下面 array 的横标 */ case '+' : i=0;break; case '-' : i=1;break; case '*' : i=2;break;

固废课程设计:垃圾填埋场课程设计

Content 前言 (1) 1、绪论 (3) 1.1生活垃圾概述 (3) 1.2生活垃圾处理与处置方法 (4) 2、工程概况 (5) 2.1工艺选择 (5) 2.2项目设计原始资料 (6) 2.3项目设计要求 (8) 3、填埋场的选址 (8) 3.1场址禁设地区 (8) 3.2选址条件 (9) 3.3场址比选与场址确定 (9) 3.4地址的选定与所需的容积 (10) 4.填埋场的地基与防渗 (12) 4.1防渗工程 (12) 4.2水平防渗 (12) 4.3垂直防渗 (16) 5. 渗滤液的产生及收集处理 (18) 5.1垃圾渗滤液概念和来源 (18) 5.2垃圾渗滤液的水质特征 (18) 5.3渗滤液收集系统 (19)

5.4渗滤液产生量的计算 (19) 5.5工艺选择 (21) 6、填埋气体收集导排及利用 (21) 6.1填埋场封场系统设计 (21) 7、填埋作业设备选择 (22) 7.1推土摊铺设备的选择 (22) 7.2压实设备的选择 (22) 7.3取土设备的选择 (23) 7.4喷药和洒水设备的原则 (23) 7.5其他设备的选择 (23) 8、封场工程 (24) 8.1填埋场的封场系统设计 (24) 8.2填埋场封场后的土地回用 (25) 9、环境保护与检测 (26) 附图 (27)

前言 一、设计目的 进一步加强对固体废物固体废物处理与处置课程的认识,通过工程设计训练,强化课堂知识,培养解决复杂工程问题的能力。 二、设计内容 1、城市生活垃圾填埋场的场址选择和总体设计(填埋区库区场底工艺平面布置图、库区堆填规划平面布置图); 2、填埋场防渗系统设计(包括场底防渗结构布置图、库底与边坡防渗结构布置图、边坡锚固平台处防渗结构布置图、库区周边锚固沟处防渗结构布置图,封场); 3、垃圾渗滤液处理系统设计(包括工艺流程选择、主要构筑物尺寸、主要设备选型)。 三、设计条件 1、设计题目:阳江市600吨/天城市生活垃圾卫生填埋场主体设计 2、原始数据及操作条件要求:规划用地总面积247400平方米,填埋高度45米。 四、主要工作内容 1、城市生活垃圾填埋场的场址选择和总体设计; 2、填埋场防渗系统设计; 3、垃圾渗滤液处理系统设计; 4、绘制符合规范的工程图; 5、编制课程设计说明书。

机械制造工艺学课程设计目的

机械制造工艺学课程设计目得、内容与要求 1 课程设计得目得 学生通过设计能获得综合运用过去所学过得全部课程进行机械制造工艺及结构设计得基本能力,为以后做好毕业设计、走上工作岗位进行一次综合训练与准备。它要求学生全面地综合运用本课程及有关选修课程得理论与实践知识,进行零件加工工艺规程得设计与机床夹具得设计。其目得就是: (1)培养学生综合运用机械制造工程原理课程及专业课程得理论知识,结合金工实习、生产实习中学到得实践知识,独立地分析与解决机械加工工艺问题,初步具备设计中等复杂程度零件工艺规程得能力。 (2)培养学生能根据被加工零件得技术要求,运用夹具设计得基本原理与方法,学会拟订夹具设计方案,完成夹具结构设计,进一步提高结构设计能力。 (3)培养学生熟悉并运用有关手册、图表、规范等有关技术资料得能力。 (4)进一步培养学生识图、制图、运算与编写技术文件得基本技能。 (5)培养学生独立思考与独立工作得能力,为毕业后走向社会从事相关技术工作打下良好得基础。 2课程设计得内容与要求 2、1课程设计得内容 课程设计题目通常定为:设计××零件得机械加工工艺规程及相关工序得专用夹具。零件图样、生产纲领与生产条件就是设计得主要原始资料,由指导教师提供给学生。零件复杂程度以中等为宜,生产类型为成批生产。 学生根据教师设计任务书中规定得设计题目,分组进行设计,按照所给零件编写出相应得加工工艺规程,设计出其中由教师指定得一道重要工序(如:工艺规程中所要求得车、铣、钻夹具中得一种)得专用夹具,并撰写说明书。学生在指导教师得指导下,参考设计指导书,认真地、有计划地、独立按时完成设计任务. 具体设计内容如下: 1。对零件进行工艺分析,拟定工艺方案,绘制零件工作图1张。 2.确定毛坯种类及制造方法,绘制毛坯图1张。 3。拟定零件得机械加工工艺过程,选择各工序加工设备及工艺装备(刀具、夹具、量具、辅具),确定某一代表工序得切削用量及工序尺寸.编制机械加工工艺规程卡片(工艺过程卡片与工序卡片)1套。 4.设计重要工序中得一种专用夹具,绘制夹具装配总图与大件零件图(通常为夹具体)各1张。 5.撰写设计说明书1份. 2、2课程设计中对学生得要求

计算器说明书

Java程序设计说明书 设计题目:Java计算器 学生姓名: 指导教师: 专业名称:计算机科学与技术所在院系:

目录 摘要2第1章计算器概述 1.1设计目的 4 1.2功能模块设计 4 1.3系统功能图 4 设计实现的详细步骤 2.2.1 计算器界面7 2.2.2 界面设计代码7 2.3程序运行效果9 第3章设计中遇到的重点及难点 (13) 3.1 设计中的重点 (13) 3.2 设计中的难点 (13) 3.2.1 设计难点1:布局 (13) 3.2.2 设计难点2:代码 (13) 3.2.3设计难点3:运行结果 (14) 3.3 本章总结 (14) 第4章本次设计中存在不足与改良方案 (15) 4.1设计不足 (15) 4.2改良方案 (15) 4.3本章总结 (18) 结论 (19) 参考文献 (20)

JAVA课程设计说明书 摘要 一、计算器概述 1、1设计计算器的目的: 该计算器是由Java语言编写的,可以进行十进制下的四则运算(加、减、乘、除)、开平方、百分号、求倒数,还可以实现其他按钮的功能。添加了一个编辑、查看、帮助的主菜单并能实现其功能。Backspace 表示逐个删除,CE 表示全部清除,C 表示一次运算完成后,单击“C”按钮即可清除当前的运算结果,再次输入时可开始新的运算,MC 表示清除储存数据,MR 表示读取储存的数据,MS 表示将所显示的数存入存储器中,存储器中原有的数据被冲走,M+ 表示计算结果并加上已经储存的数。界面类似Windows 自带的计算器。 该计算器围绕Java编程语言在编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。在编程使用Java语言,是目前比较流行的编程语言。在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。 关键词:Java语言、标准、计算器

用栈进行表达式求值并输出逆波兰式(源代码)

用栈进行表达式求值并输出逆波兰式(源代 码) #include "stdio.h" #include "malloc.h" #include "string.h" #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct{ char *top,*base; int csize; }*charstack,cstack; typedef struct{ float *top,*base; int fsize; }*floatstack,fstack; charstack initcharstack(){ charstack s; s=(charstack)malloc(sizeof(cstack)); s->base=s->top=(char*)malloc(STACK_INIT_SIZE * sizeof(char)); s->csize=STACK_INIT_SIZE; return s; } floatstack initfloatstack(){ floatstack s; s=(floatstack)malloc(sizeof(fstack)); s->base=s->top=(float*)malloc(STACK_INIT_SIZE * sizeof(float)); *(s->top)=-1; s->fsize=STACK_INIT_SIZE; return s; } char chargettop(charstack s){ return *(s->top-1); } float floatgettop(floatstack s){ return *(s->top-1); } void charpush(charstack s,char c){ if((s->top-s->base)>=s->csize){ s->base =(char *)realloc(s->base ,(s->csize +STACKINCREMENT)*sizeof(char)); s->top=s->base +s->csize ; s->csize +=STACKINCREMENT; }

固体废物处理与处置课程设计

课程名称:固体废物处理与处置课程设计 设计题目:崇明县生活垃圾填埋场设计 班级:55388799 学号:05793346 学生姓名:XXX 设计时间:2011.11.5-2011.11.14 指导教师:XX XXX

目录 一■前言------------------------------------------------------ P 1-2 1.1固体废物的来源与分类 1.2固体废物的危害 1.3固体废物处理的方法 二■工程概况--------------------------------------------------- P 2-3 2.1项目背景 22课程设计目的 2.3设计要求 2.4项目设计原始资料 三■设计计算-------------------------------------------------- P 4-7 3.1填埋场容积计算 3.2渗滤液产生量的计算 3.3填埋气体产生量的计算 四■卫生填满场的设计------------------------------------------ P 7-8 4.1处理对象 4.2填埋场的选址 五. 填埋场的防渗 ---------------------------------------------- P 8-12 5.1防渗方式 5.2防渗材料 5.3防渗结构 六. ------------------------------------------------------------ 渗滤液的产生及收集处理---------------------------------------------- P 12-13 6.1渗滤液的特点 6.2渗滤液的收集 6.3渗滤液的处理 七. ------------------------------------------------------------ 填埋气体的产生与收集处理-------------------------------------------- P 13-14 7.1填埋气的组成 7.2填埋气的收集系统 7.3填埋场气的导排 八■终场覆盖-------------------------------------------------- P 14 8.1填埋场封场系统设计 8.2填埋场封场后的土地回用

单片机课程设计计算器

课程设计说明书 课程设计名称:单片机课程设计 课程设计题目:四位数加法计算器的设计学院名称:电气信息学院 专业班级: 学生学号:

学生姓名: 学生成绩: 指导教师: 课程设计时间:至

格式说明(打印版格式,手写版不做要求) (1)任务书三项的内容用小四号宋体,倍行距。 (2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。 (3)章的标题用四号黑体加粗(居中排)。 (4)章以下的标题用小四号宋体加粗(顶格排)。 (5)正文用小四号宋体,倍行距;段落两端对齐,每个段落首行缩进两个字。 (6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。 (8)页码:封面、扉页不占页码;目录采用希腊字母Ⅰ、Ⅱ、Ⅲ…排列,正文采用阿拉伯数字1、2、3…排列;页码位于页脚,居中位置。 (9)标题编号应统一,如:第一章,1,,……;论文中的表、图和公式按章编号,如:表、表……;图、图……;公式()、公式()。

课程设计任务书 一、课程设计的任务和基本要求 (一)设计任务(从“单片机课程设计题目”汇总文档中任选1题,根 据所选课题的具体设计要求来填写此栏) 1. 系统通过4x4的矩阵键盘输入数字及运算符。 2. 可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E。 3. 可以进行加法以外的计算(乘、除、减)。 4. 创新部分:使用LCD1602液晶显示屏进行显示,有开机欢迎界面,计算数据与结果分两行显示,支持小数运算。 (二)基本要求 1.有硬件结构图、电路图及文字说明; 2.有程序设计的分析、思路说明; 3.有程序流程框图、程序代码及注释说明; 4.完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus 软件中仿真模拟); 5.有程序运行结果的截屏图片。

逆波兰表达式求值(实验报告及C 源码)

逆波兰表达式求值 一、需求分析 1、从键盘中输入一个后缀表达式,该表示包括加减乘除等操作符,以及正整数作为操 作数等。 2、用堆栈来实现 3、测试数据 输入:2 3 * 1 – # 输出:2 3 * 1 -- =5 二、概要设计 抽象数据类型 需要一个浮点数栈来存储还没有计算的浮点数或者运算的结果。 ADT Stack 数据成员:int size; int top; //分别用于存储栈大小、栈顶位置 float *listArray;//存储浮点型数字的数组 成员函数: bool push(float it); bool pop(float& it); bool isEmpty(); //判断栈为空 bool isOne();//判断栈是否只有一个元素 算法的基本思想 1.逐一扫描字符串,用ascii码进行判断,如果该字符是数字,则利用x=x*10+str[i]-48 将数据由字符类型转换为浮点型数据; 2.如果字符是‘.’,则将‘.’转化为小数点,并将‘.’后的数据转化为小数部分; 3.遇到空格前是数据的,将x押入栈; 4.如果该字符是’+’,’-’,’*’或’/’,判断栈里的元素是否少于两个个,如果少于两个, 报错;如果大于等于两个,就弹出两个数据,并进行相应的计算; 程序的流程 输入字符串,程序对字符串依次扫描。扫描一位,处理一位。扫描完成后,判断栈里是不是只有一个数据,若是,得到正确结果;若不是,则表达式出错。 三、详细设计 物理数据类型 用浮点数类型的栈存储运算中要用的数据,需要入栈、出栈,故设计如下的浮点类型的栈: class Stack { private: int size; int top; float *listArray; public: Stack(int sz=20); ~Stack();

垃圾填埋场课程设计报告书

《固体废物处理与利用》 课程设计 ————垃圾填埋场设计 (45万人口) 院系:生化工程系 学生:朱会朱婷婷 专业:环境监测与治理技术 班级: 09 环监(2)班 学号:0905010239 0905010240 指导老师:于卫东

前言 随着城市的发展,城市人口激增,生活垃圾产生量呈迅速上升趋势,为解决堆放问题,筹建一座垃圾卫生填埋场,主要用于填埋生活垃圾,采用厌氧填埋。其结构简单,操作方便,工程造价低,可回收甲烷等气体,故设计厌填埋方式。 对产生的滤液采用厌氧+MBR+纳滤等工艺,处理后确保出水达标,还能适应不同季节,年份渗滤液浓度波动,工艺流程简单,占地少运行维护费用低,自动控制程度高,对气体进行收集,用于发电或供热。通过卫生填埋实现城市生活垃圾的减量化,无害化,以改善市环境质量现状,快速现代化进程。 某地区垃圾填埋场

目录 1.概论 1.1设计背景…………………………………………………………………… 1.1.城市生活垃圾 1.1.1生活垃圾的定义…………………………………………………………………… 1.1.2生活垃圾的组成………………………………………………………… 1.1.3生活垃圾处理的主要特点……………………………………………… 1.1.4城市垃圾处理概论………………………………………………………………… 1.1.5城市垃圾成份…………………………………………………………… 1.1.6城市垃圾处理存在的问题……………………………………………… 1.2.垃圾卫生填埋 1.2.1垃圾卫生填埋的定义……………………………………………………………… 1.2.2垃圾卫生填埋的容……………………………………………………………… 1.2.3垃圾填埋场的分类………………………………………………………………… 1.2.4垃圾卫生填埋场的选址…………………………………………………………… 1.3填埋场的防渗 1.3.1垃圾卫生填埋场的防渗系统……………………………………………………… 1.3.2渗滤液的产生与污染控制………………………………………………………… 1.3.3渗滤液的处理系统………………………………………………………………… 1.4垃圾填埋气及其利用 1.4.1垃圾填埋气的特点………………………………………………………………… 1.4.2填埋气体的利用…………………………………………………………………… 1.5垃圾卫生填埋场的运行管理 1.5.1拉圾卫生填埋场运行前的准备……………………………………………… 1.5.2垃圾填埋操作……………………………………………………………………… 1.5.3垃圾填埋辅助工程………………………………………………………………… 1.5.4垃圾填埋设备……………………………………………………………… 1.6垃圾卫生填埋场的封场及封场后维护……………………………………… 1.6.1填埋场封场………………………………………………………………………… 1.6.2填埋场封场后的维护……………………………………………………………… 1.6.3防洪、导排系统………………………………………………………………………总结及建议 1.7设计规与注意事项 1.8结论及建议 1.9参考文献 总体设计 2.1总体设计……………………………………………………………………… 2.2.1服务人口……………………………………………………………………………… 2.2.2人均垃圾日产生率……………………………………………………………………

法兰盘机械制造工艺学课程设计

序言 课程设计是我们在学完大学的全部课程后进行的.是我们对大学四年的学习的一次深入的综合性的总考核,也是一次理论联系实际的训练.这次设计使我们能综合运用机械制造工艺学中的基本理论,并结合实习中学到的实践知识.独立地分析和解决工艺问题,初步具备了设计一个中等复杂程度零件,床法兰盘的工艺规程的能力和运用夹具设计的基本原理和方法,拟订夹具设计方案,完成夹具结构设计的能力。也是熟悉和运用有关手册、图表等技术资料及编写技术文件等基本技能的一次实践机会。因此,它在我们大学生活中占有重要地位。就我个人而言,我也希望通过这次设计对自己未来将从事的工作进行一次适应性心理,从中锻炼自己分析问题,解决问题的能力。对未来的工作发展打下一个良好的基础。 第一章零件分析 一﹑零件的功用分析 题目所给的零件是法兰盘,法兰盘起联接作用是车床上的重要零件。 二﹑零件的工艺分析 从零件图看,法兰盘是一回转体零件,有一组加工表面,这一组加工表面以 mm为 φ200.045 中心,包括: 两个φ

艺工程、简化工艺装备结构与种类、提高生产效率。 1.粗基准的选择 选择粗基准主要是选择第一道机械加工工序的定位基准,以便为后续的工序提供精基准。选择粗基准的出发点是:一要考虑如何分配各加工表面的余量;二要考虑怎样保证不加工面与加工面间的尺寸及相互位置要求。这两个要求常常是不能兼顾的。但对于一般的轴类零件来说,以外圆作为粗基准是完全合理的。对本零件而言,由于每个表面都要求加工,为保证各表面都有足够的余量。应选加工余量最小的面为粗基准,这就是粗基准选择原则里的余量足够原则。现选取Φ45mm外圆柱面和端面作为粗基准。在车床上用带有子口的三爪卡盘夹住工件消除工件的六个自由度,达到完全定位。 2.精基准的选择 主要应该考虑基准重合的问题。当设计基准与工序基准不重合时,应该进行尺寸换算,这在以后还要专门计算,此处不在重复。 三、选择加工方法 1.面的加工 面的加工方法有很多,有车,铣,刨,磨,拉等。对于上下端面和Φ90距离轴线为24和30mm的2个平面,粗糙度要求较高。前者可以用车床车,后面可以用铣床铣,然后精沙精磨达到要求;后者在铣床洗后再到磨

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

C语言_算术表达式求值_代码

源代码: //用来存储字符的结点类型 typedef struct CharNode { char c; struct CharNode *next; }CharNode; //用来存储数的结点类型 typedef struct IntNode { long double i; struct IntNode *next; }IntNode; //用来存储数的结点类型 typedef struct Node { long double n; struct Node_ys_char *next; }Node; //用来存储运算符的结点类型 typedef struct Node_ys_char { char c; struct Node_ys_char *next_c; struct Node *next; }Node_ys_char; char Precede(char x,char y)//运算符优先级判断{ int i,j; int from[5][5] ={ {0,0,-1,-1,0}, {0,0,-1,-1,0}, {1,1,0,0,1},

{1,1,0,0,1}, {0,0,-1,-1,0} };//定义一个二维数组存放算术符号的优先级 switch(x) { case '+':i=0;break; case '-':i=1;break; case '*':i=2;break; case '/':i=3;break; case '#':i=4;break; } switch(y) { case '+':j=0;break; case '-':j=1;break; case '*':j=2;break; case '/':j=3;break; case '#':j=4;break; } if(from[i][j]==1)//说明运算符i的优先级比j的优先级高return '>'; if(from[i][j]==-1) return '<'; else return '='; } //输入表达式,并对特殊情况做处理 CharNode *CreatRegister() { CharNode *top,*p,*q,*e; top=(CharNode *)malloc(sizeof(CharNode)); p=q=top; scanf("%c",&p->c); scanf("%c",&p->c);

固废课设垃圾填埋场设计

固废课设垃圾填埋场设 计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

1.选址和计算 填埋场的选址总原则是应以合理的技术、经济方案,尽量少的投资,达到最理想的经济效益,实现保护环境的目的。必须加以考虑的因素有:运输距离、场址限制条件、可以使用的土地容积、入场道路、地形和土壤条件、气候、地表和水文条件、当地环境条件以及填埋场封场后场地是否可被利用。 (1)运输距离:运输距离是选择填埋场地的重要因素,对废物管理系统起着重要作用。尽管运输距离越短越好,但也要综合考虑其他各个因素。 (2)场址限制条件:场址至少应位于居民区1km(参照德国标准)以外或更远。 (3)可用土地面积:填埋场场地应选择具有充足的可使用面积的地方,以利于满足废物综合处理长远发展规划的需要,应有利于二期工程或其他后续工程兴建使用。尽管没有填埋场大小的法律规定,填埋场地也要有足够的使用面积,包括一个适当大小的缓冲带,并且一个场地至少要运行五年。 (4)出入场地道路:由于通常适合填埋场的场地不再城市已建的道路附近,因此,建设出入填埋场的道路和使用长距离的运输车成为填埋场选址的重要因素。 (5)地形、地貌及土壤条件:不宜选址在地形坡度起伏变化大的地方和低洼汇水处,原则上的地形的自然坡度不应大于5%。 (6)气候条件:填埋场场址的选择应考虑在温和季节的主导风向。 (7)地表水水文:所选场地必须在百年一遇的地表水域的洪水标高泛滥区或最大洪泛区之外,或应在可预见的未来建设水库或人工蓄水淹没和保护区之外。填埋场的场地必须是位于饮用水保护区、水体和洪水区之外,并且必须在春潮区之外、泥炭沉积超过1m 的沼泽区之外。还应建在地下水位以上。最佳的填埋场场址位置是在封闭的流域内,这对地下水资源造成的风险最小。 (8)地质和水文地质条件:场址应选在渗透性弱的松散岩层基础上,天然地层的渗透性系数最好能达到10-8m/s以下,并具有一定厚度。 (9)但地环境条件:填埋场场地位置选择,应在城市工农发展规划区、风景规划区、自然保护区之外;印在供水水源保护区和供水远景规划区之外;应具备较有利交通条件。 (10)地方公众:可通过自发的协议来达到,也可在废物处理合同中加以规定。 选址的程序 (1)资料搜集 (2)野外勘探 (3)预选场地的社会、经济和法律条件调查 (4)预选场地可行性研究报告 (5)预选场地的初堪工作 (6)预选场地的综合地质条件评价技术报告 (7)工程勘察阶段 地址的选定与所需容积 目前该城市人口70万,人口增长率%,垃圾填埋场服务年限为20年,覆土与垃圾压实之比为1:5,填埋高度为10m,地上3m,地下7m,取W为0.6kg/d*人,垃圾增长速率%。该地区主导风向为西北风,因此生活和管理设施宜集中布置并处于夏季主导风向的上风向,即垃圾填埋场的西北角,以减少对人们的影响。 每年所需的场地体积为: 第n年人口=70*(1+)n 单位:万

机械制造工艺学课程设计实例

~ 机械制造工艺学课程设计任务书 设计题目:拨叉(二)(CA6140) 机械加工工艺规程编制及工装设计(年产量:4,000件) 设计内容: 1.编制机械加工工艺规程,填写工艺文献1套,绘 制零件毛坯图1张 2.设计夹具1套,绘制夹具装配图和主要结构零 件 图各1张 " 3.撰写课程设计说明书1份 设计时间: [

前言 机械制造工艺学课程设计是在我们完成了大学的全部基础课程、技术基础课以及大部分专业课之后进行的。通过机床加工工艺及夹具设计,汇总所学专业知识如一体(如《机械零件设计》、《金属切削机熟悉与理解,并为以后的实际工作奠定坚实的基础!床》、《机械制造工艺》等)。让我们对所学的专业课得以巩固、复习及实用,在理论与实践上有机结合;使我们对各科的作用更加深刻的 设计目的: 机械制造工艺学课程设计,是在学完机械制造工艺学及夹具设计原理课程,经过生产实习取得感性知识后进行的一项教学环节;在老师的指导下,要求在设计中能初步学会综合运用以前所学过的全部课程,并且独立完成的一项工程基本训练。同时,也为以后搞好毕业设计打下良好基础。通过课程设计达到以下目的: ; 1、能熟练的运用机械制造工艺学的基本理论和夹具设计原理的知识,正确地解决一个零件在加工中的定位,夹紧以及合理制订工艺规程等问题的方法,培养学生分析问题和解决问题的能力。 2、通过对零件某道工序的夹具设计,学会工艺装备设计的一般方法。通过学生亲手设计夹具的训练,提高结构设计的能力。

3、课程设计过程也是理论联系实际的过程,并学会使用手册、查询相关资料等,增强学生解决工程实际问题的独立工作能力。 一.零件的分析 (一)、零件的作用: 题目给定的拨叉(CA6140)位于车床变速机构中,主要起换挡使主轴回转运动按照工作者的要求进行工作。工作过程:拨叉零件是在传动系统中拨动滑移齿轮,以实现系统调速。转向。其花键孔?25与轴的配合来传递凸轮曲线槽传来的运动。零件的2个交叉头补位与滑移齿轮相配合。 — (二)、零件的工艺分析 CA6140车床拨叉(二)共有两个加工表面,它们之间有一定的位置

Windows下的计算器设计说明书

课程设计说明书Windows环境下的计算器 学院名称:机械工程学院 专业班级:测控0901 学生姓名:李彧文 指导教师姓名:张世庆 指导教师职称:副教授 2011年6月

摘要

课程设计任务书 Windows环境下的计算器 一、课程设计题目:设计一个windows附件中所示的计算器 二、目的与要求: 1、目的: (1)要求学生达到熟练掌握C++语言的基本知识和C++调试技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)求利用面向对象的方法以及C++的编程思想来完成系统的设计; (2)要求在设计的过程中,对windows环境下的编程有一个基本的认识。 3、创新要求: 在基本要求达到后,可进行创新设计,如增加计算器的函数功能。 4、写出设计说明书 按照设计过程写出设计说明书。 三、设计方法和基本原理: 1、问题描述(功能要求): 要求所编写的计算器能够完成基本的加、减、乘、除运算,类似于Windows下附件中的计算器。 2、问题的解决方案(参考): 根据题目的要求,可以将问题解决分为以下步骤: (1)完成界面的设计,要求界面要美观实用; (2)添加成员变量和成员函数(消息映射函数); (3)利用结构化程序的设计思路完成按键的判断和数据的移位以及计算功能; (4)程序功能调试; (5)完成系统总结报告以及系统使用说明书。

四、程序设计和调试: 五、答辩与评分标准: 1、完成基本功能:40分; 2、设计报告及使用说明书:30分; 3、设置错误或者按照要求改变结果:15分; 4、回答问题:15分。

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

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

固废垃圾填埋场课程设计报告书

固废处理课程设计说明书 1010741217 杨菁全一、绪论 (一)服务人口数、生活垃圾产量及特点 上海市奉贤区2012年人口共计112.99万人,根据上海市奉贤区人口调查历年人口调查情况,以6%的人口增长率递增,到2030年有322.51万人左右,按人均垃圾产生量为0.89 kg/(人?d),且该值在15年内保持变化不大,则15年间奉贤区生活垃圾产量为1069.11 万吨。 服务面积人口采用下式计算: \A n=A o x(i + py 式中: A n――第n年的服务人口数,人 A。一一初始服务人口是,人(本区初始服务人口数A0为112.99万人) P ――机械增长率(根据上海奉贤市人口调查历年人口,本次设计中,增长率为6% ) n ------ 第n年,年 历年人口计算结果如下:

其中年的数据明显高于其他年份的原因: 1上海应用技术学院新校区建成,来了很多师生。 2外来人口占了总人口的48.7%,外来人口的增多导致总人口的增多。 预测人口增长率为6%,其原因: 1外来人口显逐年递增的趋势,由于务工经商,工作调动,学习培训,随迁家属,婚姻 婚嫁等原因来此居住的人越来越多 2南桥新城是上海市"十二五"期间重点推进建设的三大新城之一,规划人口为75万,

预计南桥新城建成后将会有更多的入住奉贤。 3随着高校的扩招,学校师生人口数将会增加。 4十八届三中全会提出开放单独二胎的新政策实行后,会有更多的新生儿,人口数量随之增加。 垃圾产生量采用下式计算: Wn= (An a)/1000 式中: Wn ――第n年的日产垃圾量,t/d a ------ 第n年的垃圾人均日产率,kg/(d ? p)

机械制造工艺学课程设计实例

机械制造工艺学课程设计任务书 设计题目:拨叉(二)(CA6140) 机械加工工艺规程编制及工装设计(年产量:4,000件) 设计内容: 1、编制机械加工工艺规程,填写工艺文献1套,绘制零件毛坯图1张 2、设计夹具1套,绘制夹具装配图与主要结构零 件 图各1张 3、撰写课程设计说明书1份 设计时间: 前言

机械制造工艺学课程设计就是在我们完成了大学的全部基础课程、技术基础课以及大部分专业课之后进行的。通过机床加工工艺及夹具设计,汇总所学专业知识如一体(如《机械零件设计》、《金属切削机熟悉与理解,并为以后的实际工作奠定坚实的基础!床》、《机械制造工艺》等)。让我们对所学的专业课得以巩固、复习及实用,在理论与实践上有机结合;使我们对各科的作用更加深刻的 设计目的: 机械制造工艺学课程设计,就是在学完机械制造工艺学及夹具设计原理课程,经过生产实习取得感性知识后进行的一项教学环节;在老师的指导下,要求在设计中能初步学会综合运用以前所学过的全部课程,并且独立完成的一项工程基本训练。同时,也为以后搞好毕业设计打下良好基础。通过课程设计达到以下目的: 1、能熟练的运用机械制造工艺学的基本理论与夹具设计原理的知识,正确地解决一个零件在加工中的定位,夹紧以及合理制订工艺规程等问题的方法,培养学生分析问题与解决问题的能力。 2、通过对零件某道工序的夹具设计,学会工艺装备设计的一般方法。通过学生亲手设计夹具的训练,提高结构设计的能力。 3、课程设计过程也就是理论联系实际的过程,并学会使用手册、查询相关资料等,增强学生解决工程实际问题的独立工作能力。 一.零件的分析

(一)、零件的作用: 题目给定的拨叉(CA6140)位于车床变速机构中,主要起换挡使主轴回转运动按照工作者的要求进行工作。工作过程:拨叉零件就是在传动系统中拨动滑移齿轮,以实现系统调速。转向。其花键孔?25与轴的配合来传递凸轮曲线槽传来的运动。零件的2个交叉头补位与滑移齿轮相配合。 (二)、零件的工艺分析 CA6140车床拨叉(二)共有两个加工表面,它们之间有一定的位置要求。 1、一花键孔的中心线为基准的加工面 这一组面包括?25H7的六齿方花键孔、?22H2的花键低空及两

单片机简易计算器课程设计

课程设计 题目名称简易计算器设计 课程名称单片机原理及应用 学生姓名 班级学号 2018年6 月20日

目录 一设计目的 本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。软件方面使用C语言编程,并用PROTUES仿真。 二总体设计及功能介绍 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机,实现对计算器的设计。具体设计及功能如下: 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED显示数据和结果; 另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘; 执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。

三硬件仿真图 硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。 四主程序流程图 程序的主要思想是:将按键抽象为字符,然后就是对字符的处理。将操作数分别转化为字符串存储,操作符存储为字符形式。然后调用compute()函数进行计算并返回结果。具体程序及看注释还有流程图 五程序源代码 #include #include #include/* isdigit()函数*/ #include/* atoi()函数*/ #define uchar unsigned char #define uint unsigned int

表达式求值程序设计说明书

汇编语言实训课程设计任务书 题目:表达式求值程序班级:计算机科学与技术一班 学生姓名:赵旭尧学号: 14730141 题目类型:软件工程(R)指导教师:刘树群 一.题目简介 该设计要求学生使用汇编语言,设计并开发出针对四则运算表达式进行求 值的命令行或窗口程序。 通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇 编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进 行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 得到软件工程的综合训练,提高解决实际问题的能力。 二.设计任务 1、查阅文献资料,一般在5篇以上; 2、通过键盘输入表达式,进行针对整数的“加减乘除”四则运算表达式 进行求值,有良好的界面; 3、完成软件结构设计和算法设计; 4、完成系统的软件开发和测试工作; 5、撰写设计说明书; 6、做好答辩工作。 三.主要内容、功能及技术指标 1、实现功能及指标:①使用Win32的窗口程序模式,实现表达式求值程序 及测试界面程序的设计与开发;②支持整数的四则运算、位运算和小括号等; ③使用文本框对表达式进行交互式编辑和输出。 2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求 做什么。在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结 构清晰、合理、简单和易于调试。最后确定每个过程和函数的简单功能,以及 过程(或函数)之间的调用关系,并画出函数之间的调用关系图。 3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出 流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200 行,否则要进一步划分。

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