Міністерство науки і освіти України
Національний університет “Львівська Політехніка”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
Звіт
З лабораторної роботи №3
з курсу «Вступ до програмної інженерії»
Виконано
Студент групи ПІ-11
Вандич А.В.
Зараховано
Левус Є.В.
Львів 2008
Тема: Основні фази життєвого циклу програмного забезпечення.
Мета: Засвоїти на практиці основні фази ЖЦ програмного забезпечення на прикладі опису створення власної програми.
Завдання
Сформувати технічне завдання згідно поданого плану та розробити документи з пункту №6 згідно індивідуального варіанту лабораторної роботи з курсу «Основи програмування та алгоритмічні мови»(Лабораторна робота №7) .
Хід виконання роботи
Технічне завдання
1. Найменування роботи: Лабораторна робота №3.(Умовне позначення – lab_3) Замовник – Левус Євгенія Василівна, розробник – Вандич Андрій Володимирович. Дата початку роботи – 18.03.2008, дата закінчення роботи – 8.04.2008.
2. Програма призначена для виявлення студентів, що вчаться на відмінно. Основне завдання програми досягнуте.
3. За допомогою цього програмного засобу мають оброблятися структури даних, що містять ім’я, прізвище, дату народження та 5 оцінок студента.
4. Для ефективної роботи ПЗ потрібно комп’ютер з характеристиками: частота процесора – 100 Гц, 8 Мб оперативної пам’яті, відеокарта – 1 Мб та ОС Windows 95/98 і вище.
5. Було розроблено документи: Блок-схема алгоритму, схематичне зображення структури даних, текст програми, опис тестів, інструкція до користування.
6. Для виконання роботи було використано літературу:
Конспекти лекцій з предмету ВПІ – Левус Є.В.
Конспекти лекцій з предмету Основи програмування – Семотюк В.М.
Інструкція до користування
Шановний користувач – ця програма створена для обробки даних про студентів. Ви вводите інформацію про студента у форматі <Прізвище> <ім’я> <дата народження> <п’ять оцінок>, а проограма виводить на екран інформацію лише про тих студентів в яких є оцінка 5.
Запускаємо программу на виконання. Після запуску на екрані появляєть ся вікно для введення інформації. Щоб ввести інформацію про студента вводимо у натискаємо клавішу Enter, після цього вводимо інформацію. Увага інформація має вводитись у заданому фпрматі. Між буквами прізвища та імені немає бути пробілів. Не можна вводити забагато даних, так як це призведе до некоректної роботи програми. Для завершення вводу введіть символ n та натисніть Enter. Після цього на екран виведеться інформація про студентів в яких є оцінка 5.
Якщо виникли проблеми з експлуатації програми звертайтеся до розробника!!!
Опис тестів
Програма може видавати некоректні розв’язки у випадках:
Якщо будуть введені дані, які перевищують діапазони введених даних, то програма дасть збій і здійснить «Аварійне завершення програми» або «зависне»;
Якщо буде введено забагато даних то дані, які не будуть зчитані при проході циклу залишаться у потоці вводу і при наступному проході циклу вони будуть занесені замість потрібних нам даних. Потім повториться та ж ситуація і програма видасть нам некоректний розв’язок;
Між символами в прізвищі та імені не повинно стояти пробілів так як виникне ситуація, яку я розглянув у другому випадку;
У всіх інших випадках програма має працювати коректно.У випадку збоїв у роботі звертатися до автора.
Текст програми з коментарями
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
struct student// Оголошення структури даних student з полями
{char surname[20];//для імені,прізвища,дати народження та оцінок
char name[20];
long birth;
int marks[5];
struct student *next;
} *head=NULL,*nw,*buf,*current=NULL,*current1=NULL;
void add(void)// Ф-я для додавання нового елементу у список
{nw=(struct student*)malloc(sizeof(struct student));//створення нового елементу
nw->next=NULL;//Присвоєння вказівнику на наступний елемент нульового значення
//так, як наступного ще не існує
buf=head;//Присвоєння змінній для проходження значення вершини списку
//Зчитування даних з клавіатури
scanf("%s%s%ld%d%d%d%d%d",nw->surname,nw->name,&(nw->birth),&(nw->marks[0]),&(nw->marks[1]),&(nw->marks[2]),&(nw->marks[3]),&(nw->marks[4]));
//Пошук місця де вставити елемент
if (head==NULL)//Якщо список пустий то зробити елемент вершиною списка
head=nw;
else
{
//Якщо список не пустий, то пошук місця вставки (першого елемента молодшого від
//даного)
while(nw->birth<buf->birth && buf->next!=NULL)
buf=buf->next;
if (buf==head)//Якщо вставляєм в початок списку:
{nw->next=head;
head=nw;
}
еlse//Якщо всавляєм в середину списку:
{
if(buf->next!=NULL)
nw->next=buf->next;
buf->next=nw;
}
}
}
void main (void)
{char m,n='n';
clrscr();
puts("Vvedit dani u formati:Prizvyshche Imja data nar. 5 ocinok");
while (1)//Введення даних
{puts("Vvedit 'y' dla vvednnia studentiv ta 'n' dlia zavershennia");
scanf("%s",&m);
if (m==n) break;
add();
};
buf=head;//Видалення зі списку студентів що не мають оцінки 5
if (head !=NULL)
do
{if ((buf->marks[0]!=5) && (buf->marks[1]!=5) && (buf->marks[2]!=5) && (buf->marks[3]!=5) && (buf->marks[4]!=5))
{if (current==NULL)//Якщо це перший елемент то видаляєм
{
current=buf->next;
free(buf);
buf=current;
current=NULL;
head=buf;
}
else
{if (buf->next!=NULL)//Якшо це не останній у списку
{current->next=buf->next;//Видаляєм і змінній проходження присвоюєм
//наступний елемент
free(buf);
buf=current->next;
}
//Якщо елемент останній, то видаляєм
else {free(buf);current->next=NULL;buf=NULL; }
}
}
еlse// Якшо елемент має 5 то переходим до наступного
{
current=buf;
buf=buf->next;
}
}while (buf!=NULL);
if (head != NULL)puts("Studenty yaki mayut` ocinky 5");//Якщо список не пустий
buf=head;
while (buf!=NULL)//Вивід по спаданню віку студентів
{printf("%s %s %ld %d %d %d %d %d",buf->surname,buf->name,buf->birth,buf->marks[0],buf->marks[1],buf->marks[2],buf->marks[3],buf->marks[4]);
buf=buf->next;
printf("\n");
};
getch();
}
Блок-схема алгоритму
Графічне зображення структури даних
Мій трафарет
Висновок: Під час виконання даної лабораторної роботи я здобув основні навики для створення власного програмного проекту та його документування. Також я здобув навики роботи з програмою Visio, створюючи блок-схему алгоритму та свою структуру даних.