0

私はインターネット上のあらゆる場所を試してみましたが、あまり見つけられないようです。
ここで、あまり話さずに、私が抱えている問題について説明します。C++ で OOP プログラミング ロジックを使用して「電子電話帳」を作成する、大学向けのプロジェクトを作成する必要があります。これを行うために受け取った資料は非常に曖昧なので、どうにか自分でやらなければなりません。

これまでに行ったコードは次のとおりです(インターネットの助けを借りて):

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
#include <fstream.h>

void op1()
{
    printf("\n Add contact");
    getch();
}
void op2()
{
    printf("\n Delete contact");
    getch();
}
void op3()
{
    printf("\n Edit a contact");
    getch();
}
void op4()
{
    printf("\n Find a contact");
    getch();
}
void op5()
{
    printf("\n Sort the contacts");
    getch();
}

void op6()
{
    printf("\n 'About the program, details etc. etc.");
    getch();
}



void print_menu()
{
  system("cls");        // clearing window
    printf("\nMenu:");
    printf("\n##############################\n");
  printf("\n1. Add contact");
  printf("\n2. Delete contact");
  printf("\n3. Edit a contact");
  printf("\n4. Find a contact");
  printf("\n5. Sort the contacts");
  printf("\n6. About");
  printf("\n7. Exit");
    printf("\n\n##############################");

  printf("\n\nInput your option: ");
}

// Text centering function - begin
void centerText(char* s)
{
     int l=strlen(s);
     int pos=(int)((80-l)/2);
     for(int i=0;i<pos;i++)
         cout<<" ";
     cout<<s<<endl;
}
// Text centering functon - end

void main()
{

    {   

        printf("\n 'My University' 'My City' ");
        printf("\n Faculty of Electrical Engineer and Computer Science");
        printf("\n Study program used: C++\n\n");
        centerText("C++ Project");
        centerText("<The Phonebook>");
        printf("\n");
        centerText("<my name, Year I of study, Group>");
        printf("\n");
        printf("\n");
        centerText("<june.2013>");
        system("pause>nul"); // Screen is paused until a key is pressed (to allow this text to be viewed)

    }
    // ... Sequence for password verification ...
    {
        char password[20], my_password[20]="2013";
        system("cls");
        printf("WARNING!\n");
        printf("Authentication required!\n");
        printf("\nType input password: ");
        scanf("%19s",password);

            if (strcmp(password, my_password)!=0)
            {

                printf("\n\nIncorrect password !!!\n");
                printf("The program will now exit...\n");
                getch();
                return;
            }

        printf("\n\nPassword is correct !\n");
        printf("The program is executed !\n");
        getch();
    }
  char optiune;

  // ... Sequence for option choosing ...

  do
  {
  print_menu();
  fflush(stdin);
  cin>>optiune;
  switch(optiune)
  {
    case '1':  op1(); break;
    case '2':  op2(); break;
    case '3':  op3(); break;
    case '4':  op4(); break;
    case '5':  op5(); break;
    case '6':  op6(); break;
    case '7':  exit(0);
    default :   printf("\n\nIncorrect option !"); 
                fflush(stdin);
                getch();
  }
  }
  while(1);
}

op() 関数の 1 つに別のファイルへのリダイレクト (別のファイルの 1 つの関数) を挿入するだけで、このメニューを使用できるのではないかと考えました。したがって、このプログラムをメインプログラムとして使用し、「追加、編集、削除などの各機能はこのプログラムの外にあり、それらを個別に処理します。そうする手がかりはありません. 「ヘッダー」作業システムを調べましたが、そこには価値のあるものは何も見つかりませんでした. 多分私は見てわからないかもしれませんが、私は本当に試してみました. どんなフィードバックも大歓迎です.これは非常に初心者です. できれば、できるだけ詳しく説明してください. このすべてを読んでくれた人に感謝します. 最初に感謝します.

4

2 に答える 2

3
  1. あなたはどこにも助けが見つからないと言いますが、「大学のプロジェクトを作らなければなりません」と言います。おそらく、学習を支援してくれるインストラクターや教授がすでにいると思いますか? それ以外では、これまでに書かれた C++ の入門書は、ここであなたが求めていることをカバーしています。

  2. 「C ++でOOPプログラミングロジックを使用する」と言っていますが、組み込みのIOクラス以外のOOPは使用していません。

  3. コードを適切にインデントします。

  4. これらを使用しないでください:

    #include <conio.h>
    
    getch()
    
    system("cls")
    
  5. printf()with への呼び出しとwithstd::coutへの呼び出しを混在させています。どちらかを選択し、決して使用しないでscanf()ください。std::cinscanf()

  6. C++ を使用している場合は、次の方法を使用することをお勧めしますstd::string

    void centerText(char* s)
    
  7. ここでのキャストは不要です。割り当てられている場合は、int自動的に変換されます。

    int pos=(int)((80-l)/2);
    
  8. main()、これintをしないでください:

    void main()
    
  9. できませんfflush(stdin)。フラッシュは入力ストリームで定義されていません。

  10. 見栄えが悪いので、次のように 1 行にまとめないでください。

    case '1':  op1(); break;
    
  11. あなたのオブジェクトを破壊しないので、通常の状況下return 0よりも良いです。exit(0)exit(0)

于 2013-08-08T16:28:02.930 に答える
0

多くのアプリケーションでは、ソリューションを構築するための 3 つの主要コンポーネントがあります。ユーザーと対話する方法であるビューがあります。これまでの作業は、そのためのかなり賢明なコマンド ライン インターフェイスを構築しているように見えます。次に、連絡先が保存されるバックエンドがあります。これは、ファイル、データベース、またはある種の JSON または XML 構造である可能性があります。間にあるのは、ビューとデータベースの同期を維持し、ユーザーからのコマンドとクエリを実行するコントローラーです。たぶん、これはあなたのコースワークにとって行き過ぎであり、プログラムを強制終了したときにすべてが忘れられれば満足です. その場合、データを保持するためにメモリベースの構造が必要です。連絡先のすべてのフィールドを保持し、std::vector<Contact> に格納するクラスを作成することをお勧めします。

于 2013-08-08T16:23:46.220 に答える