1、数据结构课程设计利用栈求表达式的值可供小学生作业并能给出分数湖 南 工 学 院数据结构课程设计报告班级学号:姓名:摘 要 设计题目:利用栈求表达式的值,可供小学生作业,并能给出分数主要内容:设计一个小学生自测程序,能输入一个表达式后,由学生输入结果,再与正确答案对比。1需求分析1.1 输入形式,数值范围 直接输入数学表达式,回车。本程序可以使用0到9以及加减乘除等运算符包括()。1.2 任务与分析 建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价2 程序运行平台Microsoft Visual C+ 6.0
2、具体操作如下:1.源程序的编辑在Visual C+ 6.0开发环境下编辑一个简单、完整的C+程序,这是开发各种软件必须进行的软件开发过程。2.源程序的编译、连接与运行在Visual C+ 6.0环境下,对任务1所编辑的C+源程序进行编译、连接和运行,观察程序的执行过程和个变量的值。3.Debug调试功能对任务1所完成的源程序设置若干断点,掌握Visual C+ 6.0环境下断点的设置与取消方法,在Debug调试状态下,学习程序调试的各种相关方法,并通过Debug状态下的Variable窗口和Watch装口观察成粗的执行过程和结果。3 概要设计3.1程序运行结构图4 详细设计4.1详细设计思想
3、首先建立三个文件,分别为shujuku.txt,markrec.txt,n_rec.txt。其中shujuku.txt中存放试题;markrec.txt存放历史分数;n_rec.txt存放总共测试次数。创建试题库模块:首先在主函数中调用创建试题库函数,将试题存入到试题库文件shitiku.txt中,然后将该调用从主函数中删除。创建试题库函数:创建指向xuanti类型的指针,利用循环将输入的测试题该指针的xuanti单元中,最后将该指针中的测试题写入试题库文件shitiku.txt中。试题测试模块: 试题计算:建立两个栈,分别存放数字、运算符,建立一个二维数组,存放任意两个运算符之间的优先级关系
4、,通过比较符号栈中后两个运算符的优先级关系,决定数字栈中后两个数据是直接入栈还是运算之后入栈,最后在数字栈中得到最后的运算结果。 通过比较用户输入的结果与程序计算的结果来决定测试者的分数mark是否加分,测试完成时,将分数mark写入记录分数文件markrec.txt中,并将总共的测试次数记录如n_rec.txt中。查看历史分数模块: 通过查看n_rec.txt中总共的测试次数n,得到markrec.txt中n个历史分数,将结果显示个用户。随时退出模块: 测试完或将查看历史分数后,按任意键将返回到菜单,菜单中输入0即可退出。4.2 本程序定义的数据结构typedef struct shiti
5、/*定义表达式*/ char a20; /*存放表达式*/ long result; /*存放用户输入的答案*/xuanti;typedef struct SqStack1 /*建立数字栈*/ int *base; int *top; int stacksize;SqStack1; typedef struct SqStack2 /*建立运算符栈*/ char *base; char *top; int stacksize;SqStack2;4.3程序运行原理图4.4 测试模块测试模块的流程图为图所示:4.5 历史成绩查询模块历史成绩查询模块的流程图为图所示:开始选择历史成绩查询程序给出历次测
6、试成绩,并根据成绩给出评价。结束4.6主函数与菜单函数模块主函数与菜单函数模块的源代码为:void main() int m=0; int *RN; char ch;RN=(int *)malloc(1*sizeof(int); RN0=0; system(cls); /*清屏*/ LookN(RN,1); RN0+=m; fflush(stdin); menu: page_title(); /*输出菜单*/ RN0+=m; m=0; switch(getch() case 1 : m=excersice_begin(); break; case 2 : Look_Mark(RN0); bre
7、ak; case 0 : RecN(RN,1); exit(0); system(cls); goto menu;5 调试分析本程序定义函数较多,调试时特别注意各个函数的调用。处学会灵活的运用F10和F11的调试功能,就能达到事半功倍的效果。6 测试结果6.1 开始菜单此时选择1直接开始测试,选择2则查看历史分数,选择0退出程序。6.2 选择1 开始测试举例如下: 填入答案221,结果如下:接着进行完本次测试:做完全部题目后得出得分,并有评价给出6.3 此时选Y继续测试选N则回到主菜单:6.4 选择2查看历史得分及评价本次测试结果检验了该程序的功能和效果7 结论对本程序的总结自己掌握的只是不是很牢固,有很多的只是都是很模糊的,都很模棱两可的,对自己的只是不是有很大信心。做完这个程序,发现设局结构有很多东西需要自己深入学习,翻阅资料很重要。本次使用的工具主要是Microsoft Visual C+ 6.08 附录。源代码及程序见光盘Welcome ToDownload !欢迎您的下载,资料仅供参考!
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2