리펙토링 해야 하는데 귀찮아서리.....ㅡ.ㅡ;;;;
~cpp
#include <iostream>
#include <fstream>
#include <cmath>
#include <string>
using namespace std;
#include <vector>
class UserInfo
{
private:
string szName; // User's name
unsigned int nSchoolNumber; // User's school number
public:
UserInfo() {}
UserInfo( string szN, unsigned int nSN )
{
szName = szN;
nSchoolNumber = nSN;
}
unsigned int getSchoolNumber() { return nSchoolNumber; }
string getName() { return szName; }
};
class BookInfo
{
private:
int nBookNumber;
string szBookName;
string szWriter;
string szPublishingCompany;
bool bLone;
UserInfo * pLendPeople;
public:
BookInfo() {}
BookInfo( int nBN, string szBName, string szW, string szPC )
{
nBookNumber = nBN;
szBookName = szBName;
szWriter = szW;
szPublishingCompany = szPC;
bLone = false;
}
int getBookNumber() { return nBookNumber; }
string getBookName() { return szBookName; }
string getWriter() { return szWriter; }
string getPublishingCompany() { return szPublishingCompany; }
void lendBook(UserInfo * pUi) { pLendPeople = pUi; bLone = true; }
};
class DataBase
{
private:
int nNextBookNumber;
vector <UserInfo *> userinfo;
vector <BookInfo *> bookinfo;
public:
DataBase()
{
// Read the number of Book...
ifstream f;
f.open("BookNumber.dat");
string szNextNum;
while (!f.eof())
getline(f, szNextNum);
unsigned int nTNN;
double nTNN2;
for (int k = 0 ; k < szNextNum.size() ; k++) // convert 'char' into 'int'
{
nTNN += ( szNextNum[k] - 48 ) * pow(10.0, nTNN2);
nTNN2--;
}
nNextBookNumber = nTNN;
f.close();
// end
// Read data from UserData file...
ifstream fin;
fin.open("UserData.dat");
string szTemp;
vector <int> nT;
unsigned int nTempNum = 0;
double nTempNum2 = 0.0;
while (!fin.eof())
{
getline(fin, szTemp);
for (int i = 0 ; i < szTemp.size() ; i++)
{
if ( szTemp[i] == ',' )
nT.push_back(i);
}
string szTempNum(szTemp.begin(), szTemp.begin() + nT[0]);
string szTempName(szTemp.begin() + nT[0] + 1, szTemp.size());
nTempNum2 = szTempNum.size() - 1;
for (int j = 0 ; j < szTempNum.size() ; j++) // convert 'char' into 'int'
{
nTempNum += ( szTempNum[j] - 48 ) * pow(10.0, nTempNum2);
nTempNum2--;
}
UserInfo * ui = new UserInfo(szTempName , nTempNum);
userinfo.push_back(ui);
}
fin.close();
// end
// Read data from BookData file...
ifstream fin2;
fin2.open("BookData.dat");
string szTemp2;
vector <int> nT2;
nTempNum = 0;
nTempNum2 = 0.0;
while (!fin2.eof())
{
getline(fin2, szTemp2);
for (int i = 0 ; i < szTemp2.size() ; i++)
{
if ( szTemp2[i] == ',' )
nT2.push_back(i);
}
// string 변수(배열 시작, 배열 마지막);
string szTemp2BookNum(szTemp2.begin(), szTemp2.begin() + nT2[0]);
string szTemp2BookName(szTemp2.begin() + nT2[0] + 1, szTemp2.begin() + nT2[1]);
string szTemp2Writer(szTemp2.begin() + nT2[1] + 1, szTemp2.begin() + nT2[2]);
string szTemp2PublishingCompany(szTemp2.begin() + nT2[2] + 1, szTemp2.size());
nTempNum2 = szTemp2BookNum.size() - 1;
for (int j = 0 ; j < szTemp2BookNum.size() ; j++) // convert 'char' into 'int'
{
nTempNum += ( szTemp2BookNum[j] - 48 ) * pow(10.0, nTempNum2);
nTempNum2--;
}
BookInfo * bi = new BookInfo(nTempNum , szTemp2BookName , szTemp2Writer , szTemp2PublishingCompany);
bookinfo.push_back(bi);
}
fin2.close();
// end
}
void insertUserData(UserInfo * ui)
{
userinfo.push_back(ui);
}
void deleteUserData(int nUserNum)
{
for (int i = 0 ; i < userinfo.size() ; i++)
{
if ( userinfo[i]->getSchoolNumber() == nUserNum )
{
userinfo.erase(userinfo.begin()+i);
return;
}
}
}
void insertBookData(BookInfo * bi)
{
bookinfo.push_back(bi);
}
void deleteBookData(int nBookNum)
{
for (int i = 0 ; i < bookinfo.size() ; i++)
{
if ( bookinfo[i]->getBookNumber() == nBookNum )
{
bookinfo.erase(bookinfo.begin()+i);
return;
}
}
}
int getNextBookNumber() { nNextBookNumber++; return nNextBookNumber; }
void showAll()
{
}
};
잡담 ¶
음. 근데 이거 스펙대로 한건가? 스펙에는 linked list 아니면, array 쓰라고 한것 같은뎅..-_-a - 임인택
그거 대신 STL을 썼죠.. vector 도 linked list 로 되어있잖아요^^;; -- 상욱(
whiteblue)
음. 정확히 linked list 라고는 말할수 없고.. 친척 정도라고 말할수 있으려나. 두개 사이에 교집합이 존재하지만, 어떤것이 다른 하나에 속한것은 아니니 - 임인택
벡터 링크드 리스트 아닌데;; list가 링크드 리스트다. 벡터는 내부적으로 동적 배열 씀. --인수
그런가요?.. 디버그 모드 돌려보니깐 링크드 리스트처럼 되던디.... 아니었군요... -- 상욱(
whiteblue)