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

📄 schoolmanager.cpp

📁 一个人工管理系统
💻 CPP
字号:
// stdafx.cpp : source file that includes just the standard includes
//	SchoolManager.pch will be the pre-compiled header
//	stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "iostream.h"
#include "string.h"
#include "conio.h"
#include "schoolmanager.h"
#ifdef _DEBUG
#define DebugPrint printf
#else 
#define DebugPrint(a,b)
#endif
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

RecordSet::RecordSet()
{
	m_NextSet=0;
	m_SetID=m_NextSetID++;
	m_ValidateCnt=0;
	memset(m_Records,0,sizeof(m_Records));
}

RecordSet::~RecordSet()
{
	if(m_NextSet)delete m_NextSet;
	for(int i=0;i<1024;i++)
		if(m_Records[i])delete m_Records[i];
}

int RecordSet::AddNewRecord(Employee*person)
{
	if(m_ValidateCnt>=1024)
	{
		if(m_NextSet)m_NextSet=new RecordSet;
		assert(m_NextSet);
		m_NextSet->AddNewRecord(person);
		return 1;
	}
	for(int i=0;i<1024;i++)
		if(!m_Records[i]){m_Records[i]=person;return 1;}
	m_ValidateCnt++;
	assert(0);
	return 0;
}

int RecordSet::DeleteRecord()
{
	if(!m_CurRecord)
	{cout<<"Not Active Record!"<<endl;return 0;}
	delete *m_CurRecord;
	*m_CurRecord=0;
	m_CurRecord=0;
	return 1;
}

int RecordSet::Qurey(char*name)
{
	for(int i=0;i<1024;i++)
		if(m_Records[i])
		{
			if(m_Records[i]->IsName(name))
			{
				m_ActiveSet=this;
				m_CurRecord=&m_Records[i];
				return 1;
			}
		}
	if(!m_NextSet)return 0;
	assert(m_NextSet);
	return m_NextSet->Qurey(name);
}

int RecordSet::FindNextRecord(char*name)
{
	
	if(m_ActiveSet!=this)
	{
		if(m_NextSet)return m_NextSet->FindNextRecord(name);
		return 0;
	}
	for(int i=0;i<1024;i++)
		if(m_Records[i])
		{
			if(m_CurRecord!=&m_Records[i]&&m_Records[i]->IsName(name))
			{
				m_ActiveSet=this;
				m_CurRecord=&m_Records[i];
				return 1;
			}
		}
	if(!m_NextSet)return 0;
	assert(m_NextSet);
	return m_NextSet->Qurey(name);
}

int RecordSet::ReplaceRecord(Employee*person)
{
	*m_CurRecord=person;
	return 0;
}

int RecordSet::ViewAll()
{
	for(int i=0;i<1024;i++)
		if(m_Records[i])m_Records[i]->Show();
	return 0;
}

Employee::Employee(char*Name,int Sex,char*Birthdate,char*WorkDate,float Salary)
{
	assert(strlen(Name)<19);
	assert(strlen(Birthdate)<19);
	assert(strlen(WorkDate)<19);
	strcpy(szName,Name);
	strcpy(szBirthdate,Birthdate);
	strcpy(szWorkDate,WorkDate);
	fSalary=Salary;
	bSex=Sex;
}

Employee::~Employee()
{
	DebugPrint("%\ns",szName);
}

int Employee::IsName(char*name)
{
	return !strcmp(szName,name);
}

int Employee::Show()
{
	printf("%-11s %s %-12.0f %-9s %s\n",
	szName,(bSex==0?"Man":"Woman"),fSalary,szBirthdate,szWorkDate);
	return 0;
}

RecordSet Base;

void AppendRecord()
{
	
	int  Sex;
	float Salary;
	char Name[20];
	char Birthdate[20];
	char WorkDate[20];
	cerr<<"name:";
	cin>>Name;
	cerr<<"Sex:(0=Man,1=Woman)";
	cin>>Sex;
	cerr<<"Birthdate:";
	cin>>Birthdate;
	cerr<<"WorkDate:";
	cin>>WorkDate;
	cerr<<"Salary:";
	cin>>Salary;
	Base.AddNewRecord(new Employee(Name,Sex,Birthdate,WorkDate,Salary));
}

void DeleteRecord()
{
	if(Base.m_CurRecord)(*Base.m_CurRecord)->Show();
	else 
	{cout<<"Error: not Active Record"<<endl; return;}
	cout<<"Are You Sure to Delete this Record!(Y/N)"<<endl;
	switch(getch())
	{
	case 'y':
	case 'Y':
		Base.DeleteRecord();
	}
	return;
}

void PrintHelp()
{
	char *helpMessage[]=
	{"对大小写忽略","Q 退出","H 打印帮助",
	"F 查询记录","V 查看所有记录","A 添加记录",
	"R 修改记录",NULL};
	for(int i=0;helpMessage[i];i++)
		cout<<helpMessage[i]<<endl;
}
int main()
{
	char cCmd;
	int bExit=0;
	char name[20];
	while(!bExit)
	{
		cerr<<"$:\\";
		cCmd=getch();
		cout<<cCmd<<endl;
		switch(cCmd)
		{
		case 'q':
		case 'Q':
			bExit=1;
			break;
		case 'c':
		case 'C':
			system("CLS");
			break;
		case 'd':
		case 'D':
			DeleteRecord();
			break;
		case 'a':
		case 'A':
			AppendRecord();
			break;
		case 'f':
		case 'F':
			cerr<<"Name:";
			cin>>name;
			if(!Base.Qurey(name))
				cout<<"Error Record Not Found!"<<endl;
			else (*Base.m_CurRecord)->Show();
			break;
		case 'R':
		case 'r':
			Base.DeleteRecord();
			AppendRecord();
			break;
		case 'h':
		case 'H':
			PrintHelp();
			break;
		case 'V':
		case 'v':
			printf("Name        Sex Salary       Birthdate WorkDate\n");
			Base.ViewAll();
			break;
		default:
			cout<<"Bad Command"<<endl;
			break;
		}

	}
	return 0;
}	

⌨️ 快捷键说明

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