设计一个简单计算器.docx

上传人:b****5 文档编号:7049398 上传时间:2023-01-16 格式:DOCX 页数:10 大小:59.41KB
下载 相关 举报
设计一个简单计算器.docx_第1页
第1页 / 共10页
设计一个简单计算器.docx_第2页
第2页 / 共10页
设计一个简单计算器.docx_第3页
第3页 / 共10页
设计一个简单计算器.docx_第4页
第4页 / 共10页
设计一个简单计算器.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

设计一个简单计算器.docx

《设计一个简单计算器.docx》由会员分享,可在线阅读,更多相关《设计一个简单计算器.docx(10页珍藏版)》请在冰豆网上搜索。

设计一个简单计算器.docx

设计一个简单计算器

一、课程设计的内容

设计一个简单计算器

要求:

在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。

二、课程设计的要求与数据

1、进一步掌握和利用C语言进行程设计的能力;

2、进一步理解和运用结构化程序设计的思想和方法;

3、初步掌握开发一个小型实用系统的基本方法;

4、学会调试一个较长程序的基本方法;

5、学会利用流程图或N-S图表示算法;

6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作

1、编写完成相应题目的程序;

2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:

1)需求分析:

包括设计题目、设计要求以及系统功能需求分析;

2)总体设计:

包括系统总体设计框架和系统功能模块图;

3)详细设计:

包括主要功能模块的算法设计思路以及对应的工作流程图;

4)调试分析过程描述:

包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);

5)总结:

课程设计完成了哪些功能,有没有什么扩展功能?

还有哪些地方需要改进?

课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;

6)附录:

主要源程序代码,含必要的注释。

3、答辩:

在实验室建立程序运行的环境,并在指导教师的监督下,独立解

决问题、运行程序和回答教师提出的问题。

四、课程设计进程安排

序号

设计各阶段内容

地点

起止日期

1

下达任务书,说明设计要求;收集资料

实验3#517

6.18

2

总体方案设计、详细设计

实验3#517

6.19

3

编写程序,调试分析

实验3#517

6.20

4

撰写报告并上交,答辩

实验3#517

6.21

五、应收集的资料及主要参考文献

[1]谭浩强.C程序设计(第三版)[M],北京:

清华大学出版社,2005.9

[2]谭浩强.C程序设计题解与上机指导(第三版)[M],北京:

清华大学出版社,2005.7

[3]李春葆曾平刘斌。

C++语言程序设计题典第一版北京清华大学出版社2003年4月

[5]刘振安刘燕君C++程序设计课程设计第一版机械工业出版社2004年8月

 

发出任务书日期:

2007年6月18日指导教师签名:

计划完成日期:

2007年6月22日基层教学单位责任人签章:

主管院长签章:

 

1设计目的与要求………………………………………………………………5

2总体设计………………………………………………………………………6

3详细设计………………………………………………………………………6

4调试分析……………………………………………………………………7

5总结……………………………………………………………………………7

6附录…………………………………………………………………………8

6答辩记录(正文处请留出适当空白)………………………………………13

7指导教师意见(正文处请留出十行空白)…………………………………13

 

1目的与要求

 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际应用问题进行有机结合,锻炼学生分析、解决实际问题的能力,提高学生项目开发及程序调试能力。

 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际应用问题进行有机结合,锻炼学生分析、解决实际问题的能力,提高学生项目开发及程序调试能力。

(1)总体要求

①对系统进行功能模块分析、控制模块分析正确;

②系统设计要实用;

③编程简练,可用,功能全面,具有较好的健壮性;

④说明书、流程图要清楚。

(2)课程设计报告要求

①需求和规格说明:

问题描述:

题目要解决的问题是什么?

②设计

⊕设计思路:

主要算法思想。

⊕总体设计:

程序设计组成框图、N-S流程图。

⊕详细设计:

模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描

述等)。

③调试与测试:

调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论

和分析;改进设想;经验和体会等。

④附录:

源程序清单和结果。

如果题目规定了测试数据,则结果要包含这些测试数据和

运行输出,当然还可以含其他测试数据和运行输出;清单中应有足够的注释。

7

2总体设计

3详细设计

(内容可以适当调整,清晰的有条理的把你的设计思路表达出来)

3.1功能模块设计

3.1.1XX功能模块(可选)

3.1.2YY功能模块(可选)

3.1.3ZZ功能模块(可选)

4调试分析

输入调试

输出调式

5总结

原来认为搞一个计算器很简单,加减乘除用一个switch语句就可以做出来。

最初做了一个如下程序

#include

main()

{inta,b,c;

chary;

system("cls");

scanf("%d%c%d",&a,&y,&b);

switch(y)

{case'+':

c=a+b;break;

case'-':

c=a-b;break;

case'*':

c=a*b;break;

case'/':

if(b==0)

{printf("inputerror!

");

exit(0);

}

elsec=a/b;

break;

defult:

printf("intputerror!

!

");break;

}

一写下来才知道他只能进行很简单的两个数的四则运算。

很来在图书馆和网上查了很多资料,最终选择了C++编,虽然这个程序自己也进行了修该但是很多方面还是用别人的成果。

经过这次编程我发现了许多自己以前不知道的知识。

找到了很多不足。

7.附录

#include

#include

usingnamespacestd;

enumToken_value{

NAME,NUMBER,END,

PLUS='+',MINUS='-',MUL='*',DIV='/',

PRINT=';',ASSIGN='=',LP='(',RP=')'

};

Token_valuecurr_tok=PRINT;

//fuctionlist//////////////////////////////////////

doubleexpr(boolget);

doubleterm(boolget);

doubleprim(boolget);

Token_valueget_token();

doubleerror(conststring&s);

//////////////////////////////////////////////////////////

doubleexpr(boolget)//plusandminus

{doubleleft=term(get);

for(;;)

{switch(curr_tok){

casePLUS:

left+=term(true);

break;

caseMINUS:

left-=term(true);

break;

default:

returnleft;

}

}

}

doubleterm(boolget)//multiplyanddivide

{doubleleft=prim(get);

for(;;)

{switch(curr_tok){

caseMUL:

left*=prim(true);

break;

caseDIV:

if(doubled=prim(true)){//nozero!

!

left/=d;

break;

}

returnerror("dividebyzero!

!

\n");

default:

returnleft;

}

}

}

doublenumber_value;

doublestring_value;

doubleprim(boolget)

{if(get)get_token();

switch(curr_tok){

caseNUMBER:

{doublev=number_value;

get_token();

returnv;

}

caseNAME:

{doublev;

//double&v=table[string_value];

//thistablereservedthenamemappedwithvariable

//nowwedon'tuseit!

if(get_token()==ASSIGN)

v=expr(true);

returnv;

}

caseMINUS:

//negative

{return-prim(true);

}

caseLP:

{doublee=expr(true);

if(curr_tok!

=RP)returnerror(")expected");

get_token();//absorb)

returne;

}

default:

returnerror("primaryexpected");//noprimary

}

}

Token_valueget_token()

{charch=0;

cin>>ch;

switch(ch){

case0:

returncurr_tok=END;//returnandassignment

case';':

case'*':

case'/':

case'+':

case'-':

case'(':

case')':

case'=':

returncurr_tok=Token_value(ch);

case'0':

case'1':

case'2':

case'3':

case'4':

case'5':

case'6':

case'7':

case'8':

case'9':

case'.':

cin.putback(ch);

cin>>number_value;

returncurr_tok=NUMBER;

default:

if(isalpha(ch))

{cin.putback(ch);

cin>>string_value;

returncurr_tok=NAME;

}

error("badtoken!

");

returncurr_tok=PRINT;

}

}

intno_of_error;

doubleerror(conststring&s)

{no_of_error++;

cout<<"error:

"<

return1;

}

intmain()

{while(cin)

{get_token();

if(curr_tok==END)break;

if(curr_tok==PRINT)continue;

cout<

}

returnno_of_error;

}

7答辩记录

序号

问题

回答

1

2

3

4

5

8指导教师意见

 

指导教师签名:

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

当前位置:首页 > 高等教育 > 院校资料

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

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