今儿上完课设,老师果然讲的比较少,周四还不用去,看来还是学生自己折腾。我在做课设的过程中,攒了一些心得/体会,希望能和大家分享分享,也希望能一起探讨探讨。如果是我能回答的问题,我很乐意能够提供帮助。

课设这东西是要写出一个大的整体,和咱们上学期写的那些习题不太一样。那些题都是明确给出了具体的目的。而这个课设给出了一系列较为宏观的需求,要咱们自己去设计一些综合的方法,开始时可能觉得迷茫,无从下手,不知道该干什么。我的感受是在做课设之前,心里要有几个数,或者说对几样东西有谱,这样就能有效地开始着手我们的任务。

1、先构思,后写代码
    以前我试图写过一个贪吃蛇游戏,没有进行构思和设计,直接开始写代码,想到哪就写到哪,结果开发到中期时,整个程序的结构已经混乱不堪,完全无法维护,不得不放弃了程序。这回我做课设(小球移动)之前,虽然也没做什么规范、详细的设计,但至少按照一些程序设计的方法,简单勾勒了一下程序的框架。
    比如考虑到面向过程的程序设计,那么我想我有哪些数据(输入,小球等),进而设计数据的设计结构。我选择了用链表+结构体存储小球们的信息,我在后期很多功能的拓展,得益于我为小球选择了较为正确的数据结构,因为我很方便就能添加小球的属性(在咱们将来的面向对象编程中,也就意味着还能很方便地添加小球的功能)。再考虑数据的处理,输出(显示、保存等)。
    其中对数据的处理自然是核心任务,那我就能由此展开来,考虑模块化的程序设计方法。我将对数据处理的不同任务划分为不同模块(显示球、移动球、响应点击等),高内聚我做的并不好,因为我经常在一个模块中完成一个以上的任务,最性质恶劣的就是我在delete_ball模块中塞进了许多功能(因为我到最后懒得再新弄一个模块再设计接口了,但现在一想也就是5分钟的事儿)。但是模块之间的低耦合我想我弄的还是不错的,除非是作为枢纽的模块,否则即使删掉某个函数应该对整体也影响不大。具体可以看我文档中的模块关系图。

2、IDE(编程工具)的选择
    (未完持续)

C语言课设心得分享(一)的更多相关文章

  1. C语课设心得分享(三)

    调试. 以前咱们写课后习题,一般也不需要使用调试,如果程序编译error,根据错误信息就可以改好:如果是结果错误,那么在稿纸上过几遍基本也可以得出结果. 但咱们这个课设比较大,就需要很多调试的过程,尤 ...

  2. C语课设心得分享(二)

    咱们今儿说说IDE的事儿. IDE是「集成开发环境」的意思,比如咱们常用的VC6.0,就是开发C语言所用的IDE的一种.对于IDE的认识,可能有些朋友有点儿模糊,咱们捋一捋,我也会给出一些IDE方面的 ...

  3. C语言课设——电影院选票系统

    C语言课设--电影院选票系统 1.课题介绍 大家都爱看电影,现请参考一个熟悉电影票预订系统,实现C语言版的订票系统.了解订票如何实现的.系统主要有2类用户:管理员用户和顾客用户. 管理员用户 1.电影 ...

  4. 库存管理系统实现 C语言课设

    1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 //定义一个商品结构体 6 ...

  5. 获奖感言和C语言的学习心得

    获奖感言和C语言的学习心得 自我介绍: 大家好,我的名字叫袁忠,我来自湖南,今年快19岁了,现在是大学一年级,我平时喜欢跑步.打羽毛球,我也喜欢学算法与数学,以及喜欢看一些与计算机有关的书籍,每次我学 ...

  6. 计算机网络课设之基于UDP协议的简易聊天机器人

    前言:2017年6月份计算机网络的课设任务,在同学的帮助和自学下基本搞懂了,基于UDP协议的基本聊天的实现方法.实现起来很简单,原理也很简单,主要是由于老师必须要求使用C语言来写,所以特别麻烦,而且C ...

  7. 将C语课设传到了Github和Code上 2015-91-18

    一直听说Git好使,以前捣鼓过没弄成,现在考完试了终于可以静下心来研究研究. 哎,我要是当时做课设的时候就用Git,也能省下不少事呢. 使用的Git教程,刚看个开头: 廖雪峰的Git教程 http:/ ...

  8. JAVA课设---五子棋

    1.团队博客链接 JAVA课设-五子棋-团队博客 2.个人负责模块: ①对鼠标事件的处理 , 此模块需处理五子棋的放置问题.颜色转换问题.以及当五子连线时弹出窗口显示结果. ②对MainFrame中主 ...

  9. JAVA课设个人博客--多源数据教学管理系统

    JAVA课设个人博客--多源数据教学管理系统 1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2. 个人负责模块或任务说明 主要模块 ...

随机推荐

  1. ODOO 源代码安装要求

    ODOO 源代码安装要求 ref:http://www.odoo.com/documentation/10.0/setup/install.html#setup-install-source pyth ...

  2. Python 面向对象(初级篇) (转)

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面 ...

  3. linux之tmpwatch命令

    系统使用时间长后会产生临时文件(/tmp下),需要清理.但清理的时候不推荐使用rm -rf.这样有时会引起程序的僵死. tmpwatch的说明: [root@AY121231034820cd91077 ...

  4. Apache Shiro系列教程之三:Shiro的结构

    Shiro的设计目标是简化应用的安全管理工作.软件通常是以用户为基础设计的.也就是说,我们经常是根据用户是怎样和我们的软件交互的来设计相关的用户接口.比如,你可能会说"如果是已经登录的用户与 ...

  5. OpenStack nova VM migration (live and cold) call flow

    OpenStack nova compute supports two flavors of Virtual Machine (VM) migration: Cold migration -- mig ...

  6. HackerRank "TBS Problem" ~ NPC

    It is marked as a NPC problem. However from the #1 code submission (https://www.hackerrank.com/Charl ...

  7. jQuery使用示例详解

    [jquery引用字段] <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv ...

  8. zookeeper安装及部署

    安装及部署 一. 单机安装.配置 1.下载zookeeper二进制安装包 下载 curl -L -O http://apache.fayea.com/zookeeper/stable/zookeepe ...

  9. redmine 配置邮件发送为async后,不能发送邮件(转载)

    通过参考:http://www.oschina.net/question/2005703_16688 之前configuration.yaml文件中email的相关配置如下: production: ...

  10. 谈谈Java利用原始HttpURLConnection发送POST数据

    这篇文章主要给大家介绍java利用原始httpUrlConnection发送post数据,设计到httpUrlConnection类的相关知识,感兴趣的朋友跟着小编一起学习吧 URLConnectio ...