鱼C论坛

 找回密码
 立即注册
查看: 3292|回复: 2

文件存储问题

[复制链接]
发表于 2013-4-18 21:17:14 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>#include<stdlib.h>#include<ctype.h>void menu();checkdate(int a,int b,int c);checkmoney(long d);checkID(int o);adddata(int y, long u);void main ()        {      
        menu();
}

void findemp();void inemp();

void menu(){int z;void menu();printf("\t*******************************\n");printf("\t*******************\n");printf("\t********\n");printf("\t欢迎进入银行账户信息管理系统\n ");printf("\t********\n");printf("\t*******************\n");printf("\t*******************************\n");printf("\n");printf("\n");printf("\n");printf("\t**************************\n      ");printf("\t1-----存款 \n");printf("\t2-----取款 \n");printf("\t3-----查询余额\n");printf("\t4-----查询存款记录\n");printf("\t5-----查询取款记录\n");printf("\t************************** \n     ");printf("\t请输入<1-5>选择业务:");

scanf("%d",&z);  /*************************************程序********************************************/

        switch(z)                        {        case 1:{system("cls");                inemp();                        system("PAUSE");                system("cls");                                menu();                                                   }        case 2:{system("cls");                                                        system("PAUSE");                system("cls");                                menu();                                   }        case 3:{system("cls");                findemp();                system("PAUSE");                system("cls");                                menu();                                   }        case 4:{system("cls");                                printf("输入客户编号(回车键结束)\n");                system("PAUSE");                system("cls");                                menu();                                   }        case 5:{system("cls");                                printf("输入客户编号(回车键结束)\n");                system("PAUSE");                system("cls");                                menu();

                   }                        default:{                                printf("出错,请输入正确编号。\n");                system("PAUSE");                                system("cls");                                                                menu();                                        }                   }                }       



struct EMP {   int no;   char name[10];   char adress[10];   char phone[12];   long int price;}stu[5];         struct Data {int month;   //月int day;     //日long int year;   //年
   }data1;   
void savedata(){    FILE* fp;
  if((fp=fopen("emp_data","wb"))==NULL)     {printf("cannot open file\n");  getchar();   return;     }fwrite(&stu,sizeof(struct EMP),5,fp);
  fclose(fp);

}
                                                                                                                                                                                                                                                                   void addemp(){void savedata();


                int i,m;           printf("请输入要录入的学生的人数m.\n");            scanf("%d",&m);           printf("请输入各个学生的信息:\n");              for(i=0;i<m;i++)                          {        printf("no:\n");                scanf("%d",&stu[i].no);                printf("name:\n");                scanf("%s",stu[i].name);                printf("adress:\n");                scanf("%s",stu[i].adress);                printf("phone number:\n");                scanf("%s",stu[i].phone);                printf("price:\n");                scanf("%ld",&stu[i].price);                  }                          printf("创建完毕.\n");           savedata();           printf("已存储数据。\n");}
void findemp(){    FILE *fp;        int num;        int i;
          if((fp=fopen("emp_data","rb"))==NULL)        {printf("cannot open file\n");         exit(0);        }          for(i=0;i<5;i++)    fread(&stu[i],sizeof(struct EMP),1,fp);    printf("请输入要查找的编号:\n");    scanf("%d",&num);    for(i=0;i<5;i++)   if(stu[i].no==num)  { printf("已找到该用户的信息,信息为:\n");   printf("编号:%d\t\n",stu[i].no);   printf("姓名:%s\t\n",stu[i].name);   printf("地址:%s\t\n",stu[i].adress);   printf("电话:%s\t\n",stu[i].phone);   printf("金额:%ld\t\n",stu[i].price);
       break;  }}
void inemp(){
        printf("输入客户编号\n");        scanf("%d",&stu[0].no);        checkID(stu[0].no);        printf("输入存款金额  \n");        scanf("%ld",&stu[0].price);        checkmoney(stu[0].price);        printf("输入存款日期(yyyy-zz-xx)  \n");        scanf("%ld-%d-%d",&data1.year,&data1.month,&data1.day);        checkdate(data1.year,data1.month,data1.day);        adddata(stu[0].no,stu[0].price);
}

checkdate(int a,int b,int c){void inemp();    int q;


if(a%4==0&&b==2&&c>0&&c<30) q=1;      //判断日期是否存在        else if(a%4!=0&&b==2&&c>0&&c<29) q=1;             else if((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&c>0&&c<=31) q=1;              else if((b==4||b==6||b==9||b==11)&&c>0&&c<=30) q=1;                               else q=2;if(q==2){system("cls");        printf("输入的日期有误,请重新输入.\n");inemp();
}
}
        checkmoney(long d){   if(d<0||d>50000)   {system("cls");              printf("输入金额出错,请重新输入\n");           inemp();   }

}
adddata(int y, long u){      FILE *fp;
        int i;
          if((fp=fopen("emp_data","rb"))==NULL)        {printf("cannot open file\n");         exit(0);        }          for(i=0;i<5;i++)    fread(&stu[i],sizeof(struct EMP),1,fp);    for(i=0;i<5;i++)   if(stu[i].no==y)   {             stu[i].price=stu[i].price+u;          savedata();


  }


printf("存款成功\n");

   }


   
display(){

}checkID(int o){    FILE *fp;
        int i;
          if((fp=fopen("emp_data","rb"))==NULL)        {printf("cannot open file\n");         exit(0);        }          for(i=0;i<5;i++)    fread(&stu[i],sizeof(struct EMP),1,fp);
   if(stu[0].no==o)   {
      printf("输入的客户编号正确,请继续输入\n");

   }   else if(stu[1].no==o)   {  printf("输入的客户编号正确,请继续输入\n");
   }   else if(stu[2].no==o)              {  printf("输入的客户编号正确,请继续输入\n");
   }   else if(stu[3].no==o)              {  printf("输入的客户编号正确,请继续输入\n");
   }   else if(stu[4].no==o)              {  printf("输入的客户编号正确,请继续输入\n");
   }   else   {               system("cls");      printf("输入的客户编号有误,请重新输入\n");          inemp(); }}
存取的金额总是覆盖第一个数据。应该怎么弄。

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-18 21:31:46 | 显示全部楼层
fseek(fp, 0, SEEK_END);
在每次写入文件之前,将文件指针置尾。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2013-4-20 11:47:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-2 19:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表