课程设计的经验总结

来源:互联网 发布:淘宝dmm充值 编辑:程序博客网 时间:2024/06/14 09:46

关于C语言课程设计的经验总结


最近总算把期末考试给处理完了,在暑期再也没有课业压力的烦恼了

总算又可以开心的撸码了!

既然之前的一段时间都在忙课程设计,那今天就说说课程设计的事吧!


C语言课程设计的内容

C语言课程设计是我们计科专业在学期底需要进行的,

其主要内容是设计一个信息的处理系统,

主要实现的功能是:文件读取信息->程序处理信息->文件保存信息

下面我就功能部分进行说明:


1.文件的读取和保存

此部分主要的内容是文件部分的操作,

其中包括文件的打开与关闭,文件的读写操作,文件的关闭,以及一些文件指针的移动操作

只要熟练掌握了文件部分的知识,这一部分的功能实现,还是比较容易的了

2.程序处理信息

在这个课程设计中,对于信息的处理方式,要求是使用链表的方法

但是还是有同学使用,结构数组,这个就不太恰当了

相对于结构数组,链表还是有很大的优点的:

一,使用链表其中所存储的数据不是连续的,当程序不能一次性的处理所有的信息时,使用链表方便

二,从第一点继续往后谈,链表存储数据属于按需存取,分配内存空间,不会浪费内存空间

三,使用链表,之后对于信息的增,删,改,查,十分方便

以上两部分即为此项课程设计实现必要功能时的知识储备


接下来,我来分享我自己在课程设计中的经验

1.关于模块化函数设计的编程思想

模块化的编程思想是我在此次课程设计中感受最深的东西!

进行编程时,建议尽可能多的使用函数,并且将函数模块化.说实在的这样看上去,

程序的代码,美观,条理清晰

因为进行课程设计时,是多个班的同学一起在机房里进行的,有的同学程序有问题,在帮忙进行改Bug时

我发现了这样的问题,在改代码时,没有模块化的程序设计思想,整个程序杂乱无章,没有条理

不说函数原型,函数声明也没有…程序的可读性较低,

而且,更恶心的事是,不使用函数原型,你的函数顺序需要十分注意,否则,进行函数的相互调用时,就会报错!

下面我贴一张我的函数原型的图,这样的话条理清晰,而且可移植性高


2.关于使用google新闻组的便利之处

在进行文件读写时可以使用以下代码判断是否文件结束:

fp = fopen("/home/Evilcrow/C/information","r+");if(fp != NULL){    printf("Error!");    return NULL;}while(!feof(fp)){    ...........(省略)}

通过上面的代码即可使程序在遇到文件尾以前,循环读出/写入信息

那么,问题来了,要是文件为空文件,程序还能正常运行吗?

答案,是否定的!

while(!feof(fp))对于文件开头要是为空时无法处理的,会进入死循环

遇到这个问题,我思考了很久,没有找到合适的方法,最后还是去了小组的google新闻组上才找到了解答

最后,我自己也进行了尝试

但是,我也发现了一个问题,就是在fgtc进行首字符是否为空的判断之后,会私自吞掉一个字符

这样,每次进行操作完成之后,都会少一个字符,最后,我找到了fseek函数,对代码进行了以下修改:

if(fgetc(fp) == EOF){    printf("\t\t\t\tThe file is empty!\n");    return pHead;}fseek(fp,0L,0);while(!feof(fp)){    ...........(省略)}

进行这样的修改之后,便可以很顺畅的进行文件开头是否为空的判断了.

在这一过程中,收获到的不仅仅是这样的一个小技巧,灵活使用,善于使用google新闻组,真的很方便

不仅可以解决自己的问题,以前的前辈所留下的宝贵经验,也可以进行学习!


3.关于链表的操作

之前提到在整个课程设计中,链表的操作至关重要!

我之前一直以来创建的都是无头节点链表,之后在进行链表的操作时,十分困难

于是,听从恒毅哥的指导 @Hg_yi 使用了有头节点链表,之后的增,删,改,查,排序操作十分方便

使用有头节点的链表,头节点始终是不参与存储数据的,尤其是排序,很方便

此篇Blog重点是课设经验的总结,下次有机会总结一篇链表操作


4.Win与Linux下的一些区别

  • 关于system函数的问题

  • 关于密码回显的问题

  • getchar( )与system(“pause”)

system函数在Win下与Linux下有很大的区别

但是,在Linux下可以通过其他的方式来实现Win下各式各样的system函数

比如:getchar( )可以实现system(“pause”)的进程中止功能

密码的回显在Win下是依靠< conio.h >中的getch()函数实现不回显的功能的

在Linux下,则没有此函数头文件,需要依靠system(“stty (-)echo”)来实现输入的回显功能.


以上即为,目前我自己所总结的经验,要是大家认为哪里不对,可随时留言联系我.

原创粉丝点击