Разработка программ на языке программирования С\С++: информационно-поисковый справочник "ж/к индикаторов"
Рассмотрение особенностей языка программирования С++. Пример составления программы - информационно-поискового справочника. Описание алгоритмов коррекции данных, введённых пользователем. Тестирование полученной программы, предусмотрение ее защиты.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 05.03.2015 |
Размер файла | 20,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовая работа
Разработка программ на языке программирования С\С++: информационно-поисковый справочник "ж/к индикаторов"
Содержание
программирование поисковый справочник информационный
Введение
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.o -o 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<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<iomanip>
#include<iostream>
#include<fstream>
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<i;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НАЖМИТЕ ENTER\n");
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=='\0')
continue;
do{
n=0;
printf("Введите цвет %d жк-индикатора:\n",i+1);
scanf("%s",&s[i].colour);
for(j=0;j<strlen(s[i].colour);j++){
if(isdigit(s[i].colour[j])){
printf("Введены не корректные данные!\nНАЖМИТЕ ENTER\n");
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='\0';
break;
}
if(c=='Y' || c=='y'){
system("clear");
k=0;
c='\0';
break;
}
if(c!='Y' || c!='y' || c!='n' || c!='N'){
printf("Введён не неизвесный оператор, попробуйте ещё!\n");
c='\0';
}
}
if(k==1)
break;
}
return;
}
puz.c
В файле puz.c описана функция сортировки данных методом выборки по числовому полю.
#include"my.h"
void puz(){
int k,j;
struct st buf;
for(k=0;k<i;k++)
for(j=0;j<i-1;j++)
if(s[j+1].r < s[j].r){
buf=s[j+1];
s[j+1]=s[j];
s[j]=buf;
}
printf("Массив успешно отформатирован!!!\nНАЖМИТЕ ENTER\n");
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=='\0')
continue;
do{
n=0;
printf("Введите цвет %d жк-индикатора:\n",i+1);
scanf("%s",&s[i].colour);
for(j=0;j<strlen(s[i].colour);j++){
if(isdigit(s[i].colour[j])){
printf("Введены не корректные данные!\nНАЖМИТЕ ENTER\n");
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='\0';
break;
}
if(c=='Y' || c=='y'){
system("clear");
k=0;
c='\0';
break;
}
if(c!='Y' || c!='y' || c!='n' || c!='N'){
printf("Введён не неизвесный оператор, попробуйте ещё!\n");
c='\0';
}
}
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<i;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<i;a++)
fread(&s[a],sizeof(struct st),1,f);
fclose(f);
printf("Данные успешно прочтены из файла '%s'!!!НАЖМИТЕ ENTER\n",k);
getchar();
return;
}
out.cpp
В файле out.cpp находится описание функции вывода созданного справочника на экран с помощью потоков языка С++.
#include"my.h"
void out(){
int f;
system("clear");
cout<<"Параметры ж - к индикаторов"<<"\n"
<<"=========================================================="<<"\n";
cout.setf(ios::right);
cout<<setw(2)<<"N|"
<<setw(15)<<"Марка"
<<setw(15)<<"Раб.напряжение"
<<setw(10)<<"Цвет"
<<setw(12)<<"Разрядность"
<<setw(16)<<"Сис. исчисления"<<"\n"
<<setw(2)<<"|"
<<setw(15)<<"индикатора"
<<setw(15)<<"B."
<<setw(10)<<" "
<<setw(12)<<" "
<<setw(16)<<" "<<"\n"
<<"=========================================================="<<"\n";
for(f=0;f<i;f++){
cout<<setw(1)<<f+1<<"|"
<<setw(15)<<s[f].marka
<<setw(15)<<s[f].u
<<setw(10)<<s[f].colour
<<setw(12)<<s[f].r
<<setw(16)<<s[f].I<<"\n";
}
cout<<"======================================================"<<endl;
getchar();
getchar();
return;
}
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 с.
Размещено на Allbest.ru
Подобные документы
История создания языков С и С++. Разработка буквенного меню, посредством которого реализуются функции информационно-поискового справочника "Терморезисторы". Определение структуры данных, защита программы от ввода пользователем некорректных параметров.
курсовая работа [18,3 K], добавлен 16.02.2012Совместимость и преобразование типов данных. Создание информационно-поисковой системы на языке программирования Паскаль. Описание интерфейса, каждого блока программы "Картотека больных". Рассмотрение результатов работы программы, сортирования данных.
курсовая работа [368,9 K], добавлен 18.05.2015Структура данных с указанием типов. Общая структурная схема программы. Алгоритмы сортировки вставками. Назначение make-файла. Функции управления программой; перемещения и корректировки введенных данных и их удаления справочника, загрузки данных из файла.
курсовая работа [1,3 M], добавлен 12.01.2016Реализация информационно-справочной системы на языке программирования C#. ее тестирование и отладка. Назначение, состав и структура программы "Адресная книга", описание операций. Программные и аппаратные требования к системе. Блок-схема и код программы.
курсовая работа [709,5 K], добавлен 11.06.2019Алгоритмизация и структурное программирование на языке С/С++. Создание справочника в памяти (ввод данных), вывод справочника на экран с использованием потоковых классов, сортировка методом Шелла. Циклы, описание применяемых специальных алгоритмов.
курсовая работа [1,0 M], добавлен 26.02.2012Возможности языков программирования С и С++. Разработка и реализация информационно-поискового справочника "Блок питания", листинг программы. Функции и структура данных в программе. Динамическое распределение памяти, работа с файлами, несложные сортировки.
курсовая работа [38,7 K], добавлен 10.01.2011Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.
лабораторная работа [43,1 K], добавлен 21.07.2012Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Описание возможностей языка программирования Turbo Pascal. Написание программы создания файлов с прямым доступом, которая также будет обрабатывать наборы данных с определенными полями и ограничениями. Контрольный пример работы поисковой программы.
курсовая работа [563,6 K], добавлен 22.01.2016Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.
контрольная работа [204,4 K], добавлен 26.01.2013