Реферат

Реферат Философия науки 5

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 22.11.2024



Чувашский государственный университет им. И.Н.Ульянова

Факультет информатики и вычислительной техники

Кафедра вычислительной техники

Пояснительная записка к курсовой работе

по дисциплине

«Объектно-ориентированное программирование»


Выполнил:

студент группы ИВТ- 42-08

Кузнецов Алексей Петрович
Руководитель:

кандидат технических наук, доцент Обломов Игорь Александрович


Чебоксары 2011

Оглавление


Задание на курсов
ую работу

Разработать информационно-поисковую систему «Абитуриент»

Курсовой работу необходимо реализовать в виде системы взаимодействующих модулей, а само проектирование выполнить в несколько последовательных этапов.

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

Кризис программного обеспечения привел к необходимости создания нового способа создания программ, который снижал бы общие затраты на протяжении всего цикла программы, – от замысла до завершения эксплуатации. Такая технология появилась в начале 70-х годов и была названа структурным программированием. В его основе лежит сочетание теории программирования и личного опыта высококвалифицированных программистов, а также учет современных требований к программам и промышленного характера их производства.

Структурное программирование – это технология создания программ, позволяющая путем соблюдения определенных правил уменьшить время разработки и количество ошибок, а также облегчить возможность модификации программы. Структурный подход охватывает все стадии разработки проекта: спецификацию, проектирование, собственно программирование и тестирование.

Структурный подход к программированию позволил успешно создавать достаточно крупные проекты, но сложность программного обеспечения продолжала возрастать, и требовались все более развитые средства ее преодоления. Идеи структурного программирования получили свое дальнейшее развитие в объектно-ориентированном программировании (ООП) – технологии, позволяющей достичь простоты структуры и управляемости очень крупных программных систем.

Целью курсовой работы является углубление и закрепление теоретических знаний, навыков практического применения основных принципов объектно-ориентированных систем: наследования, инкапсуляции, полиморфизма, а также формирование новых взглядов на процессы программирования с учетом абстракции данных.

1. Постановка задачи
Требуется разработать программу, обеспечивающую хранение и обработку данных указанного типа. Должны быть реализованы типовые действия, включающие в себя:

  • включение нового элемента;

  • удаление элемента;

  • корректировка элемента;

  • сохранение изменений в базу данных.

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

Взаимодействие пользователя с программой осуществляется через меню.

2. Анализ задания

2.1. Методы решения
В системе «Абитуриент» существуют две сущности – «Абитуриент» и «ВУЗ». Главная проблема разработки системы – определение связи между этими сущностями1.



Объект А содержит данные об абитуриенте:

  • ФИО

  • Дата рождения

  • Серия и номер паспорта

  • Баллы за экзамен

Объект ВУЗ содержит данные о ВУЗе, в которую желает поступить абитуриент:

  • Название ВУЗа

  • Название факультета

  • Название специальности

  • Проходной балл(сумма)

Идея 1 метода решения поставленной задачи состоит в том, чтобы отдельно организовать объекты А и В. В этом случае необходимо программно организовать взаимодействие между объектами, на что потратится кучу времени, но не будет никаких конфликтов между ними.

В основе 2 метода лежит объединение объектов А и В в один – АВ. В этом случае база данных будет в ненормальной форме, но, по сравнению с первым методом решения, необходимость во взаимодействии объектов А и В отпадает, что достаточно облегчит задачу.

В силу очевидных превосходств2 между методами в курсовой работе будет рассматриваться 2 метод решения поставленной задачи.


2
.2. Подробный анализ выбранного метода решения

Объединив два объекта – Абитуриент и ВУЗ – в один.

Рассмотрим объект ВУЗ. В общем случае иерархия объекта будет иметь следующий вид:



Из рисунка видно, что необходимо создать базовый класс ВУЗ, наследник класса ВУЗ – Факультет и наследник класса Факультет – Специальность.

Поля класса решения поставленной задачи LIST и Абитуриент:



Все методы класса LIST – возможности системы Абитуриент: добавление, изменение, удаление записи, сохранение и т.д. Такой метод решения позволяет значительно уменьшить время разработки и количество ошибок, а также облегчить модификацию программы.

3
. Описание классов и структур


Класс Факультет:

class Faculty

{

public:

char nameFaculty[15];

public:

void SetParam(char *name);

void Print();

};

Класс Специальность:

class Speciality: public Faculty

{

public:

char nameSpeciality[15];

int sumBalls;

public:

void SetParam(char *nameF, char *nameS, int sumBalls);

void Print();

void PrintBalls()

};

Структура ФИО:

struct sfio

{

char surname[15];

char name[15];

char father[15];

};

Структура ДатаРождения:

struct sdr

{

int day;

int month;

int year;

};

Структура Абитуриент:

struct Abiturient

{

public:

bool deleted;

Speciality speciality;

sfio fio;

sdr dr;

int balls[5];

char pasport_s[4];

char pasport_n[6];

public:

const Abiturient& operator = (const Abiturient &abit);

void Print();

};

Класс LIST:

class List

{

private:

int count;

Abiturient list[10];

public:

List()

{

count=0;

for(int i=0;i<10; i++) list[i].deleted=false;

};

void ReadData(char *name);

void SaveData(char *name);

void PrintList(void);

void AddRecord();

void DelRecord();

void ChangeRecord();

void RestoreRecord();

};


4. Основные алгоритмы методов класса LIST

4.1. Чтение данных



4.2. Добавление записи




4.3. Удаление записи



4.4. Сохранение изменений




5. Результат работы программы
При запуске программы появляется меню со следующим списком действий:

I N F O R M A T I O N S E A R C H S Y S T E M

A B I T U R I E N T

- MENU --------------------------------------------

F1 - About

L - Print list

A - Add record to list

C - Change record

D - Delete record of list

R - Restore deleted record

S - Save list

ESC - Exit

---------------------------------------------------


Вывод списка абитуриентов(L):

- LIST --------------------------------------------

- 1 --------------------------------------------

FIO: Kuznetsov Alexey Petrovich

DR: 2.6.1991

Passport: 9704 352216

Balls: 81 77 75 0 0

Faculty: IVT

Speciality: Speciality

- 2 --------------------------------------------

FIO: Averkiev Aleksandr Vitalievich

DR: 17.7.1991

Passport: 9704 332211

Balls: 80 80 80 0 0

Faculty: IVT

Speciality: PO

---------------------------------------------------


Добавление нового абитуриента(A):

- NEW RECORD --------------------------------------

- SOURNAME : Petrov

- NAME : Aleksandr

- FATHERNAME : Alekseevich

- BIRTH DAY : 12

- BIRTH MONTH : 2

- BIRTH YEAR : 1989

- PASPORT S : 1212

- PASPORT N : 121212

- BALLS :

Ball[1]: 67

Ball[2]: 83

Ball[3]: 88

Ball[4]: 0

Ball[5]: 0

- FACULTY : IVT

- SPECIALITY : PO

- SUM BALLS : 217

The record 6 added...

---------------------------------------------------

Изменение записи:

- CHANGE RECORD -----------------------------------

- ENTER NUMBER: 6

- CHANGE RECORD 6 --------------------------------


- SOURNAME (Petrov): Petrov

- NAME (Aleksandr): Aleksey

- FATHERNAME (Alekseevich): Petrovich

- BIRTH DAY (12): 12

- BIRTH MONTH(2): 2

- BIRTH YEAR (1989): 198

- PASPORT S (1212121212): 1212

- PASPORT N (): 121212

- BALLS :

Ball[1] (67): 12

Ball[2] (83): 12

Ball[3] (88): 12

Ball[4] (0): 12

Ball[5] (0): 12

- FACULTY (IVT): 12

- SPECIALITY (PO): 12

- SUM BALLS (217): 12

The record 6 changed...

---------------------------------------------------

Вывод


Мною решена задача проектирования и написания программы система «Абитуриент» с применением основных принципов объектно-ориентированного программирования.

В этой задаче очень много данных и деталей, которые сложно удержать в голове, поэтому возникла необходимость обратиться к методам повышения абстракции с целью упростить структуру данных, что позволило управлять большим объемом информации.

Благодаря тому, что программа системы представляется в терминах поведения объектов, при программировании использовались понятия, более близкие к предметной области, следовательно, программа легче читается и понимается. Это является большим преимуществом ООП.

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

Список использованной литературы

  1. Т.А.Павловская. С/С++ Программирование на языке высокого уровня. 2009.

  2. Шилдт, Герберт. Полный справочник по С, 4-е издание.: Пер. с анг.- М.:

Вильямс, 2005.
Приложение

faculty.h:

class Faculty

{

public:

char nameFaculty[15];

public:

void SetParam(char *name);

void Print()

{

printf("\tFaculty: %s\n",this->nameFaculty);

};

};

class Speciality: public Faculty

{

public:

char nameSpeciality[15];

int sumBalls;

public:

void SetParam(char *nameF, char *nameS, int sumBalls);

void Print()

{

Faculty::Print();

printf("\tSpeciality: %s\n",nameSpeciality);

};

void PrintBalls()

{

printf("\t%d",sumBalls);

}

};

abiturient.h

#include "faculty.h"

struct sfio

{

char surname[15];

char name[15];

char father[15];

};

struct sdr

{

int day;

int month;

int year;

};

struct Abiturient

{

public:

bool deleted;

Speciality speciality;

sfio fio;

sdr dr;

int balls[5];

char pasport_s[4];

char pasport_n[6];

public:

const Abiturient& operator = (const Abiturient &abit)

{

if (&abit == this) return *this;

for(int i=0; i<5; i++) this->balls[i]=abit.balls[i];

this->speciality.SetParam((char *)abit.speciality.nameFaculty,

(char *)abit.speciality.nameSpeciality,

abit.speciality.sumBalls);

strcpy(this->fio.father,abit.fio.father);

strcpy(this->fio.name,abit.fio.name);

strcpy(this->fio.surname,abit.fio.surname);

this->dr.day=abit.dr.day;

this->dr.month=abit.dr.month;

this->dr.year=abit.dr.year;

strcpy(this->pasport_n,abit.pasport_n);

strcpy(this->pasport_s,abit.pasport_s);

return *this;

};

void Print()

{

printf("\tFIO: %s %s %s\n",fio.surname,fio.name,fio.father);

printf("\tDR: %d.%d.%d\n",dr.day,dr.month,dr.year);

printf("\tPassport: ");

for(int i=0;i<4; i++) printf("%c",pasport_s[i]);

printf(" %s\n",pasport_n);

printf("\tBalls: ");

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

printf("%d ",balls[i]);

printf("\n");

speciality.Print();

};

};

list.h

#include "abiturient.h"

class List

{

private:

int count;

Abiturient list[10];

public:

List()

{

count=0;

for(int i=0;i<10; i++) list[i].deleted=false;

};

void ReadData(char *name);

void SaveData(char *name);

void PrintList(void);

void AddRecord();

void DelRecord();

void ChangeRecord();

void RestoreRecord();

};

proc.cpp

#include

#include

#include

#include

#include "list.h"

void Faculty::SetParam(char *name)

{

strcpy(nameFaculty,name);

};

void Speciality::SetParam(char *nameF,char *nameS,int sumBalls)

{

Faculty::SetParam(nameF);

strcpy(nameSpeciality,nameS);

this->sumBalls=sumBalls;

}

void List::ReadData(char *name)

{

const int dl=125;

char s[dl];

int i=0,sumBalls;

char faculty[15];

char speciality[15];

FILE *_f;

_f = fopen(name,"r");

while (fgets(s,dl,_f))

{

int pos=0;

int j=0;

while(s[pos+j]!=' ')

{list[count].fio.surname[j]=s[pos+j];j++;}

list[count].fio.surname[j]='\0';

pos+=sizeof(list[count].fio.surname)+1;j=0;

while(s[pos+j]!=' ')

{list[count].fio.name[j]=s[pos+j];j++;}

list[count].fio.name[j]='\0';

pos+=sizeof(list[count].fio.name);j=0;

while(s[pos+j]!=' ')

{list[count].fio.father[j]=s[pos+j];j++;}

list[count].fio.father[j]='\0';

pos+=sizeof(list[count].fio.father);

list[count].dr.day = atoi(&s[pos]);

pos+=3;

list[count].dr.month=atoi(&s[pos]);

pos+=3;

list[count].dr.year=atoi(&s[pos]);

pos+=5;

for(j=0;j<4;j++)

list[count].pasport_s[j]=s[pos+j];

list[count].pasport_s[j]='\0';

pos+=5;

for(j=0;j<6;j++) list[count].pasport_n[j]=s[pos+j];

list[count].pasport_n[j]=0;

pos+=7;

for(int k=0; k<sizeof(list[count].balls)/4; k++)

list[count].balls[k]=atoi(&s[pos+3*k]);

pos+=15;

for(j=0;j<sizeof(faculty);j++)

faculty[j]=s[pos+j];

j--;

while (faculty[j]==' ')

j--;

j++;

faculty[j]='\0';

pos+=sizeof(faculty)+1;

for(j=0;j<sizeof(speciality);j++)

speciality[j]=s[pos+j];

j--;

while (speciality[j]==' ')

j--;

j++;

speciality[j]='\0';

pos+=sizeof(speciality)+1;

sumBalls=atoi(&s[pos]);

pos+=1;

this->list[count].speciality.SetParam(faculty,speciality,sumBalls);

count++;

}

count--;

fclose(_f);

}

void List::AddRecord()

{

Abiturient abit;

printf("- NEW RECORD --------------------------------------");

printf("\n - SOURNAME : ");scanf("%s",abit.fio.surname);

printf(" - NAME : ");scanf("%s",abit.fio.name);

printf(" - FATHERNAME : ");scanf("%s",abit.fio.father);

printf(" - BIRTH DAY : ");std::cin>>abit.dr.day;

printf(" - BIRTH MONTH: ");std::cin>>abit.dr.month;

printf(" - BIRTH YEAR : ");std::cin>>abit.dr.year;

printf(" - PASPORT S : ");scanf("%s",abit.pasport_s);

printf(" - PASPORT N : ");scanf("%s",abit.pasport_n);

printf(" - BALLS : \n");

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

{

printf("\tBall[%d]: ",i+1);

std::cin>>abit.balls[i];

};

printf(" - FACULTY : ");scanf("%s",abit.speciality.nameFaculty);

printf(" - SPECIALITY : ");scanf("%s",abit.speciality.nameSpeciality);

printf(" - SUM BALLS : ");std::cin>>abit.speciality.sumBalls;

count++;

this->list[count]=abit;

printf("\tThe record %d added...\n",count+1);

printf("---------------------------------------------------\n");

};

void List::PrintList()

{

printf("- LIST --------------------------------------------\n");

int i=0;

while(i

{

if (!list[i].deleted)

{

printf(" - %d --------------------------------------------\n",i+1);

list[i].Print();

i++;

}

else

i++;

};

printf("---------------------------------------------------\n\n");

};

void List::DelRecord()

{

this->PrintList();

int number;

printf("\n- DELETE RECORD -----------------------------------\n");

printf(" - ENTER NUMBER: ");std::cin>>number;

list[number-1].deleted = true;

printf("\tThe record %d deleted...\n",count+1);

printf("\tPress L for print the new list...\n");

printf("---------------------------------------------------\n");

};

void List::ChangeRecord()

{

this->PrintList();

int number;

printf("\n- CHANGE RECORD -----------------------------------\n");

printf(" - ENTER NUMBER: ");std::cin>>number;

printf("\n- CHANGE RECORD %d --------------------------------\n",number);

printf("\n - SOURNAME (%s): ",list[number-1].fio.surname);scanf("%s",list[number-1].fio.surname);

printf(" - NAME (%s): ",list[number-1].fio.name);scanf("%s",list[number-1].fio.name);

printf(" - FATHERNAME (%s): ",list[number-1].fio.father);scanf("%s",list[number-1].fio.father);

printf(" - BIRTH DAY (%d): ",list[number-1].dr.day);std::cin>>list[number-1].dr.day;

printf(" - BIRTH MONTH(%d): ",list[number-1].dr.month);std::cin>>list[number-1].dr.month;

printf(" - BIRTH YEAR (%d): ",list[number-1].dr.year);std::cin>>list[number-1].dr.year;

printf(" - PASPORT S (%s): ",list[number-1].pasport_s);scanf("%s",list[number-1].pasport_s);

printf(" - PASPORT N (%s): ",list[number-1].pasport_n);scanf("%s",list[number-1].pasport_n);

printf(" - BALLS : \n");

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

{

printf("\tBall[%d] (%d): ",i+1,list[number-1].balls[i]);

std::cin>>list[number-1].balls[i];

};

printf(" - FACULTY (%s): ",list[number-1].speciality.nameFaculty);scanf("%s",list[number-1].speciality.nameFaculty);

printf(" - SPECIALITY (%s): ",list[number-1].speciality.nameSpeciality);scanf("%s",list[number-1].speciality.nameSpeciality);

printf(" - SUM BALLS (%d): ",list[number-1].speciality.sumBalls);std::cin>>list[number-1].speciality.sumBalls;

printf("\tThe record %d changed...\n",number);

printf("---------------------------------------------------\n");

};

void List::RestoreRecord()

{

this->PrintList();

int number;

printf("\n- RESTORE RECORD ---------------------------------\n");

printf(" - ENTER NUMBER: ");std::cin>>number;

list[number-1].deleted = false;

printf("\tThe record %d restored...\n",count+1);

printf("\tPress L for print the new list...\n");

printf("---------------------------------------------------\n");

};

void List::SaveData(char *name)

{

FILE *_f;

_f = fopen(name,"w+");

if(_f == 0)

printf("\tNot open the file %s!\n",name);

else

{

printf("\n- SAVING DATA -----------------------------------\n");

for(int i=0; i<=this->count; i++)

{

if(!list[i].deleted)

{

int pos=sizeof(list[i].fio.surname);

fprintf(_f,"%- 16s%- 15s%- 15s%0.2d %0.2d %0.4d ",

list[i].fio.surname,

list[i].fio.name,

list[i].fio.father,

list[i].dr.day,

list[i].dr.month,

list[i].dr.year);

for(int j=0; j<4; j++)

fprintf(_f,"%c",list[i].pasport_s[j]);

fprintf(_f," %- 7s",list[i].pasport_n);

for(int j=0; j<5; j++)

fprintf(_f,"%0.2d ",list[i].balls[j]);

fprintf(_f,"%- 16s%- 16s%d",

list[i].speciality.nameFaculty,

list[i].speciality.nameSpeciality,

list[i].speciality.sumBalls

);

int count=0;

for(int j=i+1; j<=this->count; j++)

if(!list[j].deleted) count++;

if (count>0) fprintf(_f,"\n");

}

}

}

fclose(_f);

printf("\tThe data are saved...\n");

printf("---------------------------------------------------\n");

}

menu.cpp

#include

void PrintMenu()

{

printf(" I N F O R M A T I O N S E A R C H S Y S T E M\n");

printf(" A B I T U R I E N T\n\n");

printf("- MENU --------------------------------------------\n");

printf("\tF1 - About\n");

printf("\tL - Print list\n");

printf("\tA - Add record to list\n");

printf("\tC - Change record\n");

printf("\tD - Delete record of list\n");

printf("\tR - Restore deleted record\n");

printf("\tS - Save list\n");

printf("\tESC - Exit\n");

printf("---------------------------------------------------\n\n");

};

void PrintHelp()

{

printf("- ABOUT -------------------------------------------\n");

printf("\t............\n");

printf("\t............\n");

printf("\t............\n");

printf("\t............\n");

printf("\t............\n");

printf("---------------------------------------------------\n\n");

};


main.cpp

#include

#include

#include

#include

#include

#include "list.h"

void PrintHelp();

void PrintMenu();

using namespace std;

void main()

{

List list;

list.ReadData("abit2.txt");

//list.PrintList();

char ch=0;

while((int)ch!=27)//ESC

{

system("cls");

PrintMenu();

switch((int)ch)

{

case 59://F1

PrintHelp();

break;

case -92://L

case 108:

list.PrintList();

break;

case -28://A

case 97:

list.AddRecord();

break;

case 100://D

case -94:

list.DelRecord();

break;

case 114:

case -86:

list.RestoreRecord();

break;

case 99://C

case -31:

list.ChangeRecord();

break;

case 115:

case -21:

list.SaveData("abit2.txt");

break;

default:

printf("Key - %d\n", (int)ch);

}

ch = getch();

}

}

1 Далее каждую сущность будем называть объектом

2 Т.к. нормализация базы данных не является целью курсовой работы, то этот недостаток не будем учитывать при выборе оптимального метода решения

1. Реферат Бухгалтерский учёт 21
2. Реферат на тему Метод бухгалтерского учета и бухгалтерского баланса
3. Реферат Летописи как исторический источник и методы их изучения
4. Реферат на тему Star Man
5. Реферат Великая дидактика Я А Каменского
6. Реферат Международные стандарты финансовой отчётности 11
7. Реферат Общие характеристики средств массовой информации 2
8. Реферат Старинные русские обряды
9. Реферат Право и правосудие
10. Реферат Николай Александрович Бердяев