- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C程序设计上机课程设计指导书
C程序设计上机课程设计
.1 准备工作
这章的程序编写与前面几章的有所不同,它是根据某一个具体研究的算法来进行编程,因此具有一定的科研价值或实用价值。程序须达到该算法的某些特殊要求,如实时性、可扩展性等,在这些方面需要注意体现。另外,根据算法的当前应用领域,程序须设计一种与之相关的动画来进行演示。
2.1.1 实现规划
一个算法思想一般都会以一种具体的描述形式来表达,并且都提供了算法的具体步骤或流程,而算法的验证则有待编程来实现。这一方面限制了编程者的发挥(因为必须按照算法的步骤来严格执行),而另一方面也相应地对编程者提出了更高的要求。因此,先要全面了解算法的思想以及它的作用。
本程序主要实现一种多目标熵权决策分析算法。多目标决策分析是指在有多个不同目标时,如何根据各种条件来选出一个最优目标进行锁定。熵权决策分析算法就是针对这一问题提出来的,具体的算法内容将在下一节来详细介绍。
程序实现的预期规划如下:
设计适当的数据结构
逐步实现算法的各个步骤,并进行验证
设计一种动画演示形式
在动画中调用算法来演示结果。
另外,在程序中还计划加入辅助文档,以显示算法的各个中间步骤。
现在,根据以上,可以将程序分为以下几个模块:
算法模块:用于实现算法,包括算法各个步骤及相关函数。
主模块:用于显示动画,在动画中调用算法并演示算法结果。
辅助模块:用于显示算法中间过程的数据。
2.1.2 将程序代码分割为几类源文件
先抛开程序的具体内容设计,而来解决一个程序文件分割的问题。这也可以说是本上机课程设计要讲到的第一个新的知识点。
当一个程序代码过长时,往往很难进行维护和修改。而且过长的代码会弄得读程序的人头晕脑涨。于是,可以根据程序划分的模块来将代码分为几个子文件。一些有经验的程序员建议,尽量把一个大的程序按功能分成多个文件,一个文件尽量不要超作1000行,这样就可以比较清楚哪个文件的代码是健壮的,而哪个文件有可能有隐患,在进行程序调试和修改时便可以有针对性的检查相应文件代码。
那么,如何进行文件代码的分割?又如何使之成为一个整体?分割其实很简单,就是把某一模块或某一类代码放到一个文件里,并保存为后缀名为 .c或 .h的文件。比如,将此程序的算法实现部分的代码放到一块,并保存为arithmetic.c,而动画演示部分的代码则保存为display.c。
在此项目中,根据前面所划分的几个模块,可以将程序分割为以下几个模块,依次是
main.c:实时运行算法并用动画演示算法结果。
DMFunc.c:算法的各个步骤及与其相关的。
display.c:动画显示的各相关函数。
help.c:帮助文档
head.h:整个程序所用到的系统头文件、宏定义、全局变量以及主要函数申明。
在分割完以后,将这些文件最好都放在一个文件夹内,比如d:\tk\。接下来进行各个文件的整合。在整个程序中,仍然只能有一个主函数main(),在该项目中这个主函数被放在文件main.c中。那么,假设要想在main.c中调用display.c这个文件中的函数和变量等,则只要在main.c的头文件包含部分象包含系统头文件一般将display.c包含进来便可,如下:
/*---------mian.c------------*/
#includedisplay.c
……
这种包含方式可以嵌套,比如在step.c中包含了display.c,而在main.c中又包含了step.c,则在main.c中也可以调用display.c中的函数和变量。但是要特别注意的是,在一个程序中,一个文件只能被包含一次,比如在step.c中包含了display.c后,在其他文件中如main.c中就不能再来包含display.c了,而只能通过包含step.c来间接包含display.c。所以,最好不要出现嵌套包含的情况。这样就需要将每个文件所实现的功能都分得很明确,一个文件要能实现一个较大较完整的功能。
实际上,一个文件只要在主程序中被包含了,在其他被主函数包含的文件中也可以调用该文件中。但是这里又有一个非常要注意的问题,那就是在主函数中各文件被包含的次序。
假设在主函数中,各文件是依次如下被包含的:
/*----------main.c-----------------*/
#includehead.c
#includedisplay.c
#includeDMFunc.c
#includehelp.c
则在文件DMFunct.c和help.c中可以调用display.c,而反过来,文件display.c却不能调用此二个文件,这是因为文件display.c在此三个文件之前被主函数包含,而C语言在执行时会按照顺序依次来执行这几个包含语句,所以如果在display.c中调用位于它以下的那些被包含的文件,则由
文档评论(0)