Разработка и реализация информационно-поискового справочника "Терморезисторы" на гибриде языков С и С++

История создания языков С и С++. Разработка буквенного меню, посредством которого реализуются функции информационно-поискового справочника "Терморезисторы". Определение структуры данных, защита программы от ввода пользователем некорректных параметров.

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

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

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

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

Учреждение образования

Белорусский Государственный Университет Транспорта

Кафедра Информационных технологий

Курсовая работа

по предмету: Информатика и информационные технологии

Выполнил: студент группы ЭС-22

Горбачёва К.С.

Проверил: преподаватель

Балащенко Д.В.

Гомель 2010

Содержание

Введение

1. Разработка программы. Описание работы программы

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

Заключение

Список литературы

Введение

меню поисковый справочник данные

Язык программирования Си был разработан в лабораториях BellLabs в период с 1969 по 1973 годы. Существует несколько легенд, касающихся причин разработки Си и его отношения к операционной системе UNIX, включая следующие:

1) Разработка Си стала результатом того, что его будущие авторы любили компьютерную игру, подобную популярной игре Asteroids (Астероиды). Они уже давно играли в неё на главном сервере компании, который был недостаточно мощным и должен был обслуживать около ста пользователей. Томпсон и Ритчи посчитали, что им не хватает контроля над космическим кораблём для того, чтобы избегать столкновений с некоторыми камнями. Поэтому они решили перенести игру на свободный PDP-7, стоящий в офисе. Однако этот компьютер не имел операционной системы, что заставило их написать её. В конце концов, они решили перенести эту операционную систему ещё и на офисный PDP-11, что было очень тяжело, потому что её код был целиком написан на ассемблере. Было вынесено предложение, использовать какой-нибудь высокоуровневый портативный язык, чтобы можно было легко переносить ОС с одного компьютера на другой. Язык Си, который они хотели сначала задействовать для этого, оказался лишён функциональности, способной использовать новые возможности PDP-11. Поэтому они и остановились на разработке языка Си.

2) Самый первый компьютер, для которого была первоначально написана UNIX, предназначался для создания системы автоматического заполнения документов. Первая версия UNIX была написана на ассемблере. Позднее для того, чтобы переписать эту операционную систему, был разработан язык Си.

К 1973 году язык Си стал достаточно силён, и большая часть ядра UNIX, первоначально написанная на ассемблере PDP-11/20, была переписана на Си.

Язык С++ возник в начале 1980-х годов, когда сотрудник фирмы BellLaboratoriesБьёрн Страуструп придумал ряд усовершенствований к языку Си под собственные нужды.

Название «Си++» было придумано Риком Масситти (Rick Mascitti) и впервые было использовано в декабре 1983 года. Ранее, на этапе разработки, новый язык назывался «Си с классами».

Нововведениями С++ в сравнении с С являются:

· поддержка объектно-ориентированного программирования;

· поддержка обобщённого программирования через шаблоны;

· дополнительные типы данных;

· исключения;

· пространства имён;

· встраиваемые функции;

· перегрузка операторов;

· перегрузка имён функций;

· ссылки и операторы управления свободно распределяемой памятью;

· дополнения к стандартной библиотеке.

Язык С++ во многом является надмножеством языка С.

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

1. Разработка программы. Описание работы программы

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

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

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

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

3) Удаление записи из справочника.

4) Вывод записи по её порядковому номеру.

5) Сортировка методом быстрой сортировки по полю строкового типа (по алфавиту).

6) Сортировка методом Шелла по числовому полю.

7) Сортировка методом быстрой сортировки по числовому полю.

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

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

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

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

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

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

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

Makefile

pusk:vvod.o menu.o vyvod.o vyvodn.o save.o open.o sortsh.o

sortm.o delit.o sortb.o

g++vvod.o menu.o vyvod.o vyvodn.o open.o save.o

sortsh.o sortm.o delit.o sortb.o -opusk

menu.o:menu.c header.h

g++ -c menu.c

vvod.o: vvod.c header.h

g++ -c vvod.c

vyvod.o: vyvod.c ppheader.h

g++-c vyvod.cpp

vyvodn.o: vyvodn.cpp header.h

g++ -c vyvodn.cpp

save.o: save.c header.h

g++ -c save.c

open.o:open.c header.h

g++ -c open.c

delit.o: delit.c header.h

g++ -c delit.c

sortb.o: sortb.c header.h

g++ -c sortb.c

sortsh.o: sortsh.c header.h

g++ -c sortsh.c

sortm.o: sortm.c header.h

g++ -c sortm.c

//Заголовочный файл программы

#include<stdio.h>

#include<stdlib.h>

#include<ctype.h>

#include<string.h>

#include<iomanip>

#include<iostream>

struct st{

char marka[10];

char izgotov [10];

char material[10];

float RR;

int Rn;

};

using namespace std;

void vvod();

void vyvod();

void vyvodn();

void start();

void save();

void open();

void sortsh();

void sortm();

voidsortb();

void delit();

//Менюпрограммы

#include"header.h"

extern struct st s[15];

extern int i;

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

int z,a;

if(argc>1){

FILE *f;

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<i;a++)

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

fclose(f);

}

}

while(1){

while(1){

printf(" MENU:\n\n[1] Ввод данных.\n");

printf("[2] Вывод справочника на экран.\n");

printf("[3] Удаление записи из справочника.\n");

printf("[4] Вывод записи по её порядковому номеру.\n");

printf("[5] Сортировка по марке(быстрая).\n");

printf("[6] Сортировка по номинальному сопротивлению (шелла).\n");

printf("[7] Сортировка по отношению R/Rn (быстрая).\n");

printf("[8] Сохранение данных.\n");

printf("[9] Открыть файл...\n");

printf("[0] Завершение работы.\n");

if(!(scanf("%d",&z)) || z<0 || z>9){

printf("Введены неверные данные!!!\nНАЖМИТЕ ENTER\n");

while(getchar()!='\n');

}

else

break;

}

switch(z){

case 1:

vvod();

break;

case 2:

vyvod();

break;

case 3:

delit();

break;

case 4:

vyvodn();

break;

case 5:

sortm();

break;

case 6:

sortsh();

break;

case 7:

sortb();

break;

case 8:

save();

break;

case 9:

open();

break;

case 0:

{printf("Программа успешно завершила работу.");

return 0;

}

}

}

}

//Создание справочника в памяти

#include"header.h"

struct sts[15];

int i;

void vvod(){

int k=0,j,n=0;

char c;

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

printf("Введите марку%d терморезистора:\n",i+1);

while(getchar()!='\n')

continue;

gets(s[i].marka);

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

continue;

printf("Введите изготовителя%d терморезистора:\n",i+1);

gets(s[i].izgotov);

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

continue;

printf("Введите материал%d терморезистора:\n",i+1);

gets(s[i].material);

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

continue;

while(1){

printf("Введите номинальное сопротивление%d терморезистора:\n",i+1);

if(!(scanf("%d",&s[i].Rn)) || s[i].Rn<0){

while(getchar()!='\n');

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

}

else

break;

}

while(1){

printf("Введите R/Rn (при t=10)%d терморезистора:\n",i+1);

if(!(scanf("%f",&s[i].RR)) || s[i].RR<0){

while(getchar()!='\n');

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

}

else

break;

}

i++;

while(c!='y' && c!='Y' && c!='n' && c!='N'){

printf("Желаете ввести ещё данные?(Y/N)\n");

while(getchar()!='\n');

c=getchar();

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

k=1;

c='\0';

break;

}

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

k=0;

c='\0';

break;

}

if(c!='Y' || c!='y' || c!='n' || c!='N')

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

}

if(k==1)

break;

}

return;

}

//Вывод справочника на экран

#include"header.h"

extern struct st s[15];

extern int i;

void vyvod(){

int f;

cout<<"Параметры терморезистора"<<"\n"

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

cout.setf(ios::right);

cout<<setw(4)<<"N|"

<<setw(20)<<"Марка"

<<setw(15)<<"Производитель"

<<setw(18)<<"Материал"

<<setw(10)<<"R/Rn"

<<setw(10)<<"Rn"<<"\n"

<<setw(4)<<"|"

<<setw(20)<<"терморезистора"

<<setw(15)<<""

<<setw(18)<<""

<<setw(10)<<"%."

<<setw(10)<<"Ом."<<"\n"

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

for(f=0;f<i;f++){

cout<<setw(3)<<f+1<<"|"

<<setw(20)<<s[f].marka

<<setw(15)<<s[f].izgotov

<<setw(18)<<s[f].material

<<setw(10)<<s[f].RR

<<setw(10)<<s[f].Rn<<"\n";

}

cout<<"========================================="<<endl;

return;

}

//Удаление записи из справочника

#include"header.h"

extern struct st s[15];

extern int i;

void delit(){

int k,y;

if(i==0){

printf("Не найдено ни одной записи!\n");

return;

}

while(1){

printf("Введите номер удаляемой записи (1-%d):\n",i);

if(!(scanf("%d",&k)) || k>i || k<1){

printf("Строки с таким номером не существует!\nНАЖМИТЕ ENTER");

}

else

break;

}

for(y=k-1;y<i;y++)

s[y]=s[y+1];

i--;

printf("Запись удалена!\nНАЖМИТЕ ENTER");

return;

}

//Вывод записи по её порядковому номеру

#include"header.h"

extern struct st s[15];

extern int i;

void vyvodn(){

int x;

printf("Введите данные для поиска:\n");

getchar();

cin>> x;

cout<<"Параметры терморезистора"<<"\n"

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

cout.setf(ios::right);

cout<<setw(4)<<"N|"

<<setw(20)<<"Марка"

<<setw(15)<<"Производитель"

<<setw(18)<<"Материал"

<<setw(10)<<"R/Rn"

<<setw(10)<<"Rn"<<"\n"

<<setw(4)<<"|"

<<setw(20)<<"терморезистора"

<<setw(15)<<""

<<setw(18)<<""

<<setw(10)<<"%."

<<setw(10)<<"Ом."<<"\n"

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

cout<<setw(3)<<x<<"|"

<<setw(20)<<s[x-1].marka

<<setw(15)<<s[x-1].izgotov

<<setw(18)<<s[x-1].material

<<setw(10)<<s[x-1].RR

<<setw(10)<<s[x-1].Rn<<"\n";

cout<<"========================================="<<endl;

return;

}

//Сортировка методом быстрой сортировки по полю строкового типа

#include"header.h"

extern struct st s[15];

extern int i;

void start(int l,int r){

int a,b,z=0;

struct st y;

a=l; b=r;

do{

while(strcmp(s[a].marka,s[(r+l)/2].marka)<0 && a<r)a++;

while(strcmp(s[b].marka,s[(r+l)/2].marka)>0 && b>l)b--;

if(a<=b){

y=s[a];

s[a]=s[b];

s[b]=y;

a++; b--;

}

} while(a<=b);

if(l<b) start(l,b);

if(a<r) start(a,r);

return;

}

void sortm(){

start(0,i-1);

printf("Данные успешно отформатированы!!!НАЖМИТЕ ENTER\n");

return;

}

//Сортировка методом Шелла

#include"header.h"

extern struct st s[15];

extern int i;

void sortsh(){

int j,k,r;

struct st buf;

r=i/2;

while(r>0){

for(j=0;j<i-r;j++){

k=j;

while((k>=0) && s[k].RR>s[k+r].RR){

buf=s[k];

s[k]=s[k+r];

s[k+r]=buf;

k--;

}

}

r=r/2;

}

printf("Данные отсортированы успешно!\nНАЖМИТЕ ENTER");

return;

}

//Сортировка методом быстрой сортировки по числовому полю

#include"header.h"

extern struct st s[15];

extern int i;

void start1(int l,int r){

int a,b;

struct st y;

a=l; b=r;

do{

while(s[a].Rn<s[(r+l)/2].Rn&& a<r)a++;

while(s[b].Rn>s[(r+l)/2].Rn&& b>l)b--;

if(a<=b){

y=s[a];

s[a]=s[b];

s[b]=y;

a++; b--;

}

} while(a<=b);

if(l<b) start1(l,b);

if(a<r) start1(a,r);

return;

}

void sortb(){

start1(0,i-1);

printf("Данные успешно отформатированы!!!НАЖМИТЕ ENTER\n");

return;

}

//Сохранение справочника в файл

#include"header.h"

extern struct st s[15];

extern int i;

void save(){

char k[8];

int a,I=0;

FILE *f;

while(1){

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

getchar();

gets(k);

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

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

}

else

break;

}

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

for(a=0;a<i;a++)

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

fclose(f);

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

return;

}

//Открытие справочника из файла

#include"header.h"

extern struct st s[15];

extern int i;

void open(){

int a,r;

chare,k[8];

FILE *f;

while(1){

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

getchar();

gets(k);

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

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

exit(1);

}

else

break;

}

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

for(a=0;a<i;a++)

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

fclose(f);

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

return;

}

Созданный в программе файл, который содержит базу данных, в которой хранятся реальные параметры «Терморезисторов»:

Марка терморезистора

Производитель

Материал

R/Rn,%

Rn, Ом

1

РТС-ТД

Витебский завод радиодеталей

Медь

30

62

2

РТС-Л

Витебский завод радиодеталей

Медь

30

500

3

РТС-Н

Витебский завод радиодеталей

Медь

30

1000

4

РТС-П

Витебский завод радиодеталей

Медь

35

33

5

РТС-НТ

Витебский завод радиодеталей

Медь

50

2500

6

РТС-2З

Витебский завод радиодеталей

Медь

30

27

7

РТС-Д

Витебский завод радиодеталей

Медь

30

3,3

Заключение

В ходе создания курсового проекта я открыл для себя абсолютно новые методы сортировок: методом Шелла и методом быстрой сортировки. Самое интересное было в том, что сортировка методом Шелла иначе называется: сортировка методом вставок с погружением. Так же очень интересно было узнать, что быстрая сортировка не является наиболее быстрой сортировкой из всех существующих и ей уже более 40 лет. Кроме этого были закреплены знания в области работы с бинарными файлами в языке С++.

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

Список использованной литературы

1. Прата С. Язык программирования С. - М.: Диасофт, 2002. - 896 с.

2. Лафоре Р. Объектно-ориентированное программирование в С -. - СПб.: Питер. 2004. - 928 с.

3. Дейтел П., Дейтел X. Как программировать на C+-t-. - М.: Бином, 2001. - 1152 с.

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

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


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

  • Возможности языков программирования С и С++. Разработка и реализация информационно-поискового справочника "Блок питания", листинг программы. Функции и структура данных в программе. Динамическое распределение памяти, работа с файлами, несложные сортировки.

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

  • Рассмотрение особенностей языка программирования С++. Пример составления программы - информационно-поискового справочника. Описание алгоритмов коррекции данных, введённых пользователем. Тестирование полученной программы, предусмотрение ее защиты.

    курсовая работа [20,0 K], добавлен 05.03.2015

  • Структура данных с указанием типов. Общая структурная схема программы. Алгоритмы сортировки вставками. Назначение make-файла. Функции управления программой; перемещения и корректировки введенных данных и их удаления справочника, загрузки данных из файла.

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

  • История развития справочников/баз данных. Основные параметры, необходимые для создания справочника по предприятию. Разработка интерфейса программы в среде CSharp. Детальный просмотр функций программы. Системные требования к ПК и руководство пользователя.

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

  • Ознакомление с методами анализа популярности языков программирования. Рассмотрение логической модели базы данных дистанционного практикума. Разработка листинга скрипта создания таблицы-справочника. Анализ статистики по применению языков программирования.

    диссертация [1,4 M], добавлен 10.07.2017

  • Разработка программы для поиска нужных сведений в телефонном справочнике с использованием языка программирования Borland C++, в качестве базы данных которого используется файл (base.txt). Реализация функции сортировки по фамилии в форматах (А-я) и (Я-а).

    курсовая работа [261,8 K], добавлен 22.08.2013

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

    методичка [1,1 M], добавлен 20.05.2014

  • Проектирование интерактивного справочника магазина "Азарт", для реализации продукции посредством сети Интернет. Разработка базы данных, описание программы и составление руководства для оператора. Экспериментальное исследование разработанного продукта.

    дипломная работа [3,8 M], добавлен 06.06.2014

  • Главные преимущества использования информационно-аналитической системы "Невод". Характеристика объектов с использованием значений атрибута. Форма ввода данных, их интеграция. Формирование сложного поискового задания. Визуализация семантической сети.

    презентация [382,8 K], добавлен 14.10.2013

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

    курсовая работа [4,4 M], добавлен 10.05.2019

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