| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1193 人关注过本帖
标题:我写了一个“家庭收支管理系统”,程序读取文件有问题,我找不出出错在哪, ...
只看楼主 加入收藏
拿笔小新
Rank: 2
等 级:论坛游民
帖 子:8
专家分:11
注 册:2011-12-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
我写了一个“家庭收支管理系统”,程序读取文件有问题,我找不出出错在哪,希望哪位高手帮帮忙?谢谢了!
我写了一个“家庭收支管理系统”,程序读取文件有问题,我找不出出错在哪,希望哪位高手帮帮忙?谢谢了!
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 10
struct people
{
    char name[20];
    int year;
    int month;
    int in;
    int out;

}peo[SIZE];
   
int n=0,m=0;

int save()
{
    FILE *fp;
    int i;
    fp=fopen("D:people.txt","w");
    {
        fprintf(fp,"%d\n",n);
        for(i=0;i<n;i++)
            fprintf(fp,"%s\n",peo[i].name);
            fprintf(fp,"%d\n",peo[i].year);
            fprintf(fp,"%d\n",peo[i].month);
            fprintf(fp,"%d\n",peo[i].in);
            fprintf(fp,"%d\n",peo[i].out);
    }
    fclose(fp);
    return 0;
}


int read()
{
    FILE *fp;
    int i;
    if((fp=fopen("D:people.txt","r"))!=NULL);
    {
        fscanf(fp,"%d\n",n);
        for(i=0;i<n;i++)
            fscanf(fp,"%s\n",peo[i].name);
            fscanf(fp,"%d\n",peo[i].year);
            fscanf(fp,"%d\n",peo[i].month);
            fscanf(fp,"%d\n",peo[i].in);
            fscanf(fp,"%d\n",peo[i].out);
    }
    fclose(fp);
    return 0;

}


int add_people()
{
    int save();
    char name[20];
    printf("\n[录入新成员信息]\n");
    printf("\n请输入姓名:");
    scanf("\n%s",name);
    strcpy(peo[m].name,name);
    printf("\n请输入年份:");
    scanf("%d",&peo[m].year);
    printf("\n请输入月份:");
    scanf("%d",&peo[m].month);
    printf("\n请输入收入:");
    scanf("%d",&peo[m].in);
    printf("\n请输入支出:");
    scanf("%d",&peo[m].out);
    save();
    return 0;
}


int dele_people()
{
    FILE *fp;
    char name[20];
    int i,k,g,h,p=0;
    printf("\n[删除成员信息]\n");
    printf("\n请输入姓名:");
    scanf("\n%s",name);
    read();
    h=n;
    for(i=0;i<m;i++)
    {
            if(strcpy(peo[i].name,name)==0)
            {
                    k=1;break;
            }
    }
         if(i==n) k=0;
         if(k==0) printf("\n不存在该成员\n");
         if(k==1)
         {
              for(i=0;i<n;i++)
                  if(strcpy(peo[i].name,name)==0)
                  {
                      g=i;p=1;break;
                  }
              if(p==1)
              {
                   n=h-1;
                   fp=fopen("people","w");
                   fprintf(fp,"%d\n",n);
                   for(i=0;i<g;i++)
                       fprintf(fp,"%s%d%d%d%d\n",peo[i].name,peo[i].year, peo[i].month, peo[i].in, peo[i].out);
                   for(i=g+1;i<h;i++)
                       fprintf(fp,"%s%d%d%d%d\n",peo[i].name,peo[i].year, peo[i].month, peo[i].in, peo[i].out);
                   fclose(fp);
                   printf("\n••••••••\n删除成功\n");
              }   
         }
    save();
    return 0;
}


int change_people()
{
     char name[20],name1[20];
     int i,year,month,year1,month1,in,out,k,p=0,t=0;
     printf("\n[修改成员收支信息]\n\n请输入姓名:");
     scanf("%s",name);
     read();
     for(i=0;i<m;i++)
     {
          if(strcmp(peo[i].name,name)==0)
          {
              k=1;break;
          }
     }
    if(i==m) k=0;
    if(k==0) printf("\n不存在该成员\n");
    if(k==1)
    {
        printf("\n以下为%s收支信息:\n\n年 月 收 支\n",name);
        for(i=0;i<m;i++)
        {
            printf("%4d%4d%9d%9d",peo[i].year,peo[i].month,peo[i].in, peo[i].out);
        }
        printf("\n请输入需要修改的具体时间:\n年 月\n");
        scanf("%d%d",&year,&month);
        for(i=0;i<m;i++)
        {
            if(peo[i].year==year&& peo[i].month==month)
            {
                p=1;break;
            }
        }
        if(p==0)  printf("\n没有该时间的收支情况信息\n\n修改失败\n");
        if(p==1) 
        {
             printf("\n请输入修改后数据:\n");
             printf("\n姓名:");
             scanf("%s",name1);
             printf("\n年份");
             scanf("%d",year1);
             printf("\n月份");
             scanf("%d",month1);
             printf("\n收入");
             scanf("%d",in);
                printf("\n支出");
             scanf("%d",out);
        }
        for(i=0;i<m;i++)
        if(strcmp(peo[i].name,name)==0&&peo[i].year==year&&peo[i].month==month)
        {
             strcpy(peo[i].name,name1);
             peo[i].year=year1; peo[i].month=month; peo[i].in=in;peo[i],out=out;
            break;
        }
        printf("\n••••••••\n修改成功\n");
    }
    save();
    return 0;
} 


int search_people()
{
    int i,k;
    char name[20];
    read();
    printf("\n[查询成员收支信息]\n\n请输入姓名:");
    scanf("%s",name);
    for(i=0;i<m;i++)
    {
        if(strcmp(peo[i].name,name)==0)
        {
            k=1;break;
        }
    }
    if(i==m) k=0;
    if(k==0) printf("\n不存在该成员\n");
    if(k==1)
    {
        printf("\n%s的所有收支信息:\n\n",name);
        printf("时间 收入 支出 总计\n");
        for(i=0;i<m;i++)
        {
             if(strcmp(peo[i].name,name)==0&&peo[i].year!=0)
                 printf("%d%d%9d%9d%9d\n",peo[i].year,peo[i].month, peo[i].in, peo[i].out, peo[i].in- peo[i].out);
        }

    }
    return 0;
}


int go()
{
     printf("\n\n《谢谢使用家庭管理系统》\n\n");
     printf("\n\n        潘黄岷\n\n");
     exit(0);
     return 0;
}


                                                                                                                                                                  


void printmenu()
{
    printf("\n                 选择菜单\n");
    printf("````````````````````````````````````````````````\n\n");
    printf("1.添加成员收支信息\n");
    printf("2.删除成员收支信息\n");
    printf("3.修改成员收支信息\n");
    printf("4.查询成员收支信息\n");
    printf("5。退出界面\n\n");
    printf("````````````````````````````````````````````````\n\n");
} 


void main()
{
    int choise;
    while(1)
    {
        printf("\n");
        printmenu();
        printf("请输入你的选择\n");
        scanf("%d", &choise);
        switch(choise)
        {
        case 1:
            printf("添加\n");
            add_people();
            break;

        case 2:
            printf("2 删除\n");
            dele_people();
            break;

        case 3:
            printf("3 修改\n");
            change_people();
            break;

        case 4:
            printf("4 查询\n");
            search_people();
            break;


        case 5:   
            printf("8 退出\n");
            go();
            break;
       
        default:
            printf("输入错误!\n");
        }
    }
}
搜索更多相关主题的帖子: color people 管理系统 
2011-12-31 12:26
smallmoon521
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:517
专家分:1373
注 册:2008-4-21
收藏
得分:0 
fp=fopen("D:people.txt","w");

为游戏狂~~!!    大家努力编哈!
2011-12-31 13:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
读文件有问题,是什么问题呢?正如2楼指出的,这样的文件路径有暗病,但谁知道你所说的问题是不是跟这个有关。这样只给代码不说问题,应该没人有兴趣去揣摩你到底遇到了什么麻烦。

授人以渔,不授人以鱼。
2011-12-31 13:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 

授人以渔,不授人以鱼。
2011-12-31 13:44
bcgougou
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2011-12-31
收藏
得分:0 
怎么不说出什么错误啊                                                                  www.
2011-12-31 14:36
拿笔小新
Rank: 2
等 级:论坛游民
帖 子:8
专家分:11
注 册:2011-12-31
收藏
得分:0 
回复 3楼 TonyDeng
首先先谢谢你提出的问题哈,新手,有点不懂“规矩”,呵呵。以后我尽量做得更好。
就是添加成员信息是正确的,确实把信息存到了txt文件里,但是接着再读取时就出错了(比如修改成员信息时,程序执行到打开文件时,vc++就自动出错跳出来了)。
2011-12-31 14:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
出错信息是什么?

授人以渔,不授人以鱼。
2011-12-31 14:49
拿笔小新
Rank: 2
等 级:论坛游民
帖 子:8
专家分:11
注 册:2011-12-31
收藏
得分:0 
回复 2楼 smallmoon521
很感谢你谈论这个程序的问题哈,刚刚我试了一下换个路径,但还是出问题了。
之前问题不是提的很好,我再详细的讲一下我遇到的问题:
  开始执行程序后,添加成员信息是正确的,信息也存入了txt文件,但是下一次读取这个文件的时候会出错,比如选择修改成员信息,程序执行到读文件时,vc++就出错自动跳出来。
2011-12-31 14:50
拿笔小新
Rank: 2
等 级:论坛游民
帖 子:8
专家分:11
注 册:2011-12-31
收藏
得分:0 
回复 7楼 TonyDeng
修改成员信息时,在输入姓名后,vc++就不能继续下去了,运行失败,就跳出“请按任意键继续”。
2011-12-31 14:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你既然怀疑是read()函数有问题,就看read()代码。你判断了文件打开失败的情形,但却没有给出反馈信息,在那里增添代码,如果打开失败,输出一条信息,运行时,看崩溃前是否输出了这条信息,如果有,就可以把错误定位在这个函数上。

授人以渔,不授人以鱼。
2011-12-31 15:03
快速回复:我写了一个“家庭收支管理系统”,程序读取文件有问题,我找不出出错在 ...
数据加载中...
 
   



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

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