软件152-《面向对象程序设计课程设计》报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1青岛理工大学《面向对象程序设计课程设计》题目用英文单词模拟数学计算指导教师:周全强姓名:王磊学号:201507166班级:软件152专业:软件工程地点:现代教育中心305时间:2016.07.04至2016.07.082一、内容(标题:宋体,粗体,四号字)用英文单词模拟数学计算读入两个小于100的正整数A和B,计算A+B,需要注意的是:A和B的每一位数字对应的英文单词给出(正文:宋体,非粗体、非斜体,非下划线,五号字)二、上机环境操作系统:win10开发工具:vc6.0三、需求分析1.选做此课题或项目的目的综合运用所学知识,解决实际问题提高学生的程序设计能力和开发能力2.程序所实现的功能用英文输入代替数字进行计算四、内容设计1.根据所选题目,给出类的设计1.建立define预编命令,定义static数据类型,p[min]用来存放‘+’及其左边的字符,q[min]用来存放‘+’右边的字符及‘=’。2.建立Data类,构建PRIVATE私有成员和PUBLIC公有成员。定义A[min],B[min]两个私有数组,Input(),Xchg()两个公有成员函数。3.建Input()函数,变量k用来控制行数,输入字符放到数组A[min]中赋值给a,通过for循环,找到与输入字符相匹配的英文数字,若匹配放入p[k],flo1=1,当输入字符为‘+’跳出第一个dowhile语句,执行下一个dowhile循环,输入字符赋值给b,for循环判断字符是否与英文数字匹配,匹配则放入q[k],flo2=1,当输入字符为‘=’时跳出执行if语句;if语句功能是判断输入字符若不匹配,即(flo1!=1||fol2!=1),则提示“输入错误,请重新输入:”,返回执行Input()函数。直到输入的两个字符都为0,即if(p[k]==0&&q[k]==0),跳出该循环。2.画出重要函数的程序流程图33.编写程序关键代码关键代码voidData::Input(){chara,b;inti,j,flo1,flo2;charA[min];charB[min];4cout请输入要相加的数(英文格式例:one+three=);endl输入zero+zero=为结束标记;endl;for(k=0;k30;k++){do{cinA;a=A[0];for(i=0;i10;i++)if(strcmp(A,num[i])==0){p[k]=p[k]*10+i;flo1=1;}}while(a!='+');do{cinB;b=B[0];for(j=0;j10;j++)if(strcmp(B,num[j])==0){q[k]=q[k]*10+j;flo2=1;}}while(b!='=');if(flo1!=1||flo2!=1){cout输入错误,请重新输入:endl;Input();}if(p[k]==0&&q[k]==0)break;}}4.建立Xchg函数,定义x,y,z三个变量,用来存放计算结果的百位,十位和个位,E[i]存放每行的计算结果,E[i]=p[i]+q[i]。用if语句判断结算结果的位数,用switch()控制字符与英文数字的匹配。程序段如下:voidData::Xchg(){intx,y,z;for(inti=0;ik+1;i++){E[i]=p[i]+q[i];5x=E[i]/100;//百位y=E[i]/10%10;//十位z=E[i]%10;//个位if(x==0&&y==0){switch(z){case1:{coutone;break;}case2:{couttwo;break;}case3:{coutthree;break;}case4:{coutfour;break;}case5:{coutfive;break;}case6:{coutsix;break;}case7:{coutseven;break;}case8:{couteight;break;}case9:{coutnine;break;}case0:break;}}elseif(x==0&&y!=0){switch(y){case1:{coutone;break;}case2:{couttwo;break;}case3:{coutthree;break;}case4:{coutfour;break;}case5:{coutfive;break;}case6:{coutsix;break;}case7:{coutseven;break;}case8:{couteight;break;}case9:{coutnine;break;}case0:break;}cout;switch(z){case1:{coutone;break;}case2:{couttwo;break;}case3:{coutthree;break;}case4:{coutfour;break;}case5:{coutfive;break;}case6:{coutsix;break;}case7:{coutseven;break;}6case8:{couteight;break;}case9:{coutnine;break;}case0:{coutzero;break;}}}else{switch(x){case1:{coutone;break;}case2:{couttwo;break;}case3:{coutthree;break;}case4:{coutfour;break;}case5:{coutfive;break;}case6:{coutsix;break;}case7:{coutseven;break;}case8:{couteight;break;}case9:{coutn*ine;break;}case0:break;}cout;switch(y){case1:{coutone;break;}case2:{couttwo;break;}case3:{coutthree;break;}case4:{coutfour;break;}case5:{coutfive;break;}case6:{coutsix;break;}case7:{coutseven;break;}case8:{couteight;break;}case9:{coutnine;break;}case0:{coutzero;break;}}cout;switch(z){case1:{coutone;break;}case2:{couttwo;break;}case3:{coutthree;break;}case4:{coutfour;break;}case5:{coutfive;break;}case6:{coutsix;break;}case7:{coutseven;break;}7case8:{couteight;break;}case9:{coutnine;break;}case0:{coutzero;break;}}}coutendl;}}4.建立一个主函数main(),#includeiostreamvoidmain(){Dataa;//给类定义一个对象aa.Input();//调用Input函数a.Xchg();//调用Xchg函数}三、调试分析1.实际完成的情况说明(完成的功能,支持的数据类型等)。可以完成预期功能2.程序的性能分析。功能齐全,可读性强界面友好,健壮性好符合设计要求健壮性好:用户输入非法数据时,系统应及时给出警告信息。3.上机过程中出现的问题及其解决方案。数组操作有点混乱,一些功能不会实现,通过和同学的讨论和查找资料已完美解决4.程序中可以改进的地方说明。可以采用另一种思路来减少部分代码5.程序中可以扩充的功能及设计实现构想。8可以扩充到多位数的计算,以及乘除发的运算四、用户手册(说明程序的运行环境,程序执行结果,详细列出每一步的操作步骤。可以插图)Win10输入格式:测试输入包含若干测试用例,每个测试用例占一行,格式为“A+B=”,相邻两字符串有一个空格间隔,当A和B同时为zero时输入结束输出格式:对每个测试用例输出1行,即A+B的值。输入样例:one+two=threefour+fivesix=zeroseven+eightnine=zero+zero=输出样例:threeninezeroninesix五、设计总结(可谈一谈本次课程设计的经验和体会)经过一个星期的上机实践学习,使我对c++语言有了更进一步的认识和了解,要想学好它要重在9实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对c++语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c++语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习c++语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。六、参考文献[1]李兰,任凤华.C++面向对象程序设计.西安:西安电子科技大学出版社,2010[2]李兰,任凤华.《C++面向对象程序设计》实验指导及习题解析.西安:西安电子科技大学出版社,2010[3]郑莉,董渊.C++程序设计基础教程.北京:清华大学出版社,2010[4]郑莉.C++程序设计基础教程学生用书.北京:清华大学出版社,2010七、附录(要加上注释。)#includeiostreamusingnamespacestd;#definemax100#definemin20staticintp[min],q[min],E[max],k;charnum[10][8]={zero,one,two,three,four,five,six,seven,eight,nine};classData//定义data类{charA[min],B[min];//定义两个字符变量public:voidInput();//定义成员函数voidXchg();};voidData::Input(){chara,b;//定义两个字符变量10inti,j,flo1,flo2;//定义整形变量charA[min];charB[min];cout请输入要相加的数(英文格式例:one+three=);endl输入zero+zero=为结束标记;endl;for(k=0;k30;k++)//控制行数{do{cinA;//输入字符a=A[0];//输入的字符赋值为afor(i=0;i10;i++)if(strcmp(A,num[i])==0)//输入字符与0--10比较匹配{p[k]=p[k]*10+i;//匹配成功将字符复制给p[k]flo1=1;//若匹配则标记为1}}while(a!='+');//若输入字符不为'+'循环继续,若遇到'+'则退出do{cinB;//输入字符b=B[0];//输入的字符复制给bfor(j=0;j10;j++)if(strcmp(B,num[j])==0)//比较匹配{q[k]=q[k]*10+j;flo2=1;}}while(b!='=');//若不为'='则继续,否则退出if(flo1!=1||flo2!=1)//字符不匹配{cout输入错误,请重新输入:endl;Input();}if(p[k]==0&&q[k]==0)//若两个数都为0则退出break;11}}voidData::Xchg()//计算结果{intx,y,z;for(int

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功