通讯录的C语言代码

有没有完善简单的通讯录C语言代码啊,功能要增删改查和TXT输出保存那种... 有没有完善简单的通讯录C语言代码啊,功能要增删改查和TXT输出保存那种 展开
 我来答
匿名用户
2013-09-24
展开全部
分析:
跟据楼主的意思!我们可以得出,这个程序只要求我们写查询通迅录的内容
而通迅录的内容,可以通过初始化得出!
简而言之:写一个查询函数
呵呵···把问题相通了,我们就开始写算法吧let's go!!!
----------------------------------------------------------------
算法:
1.获得用户的输入 (就是要查询的对象的名字)
2.查询 (在这我用穷举通迅录的方式查询了,^_^&&^_^)
3.输出查询结果

算法就这样被我们征服了!!!呵呵~~好有成就感哇!!
但我们现在还不能开始编码,我得们先想好怎么编,要做到胸有成竹!!!
那我现在来想一下该怎么编码吧!let's go!!!
----------------------------------------------------------------
要保存通迅的信息,那么我们得用一个结构体吧:
struct friends
{
char name[20]; /* 名字不能写得太长哦 */
char province[20]; /* 省份 */
char city[20]; /* 所在城市 */
char nation[20]; /* 民族 */
char sex[2]; /* 性别 M/F */
int age; /* 年龄 */
};

要获得用户输入,要用个 char search_name[20];
查询结果反回一个数,记录对象在通迅录中的位置:int index;
查询中有用要循环,用一个记数器: int i;
----------------------------------------------------------------
OK,该用的变量我们都想好了!算法我们也想好了。还等什么呢,开始编码吧
呵呵~~是不是等这个时候都等得急了~~~~~
-------------------------------------------------------------------
*******************************************************************
******* 程序实现:
*******************************************************************
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/* 定义保存通迅录的信息 */
struct friends
{
char name[20]; /* 名字 */
char province[20]; /* 省份 */
char city[20]; /* 所在城市 */
char nation[20]; /* 民族 */
char sex[2]; /* 性别 M/F */
int age; /* 年龄 */
};

void getname (char search_name[]);
int search (struct friends friend_list[], char search_name[]);
void print_result(struct friends friend_list[], int index);

int main (void)
{
int index;
char search_name[20];
struct friends friend_list[4] = {
,
,
,
,
};

(void) getname (search_name); /* 获得用户输入 */
index = search (friend_list, search_name); /* 查询 */
(void) print_result (friend_list,index); /* 打印结果 */

return 0;
}

/****************************************
*** 函数名:getname
*** 功能:获得用户要查询的对象的名字
****************************************/
void getname (char search_name[])
{
printf ("Pleace enter the name of your friends you want to search>>");
scanf ("%s", search_name);
}

/****************************************
*** 函数名:search
*** 功能:查询对象
****************************************/
int search (struct friends friend_list[], char search_name[])
{
int i;

/* 穷举通迅录 */
for (i = 0; i < 4; ++i)
{
if (strcmp(friend_list[i].name, search_name) == 0)
{
return (i);
}
}

if (i == 4)
{
printf ("I am sorry! there is nobody by the name you enter!\n");
fflush(stdin);
getchar();
exit (0);
}
}

/****************************************
*** 函数名:print_result
*** 功能:打印结果
****************************************/
void print_result(struct friends friend_list[], int index)
{
printf ("the imformation of %s:\n", friend_list[index].name);
printf ("------------------------------------------------\n");
printf (" NAME: %-s\n", friend_list[index].name);
printf ("PROVINCE: %-s\n", friend_list[index].province);
printf (" CITY: %-s\n", friend_list[index].city);
printf (" NATION: %-s\n", friend_list[index].nation);
printf (" SEX: %-s\n", friend_list[index].sex);
printf (" AGE: %-d\n", friend_list[index].age);
printf ("-------------------------------------------------\n");

fflush(stdin);
getchar();

}

*****************************************************************************
*****************************************************************************
呵呵~~一口气把它写出来了!!!前期写算法是很重要的!!
现在还没结束!!我们要先来测试一下!!
--------------------------------------
Pleace enter the name of your friends you want to search>>lihan
the imformation of lihan:
------------------------------------------------
NAME: lihan
PROVINCE: liaoning
CITY: huluodao
NATION: han
SEX: M
AGE: 19
-------------------------------------------------
--------------------------------------
Pleace enter the name of your friends you want to search>>lbmzwyy
I am sorry! there is nobody by the name you enter!

说明成功了~~~呵呵~~太高兴了~~
--------------------------------------
请记注一点:克制编码的诱惑
无论多么小的问题都要先分析好问题,想好算法,才能开始编码!!!我相信这样做一定对你有好处的!

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
匿名用户
2013-09-24
展开全部
//系统总控
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>typedef unsigned long LONG;typedef struct user_system{
char name[30];
char address[50];
LONG phone_num;}SYE;
typedef struct user_node{
SYE people;
struct user_node *next;}NODE;
NODE *insert();
NODE *new_user(NODE *head);
NODE *delete_user(NODE *head);
NODE *modify_user( NODE *head );void name_find(NODE *head);
void phone_find( NODE *head);
void preview( NODE* head);#define HELLO printf("%s\t%s\t%lu\n",temp->people.name,temp->people.address,temp->people.phone_num);void main()
{
int inum;
int count=1;
NODE *pointer,*head_sy,*head_ot; if( ( head_sy = ( NODE* ) malloc (sizeof( NODE ) ) ) == NULL ){
printf("不能分配内存\n");
exit( EXIT_FAILURE);
}
if( ( pointer = ( NODE* ) malloc (sizeof( NODE ) ) ) == NULL ){
printf("不能分配内存\n");
exit( EXIT_FAILURE );
}
if( ( head_ot = ( NODE* ) malloc (sizeof( NODE ) ) ) == NULL ){
printf("不能分配内存\n");
exit( EXIT_FAILURE );
} head_sy = insert();
head_ot = head_sy;
system("cls"); //清屏函数
while( count -- ){ printf("电话号码目录系统\n\n");

printf("\t1.添加新电话用户\n"); //ok printf("\t2.修改电话用户的信息\n"); //ok

printf("\t3.删除已有电话用户信息\n"); //ok

printf("\t4.根据电话号码查询电话用户信息\n"); //ok

printf("\t5.根据用户名查询电话用户信息\n"); //ok

printf("\t6.显示所有用户信息\n"); //ok

printf("\t7.退出\n\n\n");

printf("请选择:");// fflust( stdin ); //清空输入缓冲区,通常是为了确保不影响后面的数据读取
scanf( "%d",&inum ); switch( inum ){

case 1:
pointer=new_user( head_ot );
preview( pointer ); head_ot=pointer;

printf("\t\t\n如果继续请输入( 1 )\n\t\t否则输入( 0 )退出\n");
scanf("%d",&count);
system("cls"); //清屏函数
break;
case 2:
pointer=modify_user( head_ot );
preview( pointer );
head_ot=pointer;
printf("\t\t\n如果继续请输入( 1 )\n\t\t否则输入( 0 )退出\n");
scanf("%d",&count);
system("cls"); //清屏函数
break;
case 3:
pointer=delete_user( head_ot );
preview( pointer ); head_ot=pointer;
printf("\t\t\n如果继续请输入( 1 )\n\t\t否则输入( 0 )退出\n");
scanf("%d",&count);
system("cls"); //清屏函数
break;
case 4:
phone_find( head_sy );
printf("\t\t\n如果继续请输入( 1 )\n\t\t否则输入( 0 )退出\n");
scanf("%d",&count);
system("cls"); //清屏函数
break;
case 5:
name_find( head_sy );
printf("\t\t\n如果继续请输入( 1 )\n\t\t否则输入( 0 )退出\n");
scanf("%d",&count);
system("cls"); //清屏函数
break;
case 6:
preview( head_sy );
printf("\t\t\n如果继续请输入( 1 )\n\t\t否则输入( 0 )退出\n");
scanf("%d",&count);
system("cls"); //清屏函数
break;
case 7:
;
exit( EXIT_FAILURE ); }
}
}
NODE *new_user ( NODE *head ) //新用户
{
NODE *temp=NULL,*POINT;
temp=( NODE* ) malloc ( sizeof( NODE ) );
if( temp == NULL ){
return ( head );
} printf("\n请输入新用户名称\n");
scanf("%s",temp->people.name); printf("\n请输入新用户家庭住址\n");
scanf("%s",temp->people.address);

printf("\n请输入新用户电话号码(8为整数)\n");
scanf("%lu",&temp->people.phone_num);

temp->next=NULL;
if( head == NULL ){
head=temp; //头指针的情况 }else{

POINT=head;
while( POINT->next != NULL ){ //循环
POINT=POINT->next;
}
POINT->next=temp; //添加在最后

} printf("\n新用户成功添加\n");
HELLO; return head;} NODE * delete_user ( NODE *head ) //删除用户信息函数
{
char name_del[30];
NODE *temp,*POINT;
temp=head; printf("请输入要删除的用户名称\n");
scanf("%s",name_del); while( temp ){

if( temp == NULL ){
printf("\n找不到该用户信息\n");
break;

}
if( strcmp( temp->people.name,name_del ) == 0 ){

HELLO;

POINT = head; if( head == temp ){
head=temp->next;
free( temp ); //头
break;

} while( 1 ){
if( POINT->next == temp ){
POINT->next=temp->next; //非头结点
free( temp );
break;

}
POINT=POINT->next;

} printf("\n成功删除用户资料\n");
break;
}
temp=temp->next;
}
return head;
} NODE* modify_user( NODE *head ) //修改用户信息
{
NODE *temp;
int i;
char name_find[30];
LONG phone_find; printf("在修改前前我们需要帮您先找到用户信息(是否存在等)\n");
printf("假如需要通过用户号码先找到你需要修改的用户,请输入(1)\n");
printf("假如需要通过用户名先找到您需要修该的用户,请输入(2)\n");
scanf("%d",&i);

if( i == 1 ){
printf("请输入需要修改的用户号码\n\n");
scanf("%lu",&phone_find);
} if( i == 2 ){ printf("请输入需要修改的用户名称\n");
scanf("%s",name_find);
} temp=head;
while( temp ){
if( i == 1 ){ if( temp->people.phone_num == phone_find )
break;

}else if( i == 2 ) { if( temp->people.name == name_find )
break;

} temp=temp->next;
} if( temp == NULL ){
printf("\n找不到该用户信息");
exit( EXIT_FAILURE ); } else {
printf("找到该用户,您现在可以修改了\n"); printf("请输入修改后的用户名\n");
scanf("%s",temp->people.name); printf("请输入修改后的用户住址\n");
scanf("%s",temp->people.address);

printf("请输入修改后的用户电话\n");
scanf("%lu",&temp->people.phone_num); }
return ( head );

}
void name_find( NODE *head ) //根据姓名查找用户的函数
{
NODE *temp;
char name_find[30]; printf("\n请输入需要查找的用户姓名:");
scanf("%s", name_find);

temp=head;
while( temp ){

if(temp == NULL){

printf("没有找到该用户信息\n");
break;
} if( strcmp( temp->people.name,name_find ) == 0 ){
printf("\n查找到该用户的信息\n"); HELLO;
break;
}

temp=temp->next;
}}
void phone_find( NODE *head ) //根据电话号码查询电话用户信息
{
NODE *temp;
LONG iphone=0;
printf("\n请输入需要查找的用户电话号码:");
scanf("%lu",&iphone);
temp=head;
while( temp ){

if( temp == NULL ){

printf("\n没有找到该用户的信息\n");
break;

}
if( temp->people.phone_num == iphone ){

printf("\n找到该用户信息如下:\n");
HELLO;
break;
}
temp=temp->next; }
} void preview( NODE *head ) //用户信息(预览)函数
{
NODE *temp=head->next;
printf("\t用户信息预览\n");
while( temp ){
HELLO;
temp=temp->next;

}}
NODE *insert( void ) // 链表的创建
{
NODE *head,*tail,*p;
int iph;
printf("初始化中,请先配合创建一个5人的链表:\n");
if( (head = ( NODE* ) malloc ( sizeof( NODE ) ) ) == NULL ){
printf("内存不能分配\n");
exit( EXIT_FAILURE ); } tail=head;
for( iph=10 ; iph<15 ; iph++ ){
if((p=( NODE* ) malloc ( sizeof( NODE ) ) ) == NULL ){

printf("不能分配内存\n");
exit( EXIT_FAILURE );

}

printf("请输入用户名\n");
scanf("%s",p->people.name);
printf("请输入用户地址\n");
scanf("%s",p->people.address);
printf("请输入用户电话号码(8位整数)\n");
scanf("%lu",&p->people.phone_num);
tail->next=p;
p->next=NULL;
tail=p;

}

return ( head );}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式