Помощь в написании студенческих работ
Антистрессовый сервис

Разработка программ на языке программирования СС++: информационно-поисковый справочник «ж/к индикаторов»

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Каждая запись должна состоять из 5 полей: марка (строковой тип); остальные 4 поля выбираются самостоятельно из справочников и должны представлять реальные параметры радиодеталей. При работе с программой также должны вводиться реальные марки и соответствующие им параметры деталей. Таблица с параметрами должна быть приведена в приложении. Была проделана работа по разработке справочника ж/к… Читать ещё >

Разработка программ на языке программирования СС++: информационно-поисковый справочник «ж/к индикаторов» (реферат, курсовая, диплом, контрольная)

Курсовая работа Разработка программ на языке программирования СС++: информационно-поисковый справочник «ж/к индикаторов»

Содержание программирование поисковый справочник информационный Введение

1. Постановка задачи

2. Листинг программы Заключение Список рекомендуемой литературы

Введение

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

В этой работе для выполнения всех требований преподавателя к функциональности рабочего приложения нам будут необходимы знания по всему курсу «Алгоритмизация и программирование на языке С/С++». Для создания курсового проекта необходимо выделить в задании на курсовую работу корневую задачу, которая будет реализована в главном модуле, а так же прикладные задачи, требования к которым указаны в описании функциональности программы. Также необходимо продумать алгоритмы коррекции данных, введённых пользователем. Для этого в ход выполнения работы добавляется дополнительный пункт тестирования полученной программы на правильность реакции на различные данные, вводимые пользователем: как корректные, так и некорректные. Для тестирования необходимо продумать ход мыслей рядового пользователя, а также его характерные ошибки при использовании вашей программы. Для исключения большинства таких ошибок достаточно будет продумать информативный и удобный интерфейс пользователя. Для блокирования же других необходимо составить алгоритмы анализа данных, введённых пользователем.

С++ - это универсальный язык программирования, задуманный так, чтобы делать программирование более приятным для серьёзного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования С. Помимо возможностей, которые даёт С, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определение новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах в некоторых объектах типов, определённых пользователем. Такие объекты просты и надёжны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентировочным. При правильном использовании этот метод даёт более короткие, проще понимаемые и легче контролируемые программы.

1. Постановка задачи Разработать и реализовать на языке С/С++ информационно-поисковый справочник «ж/к индикаторов» .

При запуске программы на исполнение, должно появиться буквенное меню, посредством которого должны вызываться следующие пункты, реализованные в программе как отдельные функции:

1. Создание справочника в памяти (Ввод данных).

2. Вывод справочника на экран с использованием потоковых классов языка С/С++

3. Добавление записи в справочник.

4. Сортировка методом пузырька по полю целочисленного типа.

5. Сохранение справочника в файле с использованием функций языка С.

6. Открытие справочника из файла с использованием функций языка С.

7. Сортировка дискового файла с использованием потоковых классов языка С/С++.

8. Выход из программы.

Каждая запись должна состоять из 5 полей: марка (строковой тип); остальные 4 поля выбираются самостоятельно из справочников и должны представлять реальные параметры радиодеталей. При работе с программой также должны вводиться реальные марки и соответствующие им параметры деталей. Таблица с параметрами должна быть приведена в приложении.

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

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

2. Листинг программы

makefile

makefile служит для компиляции всех функций, используемых в программе в один исполняемый файл spravo4nik. exe

spravo4nik: in. o prog.o out. o plus.o puz. o sv.o op. o vst.o

g++ in. o prog.o out. o plus.o puz. o sv.o op. o vst.oo spravo4nik

prog.o: in. c out.cpp plus. c puz.c sv. c op.c vst. o my.h

g++ -c prog. c

in.o: in. c my.h

g++ -c in. c

out.o: out. cpp my.h

g++ -c out. cpp

plus.o: plus. c my.h

g++ -c plus. c

puz.o: puz. c my.h

g++ -c puz. c

sv.o: sv. c my.h

g++ -c sv. c

op.o: op. c my.h

g++ -c op. c

vst.o: vst. cpp my.h

g++ -c vst. cpp

my.h

my.h — заголовочный файл, в который включены библиотеки ввода-вывода, библиотеки, для работы с строковыми типами данных, а также объявлены функции, глобальные переменные, структура данных, и массив структуры, используемые в программе.

#include

#include

#include

#include

#include

#include

#include

using namespace std;

void insert ();

void out ();

void ps ();

void puz ();

void vst ();

void save ();

void open ();

struct st{

int I;

char marka[20];

char colour[10];

float u;

int r;

};

extern struct st s[20];

extern int i;

prog.c

prog.c содержит функцию main (int argc, char *argv[]), в которой реализуется буквенное меню справочника ж/к индикаторов, и вызов всех, необходимых функций, по запросу пользователя.

#include" my. h"

int i;

struct st s[20];

int main (int argc, char *argv[]){

int a;

char z;

FILE *f;

if (argc>1){

if ((f=fopen (argv[1]," r+b"))==NULL){

printf («Ошибка открытия файла!! nНАЖМИТЕ ENTER»);

getchar ();

exit (1);

}

else{

fread (&i, sizeof (int), 1, f);

for (a=0;a

fread (&s[a], sizeof (struct st), 1, f);

fclose (f);

}

}

while (1){

while (1){

system («clear»);

printf («—————————————————————————n»);

printf («| Выберите операцию: |n»);

printf («| Ввод данных … a |n»);

printf («| Вывод справочника на экран … b |n»);

printf («| Добавление записи … c |n»);

printf («| Сортировка по кол разрядов … d |n»);

printf («| Сохранить файл … e |n»);

printf («| Сортировка дискового файла … f |n»);

printf («| Открыть файл … g |n»);

printf («| Завершение работы … h |n»);

printf («—————————————————————————n»);

z = getchar ();

if (z < 97 || z > 104) {

printf («Введены неверные данные!!! nНАЖМИТЕ ENTERn»);

while (getchar ()≠'n');

cin.get ();

}

else

break;

}

switch (z){

case 97: while (getchar ()≠'n');insert ();break;

case 98: out ();break;

case 99: while (getchar ()≠'n');ps ();break;

case 100: puz ();break;

case 101: save ();break;

case 102: vst ();break;

case 103: open ();break;

case 104: {

system («clear»);

return 0;

}

}

}

}

in.c

В файле in. c описана функция insert (), выполняющая ввод данных в справочник с помощью стандартных функций ввода языка С. При вводе данных в справочник проверяется корректность вводимой информации.

#include" my. h"

void insert (){

int k=0,j, n=0;

char c;

system («clear»);

for (i=0;i<20;){

printf («Введите марку %d жк-индикатора:n», i+1);

gets (s[i]. marka);

if (s[i].marka=='')

continue;

do{

n=0;

printf («Введите цвет %d жк-индикатора:n», i+1);

scanf («%s» ,&s[i]. colour);

for (j=0;j

if (isdigit (s[i].colour[j])){

printf («Введены не корректные данные! nНАЖМИТЕ ENTERn»);

n=1;

while (getchar ()≠'n');

getchar ();

system («clear»);

}

}

while (getchar ()≠'n');

}while (n==1);

while (1){

printf («Введите кол разрядов %d жк-индикатора:n», i+1);

if (!(scanf («%d» ,&s[i]. r)) || s[i]. r<0){

while (getchar ()≠'n');

printf («Ввелены не коррекные данные! nНАЖМИТЕ ENTER»);

getchar ();

system («clear»);

}

else{

while (getchar ()≠'n');

break;

}

}

while (1){

printf («Введите системму исчисления %d nжк-индикатора (2-ичная, 8-ричная, 10-тиричная, 16-тиричная):n», i+1);

if (!(scanf («%d» ,&s[i]. I)) || s[i]. I<0){

while (getchar ()≠'n');

printf («Ввелены не коррекные данные! nНАЖМИТЕ ENTER»);

getchar ();

system («clear»);

}

else{

break;

while (getchar ()≠'n');

}

}

while (1){

printf («Введите допустимое напряжение %d жк-индикатора:n», i+1);

if (!(scanf («%f» ,&s[i]. u)) || s[i]. u<0){

while (getchar ()≠'n');

printf («Ввелены не коррекные данные! nНАЖМИТЕ ENTER»);

getchar ();

system («clear»);

}

else{

while (getchar ()≠'n');

break;

}

}

i++;

while (c≠'y' && c≠'Y' && c≠'n' && c≠'N'){

printf («Хотите ввести ещё данные?(Y/N)n»);

c=getchar ();

while (getchar ()≠'n');

if (c=='N' || c=='n'){

system («clear»);

k=1;

c='';

break;

}

if (c=='Y' || c=='y'){

system («clear»);

k=0;

c='';

break;

}

if (c≠'Y' || c≠'y' || c≠'n' || c≠'N'){

printf («Введён не неизвесный оператор, попробуйте ещё! n»);

c='';

}

}

if (k==1)

break;

}

return;

}

puz.c

В файле puz. c описана функция сортировки данных методом выборки по числовому полю.

#include" my. h"

void puz (){

int k, j;

struct st buf;

for (k=0;k

for (j=0;j

if (s[j+1]. r < s[j]. r){

buf=s[j+1];

s[j+1]=s[j];

s[j]=buf;

}

printf («Массив успешно отформатирован!!! nНАЖМИТЕ ENTERn»);

getchar ();

getchar ();

return;

}

plus.c

В файле plus. с находится описание функции добавления записи с помощью функций ввода С.

#include" my. h"

void ps (){

int k=0,j, n=0;

char c;

system («clear»);

for (i;i<20;){

printf («Введите марку %d жк-индикатора:n», i+1);

gets (s[i]. marka);

if (s[i].marka=='')

continue;

do{

n=0;

printf («Введите цвет %d жк-индикатора:n», i+1);

scanf («%s» ,&s[i]. colour);

for (j=0;j

if (isdigit (s[i].colour[j])){

printf («Введены не корректные данные! nНАЖМИТЕ ENTERn»);

n=1;

while (getchar ()≠'n');

getchar ();

system («clear»);

}

}

while (getchar ()≠'n');

}while (n==1);

while (1){

printf («Введите кол разрядов %d жк-индикатора:n», i+1);

if (!(scanf («%d» ,&s[i]. r)) || s[i]. r<0){

while (getchar ()≠'n');

printf («Ввелены не коррекные данные! nНАЖМИТЕ ENTER»);

getchar ();

system («clear»);

}

else{

while (getchar ()≠'n');

break;

}

}

while (1){

printf («Введите системму исчисления %d nжк-индикатора (2-ичная, 8-ричная, 10-тиричная, 16-тиричная):n», i+1);

if (!(scanf («%d» ,&s[i]. I)) || s[i]. I<0){

while (getchar ()≠'n');

printf («Ввелены не коррекные данные! nНАЖМИТЕ ENTER»);

getchar ();

system («clear»);

}

else{

break;

while (getchar ()≠'n');

}

}

while (1){

printf («Введите допустимое напряжение %d жк-индикатора:n», i+1);

if (!(scanf («%f» ,&s[i]. u)) || s[i]. u<0){

while (getchar ()≠'n');

printf («Ввелены не коррекные данные! nНАЖМИТЕ ENTER»);

getchar ();

system («clear»);

}

else{

while (getchar ()≠'n');

break;

}

}

i++;

while (c≠'y' && c≠'Y' && c≠'n' && c≠'N'){

printf («Хотите ввести ещё данные?(Y/N)n»);

c=getchar ();

while (getchar ()≠'n');

if (c=='N' || c=='n'){

system («clear»);

k=1;

c='';

break;

}

if (c=='Y' || c=='y'){

system («clear»);

k=0;

c='';

break;

}

if (c≠'Y' || c≠'y' || c≠'n' || c≠'N'){

printf («Введён не неизвесный оператор, попробуйте ещё! n»);

c='';

}

}

if (k==1)

break;

}

return;

}

sv.c

В файле sv. c описана функция сохранения справочника в дисковом файле с помощью функций языка С.

#include" my. h"

struct kart;

void save (){

char k[8];

int a, I=0;

FILE *f;

while (1){

system («clear»);

printf («Введите имя файла: n»);

getchar ();

gets (k);

if ((f=fopen (k," w"))==NULL){

fprintf (stderr," Ошибка открытия файла!! nНАЖМИТЕ ENTER");

getchar ();

}

else

break;

}

fwrite (&i, sizeof (int), 1, f);

for (a=0;a

fwrite (&s[a], sizeof (struct st), 1, f);

fclose (f);

printf («Файл успешно сохранён. nНАЖМИТЕ ENTER»);

getchar ();

return;

}

op.c

В файле sv. c описана функция сохранения справочника в дисковом файле с помощью функций языка С.

#include" my. h"

void open (){

int a, r;

char e, k[8];

FILE *f;

while (1){

system («clear»);

printf («Введите имя файла: n»);

getchar ();

gets (k);

if ((f=fopen (k," r+b"))==NULL){

printf («Ошибка открытия файла!! nНАЖМИТЕ ENTER»);

getchar ();

exit (1);

}

else

break;

}

fread (&i, sizeof (int), 1, f);

for (a=0;a

fread (&s[a], sizeof (struct st), 1, f);

fclose (f);

printf («Данные успешно прочтены из файла '%s'!!!НАЖМИТЕ ENTERn», k);

getchar ();

return;

}

out.cpp

В файле out. cpp находится описание функции вывода созданного справочника на экран с помощью потоков языка С++.

#include" my. h"

void out ()

int f;

system («clear»);

cout<<" Параметры ж — к индикаторов" <<" n"

<<" =========================================================="<<" n" ;

cout.setf (ios:right);

cout<<<" N

vst.cpp

В файле vst. cpp описана функция сортировки дискового файла методом вставки по числовому полю с использованием потоковых классов языка С++.

#include" my. h"

void vst (){

int r, l;

char k[16];

struct st buf, buf1;

system («clear»);

cout << «Введите имя файла: «;

getchar ();

gets (k);

std:fstream infile (k);

if (!infile){

cout << «Ошибка открытия файла!! nНАЖМИТЕ ENTER» ;

getchar ();

exit (1);

}

else{

infile.read ((char*)&i, sizeof (int));

for (r = 1; r < i; r++) {

infile.seekg (sizeof (int)+sizeof (struct st)*r, ios: beg);

infile.read ((char*)&buf, sizeof (struct st));

l=r-1;

infile.seekg (sizeof (int)+sizeof (struct st)*l, ios: beg);

infile.read ((char*)&buf1, sizeof (struct st));

for (l; l>=0 && buf. r < buf1. r; l){

infile.seekp (sizeof (int)+sizeof (struct st)*(l+1), ios: beg);

infile.write ((char*)&buf1, sizeof (struct st));

l—;

if (l<0) break;

infile.seekg (sizeof (int)+sizeof (struct st)*l, ios: beg);

infile.read ((char*)&buf1, sizeof (struct st));

}

infile.seekp (sizeof (int)+sizeof (struct st)*(l+1), ios: beg);

infile.write ((char*)&buf, sizeof (struct st));

}

cout << «Массив отсортирован успешно! nНАЖМИТЕ ENTER» ;

cin.get ();

infile.close ();

}

return;

}

Заключение

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

Приобрели навыки составления законченной программы с пользовательским интерфейсом и коррекцией ошибок. В ходе работы был проанализирован и систематизирован учебный материал, заполнились пробелы в знаниях. Получены навыки практического применения знаний по теме лекций «Алгоритмизация и программирование на языке C» .

Т.к. язык Cдовольно удобный инструмент для получения быстрых и компактных программ, использующих эффективно доступные ресурсы машины, он налаживает определённые требования на разработчика: в отличие от «классических» языков инженерного программирования (Фортран и т. д.), язык С способен на базовом уровне выполнять только простейшие операции, характерные для большинства процессорных платформ (собственно с помощью чего достигается его эффективность). Вследствие этого инженер-программист, использующий для решения вычислительной проблемы язык C, должен обладать чёткой культурой программирования и ясно понимать процессы, происходящие в машине, при выполнении составленной им программы.

Список рекомендуемой литературы

1. Стивен Прата. / Язык программирования С-, — М. Издательство «Диасофт», 2012. — 896 с.

2. Г. Шилдт. / Программирование в С —, — Спб. Издательство «Питер». 2004

3. П. Дейтел, X. Дейтел. / Как программировать на C±t-.- М, Издательство «Бином» 2010. — 1152 стр.

4. О. П. Гораев. Ю. П. Лыч. Текстовый процессор MS WORD. Практикум по компьютерным технологиям. Бел-ГУТ. 2009. — 68 с.

Показать весь текст
Заполнить форму текущей работой