表达式求值可供小学生作业可得出分数.docx

上传人:b****7 文档编号:11079278 上传时间:2023-02-24 格式:DOCX 页数:16 大小:180.90KB
下载 相关 举报
表达式求值可供小学生作业可得出分数.docx_第1页
第1页 / 共16页
表达式求值可供小学生作业可得出分数.docx_第2页
第2页 / 共16页
表达式求值可供小学生作业可得出分数.docx_第3页
第3页 / 共16页
表达式求值可供小学生作业可得出分数.docx_第4页
第4页 / 共16页
表达式求值可供小学生作业可得出分数.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

表达式求值可供小学生作业可得出分数.docx

《表达式求值可供小学生作业可得出分数.docx》由会员分享,可在线阅读,更多相关《表达式求值可供小学生作业可得出分数.docx(16页珍藏版)》请在冰豆网上搜索。

表达式求值可供小学生作业可得出分数.docx

表达式求值可供小学生作业可得出分数

课程设计(论文)任务书

软件学院学  院  软件+轨道专  业2013—1 班

一、课程设计(论文)题目 表达式求值,可供小学生作业,能给出分数

二、课程设计(论文)工作自2015年1月5日起至2015年1月10日止

三、课程设计(论文)地点:

创科技楼软件测试中心机房

四、课程设计(论文)内容要求:

1.本课程设计的目的

⑴训练学生灵活应用所学数据结构知识,独立完成问题分析,结合课程的理论知识,

编写程序求解指定问题;

⑵初步掌握软件开发过程的问题分析、系统设计、编码、测试等基本方法和技能;

⑶提高综合运用所学的理论知识和方法独立分析和解决问题的能力,巩固、深化学

生的理论知识,提升编程水平。

2.课程设计的任务及要求

1)基本要求:

⑴要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽

象数据类型、编写上机程序和上机调试等若干步骤完成题目,最终写出完整的报告;

⑵在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率;

⑶程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;

⑷每位同学需提交可独立运行的程序和规范的课程设计报告。

2)课程设计论文编写要求

⑴理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式

进行书写和装订;

⑵课程设计报告包括中文目录、设计任务、需求分析、概要设计、详细设计、编码

实现、调试分析、课设总结、谢辞、参考文献、附录等;

⑶设计部分应包含系统功能模块图,调试分析应包括运行截图等。

3)课程设计评分标准:

⑴学习态度:

10分;

⑵系统设计:

20分;

⑶编程调试:

20分;

⑷回答问题:

20分;

⑸论文撰写:

30分。

4)参考文献:

⑴严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社.2010.3

⑵严蔚敏,吴伟民.数据结构题集(C语言版)[M].清华大学出版社.1999.2

⑶何钦铭,冯燕等.数据结构课程设计[M].浙江大学出版社.2007.8

5)课程设计进度安排

⑴准备阶段(4学时):

选择设计题目、了解设计目的要求、查阅相关资料;

⑵程序模块设计分析阶段(4学时):

程序概要设计、详细设计;

⑶代码编写调试阶段(8学时):

程序模块代码编写、调试、测试;

⑷撰写论文阶段(4学时):

总结课程设计任务和设计内容,撰写课程设计论文。

学生签名:

魏祥

2015年1月5日

6)课程设计题目具体要求:

(1)建立试题库文件,随机产生n个题目;

(2)题目涉及加减乘除,带括号的混合运算;

(3)随时可以退出;

(4)保留历史分数,能回顾历史,给处于历史分数比较后的评价。

 

课程设计(论文)评审意见

(1)学习态度(10分):

优( )、良( )、中( )、一般( )、差( );

(2)系统设计(20分):

优()、良( )、中( )、一般( )、差( );

(3)编程调试(20分):

优( )、良( )、中( )、一般( )、差( );

(4)回答问题(20分):

优( )、良( )、中( )、一般( )、差( );

(5)论文撰写(30分):

优( )、良( )、中( )、一般( )、差( );

(6)格式规范性及考勤是否降等级:

是( )、否( )

评阅人:

王英华 职称:

讲师

2015年1月12日

 

一.题目要求

建立试题文件库,随机产生n个题目,题目涉及加减乘除,带括号的混合运算;随时可以退出;保留历史分数,能历史回顾,给出与历史分数比较后的评价。

二.需求分析

1.进行题目运算时,能随机产生题目,那么就要有试题库来供学生运算,建立试题库后,生成足够的储存空间,并从试题库中随机产生10道题,是整个程序的基础。

2.题目能进行运算,设计运算的优先次序,保证能正常运算。

3.要实现开始,退出,查询历史记录,给出分数评价的功能,就要建立菜单来供学生选择,重新设置一个储备空间,来对学生成绩储存,在下一次运算时能自动清空。

4.学生在第一次运算结束后可自行选择退出和继续练习,仍能从试题库中随机抽取,试题库中题目依然储存。

三.系统设计

3.1总体设计

运用栈来实现其功能,

#defineSTACK_INIT_SIZE150(定义栈的大小)

#defineSTACKINCREMENT55(定义栈的类别)

#defitypedefstructshuxueti

typedefstructSqStack

charPrecede

VoidshitiFile(定义试题文件库)

voidMark(定义分数)

用以上主函数来实现对其表达式的求值

1

3.2.1.建立运算试题的储存空间,采用数字栈对建立的试题库中的试题来存储,

建立运算符栈来保证运算的准确。

随即建立菜单,来实现运算的入栈和出栈的功能。

.32.2.输入相应的题目,对题目进行运算后,输完后,出现菜单供学生选择,开始运算后,同学开始答题,每写出一道题,就能得出正确结果,并对其有“结果正确”或“结果错误”的评价,以此来计分。

开始答题

 

N

Y

 

3.2.3在学生全部做完后得出最后成绩,并产生一系列的评价,随即进行记录,在学生第二次答题时,最后的得分会和第一次进行比较,并对两次成绩进行评价。

若第一次成绩优秀则给予鼓励,若低于第一次成绩则给予批评。

学生在两次做完后,可退出返回主页,

若查询成绩,则可以查询近两次的成绩。

N

Y

 

 

四、编码实现

4.1用栈来建立储存试题的空间,建立运算符栈,数字栈来进行试题的运算,并实现入栈出栈诸类操作。

typedefstructtiku

{chara[100];

longresult;

}shiti;

typedefstructSqStackone

{//建立运算符栈

char*base;

char*top;

intstacksize;

}SqStackone;

typedefstructSqStacktwo

{//建立数字栈

int*base;

int*top;

intstacksize;

}SqStacktwo;

4.2建立数组来实现四则运算的优先性和查找功能,进而能准确计算表达式。

charn(chara,charb)

{

inti,j;

charm[8][8]={'','+','-','*','/','(',')','#',

'+','>','>','<','<','<','>','>',

'-','>','>','<','<','<','>','>',

'*','>','>','>','>','<','>','>',

'/','>','>','>','>','<','>','>',

'(','<','<','<','<','<','=','',

')','>','>','>','>','','>','>',

'#','<','<','<','<','<','','=',

};//优先级表格

for(i=0;i<8;i++)

if(m[0][i]==a)//纵坐标寻找

break;

for(j=0;j<8;j++)//横坐标寻找

if(m[j][0]==b;

break;

returnm[j][i];

}//n

4.3建立试题库,并输入相应的题目进行储存空间的分配。

voidBuilt_shitiKu()

{inti,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;i

{//输入试题

printf("第%d道试题:

",i+1);

gets(pstu[i].a);

fflush(stdin);

printf("\n");

}

4.4相应的题目储存到数学题库中,并能从中随机抽取10个题,学生做完之后进行分数记录

voidReadFromFile(xuanti*pstu,intnum)

{//从试题库中提取试题

FILE*fp;

fp=fopen("shitiku.txt","rt");

if(fp==NULL)

{printf("不能打开shitiku.txt\n");

free(pstu);

exit(0);

}

fread(pstu,sizeof(xuanti),num,fp);

fclose(fp);

}

voidoneMark(int*m,intnum)

{//把得分记录到markone.txt中

FILE*mp;

mp=fopen("markone.txt","at");

if(mp==NULL)

{printf("不能创建markone.txt\n");

free(m);

exit(0);

}

fwrite(m,sizeof(int),num,mp);

fclose(mp);

}//onemark

VoidcherkMark(int*m,intnum)

{//查看得分记录

FILE*mp;

mp=fopen("markone.txt","rt");

if(mp==NULL)

{printf("不能打开markone.txt\n");

free(m);

exit(0);

}

fread(m,sizeof(int),num,mp);

fclose(mp);

}

4.5在最后学生进行完测试后,得出其相应的评价。

学生也可先对历史分数进行查询。

voidcherkMark(intcount)

{//printf("是否查看历史得分?

('y'—是,'n'—否):

");

int*Mark;

inti;

Mark=(int*)malloc(20*sizeof(int));

system("cls");

printf("查询分数\n");

LookMark(Mark,count);

for(i=0;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");

elseif(Mark[i-1]<=Mark[i-2])printf("不进则退,就是退步了\n")

};

}

 

5.调试分析

5.1待学生开始运算时,程序进入主页面。

5.2向试题库中输入10个试题,出现试题列表,从第一题开始,将十个题目打乱,随机抽出,从第一题开始,学生开始运算,待得出结果后,会出现正确的结果,与学生的答案进行对比,并给出“答案结果正确”和“答案结果错误”的评价。

在做完所有的试题后,会得出最后得分并随即记录。

5.3当试题没有输入时,即没有创建试题库,试题库中找不到试题,就会出现以下情况。

5.4因为设定的是10个题目,如果没有输全题目,就会报错。

如以下结果。

5.5待学生全部做完,得出最后结果,随即程序第一次成绩进行记录,学生可以选择退出,则返回主页面;也可以选择继续练习,则生成第二次成绩的最后得分,待两次运行完之后,程序都会给予记录,可以返回查询。

当然也可以选择退出。

 

六.课设总结

通过这次课设,我运用栈的知识来设计并实现了表达式求值的问题,这次课设让我更加了解了,也让我知道了我的数据结构的不足之处,只是知道栈的定义,不求甚解,变成程序时就变成了大麻烦,重新找来关于栈的书籍认真学习了一遍,才知道自己不会的太多,当然收获巨大,栈在数据结构中属于较重要的一块,虽然它只是一个简单的储存结构,但是想要利用好它就必须知道它运行的原理,编程后,我也对它有了独特的见解,我想以后我会把数据结构中的一些看似极基本的问题搞懂,而栈这块的知识将会成为我努力学习数据结构的第一步。

七.参考文献

⑴严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社.2010.3

⑵严蔚敏,吴伟民.数据结构题集(C语言版)[M].清华大学出版社.1999.2

⑶何钦铭,冯燕等.数据结构课程设计[M].浙江大学出版社.2007.8

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1