Розробка програмного забезпечення
Сформувати файл «P.dat», що містить інформацію про вантаж пасажирів
КУРСОВА РОБОТА
з дисципліни ОСНОВИ ПРОГРАМУВАННЯ
ЗАВДАННЯ
НА КУРСОВУ РОБОТУ
Студенту XXXXX XXX XXX
Вантаж пасажира характеризується кількістю речей та їх загальною вагою. Сформувати файл "Р", що містить інформацію про порядковий
номер запису, прізвища і вантаж N пасажирів. Використовуючи
сформований файл, знайти і записати у файл "РА": загальний вантаж,
середню вагу однієї речі даного пасажира і яка відрізняється не більш
як на 0.3 кг від загальної середньої ваги речі; число пасажирів, які
мають більше двох речей. Забезпечити можливість поповнення файлу "Р"
з клавіатури, а також вилучення обраних по порядковому номеру записів.
Після модифікації файлу "Р" таблиця, яка виводиться на екран і файл
"РА" повинні оновлюватися автоматично по запиту користувача. При
потребі забезпечити можливість відновлення попередньої версії файлу
"РА".
2. Термін здачі студентом закінченого проекту - 22 травня 2006 року.
Зміст пояснювальної записки:
опис основних функцій, що використані в програмі;
програма з поясненням;
блок-схема програми.
4. Дата видачі завдання 2006 року.
Зміст
Завдання..................................................................................................2 стр.
Анотація..................................................................................................3 стр.
Annotation…...…………………………………………………………5 стр.
Опис програми.......................................................................................6 стр.
Висновок.................................................................................................7 стр.
Список використаної літератури..........................................................8 стр.
Додатки...................................................................................................9 стр.
Додаток А.............................................................................................10 стр.
Додаток В.............................................................................................22 стр.
АНОТАЦІЯ
В даній програмі створено списки пасажирів з вантажем та на основі проведеного аналізу цих списків створено вихідний файл з результуючими даними.
ANNOTATION
In this program the lists of passengers are created with a load and on the basis of the conducted analysis of these lists an initial file is created with resulting information.
ОПИС ПРОГРАМИ
Цей програмний продукт формує список пасажирів з вантажем. Основною інформацією, яка характеризує вантаж вважається кількість речей та їх загальна вага. На основі цього списку формується файл „Р”. Програма аналізуючи цей файл створює вихідний файл „РА”, який містить інформацію про середню вагу всього багажу пасажирів, середню вагу однієї речі заданого користувачем пасажира та число пасажирів, які мають більше двох одиниць вантажу.
Дозволено поповнювати базу даних файлу „Р” з клавіатури, а також вилучати елементи бази даних по порядковому номеру. Після введених корегувань файли „Р” та „РА” оновлюються автоматично.
На основі даних файлу „Р” будується таблиця, яка виводиться по запиту користувача на монітор.
Після видалення одного елементу бази даних файлу „Р” можливо його відновити.
ВИСНОВОК
Програма створює базу даних файлу „Р” на основі динамічного списку. Що дозволяє без проблем задавати будь-які розміри бази даних. При проведених мною дослідженнях програма, яка будувала список на основі масиву дозволяла мати максимум до 300 елементів. При перевищені цього обмеження вона вже працювала неправильно. Динамічний список, на основі якого побудована програма, дозволяє використовувати будь-яку кількість елементів. Обмеження встановлює лише кількість памяті присутня на персональному компютері.
Таким чином ця програма є досить ефективною для обробки даних про пасажирів та їх вантаж.
ПЕРЕЛІК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
1. Павловская Т.А. С/С++. Программирование на языке высокого уровня – СПб.:Питер, 2005. – 461 с.
2. Фролов А.В., Фролов Г.В. MS-DOS для программиста. – М.: ДИАЛОГ-МИФИ, 1995. – 256с.
3. Лаптев В. В. С++ Експресс-курс. – СПб.:БХВ – Петербург,2004. – 512 с.
Додатки
ДОДАТОК А
//kyrs.cpp
//get_index
#include "kyrs.h"
//___________________________get_index function_________________________
int get_index(void)
{
int ind = 0;
FILE* handle;
if ((handle = fopen("P.dat","r")) == NULL)
{
printf("Cann't open file with input data in get_index function");
getch();
exit(0);
}
fseek(handle,0,0);
char ch;
fscanf(handle,"%d",&ind);
do {
ch = fgetc(handle);
if (ch == '\n') fscanf(handle,"%d",&ind);
}while(!feof(handle));
fclose(handle);
++ind;
return ind;}
//_________________________main function___________________
void main(void){
int ind = 0;
ind = get_index();
char ch = '0';
do {
clrscr();
printf("Select your choise:\n1:completing\n2:deleting\n3:output of table\n4:analysis\n5:revival\n");
ch = getch();
switch(ch) {
case '1':
complete(ind);
++ind;
break;
case '2':
deleting();
break;
case '3':
output();
break;
case '4':
analysis();
break;
case '5':
revival();
break;
default:
if (ch == 0x1b) exit(0);
else {
clrscr();
printf("You enter error!!!\nPlease reenter your choice");
getch();
break; } }
}while(1);}
//form complete deleting analysis output revival
#include <math.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
//________________________struct of data______________________
struct luggage
{
int index;
char *surname;
int count;
int heaver;
int for_delete;
luggage *next;
};
struct for_PA
{
int common;
float middle;
char *surname;
int count_more_two;
};
//------------------------------------form function____________________________
luggage* form (int all = 0)
{
FILE *handle;
if ((handle = fopen("P.dat","r")) == NULL)
{
printf("Error of opening file with data\n");
getch();
exit(1);
}
fseek(handle,0,0);
luggage *man, *folowing;
man = new luggage;
man->surname = new char [15];
folowing = new luggage;
folowing->surname = new char [15];
if (all == 1)
{
fscanf(handle,"%d%s%d%d%d",&man->index,man->surname, &man->count, &man->heaver, &man->for_delete);
man->next = NULL;
}
else
do
{
fscanf(handle,"%d%s%d%d%d",&man->index,man->surname, &man->count, &man->heaver, &man->for_delete);
man->next = NULL;
}while(man->for_delete == 1);
folowing = man;
do
{
luggage *pm;
pm = new luggage;
pm->surname = new char [15];
fscanf(handle,"%i%s%d%d%d",&pm->index,pm->surname, &pm->count, &pm->heaver, &pm->for_delete);
if (feof(handle))
{
fclose(handle);
return man;
}
pm->next = NULL;
if (all == 1)
{
folowing->next = pm;
folowing = pm;
}
else
if (pm->for_delete == 0)
{
folowing->next = pm;
folowing = pm;
}
else delete pm;
}while(1);
}
//________________________complete function____________________________
void complete(int ind)
{
clrscr();
FILE* to;
int result = 0;
if ((to = fopen("P.dat", "a")) == NULL)
{
fprintf(stderr, "Cannot open input file.\n");
getch();
return;
}
fseek(to,0,0);
luggage *man;
man = new luggage;
man->surname = new char [15];
printf("Please enter data(surname, count of luggage and its heaver: \n");
scanf("%s%d%d",man->surname,&man->count,&man->heaver);
result = fprintf(to,"%d %s %d %d %d\n",ind,man->surname,man->count,man->heaver,0);
if (result == EOF)
{
printf("Didn't input data in file");
getch();
}
fclose(to);
delete man->surname;
}
//---------------------------deleting function_____________________________________________
void deleting(void)
{
clrscr();
int cnt = 1;
luggage *man, *pnew;
man = new luggage;
man->surname = new char [15];
pnew = new luggage;
pnew->surname = new char [15];
man = form();
printf("%d - %s\n",man->index,man->surname);
pnew = man->next;
while(pnew){
printf("%d - %s\n",pnew->index,pnew->surname);
pnew = pnew->next;
}
printf("Enter surname's number to