Автор: Пользователь скрыл имя, 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
{
if (!strcmp(a[i].faculty, faculty)) // если название факультета совпадает с требуемым
{
ret++;
}
}
return ret;
}
int getEnrolleesWithBigSum(
{
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(
{
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::
#endif
ui.cpp
#include "ui.h"
using namespace std;
// Разделитель данных об абитуриенте
#define DELIMITER "
"
int LoadEnrolleesArrayFromFile(con
{
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::
#endif
enrollee_list.cpp
#include "enrollee_list.h"
int ReadEnrolleesArray(std::
{
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"); // Третье слово - отчество, т.д.
Информация о работе Информационно-поисковая система «Абитуриент»