C项目开发—通讯录(一) 整体设计及界面、框架搭建

¥···每天进步一点点,每天快乐一点点!坚持每天写点东西,感觉很好,既复习基础知识,又可以收获成就感,何乐而不为呢?···¥

1. 用到的知识点:

    常量、变量是使用

    全局变量

    分支语句

    函数

    宏

    循环语句、scanf和printf、数据、结构体、文件、指针*


2. 经典问题

    数组元素的删除(用一个变量来记录数组长度 --- 学习链表后面可以用链表代替 )


3. 功能分析以及实现步骤

    功能:增删改查 退出

    思路:

   1.初始化方法,用于初始化数据

       1) 尝试性的读取文件;

       2) 如果成功,说明文件存在,则读取文件内容;

       3) 不成功,说明文件不存在

               创建文件

               写入联系人数量

   2.添加联系人

      1) 提示用户输入的姓名与电话号码

      2) 接收用户输入的内容

      3) 保存到联系人数组

      4) 写入到文件

   3.删除联系人

      1) 让用户输入要删除的数据的编号

      2) 判断编号是否合法

      3) 提示用户再次确认

      4) 开始删除数组元素

      5) 删除文件内容

    4.修改联系人

       1) 提示要修改的联系人编号

    .  2) 判断编号是否合法

       3) 让用户输入新的姓名,电话

       4) 让用户再次确认

       5) 开始修改用户信息

       6) 更新到文件中    

    5.查看联系人

       1) 先判断联系人是否为空

    .  2) 如果不为空,遍历数组,显示所有联系人

   5.搜索联系人

       1) 提示用户输入要查找的人的姓名

    .  2) 遍历数组查找是否有这个人

       3) 找到了显示号码

       4) 没找到提示用户没有该联系人

    6.退出

   

4. 界面框架搭建(重点)

    引入头文件

    进行必要的宏定义

    定义文件名称变量,联系人数组,联系人结构体

    定义函数,并进行函数声明

    编写循环控制语句

    显示操作界面

    根据编号执行不同的函数

代码:

/**
 * 时间:2015/11/09
 * 作者:一夜孤舟
 * 内容:C语言项目实战-通讯录
 * 总结: 
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 宏定义,字母最好是用大写
#define  N 100           //定义通讯录容量
#define  NAMELEN 22      //用户名字
#define  NUMLEN 12       //号码长度11为, 加上结束符\0


// **************定义部分**************
// 定义联系人的结构体 -- 使用分好;
typedef struct Per{
	// 联系人
	char name[NAMELEN];
	// 电话号码
	char telNum[NUMLEN];
}Person;
 
// Person A -> struct a
// 存储所有联系人,联系人的数组
Person contacts[N];

// 定义联系人个数
int totalContactCount = 0;
// 接收用户的编号
int fno;

// **********************************
// **********函数声明部分**************

int validateInput(int num, int min, int max);
void init(); 

// 各操作的实现
void doAdd();
void doDelete();
void doAmend();
void doList();
void doSearchByName();

int main()
{
	/*
	 1. 引入头文件
	 2. 进行必要的宏定义
	 3. 定义文件名称变量,联系人数组,联系人结构体
	 4. 定义函数,并进行函数声明
	 5. 编写循环控制语句
	 6. 显示操作界面
	 7. 根据编号执行不同的函数
    */

	while (1) // 进行无限循环
	{
		printf("\n");
		// 软件的界面显示出来
		printf("*************************\n");
		printf("**** 欢迎使用通讯录  *******\n");
		printf("***** 1.添加联系人  *******\n");
		printf("***** 2.删除联系人  *******\n");
		printf("***** 3.修改联系人  *******\n");
		printf("***** 4.查看联系人  *******\n");
		printf("***** 5.搜索联系人  *******\n");
		printf("***** 6.退出系统    *******\n");
		printf("*************************\n");
                printf("\n");
		// 提示用户输入一个编号
		printf("请选择1-6之间的功能编号:\n");
		scanf("%d", &fno);

		// 验证用户输入的编号
		//if (validateInput(fno, 1, 6)
		//{
		//	return 0;
		//}

		validateInput(fno, 1, 6);

		switch (fno)
		{
			case 1: 
				//执行添加
				doAdd();
				break;
			case 2:
				//执行删除
				doDelete();
				break;
			case 3:
				//执行修改
				doAmend();
				break; 
			case 4:
				//执行显示所有联系人
				doList();
				break;
			case 5:
				//执行查找
				doSearchByName(); 
				break;
			case 6:
				//执行退出
				printf("系统正在退出..\n");
				printf("系统已经退出!\n");
				return 0;
				break;

			default:
				break;
		}
	}
	
	
	system("pause");
	return 0;

}

/**
 * 验证输入是否合法
 * 
 * @param num 带验证的数
 * @param min 最小值
 * @param max 最大值
 * @return 1 非法 0 合法 
 * return 0是正常退出, return 1是异常退出
*/
int validateInput(int num, int min, int max)
{
	if (num < min || num > max)
	{
		printf("非法的输入! \n");
		return 1;
	}

	return 0;
}

/*
 * 增加联系人 
*/
void doAdd()
{
	printf("你选择的是添加联系人,请按提示操作 \n");
}

/*
 * 删除联系人 
*/
void doDelete()
{
	printf("你选择的是删除联系人,请按提示操作 \n");
}

/*
 * 修改联系人 
*/
void doAmend()
{
	printf("你选择的是修改联系人,请按提示操作 \n");
}

/*
 * 显示联系人 
*/
void doList()
{
	printf("你选择的是显示联系人,联系人数据如下 \n");
}

/*
 * 搜索联系人 
*/
void doSearchByName()
{
	printf("你选择的是搜索联系人,请按提示操作 \n");
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值