www.pudn.com > classSystem(c++).rar > UserList.cpp


// UserList.cpp: implementation of the CUserList class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "ClassSystem.h" 
#include "UserList.h" 
#include 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CUserList::CUserList() 
{ 
	row = new CUserNode* [10000];//最多可以存储一万条数据 
	total = 0; 
	fence=head=tail = new CUserNode; 
	 
	ifstream InUserFile; 
	InUserFile.open("user.dat"); 
 
	UINT key = 0;//链表关键字,不能重复,用来计算数据数目,快速查找 
	char account[20];//学号,不能重复 
	char name[50]; 
	char password[100]; 
	char city[20];//籍贯 
	char college[50]; 
	char major[60]; 
	char dormitory[50]; 
	char phone[20]; 
	char mobilephone[20]; 
	char email[100]; 
	char homeAddress[200]; 
	char postNumber[10]; 
	char CET4[5]; 
	char CET6[5]; 
	char description[100]; 
 
	while(InUserFile >> key >> account >> name >> password >> city >> college >> major >> dormitory >> phone 
					 >> mobilephone >> email >> homeAddress >> postNumber >> CET4 >> CET6 >> description ) 
	{ 
		if(total<10000) 
		{ 
			Append(key,account,name,major,password,city,college,dormitory, 
				phone,mobilephone,email,homeAddress,postNumber,CET4, 
				CET6,description); 
			row[key]= tail; 
		} 
 
	} 
} 
 
CUserList::~CUserList() 
{ 
	ofstream OutUserFile; 
	OutUserFile.open("user.dat",ios::out); 
 
	fence = head; 
	 
	while(head->next != NULL) 
	{ 
		CUserNode user; 
		remove(user); 
		OutUserFile <next = new CUserNode(key,account,name,major,password, city , college , 
		 dormitory,phone,mobilephone , email, 
		 homeAddress, postNumber, cet4, cet6 , 
		 description); 
	total++; 
	return true; 
} 
bool CUserList::Append(UINT key,CString account, CString name,CString major, 
					   CString password,CString city ,CString college , 
		CString dormitory,CString phone,CString mobilephone ,CString email, 
		CString homeAddress,CString postNumber,CString cet4,CString cet6 , 
		CString description) 
{ 
	tail = tail->next = new CUserNode(key,account,name,major,password, city , college , 
		 dormitory,phone,mobilephone , email, 
		 homeAddress, postNumber, cet4, cet6 , 
		 description); 
	total++; 
	return true; 
} 
 
bool CUserList::find(CString account,CUserNode &curUser) 
{ 
	fence = head; 
	while(fence->next != NULL) 
	{ 
		if(fence->next->m_account == account) 
		{ 
			curUser.m_key = fence->next->m_key; 
			curUser.m_account= fence->next->m_account; 
			curUser.m_CET4 = fence->next->m_CET4; 
			curUser.m_CET6 = fence->next->m_CET6; 
			curUser.m_city = fence->next->m_city; 
			curUser.m_college = fence->next->m_college; 
			curUser.m_description = fence->next->m_description; 
			curUser.m_dormitory = fence->next->m_dormitory; 
			curUser.m_email = fence->next->m_email; 
			curUser.m_homeAddress = fence->next->m_homeAddress; 
			curUser.m_major = fence->next->m_major; 
			curUser.m_mobilephone = fence->next->m_mobilephone; 
			curUser.m_name = fence->next->m_name; 
			curUser.m_password = fence->next->m_password; 
			curUser.m_phone = fence->next->m_phone; 
			curUser.m_postNumber = fence->next->m_postNumber; 
		 
			return true; 
		} 
		fence = fence->next; 
	} 
	return false; 
} 
bool CUserList::modifyPs(UINT key,CUserNode &curUser) 
{ 
	row[key]->m_password = curUser.m_password; 
	return true; 
} 
bool CUserList::editInfo(UINT key,CUserNode &curUser) 
{ 
	row[key]->m_CET4 = curUser.m_CET4; 
	row[key]->m_CET6 = curUser.m_CET6; 
	row[key]->m_city = curUser.m_city; 
	row[key]->m_college = curUser.m_college; 
	row[key]->m_dormitory =  curUser.m_dormitory; 
	row[key]->m_email = curUser.m_email; 
	row[key]->m_homeAddress = curUser.m_homeAddress; 
	row[key]->m_major = curUser.m_major; 
	row[key]->m_mobilephone = curUser.m_mobilephone; 
	row[key]->m_name = curUser.m_name; 
	row[key]->m_phone = curUser.m_phone; 
	row[key]->m_postNumber = curUser.m_postNumber; 
	return true; 
} 
 
bool CUserList::remove(CUserNode &user) 
{ 
	if(fence->next==NULL)//The right partition is empty 
	{ 
		return false; 
	} 
	user.m_key = fence->next->m_key; 
	user.m_account = fence->next->m_account; 
	user.m_CET4 = fence->next->m_CET4; 
	user.m_CET6 = fence->next->m_CET6; 
	user.m_city = fence->next->m_city; 
	user.m_college = fence->next->m_college; 
	user.m_description = fence->next->m_description; 
	user.m_dormitory = fence->next->m_dormitory; 
	user.m_email = fence->next->m_email; 
	user.m_homeAddress = fence->next->m_homeAddress; 
	user.m_major = fence->next->m_major; 
	user.m_mobilephone = fence->next->m_mobilephone; 
	user.m_name = fence->next->m_name; 
	user.m_phone = fence->next->m_phone; 
	user.m_password = fence->next->m_password; 
	user.m_postNumber = fence->next->m_postNumber; 
	CUserNode* ltemp=fence->next; 
	fence->next=ltemp->next; 
	if(tail==ltemp) 
	{ 
		tail=fence; 
	} 
	delete ltemp; 
 
	return true; 
}