表达式求值可供小学生作业可得出分数.docx
- 文档编号:1329319
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:199.93KB
表达式求值可供小学生作业可得出分数.docx
《表达式求值可供小学生作业可得出分数.docx》由会员分享,可在线阅读,更多相关《表达式求值可供小学生作业可得出分数.docx(13页珍藏版)》请在冰点文库上搜索。
表达式求值可供小学生作业可得出分数
丰象A迪衣普
课程设计(论文)任务
软件学院
一、课程设计
二、课程设计
三、课程设计
四、课程设计
院软件+轨道专业2013—1
表达式求值,可供小学生作业,能给出分数
软件+轨道
学
(论文)题目.
(论文)工作自2015年月_5_日起至2015年1月10日止
(论文)地点:
创科技楼软件测试中心机房
(论文)内容要求:
1.本课程设计的目的
⑴训练学生灵活应用所学数据结构知识,独立完成问题分析,结合课程的理论知识,编写程序求解指定问题;
⑵初步掌握软件开发过程的问题分析、系统设计、编码、测试等基本方法和技能;
⑶提高综合运用所学的理论知识和方法独立分析和解决问题的能力,巩固、深化学生的理论知识,提升编程水平。
2.课程设计的任务及要求
1)基本要求:
⑴要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编写上机程序和上机调试等若干步骤完成题目,最终写出完整的报告;
⑵在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率;
⑶程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;
⑷每位同学需提交可独立运行的程序和规范的课程设计报告。
2)课程设计论文编写要求
⑴理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准格式进行书写和装订;
⑵课程设计报告包括中文目录、设计任务、需求分析、概要设计、详细设计、编码实现、调试分析、课设总结、谢辞、参考文献、附录等;
⑶设计部分应包含系统功能模块图,调试分析应包括运行截图等。
3)课程设计评分标准:
⑴学习态度:
10分;
⑵系统设计:
20分;
⑶编程调试:
20分;
⑷回答问题:
20分;
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)保留历史分数,能回顾历史,给处于历史分数比较后的评价。
课程设计(论文)评审意见
2015年1月12日
题目要求
需求分析
系统设计
编码实现
调试分析
课设总结
参考文献
1..
1..
.8..
1..1
1..1
题目要求
建立试题文件库,随机产生n个题目,题目涉及加减乘除,带括号的混合运算;随时可以退出;保留历史分数,能历史回顾,给出与历史分数比较后的评价。
三.系统设计
3.1总体设计运用栈来实现其功能,
#defineSTACK_INIT_SIZE150(定义栈的大小)
#defineSTACKINCREMENT55(定义栈的类别)
#defitypedefstructshuxueti
typedefstructSqStack
charPrecede
用以上主函数来实现对其表达式的求值
1
3.2.1.建立运算试题的储存空间,采用数字栈对建立的试题库中的试题来存储,
建立运算符栈来保证运算的准确。
随即建立菜单,来实现运算的入栈和出
栈的功能。
建立
菜单
操作选择
建立、
f建立
确定
数字
运算符
运算的
栈
栈
优先级
输完后,出现菜单供学生选择,
.322输入相应的题目,对题目进行运算后,
开始运算后,同学开始答题,每写出一道题,就能得出正确结果,并对其有“结果正确”或“结果错误”的评价,以此来计分。
开始答题
答案正确(记10分)
Y
n
答案正确(记10分)
答案错误(记0分)
第二次试题得分
近两次成绩及评价
返回主页
■7
退出
四、编码实现
4.1用栈来建立储存试题的空间,建立运算符栈,数字栈来进行试题的运算,并
实现入栈出栈诸类操作。
typedefstructtiku
{chara[100];
longresult;
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++)
break;
if(m[j][0]==b
break;
returnm[j][i];
}//n
voidBuilt_shitiKu()
{inti,num;
xuanti*pstu;
printf("输入试题数目:
\n");
scanf("%d",&num);
fflush(stdin);
if(pstu==NULL)
{printf("没有足够的内存空间!
\n");
return;
for(i=0;i {//输入试题 gets(pstu[i].a); fflush(stdin); printf("\n"); 4.4 记录 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) 相应的题目储存到数学题库中,并能从中随机抽取10个题,学生做完之后进行分数 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) 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 if(Mark[i-1]>60||Mark[i-2]>60) if(Mark[i-1]>Mark[i-2]) }; 五.调试分析 5.1待学生开始运算时,程序进入主页面。 ^'G: VIVIyProj'ects\ada\Debug\ada.ex巳 -操作选单- 请用数字键选择操作 5.2向试题库中输入10个试题,出现试题列表,从第一题开始,将十个题目打乱,随机抽 出,从第一题开始,学生开始运算,待得出结果后,会出现正确的结果,与学生的答 案进行对比,并给出“答案结果正确”和“答案结果错误”的评价。 在做完所有的试 题后,会得出最后得分并随即记录。 rojecT5\dcid\ueDugMcid.exe" flsSF^ -6nE5: 身鉄果结普正・•第请主伫合 II疑s S 略亠 .我绩 展否继续做练习是,5-否)= 5.3当试题没有输入时,即没有创建试题库,试题库中找不到试题,就会出现以下情况。 "G: \IMyProjects\ddd\Debug\add.exe' Pr-essent&rcontinue〉 ■'能打幵nxec.txt Pressanvkeutocontinue 5.4因为设定的是10个题目,如果没有输全题目,就会报错。 如以下结果。 ■GMMyProjectsXadaADebugXad^.exe" 6 "■ =为题2汽果习孙臬结个^sf机计输: : 屯屯屯屯屯屯 y;*冋卩F严『切尸匸書、顽口弓Uug7顾邙已尸朋红 第2个练习題: 屯屯屯巳屯屯屯巳屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯电老电电密电电竜屯电葺葺葺葺葺葺暑丄;e谙输A计算结果=. 5.5待学生全部做完,得出最后结果,随即程序第一次成绩进行记录,学生可以选择退出, 则返回主页面;也可以选择继续练习,则生成第二次成绩的最后得分,待两次运行完 之后,程序都会给予记录,可以返回查询。 当然也可以选择退出。 ****查洁I历史得开情况**** 第i次得60^**** ,码绩很不好! 要更加需力学习! 这次课设让我更加 六.课设总结 通过这次课设,我运用栈的知识来设计并实现了表达式求值的问题, 时就变成了大麻烦,重新找来关于栈的书籍认真学习了一遍,才知道自己不会的太多,当然收获巨大,栈在数据结构中属于较重要的一块,虽然它只是一个简单的储存结构,但是想要利用好它就必须知道它运行的原理,编程后,我也对它有了独特的见解,我想以后我会把数据结构中的一些看似极基本的问题搞懂,而栈这块的知识将会成为我努力学习数据结构的第 步。 七.参考文献 ⑴严蔚敏,吴伟民. ⑵严蔚敏,吴伟民. 数据结构(C语言版)[M].清华大学出版社.2010.3 数据结构题集(C语言版)[M].清华大学出版社.1999.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 表达式 求值 小学生 作业 可得 分数