| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1857 人关注过本帖
标题:求高手帮忙,我这个程序怎么就错了呢?
只看楼主 加入收藏
Berrysun
Rank: 1
来 自:浙江中医药大学
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-17
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:11 
求高手帮忙,我这个程序怎么就错了呢?
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct record{
    char name[20];
    char street[20];
    char city[20];
    char eip[20];
    char state[20];
}person[500];
struct slnode{
    record date;
    struct slnode *next;
    struct slnode *prior;
};
typedef slonde *linklist;
linklist l;
int num=0;
FILE *fp;
void mainmenu();
void searchmenu();
void enter();
void search();
void display();
void load();
void save();
void delet();
void listinsert();
void initlist();
void main()
{
    initlist();
    load();
    listnsert();
    while (l)
        mainmenu();
}
void load()
{
    if ((fp=fopen("person.bin","rb"))==NULL)
    {
        printf("\n\t\t通讯录文件不存在");
            if ((fp=fopen("person","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(num=0;!feof(fp)&&fread(&person[num],sizeof(struct record),l,fp);num++);
        printf("\n\t\t文件导入成功");
        printf("\n\t\t按任意键返回主菜单");
        getch();
        return;
    }
    printf("\n\t\文件导入成功");
    printf("\n\t\通讯录文件中无任何记录");
    printf("\n\t\按任意键返回主菜单");
    getch();
    return;
}
void mainmenu()//主菜单
{
    char choic;
    system("cls");
    printf("******************欢迎进入通讯录系统******************");
    printf("*********welcome to the address book system***********");
    printf("****************** 1—新添记录 ***********************");
    printf("****************** 2—查找联系人 *********************");
    printf("****************** 3—删除联系人 *********************");
    printf("****************** 4—保存退出 ***********************");
    printf("****************** 5—不保存退出 *********************");
    printf("******************************************************");
    printf("\n\t\请选择:");
        choic=getch();
    switch (choic)
    {
    case'1':enter();break;
    case'2':serchmenu();break;
    case'3':delet();break;
    case'4':save();break;
    case'5':exit();break;
    default:mainmenu();
    }
}
void searchmenu()//查询菜单
{
    char choic;
    system("cls");
    printf("**********************查询菜单************************");
    printf("****************** 1—显示所有 ***********************");
    printf("****************** 2—按姓名查询 *********************");;
    printf("****************** 3—返回主菜单 *********************");
    printf("******************************************************");
        printf("\n\t\请选择:");;
        choic=getch();
    switch (choic)
    {
    case'1':displayr();break;
    case'2':serch();break;
    case'3':mainmenu();break;
   
    }
}
void enter()//添加记录
{
    printf("***************** 请输入人员信息 *********************");
    printf("\n\t\t姓名:")
    scanf("%s",&person[num].name);
    printf("\n\t\t街道:")
    scanf("%s",&person[num].street);
    printf("\n\t\t城市:")
    scanf("%s",&person[num].city);
    printf("\n\t\t输入邮编:")
    scanf("%s",&person[num].eip);
    printf("\n\t\t国家:")
    scanf("%s",&person[num].state);
    num++;
    printf(\n\t\t是否继续添加?(Y/N):");
        if(getch()=='y')
            enter();
        return;
}
void display()//显示所有
{
int i ;
system("cls");
if(num!=0)
{
      printf("************** 以下为通讯录所有信息 *******************");
        for(i=0;i<num;i++)
        {
           printf("\n\t\t姓名: %s",person[i].name);
           printf("\n\t\t街道: %s",person[i].street);
           printf("\n\t\t城市: %s",person[i].city);
           printf("\n\t\t邮编: %s",person[i].eip);
           printf("\n\t\t国家: %s",person[i].state);
           printf("\t\t);
               if(i+1<num)
               {
                 printf("\n\t\t_____________________");
                 system("pause");
               }

        }
        printf("\n\t\t**********************************************);
}

   
else
printf("\n\t\t通讯录中无任何记录");
printf("\n\t\t按任意键返回主菜单:");
getch()
    return;
}
void save()//写入文件
{
    int i;
    if((fp=fopen("person","wb"))==NULL)
    {
        printf("\n\t\t文件打开失败");
    }
    for (i=0;i<num;i++)
    {
        if(fwrite(&person[i],sizeof(struct record),l,fp)!=l)
        {
            printf("\n\t\t文件打开失败");
        }
        for(i=0;i<num;i++)
        {
            if(fwrite(&person[i],sizof(struct recoad),l,fp)!=l)
            {
             printf("\n\t\t写入文件错误!\n");
        }
        }
        fclose(fp);
        printf("\n\t\t通讯录文件已保存");
        printf("\n\t\t按任意键退出程序\n\t\t");
        exit(0);

    }
    void listinsert()//增加一个结点
    {
        linklist s,p=l;
        for(int i=0;i<num;i++)
        {
            s=new slnode;
            strcpy(s->date.name,person[i].name);
            strcpy(s->date.city,person[i].city);
            strcpy(s->date.street,person[i].street);
            strcpy(s->date.eip,person[i].eip);
            strcpy(s->date.state,person[i].state);
            s->prior=p->prior;
            s->next=p;
            p->prior->next=s;
            p->prior=s;
            p=p->next;
        }
    }
    void initlist()
    {
        l=new slnode;
        l->next=l;
        l->prior=l;
    }
    void search()
    {
        int j=0,a=0;
        linklist p=l;
        printf("\n\t\t***************** 按姓名查找 *******************");
            char name[20];
        printf("\n\t\t请输入姓名:");
        scanf("%",name);
        for(int i=a;i<num;i++;p=p->next)
        {
            if(strcmp(name,p->next->date.name)==0)
            {
                if(strcmp(name,p->next->date.name)==0)
                {
                    printf("查询到的信息:");
                    printf("\n");
                    printf("姓名:");
                    printf("%s",p->next->date.name);
                    printf("\n");
                    printf("城市:");
                    printf("%s",p->next->date.city);
                    printf("\n");
                    printf("国家:");
                    printf("%s",p->next->date.state);
                    printf("\n");
                    printf("街道:");
                    printf("%s",p->next->date.street);
                    printf("\n");
                    printf("邮政编码:");
                    printf("%s",p->next->date.eip);
                    j++;
                }
                if(j==0)
                    printf("\t\t 该通讯录没有该人!");
                if((i+1)<num)
                {
                    printf("\n\t\t 是否继续查找相同名字的人员信息:(y/n)");
                    if(get()=='y')
                    {
                        a=i;
                        continue;

                    }
                    else
                        return;
                }
                else
                {
                    printf("\n\t\t按任意键返回主菜单");
                    getch();
                    return;
                }
            }
        }
        void delet()
        {
            int a=0;
            int findmark=0;
            int j;
            int deletmark=0;
            int i;
            char name[20];
            printf("\n\t\t请输入要删除人员姓名:");
            scanf("%s",name);
            for (i=a;i<num;i++)
            {
                if(strcmp(person[i].name.name)==NULL)
                {
                    printf("\n\t\t以下是您要删除的人员记录:");
                    findmark++;
printf("\n\t\t_______________________________");
printf("\n\t\t姓名:%s",person[i].name);
printf("\n\t\t街道:%s",person[i].street);
printf("\n\t\t城市:%s",person[i].city);
printf("\n\t\t邮编:%s",person[i].eip);
printf("\n\t\t国家:%s",person[i].state);
printf("\n\t\t_______________________________");
printf("\n\t\t是否删除?(y/n)");
if(getch()=='y'){
    for(j=i;j<num-1;j++)
        person[j]=person[j+1];
    num--;
    deletemark++;
    printf("\n\t\t删除成功");
    if((i+1)<num){
        printf("\n\t\t是否继续删除相同姓名的人员信息?(y/n)");
        if(getch()=='y'){
            a=i;continue;
        }
    }
    printf("\n\t\t是否继续删除?(y/n)");
    if(getch()=='y')
        delet();
    return;
}
if((i+1)<num){
    printf("\n\t\t是否继续删除相同姓名的人员信息?(y/n)");
    if(getch()=='y'){
        a=i;continue;
    }
}
}
else
continue;
}
if((deletemark==0)&&(findmark==0)){
    printf();
    return;
}
else if(findmark!=0){
    printf("\n\t\t没有重名信息");
    printf("\n\t\t没有该人员的记录");
    return;
}
}
搜索更多相关主题的帖子: record 
2012-12-21 00:09
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:1 
一大堆错误,{ } 都不匹配,这些问题要自己处理啊,赚取笑的。。。

一边写一般编译查错啊,不要把代码写完了再来差错

[ 本帖最后由 yuccn 于 2012-12-21 00:43 编辑 ]

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-21 00:42
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:1 
先搞定低级错误。

Go Go Go
2012-12-21 08:58
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:1 
以下是引用yuccn在2012-12-21 00:42:04的发言:

一大堆错误,{ } 都不匹配,这些问题要自己处理啊,赚取笑的。。。

一边写一般编译查错啊,不要把代码写完了再来差错
我都怀疑这是谁写的,自己能写这么长的代码,连个错误也解决不了,搞笑。

编程之路定要走完……
2012-12-21 09:24
hit小龙
Rank: 6Rank: 6
等 级:侠之大者
帖 子:173
专家分:462
注 册:2012-12-6
收藏
得分:1 

确实得把基础搞清楚
错误太多了
2012-12-21 10:36
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:1 
长程序考验人的意志和耐心。

www.qunxingw.wang
2012-12-21 11:33
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:1 
以下是引用C_戴忠意在2012-12-21 09:24:15的发言:

我都怀疑这是谁写的,自己能写这么长的代码,连个错误也解决不了,搞笑。
估计是上哪抄的吧,编不过就来求助

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2012-12-21 12:55
Berrysun
Rank: 1
来 自:浙江中医药大学
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-17
收藏
得分:0 
回复 7楼 peach5460
是抄的,不过有一句不会改
typedef slonde *linklist;
linklist l;
这里定义链表怎么不能定义成全局的呢???

没有伞的孩子,只能努力奔跑。
2012-12-22 20:49
Berrysun
Rank: 1
来 自:浙江中医药大学
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-17
收藏
得分:0 
回复 2楼 yuccn
我也知道一大堆错误。。。。只是第一个错误不会改。。。。
typedef slonde *linklist;
linklist l;

没有伞的孩子,只能努力奔跑。
2012-12-22 20:50
Berrysun
Rank: 1
来 自:浙江中医药大学
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-17
收藏
得分:0 
回复 3楼 zhaoya881010
不要都这么说我啊。。。菜鸟很受打击啊。。。

没有伞的孩子,只能努力奔跑。
2012-12-22 20:51
快速回复:求高手帮忙,我这个程序怎么就错了呢?
数据加载中...
 
   



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

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