资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目录一课程设计目的1二. 设计环境1三. 设计内容1四设计说明2五. 设计程序流程图2六. 调试4(1) 错误原因分析一4(2) 语法错误5(3) 逻辑错误5七. 调试结果图6八. 结论与心得体会7九. 附录8具体代码实现8十参考文献18一. 课程设计目的1. 通过一个学期的学习,我认为要学号C语言程序这门课程, 不仅要认真阅读课本知识,更重要的是要通过上机实践来巩固我 们的知识,特别是学计算机专业的,我们更应该注重这一环节, 只有这样我们才能成为一个合格的计算机人才。通过这一个课程 设计,进一步来巩固所学的语句,女口:循环,和分支结构的运用。 还要熟悉四则运算和函数的算法。2. 通过这次课程设计扩展自己的知识面,课本上的东西是远 远不够的,可以通过上网或去图书馆查资料等方式得到一些新的 知识,3. 通过课程设计,加深对课程化设计思想的理解,能进行一 个系统功能分析,并设计一个合理的模块化结构,提高程序开发 能力。二. 设计环境1. 硬件:一台完整的电脑,包括键盘、鼠标,最小硬盘空间1 GHz2. 软件:安装有 Microsoft visual c+6.0三. 设计内容以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现 简单的加,减,乘,除等运算,以学习应用 MFC 库类编写对话框的原理,加深 对 C+ 类的学习及应用。(1)定义一个结构体类型数组,输入 09 及+、-、*等符号的 信息,将其信息存入文件中;(2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结 果;(3)画出部分模块的流程图;(4)编写代码;(5)程序分析与调试。四. 设计说明1)包含的功能有:加、减、乘、除运算,开方、平方等功能。(2)计算器上数字 09 为一个控件数组,加、减、乘、除为一个控件数组, 其余为单一的控件。(3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签 中。(4)计算功能基本上是用系统内部函数。(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、 以0 开头等不正常现象。“CE”按钮可以清除所有已输入的数据从头计算五. 设计程序流程图开始调用输入函数nt_gacik()六.调试根据电脑所给的提示出现语法错误,缺少变量的定义大多的 语法错误在通过书本参考下能够修改。主要是平时看书不仔细、 不太注意而产生的。如没有注意具体数据使用是有一定的范围限 定;过分重视分号的重要性而在if、while语句中画蛇添足加分 号;在使用文件的时候忘记将文件先打开,对打开的方式与使用 的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传 递等等。这些语法错误有信息框的提示一般是能够排除的。另外 还有部分注释的位置也错了,最重要的是逻辑上的错误,一般电 脑不容易发现。所以更要对程序仔细的检查。经认真修改之后重 新保存文件。(1) 错误原因分析一由于该程序相对来讲稍有些长,前后有些变量不容易联系起 来,但是在错误信息的提示下一般还是很容易找到。不过需要注 意的是在定义的时候有些函数使用同样的变量名而表示不同的作 用,因而使用要很小心,定义及定义的位置要特别留意。为减少 这样的错误我后来还是用不同的变量名来表示,结果引起的那些 错误解决了。(2) 语法错误大多的语法错误在通过书本参考下能够修改。主要是平时缺乏 锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的 范围限定;过分重视分号的重要性而在if、while语句中画蛇添 足加分号;在使用文件的时候忘记将文件先打开,对打开的方式(3) 逻辑错误编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机 器不易检查出来,这时需要对数据结果进行分析。这种错误的查 找是最难的,需要有相当的耐心和细心去把问题找出来。这也是 本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另 人满意的结果,此时解决的方法一则用“分段检查”的方法,在 程序的不同位置设几个printf函数语句,输出有关变量的值,逐 段往下检查,对检查出的错误进行修改,当调试完毕将设置的 printf都删去。若在程序中找不到问题,则再来考虑算法是否逻 辑严谨,再进行修改。如此循环往复,直到最后程序运行成功。 在本次程序编辑过程中,我就是常遇到编译能通过,能够运行程 序,但是总在输入、删除等操作完之后再想去看数据文件中存在 的数据记录的时候,却一条记录也显示不出来,可能是对n变量 的定义或使用出错了,于是在每个主要函数的操作过程中添加了 printf语句用来显示n的变化,在执行某个函数前添加插入语句 显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该 函数编写过程有错。诸如这样的调试方法,不断缩小检查范围, 最后将错误找到,进行修改。所以到最后我找到了错误,及时改 正,终于把程序完成了,一切功能显示正常。七.调试结果图邑 Turbci C 20 亡右i n哼牡 Verwpn hltpcy/vivjw.Mylb.cg-ni.cn半角【英文】威然CCSD3 37【Ub,06.迪5折谁版.(CHG八. 结论与心得体会经过了两个星期的C语言程序设计终于在老师的细心指导和 同学的热情帮助下基本完成了计算器课题的设计修改任务,虽然有 些地方不尽如人意但是初步达到了对自己的要求。信息时代是科技 和经济发展的产物,软件产业是信息时代的产物,它在我们的生活 工作中发挥着越来越大的作用,计算器的设计对我们知识的掌握有 很大的作用,更能方便他人,可行性很强。刚开始设计的时候找不 到头绪,不知道该从哪里下手,通过向同学询问和向老师寻求帮助 找走进了设计的门槛。在设计这个程序时,刚开始是根据网上的资 料,经过自己的反复尝试以及与与同学的讨论,这也不难,最好 还是被我搞定了。这些只要你自己愿意去尝试,问题都可以迎刃而 解的。通过网上查找到很多成功的计算器程序,通过对那些已经成功地 程序进行分析找到自己的设计思路,制定设计流程。并通过比较各种 程序了解各个程序的利弊,从而明确自己计算器的设计方向和如何通 过技术手段达到自己的目的。万事开头难,可是对于并不是很熟悉的 C语言在下面的工作中困难处处能遇见。通过查找C语言教材去图书 馆查找相关的资料和同学一起讨论终于把一个个棘手的陌生的问题 解决。测试阶段中发现了几处错误导致程序不能编译,通过耐心的分 析源代码终于编好了一个完整无误的程序。在这次的C语言程序设计实习中遇到了现实编程中必然见到的 问题通过这些问题的解决积累了编程的实践经验。在实际的编程操作中发现自己C语言知识的不足,加深了对C语言的理解。在 学习之余体验到收获的感觉。同时认识到程序员的工作并不是我 们想象的那么简单轻松的,在现在的编程中要有足够的耐心和热 情。具体代码实现#includedos.h#includeconio.h#includestring.h#includestdio.h#define normbut_bor 0x80#define presbut_but 0xb8#define normnum_but 0x8e#define presnum_but 0xb9#define spebut_char 0x2c#define win_color0xf2#define win_char0xfbstruct s_button/*按键的结构体*/int sx,sy,ex,ey;char *head;int press;button17;/*图表按键数*/char far *vid_mem;static int tx=32,ty=3; /*静态变量*/float v1=0.0,v2=0.0;struct stack/*结构体栈*/char s20;int tos,top;stack;char tag;init_stack()/*初始化栈*/stack.tos=0;stack.top=0; stack.sstack.tos=0; push(char ch)/*入栈*/stack.sstack.tos+=ch; stack.sstack.tos=0;pop()/*取栈数据通过*/if(stack.tos0) stack.s-stack.tos=0; clear_stack()/*清空栈*/ stack.tos=0; stack.top=0; stack.sstack.tos=0;int form_win() /*表格窗口初始化*/ textbackground(WHITE);/*窗口背景颜色*/clrscr(); /*清零*/ draw_win(); /*窗口画线*/ active_button(); /*窗口按键*/ out_text_win();/*输出文本窗口*/window_xy(32,3); /*计算结果窗口*/ draw_win()/*边框画线窗口*/int i;char far *t;char *s=这是一个模拟计算器!”; /*顶端边框输出的字符*/ draw_border(30,0,79,24,win_color); /*边框的位置和颜色*/ i=(79-30-strlen(s)/2+30;t=vid_mem+i*2;for(;*s;)*t+=*s+;*t+=win_color; /*顶端字体颜色*/draw_border(int sx,int sy,int ex,int ey,int attrib)/*边界线函数*/char far *t,far *v;int i;t=vid_mem; for(i=sx+1;iex;i+)v=t+sy*160+i*2;*v+=196;/*每一行上画线确定为直线*/*v=attrib; v=t+ey*160+i*2;*v+=196; /*每一行下画线确定为直线*/ *v=attrib; for(i=sy+1;iey;i+) v=t+i*160+sx*2;*v+=179; /*每一列左画线确定为直线*/*v=attrib; v=t+i*160+ex*2;*v+=179; /*每一列由画线确定为直线*/ *v=attrib; write_char(sx,sy,218,attrib);write_char(ex,sy,191,attrib);write_char(sx,ey,192,attrib); write_char(ex,ey,217,attrib);write_char(int x,int y,char ch,int attrib)/*字符输入函数*/char far *v;v=vid_mem;v+=x*2+160*y;*v+=ch;*v=attrib;active_button()/*图表按钮设定函数*/int i;make_button(0,32,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号