Философия науки. 2
Чувашский
государственный университет
Факультет информатики и вычислительной техники
Кафедра
вычислительной техники
Пояснительная записка к курсовой работе
по дисциплине
«Объектно-ориентированное
программирование»
Выполнил:
студент группы ИВТ- 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...
------------------------------
Вывод
Мною решена задача проектирования и написания программы система «Абитуриент» с применением основных принципов объектно-ориентированного программирования.
В этой задаче очень много данных и деталей, которые сложно удержать в голове, поэтому возникла необходимость обратиться к методам повышения абстракции с целью упростить структуру данных, что позволило управлять большим объемом информации.
Благодаря тому, что
программа системы
Плохо спроектированная иерархия классов приводит к созданию сложных и запутанных программ. Важно до начала проектирования правильно определить, требуется ли вообще применить объектно-ориентированный подход. Применение к этой задаче объектно-ориентированного подхода, по моему мнению, добавила к положительным качествам программы такие пункты, как эффективность, компактность и надежность. Также программа стала хорошо читаемой и легко модифицируемой.
Список
использованной литературы
- Т.А.Павловская. С/С++ Программирование на языке высокого уровня. 2009.
- Шилдт, Герберт. Полный справочник по С, 4-е издание.: Пер. с анг.- М.:
Вильямс,
2005.
Приложение
faculty.h:
class Faculty
{
public:
char nameFaculty[15];
public:
void SetParam(char *name);
void Print()
{
printf("\tFaculty:
};
};
class Speciality: public Faculty
{
public:
char nameSpeciality[15];
int sumBalls;
public:
void SetParam(char *nameF, char *nameS, int sumBalls);
void Print()
{
Faculty::Print();
printf("\
};
void PrintBalls()
{
printf("\t%d",
}
};
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->
(char *)abit.speciality.
abit.
strcpy(this-
strcpy(this-
strcpy(this-
this->dr.
this->dr.
this->dr.
strcpy(this-
strcpy(this-
return *this;
};
void Print()
{
printf("\
printf("\
printf("\
for(int i=0;i<4; i++) printf("%c",pasport_s[i]);
printf(" %s\n",pasport_n);
printf("\
for(int i=0; i<5; i++)
printf
printf("\n")
speciality.
};
};
list.h
#include "abiturient.h"

- Философия науки
- Философия науки
- Философия науки
- Философия науки (2)
- Философия науки 20 века
- Философия науки и техники в процессе человеческого развития и место человека в нем. История как предмет философского исследования
- Философия науки: становление и основные этапы развития
- Философия музыки эпохи нового времени
- Философия Н. А. Бердяева
- Философия народничества
- Философия на Руси
- Философия наука или мировозрение
- Философия - наука, миф или нецерковная религия
- Философия науки