1、学院学生课程设计(论文)题 目: 计算机设计 学生: 杰学 号: 7所在院(系): 数学与计算机学院 专 业: 信息与计算科学班 级: 2015级2班指导教 师:职称: 讲师 2015年 1 月 8 日学院教务处制学院本科学生课程设计任务书题目计算器设计1、课程设计的目的本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。2、课程设计的容和要求(包括原始数据、技术要求、工作要求等)一、用C实现如下功能:使用C语言编写一个类似于Windo
2、ws附件提供的计算器软件,实现计算器的基本功能,能进行浮点数的加、减、乘、除、乘方和求模运算。二、撰写课程设计报告或课程设计总结课程设计报告要求:总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不与格记。3、主要参考文献1谭浩强,C程序设计,清华大学2振安,忱,燕君,C程序设计课程设计,机械工业3汪诗林,数据结构算法与应用,机械工业4、课程设计工作进度计划课程设计时间为一周,分四个阶段完成:1. 分析设计阶段。引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个
3、步骤进行。这一阶段前第1天完成。2. 编码调试阶段:根据设计分析方案编写C语言代码,然后调试该代码,实现课题要求的功能。这一阶段在第2-3天完成。3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和容。这一阶段在第4天完成。4. 考核阶段。这一阶段在第5天完成。指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称评分项目分值得分评价涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践
4、、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息与获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算与计算机应用能力5具有较强的数据运算与处理能力;能运用计算
5、机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规化程度5符合本专业相关规或规定要求;规化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘 要课程设计语言类课程的指导思想:使学生通过学习高级编程语言的知识、编程技术和基本算法,掌握课程设计的思想和方法,具备利用计算机
6、求解实际问题的能力,能灵活运用高级语言进行程序设计。其实认真学习一门语言并不难,关键是所追求的学习方法和途径。通过C语言程序设计,可以使我们掌握软件开发过程的难题分析、系统设计、程序编码、测试程序等基本方法和技能。同时,还能加强我们的时间管理意识,锻炼对难题的发现、分析和处理能力。我认为遇到难题并不可怕,可怕的是你不去解决,这可能是C语言课程设计的主要目的之一。现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为
7、强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!本程序实现了加、减、乘、除、求幂、求模,求平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以与进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式,按 CE清空后再计算下一组式子。本程序在进制转换方面有一些漏洞,但一般的进制转换结果还是准确的。关键字:C
8、语言程序设计 基本算法 高级编程语言 思想和方法 计算器目录第1章选题的意义 41.1自我介绍 41.2选题 4第2章系统功能需求分析 52.1系统的基本要求 52.2数据结构和用法 5第3章系统设计 6第4章系统实现 7第5章总结 8第1章 选题的意义1.1 自我介绍我的名字是东林,就读于铁道大学,电0905-2班,电气与电子工程分院。1.2 选题1. 我选的题目是:简单计算器的设计2. 我选这道题的原因如下: 计算器对我们每一的学生都很熟悉,从初中到高中再到大学。但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运行的。C语言课程设计便是一个很好的机会,让我去
9、亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受!3. 运用的数据结构和知识点TuborC 绘图知识 数学函数 选择结构 循环结构 数组 指针 顺序结构 进制间的转换 4. 时间安排5. 主要参考文献:C语言绘图与计算机仿真技术 王强如 航空航天大学1科 钦.C语言程序设计.:电子工业,1987:56-58 2徐君毅.C语言程序设计基础.:复旦大学,1992:87-983成付.C语言程序设计基础.:科学,1992:42-674郝玉洁.C语言程序设计.:机械工业,2000:63-885钱启平.C语言程序设计基础.:中国铁道,2000:91-996大
10、友.C语言程序设计基础.:清华大学,1999:58-987黄迪明.C语言程序设计.:电子科技大学,1998:78-988仲秋.C语言程序设计基础.:大学,1998:16-1009国昌.C语言程序设计基础.:科学,1998:78-12010谭浩强.C语言程序设计.:清华大学,2000:74-129第2章 系统功能需求分析2.1系统的基本要求1. 算术运算功能。能够实现+、-、*、/、mod、int运算。2. 函数运算功能。能够实现exp、ln、sin、xy、log、cos、x3、n!、tan、x2、1/x等运算。3. 进制之间的转换功能。能够实现十六、十、二、八进制数据之间的转换。4.通过键盘控
11、制字符和数字的输入。2.2数据结构设计与用法说明此程序调用的函数主要有 /*数学函数的定义*/ /*屏幕操作函数*/ /*I/O函数*/ /*库函数*/ /*变量长度参数表*/ /*图形函数*/ /*字符串函数*/ /*字符操作函数*/。基本使用:用控制鼠标图形移动,当移动到相应得按钮时按回车键输入当前数字或执行对应的函数。加法:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。减法:输入被减数数,按“-”,输入减数,按“=”,输出结果。乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。除法: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。求x的y次方: 输
12、入数x,按“”,输入数y,按“=”,输出结果。求余:输入一个数,按“mod”,按“=”,输出结果。取整:输入一个数,按“int”,按“=”,输出结果。余弦:输入一个数,按“cos”,按“=”,输出结果。正弦:输入一个数,按“sin”,按“=”,输出结果。正切:输入一个数,按“tan”,按“=”,输出结果。阶乘:输入一个数,按“n!”,按“=”,输出结果。倒数:输入一个数,按“1/x”,按“=”,输出结果十进制转二进制:输入一个十进制数,按“10-2”,输出二进制结果。十进制转八进制:输入一个十进制数,按“10-8”,输出八进制结果。八进制转十进制:输入一个八进制数,按“10-8”,输出十进制结
13、果。第3章 系统设计显示结果结束mod、x3、ln、exp、tan、cos、x2、1/x、n!、sin、以与进制转换输入第二个数y+、-、*、/、xy、log、等输入第一个数x开始第4章 系统实现本系统采用 C语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。并且使用Turbo C 2.0汉化版在原有基础上实现了多汉字的支持,方便了我们的使用。生成的程序可移植性强、兼容性好。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。本程序通过调用int specialkey(void) 和#include
14、 来实现对屏幕的操作,通过调用int arrow()函数,int specialkey(void) 和#include 来实现对光标的操作。计算器图形采用Turbo C 2.0绘图程序制作。第5章 总结经过了五个星期的课程设计,在设计中我们遇到了很多编程问题,最后我们大家齐心合力的攻克一个个难关,我们组做得是计算器的设计,容包括很多。运用的函数也很复杂。测试阶段中发现了几处错误导致程序不能编译,去图书馆查找相关的资料, 又同学一起讨论。通过耐心的分析源代码终于编好了一个完整无误的程序。在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解决积累了编程的实践经验。在实际的编程
15、操作中发现自己c语言知识的不足,加深了对c语言的理解。在学习之余体验到收获的感觉.善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高.课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。自从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同
16、时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相我们把前面所学过的知识又重新温故了一遍。通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。它的一个重要功能,在于运用
17、学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习容与方法提供实践依据。而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间与时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完
18、善和课程设置的调整。近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。课程设计达到了专业学习的预期目的。在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域进行更深入的学习。程序源代码:#include /*DOS接口函数*/#include /*数学函数的定义*/#include /*屏幕操作函数*/#include /*I/O函数*/#include /*库函数*/#include /*变量长度参数表*/#includ
19、e /*图形函数*/#include /*字符串函数*/#include /*字符操作函数*/#define UP 0x48 /*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/int specialkey(void) ; /*获取特殊键函数*/int arrow(); /*设置箭头光标函数*/main() float num1=0,num2=0,result;
20、int x,y,x0=315,y0=160,i,j,v,m,n,act,t1=0,t2=0,cd=0,zj=0,zj1=0,num=0,cd1=0,a25; int flag1,flag2=1,flag3=1,flag4=1,flag5=1; char str25=,temp20=,c,str310=,str410=,str520=,str720=; char str1=A,1,2,3,4,5,6,7,B,8,9,=,+,-,*,/,C, G,H,I,J,K,L,0,D,M,N,O,P,Q,.,$,E,R,S,T,U, V,(,F,W,X,Y,Z,&,),|; int sj1=50,250,2
21、50,250,150,175,50,250; int sj2=145,285,155,285,150,275,145,285; int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); /*初始化*/ setcolor(0); /*绘画*/ setlinestyle(0,0,3); setfillstyle(1,13); sector(150,250,0,360,100,200); setfillstyle(1,2); setcolor(2); fillpoly(4,sj1); setcolor(4); setfill
22、style(1,6); pieslice(150,250,180,360,80); setfillstyle(1,15); line(105,255,125,255); line(175,255,195,255); pieslice(115,265,0,360,5); pieslice(185,265,0,360,5); fillpoly(4,sj2); ellipse(150,295,180,360,12,7);setlinestyle(0,0,3); /*标题*/settextstyle(4,0,8);outtextxy(370,30,PENGDONGLIN CACULATOR);setb
23、kcolor(3);setcolor(5);setfillstyle(5,9);bar3d(280,120,630,440,5,3); /*键盘外框 三维*/setlinestyle(0,0,1);setfillstyle(1,8);bar3d(290,130,620,430,5,1); /*键盘框 三维*/setcolor(2); /*绿色*/setfillstyle(1,7); /*画按钮轮廓 三维*/bar3d(300,140,330,180,2,1);bar3d(340,140,370,180,2,1);bar3d(380,140,410,180,2,1);bar3d(420,140,
24、450,180,2,1);bar3d(460,140,490,180,2,1);bar3d(500,140,530,180,2,1);bar3d(540,140,570,180,2,1);bar3d(580,140,610,180,2,1);bar3d(300,185,330,225,2,1);bar3d(340,185,370,225,2,1);bar3d(380,185,410,225,2,1);bar3d(420,185,450,225,2,1);bar3d(460,185,490,225,2,1);bar3d(500,185,530,225,2,1);bar3d(540,185,570
25、,225,2,1);bar3d(580,185,610,225,2,1);bar3d(300,235,330,275,2,1);bar3d(340,235,370,275,2,1);bar3d(380,235,410,275,2,1);bar3d(420,235,450,275,2,1);bar3d(460,235,490,275,2,1);bar3d(500,235,530,275,2,1);bar3d(540,235,570,275,2,1);bar3d(580,235,610,275,2,1);bar3d(300,285,330,325,2,1);bar3d(340,285,370,32
26、5,2,1);bar3d(380,285,410,325,2,1);bar3d(420,285,450,325,2,1);bar3d(460,285,490,325,2,1);bar3d(500,285,530,325,2,1);bar3d(540,285,570,325,2,1);bar3d(580,285,610,325,2,1);bar3d(300,335,330,375,2,1);bar3d(340,335,370,375,2,1);bar3d(380,335,410,375,2,1);setcolor(2);bar3d(420,335,450,375,2,1);setcolor(2)
27、;bar3d(460,335,490,375,2,1);setcolor(2);bar3d(500,335,530,375,2,1);bar3d(540,335,570,375,2,1);bar3d(580,335,610,375,2,1);bar3d(300,385,330,420,2,1);bar3d(340,385,370,420,2,1);bar3d(380,385,410,420,2,1);bar3d(420,385,450,420,2,1);bar3d(460,385,490,420,2,1);bar3d(500,385,530,420,2,1);bar3d(540,385,570
28、,420,2,1);bar3d(580,385,610,420,2,1);setcolor(1);/*按钮字符 蓝色*/outtextxy(310,150,A);outtextxy(350,150,1);outtextxy(390,150,2);outtextxy(430,150,3);outtextxy(470,150,4);outtextxy(505,150,5);outtextxy(550,150,6);outtextxy(590,150,7);outtextxy(310,195,B);outtextxy(345,195,8);outtextxy(385,195,9);outtextxy
29、(425,195,=);outtextxy(465,195,+);outtextxy(505,195,-);outtextxy(550,195,*);outtextxy(590,195,/);outtextxy(310,245,C);outtextxy(344,250,mod);outtextxy(385,245,xy);outtextxy(425,245,log);outtextxy(465,245,ln);outtextxy(505,245,int);outtextxy(547,240,16);outtextxy(550,250,|);outtextxy(550,260,2);outtex
30、txy(590,245,0);outtextxy(310,295,D);outtextxy(345,295,cos);outtextxy(385,295,x3);outtextxy(430,295,n!);outtextxy(465,295,tan);outtextxy(505,295,x2);outtextxy(550,295,.);outtextxy(590,290,8);outtextxy(590,300,|);outtextxy(590,310,2);outtextxy(310,345,E);outtextxy(345,345,1/x);outtextxy(385,338,sin);o
31、uttextxy(425,338,exp);outtextxy(507,340,10);outtextxy(510,350,|);outtextxy(510,360,2);outtextxy(550,340,8);outtextxy(550,350,|);outtextxy(547,360,16);outtextxy(590,340,2);outtextxy(590,350,|);outtextxy(587,360,16);outtextxy(310,395,F);outtextxy(347,390,10);outtextxy(350,400,|);outtextxy(350,410,8);o
32、uttextxy(387,390,10);outtextxy(390,400,|);outtextxy(387,410,16);outtextxy(430,390,2);outtextxy(430,400,|);outtextxy(427,410,10);outtextxy(465,395,QIT);outtextxy(508,395,CE);outtextxy(550,390,2);outtextxy(550,400,|);outtextxy(550,410,8);outtextxy(590,390,8);outtextxy(590,400,|);outtextxy(587,410,10);
33、setcolor(4);outtextxy(465,350,sft);outtextxy(388,347,16);outtextxy(391,356,|);outtextxy(388,366,10);outtextxy(428,347,16);outtextxy(431,356,|);outtextxy(432,366,8);setlinestyle(0,0,3);setcolor(1);setfillstyle(1,7);bar3d(350,40,550,100,2,1);setlinestyle(0,0,1);line(351,60,549,60);line(450,40,450,60);
34、line(415,61,415,98);setcolor(5);setfillstyle(1,3);bar(352,42,435,59);/*填充x*/outtextxy(355,48,x=);setcolor(6);bar(461,42,548,59); /*填充y*/outtextxy(465,48,y=);setfillstyle(1,6);bar(436,42,460,59);/*填充符号*/outtextxy(355,75,Result=);setcolor(5);setfillstyle(1,15);bar(416,61,549,98);/*填充结果*/*开始*/ x=x0; y=
35、y0; gotoxy(x,y); setcolor(6); arrow();/*显示光标*/ putimage(x,y,rar,XOR_PUT); m=0; n=0; strcpy(str2,); while(v=specialkey()!=45) while(v=specialkey()!=ENTER) /*当压下键不是回车时*/ putimage(x,y,rar,XOR_PUT); /*显示光标图象*/ if(v=RIGHT) /*向右*/ if(x=595) x=x0; m=0; else x=x+40; m+; if(v=LEFT) /*向左*/ if(x=x0) x=595; m=8
36、-1; else x=x-40; m-; if(v=UP) /*向上*/ if(y=410) y=y0; n=0; else y=y+50; n+; putimage(x,y,rar,XOR_PUT); c=str1n*8+m; if(isxdigit(c)|c=.) /*判断是否是十六进制的数字、字母或小数点*/ if(flag1=-1) /*flag1为负数标志*/ strcpy(str2,-); flag1=1; sprintf(temp,%c,c);/*将字符保存到字符串变量temp中*/ strcat(str2,temp); /*将temp中的字符串连接到str2中*/ if(fla
37、g2=1) /*flag2为填充x或y的标志*/ setfillstyle(1,3); bar(352,42,435,59);/*填充x*/ setcolor(5); outtextxy(355,48,x=); outtextxy(372,48,str2);/*显示字符串x的值*/ if(flag2=0) setcolor(6); setfillstyle(1,3); bar(461,42,548,59); /*填充y*/ outtextxy(465,48,y=); outtextxy(480,48,str2);/*显示字符串y的值*/ flag2=1; if(c=+) num1=atof(s
38、tr2);/*将第一个操作数转换为浮点数*/ strcpy(str2,); /*清空str2*/ act=1; setfillstyle(1,6); setcolor(9); bar(436,42,460,59); outtextxy(445,47,+); /*显示+*/ flag2=0; if(c=-) if(strcmp(str2,)=0) flag1=-1; else num1=atof(str2); strcpy(str2,); /*将str2清空*/ act=2; /*做计算减法标志值*/ setfillstyle(1,6); setcolor(9); bar(436,42,460,
39、59); outtextxy(445,47,-); /*显示-*/ flag2=0; if(c=*) num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将str2清空*/ act=3; /*做计算乘法标志值*/ setfillstyle(1,6); setcolor(9); bar(436,42,460,59); outtextxy(445,47,*); /*显示*/ flag2=0; if(c=/) num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,); /*将str2清空*/ act=4; /*做计算除法标志值*/ setfillstyle(1,6); setcolor(9); bar(436,42,460,59); outtextxy(445,47,/); /*显示/*/ flag2=0;