| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:C语言通讯录的问题啊!添加不了,还有也删除不了啊!!高手看看!!帮帮忙啊 ...
只看楼主 加入收藏
johnliu6
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-6-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
C语言通讯录的问题啊!添加不了,还有也删除不了啊!!高手看看!!帮帮忙啊!!
#include <stdio.h>
#include <stdlib.h>
#define size 100                                                 //定义数组容量
int b=0,i;
int k=0,h;
int xuanze=1;
static p=0;
struct txl                        //定义结构体                  
{  
    char name[20];
    char haoma[11];
    char dizhi[50];
}txl[size];
void input();
void output(int p);
void menu();
void save(int h);
int load();
void search_name();
void add();
void search();
void del();
void main()
{
 printf("***************************************\n");                    //主菜单
  printf("                                      *\n");
  printf("                                      *\n");
  printf("                                      *\n");
  printf("                                      *\n");
  printf("              通讯录                  *\n");
  printf("                                      *\n");
  printf("                                      *\n");
  printf("                                      *\n");
  printf("                                      *\n");
  printf("***************************************\n");
  printf("\n");
  while (xuanze)                                                //选择菜单
  {
  menu();
  scanf("%d",&xuanze);
  if (xuanze>=0 && xuanze<=5)
  {
      switch(xuanze)   
      {
  case 1:
     input();
      break;
  case 2:
      printf("欢迎进入通讯录删除功能\n");
      printf("请输入要删除的姓名\n");
      del();
      break;
  case 3:
      printf("通讯录所有信息如下\n");
      output(p);
      break;
  case 4:
      printf("欢迎进入通讯录查询功能\n");
      search_name();
      break;
  case 5:
      add();
  case 0:
      break;
      }
  }
  else
  {
      printf("操作错误,请从新输入");
      break;
  }
  }
}
void input()
{
      printf("欢迎进入通讯录录入功能\n");
      printf("请输入连续录入的人数\n");
      scanf("%d",&b);
      for (i=1;i<=b;i++)
      {
      printf("请输入姓名\n");
      scanf("%s",txl[k].name);
      printf("请输入号码\n");
      scanf("%s",txl[k].haoma);
      printf("请输入住址\n");
      scanf("%s",txl[k].dizhi);
      k=k+1;
      p=p+1;
      }
     save(b);
}
int load()  //导入函数
{
    FILE *fp;
    if((fp=fopen("txl.txt","r"))==NULL)
    {
        printf("无法打开文件\n");
        exit(0);
    }
   for (i=0;fread(&txl[i],sizeof(struct txl),1,fp)!=0;i++)
   {
       printf("\n%s\t%s\t%s\n",txl[i].name,txl[i].haoma,txl[i].dizhi);
   }
   printf("\n");
   fclose(fp);
   return(i-1);
}
void output(int p)                    //输出函数
{
   printf("\n姓名\t号码\t地址           \n");
   for (i=0;i<p;i++)
   printf("\n%s\t%s\t%s\n",txl[i].name,txl[i].haoma,txl[i].dizhi);
}
void menu()
{
  
  printf("\n");
  printf("\n\n");
  printf("1.通讯录录入\n");
  printf("2.删除通讯录信息\n");
  printf("3.通讯录信息\n");
  printf("4.通讯录查询\n");
  printf("5.增加用户\n");
  printf("0.退出\n");
  printf("请选择\n");
}
 
void save(int h)
{
  FILE *fp;
  int i;
  if ((fp=fopen("txl.txt","wb"))==NULL)
  {
      printf("文件无法打开\n");
      return;
  }
  for(i=0;i<h;i++)
      if (fwrite(&txl[i],sizeof(struct txl),1,fp)!=1)
      {
          printf("文件生成错误\n");
          return;
      }
      fclose(fp);
}




void add()           //添加函数
{  
   int n=load();
   int i,m;
   printf("请输入需要添加信息的人数\n");
   scanf("%d",&m);
   for (i=n;i<m+n;i++)
   {
  printf("请输入姓名: ");
  scanf("%s",&txl[i].name);  
     printf("\n");
     printf("请输入号码:  ");
  scanf("%s",txl[i].haoma);
  printf("请输入地址:  ");
  scanf("%s",&txl[i].dizhi);
   printf("\n一个新信息档案添加完毕!请输入下一个信息\n");     
  printf("\n");
}
   save(m+n);
   printf("添加新用户完成。\n");  
   output(p);
}

void search_name()                   //按姓名查找函数
{
  char name1[10];
  int m=load();
  printf("请输入要查找的姓名:\n");
  scanf("%s",name1);
  for(i=0;i<m;i++)
  if(strcmp(name1, txl[i].name)==0)
{  
     printf("\n已找到此人,其记录为:\n");
     printf("\n姓名\t号码\t地址             \n");
     printf("\n%s\t  %s\t  %s   \n",txl[i].name,txl[i].haoma,txl[i].dizhi);
    break;
}
   if(i==m)  
   printf("\n对不起,查无此人\n");
   printf("\n");
}

void del()   //删除函数
{
  
   int m=load();
   int i,j,n,t,f;
   char name1[10];
   printf("\n 原信息:\n");
    output(p);                 // 调用输出函数
    printf("\n");
   printf("请输入要删除的姓名:\n");
   scanf("%s",name1);
   for(f=1,i=0;f&&i<m;i++)
   {

     if(strcmp(txl[i].name,name1)==0)
     {
  
   printf("\n已找到此人,原始记录为:\n");
   printf("\n姓名\t号码\t地址             \n");
   printf("\n%s \t%s\t%s\n",txl[i].name,txl[i].haoma,txl[i].dizhi);                                                                                                            
   printf("\n确实要删除此人信息请按1,不删除请按0\n");
   scanf("%d",&n);
            if(n==1)   //如果删除,则其他的信息都向前移一行
            {
     for(j=i;j<m-1;j++)
     {
       txl[j]=txl[j+1];   
     }
    f=0;
            }
     }
   }
    if(!f)
    m=m-1;
    else
    printf("\n对不起,查无此人!\n");
    printf("\n 浏览删除后的所有信息:\n");
    save(m);
    output(p);         //调用输出函数
    printf("\n继续删除请按1,不再删除请按0\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:del();break;
    case 0:break;
    default :break;
    }
}
搜索更多相关主题的帖子: search 通讯录 C语言 结构体 
2011-06-19 17:27
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:7 
添加删除你还用数组来存..........

                                         
===========深入<----------------->浅出============
2011-06-19 18:59
liangjinchao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:376
专家分:697
注 册:2010-11-8
收藏
得分:7 
链表轻而易举!

因为有了因为,所以有了所以,既然已成既然,何必再说何必
2011-06-19 19:44
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:7 
我帮你细心改了下,按Ctrl+F搜索"改动"可以找到改动过的地方。有system("cls");和getch();的这两个地方可以忽略掉,因为为了显示方便我给加上去了的,另外的只是逻辑上的小问题,最主要的是i-1变成i的那里,修改了一下,希望采纳^_^
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define size 100                                                 //定义数组容量
int b=0,i;
int k=0,h;
int xuanze=1; 
int p=0;
struct txl                        //定义结构体                  
{  
    char name[20];
    char haoma[11];
    char dizhi[50];
}txl[size];
void input();
void output(int p);
void menu();
void save(int h);
int load();
void search_name();
void add(); 
void search();
void del();
int main()
{
  printf("***************************************\n");                    //主菜单
  printf("                                      *\n"); 
  printf("                                      *\n");
  printf("                                      *\n");
  printf("                                      *\n");
  printf("              通讯录                  *\n");
  printf("                                      *\n");
  printf("                                      *\n"); 
  printf("                                      *\n");
  printf("                                      *\n"); 
  printf("***************************************\n");
  printf("\n");
  getch();//改动 
  while (xuanze)                                                //选择菜单
  {
  system("cls");//改动 
  menu();
  scanf("%d",&xuanze);
  if (xuanze>=0 && xuanze<=5)
  {
      switch(xuanze)   
      {
  case 1: 
     input();
      break;
  case 2:
      printf("欢迎进入通讯录删除功能\n");
      printf("请输入要删除的姓名\n");
      del();
      break;
  case 3:
      printf("通讯录所有信息如下\n");
      load();//改动 
      getch();//改动 
      break;
  case 4:
      printf("欢迎进入通讯录查询功能\n");
      search_name();
      getch();//改动 
      break;
  case 5:
      add();
  case 0:
      break;
      }
  }
  else 
  {
      printf("操作错误,请从新输入");
      break;
  }
  }
}
void input()
{
      printf("欢迎进入通讯录录入功能\n");
      printf("请输入连续录入的人数\n");
      scanf("%d",&b);
      for (i=1;i<=b;i++)
      {
      printf("请输入姓名\n");
      scanf("%s",txl[k].name);
      printf("请输入号码\n");
      scanf("%s",txl[k].haoma);
      printf("请输入住址\n");
      scanf("%s",txl[k].dizhi);
      k=k+1;
      p=p+1;
      } 
     save(b);
}
int load()  //导入函数
{
    FILE *fp;
    if((fp=fopen("txl.txt","r"))==NULL)
    {
        printf("无法打开文件\n");
        exit(0);
    }
   for (i=0;fread(&txl[i],sizeof(struct txl),1,fp)!=0;i++)
   {
       printf("\n%s\t%s\t%s\n",txl[i].name,txl[i].haoma,txl[i].dizhi);
   }
   printf("\n");
   fclose(fp);
   return(i);//改动 i-1变成了i 
}
void output(int p)                    //输出函数
{
   printf("\n姓名\t号码\t地址           \n");
   for (i=0;i<p;i++)
   printf("\n%s\t%s\t%s\n",txl[i].name,txl[i].haoma,txl[i].dizhi);
}
void menu()
{
  
  printf("\n");
  printf("\n\n");
  printf("1.通讯录录入\n");
  printf("2.删除通讯录信息\n");
  printf("3.通讯录信息\n");
  printf("4.通讯录查询\n");
  printf("5.增加用户\n");
  printf("0.退出\n");
  printf("请选择\n");
}

void save(int h)
{
  FILE *fp;
  int i;
  if ((fp=fopen("txl.txt","wb"))==NULL)
  {
      printf("文件无法打开\n");
      return;
  }
  for(i=0;i<h;i++)
      if (fwrite(&txl[i],sizeof(struct txl),1,fp)!=1)
      {
          printf("文件生成错误\n");
          return;
      }
      fclose(fp);
}




void add()           //添加函数
{  
   int n=load();
   int i,m;
   printf("请输入需要添加信息的人数\n");
   scanf("%d",&m);
   for (i=n;i<m+n;i++)
   {
  printf("请输入姓名: ");
  scanf("%s",&txl[i].name);  
     printf("\n");
     printf("请输入号码:  ");
  scanf("%s",txl[i].haoma);
  printf("请输入地址:  ");
  scanf("%s",&txl[i].dizhi);
   printf("\n一个新信息档案添加完毕!请输入下一个信息\n");     
  printf("\n");
}
   save(m+n);
   printf("添加新用户完成。\n");  
   output(p);
}

void search_name()                   //按姓名查找函数
{
  char name1[10];
  int m=load();
  printf("请输入要查找的姓名:\n");
  scanf("%s",name1);
  for(i=0;i<m;i++)
  if(strcmp(name1, txl[i].name)==0)
{  
     printf("\n已找到此人,其记录为:\n");
     printf("\n姓名\t号码\t地址             \n");
     printf("\n%s\t  %s\t  %s   \n",txl[i].name,txl[i].haoma,txl[i].dizhi); 
    break;
}
   if(i==m)  
   printf("\n对不起,查无此人\n");
   printf("\n");
}

void del()   //删除函数
{
  
   int m=load();
   int i,j,n,t,f;
   char name1[10];
   printf("\n 原信息:\n");
    load();                 // 调用输出函数 改动 原为output() 
    printf("\n");
   printf("请输入要删除的姓名:\n");
   scanf("%s",name1);
   for(f=1,i=0;f&&i<m;i++)
   {

     if(strcmp(txl[i].name,name1)==0)
     {
  
   printf("\n已找到此人,原始记录为:\n");
   printf("\n姓名\t号码\t地址             \n");
   printf("\n%s \t%s\t%s\n",txl[i].name,txl[i].haoma,txl[i].dizhi);                                                                                                            
   printf("\n确实要删除此人信息请按1,不删除请按0\n");
   scanf("%d",&n);
            if(n==1)   //如果删除,则其他的信息都向前移一行
            {
     for(j=i;j<m-1;j++)
     { 
       txl[j]=txl[j+1];   
     }
    f=0;
            }
     }
   }
    if(!f)
    m=m-1;
    else
    printf("\n对不起,查无此人!\n");
    printf("\n 浏览删除后的所有信息:\n");
    save(m);
    output(p);         //调用输出函数
    printf("\n继续删除请按1,不再删除请按0\n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:del();break;
    case 0:break;
    default :break;
    }
}


[ 本帖最后由 stophin 于 2011-6-19 21:22 编辑 ]
2011-06-19 21:20
johnliu6
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-6-19
收藏
得分:0 
谢谢啊!~~才大一,c也学得不太好!!~~~但是真的谢谢啦!!!!
2011-06-19 21:49
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:0 
回复 4楼 stophin
嘻嘻不用谢啦,我也学了一年了吧,挺喜欢的,楼主加油吧~~~
2011-08-07 22:00
快速回复:C语言通讯录的问题啊!添加不了,还有也删除不了啊!!高手看看!!帮帮 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023185 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved