excel教学范文

2023-09-16

excel教学范文第1篇

一、运筹学的特点

(一) 运筹学是依靠数学发展起来的学科

运筹学是研究在一定的约束条件下用某些数学方法, 解决目标的优化问题。目前被广泛应用在管理, 经济以及国防等重要部门, 解决在内外环境的约束条件下合理分配人力、物力、财力的资源问题。在解决运筹学问题时, 为了达到决策科学性的效果, 可以利用数学工具, 将实际的复杂问题做到具体定量化。

(二) 运筹学是一门边缘学科

在运筹学的发展过程中, 借鉴吸收了管理科学等众多其他学科的研究成果, 使自己的内容不断地发展完善。同时与其他学科也有着越来越紧密的关系, 逐步形成了比较完善的边缘学科体系。

(三) 运筹学的发展与实际应用关系紧密

运筹学最早起源于军事问题, 后来在发展过程中逐渐形成了自己的理论体系, 同时随着运筹学的不断完善, 现在也被应用到社会、工业、农业、经济等多个领域。

(四) 运筹学的学科领域越来越大

近年来随着计算机技术的不断发展, 运筹学理论不断地发展完善, 出现了许多运筹学的新分支以及新算法, 例如规划论中的模糊规划和线性规划以及随机归家方面的新算法, 模拟技术、越策支持系统及专家系统、遗传算法等。总之, 运筹学的学科应用领域越来越大。

(五) 运筹学的发展促进推动了相关学科的发展

早期, 运筹学理论发展的并不完善, 导致运筹学在一些领域应用上造成了很大的局限性, 一般只在农业、工业、军事等有限的部门应用, 但是随着运筹学的发展, 现在逐渐扩展到社会、文化、服务等众多领域。例如城市规划、生态环境、教育部门等各个系统在进行定量的规划都会利用运筹学的各种理论方法, 这些部门不断地吸收运筹学的思想和方法, 把定量和定性相结合, 实现科学化和现代化。

二、运筹学教学中应用excel工具的意义

目前运筹学主要应用于解决系统的最优化问题, 但是由于运筹学涉及的变量较多, 约束条件相对复杂, 使得计算量特别大, 因此在教学中引用软件, 无论是对运筹学教学还是对运筹学来说, 都具有划时代的意义[1]。对学生来说, excel就比较熟悉而且相对简单, 所以基于excel进行运筹学的教学, 学生接受起来更加容易, 而且能够帮助学生快速掌握要点, 做到学以致用, 激发学生对运筹学的学习兴趣。

在运筹学教学引用excel工具, 在学习过程中, 学生就可以将所学理论知识与实践更好地结合起来, 用实践结果验证理论结果, 能够将运筹学的相关理论更好的消化吸收。在计算规划问题时, 利用excel就可以真实地反映出规划问题的数学模型, 防止将规划模型化为标准式, 还可以把数学模型进行灵敏度分析, 让计算机完成复杂的计算过程, 提高学生对运筹学学习的积极性[2]。在学生实际操作excel时, 出现问题也是在所难免的, 这时候老师可以组织学生展开讨论, 相互检查应用过程中存在的问题, 有利于培养学生解决问题的能力。

三、运筹学在教学方面存在的问题

(一) 学生数学基础薄弱导致学习动力不足

现在运筹学教学中最大的障碍就是学生的学习动力不足, 运筹学专业文理兼收, 由于文理科学生对数学的学习深度不同, 造成了一些运筹学专业的学生数学基础薄弱, 而且大部门学生对数学知识掌握的程度不够, 造成在学习运筹学的相关理论时很多数学知识都已遗忘, 加大了对运筹学的学习难度, 直接影响了学生对运筹学的学习兴趣。

(二) 理论与实践严重脱节

运筹学的课程目标就是加强对学生应用能力的培养, 而现在理论与实践的严重脱节导致教学目标出现了口号化的现象[3]。大部分学校对运筹学的授课侧重与理论方面, 着重于对数学模型的建立和求解而造成脱离实际, 缺少上机实验更没有加入excel等工具帮助教学。学生在实际应用时只能对理论进行生搬硬套, 导致学生难以学以致用。

(三) 教学体质问题和自身特点限制了运筹学的内容扩展

运筹学的内容涉及了很多数学、线性代数等方面的理论知识, 导致了计算量大, 方法体系多问题。在运筹学的学习上, 老师要在规定的时间内完成教学任务难度较大, 加上学生对理论部分的理解需要更多的时间, 另外由于部分高校对学时的压缩, 导致老师职能对基础内容进行讲解, 造成了对运筹学的学习深度不够, 对运筹学教学内容的扩展起到了一定的限制作用。

四、基于excel工具运筹学在教学方面的改革措施

(一) 利用excel重点解决学生的理解和应用

在教学过程中, 既要保证教学的严格性特征, 又要能够做到解决学生的理解和应用问题[3], 对于运筹学理论的学习更要如此。但是如果一味地追求严格性, 学生接受呢起来就有一定的困难, 甚至可能会造成负面的影响。因此, 老师在讲课过程中要做到, 对于重要的定理理论知识要进行严格的讲授, 对于不太重要的理论要去强调对这些理论的内容理解和实际应用。在帮助学生理解运筹学理论时, 利用excel简化计算量可以起到更好的作用。

(二) 通过案例的分析讨论, 提高学生的理解程度和分析能力

运筹学是一门应用性很强的学科, 所以在实际问题中具有大量的典型案例。为了学生能够更好地掌握运筹学, 在授课中可以将实际案例和教学相结合, 提高学生的理解能力。在很多实际问题的解决上, 经常会使用到动态规划。

但是在教学过程中, 很多学生反映在建立动态规划模型存在着较大困难, 因为在解决实际问题时, 学生对于如何确定状态变量、决策变量等没有具体的解决方法。所以为了能够更好地解决这个问题, 老师可以适当增加对案例的授课时间, 在案例分析时可以引入excel进行辅助学习, 有助于学生能够更好地对案例理解。通过对这些典型案例的长时间学习, 使学生掌握彻底掌握动态规划的知识点。

(三) 强化excel等计算工具的应用

在教学中要强化一系列计算工具的应用。运筹学的大部分问题算法复杂、计算量大, 靠人工计算非常困难。随着现代科技的发展, 计算机相对于人工来说计算速度更快, 同时精确度更高, 所以可以利用一些计算工具例如excel来解决运筹学的问题, 在课程的设计上, 要适当增加excel的讲授课时, 以便学生能够尽快使用excel工具进行运筹学的求解, 顺利推动运筹学教学的改革。

摘要:随着计算机技术的不断发展完善, 现代的教学手段也变得越来越先进和丰富, 由于运筹学的理论推导烦琐、各种算法的计算过程复杂, 所以使用先进的教学手段和方法来提高授课的效率就显得尤为重要, 就必须要对现行的教学方法进行改革。本文阐述了在运筹学的学科特点以及在教学中引入excel工具教学的意义, 分析了目前基于excel教学的运筹学教学中存在的问题, 并给出运筹学教学改革的措施。

关键词:excel,运筹学,教学改革

参考文献

[1] 武梦梦.“运筹学”课程多元化教学改革与实践[J].吕梁学院学报, 2018, 8 (05) :86-87.

[2] 李美岩, 焦爱英, 刘红宇, 陈洁.运筹学课程教学改革研究——基于“学以致用”角度的教学探索[J].当代教育实践与教学研究, 2018 (08) :78-79.

[3] 李如兵, 宗凤喜.运筹学教学中Excel的应用研究[J].绵阳师范学院学报, 2012, 31 (08) :148-152.

excel教学范文第2篇

一、《Excel在财务中的应用》课程简介

《Excel在财务中的应用》课程是一门操作性极强,职业导向性明显的专业技能课。该门课程一般设置在高职院校的大二第二学期或大三第一学期,是学生在学习了《大学计算机基础》《财务会计》《财务管理》等课程内容后的一门综合应用课程。《Exce在财务中的应用》课程以财务工作流程为主线,模拟企业真实业务数据进行操作演练,主要授课内容有:Excel制作财务会计表格、Excel在账务处理中的应用、Excel在财务报表中的应用、Excel在职工薪资管理中的应用、Excel在固定资产管理中的应用、Excel在进销存管理中的应用等。通过各类财务工作场景的真实模拟操作演练,一方面提高运用计算机软件高效处理财务数据的能力,另一方面也帮助学生了解更真实的业务处理环境,为其走上真实的财务工作岗位打下基础。

二、高职院校开设《Excel在财务中的应用》课程的现状

(一)学生计算机基础参差不齐

虽然在开设本课程之前,学生已先修了《大学计算机基础》课程,但针对性不强,学生只能掌握基础的计算机操作,对Excel软件的涉猎甚少,很多学生几乎从未使用过Excel软件便开始了本课程的学习。而另外一部分学生,因为平时有使用计算机的习惯,对于Office套件中的各种软件都相对熟悉,并有简单的操作经验。这就造成了在课程教学之初,就存在两极分化的现象。使教师和学生在授课和学习过程中都感觉到一定困难。

(二)教学课时不足

由于以上第(一)点原因,目前本课程的教学会从Excel软件基本操作讲起,进而引入“公式”“函数”“数据处理工具”,最后才能进入财务应用部分,而应用部分至少包括“账务处理系统应用”“工资薪金系统应用”“进销存管理系统应用”“固定资产管理系统应用”等模块。教学内容众多,并且部分内容理解难度较大。而目前大多数高职院校,本课程的课时量均在40-50课时之间,以至于教师在教学过程中不可能对单个学生进行操作指导,甚至需要压缩课程内容或减少模拟工作任务以完成课程教学内容,使学生的技能掌握不能达到预期效果。

(三)缺乏有效的练习

《Excel在财务中的应用》课程包含了大量的实操内容,需要经过多次反复的练习才能有效的转化为学生的能力。多数高职院校本课程的开设均采用“讲授、演示、练习”一体的教学方式,但往往教师在教学过程中迫于课时的压力,会缩减学生练习的时间。学生的学习变为了被动化的接受,缺乏主动的思考和探究,影响学生的学习效果。课后,学生也往往因为没有条件练习或没有题目练习而忽略了这最重要的一环。

(四)硬件条件难以满足教学的需要

虽然大部分高职院校财务类专业都开设有本课程,但学校往往对本课程的地位重视不足,很多学校仍作为选修课或拓展课设置,以至于对本课程的资金支持不足,认为只要有计算机教室,计算机安装了Excel软件便可开展教学。没有专门的教学软件,教师教学过程中的取材就难以做到真实化。而在实际的财务工作中,Excel处理、分析的数据很多是需要会计人员从各类软件中导出的,这样单纯使用Excel软件授课,就很难达到与软件结合学习的效果。

(五)课程考核缺乏有效的手段

本课程作为一门实务操作课程,传统的纸质答卷方式显然与技能操作的考核不相适应,而在没有专门的教学软件系统情况下,课程考核缺乏有效的手段。通常教师会以实训任务的方式进行上机测试,要求学生在规定的时间内完成一项真实的财务工作任务,以此考察学生的掌握程度。此方法虽然有一定可行性,但不可能全面的考察本课程的所有核心技能,也很难做到公平、公正。

三、《Excel在财务中的应用》教学改革建议

(一)合理运用“翻转课堂”理念解放课堂教学

面对学生基础参差不齐、教学内容众多而课时不足的现状,将部分内容搬上网络、移入课前可能是有效的解决方式。多数高职院校为学生提供了在线教育综合平台,可以将“Excel基本操作”、“Excel函数基本语法操作”、“Excel数据处理工具的使用”等操作性内容提前录制教学视频,放在教学平台供学生课前学习。学生可根据自身情况,选择相应内容进行课前学习,教师上课变为一种答疑解惑的方式,只对重点内容进行少而精的讲解,变被动填鸭式教学为主动探究式学习。同时,通过教学平台进行课后练习、章节测试,并进行在线答疑,帮助学生巩固知识体系,使课程达到一种“学生主动学习为主,教师从旁指导为辅”的教学效果。

(二)设立《Excel在财务中的应用》综合实训项目

作为一门实操性课程,大量的实训演练是有效掌握技能的保证。《Excel在财务中的应用》课程具有计算机课程的特点,没有实务操作,极易遗忘。一套完整的真实财务数据处理任务,对所学知识点进行综合演练,能有效的使学生对所学知识融会贯通。各院校可根据自身的实际情况,在学期末集中化实训或分散于每周的教学过程中,用具体的工作导向设计实训项目,模拟真实的财务工作情境,让学生打开思路,主动去发现问题并积极找到解决问题的方法。

(三)运用专业化教学软件,进行财务电算化一体化教学

目前多数院校除本门课程外,还开设有《会计电算化》、《ERP供应链》等其他电算化课程,为此也专门配备了财务软件,但各个课程之间缺少有效的衔接。使得专业化财务软件和Excel数据处理不能有效的结合起来。《EXCEL在财务中的应用》这门课程综合性和针对性较强,需要进行专门的软件配置,将企业的整个财务电算化进行结合,这样能够让学生感受更真实的财务系统,真正让数据生成、数据存储、数据处理、数据分析及数据呈现融为一体。

(四)课程考核方式过程化

本门课程的考核应体现过程性主导,淡化期末测试的作用。学生每一次的课前教学平台任务完成度、课堂主动性、课内实训项目练习、课后练习完成度、网络答疑互动、综合实训测评等都应成为考核的一部分,并且应占大部分。期末测评只针对教学中的重点内容进行测试,考核学生解决实际问题的能力,该部分的成绩占比不宜超过30%。过程性考核与期末测评相结合的方式,不仅提高了学生对平时教学过程、实际操作任务的重视程度,也提高了考核的综合性,有利于学生综合素质的提高。

结束语:

综上所述,《Excel在财务中的应用》课程现阶段还存在各种各样的问题,实际教学过程效果不佳。要提高本课程的教学效果,使学生真正的有所收获,还需要在课程设计和课程建设方面再下功夫。本文针对当前高职院校该课程的开设现状,从不同角度出发提出了相应的教学改革建议,以期能让学生真正的参与到课堂教学中来,让学生学有所得、学有所获,为其成为高素质应用型的人才打下基础。

摘要:《Excel在财务中的应用》是高等职业院校财务类专业培养核心专业能力的一门技能型课程。现阶段各高职院校对该门课程的重视程度不足, 教学实施存在各种各样的问题。因此, 笔者结合教学实践经验, 针对现实教学问题提出了相应的课程改革建议, 如运用“翻转课堂”理念进行混合式教学;增加综合实训项目;运用专业化教学软件实现财务电算化一体化教学, 同时将课程考核过程化, 从不同角度促进本课程的教学改革。

关键词:财务应用,Excel,教学改革

参考文献

[1] 孔令军.《Excel在财务中的应用》课程在实践教学改革中的研究[J].知识经济, 2019, (10) :177+180.

[2] 劳汉平.《EXCEL在财务会计中的应用》的实训教学创新分析[J].教育现代化, 2018, 5 (16) :51-52.

[3] 于清敏.由“教学做合一”引起的思考——以《Excel在财务中的应用》课程开发与建设为例[J].财会通讯, 2012, (17) :44-45.

excel教学范文第3篇

2005年开始, 我们开始将Excel电子表格运用于《生物统计学》实验教学, 发现Excel提供的统计函数和分析工具结合电子表格技术完全可以满足实验教学的需要, 取得了良好的教学效果。本文重点介绍了Excel在《生物统计学》实验教学中的应用特点, 详细分析了Excel用于《生物统计学》实验教学的可行性, 总结了我们多年来的应用效果, 以期于同行交流。

1 Excel在《生物统计学》实验教学中的应用特点

1.1 具备数据分析功能

在默认的情况下, Excel并没有安装“数据分析库”, 因此无法进行统计分析。单击“工具”菜单栏中的“加载宏”命令, 然后在“加载宏”对话框中选定“数据分析库”, 再单击“确定”键, “数据分析”即加载成功。《生物统计学》实验教学中的统计分析方法大部分都在其中, 如统计假设检验、描述统计、方差分析、相关与回归等。这些分析功能都涉及大量的公式和复杂的计算, 其中有些计算是不同的样本重复数据套用相同的公式, 学生在平时的学习中对此多抱畏难情绪。所以, 在实验教学充分运用Excel的“数据分析”功能, 可以大大简化计算过程, 提高学生的学习效率。

1.2 具备制作图表功能

Excel提供了14种标准图表类型, 每种图表类型中含有2~7种子图表类型;还有20种自定义图表类型可以套用。用户可以对图表区、绘图区、数据系列、坐标轴 (标题) 、图例、图表标题的格式, 如文字的颜色、字体、大小, 图背景图案、颜色等等进行修改调整, 使图表爽心悦目。图与数据关系密切, 具有“即改即可见”的效果。

1.3 具备公式编辑功能

Excel具有编辑公式“=”功能, 公式编辑后保存, 以后只要替换相关数据, 计算结果就会自动计算。

1.4 具备统计函数功能

除数学函数、逻辑函数等常用函数外Excel提供了大量的统计函数, 如Average (均数) 、STDEV (标准差) 、QUARTILE (四分位数) 、COV (协方差) 函数等进行统计分析等等。

2 Excel用于《生物统计学》实验教学的可行性

学过《生物统计学》的人, 大概都不会忘记背诵那些艰深符号和公式的痛苦经历, 事实上, 统计软件足以解决设个窘境。目前, 市面上有关统计分析的计算机软件非常多, 专业的统计分析软件SPSS、SAS、D P S、S T A T I S T A C A、S Y S T A T等功能固然强大, 统计分析的专业性、权威性不可否认, 但是, 这些计算机软件存在以下两大缺点。第一, 软件价格过于昂贵 (高达数千元至数万元) , SAS软件更是只租不买, 对于一般学生、单位都负担不起, 因此普及性很低。第二, 这些软件艰深难懂, 非短期内能够学会。在没有适当统计软件的情形下, 我们常常被迫拿起计算器, 以最原始的分析方法来解决问题。在计算机普及的21世纪, 迫切需要一套经济实用的软件, 人人负担得起, 普及性高, 而且容易操作, 一学就会。

Microsoft开发的Excel软件作为一款优秀的表格软件, 它提供的统计分析功能虽然比不上专业统计软件, 但比专业统计软件易学易用, 便于掌握。在Windows操作系统极为流行的时代, Excel软件随处可见。在大学阶段, 大学一年级均开设计算机基础及常用办公软件Office等课程, 学生具备关于Excel中电子表格的基本知识和操作能力, 这为Excel的统计分析工具在《生物统计学》实验教学中的应用提供了基础知识准备。对于《生物统计学》实验教学而言, 利用Excel提供的统计函数和分析工具, 结合电子表格技术, 已能满足统计方面的要求。

3 Excel用于《生物统计学》实验教学的应用效果

在没有运用Excel在《生物统计学》实验教学时, 让学生用计算器来算, 无法进行较为复杂的统计分析。2005年开始, 我们开始尝试运用Excel解决《生物统计学》实验教学的大量统计计算, 使学生轻松完成实验任务。在实验教学过程中力求简明易懂, 在介绍和回顾Excel基本操作的基础上, 结合生物统计学的基本理论和方法, 通过实例, 深入浅出地讲解利用Excel进行统计分析的方法和步骤, 从而达到将抽象统计理论与直观形象操作相结合的目的。

我们以学过《生物统计学》课程的学生为调查对象, 采用问卷调查的方式随机调查了286名学生, 其中有98.5%的学生认为有必要把Excel作为《生物统计学》实验教学的辅助手段, 淘汰传统的CASIO计算器。

Excel在《生物统计学》实验教学中的应用, 可以节省大量的时间, 丰富教学内容, 增强趣味性, 活跃课堂气氛, 使一些比较抽象、难以理解的内容具体化、简单化, 完成传统教学手段下难以完成的任务, 使数据的方那系计算变得简单、快速、准确。Excel在《生物统计学》实验教学中的应用, 能够加深学生对《生物统计学》基础知识的理解, 有利于提高学生的统计分析能力, 同时增强学生使用常用办公软件的使用能力。

摘要:本文通过对Excel在《生物统计学》实验教学实践的总结, 重点介绍了Excel在《生物统计学》实验教学中的应用特点, 详细阐述了Excel用于《生物统计学》实验教学的可行性和应用效果。

关键词:Excel,生物统计学,实验教学

参考文献

[1] 盖钧镒.试验统计方法[M].北京:中国农业出版社, 2000.

[2] 王文中.Excel在统计分析中的应用[M].北京:中国铁道出版社, 2003.

[3] 唐五湘.Excel在统计中的应用[M].北京:电子工业出版社, 2002.

[4] 刘权.园艺试验设计与统计[M].北京:中国农业出版社, 1997.

excel教学范文第4篇

1. 让Excel助word一臂之力

很多人只会使用word,而对Excel很少触及。但很多时候,必须要制作一些格式比较标准的表格,这时,可借助Excel:先启动Excel,做一个工作表,将其保存(如“工资”)。再选中相应单元格内容,按下Ctrl+C键。然后启动word,选择“编辑”→“选择性粘贴”,在弹出的“选择性粘贴”对话框中选中“粘贴链接”,然后在“形式”框中选择“带格式文本(RTF)”,单击“确定”按钮,将这个表格文件保存为“工资表格”。以后要对文件作修改时,只要分别打开刚才保存的“工资表格”和“工资”两个文件,在“工资”工作表中做一些必要修改,然后在“工资表格”文件中用右键单击表格内任一地方,在弹出的菜单中选择“更新链接”,这时便可把在“工资”工作表中所做的改动在word表格中体现出来了。

2. 很多朋友在Excel单元格中打“√”号都是通过插入符号命令来插入的,试试下面的方法:按住Alt键不放再输入小数字键盘上的数字41420,松开Alt键即可

excel教学范文第5篇

1操作系统:Windows XP 、Windows7 2.编程语言:C++ 3.程序实现环境:Visual C++ 6.0

二、算法思想

三、使用说明

程序界面如下图:

用户可以在编辑框中输入4个控制点的坐标,也可以通过在绘图区内直接通过鼠标的单击指定4个控制点的位置,输入4个控制端点后,单击“画Bezier曲线”按钮即可绘制Bezier曲线。

四、实验结果

五、程序代码(关键代码)

void CMFC_BezierCurve2Dlg::OnLButtonDown(UINT nFlags, CPoint point) { if(pointOrd==1)

//原点(490,270) {

m_p1_x = point.xpoint.y; } if(pointOrd==2) {

CDC *pDC=GetDC();

pDC->MoveTo(490+m_p1_x, 270-m_p1_y);

pDC->LineTo(point.x, point.y);

m_p2_x = point.xpoint.y; } if(pointOrd==3) {

CDC *pDC=GetDC();

pDC->MoveTo(490+m_p2_x, 270-m_p2_y);

pDC->LineTo(point.x, point.y);

m_p3_x = point.xpoint.y; } if(pointOrd==4) {

CDC *pDC=GetDC();

pDC->MoveTo(490+m_p3_x, 270-m_p3_y);

pDC->LineTo(point.x, point.y);

m_p4_x = point.xpoint.y; } pointOrd++; UpdateData(FALSE);

CDialog::OnLButtonDown(nFlags, point); }

voidGetCnk (int n, int *c) { inti,k; for(k=0; k<=n; k++) {

c[k]=1;

for(i=n; i>=k+1; i--) c[k]=c[k]*i;

for(i=n-k; i>=2; i--) c[k]=c[k]/i; } }

void CMFC_BezierCurve2Dlg::GetPointPos(intControlN, double t, int *c) { int k, n=ControlN-1; double Bernstein; Pt.x=0.0; Pt.y=0.0; for(k=0; k

Bernstein=c[k]*pow(t,k)*pow(1-t,n-k);

Pt.x += ControlP[0][k].x * Bernstein;

Pt.y += ControlP[0][k].y * Bernstein; } }

void CMFC_BezierCurve2Dlg::OnButtonDrawBeziercurve() { UpdateData(); pointOrd=1; CDC *pDC=GetDC(); ControlP[0][0].x=m_p1_x;ControlP[0][0].y=m_p1_y; ControlP[0][1].x=m_p2_x;ControlP[0][1].y=m_p2_y; ControlP[0][2].x=m_p3_x;ControlP[0][2].y=m_p3_y; ControlP[0][3].x=m_p4_x;ControlP[0][3].y=m_p4_y;

pDC->MoveTo(490+m_p1_x, 270-m_p1_y); pDC->LineTo(490+m_p2_x, 270-m_p2_y); pDC->LineTo(490+m_p3_x, 270-m_p3_y); pDC->LineTo(490+m_p4_x, 270-m_p4_y);

int *C, i; intControlN=4, m=500; C=new int[ControlN]; GetCnk (ControlN-1, C); for(i=0; i<=m; i++) { GetPointPos(ControlN, (double)i/(double)m, C); pDC->SetPixel(490+Pt.x, 270-Pt.y, 255); } }

两段Bezier曲线的拼接实验报告

一、程序实现环境

1操作系统:Windows XP 、Windows7 2.编程语言:C++ 3.程序实现环境:Visual C++ 6.0

二、算法思想

三、使用说明

程序界面如下图:

用户可以在编辑框中输入4个控制点的坐标,也可以通过在绘图区内直接通过鼠标的单击指定4个控制点的位置,输入4个控制端点后,单击“画Bezier曲线”按钮即可绘制Bezier曲线。

分别绘制完两段Bezier曲线后,单击拼接即可实现两段曲线的拼接。

四、实验结果

五、程序代码(关键代码)

void CMFC_BezierCurve2Dlg::OnLButtonDown(UINT nFlags, CPoint point) { if(pointOrd==1)

//原点(490,270) {

m_p1_x = point.xpoint.y; } if(pointOrd==2) {

CDC *pDC=GetDC();

pDC->MoveTo(490+m_p1_x, 270-m_p1_y);

pDC->LineTo(point.x, point.y);

m_p2_x = point.xpoint.y; } if(pointOrd==3) {

CDC *pDC=GetDC();

pDC->MoveTo(490+m_p2_x, 270-m_p2_y);

pDC->LineTo(point.x, point.y);

m_p3_x = point.xpoint.y; } if(pointOrd==4) {

CDC *pDC=GetDC();

pDC->MoveTo(490+m_p3_x, 270-m_p3_y);

pDC->LineTo(point.x, point.y);

m_p4_x = point.xpoint.y; }

pointOrd++; UpdateData(FALSE);

CDialog::OnLButtonDown(nFlags, point); }

voidGetCnk (int n, int *c) { inti,k; for(k=0; k<=n; k++) {

c[k]=1;

for(i=n; i>=k+1; i--) c[k]=c[k]*i;

for(i=n-k; i>=2; i--) c[k]=c[k]/i; } }

void CMFC_BezierCurve2Dlg::GetPointPos(intControlN, double t, int *c) { int k, n=ControlN-1; double Bernstein; Pt.x=0.0; Pt.y=0.0; for(k=0; k

Bernstein=c[k]*pow(t,k)*pow(1-t,n-k);

Pt.x += ControlP[pointGroup][k].x * Bernstein;

Pt.y += ControlP[pointGroup][k].y * Bernstein; } }

void CMFC_BezierCurve2Dlg::BezierCurve() { CDC *pDC=GetDC(); pDC->MoveTo(490 + ControlP[pointGroup][0].x, 270ControlP[pointGroup][1].y); pDC->LineTo(490 + ControlP[pointGroup][2].x, 270ControlP[pointGroup][3].y);

int *C, i; intControlN=4, m=500; C=new int[ControlN]; GetCnk (ControlN-1, C); for(i=0; i<=m; i++) {

GetPointPos(ControlN, (double)i/(double)m, C);

pDC->SetPixel(490+Pt.x, 270-Pt.y, 255); } }

void CMFC_BezierCurve2Dlg::OnButtonDrawBeziercurve() { UpdateData(); pointOrd=1;

ControlP[pointGroup][0].x=m_p1_x; ControlP[pointGroup][0].y=m_p1_y; ControlP[pointGroup][1].x=m_p2_x; ControlP[pointGroup][1].y=m_p2_y; ControlP[pointGroup][2].x=m_p3_x; ControlP[pointGroup][2].y=m_p3_y; ControlP[pointGroup][3].x=m_p4_x; ControlP[pointGroup][3].y=m_p4_y;

BezierCurve(); pointGroup++; }

void CMFC_BezierCurve2Dlg::OnButtonMatch() { pointGroup--;

double dx, dy; double k1, k2, s, s1, s2; int i; CPoint temp; dx = ControlP[pointGroup][0].xControlP[pointGroup-1][3].y; for(i=0; i<4; i++) {

ControlP[pointGroup][i].x -= dx;

ControlP[pointGroup][i].y -= dy; }

k1=1.0*(ControlP[pointGroup-1][3].y-ControlP[pointGroup-1][2].y)/(ControlP[pointGroup-1][3].x-ControlP[pointGroup-1][2].x); k2=1.0*(ControlP[pointGroup][1].y-ControlP[pointGroup][0].y)/(ControlP[pointGroup][1].x-ControlP[pointGroup][0].x); if( k1>0 ) {

if (ControlP[pointGroup-1][2].x

s1 = atan(k1);

else

s1 = PI + atan(k1); } else if ( k1<0 ) {

if (ControlP[pointGroup-1][2].x

s1 = 2*PI + atan(k1);

else

s1 = PI + atan(k1); }

if( k2>0 ) {

if (ControlP[pointGroup][0].x

s2 = atan(k2);

else

s2 = PI + atan(k2); } else if ( k2<0 ) {

if (ControlP[pointGroup][0].x

s2 = 2*PI + atan(k2);

else

s2 = PI + atan(k2); } s = s1(ControlP[pointGroup][i].y-ControlP[pointGroup-1][3].y) * sin(s) + ControlP[pointGroup-1][3].x;

temp.y = (ControlP[pointGroup][i].x-ControlP[pointGroup-1][3].x) * sin(s) + (ControlP[pointGroup][i].y-ControlP[pointGroup-1][3].y) * cos(s) + ControlP[pointGroup-1][3].y;

ControlP[pointGroup][i].x = temp.x;

ControlP[pointGroup][i].y = temp.y; }

上一篇:教学设备下一篇:暗示教学法

全站热搜