Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа(Городилов).doc
Скачиваний:
11
Добавлен:
17.09.2019
Размер:
474.62 Кб
Скачать

Тема 2. «Разработка приложения для Windows, представляющего собой модель базы данных по успеваемости студентов».

2.1. Введение.

Задание на курсовую работу по дисциплине «Программирование и основы алгоритмизации».

Студент группы УТСб-11-1 Городилов Антон Павлович.

Направление «Управление в технических системах»

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

Условие задачи: Описать структуру с именем STUDENT с полями: NAME – фамилия и инициалы; GROUP – номер группы; SES – успеваемость (массив из 5 элементов). Написать программу, выполняющую следующие действия:

  • ввод с клавиатуры данных в массив STUD1, состоящий из 10 структур типа STUDENT; записи упорядочиваются по алфавиту;

  • вывод фамилий и номеров групп студентов, имеющих хотя бы одну оценку 2;

  • вывод соответствующего сообщения, если таковых студентов нет.

Задание выдано: Мосягина Н.А. « » ________ 2012 года. Подпись ______.

2.2. Назначение и область применения.

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

2.3. Технические характеристики.

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

  2. Программа в основном состоит из процедур: процедура добавления данных, процедура вывода, процедура сортировки, процедура вывода студентов имеющих «двойки».

  3. Входные данные находятся в файле, также их можно добавить в файл из клавиатуры, выход идет на окно модуля CRT.

  4. Программа работает на любой ОС, на которой работает pascal abc, например windows 7 x64, среда разработки – pascal abc.

    1. Р 1. 2. Азработка программы.

1. Заголовок окна модуля crt.

2. Рабочая область, на которой выводится и вводится вся необходимая информация.

3.2. Спецификация программы.

Обозначение

Наименование

Примечание

Student'S.pas

Файл проекта

Основная программа, написанная с помощью процедур

Module.pas

Модуль с процедурами

Находится в той же папке, что и программа

CRT

Библиотечный файл

Обеспечивает работу с экраном

3.3. Текст программы.

Файл Student'S.pas.

uses crt,module;

var base:file of student; filename:string[30]; a:string; //объявляем файл, имя файла и переменную в которой будет храниться ответ пользователя

begin

filename:='students.txt';

writeln('Записать заново базу данных?(да/нет)');

read(a);

if a='да' then Bvod(base,filename); //проверяем ответ пользователя, если согласен то запускается процедура ввода данных

sortirovka(base,filename); //сортировка записей в файле

Byvod(base,filename); //процедура вывода всего списка

Byvod2(base,filename); //процедура вывода студентов с "двойками"

end.

Модуль Module.pas

unit module;

interface

uses crt;

type student=record

name:string; //поле с именем

group:integer; //поле с номером группы

ses:array[1..5] of integer; //после с массивом, в котором хранятся 5 оценок

end;

procedure Bvod(var x:file of student;xfilename:string); //процедура ввода

procedure Byvod(x:file of student;xfilename:string); //процедура вывода

procedure sortirovka(var x:file of student;xfilename:string); //процедура сортировки

procedure Byvod2(x:file of student;xfilename:string); //процедура вывода "двоечников"

implementation

{Ввод 10 студентов}

procedure Bvod(var x:file of student;xfilename:string);

var buffer:student; i,j:integer; //объявляем буффер, и две целые переменные для цикла

begin

assign(x,xfilename);

rewrite(x);

for i:=1 to 10 do

begin

writeln('#',i,' Введи имя');

read(buffer.name); //ввод имени

writeln('Группа');

read(buffer.group); //ввод группы

writeln('Введите 5 оценок');

for j:=1 to 5 do //цикл ввода оценок

read(buffer.ses[j]); //ввод оценки

write(x,buffer); //добаление введенного элемента в файл

end;

close(x);

end;

{Вывод списка студентов}

procedure Byvod(x:file of student;xfilename:string);

var buffer:student; i:integer; //объявляем буффер и целую для цикла

begin

writeln('Все студенты');

assign(x,xfilename);

reset(x);

while not eof(x) do

begin

read(x,buffer); //чтение одного элемента о студенте

write('Имя: ',buffer.name); //вывод на экран имени

write(' Группа: ',buffer.group); //вывод на экран группы

write(' Оценки: '); //цикл вывода оценок

for i:=1 to 5 do

write(' ',buffer.ses[i],' '); //вывод оценки и пробела после нее

writeln();

end;

close(x);

end;

{Сортировка элементов по именам}

procedure sortirovka(var x:file of student;xfilename:string);

var a: array[1..10] of student; i,j:integer; buffer:student; buf:string; //объявляем массив типа student для проведения в нем сортировки, две целые для циклов, буффер и строку для чтения имени

begin

assign(x,xfilename);

reset(x);

for i:=1 to 10 do //цикл заполения массива элементами из файла

begin

read(x,buffer); //чтение элемента файла

a[i]:=buffer; //присваивание элементу массива значение элемента файла

end;

close(x);

{сортировка пузырьком по записи "name"}

for i:=1 to 9 do

for j:=i+1 to 10 do

if a[i].name>a[j].name then

begin

buffer:=a[i];

a[i]:=a[j];

a[j]:=buffer;

end;

{перезапись файла отсортированными элементами}

rewrite(x);

for i:=1 to 10 do

write(x,a[i]);

close(x);

end;

{Процедура вывода "двоечников"}

procedure Byvod2(x:file of student;xfilename:string);

var proverka:boolean; buf:student; i,j:integer; //объявляем флажок, буффер и дфе целые для циклов

begin

proverka:=true; //флаг изначально равен истине, что значит "двоечников не было найдено"

writeln('Студенты с двойками:');

assign(x,xfilename);

reset(x);

for i:=1 to 10 do //цикл перебора всех записей в файле

begin

read(x,buf); //чтение в буффер

for j:=1 to 5 do //цикл перебора оценок

begin

if buf.ses[j]= 2 then //если найдена двойка, то выводится имя и группа

begin

write(buf.name);

write(' группа:',buf.group);

writeln(); //перенос строки (формирует список)

proverka:=false; //флаг "ложь", что значит двоечник был

break;

end;

end;

end;

if proverka then writeln('Таких студентов нет!'); //если флаг истина (что значит "двоечников" нет), то выводится соответствующая запись

close(x);

end;

end.

3.4. Описание программы.

3.4.1.Общие сведения.

Название программы – «Student'S». Для нормального функционирования программы требуется Pascal abc. Программа написана на языке программирования pascal.

3.4.2. Функциональное назначение.

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

3.4.3. Описание логической структуры.

В программе используется один тип – student, состоящий из полей: name – Ф.И.О. Студента, group – группа, массив ses (5 элементов) — 5 оценок. В программе есть также процедуры: Bvod (переписывает базу данных), Byvod (выводит на экран список с записями), sortirovka (сортирует записи в файле по именам студентов), Byvod2 (выводит на экран записи, у которых есть двойки).

3.4.4. Используемые технические средства.

Для создания программы был использован компьютер на базе процессора Intel i7-2600K, RAM DDR-3 4096Mb, HDD 500Gb (SATA-2), NVIDIA GeForce GTX 580 1284 Mb с ОС Windows 7 x64 Ultimate.

Минимальные системные требования: процессор не ниже Pentium MMX(266MHz), 64Mb RAM, 1 Mb Видеопамяти, около 10 Mb свободного места на диске с установленным pascal abc.

3.4.5. Вызов и загрузка.

Для запуска программы необходимо запустить файл Student'S.pas с помощью pascal abc.

3.4.6. Входные данные.

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

3.4.7. Выходные данные.

Список с записями, а также студенты с двойками выводятся на окно CRT. Также информация сохраняется в файл students.txt.

3.5. Тестирование программы.

1. При открытии файла программа выдает запрос о перезаписи базы данных:

1.1. Если ответить нет, то будет выведена база студентов и выведены двоечники:

П рограмма завершается.

1.2. Если ответить да, то начнется процедура ввода данных о студентах:

И так далее пока не будет введено 10 записей:

1.2.1 Если среди студентов были двоечники, то программа выведет их на экран:

П рограмма завершается.

1.2.2. Если среди студентов нет двоечников, то программа напишет об этом:

П рограмма завершается.

Литература.

1.http://forexaw.com/TERMs

2. Лекции по программированию и основам алгоритмизации, Мосягина Н. А. 2012 г.

2. Встроенный справочник в pascal abc.

3. Раздел помощи «примеры» в pascal abc.