注意:在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; } }