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; }