图书管理系统升级版(含自动获取当前时间)

#include<bits/stdc++.h>
using namespace std;
class Time    //时间类
{
    int year,month,day;  //数据成员:年、月、日
    public:
    Time()               //无参构造函数;
    {
        year=0;
        month=0;
        day=0;
    }
    Time(int y,int m,int d)  //带参构造函数;
    {
        year=y;
        month=m;
        day=d;
    }
    void setYear(int y)
    {
        year=y;
    }
    void setMonth(int m)
    {
        month=m;
    }
    void setDay(int d)
    {
        day=d;
    }
    int getYear()
    {
        return year;
    }
    int getMonth()
    {
        return month;
    }
    int getDay()
    {
        return day;
    }
    bool operator<(const Time&t1)const
    {
        return year!=t1.year?year<=t1.year:month!=t1.month?month<=t1.month:day<=t1.day;
    }
    friend istream&operator>>(istream&input,Time&t);
    friend ostream&operator<<(ostream&output,Time&t);
};
ostream&operator<<(ostream&output,Time&t)
{
    output<<t.year<<" ";
    output<<t.month<<" ";
    output<<t.day;
    return output;
}
istream&operator>>(istream&input,Time&t)
{
    input>>t.year>>t.month>>t.day;
    return input;
}
class Record    //借阅记录类;
{
    int id;  //学号;
    Time start;   //借书日期;
    int sh;     //书号;
    Time end;   //还书日期;
    int xj;   //续借;
    int state;   //书的借阅状态;1在借,0在还;
    public:
    Record(){}
    Record(int i,Time s,int h)
    {
        id=i;
        start=s;
        sh=h;
        if(s.getMonth()+2>12)     //自动生成还书日期(默认借书时间为两个月);
        {
            Time e(s.getYear()+1,s.getMonth()-10,s.getDay());
            end=e;
        }
        else
        {
            Time e(s.getYear(),s.getMonth()+2,s.getDay());
            end=e;
        }
        xj=0;
        state=0;
    }
    int getId()
    {
        return id;
    }
    Time getStart()
    {
        return start;
    }
    int getSh()
    {
        return sh;
    }
    Time getEnd()
    {
        return end;
    }
    void setEnd();
    void setXj()
    {
        xj=1;
    }
    int getXj()
    {
        return xj;
    }
    void setState(int n)
    {
        state=n;
    }
    int getState()
    {
        return state;
    }
    friend ostream&operator<<(ostream&output,Record&r);
    friend istream&operator>>(istream&input,Record&r);
};
void Record::setEnd()   //默认续借时间1个月;
{
    Time e;
    if(end.getMonth()+1>12)
    e=Time(end.getYear()+1,end.getMonth()-11,end.getDay());
    else
    e=Time(end.getYear(),end.getMonth()+1,end.getDay());
    end=e;
}
istream&operator>>(istream&input,Record&r)
{
    input>>r.id;
    input>>r.start;
    input>>r.sh;
    input>>r.end;
    input>>r.xj;
    input>>r.state;
    return input;
}
ostream&operator<<(ostream&output,Record&r)
{
    output<<r.id<<" ";
    output<<r.start<<" ";
    output<<r.sh<<" ";
    output<<r.end<<" ";
    output<<r.xj<<" ";
    output<<r.state<<endl;
    return output;
}
class Records   //记录类;
{
    protected:
    int rnum;  //借阅记录的条数;
    vector<Record>v1;
    vector<Record>::iterator it1;
    multimap<int,int>m1;
    multimap<int,int>::iterator mit1;
    public:
    Records(){rnum=0;}
    void setRnum(int n)
    {
        rnum=n;
    }
     int getRnum()
    {
        return rnum;
    }
    vector<Record>getRecord()
   {
    return v1;
   }
   multimap<int,int>getMap()
   {
    return m1;
   }
    void dispRecord1();
    void clear1();
};
void Records::dispRecord1()
{
   if(v1.size()!=0)
   for(it1=v1.begin();it1!=v1.end();it1++)
   cout<<*it1;
   else
   cout<<"No Record!"<<endl;
}
void Records::clear1()
{
    v1.clear();
}
class Book:public Records     //图书数据类;
{
    int sh;     //书号;
    string name;   //书名;
    string author;  //作者;
    string press;   //出版社;
    int date;     //出版时间;
    int num;     //馆藏图书数量;
    int jc;      //借出数量;
    public:
    int getSh()
    {
        return sh;
    }
    string getName()
    {
        return name;
    }
    string getauthor()
    {
        return author;
    }
    string getPress()
    {
        return press;
    }
    int getDate()
    {
        return date;
    }
    void setNum(int n)
    {
        num=n;
    }
    int getNum()
    {
        return num;
    }
    void setJc(int j)
    {
        jc=j;
    }
    int getJc()
    {
        return jc;
    }
    void addRecord1(Record r1);  //增加借阅记录;
    void addR1(Record r1);
    void deleteRecord1(int no);   //根据学号还书;
    friend istream&operator>>(istream&input,Book&b);
    friend  ostream&operator<<(ostream&output,Book&b);
    int search1(int no);
    void display();    //显示书的基本信息;
    void modify(int no);  //续借;
};
void Book::display()    //显示书的基本信息;
{
    cout<<sh<<" ";
    cout<<name<<" ";
    cout<<author<<" ";
    cout<<press<<" ";
    cout<<date<<" ";
    cout<<num<<" ";
    cout<<jc<<endl;
}
istream&operator>>(istream&input,Book&b)   //输入不需要输入借阅记录;
{
    input>>b.sh;
    if(b.sh==-1)     //多次输入的小技巧;
    return input;
    input>>b.name;
    input>>b.author;
    input>>b.press;
    input>>b.date;
    input>>b.num;
    input>>b.jc;
    input>>b.rnum;
    return input;
}
ostream&operator<<(ostream&output,Book&b)   //注意:输出里面包含输出借阅记录;
{
    output<<b.sh<<" "<<b.name<<" "<<b.author<<" "<<b.press;
    output<<" "<<b.date<<" "<<b.num<<" "<<b.jc<<" "<<b.rnum<<endl;
    if(b.getRnum()!=0)
    for(int i=0;i<b.getRnum();i++)
    output<<b.v1[i];
    return output;
}
void Book::addR1(Record r1)   //只增加记录,不牵扯书籍的借还状态;
{
    v1.push_back(r1);
    int i=v1.size();
    m1.insert(make_pair(r1.getId(),i-1));
}
void Book::addRecord1(Record r1)
{
    r1.setState(1);
    v1.push_back(r1);
    int i=v1.size();
   m1.insert(make_pair(r1.getId(),i-1));
}
int Book::search1(int no)
{
    mit1=m1.find(no);
    if(mit1!=m1.end())
    return mit1->second;
    else
    return -1;
}
void Book::modify(int no)
{
    int i=search1(no);
    if(v1[i].getXj()==0)
    {
        v1[i].setXj();
        v1[i].setEnd();
    }
}
void Book::deleteRecord1(int no)
{
    int i;
    i=search1(no);
    if(i!=-1)
    {
      v1[i].setState(0);
    }
}
class User:public Records  //用户数据类;
{
    int id;  //学号;
    string name;   //姓名;
    string major;  //专业班级;
    int max;    //最大借阅量;
    int now;     //当前借书量;
    int wj;      //违纪;
    string mima;    //密码;
public:
User()
{
     wj=0;
}
int getId()
{
    return id;
}
void setName(string nam)
{
    name=nam;
}
string getName()
{
    return name;
}
void setMajor(string major)
{
    this->major=major;
}
string getMajor()
{
    return major;
}
void setMax(int m)
{
    max=m;
}
int getMax()
{
    return max;
}
void setNow(int n)
{
    now=n;
}
int getNow()
{
    return now;
}
void setWj(int n)
{
    wj=n;
}
int getWj()
{
    return wj;
}
void setmima(string mima1){mima=mima1;}
string getmima(){return mima;}
void addRecord2(Record r2);
int search2(int h);
void deleteRecord2(int h);
void modify(int h);
friend istream&operator>>(istream&input,User&u);
friend ostream&operator<<(ostream&output,User&u);
void pd(Time t);  //根据还书时间判断是否违纪;
void addR2(Record r);
void operator=(User&u)   //重载赋值运算符;
{
    id=u.getId();
    name=u.getName();
    max=u.getMax();
    now=u.getNow();
    wj=u.getWj();
    rnum=u.getRnum();
    v1=u.getRecord();
    m1=u.getMap();
    mima=u.getmima();
    major=u.getMajor();
}
bool operator==(User u)   //重载等于运算符;
{
    return this->id==u.getId()?1:0;
}

};
istream&operator>>(istream&input,User&u)
{
    input>>u.id;
    if(u.id==-1)
    return input;
    input>>u.name;
    input>>u.major;
    input>>u.max;
    input>>u.now;
    input>>u.wj;
    input>>u.rnum;
    input>>u.mima;
    return input;
}
ostream&operator<<(ostream&output,User&u)
{
    output<<u.id<<" "<<u.name<<" "<<u.major<<" "<<u.max<<" ";
    output<<u.now<<" "<<u.wj<<" "<<u.rnum<<" "<<u.mima<<endl;
    if(u.getRnum()!=0)
    for(int i=0;i<u.getRnum();i++)
    output<<u.v1[i];
    return output;
}
void User::addR2(Record r2)
{
    v1.push_back(r2);
    int i=v1.size();
    m1.insert(make_pair(r2.getSh(),i-1));
}
void User::addRecord2(Record r2)
{
    r2.setState(1);
    v1.push_back(r2);
    int i=v1.size();
    m1.insert(make_pair(r2.getSh(),i-1));
}
int User::search2(int h)
{
    mit1=m1.find(h);
    if(mit1!=m1.end())
    return mit1->second;
    else
    return -1;
}
void User::deleteRecord2(int h)
{
    int i;
    i=search2(h);
    if(i!=-1)
    {
        v1[i].setState(0);
    }
}
void User::pd(Time t)
{
    setWj(0);
    for(int i=0;i<v1.size();i++)
    if(v1[i].getEnd()<t&&v1[i].getState()==1)
    {
        setWj(1);
        break;
    }
}
void User::modify(int h)
{
    int i=search2(h);
    if(v1[i].getXj()==0)
    {
        v1[i].setXj();
        v1[i].setEnd();
    }
}
class Person  //用户登陆信息类
{
    int no;   //账号;
    string pwd;  //密码;
    int type;  //=1是管理员;=0是用户 ;
    public:
    Person(int n,string p,int t)
    {
        no=n; pwd=p; type=t;
    }
    Person(){}
    int getNO(){return no;}
    void setmima(string mima){pwd=mima;}
    string getPwd(){return pwd;}
    int getType(){return type;}
    friend ostream &operator<<(ostream&os,const Person &a)
    {
        os<<a.no<<" ";
        os<<a.pwd<<" ";
        os<<a.type<<endl;
        return os;
    }
    friend istream &operator>>(istream&is,Person &b)
    {
        is>>b.no;
        if(b.no==-1) return is;
        is>>b.pwd;
        is>>b.type;
        return is;
    }
};
class queryBook   //查询书籍类;
{
    protected:
    vector<Book>v5;
    vector<Book>::iterator it5;
    multimap<int,int>m5;
    multimap<int,int>::iterator mit5;
    public:
    int search5(int h)
  {
    mit5=m5.find(h);
    if(mit5!=m5.end())
    {
        return mit5->second;
    }
    else
    return -1;
  }
    void querybook()
{
    int h;
    cin>>h;
    int i=search5(h);
    cout<<"您是否想查看借阅记录,是请按1,否请按0"<<endl;
    int m;cin>>m;
    if(m==0)
    {
        if(i!=-1)
        v5[i].display();
    }
    if(m==1)
    {
          if(i!=-1)
          cout<<v5[i];
    }
}
};
class Manage:public queryBook    //管理员类;(增删查改)
{
    vector<Person>pv;
    vector<Person>::iterator pt;
    multimap<int,int> mu; //按照账号查询;
    multimap<int,int>::iterator muit;
    vector<User>v4;
    vector<User>::iterator it4;
    multimap<int,int>m4;   //按照学号查找;
    multimap<int,int>::iterator mit4;
    public:
    Manage()
    {
        load1();
        load2();
        load3();
    }
    ~Manage()
    {
        save1();
        save2();
        save3();
    }
    void addBook();   //增加书籍;
    void dispBook();
    void deleteBook();   //删书;
    void modifyBook();   //改书;
    void addUser();
    void dispUser();
    int search4(int h);
    void queryById();    //按照学号查询;
    void deleteUser();
    void modifyUser();
    void llxuesheng();
    void load1();
    void load2();
    void load3();
    void save1();
    void save2();
    void save3();
};
void Manage::llxuesheng()
{
    for (int i=0;i<v4.size();i++)
    cout<<v4[i];
}
void Manage::load1()
{
    Book bb;
    ifstream infile("E:\\20171801Book.txt",ios::in);
    if(!infile)
    return;
    v5.clear();
    m5.clear();
    int i=0;
    while(infile>>bb)
    {
        if(bb.getRnum()!=0)
        for(int i=0;i<bb.getRnum();i++)
        {
            Record r3;
            infile>>r3;
            bb.addR1(r3);
        }
        v5.push_back(bb);
        m5.insert(make_pair(bb.getSh(),i));
        i++;
        bb.clear1();
    }
    infile.close();
}
void Manage::load2()
{
    User u1;
    ifstream infile("E:\\20171801Stu.txt",ios::in);
    if(!infile)
    return;
    v4.clear();
    m4.clear();
    int i=0;
    while(infile>>u1)
    {
        if(u1.getRnum()!=0)
        for(int i=0;i<u1.getRnum();i++)
      {
        Record r4;
        infile>>r4;
        u1.addR2(r4);
      }
        v4.push_back(u1);
        m4.insert(make_pair(u1.getId(),i));
        i++;
        u1.clear1();
    }
    infile.close();
}
void Manage::load3()
{
    Person p;
    ifstream infile("E:\\person.txt",ios::in);
    if(!infile)
    return;
    pv.clear();
    mu.clear();
    int i=0;
    while(infile>>p)
    {
        pv.push_back(p);
        mu.insert(make_pair(p.getNO(),i));
        i++;
    }
    infile.close();
}
void Manage::save1()   //写文件;
{
    ofstream outfile("E:\\20171801Book.txt",ios::out);
    if(!outfile)
    return ;
    for(it5=v5.begin();it5!=v5.end();it5++)
    {
        outfile<<*it5;
    }
    outfile.close();
}
void Manage::save2()
{
    ofstream outfile("E:\\20171801Stu.txt",ios::out);
    if(!outfile)
    return ;
    for(it4=v4.begin();it4!=v4.end();it4++)
    {
        outfile<<*it4;
    }
    outfile.close();
}
void Manage::save3()
{
    ofstream outfile("E:\\person.txt",ios::out);
    if(!outfile)
    return;
    for(pt=pv.begin();pt!=pv.end();pt++)
    {
        outfile<<*pt;
    }
    outfile.close();
}
void Manage::addBook()
{
    Book b;
    int i;
    while(cin>>b)
    {
       if(b.getSh()==-1)
       break;
       v5.push_back(b);
       i=v5.size();
       m5.insert(make_pair(b.getSh(),i-1));
       b.clear1();
    }
}
void Manage::deleteBook()    //学会删除数据;
{
    int h;
    cin>>h;
    int i=search5(h);
    if(i!=-1)
    {
        it5=v5.begin()+i;
        m5.erase(m5.find(h));
        v5.erase(it5);
    }
}
    void Manage::modifyBook()
    {
        int h;
        cin>>h;
        int i=search5(h);
        int n;
        cin>>n;
        v5[i].setNum(n);
    }
    void Manage::dispBook()
{
    for( it5=v5.begin();it5!=v5.end();++it5)
    cout<<*it5;
}
void Manage::addUser()
{
    User u;
    int j;int i;
    while(cin>>u)
    {
        if(u.getId()==-1)
        break;
        v4.push_back(u);
        Person pp(u.getId(),u.getmima(),0);
        pv.push_back(pp);
        j=v4.size();
        m4.insert(make_pair(u.getId(),j-1));
        i=pv.size();
        mu.insert(make_pair(u.getId(),i-1));
        u.clear1();
    }
}
int Manage::search4(int no)
{
    mit4=m4.find(no);
    if(mit4!=m4.end())
    {
        return mit4->second;
    }
    else
    return -1;
}
void Manage::queryById()
{
    int no;
    cin>>no;
   int i=search4(no);
   if(i!=-1)
   cout<<v4[i];
}
void Manage::deleteUser()
{
    int no;
    cin>>no;
    int i=search4(no);
    if(i!=-1)
    {
        it4=v4.begin()+i;
        m4.erase(m4.find(no));
        v4.erase(it4);
        pt=pv.begin()+i+1;
        mu.erase(mu.find(no));
        pv.erase(pt);
    }
}
    void Manage::modifyUser()
    {
        int no;
        cin>>no;
        int i=search4(no);
        int m;
        cin>>m;
        v4[i].setMax(m);
        cout<<"您是否想修改密码,是请1,否请按0"<<endl;
        int f;
        cin>>f;
        if(f==1)
        {
            string mima;cin>>mima;
            v4[i].setmima(mima);
            pv[i+1].setmima(mima);
        }
    }
    void Manage::dispUser()
{
    for( it4=v4.begin();it4!=v4.end();++it4)
    cout<<*it4;
}
class Client:public queryBook  //客户端(用户操作类)
{
    User u;
    Time t;
    public:
    Client(int id)  //重要;必须带着形参;封装性良好;
    {
     load3();
     load4(id);
    }
    ~Client()
     {
        save3();
        save4();
     }
void load3();
void save3();
void load4(int id);
void save4();
void borrow();    //借书;
void back();      //还书;
void renew();     //续借;
};
void Client::save3() // 把向量的信息放回到文件里;
{
    ofstream outfile("E:\\20171801Book.txt",ios::out);
    if(!outfile)
    {return ;}
    for(it5=v5.begin();it5!=v5.end();it5++)
    {
        outfile<<*it5;
    }
    outfile.close();
}
void Client::load3()
{
    Book b;
    int i;
    ifstream infile("E:\\20171801Book.txt",ios::in);
    if(!infile)
    {return;}
    v5.clear();
    m5.clear();
    while(infile>>b)
  {
    if(b.getRnum()!=0)
    for(int i=0;i<b.getRnum();i++)
    {
        Record r3;
        infile>>r3;
        b.addR1(r3);
    }
    v5.push_back(b);
    int i=v5.size();
    m5.insert(make_pair(b.getSh(),i-1));
    b.clear1();
  }
    infile.close();
}
void Client::load4(int id)  //从文件里读信息存到向量里;
{
    User u1;
    int i;
    ifstream infile("E:\\20171801Stu.txt",ios::in);
    if(!infile)
    return;
    while(infile>>u1)
  {
    if(u1.getRnum()!=0)
    for(int i=0;i<u1.getRnum();i++)
    {
        Record r4;
        infile>>r4;
        u1.addR2(r4);
    }
    if(u1.getId()==id)   //判断用户是否为同一人;
    this->u=u1;
    u1.clear1();
  }
    infile.close();
}
void Client::save4()
{
    vector<User>v;
    vector<User>::iterator it;
    User u2;
    ifstream infile("E:\\20171801Stu.txt",ios::in);
    if(!infile)
    return ;
    while(infile>>u2)   //将新数据再重新写回文件;
   {
       if(u2.getRnum()!=0)
       for(int i=0;i<u2.getRnum();i++)
       {
           Record r5;
           infile>>r5;
           u2.addR2(r5);
       }
       if(u2==this->u)
       u2=this->u;
       v.push_back(u2);
       u2.clear1();
    }
    infile.close();

    ofstream outfile("E:\\20171801Stu.txt",ios::out);
    if(!outfile)
    return;
    for(it=v.begin();it!=v.end();it++)
    outfile<<*it;
    outfile.close();
}
void Client::borrow()
{
    int no;
    int q,w,e;
    int argc; char ** argv;
    time_t temp;
    struct tm *t;
    time(&temp);
    t= localtime(&temp);
    q=t->tm_year+1900;
    w=t->tm_mon+1;
    e=t->tm_mday;
    Time d(q,w,e);  //系统自动获取当前借书时间;
    int h;
    cin>>h;
    int a=search5(h);
    u.pd(d);
    if(u.getWj()==0&&u.getNow()<u.getMax())
   {
    v5[a].setJc(v5[a].getJc()+1);
    v5[a].setRnum(v5[a].getRnum()+1);  //借阅记录条数+1;
    u.setNow(u.getNow()+1);
    u.setRnum(u.getRnum()+1);
    Record r(u.getId(),d,h);
    v5[a].addRecord1(r);
    u.addRecord2(r);
   }
}
void Client::back()
{
   int h;
   cin>>h;
   int a=search5(h);
   v5[a].setJc(v5[a].getJc()-1);
   u.setNow(u.getNow()-1);
   v5[a].deleteRecord1(u.getId());
   u.deleteRecord2(h);
}
void Client::renew()
{
    int h;
    cin>>h;
    int a=search5(h);
    v5[a].modify(u.getId());
    u.modify(h);
}
class CheckIn   //登陆类;
{
    public:
    int type;
    CheckIn(){load();}
    void load();
    virtual void login()=0;  //纯虚函数;
    protected:
    vector<Person>pv;
    vector<Person>::iterator pt;
    multimap<int,int> mu; //按照账号查询;
    multimap<int,int>::iterator muit;
};
void CheckIn::load()
{
    Person p;
    ifstream infile("E:\\person.txt",ios::in);
    if(!infile)
    return;
    pv.clear();
    mu.clear();
    int i=0;
    while(infile>>p)
    {
        pv.push_back(p);
        mu.insert(make_pair(p.getNO(),i));
        i++;
    }
    infile.close();
}
class UserCheckin:public CheckIn    //用户登陆类;
{
  public:
  void login()
  {
      int hao,flag;
      string mima;
      for(int i=0;i<3;i++)
      {
          cin>>hao>>mima;
          if(mu.find(hao)!=mu.end())
        {
          multimap<int,int>::iterator mulow=mu.lower_bound(hao),muupp=mu.upper_bound(hao);
          for(muit=mulow;muit!=muupp;muit++)
            if(pv[muit->second].getPwd()==mima&&pv[muit->second].getType()==0)
              {
                  cout<<"欢迎用户登陆"<<endl;
                  Client m(hao);
                  m.borrow();
                  // m.borrow();
                  m.back();
                  m.querybook();
                  m.renew();
                  flag=1;
                  break;
              }
          }
          if(flag==1) break;
          if(i>=3) cout<<"非法的账号或密码";
      }
  }
};
class AdminCheckIn:public CheckIn   //管理员登陆类;
{
  public:
  void login()
  {
      int hao,flag;
      string mima;
      for(int i=0;i<3;i++)   //3次登陆机会;
      {
          cin>>hao>>mima;
          if(mu.find(hao)!=mu.end())
        {
          multimap<int,int>::iterator mulow=mu.lower_bound(hao),muupp=mu.upper_bound(hao);
          for(muit=mulow;muit!=muupp;muit++)
            if(pv[muit->second].getPwd()==mima&&pv[muit->second].getType()==1)
              {
                  cout<<"欢迎管理员登陆"<<endl;
                  Manage mm; //执行管理员的功能;
                 // mm.addBook();
                  //mm.modifyBook();
                  mm.deleteBook();
                  mm.querybook();
                   mm.querybook();
                  /*mm.addUser();
                  mm.modifyUser();
                  mm.deleteUser();
                  mm.queryById();*/
                  flag=1;
                  break;
              }
        }
          if(flag==1) break;
          if(i>=3) cout<<"非法的账号或密码";
     }
  }
};
int main()
{
  int a;
  cout<<"如果管理员登陆请输1,用户登陆请输0"<<endl;
  cin>>a;
  if(a==1)
  {
     AdminCheckIn a;
     a.login();
  }
  if(a==0)
  {
     UserCheckin u;
     u.login();
  }
}

设计体会与小结

(一)设计遇到的问题及解决方法和需要注意的地方

ü 文件读取不成功——保证文件输入和输出的格式保持一致,只有当两者相同时,程序在读或写文件时才能够匹配到并做出相应的提取。格式中用到空格和换行不会有太大的问题,当在输入输出时想加入一些符号例如“/”或者“:”时可以补上一个char c(辅助格式)。

ü 文件读取方面还要注意:及时清空数据,避免出错。

ü 要注意前后数据的类型保持一致,函数的返回类型要仔细,避免犯些小的错误。

ü 在表示借阅记录时用到了state这个变量,可以很好的标记书目前的借阅状态。因此可以在程序中学会去使用这种思想。

ü 学习使用让程序增加时间的表达方式(重载+运算符,或者在构造函数中补充)。

ü 多多学习一些小技巧,使程序更加简洁。

ü 对于客户端一定要考虑好并且处理好封装性。

(二)收获

ü 进一步的理解了类的相关知识,能够更加从容的使用类。

ü 通过这个程序对继承和多态有了更深的理解,明白了在程序中怎样去思考什么时候该使用继承,如何运用继承,对多态也有了初步的理解。

ü 更进一步的知道了文件的读取方面的运用及一些注意事项。

ü 学习到了怎样从系统调用当前时间的程序,使程序更加符合实际。

ü 一定要注意在设计一个系统的时候,先要生成思路,思路很重要,先把思路理清之后,再着手写程序,在写的过程中不要太心急,不要想一次性的把所有功能都实现,要一点点的写,不断在写的过程中去增加新的功能,不断补充,还要去大胆尝试,不要怕写错,特别注意一些平常的小细节。

   (三)体会总结

       通过做这次的图书管理系统,我收获了很多。从一开始的毫无头绪到现在的能够理清思路,能够明白怎样去修改代码,能够想办法将我的新的创意融入到我的系统中去,我觉得真的进步了很多。但是在这个过程中注定不是一帆风顺的,我遇到了很多问题,总有一种刚修改完一个错误,接着就会冒出来另一个错误的感觉,但是每当错误被解决掉的时候,那种开心感真的很棒。在这个不断改进的过程中我初步学会了如何去设计一个程序,如何想方法去缩短代码量,去努力做到自己能够独立看懂下面的错误提示,去尝试修改错误,去不断更新自己的知识,去与同学交流思想,碰撞火花,不断去完善自己的代码。尽管这个程序可能没有做到将所有的功能都涵盖进去,可能没有那些大佬们做的那么完美,我知道自己还欠缺很多,所以在接下来的学习过程中,我会更加努力,努力去让自己的代码变得完美,也成为我像成为的模样。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值