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 Общие сведения о программе
Данная программа предназначена для выполнения таких функций как:
Загрузка в СУБД (форму) информации о студентах – ФИО, количество балов, наименование факультета (сокр.), номер специальности.
После введения количества баллов, показ результат прохождения по той или иной специальности (номер специальности), т. е. прошел тот или иной студент или нет.
Вывод на дисплей информации о студентах, которые получили проходной балл и зачислены на факультеты.
... назначение, содержание и описание функциональных характеристик, субхарактеристик и атрибутов, определяющих специфические особенности целей, задач, свойств и сферы применения конкретного программного средства – его функциональную пригодность; · конструктивные характеристики качества, способствующие улучшению и совершенствованию назначения, функций и возможностей применения ПС; ...
... к пропуску при испытаниях. В связи с этим стратегической задачей в жизненном цикле современных информационных систем стало обеспечение требуемого качества программных средств и баз данных. 1. Схема характеристик оценки качества ПС За последние несколько лет создано множество международных стандартов, регламентирующих процессы и продукты жизненного цикла программных средств и баз данных. ...
... и социально-экономических процессов в области в реальном времени во взаимосвязи с внешними факторами на базе современных информационных технологий. Для решения этой задачи предназначен программно-аналитический комплекс "Анализ и прогноз бюджетных и социально-экономических процессов региона". Основной целью комплекса является создание единой системы контроля, анализа и прогноза бюджетных и ...
... системы. Основными нормативными документами, регламентирующими процесс создания любого проекта ИС и ИТ, являются ГОСТы и их комплексы на создание и документальное оформление информационной технологии, автоматизированных систем, программных средств, организации и обработки данных, а также руководящие документы Гостехкомиссии России по разработке, изготовлению и эксплуатации программных и ...
0 комментариев