之前的小项目已经完成,如果大家有兴趣可以继续在细节方面优化和改写。接下来我们会用几个篇幅讲解一个新的小项目,希望大家能够跟着博主一步步地完成。
项目介绍
通过一个命令行程序,实现个人通讯录管理功能。
项目分析
命令行程序估计大家很少使用了,通过命令行管理个人通讯录自然也不如带界面的Wndows程序方便,然而,如果你能用C语言写出这个项目,那么开发带界面的Windows程序一定难不倒你。
通讯录管理必不可少的功能是:
- 通讯录条目录入
- 通讯录条目删除
- 通讯录条目修改
- 通讯录条目查询
这四个应该是最基本的功能。
涉及知识点
这个项目比前面那个日历的项目复杂了很多,但涉及的知识全是C语言的基本知识。
- 字符串处理
- 内存管理
- 简单数据结构(结构体数组)
- 文件读写
写出来也没几条,通过这个项目就让大家看看使用最基础的C语言知识能够做出什么样的东西。
设计方法
从软件开发流程的角度说,我们应该按照需求分析、概要设计、详细设计、代码编写这样的过程来进行。但我们这里旨在教会大家如何一步步完成一个复杂功能的工程,所以我们从一个简单的功能开始一步步完善,最终实现一个完整的软件。
Menu设计
首先我们建立一个全新的工程,在main函数中实现程序的menu。命令行程序的menu一般是向导模式的,通过每一步输入数字完成功能选择。因此我们的main函数的基本框架应该是这样:
void CleanScreen();
int main()
{
int nMenu = 0;
while (1)
{
printf("==== 通讯录 ====\n");
printf("1. 录入\n");
printf("2. 查询\n");
printf("0. 退出\n");
printf("----------------\n");
printf("请输入要使用的功能:");
scanf("%d", &nMenu);
switch (nMenu)
{
case 0:
// 退出
break;
case 1:
// 新增
break;
case 2:
// 查询
break;
default:
break;
}
CleanScreen();
}
return 0;
}
void CleanScreen()
{
system("cls");
}
这就是我们的程序框架,三个功能对应三个数字。当用户输入相应的数字时就会调用相应的函数来完成特定功能。由于命令行程序是在屏幕上打印命令完成的,因此需要定期把没有的信息清理掉,这就是我们定义的函数CleanScreen的作用。
接下来我们要做的就是三个case后面添加功能。退出程序我们采用exit()函数来实现,新增和查询是两个主要功能,我们分别定义一个函数来实现它。
数据结构
在设计功能之前,我们需要一个数据结构来保存每条记录,新建一个头文件Record.h,内容如下:
#ifndef __RECORD_H__
#define __RECORD_H__
#include "String.h"
typedef struct _tagRecord
{
String* _pStrName;
String* _pStrTel;
String* _pStrPS;
}Record;
#endif
在Record结构体中,我们使用到了之前项目中用到的一组文件String.h和String.c,我们只需要把这两个文件复制过来,添加到工程中即可。别忘了在文件首部添加include引用。
另外,我们这个struct中并没有像之前一样使用数组作为成员变量,而是使用了String指针,这样的好处是在需要的时候分配空间,后面我们会具体讲解。
这样,我们就得到了一个最基本的项目框架,后面我会带着大家一步步扩充这个工程,最终实现一个让你自己不敢相信的小项目。
我是天花板,让我们一起在软件开发中自我迭代。
如有任何问题,欢迎与我联系。
上一篇:21天C语言代码训练营(第九天)
下一篇:21天C语言代码训练营(第十一天)