今天寫一個簡單的C語言小項目,簡易的通訊錄:
編譯環境:win10
通訊錄可以用來存儲1000個人的信息c語言簡單通訊錄,每個人的信息包括:
姓名、性別、年齡、電話、住址
通訊錄包含的功能:
1. 添加聯系人信息
2. 刪除指定聯系人信息
3. 查找指定聯系人信息
4. 修改指定聯系人信息
5. 顯示所有聯系人信息
6. 清空所有聯系人
7. 以名字排序所有聯系人
實現原理:利用C語言結構體的功能實現
下面是代碼實現:
//Link.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "Link.h"
void menu()
{
printf("**************************************\n");
printf("********* 1.添加指定聯系人 ******\n");
printf("********* 2.顯示所有聯系人 *******\n");
printf("********* 3.查找指定聯系人 *******\n");
printf("********* 4.刪除指定聯系人 *******\n");
printf("********* 5.修改指定聯系人 *******\n");
printf("********* 6.以名字排序聯系人 *******\n");
printf("********* 7.清除所有聯系人 *******\n");
printf("********* 0.退出 ******\n");
printf("**************************************\n");
}
int main()
{
LinkMan lm;
Init_LinkMan(&lm);
menu();
int i = 0;
printf("請輸入你想要查詢的內容:");
scanf("%d", &i);
do
{
switch (i)
{
case 0:
printf("謝謝使用!\n");
break;
case 1:
AddLinkManInfo(&lm);
break;
case 2:
ShowAllLinkManInfo(&lm);
break;
case 3:
FindLinkManInfo(&lm);
break;
case 4:
DeleteLinkManInfo(&lm);
break;
case 5:
ModLinkManInfo(&lm);
break;
case 6:
SortLinkManInfo(&lm);
break;
case 7:
ClearLinkManInfo(&lm);
break;
default:
break;
}
}while(i);
system("pause");
return 0;
}
//LinkMan.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "Link.h"
#include
void menu1()
{
printf("**************************************\n");
printf("********* 1.添加指定聯系人 ******\n");
printf("********* 2.顯示所有聯系人 *******\n");
printf("********* 3.查找指定聯系人 *******\n");
printf("********* 4.刪除指定聯系人 *******\n");
printf("********* 5.修改指定聯系人 *******\n");
printf("********* 6.以名字排序聯系人 *******\n");
printf("********* 7.清除所有聯系人 *******\n");
printf("********* 0.退出 *******\n");
printf("**************************************\n");
}
//初始化聯系人,將空間置0
void Init_LinkMan(LinkMan* lm)
{
int count = sizeof(lm->_Contact); //先求出聯系人的大小
lm->_count = 0;
memset(lm->_Contact, 0, count);
}
//將每一個聯系人單獨保存,便于查找
int Find(LinkMan* lm, char* pName)
{
int i = 0;
for (; i < (lm->_count); ++i)
{
if (0 == strcmp(lm->_Contact[i]._name, pName))
{
return i;
}
}
return -1;
}
//添加聯系人
void AddLinkManInfo(LinkMan* lm)
{
if (lm->_count > 1000)
printf("人數已達上限!");
else
{
printf("請輸入你要添加聯系人的姓名:");
scanf("%s", lm->_Contact[lm->_count]._name);
printf("請輸入你要添加聯系人的性別:");
scanf("%s", lm->_Contact[lm->_count]._gender);
printf("請輸入你要添加聯系人的年齡:");
scanf("%d", &lm->_Contact[lm->_count]._age);
printf("請輸入你要添加聯系人的電話:");
scanf("%d", lm->_Contact[lm->_count]._tel);
printf("請輸入你要添加聯系人的地址:");
scanf("%s", lm->_Contact[lm->_count]._addr);
printf("添加聯系人成功!\n");
lm->_count++;
}
}
//顯示所有聯系人
void ShowAllLinkManInfo(LinkMan* lm)
{
int num = lm->_count;
printf("輸出所有人的信息:");
printf("s%7s%6s%8ss\n", "姓名", "性別", "年齡", "電話", "地址");
for (; num > 0; --num)
{
printf("s", lm->_Contact[num]._name);
printf("s", lm->_Contact[num]._gender);
printf("d", lm->_Contact[num]._age);
printf("d", lm->_Contact[num]._tel);
printf("s", lm->_Contact[num]._addr);
}
}
//查找指定聯系人
void FindLinkManInfo(LinkMan* lm)
{
char name[20] = { 0 };
int result = 0;
printf("請輸入你要查找的聯系人姓名:");
scanf("%s", name);
result = Find(lm, name);
if ( result)
{
printf("姓名:%s\n", lm->_Contact[result]._name);
printf("性別:%s\n", lm->_Contact[result]._gender);
printf("年齡:%d\n", lm->_Contact[result]._age);
printf("電話:%d\n", lm->_Contact[result]._tel);
printf("地址:%s\n", lm->_Contact[result]._addr);
}
else
{
printf("您查找的聯系人不存在\n");
}
}
//刪除指定聯系人
void DeleteLinkManInfo(LinkMan* lm)
{
char name[20] = { 0 };
int result = 0;
int r = 0; //用來確認是否刪除聯系人
printf("請輸入想要刪除聯系人的姓名:");
scanf("%s", name);
result = Find(lm, name);
if (result)
{
printf("確定刪除該聯系人?\n");
printf("是請按1,否請按0\n");
scanf("%d", r);
if (1 == r)
{
int i = 0;
for (; i < (lm->_count); ++i)
{
lm->_Contact[i] = lm->_Contact[i + 1];
}
lm->_count--;
printf("刪除成功。\n");
}
else
{
printf("刪除失敗。\n");
}
}
else
printf("您要刪除的聯系人不存在\n");
}
//修改指定聯系人
void ModLinkManInfo(LinkMan* lm)
{
char name[20] = { 0 };
int result = 0;
printf("請輸入你要修改的聯系人姓名:");
scanf("%s", name);
result = Find(lm, name);
if (result)
{
{
printf("姓名:%s\n", lm->_Contact[result]._name);
printf("性別:%s\n", lm->_Contact[result]._gender);
printf("年齡:%d\n", lm->_Contact[result]._age);
printf("電話:%d\n", lm->_Contact[result]._tel);
printf("地址:%s\n", lm->_Contact[result]._addr);
}
int i = 0;
do
{
menu1();
printf("請輸入你要修改的選項:");
scanf("%d", &i);
switch (i)
{
case 1:
printf("請把姓名修改為:");
scanf("%s", lm->_Contact[result]._name);
break;
case 2:
printf("請把性別修改為:");
scanf("%s", lm->_Contact[result]._gender);
break;
case 3:
printf("請把年齡修改為:");
scanf("%d", &lm->_Contact[result]._age);
break;
case 4:
printf("請把電話修改為:");
scanf("%d", lm->_Contact[result]._tel);
break;
case 5:
printf("請把地址修改為:");
scanf("%s", lm->_Contact[result]._addr);
break;
default:
break;
}
} while (i);
}
else
{
printf("您要修改的聯系人不存在\n");
}
}
//按名字排序聯系人
void SortLinkManInfo(LinkMan* lm)
{
int i = 0;
int j = 0;
for (; i < (lm->_count) - 1; ++i)
{
for (; j < (lm->_count) - i; ++j)
{
if (strcmp(lm->_Contact[j]._name, lm->_Contact[j + 1]._name) > 0)
{
LinkManInfo temp;
temp = lm->_Contact[j];
lm->_Contact[j] = lm->_Contact[j + 1];
lm->_Contact[j + 1] = temp;
}
}
}
}
//清空所有聯系人
void ClearLinkManInfo(LinkMan* lm)
{
lm->_count = 0;
}
//Link.h
#ifndef __LINKMAN_H__
#define __LINKMAN_H__
#include
#include
//建立結構體存放聯系人基本信息
typedef struct LinkManInfo
{
char _name[20];
char _gender[5];
int _age;
int _tel[12];
char _addr[40];
}LinkManInfo;
//用一個結構體來存放1000個聯系人
typedef struct LinkMan
{
LinkManInfo _Contact[1000];
int _count; //通信錄中保存聯系人的個數
}LinkMan;
//通訊錄實現方法
void Init_LinkMan(LinkMan* lm); //初始化通訊錄
void AddLinkManInfo(LinkMan* lm); //添加指定聯系人
void ShowAllLinkManInfo(LinkMan* lm); //顯示所有聯系人
void FindLinkManInfo(LinkMan* lm); //查找指定聯系人
void DeleteLinkManInfo(LinkMan* lm); //刪除指定聯系人
void SortLinkManInfo(LinkMan* lm); //按名字排序聯系人
void ModLinkManInfo(LinkMan* lm); //修改指定聯系人
void ClearLinkManInfo(LinkMan* lm); //清空所有聯系人
#endif
寫完這個通訊錄我還有一點小問題,就是在我錄取完聯系人信息之后我還想讓它在返回去調用其他函數c語言簡單通訊錄,我應該怎么做?求大佬們指點一下。