数据结构课程设计利用栈求表达式的值可供小学生作业并能给出分数.docx
- 文档编号:1339679
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:11
- 大小:265.04KB
数据结构课程设计利用栈求表达式的值可供小学生作业并能给出分数.docx
《数据结构课程设计利用栈求表达式的值可供小学生作业并能给出分数.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计利用栈求表达式的值可供小学生作业并能给出分数.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构课程设计利用栈求表达式的值可供小学生作业并能给出分数
湖南工学院
数据结构课程设计报告
班级
学号:
姓名:
摘要
设计题目:
利用栈求表达式的值,可供小学生作业,并能给出分数
主要内容:
设计一个小学生自测程序,能输入一个表达式后,由学生输入结果,再与正确答案对比。
1需求分析
1.1输入形式,数值范围
直接输入数学表达式,回车。
本程序可以使用0到9以及加减乘除等运算符包括()。
1.2任务与分析
建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价
2程序运行平台
MicrosoftVisualC++6.0
具体操作如下:
1.源程序的编辑
在VisualC++6.0开发环境下编辑一个简单、完整的C++程序,这是开发各种软件必须进行的软件开发过程。
2.源程序的编译、连接与运行
在VisualC++6.0环境下,对任务1所编辑的C++源程序进行编译、连接和运行,观察程序的执行过程和个变量的值。
3.Debug调试功能
对任务1所完成的源程序设置若干断点,掌握VisualC++6.0环境下断点的设置与取消方法,在Debug调试状态下,学习程序调试的各种相关方法,并通过Debug状态下的Variable窗口和Watch装口观察成粗的执行过程和结果。
3概要设计
3.1程序运行结构图
4详细设计
4.1详细设计思想
首先建立三个文件,分别为shujuku.txt,markrec.txt,n_rec.txt。
其中shujuku.txt中存放试题;markrec.txt存放历史分数;n_rec.txt存放总共测试次数。
①创建试题库模块:
首先在主函数中调用创建试题库函数,将试题存入到试题库文件shitiku.txt中,然后将该调用从主函数中删除。
创建试题库函数:
创建指向xuanti类型的指针,利用循环将输入的测试题该指针的xuanti单元中,最后将该指针中的测试题写入试题库文件shitiku.txt中。
②试题测试模块:
试题计算:
建立两个栈,分别存放数字、运算符,建立一个二维数组,存放任意两个运算符之间的优先级关系,通过比较符号栈中后两个运算符的优先级关系,决定数字栈中后两个数据是直接入栈还是运算之后入栈,最后在数字栈中得到最后的运算结果。
通过比较用户输入的结果与程序计算的结果来决定测试者的分数mark是否加分,测试完成时,将分数mark写入记录分数文件markrec.txt中,并将总共的测试次数记录如n_rec.txt中。
③查看历史分数模块:
通过查看n_rec.txt中总共的测试次数n,得到markrec.txt中n个历史分数,将结果显示个用户。
④随时退出模块:
测试完或将查看历史分数后,按任意键将返回到菜单,菜单中输入0即可退出。
4.2本程序定义的数据结构
typedefstructshiti/*定义表达式*/
{
chara[20];/*存放表达式*/
longresult;/*存放用户输入的答案*/
}xuanti;
typedefstructSqStack1/*建立数字栈*/
{
int*base;
int*top;
intstacksize;
}SqStack1;
typedefstructSqStack2/*建立运算符栈*/
{
char*base;
char*top;
intstacksize;
}SqStack2;
4.3程序运行原理图
4.4测试模块
测试模块的流程图为图所示:
4.5历史成绩查询模块
历史成绩查询模块的流程图为图所示:
4.6主函数与菜单函数模块
主函数与菜单函数模块的源代码为:
voidmain()
{
intm=0;
int*RN;
charch;
RN=(int*)malloc(1*sizeof(int));
RN[0]=0;
system("cls");/*清屏*/
LookN(RN,1);
RN[0]+=m;
fflush(stdin);
menu:
page_title();/*输出菜单*/
RN[0]+=m;
m=0;
switch(getch())
{
case'1':
m=excersice_begin();
break;
case'2':
Look_Mark(RN[0]);
break;
case'0':
{
RecN(RN,1);
exit(0);
}
}
system("cls");
gotomenu;}
5调试分析
本程序定义函数较多,调试时特别注意各个函数的调用。
处学会灵活的运用F10和F11的调试功能,就能达到事半功倍的效果。
6测试结果
6.1开始菜单
此时选择1直接开始测试,选择2则查看历史分数,选择0退出程序。
6.2选择1开始测试
举例如下:
填入答案221,结果如下:
接着进行完本次测试:
做完全部题目后得出得分,并有评价给出
6.3此时选Y继续测试
选N则回到主菜单:
6.4选择2查看历史得分及评价
本次测试结果检验了该程序的功能和效果
7结论
对本程序的总结
自己掌握的只是不是很牢固,有很多的只是都是很模糊的,都很模棱两可的,对自己的只是不是有很大信心。
做完这个程序,发现设局结构有很多东西需要自己深入学习,翻阅资料很重要。
本次使用的工具主要是MicrosoftVisualC++6.0
8附录。
源代码及程序见光盘
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 利用 表达式 值可供 小学生 作业 给出 分数