计算器程序设计-数据结构课程设计指导书Word格式.docx

上传人:b****1 文档编号:13195706 上传时间:2022-10-08 格式:DOCX 页数:25 大小:178.76KB
下载 相关 举报
计算器程序设计-数据结构课程设计指导书Word格式.docx_第1页
第1页 / 共25页
计算器程序设计-数据结构课程设计指导书Word格式.docx_第2页
第2页 / 共25页
计算器程序设计-数据结构课程设计指导书Word格式.docx_第3页
第3页 / 共25页
计算器程序设计-数据结构课程设计指导书Word格式.docx_第4页
第4页 / 共25页
计算器程序设计-数据结构课程设计指导书Word格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

计算器程序设计-数据结构课程设计指导书Word格式.docx

《计算器程序设计-数据结构课程设计指导书Word格式.docx》由会员分享,可在线阅读,更多相关《计算器程序设计-数据结构课程设计指导书Word格式.docx(25页珍藏版)》请在冰豆网上搜索。

计算器程序设计-数据结构课程设计指导书Word格式.docx

1、能力培养要求

①巩固和加深对数据结构的理解,提高综合运用本课程所学知识的能力。

②培养学生选用参考书,查阅手册及文献资料的能力。

培养独立思考,深入研究,分析问题、解决问题的能力。

③过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法

④够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。

⑤通过课程设计,培养学生严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。

2、学生提交课程设计报告要求

1)设计题目

24

2)设计目的

3)设计内容

4)程序流程图

5)源程序

6)软件测试报告(包括所用到的数据及结果)

三、课程设计的基本步骤和方法

1、学生以自学为主,独立完成设计任务,注重学生能力的培养。

2、教师要注意按学生基础和能力提出要求,辅导时要有侧重,做到因材施教。

对基础差的学生要勤检查多指导,对能力强的学生应提出更高的要求,增加些选作内容,充分发挥其潜力。

3、教师要教书育人。

要求学生从点滴开始,每步操作都要按规定去做,以培养严肃认真的科学态度。

选定方案要考虑经济效益,坚持勤俭节约的原则。

要教育学生团结协作,遵守纪律,爱护公物。

通过设计提高业务能力,提高思想觉悟。

4、课程设计安排

①教师下达设计任务书

任务书内容包括题目、主要技术指标和要求、给定条件及原始数据、所用仪器设备和参考资料及文献等。

教师讲授必要的设计思路和设计方法。

②生完成预设计

本阶段学生应明确任务,查阅资料及文献(主要自学),掌握工程设计基本方法,确定设计方案,进行设计分析,完成预设计。

③实验阶段

经教师审查通过预设计方案后,即可进行编程调试。

实验由学生独立完成,教师定时指导。

④设计总结阶段

本阶段学生要认真完成课程设计报告书,整理技术资料,如有需要还应写出课程设计的心得体会和改进意见。

课程设计报告书包括:

设计任务及主要技术指标、设计方案及论证结果、系统的原理框图、设计程序、实验结果、实验中主要问题及故障现象的分析及设计结论等。

报告书中还应附实验数据、系统软硬件环境、使用说明及参考资料等。

郑州轻工业学院

课程设计任务书

题目 模拟计算器的程序

专业、班级 计算机科学与技术10-01

学号541007010157 姓名 郑峰弓

主要内容、基本要求、主要参考资料等:

主要内容:

设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。

设计要求:

要检查有关运算的条件,并对错误的条件产生报警。

参考资料:

C++.C语言程序设计,数据结构(c语言版)

完 成 期 限:

2012-6-21

指导教师签名:

课程负责人签名:

2012年 6 月 21 日

郑州轻工业学院本科

数据结构课程设计总结报告

设计题目:

模拟计算器的程序学生姓名:

郑峰弓

系别:

计算机科学与工程专业:

计算机科学与技术班级:

10级1班

学号:

541007010157

指导教师:

卢冰李晔

2012年6月 21日

一、 设计题目(任选其一)

模拟计算器的程序

要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解。

二、 运行环境(软、硬件环境)

WindowXP环境下运行

三、 算法设计的思想

本程序采用栈的算法设计思想,为了实现算符优先算法,首先建立两个栈,一个字符型栈YF,用于存储运算符,一个浮点型栈YS,用于存储运算数据。

算法的基本思想:

1.建立两个空栈,将表达式起始符“\n”为运算符压入栈底

2.顺序读取每个字符,每次读取判断是运算符还是数据,若是运算符则和运算符栈YF的栈顶元素进行优先性的比较,做相关的操作,若是数据符,将一个连续的数字字符读入到一个字符数组中,将这个字符数组,通过atof()函数将字符串转化成浮点型数据,然后将这个浮点数据压入YS数据栈,知道整个表达式读取完毕。

四、 算法流程图

五、 算法设计分析

1.建立的两个栈,栈的操作方法都包括栈的建立InitStack(),入栈函数Push(),取栈顶元素函数GetTop(),

出栈函数Pop(),判断是否是空栈函数StackEmpty(),两个栈分别进行运算符和运算数的相关操作。

2.对于一个表达式,进行求值应满足以下运算规则:

先算乘除,后算加减;

从左到右依次计算,先算括号里面的,后算括

号外面的,遇到绝对值运算符A(A代表abs的缩写,表示进行绝对值运算,形式是(4-9)A 运算结果是5.00),和运算符S(S代表sqrt的缩写,表示进行开放运算形式是

(2)S 运算结果是1.41),A和S的优先性是比“)”的优先性低一级。

开方和取绝对值时一定要注意输入格式(表达式)A和(表达式)S。

3.运算符的游行先比较。

Precede(chars1,chars2)比较两个字符的优先性,若是S1的优先级高于S2的优先性,则返回‘>

’,若是S1的优先级高于S2的优先性,则返回‘<

’,若是两个字符的优先级相同,则返回‘=’,该函数中包括括号匹配问题,就是括号必须成对出现,若是不成对出现,将提示括号不匹配

4.合法运算符的判断Put()函数,只要是输入的运算符是‘+’‘-

’‘*’‘/’‘A’‘S’ ,若是以上运算符Put()函数返回ture

否则返回false

5.本程序还右容错处理,

(1)栈空的时候将会提示空栈,计算机将响一下短笛退出系统

(2)当遇到不合法字符,不是英文的字符,括号不匹配问题,计算机将响一下短笛退出系统(3)输入的表达式不符合数学运算比如:

除数不能为0,开方的不能为负数,若是计算机将响一下短笛退出系统

6.本程序优好的操作界面,主界面将会提示你能输入的运算符和运算数,每次运算一个表示结果是,系统将会提醒 是否继续操作,按

Y键,表示继续进行表达式的运算,按N键计算机将响一下短笛退出系统。

六、 运行结果分析

图1.

图1表示,运行窗口的主界面,界面中提示你能输入的运算符和运算数的,防止用户输入不正确的字符,造成系统报错。

图2.

图2表示加法运算

图3.

图3,表示减法运算

图4,

图4,表示单独的除法运算

图5

图5,表示单独的乘法运算

图6,

图6,表示取绝对值运算

图7

图7,表示开方运算

图8

图8,表示绝对值和开方的混合运算

图9,

图9,表示加减乘除的混合运算,按其优先性进行运算,

程序将一个个的获取表达式的字符,按照字符的顺序,字符的优先性进行相关的操作,每次读取进行判断,将字符按类别分别压入栈内。

图10

图10,表示混合运算的级取绝对值和开方运算

图11

图11,表示缺少左括号问题,报错后直接退出系统退出时计算机将给出一声短笛

图12,

图13

图12,表示不符合数学运算(除数不能为0),图13,表示开方数不能为负数,报错后直接退出系统,退出时计算机将给出一声短笛

图14

图14,表示运行表达式后退出系统的操作,退出时计算机将给出一声短笛

七、 收获及体会

本次课程设计的时间虽然很短,但是感觉收获颇深的。

首先,对本学期所学的数据结构课程再次加深理解。

这次我选择的课程设计的题目是 模拟计算器的程序,程序设计采用栈的算法结构,当初学的时候感觉栈就是一种操作,没用真正感觉到它的用处,但是,这次让我深深地感觉到栈的强大的功能,再次加深了对栈的理解。

其次,自己的能力也有很大的提高。

第一是分析问题的能力,给一道题目,能很快的写出算法分析,知道用哪些和不用哪些,先设计整体算法,在进行细节算法。

第二是解决问题的能力,写好程序要进行方法调试,总要出错的,运用所学的知识逐个解决问题。

最后,同时也查到自己的不足之处,感觉也是大家的不足之处,平时的只靠老师布置的作业题来训练自己,是远远不够的,我们学计算机的平时应该多做一些练习,才能在最后在做课程设计时,不会手忙脚乱。

还有就是,希望学校多给我们一些实践的环节。

附代码:

#include<

stdio.h>

#include<

stdlib.h>

math.h>

malloc.h>

process.h>

ctype.h>

#define MAX20

#define STACKSIZE 5

//建立两个栈,一个运算符栈和一个操作数栈typedefstruct

{

char *base;

char*top;

int stacksize;

}Qstack;

typedefstruct

double *base;

double*top;

int stacksize;

}SQstack;

//建立一个栈(字符型)用于存储运算符voidInitStack(Qstack&

S)

S.base=(char*)malloc(MAX*sizeof(char));

S.top=S.base;

S.stacksize=MAX;

}

void Push(Qstack&

S,chare)//元素入栈

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1