当前位置:文档之家› 利用栈求表达式的值,可供小学生作业,并能给出分数数据结构课程设计说明书格式

利用栈求表达式的值,可供小学生作业,并能给出分数数据结构课程设计说明书格式

中北大学数据结构课程设计说明书2011年12月20日1.设计任务概述(包括系统总体框图及功能描述)此课题是研究表达式求值的问题,以帮助小学生完成测试。

为了达到这个功能,实际我们要做的就是出题,和计算分数给出评价的工作。

整体设计都是以这个要求为轴心进行的。

为了直观和方便,现画出软件整体设计模块图。

整体设计模块图可以清晰的看出软件的几大模块。

整个系统的操作流程图可以看出操作的整体流程,如下图2. 本设计所采用的数据结构(如:链表、栈、树、图等)根据以上功能说明,设计运算信息,堆栈的存储结构,设计程序完成功能;3. 功能模块详细设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

详细设计思想学生要进行测试,首先要有试题。

那么我们就要先建立试题库。

这个试题库的试题是我们在程序运行过程中手动输入,存放在一个的文件中。

首先在主函数中调用创建试题库函数,将试题存入到试题库文件中,然后将该调用从主函数中删除。

创建试题库函数:创建指向xuanti类型的指针,利用循环将输入的测试题该指针的xuanti 单元中,最后将该指针中的测试题写入试题库文件中。

核心代码(正文宋体小四号字,倍行距)#include <>#include <>#include <>#include<>#include <>#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define ERROR 0#define OK 1op==(*S1).base)return 0;e1=*((*S1).top-1);return e1;}op==(*S2).base) return 0;e2=*((*S2).top-1);return e2;}op++=e1;return OK;}op++=e2;return OK;}op==(*S1).base)return 0;e1=*--(*S1).top;return e1;}op==(*S2).base) return 0;e2=*--(*S2).top;return e2;};fflush(stdin);printf("\n");}WriteToFile(pstu,num);;printf("\n");}free(pstu);;printf("请输入计算结果:");scanf("%ld",&XT[KEY[i]].result);fflush(stdin);if(XT[KEY[i]].result==result(XT[KEY[i]].a,OPND,OPTR)) {mark+=10;printf("答案正确!");printf("\n\n");}else{printf("答案错误!");printf("\n\n");}}printf("****得分情况****\n");printf("最后的得分为:%d\n",mark);if(mark>=90)printf("Very Good!\n");else if(mark>=60)printf("成绩不错。

\n");else printf("很遗憾成绩不及格!\n");printf("\n");RecMark(Mark,count);Mark[count]=mark;count++;//记录次数递增printf("是否继续做练习('y'—是,'n'—否):");g=getchar();fflush(stdin);printf("\n");if(count>=20)//超过最大记录次数清0count=0;}while(g=='y');RecMark(Mark,count);return count;return_confirm();}void Look_Mark(int count){//printf("是否查看历史得分('y'—是,'n'—否):");int *Mark;int i;Mark=(int *)malloc(20*sizeof(int));system("cls");printf("****查询历史得分情况****\n");LookMark(Mark,count);for(i=0;i<count;i++)printf("****第%d次得%d分****\n", i+1, Mark[i]);if(i>1){if(Mark[i-1]>60||Mark[i-2]>60){if(Mark[i-1]>Mark[i-2])printf("有进步,还要加油哦。

\n");else if(Mark[i-1]==Mark[i-2]) printf("成绩还可以,但没有进步,还要多多努力呀!\n");else printf("成绩有点下降,要多多练习,不要气馁!!\n");}else printf("成绩很不好!要更加努力学习!\n");}else{if(Mark[0]>=90)printf("Very Good!\n");else if(Mark[0]>=60)printf("成绩不错。

\n");else printf("很遗憾成绩不及格!\n"); }return_confirm();}void main(){int m=0;int *RN;char ch;RN=(int *)malloc(1*sizeof(int));RN[0]=0;printf("***如果是第一次运行***\n");printf("**请先建立**\n");printf("*****否则会出错!*****\n");printf("('y'--创建**'n'--不建)\n");ch=getchar();if(ch=='y')RecN(RN,1);LookN(RN,1);RN[0]+=m;fflush(stdin);printf("是否向试题库中添加试题: ");printf("('y'--是,'n'--否)\n");ch=getchar();if(ch=='y')Built_shitiKu();menu: page_title("操作选单");printf("请用数字键选择操作\n\n");printf("1 开始练习\n");printf("2 查看得分记录\n");printf("0 退出\n");printf("******************\n");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");goto menu;}程序运行结果(拷屏)4.课程设计心得、存在问题及解决方法连续两个星期的课程设计做完了,感觉自己的能力得到了大大的提高。

刚开始看见题目的时候,很不以为然,觉得这么简单。

但当自己开始着手做的时候才发现并不是那么回事。

一个看似简单的问题,有时候却牵扯甚多。

经过两个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,对C语言学习平时只是马马虎虎的过去了,真正自己去解决实际问题的时候才会发现自己学的多么糟糕,通过课程设计对自己的编程能力也有所提高;再有对C语言的文件操作这一块,真的是难了我好久。

还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注重实践操作能力的培养,无论学习什么,亲自动手去做了才能得到最深刻的体会。

相关主题