Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [c] dev c++ программа-записная книжка


Автор: Михаил14 12.4.2012, 12:52
Просьба помочь в задачке записной книжонке.Я довольно подробно описал что не получается в коментариях.Большая просьба - тут выходит такой баг даже еслиб работало - что заходя например в функцию удаления контактов и выбирая там среди цифр мы теряем доступ к функции главного меню т.е. в каждой функции нужно что-то типа команды выхода (допустим /leave или -leave) либо наоборот команда вызывающая меню либо наоборот сделать вызов функция по командам типа -menu -addcontact и т.д.     
Я пока не пресдтавляю как это обыграть....
# include <stdio.h>
# include <string.h>
# include <conio.h>
struct AdressBook  ///структура
    {
           char Name[50];
           char Surname[50];
           char mobile[25];
    };
void menu() ///меню
{
     printf ("Adressbook v.0.47 fixed");
     printf ("Now you are using the multifunctional address book");
     printf ("Enter command /help to see tips");
     printf ("1. view adress book\n2. add new contacts\n3. delete contacts\n4. help\n5. exit");
    
}
void view_contacts () ///функция просмотра контактов
{
     int a, i, n=0;
     scanf ("%d",&a);
     for (i=0;i<(n+1);i++)
     {
             if (A[i].mobile!=10101)
             {
                    printf ("Name:%s; Surname:%s; mob:%ld\n",A[i].Name,A[i].Surname,A[i].mobile);
             }
                                 
     }
}
void new_contacts () ///функция добавления контактов
{                              ///тут нужна роверка на отсутствие цифр и символов в имени
     int n=1;               ///(просьба тут подсказать кусок кода,который нужно добавить в функцию добавления контактов
     n=n+1;                               ///чтоб принимало номера по форме:либо 12 цифр начиная с плюса(+),либо 11 цифр                                    
     printf("enter Name; Surname; mobile");       ///без букв и символов кроме "+"
     scanf("%s%s%s",&A[n].Name,&A[n].Surname,&A[n].mobile);
}   
void delete_contacts () ///функция удаления контактов
{
     int a=0, i, m=0;                                    
     for (i=0;i<(n+1);i++)
     {
            printf ("%d)Name:%s; Surname:%s; mob:%ld\n",(i+1),A[i].Name,A[i].Surname,A[i].mobile);
            printf ("do you want to delete a contact by\n1. name\n2. surname\n3. phone number\n4.contact number?\n5. all infomation");
            scanf ("%d",&a);               
            switch(a)
            {
                    case 1:   printf ("what number of contact you want to delete");
                              printf ("Name:%s\n",.Name,A[i]);
                              scanf ("%d",&m);
                              A[m-1].mobile=10101;   
                              break;
                    case 2:   printf ("what number of contact you want to delete");
                              printf ("Surname:%s\n",.Surname,A[i]);   
                              scanf ("%d",&m);
                              A[m-1].mobile=10101;  
                              break;  
                    case 3:   printf ("what number of contact you want to delete");
                              printf ("contact number\n",A[i]); 
                              scanf ("%d",&m);
                              A[m-1].mobile=10101;    
                    case 4:   printf ("what number of contact you want to delete");
                              printf ("mob:%s\n",.mobile);
                              scanf ("%d",&m);
                              A[m-1].mobile=10101;
                              break;
                    case 5:   printf ("what number of cntact you want to delete");
                              printf ("%d)Name:%s; Surname:%s; mob:%ld\n",(i+1),A[i].Name,A[i].Surname,A[i].mobile);
                              scanf ("%d",&m);
                              A[m-1].mobile=10101;
                              break;

             }
     }         
}
void quit () ///функция выхода
{
     int a=5,
     scanf ("%d",&a);   ///правилен ли тут выход
     if(a==5)
     {
     }exit 0;
}
void help () ///функция гид по программе
{                  
     int a=0;int b=0; 
     printf("1. Some tips about using Adressbook\n2. Some tips about mobile numbers\n3. Tip about exit"); 
     switch(a)
     {
            case 1:  printf ("Tip 1.1 : enter the number in the beginning of the string to take appropriate action"); 
                     printf ("Tip 1.2 : you can view,add,delete contacts");
                     printf ("Tip 1.3 : also you can leave programm\n*how you can do this you can read in 3rd tip*");
                     printf ("Tip 1.4 : you can delete contacts by name,surnames,numbers,or they numbers in Adressbook");                         
                     break;
            case 2:  printf ("tip 2.1 : You can enter only the numbers that correspond to the form +*-***-***-**-** or *-***-***-**-**");  
                     break;
            case 3:  printf ("Tip 3.1 If you want to quit programm enter 4 in mane menu");
                     printf ("*you must be sure that you want to leave programm because if you leave information wouldn`t be saved*"):
                     break;
     } 
}
int main ()
{
    int a, i;       
    AdressBook A[50];                    ///возможно стоит глобализовать объявденый массив?
    sprintf (A[0].Name,"%s","Þëèÿ");           ///первые 2 контакта(возможно их стоит перенести в другую функцию(добавление контактов)?)
    sprintf (A[0].Surname,"%s","Âàëåðèåâíà");
    sprintf (A[0].mobile=89636336934);
    sprintf (A[1].Name,"%s","Ãîãåí");
    sprintf (A[1].Surname,"%s","Ñîëíöåâ");
    sprintf (A[1].mobile=89637840754);
    menu();
    scanf("%d",a);
    switch(a)              /// реализация перехода по пунктам
    {                       ///функции идут по очереди,но нужно чтобы
        case 1: view_contacts();  ///использовать их по нажатию клавищы можно было в любое время
        break;
        case 2: new_contacts();
        break;
        case3: delete_contacts();
        break;
        case 4: help();
        break;
        case 5: quit();
        break;
    }
    getchar();
    scanf("%d",&A[i]);
    return 0;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)