- •Выбор и анализ структур данных.
- •Разработка программы
- •Общие положения.
- •Руководство пользователя
- •3.1 Интерфейс
- •3.2 Режим администратора
- •3.3 Работа с функциями.
- •3.4Режим оператора
- •Контрольный пример использования программы
- •4.1 Режим администратора
- •4.2 Работа с первой функцией.
- •Тестирование
- •Тестовый вариант.
- •Тестовый вариант.
- •Тестовый вариант.
- •Тестовый вариант.
- •Драйвера и заглушки
- •Заключение
- •Список литературы
- •Приложение 1. Программный код.
Драйвера и заглушки
Функция: |
Характеристики: |
Описания: |
Fun_ADMIN_2()
|
Принимаемые значения: |
отсутствуют |
Возвращаемые значения: |
отсутствуют | |
Заглушка: |
int Fun_ADMIN_2(){ printf(“ Fun_ADMIN_2 ACTIVE”); } | |
Тип драйвера |
С | |
Прототип: |
int Fun_ADMIN_2() |
Функция: |
Характеристики: |
Описания: |
Fun_ADMIN_3()
|
Принимаемые значения: |
отсутствуют |
Возвращаемые значения: |
отсутствуют | |
Заглушка: |
int Fun_ADMIN_3(){ printf(“ Fun_ADMIN_3 ACTIVE”); } | |
Тип драйвера |
С | |
Прототип: |
int Fun_ADMIN_3() |
Функция: |
Характеристики: |
Описания: |
Fun_ADMIN_4()
|
Принимаемые значения: |
отсутствуют |
Возвращаемые значения: |
отсутствуют | |
Заглушка: |
int Fun_ADMIN_4(){ printf(“ Fun_ADMIN_4 ACTIVE”); } | |
Тип драйвера |
С | |
Прототип: |
int Fun_ADMIN_4() |
Функция: |
Характеристики: |
Описания: |
Fun_ADMIN_5()
|
Принимаемые значения: |
отсутствуют |
Возвращаемые значения: |
отсутствуют | |
Заглушка: |
int Fun_ADMIN_5(){ printf(“ Fun_ADMIN_5 ACTIVE”); } | |
Тип драйвера |
С | |
Прототип: |
int Fun_ADMIN_5() |
Заключение
В данной курсовой работе была разработана информационная система и показана её реализация на языке программирования Си. В данной курсовой работе были реализованы и протестированы функции соответствии с заданием. Курсовая работа очень помогла в закреплении знаний полученных в процессе обучения.
Список литературы
1. http://ru.wikipedia.org/wiki/Цикломатическая_сложностьДата обращения 14.05.2013
2. С. А. Орлов Технологии разработки программного обеспечения2 издание, 2003 год, 480 стр., 17х23 см (70х100/16), Твердый переплет, ISBN 5-318-00078-9
3. Автор: Джесс Либерти. Год: 2000 , Издательство: "Вильямс" , Название: С++ за 21 день, количество страниц: 834, ISBN:5-8459-0056-5, 0-672-31515-7
4. АвторСтефан Р. Дэвис , Издательство Диалектика, 4-е издание учебник по C++ для начинающих ,Год 2003.
5. Автор: Кочан Стефан,Издательство: И.Д. Вильямс, Год: 2007,Страниц: 496.Название: Программирование на языке С.
Приложение 1. Программный код.
#include<stdio.h>
#include"VHH.h"
#include"MAIN_ADMIN.h"
#include<locale.h>
#include<iostream>
main()
int main(){
setlocale(LC_ALL, "Russian");
printf("\n");
system("cls");
printf(" Для начала работы выполните вход\n");
printf(" __________________________________________________\n");
printf(" Выберите один из двух вариантов входа\n");
printf(" ---------------------------------------------------\n");
printf(" 1.Администратор\n");
printf(" ИЛИ \n");
printf(" 2.Оператор\n");
printf(" 3.ВЫХОД!!!\n");
printf("Выберите цифру\n");
scanf("%d",&a1);
system("cls");
switch(a1)
{
case 1:
MAIN_ADMIN();
system("pause");
break;
case 2:
MAIN_USER();
break;
case 3:
Fun_ADMIN_EXIT();
break;
default:
system("cls");
printf(" ОШИБКА!!!\n");
printf(" Повторите ввод\n");
printf(" -----------------------\n");
system("pause");
system("cls");
return main();
}
}
MAIN_ADMIN()
int MAIN_ADMIN(){
printf(" Вы выбрали: (АДМИНИСТРАТОР)\n");
printf(" Выберите один из двух вариантов \n");
printf(" -----------------------------------\n");
printf("1.Ввод пароля\n");
printf("2.Изменение пароля\n");
printf(">:");
scanf("%d",&o);
switch(o)
{
case 1:
system("cls");
if((pass=fopen("F:\pass.txt","r"))==NULL){
printf("ОШИБКА!!!\n");
system("pause");
return main();
}
printf("Введите пароль:\n");
scanf("%s",parol2);
fscanf(pass,"%s%s",pas,&l);
system("cls");
if(strcmp(parol2,pas)==0){
printf(" Вход в систему выполнен\n ---------------------------------\n");
system("pause");
system("cls");
printf(" ЗАДАНИЕ.\n\n");
printf("Предметная область – магазин. Объект – товар. \n");
printf("Данные об объекте:\n");
printf("-наименование;\n");
printf("-категория товара (мясная, молочная, кондитерская и т.д.);\n");
printf("-дата изготовления;\n");
printf("-срок годности;\n");
printf("-наличие вкусовых добавок;\n");
printf("-цена.\n");
printf("Функции:\n");
printf("1.Вывести наименования товаров с датой изготовления,вписывающейся в указанный диапазон.\n");
printf("2.Задать текущую дату и вывести наименования всех просроченных товаров.\n");
printf("3.Вывести все товары, расположив их в порядке возрастания цены. Товары с одинаковой ценой отсортировать по алфавиту по наименованию.\n");
printf("4.Определить, в какой категории больше всего наименований товаров.\n");
printf("5.Определить, присутствуют ли вкусовые добавки в самом дешевом товаре из каждой категории.\n");
system("pause");
system("cls");
}
else
{
printf("Неверный пароль\n");
system("pause");
return main();
}
break;
case 2:
system("cls");
if((pass=fopen("F:\pass.txt","r"))==NULL){
printf("ОШИБКА!!!\n");
system("pause");
return main();
}
printf("Введите пароль:\n");
scanf("%s",parol2);
fscanf(pass,"%s%s",pas,&l);
if(strcmp(parol2,pas)==0){
printf(" Введите новый пароль!!!\n ---------------------------------\n");
printf(">:");
if((pass=fopen("F:\pass.txt","w+"))==NULL){
printf("ОШИБКА!!!\n");
system("pause");
return main();
}
scanf("%s",parol2);
fputs(parol2,pass);
system("cls");
printf(" Новый пароль принят!!!\n ---------------------------------\n");
system("pause");
fclose(pass);
return main();
}
else
{
printf("Неверный пароль\n");
system("pause");
return main();
}
break;
default:
printf(" ОШИБКА!!!\n");
printf(" Повторите ввод\n");
printf(" -----------------------\n");
system("pause");
return main();
}
while(1){
printf(" Выберите желаемое действие\n \n");
printf("1.Вывести наименования товаров с датой изготовления,вписывающейся в указанный диапазон.\n");
printf("2.Задать текущую дату и вывести наименования всех просроченных товаров.\n");
printf("3.Вывести все товары, расположив их в порядке возрастания цены. Товары с одинаковой ценой отсортировать по алфавиту по наименованию.\n");
printf("4.Определить, в какой категории больше всего наименований товаров.\n");
printf("5.Определить, присутствуют ли вкусовые добавки в самом дешевом товаре из каждой категории.\n");
printf("6.Добавление записи.\n");
printf("7.Удаление записи.\n");
printf("8.Вывод всех текущих записей.\n");
printf("9.Выход!!!\n");
printf("10.Глав.меню\n");
printf(">:");
scanf("%d",&b);
switch(b){
case 1:
Fun_ADMIN_1();
break;
case 2:
Fun_ADMIN_2();
break;
case 3:
Fun_ADMIN_3();
break;
case 4:
Fun_ADMIN_4();
break;
case 5:
Fun_ADMIN_5();
break;
case 6:
Fun_ADMIN_6();
break;
case 7:
Fun_ADMIN_7();
break;
case 8:
Fun_ADMIN_8();
break;
case 9:
Fun_ADMIN_EXIT();
break;
case 10:
Fun_ADMIN_9();
break;
default:
system("cls");
printf(" ОШИБКА!!!\n");
printf(" Повторите ввод\n");
printf(" -----------------------\n");
system("pause");
system("cls");
}
}
}
MAIN_USER()
int MAIN_USER(){
printf(" Вы выбрали: (ОПЕРАТОР)\n");
printf(" Вход в систему выполнен\n ---------------------------------\n");
system("pause");
system("cls");
printf(" ЗАДАНИЕ.\n\n");
printf("Предметная область – магазин. Объект – товар. \n");
printf("Данные об объекте:\n");
printf("-наименование;\n");
printf("-категория товара (мясная, молочная, кондитерская и т.д.);\n");
printf("-дата изготовления;\n");
printf("-срок годности;\n");
printf("-наличие вкусовых добавок;\n");
printf("-цена.\n");
printf("Функции:\n");
printf("1.Вывести наименования товаров с датой изготовления,вписывающейся в указанный диапазон.\n");
printf("2.Задать текущую дату и вывести наименования всех просроченных товаров.\n");
printf("3.Вывести все товары, расположив их в порядке возрастания цены. Товары с одинаковой ценой отсортировать по алфавиту по наименованию.\n");
printf("4.Определить, в какой категории больше всего наименований товаров.\n");
printf("5.Определить, присутствуют ли вкусовые добавки в самом дешевом товаре из каждой категории.\n");
system("pause");
system("cls");
while(1){
printf(" Выберите желаемое действие\n \n");
printf("1.Вывести наименования товаров с датой изготовления,вписывающейся в указанный диапазон.\n");
printf("2.Задать текущую дату и вывести наименования всех просроченных товаров.\n");
printf("3.Вывести все товары, расположив их в порядке возрастания цены. Товары с одинаковой ценой отсортировать по алфавиту по наименованию.\n");
printf("4.Определить, в какой категории больше всего наименований товаров.\n");
printf("5.Определить, присутствуют ли вкусовые добавки в самом дешевом товаре из каждой категории.\n");
printf("6.Вывод всех текущих записей.\n");
printf("7.Выход!!!\n");
printf("8.Глав.меню\n");
printf(">:");
scanf("%d",&b2);
switch(b2){
case 1:
Fun_ADMIN_1();
break;
case 2:
Fun_ADMIN_2();
break;
case 3:
Fun_ADMIN_3();
break;
case 4:
Fun_ADMIN_4();
break;
case 5:
Fun_ADMIN_5();
break;
case 6:
Fun_ADMIN_8();
break;
case 7:
Fun_ADMIN_EXIT();
break;
case 8:
Fun_ADMIN_9();
break;
}
}
}
Fun_ADMIN_1()
int Fun_ADMIN_1(){
switch(b){
case 1:
while(1){
system("cls");
if((data=fopen("F:\\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf("Вы выбрали:(Вывести наименования товаров с датой изготовления,вписывающейся в указанный диапазон.)\n");
printf("------------------------------------------------------------------------------------------------ \n");
printf("Введите начальную дату\n");
printf("Например (01д.05м.12г.)\n");
scanf("%d%d%d",&da,&mes,&god);
if(da<=31 && mes<=12);
else
{
printf("Ошибка ввода дня(%d) или месяца(%d)\n",da,mes);
printf("Повторите ввод!!!\n");
system("pause");
continue;
}
printf("Введите конечную дату\n");
printf("Например (01д.05м.15г.)\n");
scanf("%d%d%d",&da1,&mes2,&god3);
if(da1<=da && mes2>=mes && god3>=god);
else
{
printf("Ошибка ввода дня(%d) или месяца(%d) или года(%d)\n",da1,mes2,god3);
printf("Повторите ввод!!!\n");
system("pause");
continue;
}
while(fread(&tovar[m],sizeof(tovar[m]),1,data)>0)
{
if((god3>tovar[m].g||(god3==tovar[m].g && mes2>tovar[m].m)||(god3==tovar[m].g && tovar[m].m==mes2 && da1>=tovar[m].d))
&&(god<tovar[m].g||(god==tovar[m].g && mes<tovar[m].m)||(god==tovar[m].g && tovar[m].m==mes2 && da<=tovar[m].d))){
printf("Название Категория Дата изг. Срок год. Вкусовые добавки Цена");
printf("\n---------------------------------------------------------------------");
printf("\n%-9s|%-15s| %-3d%-3d%-3d|%-3d%-3d%-3d | %-9s %6.2fгрн.\n ",tovar[m].nazv,tovar[m].catovar,tovar[m].d,tovar[m].m,tovar[m].g,tovar[m].srok_d,tovar[m].srok_m,tovar[m].srok_g,tovar[m].dob,tovar[m].cena);
}
}
fclose(data);
system("pause");
system("cls");
break;
}
break;
}
}
Fun_ADMIN_2()
int Fun_ADMIN_2(){
while(1){
system("cls");
if((data=fopen("F:\\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf("Вы выбрали:(Задать текущую дату и вывести наименования всех просроченных товаров.)\n");
printf("-----------------------------------------------------------------------------------\n");
printf("Введите текущую дату\n");
printf("Например (01д.05м.12г.)\n");
scanf("%d%d%d",&da,&mes,&god);
if(da<=31 && mes<=12);
else
{
printf("Ошибка ввода дня(%d) или месяца(%d)\n",da,mes);
printf("Повторите ввод!!!\n");
system("pause");
continue;
}
while(fread(&tovar[m],sizeof(tovar[m]),1,data)>0)
{
if(god>tovar[m].srok_g || (god==tovar[m].srok_g && mes>tovar[m].srok_m)||(god==tovar[m].srok_g && tovar[m].srok_m==mes && da>=tovar[m].srok_d))
{
printf("Название Категория Дата изг. Срок год. Вкусовые добавки Цена");
printf("\n---------------------------------------------------------------------");
printf("\n%-9s|%-15s| %-3d%-3d%-3d|%-3d%-3d%-3d | %-9s %6.2fгрн.\n ",tovar[m].nazv,tovar[m].catovar,tovar[m].d,tovar[m].m,tovar[m].g,tovar[m].srok_d,tovar[m].srok_m,tovar[m].srok_g,tovar[m].dob,tovar[m].cena);
}
}
fclose(data);
system("pause");
system("cls");
break;
}
}
Fun_ADMIN_3()
int Fun_ADMIN_3(){
system("cls");
if((data=fopen("F:\\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf("Вы выбрали:(Вывести все товары, расположив их в порядке возрастания цены. Товары с одинаковой ценой отсортировать по алфавиту по наименованию.)\n");
printf("--------------------------------------------------------------------------\n");
w=0;
while(fread(&tovar3[w],sizeof(tovar3[w]),1,data)>0)
w++;
f = 1;
while (f)
{
f = 0;
for (m = 0;m<w-1;m ++)
if (strcmp(tovar3[m].nazv,tovar3[m + 1].nazv)>0)
{
f = 1;
tovar2 = tovar3[m];
tovar3[m] = tovar3[m + 1];
tovar3[m + 1]=tovar2;
}
}
f = 1;
while (f)
{
f = 0;
for (m = 0;m<w-1;m ++)
if (tovar3[m].cena<tovar3[m + 1].cena)
{
f = 1;
tovar2 = tovar3[m];
tovar3[m] = tovar3[m + 1];
tovar3[m + 1]=tovar2;
}
}
for(m=0;m<w;m++)
printf("\n%-9s|%-15s| %-3d%-3d%-3d|%-3d%-3d%-3d | %-9s %6.2fгрн.\n ",tovar3[m].nazv,tovar3[m].catovar,tovar3[m].d,tovar3[m].m,tovar3[m].g,tovar3[m].srok_d,tovar3[m].srok_m,tovar3[m].srok_g,tovar3[m].dob,tovar3[m].cena);
system("pause");
system("cls");
fclose(data);
}
Fun_ADMIN_4()
int Fun_ADMIN_4(){system("cls");
if((data=fopen("F:\\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf("Вы выбрали:(Определение, в какой категории больше всего наименований товаров.)\n");
printf("-----------------------------------------------------------------------------\n");
w=0;
while(fread(&tovar3[w],sizeof(tovar3[w]),1,data)>0)
w++;
max = 0;
for(m=0;m<w;m++)
{
kol = 0;
for(j=0;j<w;j++)
if (!strcmp(tovar3[m].catovar, tovar3[j].catovar))
kol ++;
if (kol > max)
{
max = kol;
cot = tovar3[m].catovar;
}
}
printf("%s\n", cot);
system("pause");
system("cls");
fclose(data);
}
Fun_ADMIN_5()
int Fun_ADMIN_5(){
system("cls");
if((data=fopen("F:\\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf("Вы выбрали:(Определение, присутствуют ли вкусовые добавки в самом дешевом товаре из каждой категории.)\n");
printf("-----------------------------------------------------------------------------------------------------\n");
w=0;
while(fread(&tovar3[w],sizeof(tovar3[w]),1,data)>0)
w++;
for(m=0;m<w;m++)
{
kol = m;
for(j=0;j<w;j++)
if (!strcmp(tovar3[m].catovar, tovar3[j].catovar) && tovar3[kol].cena > tovar3[j].cena)
kol = j;
if (kol == m && !strcmp(tovar3[kol].dob, "Est"))
{
printf("%s\n", tovar3[m].catovar);
}
}
system("pause");
system("cls");
fclose(data);
}
Fun_ADMIN_6()
int Fun_ADMIN_6(){
system("cls");
if((data=fopen("F:\data.bin","ab+"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf(" Вы выбрали: (Добавление записи)\n");
printf(" ----------------------------------\n");
printf(" Выберите вариант добавления записи\n");
printf(" ----------------------------------------\n");
printf("1.Полная перезапись файла(удаляются все данные!!!)\n");
printf("2.Обычное добавление в конец файла.\n");
printf(">:");
scanf("%d",&t);
switch(t){
case 1:
if((data=fopen("F:\data.bin","wb+"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
break;
case 2:
if((data=fopen("F:\data.bin","ab+"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
break;
default:
printf(" Предупреждение!!!\n");
printf(" ---------------------------------\n");
printf(" Вы выбрали: (Инной вариант)\n");
printf(" Переход в режим по умолчанию: (Обычное добавление в конец файла.)\n");
system("pause");
system("cls");
}
printf("Введите количество товара\n");
scanf("%d",&i);
for(m=0;m<i;m++){
printf("Введите название товара\n");
scanf("%s",tovar[m].nazv);
printf(" Выберите категорию товара\n");
printf(" ----------------------------------\n");
printf("1.Молочные товары\n");
printf("2.Мясные товары\n");
printf("3.Кондитерские товары\n");
printf("4.Рыбные товары\n");
printf("5.Яйца и яичные товары\n");
printf("6.Зерномучные товары\n");
printf("7.Овощи, плоды и грибы\n");
printf("8.Другой товар\n");
printf(">:");
scanf("%d",&k);
switch(k)
{
case 1: strcpy(tovar[m].catovar, "Molochnay");
break;
case 2: strcpy(tovar[m].catovar, "Mysnaya");
break;
case 3: strcpy(tovar[m].catovar, "Konditerskaya");
break;
case 4: strcpy(tovar[m].catovar, "Riba");
break;
case 5: strcpy(tovar[m].catovar, "Yaihnue");
break;
case 6: strcpy(tovar[m].catovar, "Zerno muchnue");
break;
case 7: strcpy(tovar[m].catovar, "Ovochi,grib");
break;
case 8:
printf("Введите категорию товара\n");
printf(">:");
scanf("%s",tovar[m].catovar);
break;
default:
printf("Вы выбрали инной вариант!!!\nКатегория не будет отображаться в этой записи!!!\n");
break;
}
printf("Введите дату изготовления\n");
printf("Например (01д.05м.12г.)\n");
printf(">:");
scanf("%d%d%d",&tovar[m].d,&tovar[m].m,&tovar[m].g);
printf("Введите срок годности\n");
printf("Например (01д.05м.13г.)\n");
printf(">:");
scanf("%d%d%d",&tovar[m].srok_d,&tovar[m].srok_m,&tovar[m].srok_g);
printf("Наличие вкусовых добавок\n");
printf("1.Есть\n");
printf("2.Нету\n");
printf(">:");
scanf("%d",&k);
switch(k){
case 1: strcpy(tovar[m].dob, "Est");
break;
case 2: strcpy(tovar[m].dob, "Netu");
break;
default:
printf("Вы выбрали инной вариант!!!\nВкусовая добавка не будет отображаться в этой записи!!!\n");
break;
}
printf("Введите цену\n");
printf(">:");
scanf("%f",&tovar[m].cena);
fwrite(&tovar[m],sizeof(tovar[m]),1,data);
}
system("pause");
fclose(data);
system("cls");
}
Fun_ADMIN_7()
int Fun_ADMIN_7(){
system("cls");
if((data=fopen("F:\\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf(" Вы выбрали: (Удаление записи.)\n");
printf(" ----------------------------------------\n");
printf("Название Категория Дата изг. Срок год. Вкусовые добавки Цена");
printf("\n---------------------------------------------------------------------");
while(fread(&tovar[m],sizeof(tovar[m]),1,data)>0){
printf("\n%-9s|%-15s| %-3d%-3d%-3d|%-3d%-3d%-3d | %-9s %6.2fгрн.\n ",tovar[m].nazv,tovar[m].catovar,tovar[m].d,tovar[m].m,tovar[m].g,tovar[m].srok_d,tovar[m].srok_m,tovar[m].srok_g,tovar[m].dob,tovar[m].cena);
}
fclose(data);
if((data=fopen("F:\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf("Введите удаляемое название товара\n");
scanf("%s",im);
q=0;
while(fread(&tovar2,sizeof(tovar2),1,data)>0)
if(strcmp(im,tovar2.nazv))
tovar1[q ++] = tovar2;
fclose(data);
if((data=fopen("F:\data.bin","wb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
for(m=0;m<q;m++)
fwrite(&tovar1[m],sizeof(tovar1[m]),1,data);
fclose(data);
}
Fun_ADMIN_8()
int Fun_ADMIN_8(){
system("cls");
printf(" Вы выбрали: (Вывод всех текущих записей)\n");
printf(" -------------------------------------------------\n");
if((data=fopen("F:\data.bin","rb"))==NULL){
printf("Ошибка\n");
system("pause");
return main();
}
printf("Название Категория Дата изг. Срок год. Вкусовые добавки Цена");
printf("\n---------------------------------------------------------------------");
while(fread(&tovar[m],sizeof(tovar[m]),1,data)>0){
printf("\n%-9s|%-15s| %-3d%-3d%-3d|%-3d%-3d%-3d | %-9s %6.2fгрн.\n ",tovar[m].nazv,tovar[m].catovar,tovar[m].d,tovar[m].m,tovar[m].g,tovar[m].srok_d,tovar[m].srok_m,tovar[m].srok_g,tovar[m].dob,tovar[m].cena);
}
fclose(data);
system("pause");
system("cls");
}
Fun_ADMIN_9()
int Fun_ADMIN_9(){
return main();
}
Fun_ADMIN_EXIT()
int Fun_ADMIN_EXIT(){
system("cls");
printf(" Завершение Работы!!!\n До встречи!\n");
printf(" --------------------------\n");
system("pause");
exit(0);
}