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

Структура записи файла, содержащего информацию о работниках учреждения. Написание программы, выдающую список сотрудников старше заданного возраста и занимающих должность, определение среднего оклада сотрудников и установление возраста по году рождения.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.02.2015
Размер файла 611,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

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

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

Содержание

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

2.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 символов). Пример строки файла:

Karamov A.G. 1989 ingener 19000,89

| 20 | 5 | 15 | <= 8 |

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

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

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

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

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

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

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

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

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

4 - выход

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

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

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

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

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

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

3. Bobko C.A. 1968 programmist 50000

4. Emelynenko F.E. 1970 energetik 25000

5. Petrova T.B. 1965 urist 28008

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

void DateVoz (FILE *f)

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

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

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

dol - должность

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

kl - оклад

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

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

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

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

void Dolgnost (FILE *fin)

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

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

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

void SredniOkl (FILE *f)

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

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

int Voz (char gr[DL_GR])

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

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

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

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

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

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

int Voz (char gr[DL_GR])

{

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

return 2012 - igr;

}

Заключение

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

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

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

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

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

Литература

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

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

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

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

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

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

Приложение 1

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

#include <stdio.h>

#include <string.h>

#include <conio.h>

#include <stdlib.h>

#include <time.h>

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

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

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

#define DL_OKL8/* макс. длина оклада */

struct sotrydnik/* структура записи входного файла */

{ char fio[DL_FIO];/* фамилия и инициалы пациента */

char 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]);

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

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

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

int main()

{

FILE *f; /* ссылка на входной файл */

char n; /* номер пункта меню */

clrscr();

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

if (f==NULL)

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

getch();

return 1;

}

do

puts ("Выберите номер пункта меню:");

puts ("1 - вывод списка сотрудников, старше заданного возраста");

puts ("2 - список сотрудников, занимающих заданную должность");

puts ("3 - средний оклад сотрудников отдела");

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

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

n = getche();

switch(n)

{

case '1': DateVoz(f); break;

case '2': Dolgnost(f); break;

case '3': SredniOkl(f); break;

case '4': break;

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

}

if (n!='4')

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

getch();

}

while (n != '4');

fclose(f);

return 0;

}

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

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

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

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

void DateVoz (FILE *f)

{

char zdata[DL_DATA]; /* заданный возраст */

int n=0, N; /* порядковый номер сотрудника в выводимом списке */

struct sotrydnik tz; /* текущая запись файла */

puts ("\nВведите возраст сотрудника");

scanf(“%i”,&N);

rewind(f);

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

if (Voz(tz.gr)>N )

{ if (n==0)

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

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

}

tz.gr[DL_GR - 1] = '\0';

printf ("%d. %s %s", ++n, tz.fio, tz.dol);

}

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

}

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

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

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

int Voz (char gr[DL_GR])

{

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

return 2012 - igr;

}

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

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

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

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

void Dolgnost(FILE *f)

{

char zdol[DL_DOL]; /* заданная должность */

int k,n=0; /* порядковый номер сотрудника в выводимом списке */

struct sotrydnik tz; /* текущая запись файла */

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

gets (zdol);

k=strlen(zdol);

rewind(f);

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

if (strncmp(tz.dol,zdol,k)==0)

{ if (n==0)

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

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

}

tz.gr[DL_GR - 1] = '\0';

printf ("%d. %s %s", ++n, tz.fio, tz.okl);

}

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

}

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

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

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

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

void SredniOkl(FILE *f)

{

struct sotrydnik tz; /* текущая запись файла */

float p, s = 0; /* сумма окладов всех сотрудников */

int k = 0; /* количество сотрудников в файле */

rewind (f);

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

{ p=atof(tz.okl);

s+=p;

k++;

}

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

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

}

Приложение 2

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

Karamov A.G. 1989 ingener 19000,89

Bylatov K.P. 1990 glavnyi ingener 20000

Axatova L.U. 1980 kadrovik 16780,55

Battalova A.C. 1982 urist 30040,12

Kolesova V.M. 1984 kadrovik 25980

Shaixmetov A.B. 1977 direktor 43250,10

Bobko C.A. 1968 programmist 50000

Emelynenko F.E. 1970 energetik 25000

Smolkina E.M. 1991 gen.direktor 60000

Petrova T.B. 1965 urist 28008

Zylarkin C.A. 1912 glavnyi vrach 36000,52

Leyxin C.V 1996 gen.po personaly 45000

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

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

Результат:

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

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

Тест 2 .

Тест 3 .

Тест 4 .

Тест 5 .

Тест 6 .

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

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

Размещено на Allbest.ru


Подобные документы

  • Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.

    контрольная работа [1,6 M], добавлен 04.01.2015

  • Проектирование программы на языке Turbo Pascal, позволяющей просматривать информацию, осуществлять поиск по определённым параметрам, позволять редактировать данные, а также удалять ненужные записи и добавлять новые. Алгоритм и листинг программы.

    курсовая работа [46,4 K], добавлен 26.08.2012

  • Входные данные программы в файле "School.txt". Метод решения задачи и функциональная структура программы. Main – главная функция, формирование таблицы данных из файла. Блок-схема функции вывода фамилии победителей, занявших первые три призовых места.

    курсовая работа [68,4 K], добавлен 17.06.2012

  • Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.

    курсовая работа [2,7 M], добавлен 21.02.2011

  • Выбор алгоритма решения задачи. Разработка программы, обеспечивающую эффективную обработку и хранение информации с использованием линейных списков. Написание программы на псевдокоде и на языке программирования высокого уровня. Результаты работы программы.

    курсовая работа [2,1 M], добавлен 21.04.2012

  • Основные этапы определения радиуса и центра окружности, проходящей через три различные точки заданного множества точек. Особенности построения алгоритма на языке программирования. Составление тестовых примеров для демонстрации возможностей программы.

    контрольная работа [103,9 K], добавлен 21.08.2013

  • Исследование классификации компьютерных игр, двигателей прогресса индустрии для персональных компьютеров. Характеристика общей структуры, протокола и текста программы, сценария и процесса игры. Изучение алгоритмизации и программирования на языке Паскаль.

    реферат [2,1 M], добавлен 16.09.2011

  • Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.

    курсовая работа [1,0 M], добавлен 26.12.2013

  • Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.

    курсовая работа [381,7 K], добавлен 10.05.2018

  • Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.

    учебное пособие [211,1 K], добавлен 30.03.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.