c++ 简单io流例子

 

这个爱心捐款包含添加和查找功能,需要有捐款人的捐款时间 姓名 金额 捐款形式 备注;
执行程序会自动在D盘根下生成   1.txt  文件,想找到自己做完的文件去D盘找就ok了;

 

注意:在D盘下的  1.txt 文档中添加要保证每一个人占一行,捐款时间顶格写,以后的每一项要空一格写入;

 

#include <iostream>
using namespace std;
#include <fstream>
#include <cstdlib>
#include <cstring>
#define FILE_IN "D:\\1.txt"
#define FILE_OUT "D:\\1.txt"
class Person
{
    public:
        char day[20];
        char name[20];
        long double money;
        char type[10];
        char ps[100];
        void print()
        {
            cout<<"      捐款日期:"<<day<<"      姓名:"<<name<<"      捐款金额:"<<money<<"      捐款形式:"<<type<<"      备注:"<<ps<<endl<<endl<<endl;
        }
}jl[10000];
int z;
int jc(int x,int y)
{
    int sum=1;
    for(int i=0;i<x;i++)
    {
        sum*=y;
    }
    return sum;
}
void add()               //添加功能
{
    Person a;
    ofstream output(FILE_OUT,ios::app);
    cout<<"  没有信息项填“0”!"<<endl;
    cout<<"请输入捐款日期(格式例:2016.7.8):";cin>>a.day;output<<a.day<<' ';
    cout<<"请输入姓名:";cin>>a.name;output<<a.name<<' ';
    cout<<"请输入金额:";cin>>a.money;output<<a.money<<' ';
    cout<<"请输入捐款形式(含有微信支付--现金--银行转账):";cin>>a.type;output<<a.type<<' ';
    cout<<"备注(限50个字):";cin>>a.ps;output<<a.ps<<' ';
    output<<endl;
    output.close();
    cout<<endl<<endl;
}
void search()          //查找功能
{
    char sname[20];
    cout<<"请输入你要查找的姓名:";
    cin>>sname;
    char b[200];
    int t=0;
    ifstream input;
    input.open(FILE_IN,ios::in);
    int i,k,l,p,y,j,g;
    while(!input.eof())                           //将文件中的每一行分离出来
    {
        input.getline(b,sizeof(b));
        for(i=0;i<strlen(b);i++)                 //从这个for循环开始,每一个for循环将每一项分离出来
        {
            if(b[i]==' ')
            {
                for(int j=0;j<i;j++)
                {
                    jl[t].day[j]=b[j];
                }
                break;
            }
        }
        for(k=i+1;k<strlen(b);k++)
        {
            if(b[k]==' ')
            {
                for(j=i+1,g=0;j<k;j++,g++)
                {
                    jl[t].name[g]=b[j];
                }
                break;
            }
        }
        for(l=k+1;l<strlen(b);l++)
        {
            if(b[l]==' ')
            {
                for(j=k+1;j<l;j++)
                {
                    jl[t].money+=(double)(b[j]-'0')*jc((l-j-1),10);
                }
                break;
            }
        }
        for(p=l+1;p<strlen(b);p++)
        {
            if(b[p]==' ')
            {
                for(j=l+1,g=0;j<p;j++,g++)
                {
                    jl[t].type[g]=b[j];
                }
                break;
            }
        }
        for(y=p+1,g=0;y<strlen(b);y++,g++)
        {
            jl[t].ps[g]=b[y];
        }
        t++;
    }                                                     //到这结束  将所有项分离完
    int len,len1,js;
    int aaa=1;                                     //一个开关,如果没有就变  aaa=0
    for(i=0;i<t-1;i++)                                 //从分离出的姓名进行循环,查找
    {
        len=strlen(sname);
        len1=strlen(jl[i].name);
        if(len1>len)
        {
            len=len1;
        }
        js=0;
        for(y=0;y<len;y++)
        {
            if(sname[y]==jl[i].name[y])
                js++;
        }
        if(js==len)
        {
            cout<<"序号:"<<i+1;
            jl[i].print();
            aaa=0;
        }
    }
    if(aaa)
    {
        cout<<"没有这位朋友!"<<endl;
    }
    z=t;
    cout<<"现在的总捐款人数:"<<z-1<<endl<<endl<<endl;
}
int main()
{
    cout<<"                     *+--------+*"<<endl;
    cout<<"                      |爱心捐款|"<<endl;
    cout<<"                    __+--------+__"<<endl;
    cout<<"                     添加请按“1”"<<endl;
    cout<<"                     查找请按“2”"<<endl;
    cout<<"                     结束操作请按“0”"<<endl<<endl;
    cout<<"------------------------------------------------------------"<<endl;
    cout<<"                      您的选择是:";
    int k;
    cin>>k;cout<<endl;
    while(1)
    {
        switch(k)
        {
            case 1:add();break;
            case 2:search();break;
            case 0:exit(0);break;
        }
        cout<<"mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"<<endl;
        cout<<"                     *+--------+*"<<endl;
        cout<<"                      |爱心捐款|"<<endl;
        cout<<"                    __+--------+__"<<endl;
        cout<<"                     添加请按“1”"<<endl;
        cout<<"                     查找请按“2”"<<endl;
        cout<<"                     结束操作请按“0”"<<endl<<endl;
        cout<<"------------------------------------------------------------"<<endl;
        cout<<"                      您的选择是:";
        cin>>k;cout<<endl;
    }
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值