数据结构课设

目录

一.算术表达式求解

1.需求分析

2.逻辑设计

3.物理设计

二.校园导航咨询

1.需求分析

2.逻辑设计

3.物理设计

三.计算机设计大赛赛事统计

1.需求分析

2.逻辑设计

3.物理设计


一.算术表达式求解

实现标准整数类型的四则运算表达式的求值(包含括号,可多层嵌入).

1.需求分析

    要把一个表达式翻译成正确求值的一个机器指令序列,或者直接对表达式求值,首先要正确解释表      达式。表达式求值应按照下述算术四则运算法则来进行运算

(1) 先乘除,后加减;(2) 从左算到右; (3) 先括号内,后括号外。

        1. 能通过设计的按钮控件输入并实现算术表达式,运算结果输出显示;

        2.能够检验算术表达式的合法性;

        3.能够实现混合运算的求解,算术表达式中包括加、减、乘、除、括号等运算符;

        4.要求交互界面友好,程序健壮。

2.逻辑设计

     算符优先算法思想
    1)首先置操作数栈OPND为空栈,再置操作符(运算符)栈OPTR为空栈,然后将表达式起始符“#”作为运算符栈的栈底元素。
    (2)依次读入表达式中每个字符,若是操作数,则进OPND栈;若是运算符,
    运算符栈OPTR的栈顶运算符比较优先级后作相应操作,直至整个表达式求值完毕。

调用关系图

主要函数

int isoperator(char ch) //检查字符ch是否为运算符或左右圆括号的函数
int iswhitespace(char ch) // 检查字符ch是否为空格、制表符或换行符的函数
int order(char op) // 将运算符号内部赋数字值的函数
void Evaluate(char op) //
void CalAnyExp() // 根据操作符进行计算的函数

3.物理设计

   

  1. 先定义一个顺序栈MyStack,并设有Push(),Pop(),GetTop()和InitStack()操作,使用栈模板。
  2. 开始进行操作,首先向初始化的字符栈中存入一个“#”用于以后判断计算是否结束,在初始化一个数据栈存放整型数据,并返回相应的字符,若不是操作符,则判断是否是整型,若是则先将整型的每个字符一次存入数组,最后转成整型存入数据栈顶,若不是,说明输入的字符不合法,则提示错误。当判断到最后一个字符是“#“时,停止接受字符转而调用operate()函数先进行数据和操作符的出栈操作
  3. {
    	char* p = NULL;
    	char numtmp[16];
    	int state = OK, rtn;
    
    	cout << "算术表达式求值\n"
    		<< "请输入表达式(输入首字符为'#'时退出程序):";
    
    MAINLOOP:
    	while (true)
    	{
    		state = OK;
    		countS = 0;
    		if (ERROR == InitProcess())		//初始化 
    		{
    			Message(0, ERROR, "初始化失败。");
    		}
    
    		p = &input[0];
    		countS++;
    		if (input[0] == '#')	//首个字符为#时退出程序 
    		{
    			break;
    		}
    
    		if (!CheckExpress())			
    		{
    			continue;
    		}
    
    		while ('#' != *p || '#' != OPTR.GetTop())	
    		{
    	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值