表达式求值可供小学生作业可得出分数.docx
- 文档编号:11079278
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:16
- 大小:180.90KB
表达式求值可供小学生作业可得出分数.docx
《表达式求值可供小学生作业可得出分数.docx》由会员分享,可在线阅读,更多相关《表达式求值可供小学生作业可得出分数.docx(16页珍藏版)》请在冰豆网上搜索。
表达式求值可供小学生作业可得出分数
课程设计(论文)任务书
软件学院学 院 软件+轨道专 业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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 表达式 求值 小学生 作业 可得 分数