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

📄 user.cpp

📁 数据库模拟程序 实现控制台命令词法分析
💻 CPP
字号:
// User.cpp: implementation of the CUser class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "database.h"
#include "User.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CUser::CUser()
{
	successful = false;
}

CUser::~CUser()
{

}

bool CUser::CheckUser(CString user, CString pwd)
{
	ifstream fread;
	fread.open("user.dat", ios::in);
	
	struct USER us;
	memset(&us, 0, sizeof(USER));
	while(fread.read((char*)&us, sizeof(USER)))
	{
		if((user == us.name) && (pwd == us.pwd))
		{
			successful = true;
			right = us.right;
			break;
		}
		fread.read((char*)&us, 1);//滤去回车
	}
	fread.close();
	return successful;
}

void CUser::addUser(CString name, CString pwd, int right)
{
	fstream f;
	f.open("user.dat", ios::app | ios::in | ios::out);
	f.seekp(0, ios::end);
	
	struct USER us;
	memset(&us, 0, sizeof USER);
	strcpy(us.name, name.GetBuffer(name.GetLength()));
	strcpy(us.pwd, pwd.GetBuffer(pwd.GetLength()));
	us.right = right;

	f.write((char*)&us, sizeof(struct USER));
	f<<endl;
	f.close();
}

void CUser::SetUser(CString strName, CString strPwd)
{
	name = strName;
	pwd = strPwd;

	ifstream fread;
	fread.open("user.dat", ios::in);
	
	struct USER us;
	memset(&us, 0, sizeof(USER));
	while(fread.read((char*)&us, sizeof(USER)))
	{
		if((name == us.name) && (pwd == us.pwd))
		{
			right = us.right;
			break;
		}
		fread.read((char*)&us, 1);//滤去回车
	}
	fread.close();
}

//改变指定用户strName权限 
//flag = 1 增加新权限
//flag = 0 减少权限
void CUser::ChangeRight(CString strName, int changeRight, int flag)
{
	fstream f;
	f.open("user.dat", ios::in | ios::out);
	struct USER us;
	memset(&us, 0, sizeof(struct USER));

	while(f.read((char*)&us, sizeof(struct USER)))
	{
		if((us.name == strName))
			break;
		f.read((char*)&us, 1);
	}
	if(f.eof())
	{
		AfxMessageBox("error");
		return;
	}
	else
	{
		if(flag == 1)
		{
			us.right |= changeRight;
		}
		else if(flag == 0)
		{
			us.right &= ~changeRight;
		}
		else
		{
			AfxMessageBox("error in user.cpp");
			return ;
		}

		f.seekp(-(signed(sizeof(struct USER))), ios::cur);
		f.write((char*)&us, sizeof(struct USER));
	}
	f.close();
}

CUser* CUser::GetCurrentUser()
{
	this->SetUser(name, pwd);
	return this;
}

⌨️ 快捷键说明

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