| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 414 人关注过本帖
标题:通讯录的问题,关照菜鸟,给点耐心哦 ,这是我自己写的一个简单的通讯录,调 ...
只看楼主 加入收藏
cyuyan793445
Rank: 1
来 自:江门五邑大学
等 级:新手上路
帖 子:20
专家分:0
注 册:2013-1-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
通讯录的问题,关照菜鸟,给点耐心哦 ,这是我自己写的一个简单的通讯录,调试运行我看不出有啥问题
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N  4;
//建立日期函数
struct date_type
{
 unsigned short year;
 unsigned short month;
 unsigned short day;
};

//建立函数结构体存储信息
struct person_type
{
 int num; //序号
 char name[10];
 int mobilenum;  //手机号码
 int homenum;    //家庭电话
 char email;
 char address[30];  //通讯地址
 struct date_type birthday;

};

typedef struct person_type Person;

//编写建立信息文件函数,从键盘输入N个人的信息,并转存到文件中
int mkfile(char*filename,Person per[],int N)
{
FILE*fp;
int i,flag=1;
if((fp=fopen(filename,"wb"))==NULL)
{
  printf("can not open this file\n");
exit(0);
}
printf("请输入%d个人的序号,姓名,手机号码,家庭电话,电子邮箱,通讯地址,出生日期:\n",N);
for(i=0;i<N;i++)
{
 scanf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
if(fwrite(&per[i],sizeof(per),1,fp)!=1)
{
 flag=0;
 break;

}


}
fclose(fp);
return flag;

}

//显示函数
int show(char*filename,Person per[],int N)
{

FILE*fp;
int i,flag=1;
if((fp=fopen(filename,"rb"))==NULL)
{
 printf("cannot open this file\n");
exit(0);

}
for(i=0;i<N;i++)
if(fread(&per[i],sizeof(per),1,fp)!=1)
{  flag=0;
   break;
}
else
printf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
fclose(fp);
return flag;

}


//建立查找函数
int seekInfo(char*filename,Person per[],int n)
{
 FILE*fp;
 int i;flag=1;
 printf("please input seekname %s",seekname);
 scanf("%s",&seekname);
 for(i=0;i<N;i++)
     if(seekname==per[i].name)  //实现查找功能的关键代码
printf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
 else
     flag=0;
 fclose(fp);
return flag;
}
   
//建立添加信息的函数
void addInfo(char*filename, int N)
{
    FILE*fp;
    char str[];
    if((fp=fopen("filename","a"))==NULL)
    {
        printf("cannot open this file\n");
        exit(0);
    }
 else
     printf("请输入需添加的信息:%s",str);
gets(str);
fputs(str,fp);
fclose(fp);
if((fp=fopen("filename","r"))==NULL)
{
 printf("cannot open this file\n");
exit(0);
}
fgets(str,N,fp);
puts(str);
fclose(fp);
return 0;
}

//建立删除函数
void deletInfo(char*filename,int N)
{
 FILE*fp;
 int i;
 int count=N;
 printf("请输入需要删除信息的人名:%s",deletname);
 scanf("%s",&deletname);
for(i=0;i<N;i++)
{ if(deletname==per[i].name)
   per[i]=per[i+1];  //以向前赋值的方法实现个人信息的向前移动,进而删除了第i 个人的信息

}
count-=1;   //通讯录删除某个信息后的人数
printf("删除信息后的通讯录:");
for(i=0;i<count;i++)
pintf("%d%s%d%d%s%s%d",&per[i].num ,&per[i].name ,&per[i].mobilenum,&per[i].homenum,&per[i].email,&per[i].address,&per[i].birthday);
printf("\n");

}
//主函数
int main()
{
int k=0;
while(1)
{
printf("\n");
printf("这是一个通讯录\n");
printf("\n");
printf("1----创建通讯录\n");
printf("2----查找通讯录信息\n");
printf("3----添加通讯录信息\n");
printf("4----删除通讯录信息\n");
printf("0----退出\n");
printf("请选择:");
scanf("%d",&k);
switch(k)
{
case 0:  exit(0);
case 1: mkFile();
        continue;
case 2:seekInfo();
    continue;
case 3:addInfo();
    continue;
case 4:deletInfo();
    continue;




}

return 0;


}
}
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
   不知道错在哪里啊,帮忙找找,指点指点

[ 本帖最后由 cyuyan793445 于 2013-2-25 15:19 编辑 ]
搜索更多相关主题的帖子: 手机号码 address include 通讯录 结构体 
2013-02-25 15:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
int N
学坏了脑,把宏标识符当变量标识符用。

其实你最起码学会看IDE的信息,人家把光标指到出错行了,还给出了文字告诉你错误原因,这还看不出,别学编程了。

[ 本帖最后由 TonyDeng 于 2013-2-26 13:22 编辑 ]

授人以渔,不授人以鱼。
2013-02-26 13:19
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:7 
T版激动了

仰望星空...........不忘初心!
2013-02-26 13:34
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:7 
以下是引用TonyDeng在2013-2-26 13:19:59的发言:

int N
学坏了脑,把宏标识符当变量标识符用。

其实你最起码学会看IDE的信息,人家把光标指到出错行了,还给出了文字告诉你错误原因,这还看不出,别学编程了。


莫激动,莫激动...
坛子里这么多莫名其妙的问题,我觉得你看得比我还多,应该比我还淡定才对...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-02-26 15:45
快速回复:通讯录的问题,关照菜鸟,给点耐心哦 ,这是我自己写的一个简单的通讯 ...
数据加载中...
 
   



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

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