Программирование на языке высокого уровня

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    212,42 Кб
  • Опубликовано:
    2015-03-07
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программирование на языке высокого уровня















КУРСОВАЯ РАБОТА

«Программирование на языке высокого уровня»

Содержание

Введение

. Описание применения

.1 Запуск программы

.2 Входные данные

.3 Выходные данные

.4 Сообщения программы

. Описание программы

.1 Метод решения задачи

.2 Структура программы

.3 Описание функций

.3.1 Main - главная функция

.3.2 DateVoz - вывод списка сотрудников, старше заданного возраста

.3.3 Dolgnost - вывод списка сотрудников, занимающих заданную должность

.3.4.SredniOkl - определение среднего оклада сотрудников отдела

.3.5 Voz - определение возраста по году рождения

Литература

Заключение

Приложения

Введение

Дан файл, содержащий информацию о сотрудниках отдела учреждения. Структура записи файла:

фамилия и инициалы сотрудника;

год рождения;

должность;

оклад.

Написать программу, выдающую

список сотрудников старше заданного возраста;

список сотрудников, занимающих заданную должность;

средний оклад сотрудников отдела.

1. Описание применения


1.1 Запуск программы

Запуск программы (файл sotrydnik.c) можно выполнить из среды Turbo C 2.0 (или Borland C++ 3.1), либо из командной строки MS DOS, введя sotrydnik.exe .

1.2 Входные данные

Входные данные программы находятся в файле “ sotryd.txt”. Число строк в файле - произвольное. Каждая строка содержит фамилию с инициалами (20 символов), год рождения (5 символов), должности (15 символов) и оклад (до 8 символов). Пример строки файла:A.G. 1989 ingener 19000,89

| 20 | 5 | 15 | <= 8 |

Пример входного файла приведен в приложении 2.

По запросу программы с клавиатуры необходимо ввести номер пункта меню, задать возраст, должность.

1.3 Выходные данные

файл программа оклад должность

Программа выводит на экран меню:

Выберите номер пункта меню:

- вывод списка сотрудников, старше заданного возраста

- список сотрудников, занимающих заданную должность

- средний оклад сотрудников отдела

- выход

При выборе пункта 1 на экран выводится сообщение:

Введите возраст сотрудника

После ввода возраста, например 30, выводится результат в виде:

№ Фамилия И.О. Год рожд. Должность Оклад

1. Axatova L.U. 1980 kadrovik 16780,55

2. Shaixmetov A.B. 1977 direktor 43250,10

. Bobko C.A. 1968 programmist 50000

. Emelynenko F.E. 1970 energetik 25000

. Petrova T.B. 1965 urist 28008

Если ввести возраст, которой нет в файле, выводится сообщение:

Нет сотрудников, заданного возраста

Примеры выходных данных для остальных пунктов меню см. в приложении 3.

1.4 Сообщения программы

Ниже приводится перечень возможных сообщений программы:

. Файл sotryd.txt не найден

. Выберите номер пункта меню:

. Нужно вводить номер пункта от 1 до 4

. Введите возраст сотрудника

. № Фамилия И.О. Год рожд. Должность Оклад

. Нет сотрудников, заданного возраста

. Введите должность:

. Файл sotryd.txt пустой

. Средний оклад сотрудников отдела

. Для продолжения нажмите любую клавишу


Задачу можно разбить на три отдельные подзадачи:

. Поиск в файле записей, в которых возраст сотрудника больше заданного возраста, и вывод списка таких сотрудников.

. Поиск во входном файле записей, в которых должность совпадает с заданной должностью, и вывод списка таких сотрудников. Последовательный просмотр записей файла, и определение должности сотрудников, чтобы вывести список.

. Последовательный просмотр записей файла, суммирование окладов всех сотрудников и определение количества всех сотрудников, чтобы определить средний оклад.

Каждая подзадача решается методом линейного поиска (последовательного просмотра элементов таблицы).

Чтобы пользователь мог выбирать, какие подзадачи решать и в каком порядке, программа выводит на экран меню (см. раздел 1.3).

2.2 Структура программы

Рис. 1. Функциональная структура программы

Программа состоит из пяти функций: главной функции main и четырех подпрограмм.

DateVoz - вывод списка сотрудников, старше заданного возраста.

Dolgnost - список сотрудников, занимающих заданную должность.

SredniOkl - средний оклад сотрудников отдела.

Voz - определение возраста сотрудника по году рождения.

2.3 Описание функций

.3.1 Main - главная функция

Заголовок функции: int main ()

Значение функции:

- в случае успешного завершения;

- если входной файл не найден.

Рабочие данные:

f - указатель на структуру с информацией о входном файле;

n - номер пункта меню.

.3.2 DateVoz - вывод списка сотрудников, заданного возраста

Заголовок функции: Структура записи файла:

DateVoz (FILE *f)

- фамилия и инициалы сотрудника - год рождения

Входные данные:ol - должность

f - ссылка на входной файлo

kl - оклад

Рис. 2. Блок-схема функции main()

Рис. 3. Схема функции вывода списка сотрудников, заданного возраста.

.3.3 Dolgnost - вывод списка сотрудников, занимающих заданную должность

Заголовок функции:

void Dolgnost (FILE *fin)

Рис. 4. Схема функции вывода списка сотрудников, занимающих заданную должность.

2.3.4 SredniOkl - определение среднего оклада сотрудников отдела

Заголовок функции:

void SredniOkl (FILE *f)

.3.5 Voz - определение возраста по году рождения

Заголовок функции:

int Voz (char gr[DL_GR])

Входные данные:

gr - год рождения.

Значение функции: возраст.

Возраст сотрудника вычисляется как разность между текущим годом и годом рождения сотрудника.

Рис. 5. Блок-схема определение среднего оклада сотрудников отдела.

Текст функции:

int Voz (char gr[DL_GR])

{

int igr = atoi(gr);/* преобразование года рождения в тип int */2012 - igr;

}

Заключение


Задача разбита на три отдельные подзадачи:

. Поиск в файле записей, в которых возраст сотрудника больше заданного возраста, и вывод списка таких сотрудников.

. Поиск во входном файле записей, в которых должность совпадает с заданной должностью, и вывод списка таких сотрудников. Последовательный просмотр записей файла, и определение должности сотрудников, чтобы вывести список.

. Последовательный просмотр записей файла, суммирование окладов всех сотрудников и определение количества всех сотрудников, чтобы определить средний оклад.

Каждая подзадача решается методом линейного поиска (последовательного просмотра элементов таблицы). Чтобы пользователь мог выбирать, какие подзадачи решать и в каком порядке, программа выводит на экран меню.

Литература


1. Хохлов Д.Г. Основы технологии модульного программирования. Учебное пособие. - Казань. Изд-во Казан. гос. техн. ун-та , 2005. - 63 с.

. Павловская Т.А. С/С++. Программирование на языке высокого уровня. - СПб: Питер, 2004г. - 461с.

. Павловская Т.А., Щупак Ю.А. С/С++. Структурное программирование: Практикум. - СПб: Питер, 2012 г. - 240с.

. Хохлов Д.Г. Структуры данных и комбинаторные алгоритмы. Учебное пособие. - Казань: Изд-во Казан. гос. техн. ун-та, 2009. - 102 с.

5. Хохлов Д.Г., Захарова З.Х. Практикум по структурам данных и комбинаторным алгоритмам: Учебное пособие.- Казань: Изд-во Казан. гос. техн. ун-та, 2011. - 48 с.

6. Бикмурзина А.Р. Лабораторный практикум по программированию. - Казань: Изд-во Казан. гос. техн. ун-та, 2008г.

Приложение 1

Текст программы

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

#define DL_FIO20/* длина поля фамилии в файле */

#define DL_GR5/* длина поля года рождения */

#define DL_DOL20/* длина поля должности */

#define DL_OKL8/* макс. длина оклада */sotrydnik/* структура записи входного файла */

{ char fio[DL_FIO];/* фамилия и инициалы пациента */gr [DL_GR];/* год рождения */

char dol[DL_DOL];/* должность */

char okl[DL_OKL+2]; /* оклад + '\n' + '\0' */

};

/* прототипы функций */

void DateVoz(FILE *f);

void Dolgnost(FILE *fin);

void SredniOkl(FILE *f);

int Voz (char gr[DL_GR]);

/*----------------------*/

/* главная функция */

/*----------------------*/main()

{*f; /* ссылка на входной файл */n; /* номер пункта меню */

clrscr();= fopen("sotryd.txt", "r");(f==NULL)

{ puts ("Файл sotryd.txt не найден");();1;

} ("Выберите номер пункта меню:");("1 - вывод списка сотрудников, старше заданного возраста");("2 - список сотрудников, занимающих заданную должность");("3 - средний оклад сотрудников отдела");

puts ("4 - выход");("------------------------------------------------------");= getche();(n)

{'1': DateVoz(f); break;'2': Dolgnost(f); break;'3': SredniOkl(f); break;

case '4': break;: puts("\nНужно вводить номер пункта от 1 до 4");

}(n!='4')

{ puts("\nДля продолжения нажмите любую клавишу");

getch();

}(n != '4');(f);

return 0;

}

/*--------------------------------------*/

/* Функция вывода списка сотрудников, */

/* старше заданного возраста */

/*--------------------------------------*/DateVoz (FILE *f)

{zdata[DL_DATA]; /* заданный возраст */n=0, N; /* порядковый номер сотрудника в выводимом списке */sotrydnik tz; /* текущая запись файла */("\nВведите возраст сотрудника");

scanf(“%i”,&N);

rewind(f);(fgets((char *)&tz,sizeof(struct sotrydnik),f) != NULL)(Voz(tz.gr)>N )

{ if (n==0)

{ puts("№ Фамилия И.О. Год р. Должность Оклад ");

puts("-------------------------------------------");

}.gr[DL_GR - 1] = '\0';("%d. %s %s", ++n, tz.fio, tz.dol);

}(n==0) puts ("\nНет сотрудников, заданного возраста");

}

/*-----------------------------------------------*/

/* функция определения возраста по году рождения */

/*-----------------------------------------------*/Voz (char gr[DL_GR])

{igr = atoi(gr);/* год рождения типа int */

return 2012 - igr;

}

/*---------------------------------------------*/

/* функция вывода списка сотрудников, */

/* занимающих заданную должность */

/*---------------------------------------------*/

void Dolgnost(FILE *f)

{zdol[DL_DOL]; /* заданная должность */k,n=0; /* порядковый номер сотрудника в выводимом списке */sotrydnik tz; /* текущая запись файла */

("\nВведите должность");

gets (zdol);

k=strlen(zdol);

rewind(f);(fgets((char *)&tz,sizeof(struct sotrydnik),f) != NULL)(strncmp(tz.dol,zdol,k)==0)

{ if (n==0)

{ puts("№ Фамилия И.О. Год р. Оклад ");

Puts ("----------------------------------");

}.gr[DL_GR - 1] = '\0';("%d. %s %s", ++n, tz.fio, tz.okl);

}(n==0) puts ("\nНет сотрудников, занимающих заданную должность");

}

/*---------------------------------------*/

/* функция определения среднего оклада */

/* сотрудников отдела */

{

struct sotrydnik tz; /* текущая запись файла */p, s = 0; /* сумма окладов всех сотрудников */k = 0; /* количество сотрудников в файле */

rewind (f);(fgets((char *)&tz,sizeof(struct sotrydnik),f) != NULL)

{ p=atof(tz.okl);+=p;

k++;

}

if (k) printf ("\nСредний оклад сотрудников отдела:%.2f\n",s/k);

else puts ("\nФайл sotryd.txt пустой");

}

Приложение 2

Пример входного файла sotryd.txt

Karamov A.G. 1989 ingener 19000,89K.P. 1990 glavnyi ingener 20000L.U. 1980 kadrovik 16780,55A.C. 1982 urist 30040,12V.M. 1984 kadrovik 25980A.B. 1977 direktor 43250,10C.A. 1968 programmist 50000F.E. 1970 energetik 25000E.M. 1991 gen.direktor 60000T.B. 1965 urist 28008C.A. 1912 glavnyi vrach 36000,52C.V 1996 gen.po personaly 45000

Приложение 3. Результаты тестирования программы


Тест 1. Входного файла нет в текущем каталоге.

Результат:

Файл sotryd.txt не найден


В следующих тестах используется файл из приложения 2.

Тест 2 .

Тест 3 .


Тест 4 .

 

Тест 5 .

 

Тест 6 .

 

Тест 7 . Входной файл пустой

 

Тест 8 . Неверно выбран номер пункта меню

Похожие работы на - Программирование на языке высокого уровня

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!