一.c项目开发总体分如下图所示

二.对每一步的解析

1.需求文档分析,本例以电子词典作为例子

列出每一个需求以及每一个需求的每一个特点,将其归纳 为一张表。

2.设计数据结构

设计数据结构,也就是确定抽象数据类型,数据存放的方式,先想出多个方案,然后比较各个方案的优劣

 /*
方案1
使用三维数组,110000为单词个数,2位每个单词对应2行,100表示每一行可存储的字符数,
由于栈空间最大1M,所以这种方式不行,而且很消耗cpu资源
word[i][2][100]代表一个单词和解释
*/
char word[][][];//
/*
方案2
使用一个结构代表一个单词,key存储单词,trans存储
所有单词存储在malloc分配的动态数组中,由于每个单词长度不一样,每个单词的解释也不一样,
所以key的长度太小不能满足需求,太大又造成存储空间的浪费
*/
struct WORD{
char key[];//单词
char trans[];//单词对应的解释
};
/*
方案三
使用结构体,但是成员为指针,根据单词和解释的实际大小分配内存,内存占用小
缺点:解释不够详细,因为一个单词对应多个解释
*/
struct WORD{
char *key;//单词指针,指向一个malloc分配的内存
char *trans;//解释指针
};
/*
方案四
使用结构体
*/
struct WORD{
char *key;//单词指针,指向一个malloc分配的内存
int count_trans;//每个单词对应的解释数量
char **trans;//存放解释的字符指针数组
};

3.根据需求绘制程序整体运行流程图

4.分析数据类型的存储结构,如下图

5.定义常用变量

 /*********定义常用全局变量*****************/
/*
给结构体类型起一个新名字:WORD
*/
typedef struct WORD SWORD;
/*********结构体指针,指向词库结构体数组******/
SWORD * DICT;
/***********文本词库文件名*********************/
char *dicttxtname = "dict.txt";
/***********二进制词库文件名*********************/
char *dictbitname = "dict.dat";
/************词库数量,结构体数组长度***************/
int length;

6.由于时间关系和随笔大小有限,剩下的五步骤见后期随笔

c语言项目开发流程一部曲的更多相关文章

  1. c语言项目开发流程二部曲

    一.在第一部曲中我们介绍了电子词典项目开发的前5步,下面继续我们的步伐. 6.函数接口设计,这一步不是一蹴而就的,在项目进行中得不断修改,下面是我电子词典项目接口. /**************函数 ...

  2. Django (九) 项目开发流程&项目架构

    项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. ​ 2. 概要设计及详细设计: 开发对需求进行概要设计,包 ...

  3. 使用.NET MVC框架项目开发流程(项目开发流程)

    MVC项目开发流程 整理需求,进行需求分析.项目设计. 整理数据项,建数据库做前期准备,并整理字典. 建立所需数据库表和视图和模型. 页面实现其初步功能(跳过逻辑后台代码),只是实现页面之间的跳转以及 ...

  4. 【CC2530入门教程-01】IAR集成开发环境的建立与项目开发流程

    [引言] 本系列教程就有关CC2530单片机应用入门基础的实训案例进行分析,主要包括以下6部分的内容:1.CC2530单片机开发入门.2.通用I/O端口的输入和输出.3.外部中断初步应用.4.定时/计 ...

  5. K2项目开发流程

    (自己的学习资料) K2项目开发流程: 1.在VS2013中设计流程,并在K2 Workspce中测试流程 首先是新建新建一个k2的Process文件..kprx后缀. 在里面创建所需要的流程.由于我 ...

  6. 覃超:Facebook的项目开发流程和工程师的绩效管理机制

    覃超:Facebook的项目开发流程和工程师的绩效管理机制 http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650992350&am ...

  7. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-2.中大型公司里面项目开发流程讲解

    笔记 2.中大型公司里面项目开发流程讲解     简介:讲解一个项目如何从零到上线,经历过怎样的步骤和流程                  1.一个中大型项目的开发流程,从需求调研到项目上线    ...

  8. IT项目开发流程

    项目开发流程: 一.需求分析:相关系统分析员向用户初步了解需求,然后用相关的工具软件列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步 ...

  9. Java高级项目实战之CRM系统01:CRM系统概念和分类、企业项目开发流程

    1. CRM系统介绍 CRM系统即客户关系管理系统, 顾名思义就是管理公司与客户之间的关系. 是一种以"客户关系一对一理论"为基础,旨在改善企业与客户之间关系的新型管理机制.客户关 ...

随机推荐

  1. 性能测试培训:WebSocket协议的接口性能之Jmeter

    性能测试培训:WebSocket协议的接口性能之Jmeter poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试开 ...

  2. POPTEST培训:web自动化测试之DOM

    POPTEST培训:web自动化测试之DOM   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq ...

  3. "!function",自执行函数表达式

    如题为自执行函数表达式.在这种情况下,解析器在解析function关键字的时候,会将相应的代码解析成function表达式,而不是function声明.下面2个括弧()都会立即执行 (function ...

  4. selenium实例:unittest框架+PO开发模式

    这是<selenium2+python学习总结>的升级版. 1.         项目结构 2.         项目代码 1)         globalparameter.py # ...

  5. 一些IO流的知识

    IO流: 输入流:输出流: 字节流:字符流:为了处理文字数据方便而出现的对象. 其实这些对象的内部使用的还是字节流(因为文字最终也是字节数据) 只不过,通过字节流读取了相对应的字节数,没有对这些字节直 ...

  6. 通过一个小游戏开始接触Python!

    之前就一直嚷嚷着要找视频看学习Python,可是一直拖到今晚才开始....好好加油吧骚年,坚持不一定就能有好的结果,但是不坚持就一定是不好的!! 看着视频学习1: 首先,打开IDLE,在IDLE中新建 ...

  7. 记一次 Newtonsoft.Json 巧妙的用法(C#)

    数据添加的功能 有一个表格提交数据如下: 是否选择和文本值.分开保存到数据库太麻烦.取得时候也麻烦 想到了存成json数据.一个字段就可以了. html代码: <table class=&quo ...

  8. STM32F0的flash读写

    flash大小64k Rom+8k Ram的大小,stm32f051有64k Rom,总的分为 64页,一页1024byte ,在flash的Rom里面写数据掉电保存,相当于W25q80 uint32 ...

  9. configure: error: Cannot find php-config. Please use --with-php-config=PATH 错误的解决方案

    一般出现这个错误说明你执行 ./configure 时  --with-php-config 这个参数配置路径错误导致的. 修改为: ./configure --with-php-config=/us ...

  10. 对java面向对象的初识

    我其实一直想写点东西练练自己文笔,今天写下这篇技术类型的文章也没有一个好的格式和章法,但万事开头难,那么就从面向对象开始. 我们大部分人都知道互联网软件的存在,时刻影响了我们的现实生活,那么面向对象的 ...