home *** CD-ROM | disk | FTP | other *** search
- #include <iostream>
- #include <fstream>
- #include "Roll.h"
-
-
- CRoll::CRoll(const std::string &fname)
- : m_fname(fname)
- , m_openmode(std::ios_base::binary)
- {
- Read();
- }
-
- CRoll::~CRoll()
- {
- Write();
- }
-
-
- bool CRoll::Add(const CStudent &s)
- {
- if (Find(s.StudentNo()))
- return false;
- m_data.push_back(s);
- return true;
- }
-
- CRoll::data_it CRoll::Get(unsigned studNo)
- {
- data_it i;
-
- for (i=m_data.begin(); i!=m_data.end(); i++)
- if (i->StudentNo()==studNo)
- return i;
- return m_data.end();
- }
-
- bool CRoll::Find(unsigned studNo)
- {
- return Get(studNo)!=m_data.end();
- }
-
- bool CRoll::Find(unsigned studNo, CStudent &s)
- {
- data_it i = Get(studNo);
-
- if (i==m_data.end())
- return false;
- s = *i;
- return true;
- }
-
- bool CRoll::Delete(unsigned studNo)
- {
- data_it i = Get(studNo);
-
- if (i==m_data.end())
- return false;
- m_data.erase(i);
- return true;
- }
-
- bool CRoll::Read()
- {
- std::ifstream fi(m_fname.c_str(), m_openmode);
- if (!fi)
- return false;
- CStudent s;
-
- while (s.Read(fi))
- Add(s);
-
- return m_data.size()>0;
- }
-
- bool CRoll::Write()
- {
- data_t::iterator i;
- std::ofstream fo(m_fname.c_str(), m_openmode);
- if (!fo)
- return false;
-
- for (i=m_data.begin(); i!=m_data.end(); i++)
- i->Write(fo);
-
- return fo.good();
- }
-
-
-
-
-