⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userlist.cpp

📁 一个用mfc开发的基于文本数据库的学生信息管理系统
💻 CPP
字号:
// UserList.cpp: implementation of the CUserList class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ClassSystem.h"
#include "UserList.h"
#include<fstream.h>

#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 <<user.m_key <<"\t"<< user.m_account <<"\t" <<user.m_name <<"\t"<< user.m_password <<"\t" <<user.m_city 
			<<"\t"<< user.m_college <<"\t"<< user.m_major <<"\t"<< user.m_dormitory <<"\t"<< user.m_phone
					 <<"\t"<< user.m_mobilephone <<"\t"<< user.m_email <<"\t"<< user.m_homeAddress <<"\t"
					 <<user.m_postNumber <<"\t"<< user.m_CET4 <<"\t"<< user.m_CET6 <<"\t"<< user.m_description<<endl;
	}
}

bool CUserList::Append(UINT key,char account[], char name[],char major[],
					   char password[],char city[] ,char college[] ,
		char dormitory[],char phone[],char mobilephone[] ,char email[],
		char homeAddress[],char postNumber[],char cet4[],char cet6[] ,
		char 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::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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -