МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
МОСКОВСКАЯ АКАДЕМИЯ ПРЕДПРИНИМАТЕЛЬСТВА
ПРИ ПРАВИТЕЛЬСТВЕ МОСКВЫ
Сургутский филиал
Контрольная работа
Разработка и стандартизация программных средств информационных технологий
Выполнил: Чернобровкин Виталий Викторович
Специальность: Прикладная информатика в экономике
Проверил: Анисимов Валерий Алексеевич
г. Сургут, 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 Сообщения оператору
В данной программе:
Зачислить студентов, Проходной балл – группа(номер), Зачислено (группа).