Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
02.05.2014
Размер:
409.09 Кб
Скачать

7. Вывод

Данная программа была протестирована для всех представленных в таблице решений входных условий. Тесты не обнаружили ошибок в работе программы. Получен правильный выходной файл. Следовательно, программа отвечает заявленным внешним спецификациям.

8. Список литературы

  1. Методические указания к курсовой работе по дисциплине «Технология программирования» / Уфимск. Гос. Авиац. техн. ун-т; Сост.: Гвоздев В.Е., Мукасеева В.Н. Хасанов А.Ю – Уфа, 2004, – 42 с.

Листинг программы:

// JennyDlg.cpp : implementation file

#include "stdafx.h"

#include "Jenny.h"

#include "JennyDlg.h"

#include "fstream.h"

#include "math.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

CJennyDlg::CJennyDlg(CWnd* pParent /*=NULL*/)

: CDialog(CJennyDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CJennyDlg)

m_f1 = _T("");

m_f2 = _T("");

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CJennyDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_LIST3, m_cod2);

DDX_Control(pDX, IDC_LIST2, m_cod3);

DDX_Control(pDX, IDC_LIST1, m_cod);

DDX_Text(pDX, IDC_EDIT1, m_f1);

DDX_Text(pDX, IDC_EDIT2, m_f2);

}

BEGIN_MESSAGE_MAP(CJennyDlg, CDialog)

//{{AFX_MSG_MAP(CJennyDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BUTTON1, OnButton1)

ON_BN_CLICKED(IDC_BUTTON2, OnButton2)

ON_BN_CLICKED(IDC_BUTTON3, OnButton3)

END_MESSAGE_MAP()

BOOL CJennyDlg::OnInitDialog()

{

CDialog::OnInitDialog();

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

return TRUE; // return TRUE unless you set the focus to a control

}

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

void CJennyDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

HCURSOR CJennyDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

int CJennyDlg::OnButton1() //начало обработки первого файла

{

UpdateData(true);

int n=0;

int in=0;

int f1st = 3;

char tmp[100];

char F1[100][100][100];

for(int cou = m_cod.GetCount();cou > -1;cou--)

{

m_cod.DeleteString(cou);

}

for(cou = m_cod3.GetCount();cou > -1;cou--)

{

m_cod3.DeleteString(cou);

}

if(m_f1==""){m_cod.AddString("Введите название файла!");return 0;}

ifstream f1(m_f1);

if(f1.fail()){m_cod.AddString("Невозможно открыть файл!");}

while(!f1.eof())

{

f1.getline(tmp,sizeof(tmp)+1,'\t');

strncpy(F1[(in)/(f1st)][in%(f1st)],tmp,30);

if(in%(f1st)==0)

{

if((in)/(f1st)>0)

{

for(int i=0;i<sizeof(F1[in/(f1st)][in%(f1st)]);i++)

F1[(in)/(f1st)][in%(f1st)][i]=F1[(in)/(f1st)][in%(f1st)][i+1];

}

}

in++;

}

f1.close();

n = in/(f1st);

ofstream f6("cor1.txt");

CString st;

CString st2,st3;

for(int i=0;i<n;i++)

{

st=F1[i][0];

st2 = F1[i][1];

st3=F1[i][2];

m_cod.AddString(st+"\t"+st2+"\t"+st3);

}

CString re;

for(i=0;i<in/f1st;i++)

for(int j=i+1;j<in/f1st;j++)

{

if((strcmpi(F1[i][0],F1[j][0]))==0){re=F1[i][0];m_cod.AddString("Код <" + re + "> должен быть уникальным!");strcpy(F1[i][0],"");strcpy(F1[j][0],"");}

if(((strcmpi(F1[i][1],F1[j][1]))==0)&&((strcmpi(F1[i][2],F1[j][2]))==0))

{

if((strcmpi(F1[i][0],F1[j][0]))!=0){re=F1[i][1];m_cod.AddString("У одного альбома <" + re + "> не может быть двух разных кодов!!!");}

}

if(((strcmpi(F1[i][1],F1[j][1]))==0)&&((strcmpi(F1[i][2],F1[j][2]))==0))

{

if((strcmpi(F1[i][0],F1[j][0]))==0){re=F1[i][0];m_cod.AddString("Альбом <" + re + "> записан больше 1 раза!!!");}

}

}

for(int y=0;y<n;y++)

for(int h=0;h<20;h++)

{

if((F1[y][0][h]<'0'||F1[y][0][h]>'9')&&strlen(F1[y][0])>h){re=F1[y][0];m_cod.AddString("Код диска <" + re + "> не может");m_cod.AddString("содержать буквы!!!");}

if((F1[y][1][h]<'9'&&F1[y][1][h]>'0')&&strlen(F1[y][1])>h){re=F1[y][1];m_cod.AddString("Название диска <" + re + "> не может");m_cod.AddString("содержать цифры!!!");}

if((F1[y][2][h]<'9'&&F1[y][2][h]>'0')&&strlen(F1[y][2])>h){re=F1[y][2];m_cod.AddString("Название исполнителя <" + re + "> не может");m_cod.AddString("содержать цифры!!!");}

}

for(y=0;y<n;y++)

{

if((strcmpi(F1[y][0],""))==0){int lkl = 0;}

else f6 << F1[y][0] << "\t" << F1[y][1] << "\t" << F1[y][2] <<"\t\n";

}

return 0;

}

int CJennyDlg::OnButton2() //обработка второго файла

{

UpdateData(true);

char F2[100][100][100];

int z=0;

int in=0;

int f2st=4;

char tmp[100];

CString st,st1,st2,st3;

for(int cou = m_cod2.GetCount();cou > -1;cou--)

{

m_cod2.DeleteString(cou);

}

for(cou = m_cod3.GetCount();cou > -1;cou--)

{

m_cod3.DeleteString(cou);

}

if(m_f2==""){m_cod2.AddString("Введите название файла!");return 0;}

ifstream f2(m_f2);

if(f2.fail()){m_cod2.AddString("Невозможно открыть файл!");return 0;}

while(!f2.eof())

{

f2.getline(tmp,sizeof(tmp)+1,'\t');

strncpy(F2[(in)/(f2st)][in%(f2st)],tmp,50);

if(in%(f2st)==0)

{

if((in)/(f2st)>0)

{

for(int i=0;i<sizeof(F2[in/(f2st)][in%(f2st)]);i++)

F2[(in)/(f2st)][in%(f2st)][i]=F2[(in)/(f2st)][in%(f2st)][i+1];

}

}

in++;

}

f2.close();

z=in/(f2st);

for(int i=0;i<z;i++)

{

st=F2[i][0];

st1=F2[i][1];

st2=F2[i][2];

st3=F2[i][3];

m_cod2.AddString(st+"\t"+st1+"\t"+st2+"\t"+st3);

}

for(int y=0;y<z;y++)

for(int h=0;h<20;h++)

{

CString re;

if((F2[y][0][h]<'0'||F2[y][0][h]>'9')&&strlen(F2[y][0])>h){re=F2[y][0];m_cod2.AddString("Код диска <" + re + "> не может");m_cod2.AddString("содержать буквы!!!");}

if((F2[y][3][h]<'0'||F2[y][3][h]>'9')&&strlen(F2[y][3])>h){re=F2[y][0];m_cod2.AddString("Количесто дисков <" + re + "> не может");m_cod2.AddString("содержать буквы!!!");}

if((F2[y][2][h]<'0'||F2[y][2][h]>'9')&&strlen(F2[y][2])>h){re=F2[y][0];m_cod2.AddString("Дата <" + re + "> не может");m_cod2.AddString("содержать буквы!!!");}

if((F2[y][1][h]<'9'&&F2[y][1][h]>'0')&&strlen(F2[y][1])>h){re=F2[y][1];m_cod2.AddString("Название магазина <" + re + "> не может");m_cod2.AddString("содержать цифры!!!");}

}

return 0;

}

void CJennyDlg::OnButton3()

{

UpdateData(true);

const int f1st=3,f2st=4;

int in=0,n=0,z=0;

char tmp[100];

int k=0;

int sumpd=0,sumo=0;

char F1[100][100][100];

char F2[50][f2st][50];

//char tmp2[100];

ifstream f("cor1.txt");

ifstream f2(m_f2);

while(!f.eof())

{

f.getline(tmp,sizeof(tmp)+1,'\t');

strncpy(F1[(in)/(f1st)][in%(f1st)],tmp,50);

if(in%(f1st)==0)

{

if((in)/(f1st)>0)

{

for(int i=0;i<sizeof(F1[in/(f1st)][in%(f1st)]);i++)

F1[(in)/(f1st)][in%(f1st)][i]=F1[(in)/(f1st)][in%(f1st)][i+1];

}

}

in++;

}

f.close();

n = in/(f1st);

in=0;

while(!f2.eof())

{

f2.getline(tmp,sizeof(tmp)+1,'\t');

strncpy(F2[(in)/(f2st)][in%(f2st)],tmp,50);

if(in%(f2st)==0)

{

if((in)/(f2st)>0)

{

for(int i=0;i<sizeof(F2[in/(f2st)][in%(f2st)]);i++)

F2[(in)/(f2st)][in%(f2st)][i]=F2[(in)/(f2st)][in%(f2st)][i+1];

}

}

in++;

}f2.close();

z=in/(f2st);

char tmp2[100];

char tmp3[500];

strncpy(tmp2,F2[0][2],50);

CString st,st1,st2,st3,st4;

ofstream f3("f3.txt");

for (int v=0;v<z+1;v++)

{

if(((strcmpi(F2[v][2],"}"))!=0)&&(v!=0))

{

strncpy(tmp2,F2[v][2],50);

f3<<"Общая сумма продаж по дате: "<< sumpd <<" дисков\n\n";

sumo = sumo + sumpd;

sumpd=0;

}

for(int u=0;u<z;u++)

for(int y=0;y<n;y++)

{

if((strcmpi(F2[u][0],F1[y][0]))==0)

{

if((strcmpi(F2[u][2],tmp2))==0)

{

f3<<F2[u][2]<<"\t"<<F1[y][1]<<"\t"<<F2[u][1]<<"\t" << F2[u][3]<<"\n";

strncpy(F2[u][2],"}",50);

sumpd+=atoi(F2[u][3]);

}

} }

}

f3 << "Общаяя сумма продаж по всем датам: " << sumo << " дисков";

f3.close();

ifstream f7("f3.txt");

in=0;

while(!f7.eof())

{

f7.getline(tmp3,sizeof(tmp3)+1,'\n');

strcpy(F1[0][in],tmp3);

in++;

}

for(int p=0;p<in;p++)

{

m_cod3.AddString(F1[0][p]);

}

}

4