欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:13639024       资源大小:128.58KB        全文页数:23页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、利用栈求表达式地值可供小学生教育作业并能给出分数大数据结构课程设计说明书格式中北大学数 据 结 构课 程 设 计 说 明 书学生:敏杰学 号:1021011545学 院:软件学院专 业:软件开发与测试题 目:利用栈求表达式的值,可供小学生作业,并能给出分数指导教师何志英2011年12月20日1. 设计任务概述(包括系统总体框图及功能描述)此课题是研究表达式求值的问题,以帮助小学生完成测试。为了达到这个功能,实际我们要做的就是出题,和计算分数给出评价的工作。整体设计都是以这个要求为轴心进行的。为了直观和方便,现画出软件整体设计模块图。整体设计模块图可以清晰的看出软件的几大模块。整个系统的操作流程

    2、图可以看出操作的整体流程,如下图开始结束菜单选择试题测试查看历史分数输入1 输入2 输入0 2. 本设计所采用的数据结构(如:链表、栈、树、图等)根据以上功能说明,设计运算信息,堆栈的存储结构,设计程序完成功能;3. 功能模块详细设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。3.1 详细设计思想学生要进行测试,首先要有试题。那么我们就要先建立试题库。这个试题库的试题是我们在程序运行过程中手动输入,存放在一个shujuku.txt的文件中。首先在主函数中调用创建试题库函数,将试题存入到试题库文件shiti

    3、ku.txt中,然后将该调用从主函数中删除。创建试题库函数:创建指向xuanti类型的指针,利用循环将输入的测试题该指针的xuanti单元中,最后将该指针中的测试题写入试题库文件shitiku.txt中。 3.2 核心代码(正文宋体小四号字,1.5倍行距)#include #include #include #include#include #define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define ERROR 0#define OK 1/定义表达式typedef struct shiti char a20; long result;

    4、xuanti;typedef struct SqStack1 /建立数字栈int *base; int *top; int stacksize;SqStack1; typedef struct SqStack2/建立运算符栈char *base; char *top; int stacksize;SqStack2; void WriteToFile(xuanti *pstu,int num);void ReadFromFile(xuanti *pstu,int num);void page_title(char *menu_item)/建立菜单 printf( 数学习题库 base=(int

    5、*)malloc(STACK_INIT_SIZE*sizeof(int); if(!S1-base) exit(ERROR); S1-top=S1-base; S1-stacksize=STACK_INIT_SIZE;/IntInitStackvoid CharInitStack(SqStack2 *S2) S2-base=(char *)malloc(STACK_INIT_SIZE*sizeof(char); if(!S2-base) exit(ERROR); S2-top=S2-base; S2-stacksize=STACK_INIT_SIZE;/CharInitStacklong In

    6、tGetTop(SqStack1 *S1) /取栈顶元素 long e1; if(*S1).top=(*S1).base) return 0; e1=*(*S1).top-1); return e1;/IntGetTopchar CharGetTop(SqStack2 *S2) /取栈顶元素 char e2; if(*S2).top=(*S2).base) return 0; e2=*(*S2).top-1); return e2;/IntGetTopint IntPush(SqStack1 *S1,int e1)/入栈 *(*S1).top+=e1; return OK;/IntPushin

    7、t CharPush(SqStack2 *S2,char e2)/入栈 *(*S2).top+=e2; return OK;/CharPushint IntPop(SqStack1 *S1)/出栈 int e1; if(*S1).top=(*S1).base) return 0; e1=*-(*S1).top; return e1;/IntPopint CharPop(SqStack2 *S2)/出栈 char e2; if(*S2).top=(*S2).base) return 0; e2=*-(*S2).top;return e2;/CharPop char Precede(char a,

    8、char b) int i,j; char Table88= ,+,-,*,/,(,),#, +, -, *, /, (, , #, ,=,; /优先级表格 for(i=0;i8;i+) if(Table0i=a) /纵坐标寻找 break; for(j=0;j8;j+) /横坐标寻找 if(Tablej0=b) break; return Tableji;/Precedeint Operate(int a,char theta,int b) /计算表达式值:主要是将大的表达式转化成小的表达式进行逐步求值 int c; if(theta=+) c=a+b;else if(theta=-) c=

    9、a-b; else if(theta=*) c=a*b; else c=a/b; return c;/Operateint IsOptr(char ch)char ptr10=+,-,*,/,(,),#;for(int i=0;i7;i+) if(ch=ptri) return true;return false;long result(char *a,SqStack1 *OPND,SqStack2 *OPTR) /求值 char theta; int b,d,k=0,i=0,j=0,num2=0; IntInitStack(OPND); CharInitStack(OPTR); CharPu

    10、sh(OPTR,#); while(ai!=) if(!IsOptr(ai) k+; if(kj) num2=num2*10+(int(ai)-48); k=j=0; i+; if(!IsOptr(ai) k+; if(k=j) IntPush(OPND,num2); else if(IsOptr(ai) switch(Precede(ai,CharGetTop(OPTR) case :theta=CharPop(OPTR); d=IntPop(OPND); b=IntPop(OPND); IntPush(OPND,Operate(b,theta,d); break; /switch /els

    11、e if /while printf(表达式的正确结果为:); printf(%dn,IntGetTop(OPND); return (IntGetTop(OPND);/reslutvoid Built_shitiKu() int i,num; xuanti *pstu; printf(输入试题数目:n); scanf(%d,&num); fflush(stdin); pstu=(xuanti *)malloc(num*sizeof(xuanti);/动态分配存 if(pstu=NULL) printf(没有足够的存空间!n); return; for(i=0;inum;i+)/输入试题 pr

    12、intf(第%d道试题:,i+1); gets(pstui.a); fflush(stdin); printf(n); WriteToFile(pstu,num);/将pstu所指向的学生信息写入文件中 memset(pstu,0,num*sizeof(xuanti);/将pstu所指向的存块清0 ReadFromFile(pstu,num);/从文件中读取学生信息到pstu所指向的存块中 printf(试题列表:n); for(i=0;inum;i+)/输入试题 printf(第%d道试题:,i+1); printf(%s,pstui.a); printf(n); free(pstu);/释

    13、放动态分配的存void WriteToFile(xuanti *pstu,int num)/将pstu所指向的试题息写入文件shitiku.txt中FILE *fp; fp=fopen(shitiku.txt,at); if(fp=NULL) printf(不能创建shitiku.txtn); free(pstu); exit(0); fwrite(pstu,sizeof(xuanti),num,fp); fclose(fp);void ReadFromFile(xuanti *pstu,int num)/从试题库中提取试题 FILE *fp; fp=fopen(shitiku.txt,rt)

    14、; if(fp=NULL) printf(不能打开shitiku.txtn); free(pstu); exit(0); fread(pstu,sizeof(xuanti),num,fp); fclose(fp);/*void RecMark(int *m,int num)/把得分记录到markrec.txt中 FILE *mp; mp=fopen(markrec.txt,at); if(mp=NULL) printf(不能创建markrec.txtn); free(m); exit(0); fwrite(m,sizeof(int),num,mp); fclose(mp);/Recmarkvo

    15、id LookMark(int *m,int num)/查看得分记录 FILE *mp; mp=fopen(markrec.txt,rt); if(mp=NULL) printf(不能打开markrec.txtn); free(m); exit(0); fread(m,sizeof(int),num,mp); fclose(mp);/*void RecN(int *m,int num)/把m的值记录到n_rec.txt中 FILE *mp; mp=fopen(n_rec.txt,wt); if(mp=NULL) printf(不能创建n_rec.txtn); free(m); exit(0);

    16、 fwrite(m,sizeof(int),num,mp); fclose(mp);/Recmarkvoid LookN(int *m,int num)/查看m的值 FILE *mp; mp=fopen(n_rec.txt,rt); if(mp=NULL) printf(不能打开n_rec.txtn); free(m); exit(0); fread(m,sizeof(int),num,mp); fclose(mp);/*int excersice_begin() int i, j, temp, KEY20; int mark,count=0; int *Mark; char g; SqSta

    17、ck1 s1,*OPND; SqStack2 s2,*OPTR; xuanti *XT; OPND=&s1; OPTR=&s2; Mark=(int *)malloc(20*sizeof(int); XT=(xuanti *)malloc(20*sizeof(xuanti); ReadFromFile(XT,20); do mark=0; srand(unsigned)time(NULL); KEY0 = rand()%20; for(i=1;i20;i+) while(1) temp = rand()%20; for(j=0;ji;j+) if(KEYj=temp) break; if(j=

    18、i) KEYi=temp; break; system(cls); printf(随机的10个练习题 :n); for(i=0;i=90) printf(Very Good!n); else if(mark=60) printf(成绩不错。n); else printf(很遗憾成绩不及格!n); printf(n); RecMark(Mark,count); Markcount=mark; count+;/记录次数递增 printf(是否继续做练习?(y是,n否):); g=getchar(); fflush(stdin); printf(n); if(count=20)/超过最大记录次数清0

    19、 count=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;i1) if(Marki-160|Marki-260) if(Marki-1Marki-2) printf(有进步

    20、,还要加油哦。n); else if(Marki-1=Marki-2) printf(成绩还可以,但没有进步,还要多多努力呀!n); else printf(成绩有点下降,要多多练习,不要气馁!n); else printf(成绩很不好!要更加努力学习!n);else if(Mark0=90) printf(Very Good!n); else if(Mark0=60) printf(成绩不错。n); else printf(很遗憾成绩不及格!n); return_confirm();void main() int m=0; int *RN; char ch; RN=(int *)malloc

    21、(1*sizeof(int); RN0=0; printf(*如果是第一次运行*n); printf(*请先建立 n_rec.txt*n); printf(*否则会出错 !*n); printf(y-创建*n-不建)n); ch=getchar(); if(ch=y) RecN(RN,1); LookN(RN,1); RN0+=m; fflush(stdin); printf(是否向试题库中添加试题: ); printf(y-是,n-否)?n); ch=getchar(); if(ch=y) Built_shitiKu(); menu: page_title(操作选单); printf(请用数

    22、字键选择操作nn); printf(1 开始练习n); printf(2 查看得分记录n); printf(0 退出n); printf(*n); RN0+=m; m=0; switch(getch() case 1 : m=excersice_begin(); break; case 2 : Look_Mark(RN0); break; case 0 : RecN(RN,1); exit(0); system(cls); goto menu;3.3 程序运行结果(拷屏)4. 课程设计心得、存在问题及解决方法 连续两个星期的课程设计做完了,感觉自己的能力得到了大大的提高。刚开始看见题目的时候,

    23、很不以为然,觉得这么简单。但当自己开始着手做的时候才发现并不是那么回事。一个看似简单的问题,有时候却牵扯甚多。经过两个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,对C语言学习平时只是马马虎虎的过去了,真正自己去解决实际问题的时候才会发现自己学的多么糟糕,通过课程设计对自己的编程能力也有所提高;再有对C语言的文件操作这一块,真的是难了我好久。还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注重实践操作能力的培养,无论学习什么,亲自动手去做了才能得到最深刻的体会。


    注意事项

    本文(利用栈求表达式地值可供小学生教育作业并能给出分数大数据结构课程设计说明书格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开