- •Пояснительная записка
- •2006 Содержание:
- •1.Техническое задание
- •1.2. Основания для разработки
- •1.3. Назначение разработки
- •1.4. Требования к программе
- •1.5. Требования к программной документации
- •1.6. Стадии и этапы разработки
- •1.7. Порядок контроля и приема
- •2.Описание процесса проектирования пк
- •2.1. Диаграмма классов.
- •2.2. ActivitySample – диаграмма
- •2.3. Sequence – диаграмма
- •2.4. Use Case – диаграмма
- •2.5. Руководство оператора
- •2.6. Руководство пользователя.
- •2.7. Контрольный пример.
- •3.Исходные тексты пк
3.Исходные тексты пк
//Cfilm.cpp
#include "stdafx.h"
#include "CFilm.h"
CFilm::CFilm( CDatabase* pDatabase )
:CRecordset(pDatabase)
{
m_nFields = 6;
}
CFilm::~CFilm()
{
}
void CFilm::DoFieldExchange(CFieldExchange* pFX)
{
pFX -> SetFieldType(CFieldExchange::outputColumn);//(CFieldExchange* pFX);
RFX_Text(pFX, _T("Name"), s_FilmName, 100);
RFX_Text(pFX, _T("Year"), s_WorkFilm, 30);
RFX_Text(pFX, _T("Regis"), s_Regiessiuer, 100);
RFX_Text(pFX, _T("Type"), s_Genre, 25);
RFX_Text(pFX, _T("Rejting"), s_Solution, 100);
RFX_Text(pFX, _T("Solution"), s_Rejting, 100);
}
void CFilm::GetFilmInfo(CMapStringToPtr* ptrMap)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CRecordset RecSet( &db );// Набор записей
try
{
RecSet.Open(CRecordset::forwardOnly,"SELECT* FROM Film");//множество записей доступных только для чтения
do{
RecSet.GetFieldValue(0, s_FilmName);
RecSet.GetFieldValue(1, s_WorkFilm);
RecSet.GetFieldValue(2, s_Regiessiuer);
RecSet.GetFieldValue(3, s_Genre);
RecSet.GetFieldValue(4, s_Solution);
RecSet.GetFieldValue(5, s_Rejting);
void *ptr = new CFilm(s_FilmName,s_WorkFilm,s_Regiessiuer,s_Genre, s_Solution, s_Rejting);
(*ptrMap)[s_FilmName] = ptr;
ptr = 0;
delete ptr;
RecSet.MoveNext();
}
while( !RecSet.IsEOF() );
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
}
void CFilm::AddFilmInfo(CMapStringToPtr* ptrMap, CFilm* ptrFilm)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CFilm RecSet ( &db );
try
{
if(!RecSet.Open(CRecordset::snapshot,"SELECT* FROM Film"))
{AfxMessageBox("Can Not Open 'Recordset' !"); return;}
if(!RecSet.CanAppend())
{AfxMessageBox("function CanAppend is Failure! ( No Field Values Were Set! )"); return;}
if(!RecSet.CanUpdate())
{AfxMessageBox("function CanUpdate is Failure! ( Can't Update Database! )"); return;}
RecSet.AddNew();
RecSet.s_FilmName = ptrFilm->s_FilmName;
RecSet.s_WorkFilm = ptrFilm->s_WorkFilm;
RecSet.s_Regiessiuer = ptrFilm->s_Regiessiuer;
RecSet.s_Genre = ptrFilm->s_Genre;
RecSet.s_Solution = ptrFilm->s_Solution;
RecSet.s_Rejting = ptrFilm->s_Rejting;
RecSet.Update();
RecSet.Close();
db.Close();
}
catch (CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
void* ptr;
if((*ptrMap).Lookup(ptrFilm->s_FilmName, ptr))
{
AfxMessageBox("Названия фильмов не могут повторяться !", MB_ICONINFORMATION);
return;
}
else
{
ptr = ((void *)ptrFilm);
(*ptrMap)[ptrFilm->s_FilmName] = ptr;
}
}
void CFilm::DelFilmInfo(CMapStringToPtr* ptrMap, CString Str)
{
int nItem = -1;
int I = 0;
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CFilm RecSet ( &db );
try
{
if(!RecSet.Open(CRecordset::snapshot, "SELECT* FROM Film"))
{AfxMessageBox("Can Not Open 'Recordset' !"); return;}
do{
RecSet.Move(I);
I=1;
nItem ++ ;
}while(RecSet.s_FilmName != Str);
RecSet.Delete();
if(!RecSet.IsDeleted())
{
AfxMessageBox("Нельзя удалить !");
}
void* ptr;
if((*ptrMap).Lookup(Str, ptr))//RemoveKey(Str)){}
{
CFilm* _film = ((CFilm*)ptr);
delete _film;
(*ptrMap).RemoveKey(Str);
}
else {AfxMessageBox("В архиве не найден фильм (НЕпредвиденная ошибка)");return;}
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
}
void CFilm::EditFilmInfo(CMapStringToPtr* ptrMap, CString Str, CFilm* ptrFilm)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CFilm RecSet ( &db );
int nItem = -1;
int I = 0;
try
{
if(!RecSet.Open(CRecordset::snapshot,"SELECT* FROM Film"))
{AfxMessageBox("Can Not Open 'Recordset' !"); return;}
if(!RecSet.CanAppend())
{AfxMessageBox("function CanAppend is Failure! ( No Field Values Were Set! )"); return;}
if(!RecSet.CanUpdate())
{AfxMessageBox("function CanUpdate is Failure! ( Can't Update Database! )"); return;}
do{
RecSet.Move(I);
I=1;
nItem ++ ;
}while(RecSet.s_FilmName != Str);
RecSet.Edit();
RecSet.s_FilmName = ptrFilm->s_FilmName;
RecSet.s_WorkFilm = ptrFilm->s_WorkFilm;
RecSet.s_Regiessiuer = ptrFilm->s_Regiessiuer;
RecSet.s_Genre = ptrFilm->s_Genre;
RecSet.s_Solution = ptrFilm->s_Solution;
RecSet.s_Rejting = ptrFilm->s_Rejting;
RecSet.Update();
RecSet.Close();
db.Close();
}
catch (CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
void* ptr;
if((*ptrMap).Lookup(Str, ptr))//RemoveKey(Str)){}
{
CFilm* _film = ((CFilm*)ptr);
delete _film;
(*ptrMap).RemoveKey(Str);
}
else {AfxMessageBox("В архиве не найден фильм (НЕпредвиденная ошибка)");return;}
ptr = ((void *)ptrFilm);
(*ptrMap)[s_FilmName] = ptr;
}
int CFilm::GetFilmInfoByName(CMapStringToPtr* ptrMap, PCHAR pFilmName, bool bUseLike)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CRecordset RecSet( &db );
int iRecordCount = 0;
try
{
CString qry = "SELECT* FROM Film WHERE Name LIKE '";
qry += pFilmName;
qry += "'";
if(bUseLike)
{
qry += "%";
}
RecSet.Open(CRecordset::forwardOnly, qry);
iRecordCount = RecSet.GetRecordCount();
if(iRecordCount != 0)
{
do
{
RecSet.GetFieldValue(0, s_FilmName);
RecSet.GetFieldValue(1, s_WorkFilm);
RecSet.GetFieldValue(2, s_Regiessiuer);
RecSet.GetFieldValue(3, s_Genre);
RecSet.GetFieldValue(4, s_Solution);
RecSet.GetFieldValue(5, s_Rejting);
void *ptr = new CFilm(s_FilmName,s_WorkFilm,s_Regiessiuer,s_Genre, s_Solution, s_Rejting);
(*ptrMap)[s_FilmName] = ptr;
ptr = 0;
delete ptr;
RecSet.MoveNext();
}
while( !RecSet.IsEOF() );
}
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
return iRecordCount;
}
int CFilm::GetFilmInfoBySol(CMapStringToPtr* ptrMap, bool bUseLike)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CRecordset RecSet( &db );
int iRecordCount = 0;
try
{
CString qry = "SELECT* FROM Film WHERE Year >=1980 AND Name LIKE 'A%'";
if(bUseLike)
{
qry += "%";
}
RecSet.Open(CRecordset::forwardOnly, qry);
iRecordCount = RecSet.GetRecordCount();
if(iRecordCount != 0)
{
do
{
RecSet.GetFieldValue(0, s_FilmName);
RecSet.GetFieldValue(1, s_WorkFilm);
RecSet.GetFieldValue(2, s_Regiessiuer);
RecSet.GetFieldValue(3, s_Genre);
RecSet.GetFieldValue(4, s_Solution);
RecSet.GetFieldValue(5, s_Rejting);
void *ptr = new CFilm(s_FilmName,s_WorkFilm,s_Regiessiuer,s_Genre, s_Solution, s_Rejting);
(*ptrMap)[s_FilmName] = ptr;
ptr = 0;
delete ptr;
RecSet.MoveNext();
}
while( !RecSet.IsEOF() );
}
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
return iRecordCount;
}
int CFilm::GetFilmInfoByRej(CMapStringToPtr* ptrMap, bool bUseLike)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CRecordset RecSet( &db );
int iRecordCount = 0;
try
{
CString qry = "SELECT* FROM Film WHERE Rejting > 3 AND Type LIKE 'фантаст%'";
if(bUseLike)
{
qry += "%";
}
RecSet.Open(CRecordset::forwardOnly, qry);
iRecordCount = RecSet.GetRecordCount();
if(iRecordCount != 0)
{
do
{
RecSet.GetFieldValue(0, s_FilmName);
RecSet.GetFieldValue(1, s_WorkFilm);
RecSet.GetFieldValue(2, s_Regiessiuer);
RecSet.GetFieldValue(3, s_Genre);
RecSet.GetFieldValue(4, s_Solution);
RecSet.GetFieldValue(5, s_Rejting);
void *ptr = new CFilm(s_FilmName,s_WorkFilm,s_Regiessiuer,s_Genre, s_Solution, s_Rejting);
(*ptrMap)[s_FilmName] = ptr;
ptr = 0;
delete ptr;
RecSet.MoveNext();
}
while( !RecSet.IsEOF() );
}
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
return iRecordCount;
}
int CFilm::GetFilmInfoByLan(CMapStringToPtr* ptrMap, bool bUseLike)
{
CDatabase db;
db.Open("DBKino_MAccess", FALSE, FALSE, "ODBC;");
CRecordset RecSet( &db );
int iRecordCount = 0;
try
{
CString qry = "SELECT* FROM Film WHERE Name >= 'А' AND Name <= 'Я'";
if(bUseLike)
{
qry += "%";
}
RecSet.Open(CRecordset::forwardOnly, qry);
iRecordCount = RecSet.GetRecordCount();
if(iRecordCount != 0)
{
do
{
RecSet.GetFieldValue(0, s_FilmName);
RecSet.GetFieldValue(1, s_WorkFilm);
RecSet.GetFieldValue(2, s_Regiessiuer);
RecSet.GetFieldValue(3, s_Genre);
RecSet.GetFieldValue(4, s_Solution);
RecSet.GetFieldValue(5, s_Rejting);
void *ptr = new CFilm(s_FilmName,s_WorkFilm,s_Regiessiuer,s_Genre, s_Solution, s_Rejting);
(*ptrMap)[s_FilmName] = ptr;
ptr = 0;
delete ptr;
RecSet.MoveNext();
}
while( !RecSet.IsEOF() );
}
RecSet.Close();
db.Close();
}
catch(CDBException* pException)
{
AfxMessageBox( pException -> m_strStateNativeOrigin );
AfxMessageBox( pException -> m_strError );
pException -> Delete();
}
return iRecordCount;
}