Информационно-поисковая система «Абитуриент»

НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 

ИНСТИТУТ  РАДИОЭЛЕКТРОНИКИ И  ИНФОРМАЦИОННЫХ

ТЕХНОЛОГИЙ 
 
 
 
 
 
 
 
 

Курсовая  работа 

«Информационно-поисковая система «Абитуриент»» 
 
 
 
 
 
 
 
 
 

                                                Выполнил:

                                                                                             

                                                                                            студент гр.09-ТР-2  Абдуллаев В.Ш. 

                                                 Проверил: 

                                                                                         доц. кафедры ИРС  Сидоров С. Б. 
 
 
 
 
 
 
 
 
 
 
 
 
 

                                                          Нижний Новгород

                                                                    2010 г. 
 
 

                                                              Содержание

1. Введение………………………………………………………………………………….…..3

2. Постановка задачи……………………………………………………………………….…..4

3. Руководство пользователя………………………………………………………...………...5

4. Руководство программиста………………………………………………………...…….…5

   4.1. Метод решения задачи…………………………………………………………………..5

   4.2. Описание функций программы………………………………………………………...6

   4.3. Описание структур……………………………………………………………………....6

   4.4. Спецификация на модули………………………………………………………….……7

   4.5 Алгоритм поиска стран……………………………………………………………….….7

5. Заключение……………………………………………………………………………….…..8

6. Список литературы……………………………………………………………………….….9

7. Приложение………………………………………………………………………………….10

   7.1. Основная программа…………………………………………………………………….10

   7.2. Модуль поиска по атрибутам……………………………………………………..…….12   7.3. Модуль работы работы со списком абитуриентов ……………………...……………...14

   7.4. Модуль вывода списка абитуриентов………………………………………….………15

   7.5. Модуль абитуриент ……………………………………………………………...……...16

    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                                                            1. Введение. 

В данной работе рассматривается создание информационно-поисковой системы с использованием файла для хранения информации.  

Одним  из способов преодоления  сложности  данной  задачи  является использование  технологии разработки программ «сверху-вниз». 

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

В руководстве пользователя объясняются правила пользования программой   и   приводятся   конкретные   примеры  диалога   с пользователем.

 

В   руководстве   программиста   рассматриваются   вопросы  внутренней  организации программ, в том числе её состав модулей и их взаимодействие. 

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

      

В заключении делаются выводы  о полноте решения поставленной задачи. 

В  конце данного  отчёта  приведена  техническая  информация, включающая листинги всех модулей программы.            
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

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

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

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

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

- поиск элементов по значению некоторых атрибутов;

- отбор элементов по значениям некоторых атрибутов.

Одним из требований к разрабатываемой  программной системе является

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

есть  необходимо обновление содержимого  файла при изменении базы данных.

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

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

– Добавление в таблицу нового абитуриента.

– Удаление из таблицы какого-либо абитуриента.

– Изменение данных о абитуриенте.

– Выдать информацию о количестве поступающих на указанный

факультет.

– Выбрать  абитуриентов, сумма баллов которых  превышает указанное

значение.

– Сформировать список фамилий абитуриентов, посещавших

подготовительные  курсы и получивших «неуд» на каком-либо экзамене

при поступлении  на заданный факультет. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

                                              3. Руководство пользователя. 

Чтобы начать работу c системой требуется запустить файл «Enrollee.exe».

После запуска программы на экране появляется меню системы: 

Vvedite variant raboti programmi: 

      0 - pechat vsego spiska abiturientov

      1 - pechat kolichestva abiturientov, postupaushih na opredelennii facultet

      2 - pechat abiturientov s summoi ballov, prevoshodyashih opredelennoe znachenie

      3 - pechat abiturientov s kursov na zadannom facultete, poluchivshih “neud”

      4 - vihod iz programmi

          |> 

При выборе первого  пункта меню на экран выводятся весь список абитуриентов, со всей информацией  о каждом. 

Второй пункт  предназначен для поиска студентов  поступающих на определенный факультет. Для этого следует ввести название факультета. 

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

При выборе четвертого пункта на экран выводится список абитуриентов на заданном факультете и посещавших курсы, получивших «неуд» 

При выборе пятого пункта осуществляется сохранение данных и выход из программы. 
 
 

                                           4. Руководство программиста. 

4.1 Метод решения задачи. 

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

Входными данными  в программе являются:

– файл со список данных («Enrollee.txt »), в котором осуществляется добавление, изменение и удаление информации

– параметры поиска, вводимые с клавиатуры. 

 Выходные  данные:

 –  файл с результатами поиска по заданным параметрам («out.txt»)

 – результаты  поиска по заданным параметрам, отображаемые на экране. 

4.2 Описание функций программы: 

int main(int argc, char *argv[])// Основная функция программы

Enrollee ReadEnrollee(char *str)// Функция получения абитуриента из строки

void PrintEnrolleesArray(std::ostream &output, EnrolleesArray a, int n);//Функция записи списка в поток;

void SaveEnroleesArrayToFile(const char *filename, EnrolleesArray a, int n); //Функция сохранения информации в файл

int LoadEnrolleesArrayFromFile(const char *filename, EnrolleesArray &a); // Функция чтения информации из файла

int getEnrolleesWithBigSum(EnrolleesArray a, int n, int sum, EnrolleesArray out); // Функция получения  информации о абитуриентах с суммой баллов выше заданного значения

int getNumberOfEnrollees(EnrolleesArray a, int n, const char *faculty);  // Функция получения количества поступающих на заданный факультет

int getLazyEnrollees(EnrolleesArray a, int n, const char *faculty, EnrolleesArray out);// Функция получения информации о абитуриентах получивших неуд и посещавших неуд на заданном факульетте 

4.3 Описание структур: 

struct Enrollee                                                 //структура информация о абитуриенте

{

    char firstname[STRING_LENGTH];

    char lastname[STRING_LENGTH];

    char patronymic[STRING_LENGTH]; 

    char sex[STRING_LENGTH]; 

    char birthdate[STRING_LENGTH];   

    char faculty[STRING_LENGTH];

    int school;

   

    char courses[STRING_LENGTH]; 

    int exams[EXAMS_N];

}; 

Структура “Enrollee” содержит в себе 9 полей. firstname – имя абитуриента, lastname –фамилия абитуриента, patronymic – отчество, sex – пол, birthdate – дата рождения, faculty – факультет, school – номер школы, courses – посещение курсов, exams – оценки за экзамены( 3 экзамена). 

 

4.4 Спецификация на модули. 

Программа состоит  из 5 модулей, назначение каждого из которых приведено ниже:

1. main.cpp – основной модуль программы;

2. analyse.h, analyse.cpp – содержит функции необходимые для поиска по атрибутам;

3. ui.h, ui.cpp– содержит основные функции для вывода списков.

4. enrollee_list.h, enrollee_list.cpp – содержит описание структуры и базовой функциональности.

5. enrollee.h, enrollee.cpp – содержит описание структуры. 
 
 
 
 

Модульная структура программы: 
 

 

 
 

 

 

 
 
 
 
 

                                         

                                                   

4.5 Алгоритм поиска абитуриентов с заданного факультета, сумма баллов которых больше заданного значения. 

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

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

                                                      

  
 
 
 
 
 
 
 
 
 

5. Заключение. 

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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

         
 
 
 
 
 
 
 
 
 
 
 

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

1. Керниган, Брайан У., Ритчи, Деннис М. Язык  программирования С, 2-е

издание.: Пер. с анг.- М.: Вильямс, 2006.

2 .С.А.  Орлов. Технологии разработки  программного обеспечения. Учебное

пособие. 2-е изд. – СПб.: Питер, 2003. – 480 с.: ил.

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

Вильямс, 2005.

4. Борисенко  В.В. Основы программирования  – Интернет-университет

информационных  технологий – ИНТУИТ.ру, 328 стр. – 2005 г.

5 .Костюкова  Н.И., Калинина Н.А. Язык Си и  особенности работы с ним –

Интернет-университет  информационных технологий – ИНТУИТ.ру, 208 стр. –

2006 г.

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

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

7.1 Основная программа.

main.cpp 

#include <iostream>

#include "ui.h"

#include "analyse.h" 

using namespace std; 

int main(int argc, char *argv[])

{

    EnrolleesArray a = NULL;

    int n = LoadEnrolleesArrayFromFile("enrollees.txt", a);

    EnrolleesArray out = new Enrollee[n];

   

    ofstream outfile("out.txt"); 

    int x = 0;

    while (x != 4)

    {

        cout << "Vvedite variant raboti programmi\n \

0 - pechat vsego spiska abiturientov\n \

1 - pechat kolichestva abiturientov, postupaushih na opredelennii facultet\n \

2 - pechat abiturientov s summoi ballov,prevoshodyashih opredelennoe znachenie\n \

3 - pechat abiturientov s kursov na zadannom facultete, poluchivshih \"neud\"\n \

4 - vihod iz programmi\n  |> ";

  

        cin >> x; 

        switch (x)

        {

        case 0:

            {

                PrintEnrolleesArray(cout, a, n);

                break;

            }

        case 1:

            {

                cout << "Vvedite interesuushii vas facultet"<<endl;

                char faculty[STRING_LENGTH];

                cin >> faculty;

                cout << endl;

                cout << getNumberOfEnrollees(a, n, faculty);

                outfile << getNumberOfEnrollees(a, n, faculty) << "\n" << endl;

                break;

            }       

         
 
 
 
 
 
 
 
 

        case 2:

            {

                cout << "Vvedite minimalnoe znachenie summi ballov"<<endl;

                int sum;

                cin >> sum;

                cout << endl;               

                int nn = getEnrolleesWithBigSum(a, n, sum, out);

                PrintEnrolleesArray(cout, out, nn);   

                PrintEnrolleesArray(outfile, out, nn);

                outfile << endl;

                break;

            }

        case 3:

            {

                cout << "Vvedite interesuushii vas facultet"<<endl;

                char faculty[STRING_LENGTH];

                cin >> faculty;

                cout << endl;               

                int nn = getLazyEnrollees(a, n, faculty, out);

                PrintEnrolleesArray(cout, out, nn);

                PrintEnrolleesArray(outfile, out, nn);

                outfile << endl;

                break;

            }

        }

        cout << "\n" << endl;

    } 

    // Освобождение памяти

    delete [] a;

    delete [] out; 

    outfile.close(); 

    return 0;} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

7.2 Модуль поиск по абитуриентам. 

analyse.h 

#ifndef __ANALYSE_H

#define __ANALYSE_H 

#include "enrollee_list.h" 

// Формирование требуемых списков 

int getNumberOfEnrollees(EnrolleesArray a, int n, const char *faculty);  // Количество поступающих на заданный факультет

int getEnrolleesWithBigSum(EnrolleesArray a, int n, int sum, EnrolleesArray out); // Абитуриенты с суммой баллов выше заданного значения

int getLazyEnrollees(EnrolleesArray a, int n, const char *faculty, EnrolleesArray out); // Абитуриенты, получившие неуд и посещавшие курсы на заданном факультете 

#endif 
 

analyse.cpp 

#include "analyse.h" 

int getNumberOfEnrollees(EnrolleesArray a, int n, const char *faculty)

{

    int ret = 0;

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

Информационно-поисковая система «Абитуриент»