| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1361 人关注过本帖
标题:求大神帮忙,数据结构通讯录里面总是出问题,结果出不来
只看楼主 加入收藏
江南折耳猫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-12-29
收藏
 问题点数:0 回复次数:2 
求大神帮忙,数据结构通讯录里面总是出问题,结果出不来
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct record
{char num[10],name[20],tel[20],address[40],unit[10],email[30];}
stu[500];
int pc=0;
FILE *fp;
void mainmenu();//主菜单
void newrecord();//新名片
void searchbyname();//按姓名查询
void searchbynum();//按编号查询
void showall();//显示所有
void readfromfile();//读取文件
void writetofile();//写入文件
void deletebynum();//按编号删除
void deletebyname();//按姓名删除
void modifybynum();//按编号修改
void modifybyname();//按姓名修改
void main()
{ readfromfile();
while (1)
{mainmenu();
}
}
void readfromfile()//从文件导入
{ if((fp=fopen("stu.txt","rb"))==NULL)
{ printf("\n\t\t通讯录文件不存在");
if ((fp=fopen("stu.txt","wb"))==NULL)
{  printf("\n\t\t建立失败");
exit(0);
}
else
{ printf("\n\t\t通讯录文件已建立");
printf("\n\t\t按任意键进入菜单");
getch();
return;
}
exit(0);
}
fseek(fp,0,2); /*文件位置指针移动到文件末尾*/
if (ftell(fp)>0) /*文件不为空*/
{rewind(fp); /*文件位置指针移动到文件开始位置*/
for (pc=0;!feof(fp) && fread(&stu[pc],sizeof(struct record),1,fp);pc++);
printf("\n\t\t文件导入成功");
printf("\n\t\t按任意键返回菜单");
getch();
return;
}
printf("\n\t\t文件导入成功");
printf("\n\t\t通讯录文件中无任何纪录");
printf("\n\t\t按任意键返回菜单");
getch();
return;
}
void mainmenu()//主菜单
{
char choic;
system("cls");
printf("\n\t\t********************主菜单********************");
printf("\n\t\t***********0-新添名片     1-全部显示************");
printf("\n\t\t***********2-按编号查询   3-按姓名查询************");
printf("\n\t\t***********4-按姓名删除   5-按编号删除************");
printf("\n\t\t***********6-按姓名修改   7-按编号修改************");
printf("\n\t\t***********8-保存退出     9-不保存退出***********");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choic=getch();
switch(choic){
case'0':newrecord();break;
case'1':showall();break;
case'2':searchbynum();break;
case'3':searchbyname();break;
case'4':deletebyname();break;
case'5':deletebynum();break;
case'6':modifybyname();break;
case'7':modifybyname();break;
case'8':writetofile();break;
    case 'a':writetofile();break;
    case 'b':exit(0);
default:mainmenu();
}
}
//2、删除名片信息:
void deletebyname()//按姓名删除
{ int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\n\t\t请输入要删除的姓名:");
scanf("%s",name);
for (i=a;i<pc;i++)
{if(strcmp(stu[i].name,name)==NULL)
{printf("\n\t\t以下是您要删除的名片纪录:");
findmark++;
printf("\n\t\t________________________________");
printf("\n\t\t编号:%s",stu[i].num);
printf("\n\t\t姓名:%s",stu[i].name);
printf("\n\t\t电话:%s",stu[i].tel);
printf("\n\t\t地址:%s",stu[i].address);
printf("\n\t\temail:%s",stu[i].email);
printf("\n\t\t________________________________");
printf("\n\t\t是否删除 (y/n)");
if (getch()=='y')
{for(j=i;j<pc-1;j++)/*纪录移动,从stud数组中删除之*/
stu[j]=stu[j+1];
pc--;
deletemark++;
printf("\n\t\t删除成功");
if((i+1)<pc)
{ printf("\n\t\t是否继续删除相同姓名的名片信息?(y/n)");
if(getch()=='y')
{a=i;
continue;
}
}
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<pc)
{ printf("\n\t\t是否继续删除相同姓名的名片信息?(y/n)");
if (getch()=='y')
{ a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{ printf("\n\t\t没有该名片的纪录");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;
return;
}
else if (findmark!=0)
{ printf("\n\t\t没有重名信息");
printf("\n\t\t没有该名片的纪录");
printf("\n\t\t是否继续删除?(y/n)");
 if (getch()=='y')
deletebynum();
 return;
 return;
}
}
void deletebynum()//按编号删除
{ int i,j;
int deletemark=0;
char num [20];
printf("\n\t\t请输入要删除的名片编号:");
scanf("%s",num);
if(pc==0)
{ printf("\n\t\t文件中无任何纪录");
printf("\n\t\t按任意键返回菜单");
getch();
return;
}
for(i=0;i<pc;i++)
{ if (strcmp(stu[i].num,num)==NULL)
{ printf("\n\t\t以下是您要删除的名片纪录:");
printf("\n\t\t编号:%s",stu[i].num);
printf("\n\t\t姓名  %s",stu[i].name);
printf("\n\t\t电话:%s",stu[i].tel);
printf("\n\t\t地址:%s",stu[i].address);
printf("\n\t\temail:%s",stu[i].email);
printf("\n\t\t是否删除?(y/n)");
if (getch()=='y')
{for (j=i;j<pc-1;j++) /*纪录移动,从stud数组中删除之*/   
stu[j]=stu[j+1];
pc--;
deletemark++;
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebynum();
return();
}
else
return;
}
continue;
}
if(deletemark==0)
{ printf("\n\t\t没有该名片的纪录");
printf("\n\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebynum();
return;
}
}
void newrecord()//添加新名片
{    printf("\n\t\t****************请输入名片信息****************\n");
printf("\n\t\t输入编号:");
scanf("%s",&stu[pc].num);
printf("\n\t\t输入姓名:");
scanf("%s",&stu[pc].name);
printf("\n\t\t输入电话号码:");
scanf("%s",&stu[pc].tel);
printf("\n\t\t输入地址:");
scanf("%s",&stu[pc].address);
printf("\n\t\t输入单位:");
scanf("%s",&stu[pc].unit);
printf("\n\t\t输入email:");
scanf("%s",&stu[pc].email);
pc++;
printf("\n\t\t是否继续添加?(y/n):");
if (getch()=='y')
newrecord();
return;
}
void showall()//显示所有名片
{
    int i;
    system("cls");
    system("cls");
    { printf("\n\t\t***************以下为通讯录所有信息************");
    for (i=0;i<pc;i++)
    { printf("\n\t\t编号:%s",stu[i].num);
    printf("\n\t\t姓名:  %s",stu[i].name);
    printf("\n\t\t电话:  %s",stu[i].tel);
    printf("\n\t\t地址:  %s",stu[i].address);
    printf("\n\t\t单位:  %s",stu[i].unit);
    printf("\n\t\temail: %s",stu[i].email);
    printf("\t\t");
    if (i+1<pc)
    { printf("\n\t\t__________________________");
system("pause");
    }
    }
    printf("\n\t\t************************************************");
    }
    else
        printf("\n\t\t通讯录中无任何纪录");
    printf("\n\t\t按任意键返回主菜单:");
    getch();
    return;
}


//5、查询名片信息:
void searchbyname()//按姓名查询?
{ int mark=0;
int i;
int a=0;
printf("\n\t\t*****************按姓名查找*******************");
char name[20];
printf("\n\t\t请输入姓名:");
scanf("%s",name);
for(i=a;i<pc;i++)
{if(strcmp(stu[i].name,name)==0)
{printf("\n\t\t*************以下是您查找的名片信息***********");
printf("\n\t\t学号:%s",stu[i].num);
printf("\n\t\t姓名:%s",stu[i].name);
printf("\n\t\t电话:%s",stu[i].tel);
printf("\n\t\t地址:%s",stu[i].address);
printf("\n\t\te-mail:%s",stu[i].email);
printf("\n\t\t************************************************");
mark++;
if((i+1)<pc)
{printf("\n\t\t是否继续查找相同名字的名片信息:(y/n)");
if (getch()=='y')
{a=i;
continue;
}
else
return;
}
else
{printf("\n\t\t按任意键返回菜单");
getch();
return;
}
}
}
if(mark!=0)
{printf("\n\t\t没有相同姓名的学生纪录");
printf("\n\t\t按任意键返回菜单");
getch();
return;
}
else
{
printf("\n\t\t没有相同姓名的名片纪录");
printf("\n\t\t按任意键返回菜单");
getch();
return;
}
}
void searchbynum()//按编号查询
{int mark=0;
int i;
int a=0;
printf("\n\t\t******************按编号查找******************\n");
char num[10];
printf("\n\t\t请输入编号:");
scanf("%s",num);
for(i=0;i<pc;i++)
{if(strcmp(stu[i].num,num)==0)
{printf("\n\t\t**************以下是您查找的名片信息**********");
printf("\n\t\t编号:%s",stu[i].num);
printf("\n\t\t姓名:%s",stu[i].name);
printf("\n\t\t电话:%s",stu[i].tel);
printf("\n\t\t地址:%s",stu[i].address);
printf("\n\t\te-mail:%s",stu[i].email);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:");
mark++;
getch();
return;
}
}
if(mark==0)
{printf("\n\t\t没有改名片的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
}
void writetofile()//写入文件
{ int i;
if ((fp=fopen("stu.txt","wb"))==NULL)
{ printf("\n\t\t文件打开失败");
}
for (i=0;i<pc;i++)
{ if (fwrite(&stu[i],sizeof(struct  record),1,fp)!=1)
{ printf("\n\t\t写入文件错误!\n");
}
}
fclose(fp);
printf("\n\t\t通讯录文件已保存");
printf("\n\t\t按任意键退出程序\n\t\t");
exit(0);
}
void modifybyname()
{
    int mark=0;
    int i;
    int a=0;
    int j;
    int findmark=0;
    int deletemark=0;
    printf("\n\t\t*****************按姓名修改*******************");
    char name[20];
    printf("\n\t\t请输入姓名:");
    scanf("%s",name);
    for(i=a;i<pc;i++)
    { if (strcmp(stu[i].name,name)==0)
    {
        printf("\n\t\t*************以下是您修改的名片信息***********");
        printf("\n\t\t学号: %s",stu[i].num);
        printf("\n\t\t姓名: %s",stu[i].name);
        printf("\n\t\t电话: %s",stu[i].tel);
        printf("\n\t\t地址: %s",stu[i].address);
        printf("\n\t\te-mail:%s",stu[i].email);
        printf("\n\t\t************************************************");
    }
    printf("请输入要修改的内容:");
    for (j=i;j<pc-1;j++)
        stu[j]=stu[j+1];
        pc--;
        deletemark++;
        printf("\n\t\t输入编号:");
        scanf("%s",&stu[pc].num);
        printf("\n\t\t输入姓名:");
        scanf("%s",&stu[pc].name);
        printf("\n\t\t输入电话号码:");
        scanf("%s",&stu[pc].tel);
        printf("\n\t\t输入地址:");
        scanf("%s",&stu[pc].address);
        printf("\n\t\t输入单位:");
        scanf("%s",&stu[pc].unit);
        printf("\n\t\t输入email:");
        scanf("%s",&stu[pc].email);
        pc++;
        printf("\n\t\t是否继续修改?(y/n):");
        if (getch()=='y')
            modifybyname;
        return;
    }
}
void modifybynum()
{
    int mark=0;
    int i;
    int a=0;
    int j;
    int findmark=0;
    int deletemark=0;
    printf("\n\t\t******************按编号修改******************\n");
    char num[10];
    printf("\n\t\t请输入编号:");
    scanf("%s",num);
    for(i=0;i<pc;i++)
    { if (strcmp(stu[i].num,num)==0)
    { printf("\n\t\t************** 以下是您修改的名片信息 **********");
    printf("\n\t\t编号:%s",stu[i].num);
    printf("\n\t\t姓名:%s",stu[i].name);
    printf("\n\t\t电话:%s",stu[i].tel);
    printf("\n\t\t地址:%s",stu[i].address);
    printf("\n\t\te-mail:%s",stu[i].email);
    printf("\n\t\t************************************************");
    }
    printf("请输入要修改的内容:");
    { for (j=i;j<pc-1;j++)
    stu[j]=stu[j+1];
    pc--;
    deletemark++;
    }
    printf("\n\t\t输入编号:");
    scanf("%s",&stu[pc].num);
printf("\n\t\t输入姓名:");
scanf("%s",&stu[pc].name);
?printf("\n\t\t输入电话号码:");
scanf("%s",&stu[pc].tel);
printf("\n\t\t输入地址:");
scanf("%s",&stu[pc].address);
printf("\n\t\t输入单位:");
?scanf("%s",&stu[pc].unit);
printf("\n\t\t输入email:");
scanf("%s",&stu[pc].email);
pc++;
printf("\n\t\t是否继续修改?(y/n):");
if(getch()=='y')
modifybynum();
return;
}
}


搜索更多相关主题的帖子: stu 姓名 int pc printf 
2019-12-29 19:54
江南折耳猫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-12-29
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
这个是图片,咋弄都出不来
2019-12-29 19:58
江南折耳猫
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2019-12-29
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
这个是图片,咋弄都出不来
2019-12-29 19:58
快速回复:求大神帮忙,数据结构通讯录里面总是出问题,结果出不来
数据加载中...
 
   



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

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