C语言课设心得分享(一)
今儿上完课设,老师果然讲的比较少,周四还不用去,看来还是学生自己折腾。我在做课设的过程中,攒了一些心得/体会,希望能和大家分享分享,也希望能一起探讨探讨。如果是我能回答的问题,我很乐意能够提供帮助。
课设这东西是要写出一个大的整体,和咱们上学期写的那些习题不太一样。那些题都是明确给出了具体的目的。而这个课设给出了一系列较为宏观的需求,要咱们自己去设计一些综合的方法,开始时可能觉得迷茫,无从下手,不知道该干什么。我的感受是在做课设之前,心里要有几个数,或者说对几样东西有谱,这样就能有效地开始着手我们的任务。
1、先构思,后写代码
以前我试图写过一个贪吃蛇游戏,没有进行构思和设计,直接开始写代码,想到哪就写到哪,结果开发到中期时,整个程序的结构已经混乱不堪,完全无法维护,不得不放弃了程序。这回我做课设(小球移动)之前,虽然也没做什么规范、详细的设计,但至少按照一些程序设计的方法,简单勾勒了一下程序的框架。
比如考虑到面向过程的程序设计,那么我想我有哪些数据(输入,小球等),进而设计数据的设计结构。我选择了用链表+结构体存储小球们的信息,我在后期很多功能的拓展,得益于我为小球选择了较为正确的数据结构,因为我很方便就能添加小球的属性(在咱们将来的面向对象编程中,也就意味着还能很方便地添加小球的功能)。再考虑数据的处理,输出(显示、保存等)。
其中对数据的处理自然是核心任务,那我就能由此展开来,考虑模块化的程序设计方法。我将对数据处理的不同任务划分为不同模块(显示球、移动球、响应点击等),高内聚我做的并不好,因为我经常在一个模块中完成一个以上的任务,最性质恶劣的就是我在delete_ball模块中塞进了许多功能(因为我到最后懒得再新弄一个模块再设计接口了,但现在一想也就是5分钟的事儿)。但是模块之间的低耦合我想我弄的还是不错的,除非是作为枢纽的模块,否则即使删掉某个函数应该对整体也影响不大。具体可以看我文档中的模块关系图。
2、IDE(编程工具)的选择
(未完持续)

C语言课设心得分享(一)的更多相关文章
- C语课设心得分享(三)
调试. 以前咱们写课后习题,一般也不需要使用调试,如果程序编译error,根据错误信息就可以改好:如果是结果错误,那么在稿纸上过几遍基本也可以得出结果. 但咱们这个课设比较大,就需要很多调试的过程,尤 ...
- C语课设心得分享(二)
咱们今儿说说IDE的事儿. IDE是「集成开发环境」的意思,比如咱们常用的VC6.0,就是开发C语言所用的IDE的一种.对于IDE的认识,可能有些朋友有点儿模糊,咱们捋一捋,我也会给出一些IDE方面的 ...
- C语言课设——电影院选票系统
C语言课设--电影院选票系统 1.课题介绍 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户 1.电影 ...
- 库存管理系统实现 C语言课设
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 //定义一个商品结构体 6 ...
- 获奖感言和C语言的学习心得
获奖感言和C语言的学习心得 自我介绍: 大家好,我的名字叫袁忠,我来自湖南,今年快19岁了,现在是大学一年级,我平时喜欢跑步.打羽毛球,我也喜欢学算法与数学,以及喜欢看一些与计算机有关的书籍,每次我学 ...
- 计算机网络课设之基于UDP协议的简易聊天机器人
前言:2017年6月份计算机网络的课设任务,在同学的帮助和自学下基本搞懂了,基于UDP协议的基本聊天的实现方法.实现起来很简单,原理也很简单,主要是由于老师必须要求使用C语言来写,所以特别麻烦,而且C ...
- 将C语课设传到了Github和Code上 2015-91-18
一直听说Git好使,以前捣鼓过没弄成,现在考完试了终于可以静下心来研究研究. 哎,我要是当时做课设的时候就用Git,也能省下不少事呢. 使用的Git教程,刚看个开头: 廖雪峰的Git教程 http:/ ...
- JAVA课设---五子棋
1.团队博客链接 JAVA课设-五子棋-团队博客 2.个人负责模块: ①对鼠标事件的处理 , 此模块需处理五子棋的放置问题.颜色转换问题.以及当五子连线时弹出窗口显示结果. ②对MainFrame中主 ...
- JAVA课设个人博客--多源数据教学管理系统
JAVA课设个人博客--多源数据教学管理系统 1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2. 个人负责模块或任务说明 主要模块 ...
随机推荐
- 20151217JS便签
JS便签: 根据一个数值来改变Repeater行数的颜色 <script type="text/javascript"> var query = document.ge ...
- 9、java中的final关键字
/* final : 最终.作为一个修饰符, 1,可以修饰类,函数,变量. 2,被final修饰的类不可以被继承.为了避免被继承,被子类复写功能. 3,被final修饰的方法不可以被复写. 4,被fi ...
- 使用dojoConfig配置dojo(翻译)
http://dojotoolkit.org/documentation/tutorials/1.10/dojo_config/index.html dojoConfig对象(原来是djConfig对 ...
- 《C#编程风格》还记得多少
开始实习之后,才发现自己是多么地菜.还有好多东西还要去学习. 公司很好,还可以帮你买书.有一天随口问了一下上司D,代码规范上面有什么要求.然后D在Amazon上面找到了这本书<C#编程风格(Th ...
- System.Data.SQLite
SQLite介绍 在介绍System.Data.SQLite之前需要介绍一下SQLite,SQLite是一个类似于Access的单机版数据库管理系统,它将所有数据库的定义(包括定义.表.索引和数据本身 ...
- httpwebrequest详解【转】
http://blog.csdn.net/sjj2011/article/details/7823392 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最 ...
- Json数据处理
1.字符串转换为Json数组:取json对象属性值. String st="[{"tradeDate":"2016-09-27","trad ...
- 39. Recover Binary Search Tree && Validate Binary Search Tree
Recover Binary Search Tree OJ: https://oj.leetcode.com/problems/recover-binary-search-tree/ Two elem ...
- Log功能
目录控制开关,若存在则创建log文件,输出. 宏函数,若debug打开,则输出. 多线程输出到同一文件. 通过mutex控制多个进程同时创建log文件.
- 黑盒测试与白盒测试(Black box Testing)
黑盒测试和白盒测试的优缺点 类别 优点 缺点 黑盒测试 不需要了解软件代码 从用户角度出发 无法保证代码内各个路径被覆盖到 白盒测试 强制测试开发工程师关注代码的具体实现 揭露隐藏在代码中的Bug 是 ...