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