Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/17: Рейтинг темы: голосов - 17, средняя оценка - 4.65
shurikspk
402 / 221 / 43
Регистрация: 10.02.2013
Сообщений: 780
1

Создание меню в консоли

30.06.2013, 21:07. Просмотров 3520. Ответов 7
Метки нет (Все метки)

не могу понять почему не хочет работать программа при заходе в 1 case
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <conio.h>
 
int main ()
{
    int diya;
    do
    {
        printf("1- Добавление в файл\n");
        printf("2- Обработка файла\n");
        printf("0-Выход\n");
        scanf("%i\n", &diya);
        if(diya == 0)
            break;
        switch(diya)
        {
            case 1:
            {
                struct tov {char last_name[10]; int predmet1; int predmet2; int predmet3;} x, x1;
                FILE *f;
                if ((f=fopen("D:\\reyting.txt", "wb"))==NULL)
                {
                    printf("Невозможно открыть файл.\n");
                }
                else
                    printf("Файл відкритий\n");
 
                int z=0;
                printf("Введите количество добавляемых записей\n");
                scanf("%i", &z);
                printf("\t\tДобавление записей про студентов:\n");
                do
                {
                    //printf("\tВведите данные про студента\n");
                    printf("Фамилия:\t");
                    scanf("%s",&x.last_name);;
                    printf("Введите оценки по 3 предметам:\n");
                    scanf("%d",&x1.predmet1);
                    scanf("%d",&x1.predmet2);
                    scanf("%d",&x1.predmet3);
                    fwrite(&x,sizeof(x),1,f);
                    z--;
                }
                while (z==0);//getch()!=27
                fclose(f);
            }
            break;
            case 2:
            {
                ;
            }
            break;
            default:
            printf("Не выбран ни один из пунктов текстового меню");
            break;
        }
    }
    while(true);
    return 0;
}
что пропустил ?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2013, 21:07
Ответы с готовыми решениями:

Как сделать меню в консоли?
Мне дали задания сделать программу в которой в одном окне будет меню,а в другом выполнения самой...

Создать графическое меню в консоли к готовой программе
как сделать графическое меню для этой программы: #include &quot;stdafx.h&quot; #include &quot;iostream&quot;...

Создание меню
Сделал меню с навигацией стрелками клавиатуры и запуском функции по нажатию enter. Выбираю пункт...

Создание многопользовательского меню
Здравствуйте, вопрос(это целая беда!!!) состоит в следующем: понятия не имею с чего начать: ...

Создание меню используя библиотеку graphics.h
Добрый день! Подскажите пожалуста, как решить проблему: Задание: Создать меню функциональных...

7
ntrx
122 / 122 / 82
Регистрация: 03.01.2013
Сообщений: 241
01.07.2013, 00:04 2
Структура программы у вас уж слишком запутанная
struct вроде в начале пишут и переменные объявляют тоже там же (FILE тоже)
1
shurikspk
402 / 221 / 43
Регистрация: 10.02.2013
Сообщений: 780
01.07.2013, 00:21  [ТС] 3
да хоть вначале хоть в case все равно ничего не меняется
0
UranFlex
131 / 129 / 51
Регистрация: 25.05.2013
Сообщений: 233
01.07.2013, 00:45 4
C
1
2
3
4
5
...
scanf("%i", &diya); // убрать \n
...
scanf("%s",x.last_name) // убрать амперсанд
...
0
01.07.2013, 00:45
fanatdebian
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
01.07.2013, 16:03 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
 
struct tov {
             char last_name[10]; 
             int predmet1; 
             int predmet2; 
             int predmet3;
           };
 
 
int viewMenu(char *fname);
int addFile(char *fname);
int readFile(char *fname);
 
 
int main(int argc, char * argv[])
{
    int ch;
    char *fname = "students.db";
    
    while(viewMenu(fname) && scanf("%d", &ch) && ch != 0){
        switch (ch) {
            case 1:                 
                     addFile(fname);
                     break;
            case 2:  
                     printf("2\n");
                     break;
        }
            
    }
    return 0;
}
 
int viewMenu(char *fname)
{               
        FILE *fp;               
        int count =0, flag = 0;
        struct tov some;
        
        
        if (!(fp=fopen(fname, "r")))
            flag = 0;
        else{
            while(!feof(fp)){
                fread(&some, sizeof(some),1,fp);
                count++;
            }
            flag = 1;           
        }       
        fclose(fp);                         
        
        if (flag) 
            printf("Количество записей %d\n", count);
        else
            printf("файл не создан\n");
        printf("1- Добавление в файл\n");
        printf("2- Обработка файла\n");
        printf("0-Выход\n");
        printf("Ваш выбор: ");                
        return 1;        
}
 
int addFile(char *fname)
{
    FILE *fp;
    struct tov newstr;
    int count=0;
    
    
    if(!(fp=fopen(fname, "ab"))){  // open to append new records postition file move to end file
        printf("error open %s file\n", fname);
        exit(1);
    } 
    printf("File %s success opened\n", fname);
    
    while(printf("Количество новых записей [0 - exit]: ") && scanf("%d", &count) && count != 0 ){
        int x = 0;
        for(; x<count; x++){
            printf("Добавление новых записей \n");
            printf("Фамилия:\t");
            scanf("%s",newstr.last_name);;
            printf("Введите оценки по 3 предметам:\n");
            scanf("%d",&newstr.predmet1);
            scanf("%d",&newstr.predmet2);
            scanf("%d",&newstr.predmet3);
            fwrite(&newstr,sizeof(newstr),1,fp);            
        }       
    }
    fclose(fp);
    return 0;                                       
}
int readFile(char *fname)
{
    
    return 0;
}
старайтесь реализовывать все через функции, как малы они бы не казались. Это повысит читаемость, гибкость, и отладку кода. Я реализовал функцию добавление записей в файл и вывод меню. Прототипы функций сверху, функцию чтения и показа записей реализуйте сами, по аналогии с чтением.
1
Izeldor
3 / 3 / 0
Регистрация: 23.06.2013
Сообщений: 13
01.07.2013, 17:06 6
Цитата Сообщение от shurikspk Посмотреть сообщение
да хоть вначале хоть в case все равно ничего не меняется
Попробуй использовать систему If else if

Добавлено через 18 минут
Цитата Сообщение от fanatdebian Посмотреть сообщение
C
1
    char *fname = "students.db";
Это ты какой то файл подключаеш или просто задаеш значение в виде слова?
0
fanatdebian
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
01.07.2013, 18:10 7
Цитата Сообщение от Izeldor Посмотреть сообщение
Попробуй использовать систему If else if

Добавлено через 18 минут

Это ты какой то файл подключаеш или просто задаеш значение в виде слова?
задаю в виде слова, имя файла может быть любым. Если файла нет, программа создаст его автоматом с 0 количеством записей в нем.
0
shurikspk
402 / 221 / 43
Регистрация: 10.02.2013
Сообщений: 780
01.07.2013, 19:20  [ТС] 8
суть была в том что именно нужно делать в той конструкции
по поводу отдельных функций я знаю но все равно СПАСИБО)
0
01.07.2013, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2013, 19:20

Задание на тему функции, создание меню
Добрый день! Написала программу, но, к сожалению, какие-то явные проблемы с памятью:выводится...

Создание меню в консоли (не контекстное)
Доброй ночи, кому вечеру и утру в Америке. Сижу на втором курсе и еще до такой темы не доходили,...

Создание меню в консоли через case
Кто может помочь объяснить, как сделать меню, а то сколько не пробую, у меня все время ошибки. Надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru