利用栈求表达式的值设计说明书_第1页
利用栈求表达式的值设计说明书_第2页
利用栈求表达式的值设计说明书_第3页
利用栈求表达式的值设计说明书_第4页
利用栈求表达式的值设计说明书_第5页
已阅读5页,还剩61页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数学与计算机学院课程设计说明书课 程 名 称:数据结构与算法 B-课程设计课 程 代 码: 6013799 题 目: 利用栈求表达式的值 年级/专业/班: 2011 级计科 2 班 学 生 姓 名: 李念 学 号: 312010080605224 开 始 时 间: 2011 年 12 月 6 日完 成 时 间: 2011 年 12 月 21 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5) 说明书撰写质量(45) 总 分(100)利用栈求表达式的值II指导教师签名: 年 月 日西华大学数计学院课程设计说明书I目 录 1 引 言. 11.1 问题的提出. 11.2 国内外研究现状. 11.5 任务与分析.12 程序的主要功能. 12.1 创建试题库.12.2 试题测试.12.3 查看成绩单. 12.4 随时退出. .23 程序运行平台. 24 总体设计. 25 模版分析. 35.1 创建试题库模块. 35.2 试题测试模块. 55.3 查看成绩单模块. 利用栈求表达式的值II135.4 随时退出模块. 156 系统测试. 157 结论. 17附录. 19参考文献. 331百手起驾 整理为您1 引 言 1.1 问题的提出现在电脑已越来越普及,小学生也开始用电脑了,为了使电脑能对小学生的学业有帮助,那么设计一个算术题测试软件显得非常有必要。1.2 国内外研究的现状 该技术已比较成熟。1.5 任务与分析任务是一个表达式求值的问题,我们要求利用数据结构中栈的知识,并结合 C+语言中的文件操作,完成相关功能。此任务我们可以看做有两条主线贯穿其中,一是表达式求值的算法,这是用来求解我们输入的表示的的值;二是文件操作,是用来完成出试题的功能。如果这两个问题解决了,整个任务就基本解决。2 程序的主要功能2.1 创建试题库创建一个 xitiku.txt 文件,用于存放若干道试题。其中试题由人事先输入好。2.2 试题测试及对小学生进行测试。系统出一道题,学生输入答案。然后系统将输入的答案和正确的答案比较,从而进行相关判断以及打分。2.3 查看成绩单能够查看学生已做题的相关信息,及成绩单。2.4 随时退出允许学生随时退出程序。3 程序运行平台VC+6.0。具体操作如下:新建一个工程,添加相应的源文件,再编译,链接,执行等。4 总体设计整体设计模块图可以清晰的看出软件的几大模块。整个系统的操作流程图可以看出操作的整体流程,如下图:利用栈求表达式的值创建试题库试题测试查看成绩单随时退出3百手起驾 整理为您5 模版分析5.1 创建试题库学生要进行测试,首先要有试题。那么我们就要先建立试题库。这个试题库的试题是我们在事先已输入的很多道题,存放在一个xitiku.txt 的文件中。首先在主函数中调用试题测试函数 Expression(),试题测试函数中会调用创建试题库函数 xitiku(char a,int n)。创建试题库函数:函数中用到文件操作,文件事先已存放了很多的试题。定义一个存放试题的结构体数组用于存放文件中的每一道题,然后调用系统自带的产生随机数的函数 srand(time(0),让函数产生的开始结束菜单选择试题测试查看成绩单输入 A 输入 B 输入 C 这个数作为试题结构体数组的脚码,从而就可以随机的输出试题库的一道题。该功能的部分程序如下:struct Ti /该结构体用于存储每一道试题char chh30;void xitiku(char a,int n)int TIME,T;Ti t100=0;char ch30=0;int i;ifstream file;file.open(“D:xitiku.txt“);if(!file)cout“打开习题库文件失败!“endl;exit(0);i=0;while(!file.eof()file.getline(ch,50); /读取一行strcpy(ti.chh,ch); /把读取的字符串复杂给结构体中 chh 中i+;srand(time(0); /产生一个随机数5百手起驾 整理为您TIME=rand()%78;T=TIME; /把随机数作为脚码int j=0;while(tT.chhj!=#) couttT.chhj;j+;cout=;strcpy(a,tT.chh);file.close();5.2 试题测试完成试题测试我们要涉及试题的计算的问题。试题计算:建立两个栈,分别存放数字、运算符(R 栈和 D 栈) 。初始化操作数栈和算符栈,表达式起始符“#”为算符栈的栈底元素;自左向右扫描表达式,若是操作数则进操作数栈,若是算符则和算符栈的栈顶运算符比较优先权后进行相应的操作,直至整个表达式求值完毕(即 R 栈的栈顶元素和当前读入的字符均为“#” ) 。通过比较用户输入的结果与程序计算的结果来判断结果是否错误,并统计做了几道题,对了几道题,错了几道题,得了多少分,以及对分数给出评价。其中给分数做评价用函数 pingjia(int m) 。相关程序如下:int In(char c) /判断字符是否为运算符int m=0,i;char OP7=+,-,*,/,(,),#;for(i=0;i7;i+)if(c=OPi)m+;if(m=0)return 0;elsereturn 1;int change(char x) /把运算符变为相应的数字int a;switch(x)case +: a=0;break;case -: a=1;break;case *: a=2;break;case /: a=3;break;case (: a=4;break;case ): a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论