| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 745 人关注过本帖
标题:哪位大哥看看我这程序哪有问题啊,帮忙改改啊
只看楼主 加入收藏
My→style
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-12-7
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:6 
哪位大哥看看我这程序哪有问题啊,帮忙改改啊
我的删除函数和文件读取有问题啊,谁能帮我改一下啊,跪求大神啊~~~~~(这是一个简单的通讯录)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 100
struct record
{  int num;
   char name[10];
   char tel[12],celtel[12],dw[20],email[20],qq[12];
}rec[SIZE];
int i,m=0;             //m为当前通讯录中的记录数
char menu();           //选单
void list();           //显示
void search();         //查找
void app();            //增加
void dele();           //删除
void correct();        //修改
void save();           //保存
void load();           //读入

void main()
{ char choice;
  while(1)
  { choice=menu();
    switch(choice)
    {case'1':printf("显示通讯录中的内容\n");
        list();break;
     case'2':printf("查找\n");
        search();break;
     case'3':printf("增加记录\n");
         app();break;
     case'4':printf("删除记录\n");
         dele();break;
     case'5':printf("修改通讯录\n");
         correct();break;
     case'6':printf("保存通讯录\n");
         save();break;
     case'7':printf("从文件中读取记录\n");
         load();break;
     case'8':printf("退出通讯录管理系统\n");
         save();break;
    default:printf("输入错误!!");

    }
    if(choice=='8')break;
    printf("\n按任意键退出....\n");getchar();
  }
}




char menu()
{  char c;
printf("\n\n*************简易通讯录*************\n");
 printf("         1.显示通讯录\n");
 printf("         2.按姓名查找\n");
 printf("         3.增加通讯录\n");
 printf("         4.删除通讯录\n");
 printf("         5.修改通讯录\n");
 printf("         6.保存到文件\n");
 printf("         7.从文件读取\n");
 printf("         8.退出此系统\n");
 printf("************************************\n");
 printf(" \n请选择………\n\n");
c=getchar();
getchar();
return c;
}


void list()          //显示通讯录中的内容
{printf("编号姓名   电话\t\t手机 \t工作单位\t\tEMAIL  \t\tQQ\n");
   for(i=0;i<m;i++)
{  if(rec[i].name[0])
{  
   printf("%d、%-8s%-12s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);
    }
}printf("当前通讯录中有%d条记录\n",m);
}



void app()           //添加通讯记录
{ char an;
  puts("当前通讯录中的内容\n");
  list();
  
  do
  {  rec[i].num=m+1;
     printf("姓名:");
     gets(rec[m].name);
     printf("电话:");
     gets(rec[m].tel);
     printf("手机:");
     gets(rec[m].celtel);
     printf("工作单位:");
     gets(rec[m].dw);
     printf("EMAIL:");
     gets(rec[m].email);
     printf("QQ:");
     gets(rec[m].qq);
     puts("新纪录输入完成!");
     printf("编号姓名   电话\t\t手机 \t工作单位\t\tEMAIL  \t\tQQ\n");
      printf("%d、%-8s%-12s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name,rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);
     m++;
     puts("继续添加吗?(y/n)");
     an=getchar();
     getchar();
  }while(an=='y');
}





void search()          //查找
{ char xm[10];
  printf("输入查找的姓名:");
  gets(xm);
  for(i=0;i<m;i++)
  { if(strcmp(xm,rec[i].name)==0)
  {  printf("编号姓名   电话\t\t手机 \t工作单位\t\tEMAIL  \t\tQQ\n");
     printf("%d、%-8s%-12s%-12s%-18s%-18s%-12s\n",i+1,rec[i].name,rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);
     
  
  } else
      printf("无此记录...\n");
 
  }
}
  



void dele()            //删除记录
{ int a;
  list();
  do
  { printf("删除几号记录?");
    scanf("%d",&a);
   
  }while(a>m&&a>0);
  if(a!=m-1)
      for(i=a;i<m;i++)
      {rec[i-1]=rec[i];rec[i-1].num=i;
      break;}
      m--;
      list();
}






void correct()        //修改通讯录
{char xm[10];
 printf("输入要修改的姓名:");
 gets(xm);
 for(i=0;i<m;i++)
  { if(strcmp(xm,rec[i].name)==0)
 {   printf("电话:");gets(rec[i].tel);
     printf("手机:");gets(rec[i].celtel);
     printf("工作单位:");gets(rec[i].dw);
     printf("EMAIL:");gets(rec[i].email);
     printf("QQ:");gets(rec[i].qq);
     break;}
 }printf("修改完成!\n");
 list();
}
   

void save()            //保存通讯录内容到文件中
{ FILE *fp;
  if((fp=fopen("txl.txt","wb"))==NULL)
  {printf("Can't open file");exit(0);}
  list();
  for(i=0;i<m;i++)
      if(fwrite(&rec[i],sizeof(struct record),1,fp)!=1)
          printf("File wrete error!\n");
      fclose(fp);
}



void load()            //从文件读记录到通讯录中
{ FILE *fp;
  if((fp=fopen("txl.txt","rb"))==NULL)
  {printf("Can't open file");exit(0);}
  for(i=0;i<SIZE;i++)
  { if(fread(&rec[i],sizeof(struct record),1,fp)!=1)
  {if(feof(fp))break;
   printf("File wrete error!\n");}
      
  }
  list();
  fclose(fp);
 }
搜索更多相关主题的帖子: dele correct include search 
2011-11-12 14:39
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:7 
代码很好,调试了一下,还是改不了错误
2011-11-12 22:50
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:7 
很奇怪,为什么连续的两个gets只运行一个,是我点的太快?好像没有呀
2011-11-13 10:51
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:0 
void dele()            //删除记录
{
    if(0 == m)
    {
      printf("通讯录为空,不能删除!\n");
      return;
    }
    int a;
    list();
    while(1)
    {
       printf("删除几号记录?");
       scanf("%d",&a);
       if(a<1 || a>m)
           printf("输入有误,请重新输入\n");
       else break;
    }
    char ack;
    printf("请确认是否删除(y/n):");
    ack = getchar();
    if(ack == 'n' ) return;
    if(a != m)
      for(i=a;i<m;i++)
      {
          rec[i-1]=rec[i];
          rec[i-1].num--;
          i++;
      }
    m--;
    list();
}
应该差不多了吧,奇怪的是那个getchar怎么好像没执行似的
2011-11-13 11:22
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:0 
void load()里面的那个sizeof(struct record)有错误,把struct去掉
2011-11-13 11:29
dhyco
Rank: 2
等 级:论坛游民
帖 子:9
专家分:32
注 册:2011-3-29
收藏
得分:7 
我测试一下没问题啊??
2011-11-13 14:57
My→style
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-12-7
收藏
得分:0 
回复 6楼 dhyco
文件保存  和删除函数有问题。。。
2011-11-22 07:55
快速回复:哪位大哥看看我这程序哪有问题啊,帮忙改改啊
数据加载中...
 
   



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

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