标题:[求助] 我的通讯录有太多的错误,该怎么改?
只看楼主
lyle3
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-5-19
 问题点数:0 回复次数:8 
[求助] 我的通讯录有太多的错误,该怎么改?

#include "stdio.h"
#include "string.h"
#include "malloc.h"
#include "stdlib.h"
# define FORMAT "%s\t%s\t%s\t%s\t%s\t%s\t"
/**********结构体定义**************/
struct person
{
int num;
int n;
char name[20];
int hphone[20];
int mphone[20];
char address[50];
char group[20];
char email[50];
}person[800];
void add()
{
FILE *fp;
int a;
char b;
printf("请输入需要保存的姓名:\n");scanf("%s",person[n].name);
printf("请输入需要保存的住宅电话:\n");scanf("%s",person[n].hphone);
printf("请输入需要保存的手机号码:\n");scanf("%s",person[n].mphone);
printf("请输入需要保存的家庭地址活工作单位:\n");scanf("%s",person[n].address);
printf("请给保存号码分组:\n ");printf("1: 朋友\t2: 家人\t3: 同事\t4: 同学\n");person[n].group=gets();
printf("请输入需要保存的E-MAIL:\n");scanf("%s",person[0].email);
printf("确定?Y/N");scanf("%c",b);
switch(b)
{
case Y: ;break;
case N: return;break;
default
printf("输入错误!!!");}
}
fwrite(&person[i],sizeof(struct person),1,fp);
printf("添加成功!!!\n");
n=n+1;
printf("继续进行其他操作? Y/N");
scanf("%c",b);
switch(b)
{
case Y: return;break;
case N: exit();break;
default
printf("输入错误!!!");
}
}
void del()
{ FILE *fp;
if((fp=fopen(通讯录.txt,"rb"))==NULL)
{
printf("打开文件错误!!!\n");
return;
}
printf("请输入需要删除的记录的标记)
printf("请您选择删除种类:\n 1: 通过姓名删除 2: 通过所在通讯录序号删除 3: 通过手机号删除 4: 通过住宅电话删除 5: 返回\n");
switch(a)
case 1:
{ printf("请输入待删除记录姓名: ");
scanf("%s",a[]);
for(i=0;i<=n;i++)
{
if(strcmp(a[],person[i].name)=0)
fread(person[i],sizeof(struct person),1,fp);
printf(FORMAT,person[i].num,person[i].name,person[i].mobilephone,person[i].homephone,person[i].address,person[i].email);
}
};break;
case 2: {printf("请输入待删除人序号: ");
scanf("%s",a[]);
for(i=0;i<=n;i++)
{
if(strcmp(a[],person[i].num)=0)
fread(person[i],sizeof(struct person),1,fp);
printf(FORMAT,person[i].num,person[i].name,person[i].mobilephone,person[i].homephone,person[i].address,person[i].email);
}
};break;
case 3: {printf("请输入待删除人手机号: ");
scanf("%s",a[]);
for(i=0;i<=N;i++)
{
if(strcmp(a[],person[i].mobilephone)=0)
fread(person[i],sizeof(struct person),1,fp);
printf(FORMAT,person[i].num,person[i].name,person[i].mobilephone,person[i].homephone,person[i].address,person[i].email);
}
};break;
case 4: {printf("请输入待删除人住宅电话: ");
scanf("%s",a[]);
for(i=0;i<=n;i++)
{
if(strcmp(a[],person[i].homephone)=0)
fread(person[i],sizeof(struct person),1,fp);
printf(FORMAT,person[i].num,person[i].name,person[i].mobilephone,person[i].homephone,person[i].address,person[i].email);
}
};break;
case 5: return;break;
default
printf("输入错误!!!\n");
printf("确定?Y/N");
scanf("%c",b);
switch(b)
{
case Y: ;break;
case N: return;break;
default
printf("输入错误!!!");
}
for(j=i+1;j<n;j++)
{
person[j-1]=person[j];
}
person[n]=NULL;
n=n-1;
printf("删除成功!!!\n");
printf("继续进行其他操作? Y/N");
scanf("%c",b);
switch(b)
{
case Y: return;break;
case N: exit();break;
default
printf("输入错误!!!");
}
}
void modify() /******对编辑函数定义********/
{ FILE *fp;
int a;
char b;
if((fopen("通讯录.txt","rb"))==NULL)
{
printf("打开文件错误!!!");
return;
}
printf("请输入要待修改人的序号: ");
scanf("%d",a);
fprintf();
printf("请重新输入要修改人的信息: \n");
printf("请输入需要保存的姓名:\n");
scanf("%s",person[a].name);
printf("请输入需要保存的住宅电话:\n");
scanf("%s",person[a].homephone);
printf("请输入需要保存的手机号码:\n");
scanf("%s",person[a].mobilephone);
printf("请输入需要保存的家庭地址活工作单位:\n");
scanf("%s",person[a].address);
printf("1: 朋友\2: 家人\3: 同事\4: 同学\n");
printf("请给保存号码分组:\n ");
person[a].group=gets();
printf("请输入需要保存的E-MAIL:\n");
scanf("%s",person[a].email);
printf("确定?Y/N")
scanf("%c",b);
switch(b)
{
case Y: ;break;
case N: return;break;
default
printf("输入错误!!!");
}
fwrite(&person[i],sizeof(struct person),1,fp);
printf("修改成功!!!\n");
printf("继续进行其他操作? Y/N");
scanf("%c",b);
switch(b)
{
case Y: return;break;
case N: exit();break;
default
printf("输入错误!!!");
}
}
void print() /****对查看函数定义*****/
{
struct person ;
char b;
FILE *fp;
if((fp=fopen(通讯录.txt,"rb"))==NULL)
{
printf("打开文件错误!!!\n");
return;
}
Printf("the all records are:\n");
for(i=0;i<=n;i++)
{
fprintf(&person[i],sizeof(struct person),1,fp);
}
printf("请您选择操作种类: \n");
printf("1: 添加 2: 修改 3: 查找 4: 返回 \n");
scanf("%c",b);
switch(b)
{
case 1: add();break;
case 2: modify();break;
case 3: search();break;
case 4: return;break;
default
printf("输入错误!!!");
}

}
void search() /*****对查找函数定义*********/ 需要添加一个筛选(对电话号码)查找功能
{
int i,j,a,a[20],b[i];
FILE *fp;
if((fp=fopen("通讯录.txt","rb"))==NULL)
{
printf("打开文件错误!!!\n");
return;
}
printf("please input the number that you are searching:\n");
scanf("%d",&a);
switch(a)
{
case 1:b[i]=person[i].name;break;
case 2:b[i]=person[i].homephone;break;
case 3:b[i]=person[i].mobielphone;break;
case 4:b[i]=person[i].address;break;
case 5:b[i]=person[i].group;break;
case 6:b[i]=person[i].email;break;
default
printf("输入错误!!!");break;
}
scanf("%s",a[20]);
for(i=0,j=0;i<n;i++)
{
if(a[20]=b[i])
printf("name:\t%s homephone:\t%d mobilephone:\t%d address\t%s groupname:\t%s\n",name[i],name
[i].homephone,name[i].mobilephone,name[i].address,name[i].group);j++;
if(j=0)
printf("通讯录中没有此项记录!!!");
}
}
void search() /******定义查找函数********/
{
int i,j,a,a[20],b[i];
FILE *fp;
printf("1;按姓名查找\t 2:按住宅电话查找\t 3:按手机号码查找\t 4:按地址查找\t 5:按组查找\t 6 : 按email查找\n please input the number that you know of the person:\n");
if((fp=fopen(通讯录.txt,"rb"))==NULL)
{
printf("打开文件错误!!!\n");
return;
}
printf("please input the number that you are searching:\n");
scanf("%d",&a);
switch(a)
{
case 1:b[i]=person[i].name;break;
case 2:b[i]=person[i].homephone;break;
case 3:b[i]=person[i].mobielphone;break;
case 4:b[i]=person[i].address;break;
case 5:b[i]=person[i].group;break;
case 6:b[i]=person[i].email;break;
default
printf("输入错误!!!");break;
}
scanf("%s",a[20]);
for(i=0,j=0;i<n;i++)
{
if(a[20]=b[i])
printf("name:\t%s homephone:\t%d mobilephone:\t%d address\t%s groupname:\t%s\n",name[i],name
[i].homephone,name[i].mobilephone,name[i].address,name[i].group);j++;
if(j=0)
printf("通讯录中没有此项记录!!!");
}
void out() /**********定义退出函数**********/
{
printf("谢谢使用!!!");
exit();
}
void begin()
{
int a;
printf("**************** ****************************** *********************");
printf("**************** ************************** ****************** *************");
printf("****************欢迎使用!!!希望她能给你带来方便!!!*************");
printf("************************************************************************************************");
printf("**********************************************************************************************************");
}
/******进入主函数*********/

void main()
{
int n=0;
begin();
printf("1: 添加\t2: 查看\t\n3: 编辑 \t4: 删除\t5: 退出\t");
printf("请输入您想进行的操作号:");
scanf("%d",&a);
swich(a)
{
case "1": add(struct person *head);break;
case "2": searchp();break;
case "3": modify(struct person person[]);break;
case "4": del(struct person person[]);break;
case "5": out();break;
default
printf("输入错误!!!");break;
}
}
printf("谢谢使用!!!");
exit(0);
}

[此贴子已经被作者于2006-5-19 17:16:13编辑过]

搜索更多相关主题的帖子: 通讯录 include name int 
2006-05-19 11:15
lyle3
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-5-19
得分:0 

各位  帮帮我吧


我将再给你一次选择的机会............... QQ:514897584
2006-05-19 11:56
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
这是什么

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-19 12:20
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
得分:0 
呀,楼上的!这美女是谁啊,你老婆?!

奋斗改变一切!!
2006-05-19 15:13
lyle3
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-5-19
得分:0 
我想做一个通讯录,但是其中有很多不懂?
对文件怎么操作?
用VC编译时竟然有102处错误
我好迷茫


我将再给你一次选择的机会............... QQ:514897584
2006-05-19 17:19
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
得分:0 
晕啦!

奋斗改变一切!!
2006-05-20 09:48
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
得分:0 
struct person
{
int num;
int n;
char name[20];
int hphone[20];
int mphone[20];
char address[50];
char group[20];
char email[50];
}person[800];
void add()
{
FILE *fp;
int a;
char b;
printf("请输入需要保存的姓名:\n");scanf("%s",person[n].name); 这里和下面的n代表什么?没参数又没定义n
printf("请输入需要保存的住宅电话:\n");scanf("%d",&person[n].hphone);
printf("请输入需要保存的手机号码:\n");scanf("%d",&erson[n].mphone);
printf("请输入需要保存的家庭地址活工作单位:\n");scanf("%s",person[n].address);
printf("请给保存号码分组:\n ");printf("1: 朋友\t2: 家人\t3: 同事\t4: 同学\n");person[n].group=gets();
printf("请输入需要保存的E-MAIL:\n");scanf("%s",person[0].email); 这里为什么是0
printf("确定?Y/N");scanf("%c",&b);
switch(b)
{
case Y: ;break; ;这个分号代表什么都不做吗?
case N: return;break;
default
printf("输入错误!!!");}
}
fwrite(&person[i],sizeof(struct person),1,fp); 哪来的i?
printf("添加成功!!!\n");
n=n+1;
printf("继续进行其他操作? Y/N");
scanf("%c",&b);
switch(b)
{
case Y: return;break;
case N: exit(1);break;
default
printf("输入错误!!!");
}
}
只看了上面一些~发现一些错误~下面的应该还有类似的错误,请LZ再仔细看一吧

很高兴能和大家一起学习程序! QQ:114109098
2006-05-20 19:30
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
得分:0 
case Y: ;break; /* 'Y' */
case N: return;break; /* 'N' break 无用 */

楼主..你从头再看一遍书再写这种题吧.
或者去网上搜一个.很多例子
错误还有很多.这是我随意看到了!


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-05-21 00:26
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 

今天刚刚看了会儿文件,是不是打开文件if((fp=fopen("通讯录.txt","rb"))==NULL)改为if((fp=fopen("通讯录.txt","rt"))==NULL)


2006-05-21 09:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-65515-1-1.html




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

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