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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

МОСКОВСКАЯ АКАДЕМИЯ ПРЕДПРИНИМАТЕЛЬСТВА

ПРИ ПРАВИТЕЛЬСТВЕ МОСКВЫ

Сургутский филиал

















Контрольная работа

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



Выполнил: Чернобровкин Виталий Викторович

Специальность: Прикладная информатика в экономике

Проверил: Анисимов Валерий Алексеевич

















г. Сургут, 2009 г.


1. Техническое задание на объект автоматизации



1.1 Общие сведения



Исполнительный файл (программа) написанная на высокоуровневом языке программирования “Delphi”, представляющая собой графический интерфейс в виде кнопочной формы. 

Заказчик: Руководитель кафедры информационных технологий к. т. н. Анисимов В. А.

Разработчик: Чернобровкин Виталий Викторович студент 5-го курса МосАП, г Сургут.

Исполнительный файл (программа), разрабатывается согласно ГОСТ 34-602-89 ИТ.

Срок начало работы по созданию программы: 7.03.2009.

Окончание работы 21. 04. 2009

Порядок оформления и предъявления заказчику результатов работ по созданию системы (ее частей), по изготовлению и наладке: 1) демонстрация программы в приложении PowerPoint написанной с помощью ВЯП “Delphi”.



1.2 Назначение программы



Автоматизация приложения мини - СУБД. Автоматизированная выборка данных. Упрощение переработки информации при использовании СУБД. Так как, обработка бумажной документации в ручную долговременный и затратный труд.




1.3 Цель создания



Демонстрация знаний в изучении ВЯП “Delphi”, навыков в работе с данным языком программирования. Изучение и закрепление знаний в ЕСПД (ГОСТ 19.001-77 и т.д. по порядку) 



1.4 Объекты автоматизации



АРМ секретаря учебно-методического кабинета. В программное обеспечение ПК секретаря входит Операционная система Windows XP Professional.



1.5 Требования к численности и квалификации персонала



Квалификация пользователей должна быть на уровне “уверенного пользователя”. Т.е. пользователь должен уверенно разбираться и работать в СУБД написанной на ВЯП “Delphi”.



1.6 Требования к защите информации



Конфиденциальная информация и доступ к базе данных должен содержать пароль. (К данной программе такое требование не нужно).



1.2 Требования к видам обеспечения



1.2.1 Лингвистическое обеспечение

Представляет собой языки программирования на которых пишется программа т.е. ВЯП – “Delphi”.


1.2.2 Информационное обеспечение

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

Информационный обмен между данными должен быть как последовательным, так и выборочным

Рекомендуемые технические средства и операционная система: ПЭВМ типа IBM PC и ОС Microsoft Windows. Рекомендуемая СУБД – “Delphi”



1.2.3 Программное обеспечение

Для разработки формы применялась программа написанная на ВЯП “Delphi”.



1.3 Состав и содержание работ



Таблица 2.1

№п/п

Наименование работы

Результат работы

1

ТЭО

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

2

Построение алгоритма

Основа написания программы

3

Написание программы

Основной листинг программы

4

Прогонка программы

Анализ и выявление ошибок

5

Отладка программы

Устранение синтаксических и семантических ошибок

6

Ввод в эксплуатацию

Работа с программой 




2. Программа и методика испытаний



Согласно ЕСПД ГОСТ 19.301-79 содержит следующие разделы: 



2.1 Объект испытаний 



Программа – исполнительный файл, по сущности – графический интерфейс СУБД, кнопочная форма.



2.2 Цель испытаний



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



2.3 Требования к программе



Данная программа должна иметь четкую, последовательную, легковоспринимаемую организованную структуру. Простейшую Базу данных. Слаженно и бесперебойно функционировать: с помощью нажатия кнопок в интерфейсе формы, показывать информацию согласно текстовому заданию для данной задачи (программы) см. ниже. 

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

Программа должна выводить информацию согласно введенным для нее требованиям.

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

Если в программе имеется особая или секретная информация, то она должна иметь код доступа (пароль). В данной программе таковой информации нет. 


2.4 Требования к программной документации



Состав и структура программного документа устанавливается по ГОСТ 19.105-78. Программный документ выполняют одним из следующих печатных способов: 

машинописным - на одной стороне листа, через два интервала; допускается через один или полтора интервала, если обеспечивается пригодность к микрофильмированию по ГОСТ 13.102-72 (разд.1); 

машинным - на одной стороне листа, с расстояниями между основаниями строк, обеспечивающим пригодность к микрофильмированию; 

типографским - в соответствии с требованиями, предъявленными к изданиям, изготавливаемым типографским способом. 



2.5 Состав и порядок испытаний



Структура и оформление документа устанавливается в соответствии с ГОСТ 19.105-78. 

Для проведения испытаний (запуск, отладка, останов) программы был задействован ПК типа Pentium VI с операционной системой Windows XP.


3. Листинг прикладной программы



unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, ValEdit, CheckLst;

type

TForm1 = class(TForm)

Button1: TButton;

Memo1: TMemo;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const filename = 'students.txt'; {файл с исходными данными}

type

student_record = record {структура для хранения данных о студенте}

name: ShortString; {ФИО}

examen1: ShortString; {Балл за первый экзамен}

examen2: ShortString; {Балл за второй}

zachet: ShortString; {1- сдан зачет, 0-не сдан}

faculty: ShortString; {факультет}

profession: ShortString; {специальность}

end;

plan = record {структура для хранения данных о плане приема на специальности}

name: ShortString; {наименование специальности}

ball: word; {проходной балл на специальность}

students: array of student_record; {студенты, зачисленные на специальность}

end;

var

Form1: TForm1;

f: textfile;

student_kniga: array of student_record; {массив студентов(данные из файла)}

plans: array of plan;{план приема и зачисленные студенты}

implementation

{$R *.dfm}

{открытие и чтение файла данных}

procedure open_file;

var i, ii, t: word;

s: ShortString;

begin

AssignFile(f, filename);

Reset(f);

i:=1;

SetLength(student_kniga,0);

while not eof(f) do {в цикле считываем данные из файла в переменные}

begin

t:=0;

SetLength(student_kniga,i);

readln(f, s); {читаем построчно}

for ii:=1 to Length(s) do {перебираем посимвольно строку}

begin

if (s[ii] = '+') then t:=t+1{если встречаем символ-разделитель данных, переходим к считыванию следующей переменной}

else

if t=0 then

student_kniga[i-1].name:= student_kniga[i-1].name + s[ii] {запоминаем фамилию}

else

if t=1 then

student_kniga[i-1].examen1:= student_kniga[i-1].examen1 + s[ii] {запоминаем балл первого экзамена}

else

if t=2 then

student_kniga[i-1].examen2:= student_kniga[i-1].examen2 + s[ii] {запоминаем балл второго экзамена}

else

if t=3 then

student_kniga[i-1].zachet:= student_kniga[i-1].zachet + s[ii] {запоминаем результат зачета} 

else

if t=4 then

student_kniga[i-1].faculty:= student_kniga[i-1].faculty + s[ii] {запоминаем факультет} 

else

if t=5 then

student_kniga[i-1].profession:= student_kniga[i-1].profession + s[ii]; {запоминаем специальность} 

end;

i:= i+1;

end;

closefile(f); {закрываем файл данных}

end;

{процедура отображения загруженных данных на форме}

procedure display;

var i: word;

begin

form1.Memo1.Clear; {очищаем окно вывода данных}

for i:=0 to length(student_kniga)-1 do {цикл по студентам}

begin

form1.Memo1.Lines.add(student_kniga[i].name {заносим данные о студенте в окно вывода} 

+ #09 + student_kniga[i].examen1

+ #09 + student_kniga[i].examen2

+ #09 + student_kniga[i].zachet

+ #09 + student_kniga[i].faculty

+ #09 + student_kniga[i].profession);

end;

end;

{сохранение результатов вычислений}

procedure save_file;

var i, ii: word;

begin

for i:=0 to length(plans)-1 do {цикл по всем специальностям}

begin 

if plans[i].name <> '' then

AssignFile(f, plans[i].name+'.txt'); {создаем файл с названием специальности} 

reWrite(f);//открываем файл на перезапись

if length(plans[i].students) >0 then

begin

form1.Memo1.Lines.add('Студенты зачисленные на специальность '+plans[i].name+': ');

for ii:=0 to length(plans[i].students)-1 do {цикл по зачисленным студентам на данную специальность}

begin

writeln(f, plans[i].students[ii].name); {записываем имя студента в файл}

end;

end

else

writeln(f, 'Студенты не зачислены'); {сообщаем, если нет зачисленных студентов на данную специальность}

closefile(f); {закрываем файл}

end;

end;

{процедура загрузки данных (кнопка "Загрузка")}

procedure TForm1.Button1Click(Sender: TObject);

begin

open_file; {открытие и чтение файла данных}

display; {процедура отображения данных на форме}

end;

{процедура обработки данных (кнопка "Зачислить студентов")}

procedure TForm1.Button2Click(Sender: TObject);

var sname: shortstring;

i, ii, iii, ball: word;

popal: boolean;

begin

for i:=0 to length(student_kniga)-1 do {строим массив специальностей.}

begin

setlength(plans,i+1); {увеличиваем размерность массива на единицу}

plans[i].name:= student_kniga[i].profession; {запоминаем специальность} 

end;

end;

for i:=0 to length(plans)-1 do {удаляем повторяющиеся специальности} 

begin

sname:= plans[i].name; {запоминаем первую специальность для сравнения с последующими} 

for ii:=i+1 to length(plans)-1 do

begin

if sname = plans[ii].name then plans[ii].name:= ''; {если специальность повторяется обнуляем элемент массива спец} 

end;

end;

for i:=0 to length(plans)-1 do {цикл по специальностям чтобы определить проходной балл для каждой}

begin

{если название спец-ти не пустое, выводим окно ввода данных о проходном балле на данную специальность}

if plans[i].name <> '' then plans[i].ball:= strtoint(InputBox('Введите проходной балл','Проходной балл для '+plans[i].name+': ',''));

end;

{в цикле определяется прошел студент на свою специальность или нет(по проходному баллу}

for i:=0 to length(student_kniga)-1 do

begin

ball:= {вычисляем набранный балл студентом}

strtoint(student_kniga[i].examen1) +

strtoint(student_kniga[i].examen2) +

strtoint(student_kniga[i].zachet);

for ii:=0 to length(plans)-1 do

begin

{проверка на соответствие текущей спец-ти и выбранной студентом}

if plans[ii].name = student_kniga[i].profession then {если совпадает, смотрим проходит студент по набранному баллу или нет}

if plans[ii].ball<=ball then

begin

setlength(plans[ii].students, length(plans[ii].students)+1); {увеличиваем размерность массива студентов на 1}

plans[ii].students[length(plans[ii].students)-1].name:= student_kniga[i].name; {добавляем студента в список зачисленных}

popal:=true; {запоминаем в переменную, что студент проходит} 

end

else

popal:=false; {иначе смотрим на какую специальность может быть зачислен}

end;

if not(popal) then

begin

for iii:=0 to length(plans)-1 do {смотрим проходные баллы по специальностям и определяем куда можно зачислить студента}

begin

if (plans[iii].ball <= ball) and (plans[iii].name<>'') then {если набранный студентом балл больше проходного}

begin

setlength(plans[iii].students, length(plans[iii].students)+1); {увеличиваем размерность массива студентов на 1}

plans[iii].students[length(plans[iii].students)-1].name:= student_kniga[i].name; {добавляем студента в список зачисленных}

break; {прерываем цикл}

end;

end;

end;

end;

save_file; //сохраняем данные в файл

end;

end.



Пример ввода исходных данных

























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



Приведенный алгоритм, на основе текстового задания.




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



5.1 Общие сведения о программе



Данная программа предназначена для выполнения таких функций как:

Загрузка в СУБД (форму) информации о студентах – ФИО, количество балов, наименование факультета (сокр.), номер специальности.

После введения количества баллов, показ результат прохождения по той или иной специальности (номер специальности), т. е. прошел тот или иной студент или нет.

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



5.2 Структура программы



Библиотеки: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, ValEdit, CheckLst;

Типы классов, процедур, объектов: TForm1 = class (TForm)

Button1: TButton;

Memo1: TMemo;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

Типы переменных: student_record = record {структура для хранения данных о студенте}

name: ShortString; {ФИО}

examen1: ShortString; {Балл за первый экзамен}

examen2: ShortString; {Балл за второй}

zachet: ShortString; {1- сдан зачет, 0-не сдан}

faculty: ShortString; {факультет}

profession: ShortString; {специальность}

end;

plan = record {структура для хранения данных о плане приема на специальности}

name: ShortString; {наименование специальности}

ball: word; {проходной балл на специальность}

students: array of student_record; {студенты, зачисленные на специальность}

end.

Переменные: var

Form1: TForm1;

f: textfile;

student_kniga: array of student_record; {массив студентов(данные из файла)}

plans: array of plan;{план приема и зачисленные студенты}

Тело программы:

begin

...

...

end.



5.3 Настройка программы



Открыть файл – Project1.exe, после того как на дисплее, появится Form1, навести курсор на кнопку “запуск” и нажать.

Появится список студентов, после чего нажать на кнопку “зачислить студентов”.

Появится форма “введите проходной балл” для специальности 22031. Вводим допустимое значение (цифру)

Появится форма “введите проходной балл” для специальности 22032. Вводим допустимое значение (цифру)

Появится форма “введите проходной балл” для специальности 23150. Вводим допустимое значение (цифру)

Появится форма “введите проходной балл” для специальности 23152. Вводим допустимое значение (цифру)

После ввода во все формы всех допустимых значений нажимаем “ок”. 

Читаем результат (студенты зачислены на специальность _номер).



5.4 Проверка программы



После написания программы, в меню приложения “Delphi” нажимаем кнопку debug (отладка) и делаем пошаговую отладку. Если появляются синтаксические ошибки, то исправляем их. Далее проверка идет на выявление семантических ошибок.



5.5 Дополнительные возможности



В данной программе отсутствуют.



5.6 Сообщения системному программисту.



Смотри меню отладка программы “Delphi”




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



6.1 Назначение и условия применения программ.



Программа предназначена для автоматизации процесса зачисления абитуриентов. Легко исполняема. Для исполнения минимально требуется ПК с операционной системой Windows любой версии. 



6.2 Характеристика программы



Пользование программой по времени не ограничено. Режим работы – последовательное исполнение файлов. Средства контроля правильности выполнения и самовосстанавливаемости программ не имеет, т.е написана так, что ошибок не имеет.



6.3 Обращение к программе



Начинаем с процедуры открытие файла: procedure open_file; Далее идет составной оператор, в котором описываются переменные, операторы, комментарии (связано с запоминанием проходного балла, фамилии, имени, студента и т.д.) Затем идет процедура закрытия файла: closefile(f); процедура отображения загруженных данных на форме: procedure display; процедура сохранение результатов вычислений: procedure save_file; 

Далее смотри листинг программы.



6.4 Входные и выходные данные



Входные – цифры от 0 до 9 (проходной балл). Выходные – строковые. Вся информация выводится на дисплей с помощью форм написанных в программе “Delphi”.


6.5 Сообщения



Все сообщения по ходу выполнения программы смотреть в меню самой программы на писанной в приложении “Delphi”.


7 Руководство оператора



7.1 Назначение программы



Программа предназначена для АРМ секретаря учебно - методического отдела. В ней автоматически определяется зачисление либо нет, того или иного студента на заданную специальность.



7.2 Условия выполнения программы



Минимальные требования – ПК с операционной системой Widows любой версии, ОЗУ 64 Mb.



7.3 Выполнение программы



1. Открыть файл (Project1.exe) в приложении “Delphi”. В появившейся форме1 курсором нажать на кнопку “запуск”. В окне формы появится список студентов, проходные баллы по предметам, номера специальностей.

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

3. После ввода последней формы, в интерфейсе основной формы1 появится информация о студентах зачисленных на специальность под указанным номером. 



7.4 Сообщения оператору



В данной программе:

Зачислить студентов, Проходной балл – группа(номер), Зачислено (группа).





2