Смекни!
smekni.com

Философия науки 5 (стр. 1 из 2)

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

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

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

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

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

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

Выполнил:

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

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

Руководитель:

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

Чебоксары 2011

Оглавление

Оглавление. 2

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

Введение. 4

1. Постановка задачи. 5

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

2.1. Методы решения. 6

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

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

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

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

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

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

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

5. Результат работы программы.. 12

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

Приложение. 16

faculty.h: 16

abiturient.h. 16

list.h. 17

proc.cpp. 17

menu.cpp. 21

main.cpp. 22


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

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

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


Введение

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

Кризис программного обеспечения привел к необходимости создания нового способа создания программ, который снижал бы общие затраты на протяжении всего цикла программы, – от замысла до завершения эксплуатации. Такая технология появилась в начале 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