图书管理系统心得

图书管理系统心得

首先,还是先贴代码

#include<bits/stdc++.h>
using namespace std;

class Time
{
private:
	int year;
	int month;
	int day;
public:
	Time(){year=2018;month=1;day=1;}
	Time(int x,int y,int z):year(x),month(y),day(z){};
	int getYear(){return year;}
	int getMonth(){return month;}
	int getDay(){return day;}
	void setYear(int year){this->year=year;}
	void setMonth(int month){this->month=month;}
	void setDay(int day){this->day=day;}
	friend istream& operator>>(istream &is,Time &t);
	friend ostream& operator<<(ostream &os,const Time &t);
	bool operator<(const Time &t1)const;
	friend Time operator+(Time m,int i);
};
Time operator+(Time m,int i)
{
	m.month=m.month+i;
	if(m.month>12)
	{
		m.month=m.month-12;
		m.year++;
	}
	return m;
}
istream& operator>>(istream &is,Time &t)
{
	is>>t.year;
	while(t.year<=999||t.year>=10000)
	{
		cout<<"Date year is not legal,please retype"<<endl;
		is>>t.year;
	}
	is>>t.month;
	while(t.month<=0||t.month>=13)
	{
		cout<<"Date month is not legal,please retype"<<endl;
		is>>t.month;
	}
	is>>t.day;
	while(t.day<=0||t.day>=32)
	{
		cout<<"Date day is not legal,please retype"<<endl;
		is>>t.day;
	}
	return is;
}
ostream& operator<<(ostream &os,const Time &t)
{
	os<<t.year<<" "<<t.month<<" "<<t.day<<" ";
	return os;
}
bool Time::operator<(const Time &t1)const
{
	return year!=t1.year?year<t1.year:month!=t1.month?month<t1.month:day<t1.day;
}



///
class Record
{
private:
	string book_no;
	string stu_no;
	int num;
	int left;
	Time t,back_t;
	string type;                           //借书还书
	bool type1;                             //0学生1书
	bool xu;                              //0没续借 1续借
public:
        Record(){};
        Record(string bk_no,string s_n,int nu,int le,Time t1,Time b_t,string ty,bool ty1,bool x){book_no=bk_no;stu_no=s_n;num=nu;left=le;t=t1;back_t=b_t;type=ty;type1=ty1;xu=x;}
	string getBook_no(){return book_no;}
	string getStu_no(){return stu_no;}
	string getType(){return type;}
	int getNum(){return num;}
	int getLeft(){return left;}
	Time getTime(){return t;}
	Time getB_Time(){return back_t;}
	void setB_Time(Time b_t){back_t=b_t;}
	void setBook_no(string no){book_no=no;}
	void setStu_no(string no){stu_no=no;}
	void setType(string type){this->type=type;}
	void setNum(int nu){num=nu;}
	void setLeft(int le){left=le;}
	void setTime(Time t){this->t=t;}
	void display();
	friend ostream& operator<<(ostream &os,Record &r);
	friend istream& operator>>(istream &r_is,Record &r);
};
ostream& operator<<(ostream &os,Record &r)
{
	os<<r.book_no<<" ";
	os<<r.stu_no<<" ";
	os<<r.t<<" ";
	os<<r.back_t<<" ";
	os<<r.num<<" ";
	os<<r.left<<" ";
	os<<r.type<<" ";
	os<<r.type1<<" ";
	os<<r.xu<<endl;
	return os;
}
void Record::display()
{

	cout<<"书号:"<<book_no<<endl;
	if(type1==0)
	{
		cout<<"学号:"<<stu_no<<endl;
	        if(type=="借书")
	        cout<<"借阅日期:"<<t<<endl;
	        if(type=="还书")
	        cout<<"归还日期:"<<t<<endl;
	}
	if(type1==1)
	{
		cout<<"被"<<stu_no<<"借走"<<endl;
		cout<<"应在"<<back_t<<"归还"<<endl;
		if(xu==0)
		{
			cout<<"没有续借";
		}
		else
		{
			cout<<"续借1次";
		}
	}
}
istream& operator>>(istream &r_is,Record &r)
{
        r_is>>r.book_no;
        r_is>>r.stu_no;
        r_is>>r.t;
	r_is>>r.back_t;
	r_is>>r.num;
	r_is>>r.left;
	r_is>>r.type;
	r_is>>r.type1;
	r_is>>r.xu;
        return r_is;
}



//
class Book
{
private:
	string book_no;
	string name;
	string author;
	string chubanshe;
	int num;
	int left;
	vector<Record> record;
	vector<Record>::iterator it;
	int record_num;
public:
	Book():record_num(0){};
	Book(string bk_no,string n,string aut,string chubanshe,int num,int left):record_num(0){book_no=bk_no;name=n;author=aut;this->chubanshe=chubanshe;this->num=num;this->left=left;}
	string getBook_no(){return book_no;}
	string getName(){return name;}
	string getAuthor(){return author;}
	string getChubanshe(){return chubanshe;}
	int getNum(){return num;}
	int getLeft(){return left;}
	int getRecord_num(){return record_num;}
	void setBook_no(string bk_no){book_no=bk_no;}
	void setName(string n){name=n;}
	void setAuthor(string aut){author=aut;}
	void setChubanshe(string chubanshe){this->chubanshe=chubanshe;}
	void setNum(int n){num=n;}
	void setLeft(int l){left=l;}
	void getBack_t(string b_n);
	void addRecord(Record r1);
	void displayBook();
	friend ostream& operator<<(ostream &os,Book &b);
	friend istream& operator>>(istream &is,Book &b);

};
void Book::displayBook()
{
	cout<<"书号:"<<book_no<<endl;
	cout<<"书名:"<<name<<endl;
	cout<<"剩余:"<<left<<endl;
}
void Book::addRecord(Record r1)
{
	record.push_back(r1);
	record_num++;
	if(r1.getType()=="借书")
	{
		left--;
	}
	if(r1.getType()=="还书")
	{
		left++;
	}
}
ostream& operator<<(ostream &os,Book &b)
{
	os<<b.book_no<<" ";
	os<<b.name<<" ";
	os<<b.author<<" ";
	os<<b.chubanshe<<" ";
	os<<b.num<<" ";
	os<<b.left<<" ";
	os<<b.record_num<<endl;
	for(int i=0;i<b.record_num;i++)
	os<<b.record[i];
	return os;
}
istream& operator>>(istream &b_is,Book &b)
{

	int i;
	b.record.clear();
	b_is>>b.book_no;
	if(b.book_no=="end")return b_is;
	b_is>>b.name>>b.author>>b.chubanshe>>b.num>>b.left>>i;
	b.record_num=i;
	for(int j=0;j<i;j++)
	{
		Record re;
		b_is>>re;
		b.record.push_back(re);
	}
	return b_is;
}




class User
{
private:
	string stu_no;
	string name;
	int book_max;
	int book_now;
	int record_num;
	int GG;                                          //违纪不可再借书
	vector<Record> r;
	vector<Record>::iterator it;
public:
	User():record_num(0),GG(0){};
	User(string no):record_num(0),GG(0){stu_no=no;};
	User(string no,string name):book_max(10),book_now(0),record_num(0),GG(0){stu_no=no;this->name=name;}
	User(const User&u);
	string getStu_no(){return stu_no;}
	string getName(){return name;}
	int getBook_max(){return book_max;}
	int getBook_now(){return book_now;}
	int getGG(){return GG;}
	int getRecord_num(){return record_num;}
	void setStu_no(string s_no){stu_no=s_no;}
	void setName(string n){name=n;}
	void setBook_max(int b_m){book_max=b_m;}
	void setBook_now(int b_n){book_now=b_n;}
	void setGG(int g){GG=g;}
	vector<Record>& getRecord(){return r;}
	void addRecord(Record r1);
	friend ostream& operator<<(ostream &os,User &u);
	friend istream& operator>>(istream &is,User &u);
	friend bool operator==(User u1,User u2);

};
User::User(const User&u)
{
    stu_no=u.stu_no;
    name=u.name;
    book_now=u.book_now;
    book_max=u.book_max;
    record_num=u.record_num;
    GG=u.GG;
    r=u.r;
}
bool operator==(User u1,User u2)
{

}
ostream& operator<<(ostream &os,User &u)
{
	os<<u.stu_no<<" ";
	os<<u.name<<" ";
	os<<u.book_max<<" ";
	os<<u.book_now<<" ";
	os<<u.GG<<" ";
	os<<u.record_num<<endl;
	vector<Record>::iterator iter;
	for(iter=u.r.begin();iter!=u.r.end();iter++)
	os<<*iter;
	return os;
}
istream& operator>>(istream &is,User &u)
{
	int i;
	Record re;
	u.r.clear();
	is>>u.stu_no;
	if(u.stu_no=="end")return is;
	is>>u.name>>u.book_max>>u.book_now>>u.GG>>i;
	u.record_num=i;
	for(int j=0;j<i;j++)
	{
		is>>re;
		u.r.push_back(re);
	}
	return is;
}
void User::addRecord(Record r1)
{
	r.push_back(r1);
	record_num++;
	if(r1.getType()=="借书")
	{
		book_now++;
	}
	if(r1.getType()=="还书")
	{
		book_now--;
	}
}




class Manager
{
private:
	vector<Book> bk;
	multimap<string,int> m1;
	vector<User> ur;
	multimap<string,int> m2;
	Time t;
public:
	Manager();
	~Manager();
	void b_displayByno(string n);
	void b_delByno(string n);
	void s_delByno(string n);
	void s_displayByno(string n);
	void addBook(Book b);
	void addBook();
	void addStu();
	void addStu(User u);
	void displayBook();

};
void Manager::displayBook()
{
	vector<Book>::iterator iter;
	for(iter=bk.begin();iter!=bk.end();iter++)
	{
		iter->displayBook();
	}
}
void Manager::s_displayByno(string n)
{
    multimap<string,int>::iterator it;
    it=m2.find(n);
    if(it!=m2.end())
    cout<<ur[it->second];
    else
    cout<<"没找到"<<endl;
//	vector<User>::iterator iter;
//	bool a=1;
//	for(iter=ur.begin();iter!=ur.end();iter++)
//	{
//		if(iter->getStu_no()==n)
//			{cout<<*iter;a=0;}
//	}
//	if(a)
//	cout<<"无此用户"<<endl;
}
void Manager::s_delByno(string n)
{
    multimap<string,int>::iterator it;
    it=m2.find(n);
    if(it!=m2.end())
    {
        ur.erase(ur.begin()+it->second);
        cout<<"删除成功"<<endl;
    }
    else
    cout<<"没找到"<<endl;
//	vector<User>::iterator iter;
//	bool a=1;
//	for(iter=ur.begin();iter!=ur.end();)
//	{
//		if(iter->getStu_no()==n)
//			{iter=ur.erase(iter);cout<<"用户已删除"<<endl;a=0;}
//        else
//        {
//            iter++;
//        }
//	}
//	if(a)
//	cout<<"未找到该用户"<<endl;
}
void Manager::addStu(User u)
{
	ur.push_back(u);
	int i=ur.size();
	m2.insert(make_pair(u.getStu_no(),i-1));
	cout<<"用户已添加"<<endl;
}
void Manager::addStu()
{
    while(1)
    {
	User u;
	cout<<"现在图书馆有"<<ur.size()<<"名用户 "<<endl;
	cout<<"请输入新用户的学号/名字/最多借书:(学号输入-1结束)"<<endl;
	string temp;int i;
	cin>>temp;
	if(temp=="-1")break;
	u.setStu_no(temp);
	cin>>temp;
	u.setName(temp);
	cin>>i;
	u.setBook_max(i);
	u.setBook_now(0);
	ur.push_back(u);
	i=ur.size();
	m2.insert(make_pair(u.getStu_no(),i-1));
	cout<<"用户已添加"<<endl;
    }
}
void Manager::b_displayByno(string n)                                  //调用display
{
    multimap<string,int>::iterator it;
    it=m1.find(n);
    if(it!=m1.end())
    bk[it->second].displayBook();
    else
    cout<<"没找到"<<endl;
//	vector<Book>::iterator iter;
//	bool a=1;
//	for(iter=bk.begin();iter!=bk.end();iter++)
//	{
//		if(iter->getBook_no()==n)
//			{cout<<*iter;a=0;}
//	}
//	if(a)
//	cout<<"无此图书"<<endl;
}
void Manager::addBook()
{
    while(1)
    {
	Book b;
	cout<<"现在图书馆有"<<bk.size()<<"本书"<<endl;
	cout<<"请输入新书的序号/名字/作者/出版社/总数:(书号输入-1结束)"<<endl;
	string temp;int i;
	cin>>temp;
	if(temp=="-1")break;
	b.setBook_no(temp);
	cin>>temp;
	b.setName(temp);
	cin>>temp;
	b.setAuthor(temp);
	cin>>temp;
	b.setChubanshe(temp);
	cin>>i;
	b.setNum(i);
	b.setLeft(i);
	bk.push_back(b);
	i=bk.size();
	m1.insert(make_pair(b.getBook_no(),i-1));
	cout<<"图书已添加"<<endl;
    }
}
void Manager::addBook(Book b)
{
	bk.push_back(b);
	int i;
    i=bk.size();
	m1.insert(make_pair(b.getBook_no(),i-1));
	cout<<"图书已添加"<<endl;

}
void Manager::b_delByno(string n)
{
    multimap<string,int>::iterator it;
    it=m1.find(n);
    if(it!=m1.end())
    {
        bk.erase(bk.begin()+it->second);
        cout<<"删除成功"<<endl;
    }
    else
    cout<<"没找到"<<endl;
//	vector<Book>::iterator iter;
//	bool a=1;
//	for(iter=bk.begin();iter!=bk.end();)
//	{
//		if(iter->getBook_no()==n)
//			{iter=bk.erase(iter);cout<<"图书已删除"<<endl;a=0;}
//        else
//        {
//            iter++;
//        }
//	}
//	if(a)
//	cout<<"未找到该图书"<<endl;
}
Manager::~Manager()
{
	ofstream s_outfile("20171752Stu.txt",ios::out),b_outfile("20171752Book.txt",ios::out);
	if(!s_outfile)
		return;
	if(!b_outfile)
		return;
	vector<Book>::iterator b_it;
	vector<User>::iterator s_it;
	for(b_it=bk.begin();b_it!=bk.end();b_it++)
	{
		b_outfile<<*b_it;
	}
	b_outfile<<"end";
	for(s_it=ur.begin();s_it!=ur.end();s_it++)
	{
		s_outfile<<*s_it;
	}
	s_outfile<<"end";
	bk.clear();
	ur.clear();
	s_outfile.close();
	b_outfile.close();
}
Manager::Manager()
{
	User u;
	Book b;
	int i,j;
	ifstream s_infile("20171752Stu.txt",ios::in),b_infile("20171752Book.txt",ios::in);
	if(!s_infile)
		return;
	if(!b_infile)
		return;
	bk.clear();
	ur.clear();
	i=0;j=0;
	while(s_infile>>u&&u.getStu_no()!="end")
	{
		ur.push_back(u);
		m2.insert(make_pair(u.getStu_no(),i));
		i++;
	}
	while(b_infile>>b&&b.getBook_no()!="end")
	{
		bk.push_back(b);
		m1.insert(make_pair(b.getBook_no(),j));
		j++;
	}
	s_infile.close();
	b_infile.close();
}




class Userop
{
private:
	vector<Book> bk;
	//vector<User> ur;
	User u;//当前用户
	int stu_no;
	Time t;
public:
	Userop();
	Userop(User u);
	~Userop();
	void lend(string bk_no);
	void lend();
	void huan(string bk_no);
	void huan();
	void displayBook();
	void search_Book(string n);

};
void Userop::search_Book(string n)
{
	vector<Book>::iterator iter;
	bool a=1;
	for(iter=bk.begin();iter!=bk.end();iter++)
	{
		if(iter->getBook_no()==n)
		{iter->displayBook();a=0;}
	}
	if(a)
	cout<<"无此图书"<<endl;
}
void Userop::displayBook()
{
	vector<Book>::iterator iter;
	for(iter=bk.begin();iter!=bk.end();iter++)
	{
		iter->displayBook();
	}
}
void Userop::huan()
{
	string bk_no;
	cout<<"请输入欲还书的书号:";
	cin>>bk_no;
    vector<Book>::iterator it;
    vector<Record>::iterator r_it;
    int num,left;bool flag=1,overdue=0;
    {for(it=bk.begin();it!=bk.end();it++)
    {
        if(it->getBook_no()==bk_no)
        {
	    Time t2;
	    r_it=u.getRecord().begin();
	    for(;r_it!=u.getRecord().end();r_it++)
	    {
	    	if(bk_no==r_it->getBook_no())
		{
			t2=r_it->getB_Time();
			if(t2<t)
			{
				overdue=1;u.setGG(1);
			}
		}
	    }
	    flag=0;
            num=it->getNum();
            left=it->getLeft()+1;
	    Record r1(bk_no,u.getStu_no(),num,left,t,t2,"还书",1,0),r2(bk_no,u.getStu_no(),num,left,t,t2,"还书",0,0);
            it->addRecord(r1);
            u.addRecord(r2);
            if(overdue)                                      //将对书的操作放到addrecord里了。。。为了方便。。
            {cout<<"您已超期,请联系管理员"<<endl;}
            else
	    cout<<"还书成功"<<endl;
        }
    }
    }
    if(flag)
    {
    	cout<<"错误"<<endl;
    }
}
//void Userop::huan(string bk_no)
//{
//    vector<Book>::iterator it;
//    vector<Record>::iterator r_it;
//    int num,left;bool flag=1,overdue=0;
//    {for(it=bk.begin();it!=bk.end();it++)
//    {
//        if(it->getBook_no()==bk_no)
//        {
//	    Time t2;
//	    r_it=ur[stu_no].getRecord().begin();
//	    for(;r_it!=ur[stu_no].getRecord().end();r_it++)
//	    {
//	    	if(bk_no==r_it->getBook_no())
//		{
//			t2=r_it->getB_Time();
//			if(t2<t)
//			{
//				overdue=1;ur[stu_no].setGG(1);
//			}
//		}
//	    }
//	    flag=0;
//            num=it->getNum();
//            left=it->getLeft()+1;
//	    Record r1(bk_no,ur[stu_no].getStu_no(),num,left,t,t2,"还书",1,0),r2(bk_no,ur[stu_no].getStu_no(),num,left,t,t2,"还书",0,0);
//            it->addRecord(r1);
//            ur[stu_no].addRecord(r2);
//            if(overdue)                                      //将对书的操作放到addrecord里了。。。
//            {cout<<"您已超期,请联系管理员"<<endl;}
//            else
//	    cout<<"还书成功"<<endl;
//        }
//    }
//    }
//    if(flag)
//    {
//    	cout<<"错误"<<endl;
//    }
//}
void Userop::lend()
{
	string bk_no;
    cout<<"请输入欲借书的书号:";
    cin>>bk_no;
    vector<Book>::iterator it;
    int num,left;bool flag=1;
    for(it=bk.begin();it!=bk.end();it++)
    {
        if(it->getBook_no()==bk_no&&it->getLeft()>0&&u.getBook_now()<u.getBook_max())
        {
	    if(u.getGG()==1)
	    {
	    	cout<<"您已经有超期记录,请联系管理员."<<endl;
	    	break;
	    }
	    else
	    {
	    flag=0;
            num=it->getNum();
            left=it->getLeft()-1;
	    Record r1(bk_no,u.getStu_no(),num,left,t,t+2,"借书",1,0),r2(bk_no,u.getStu_no(),num,left,t,t+2,"借书",0,0);
            it->addRecord(r1);
            u.addRecord(r2);
            cout<<"借阅成功"<<endl;
	    }
        }
    }
    if(flag)
    {
    	cout<<"错误"<<endl;
    }

}
//void Userop::lend(string bk_no)
//{
//    vector<Book>::iterator it;
//    int num,left;bool flag=1;
//    for(it=bk.begin();it!=bk.end();it++)
//    {
//        if(it->getBook_no()==bk_no&&it->getLeft()>0&&ur[stu_no].getBook_now()<ur[stu_no].getBook_max())
//        {
//	    if(ur[stu_no].getGG()==1)
//	    {
//	    	cout<<"您已经有超期记录,请联系管理员."<<endl;
//	    	break;
//	    }
//	    else
//	    {
//	    flag=0;
//            num=it->getNum();
//            left=it->getLeft()-1;
//	    Record r1(bk_no,ur[stu_no].getStu_no(),num,left,t,t+2,"借书",1,0),r2(bk_no,ur[stu_no].getStu_no(),num,left,t,t+2,"借书",0,0);
//            it->addRecord(r1);
//            ur[stu_no].addRecord(r2);
//            cout<<"借阅成功"<<endl;
//	    }
//        }
//    }
//    if(flag)
//    {
//    	cout<<"错误"<<endl;
//    }
//
//}
Userop::Userop(User u1)
{
    User u;
	Book b;
	bool bo=1;
	int j;
	ifstream s_infile("20171752Stu.txt",ios::in),b_infile("20171752Book.txt",ios::in);
	if(!s_infile)
		return;
	if(!b_infile)
		return;
	bk.clear();
	j=0;
	while(s_infile>>u&&u.getStu_no()!="end")
	{
	    if(u1.getStu_no()==u.getStu_no())
		{this->u=u;bo=0;}
	}
	while(b_infile>>b&&b.getBook_no()!="end")
	{
		bk.push_back(b);
		j++;
	}
	s_infile.close();
	b_infile.close();
	Time t1;
	{
		cout<<"系统时间读入:(年/月/日 无斜杠)";
		cin>>t1;
		t=t1;
	}
	if(bo)
	{cout<<"该用户不存在,退出系统."<<endl;}
}
//Userop::Userop()
//{
//	User u;
//	Book b;
//	int i,j;
//	ifstream s_infile("20171752Stu.txt",ios::in),b_infile("20171752Book.txt",ios::in);
//	if(!s_infile)
//		return;
//	if(!b_infile)
//		return;
//	bk.clear();
	ur.clear();
//	i=0;j=0;
//	while(s_infile>>u&&u.getStu_no()!="end")
//	{
//		ur.push_back(u);
//		i++;
//	}
//	while(b_infile>>b&&b.getBook_no()!="end")
//	{
//		bk.push_back(b);
//		j++;
//	}
//	s_infile.close();
//	b_infile.close();
//	string s_no;
//	vector<User>::iterator it;
//	int m=0;bool bo=1;
//	cout<<"请输入您的学号"<<endl;
//	cin>>s_no;
//	for(it=ur.begin();it!=ur.end();it++,m++)
//	{
//	    if(it->getStu_no()==s_no)
//	    {
//	        cout<<"登录成功"<<endl;
//	        stu_no=m;bo=0;
//	    }
//	}
//	Time t1;
//	{
//		cout<<"系统时间读入:(年/月/日 无斜杠)";
//		cin>>t1;
//		t=t1;
//	}
//	if(bo)
//	{cout<<"该用户不存在,退出系统."<<endl;}
//}
Userop::~Userop()
{
    ifstream s_infile("20171752Stu.txt",ios::in),b_infile("20171752Book.txt",ios::in);
    vector<User> ur;
    User u;
    ur.clear();
    while(s_infile>>u&&u.getStu_no()!="end")
	{
        if(this->u.getStu_no()==u.getStu_no())
		{u=this->u;}
		ur.push_back(u);
	}
    s_infile.close();



	ofstream s_outfile("20171752Stu.txt",ios::out),b_outfile("20171752Book.txt",ios::out);
	if(!s_outfile)
		return;
	if(!b_outfile)
		return;
	vector<Book>::iterator b_it;
	vector<User>::iterator s_it;
	for(b_it=bk.begin();b_it!=bk.end();b_it++)
	{
		b_outfile<<*b_it;
	}
	b_outfile<<"end";
	for(s_it=ur.begin();s_it!=ur.end();s_it++)
	{
		s_outfile<<*s_it;
	}
	s_outfile<<"end";
	bk.clear();
	ur.clear();
	s_outfile.close();
	b_outfile.close();
}



/
int main()
{
    User u("20171752");
//	Manager m1;
//	m1.addStu();
//	m1.addBook();
	Userop uop1(u);
//	uop1.lend();
	uop1.huan();
	system("pause");
}

大体代码就长这个样子

首先先说不足,没用继承,没有登陆。

然后一些收获,首先写数据类的时候,先从基本的数据写起,不要一上来就加一些花里胡哨的数据,然后在大体写的差不多的时候,再把一些数据添上;其次,这次系统使用了文件操作,文件操作对于我们来说是一个刚接触的问题,使用上有一些问题,但在后期的使用中已经差不多了;最后体会到了操作类里用一个单独的用户操作的用意,为了代码的安全着想。

遇到的一些问题,在添加记录的时候遇到过记录向量清除不干净的现象,可能是由于创建对象时未对数据进行初始化。还有就是代码有的时候感觉比较乱,总是忘记函数或者数据成员叫什么名字。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值