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

Автор: Пользователь скрыл имя, 14 Января 2011 в 02:17, курсовая работа

Описание работы

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

Содержание

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 файл

курсовая работа.doc

— 108.50 Кб (Скачать)

    {

        if (!strcmp(a[i].faculty, faculty)) // если название факультета совпадает с требуемым

        {

            ret++;

        }

    }

    return ret;

} 

int getEnrolleesWithBigSum(EnrolleesArray a, int n, int sum, EnrolleesArray out)

{

    int ret = 0;

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

    {

        int s = 0;

        for (int j = 0; j<EXAMS_N; j++) //подсчет суммы баллов i-го абитуриента

        {

            s += a[i].exams[j];

        }

        if (s > sum) // если сумма баллов превышает заданное значение

        {

            out[ret++] = a[i]; //добавить в результирующий список

        }

    }

    return ret;

} 
 

int getLazyEnrollees(EnrolleesArray a, int n, const char *faculty, EnrolleesArray out)

{

    int ret = 0;

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

    {

        int s = 0;

        if ( (!strcmp(a[i].courses, "YES")) && (!strcmp(a[i].faculty, faculty))) // если посещал курсы и поступает на заданный факультет

        {

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

            {           

                if (a[i].exams[j] == 2) s = 1; //если получил неуд за какой либо из экзаменов, значение s становится отличным от 0

            }

        }

        if (s != 0)

        {

           out[ret++] = a[i];

        }

    }

    return ret;

} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

ui.h 

#ifndef __ENROLLEE_LIST_H

#define __ENROLLEE_LIST_H 

#include "enrollee.h"

#include <iostream> 

typedef Enrollee *EnrolleesArray; 

int ReadEnrolleesArray(std::istream &input, EnrolleesArray &a); // Прочитать список абитуриентов из входного потока 

#endif 

ui.cpp 

#include "ui.h" 

using namespace std; 

// Разделитель  данных об абитуриенте

#define DELIMITER " "  

int LoadEnrolleesArrayFromFile(const char *filename, EnrolleesArray &a)

{   

    ifstream input(filename);

    int n = ReadEnrolleesArray(input, a);

    input.close();

    return n;

} 

void SaveEnroleesArrayToFile(const char *filename, EnrolleesArray a, int n)

{

    ofstream output(filename);

    PrintEnrolleesArray(output, a, n);

    output.close();

} 

void PrintEnrolleesArray(ostream &output, EnrolleesArray a, int n)

{

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

    {

        output << a[i].firstname  << DELIMITER;

        output << a[i].lastname   << DELIMITER;

        output << a[i].patronymic << DELIMITER;

        output << a[i].sex        << DELIMITER;

        output << a[i].birthdate  << DELIMITER;

        output << a[i].faculty    << DELIMITER;

        output << a[i].school     << DELIMITER;

        output << a[i].courses    << DELIMITER;

       

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

        {

            output << a[i].exams[j] << DELIMITER;

        } 

        output << endl;

    }

} 

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

enrollee_list.h 

#ifndef __ENROLLEE_LIST_H

#define __ENROLLEE_LIST_H 

#include "enrollee.h"

#include <iostream> 

typedef Enrollee *EnrolleesArray; 

int ReadEnrolleesArray(std::istream &input, EnrolleesArray &a); // Прочитать список абитуриентов из входного потока 

#endif  

enrollee_list.cpp 

#include "enrollee_list.h" 

int ReadEnrolleesArray(std::istream &input, EnrolleesArray &a)

{   

    char str[STRING_LENGTH*9];

    input.getline(str, STRING_LENGTH*9);

    int n = atoi(str); // Количество абитуриентов

    a = new Enrollee[n]; 

    for (int i = 0; (!input.eof()) && (i<n); i++)

    {

        char str[STRING_LENGTH*9];

        input.getline(str, STRING_LENGTH*9);

        a[i] = ReadEnrollee(str); // Создать структуру Абитуриент по очередной строке из файла

    }

    return n;

}                                         
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

enrollee.h 

#ifndef __ENROLLEE_H

#define __ENROLLEE_H 

#define STRING_LENGTH 30

#define EXAMS_N 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 ReadEnrollee(char *str); // Создать структуру Абитуриент по строке 

#endif                                                              
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

enrollee.cpp 

#include "enrollee.h"

#include "string.h"

#include <stdlib.h> 

Enrollee ReadEnrollee(char *str)

{   

    char *pch;

    Enrollee ret; // Возвращаемая структура

    int i; 

    pch = strtok (str," \t");    // Первое слово - имя

    if (pch == NULL) return ret;

    strcpy(ret.firstname, pch); 

    pch = strtok (NULL," \t");   // Второе слово - фамилия

    if (pch == NULL) return ret;

    strcpy(ret.lastname, pch); 

    pch = strtok (NULL," \t");   // Третье слово - отчество, т.д.

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