📄 schoolmanager.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 + -