用c ++编写项目,制作电话簿

时间:2013-08-08 16:14:05

标签: c++ oop project

我试着在互联网上到处寻找,我似乎找不到多少。
现在,我没有太多谈论我的问题:我必须为大学制作一个项目,包括使用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个函数。 所以我会把这个程序作为一个主程序,“添加,编辑,删除..etc”的每个函数都将在这个程序之外,我会单独处理它们。 事情是..我不知道这样做。我查看了“标题”工作系统,我没有找到任何有价值的东西。也许我不知道看,但相信我,我真的尝试过。 任何反馈都非常感谢,但请记住,我是非常新手。如果可以的话,请尽可能详细地解释。我很感激任何读过这整篇文章的人。我会感谢开始。

2 个答案:

答案 0 :(得分:3)

  1. 你说你在任何地方找不到帮助,但是你说“我必须为大学做一个项目”。所以大概你已经有教师和/或教授来帮助你学习?除此之外,任何有关C ++的入门书都将涵盖您所要求的内容。

  2. 你说“在C ++中使用OOP编程逻辑”,但你不使用内置IO类以外的任何OOP。

  3. 正确缩进代码。

  4. 不要使用这些:

    #include <conio.h>
    
    getch()
    
    system("cls")
    
  5. 您正在将printf()的来电与std::cout混合,并使用scanf()致电std::cin - 选择其中一个,不要使用{{ 1}}。

  6. 如果您使用的是C ++,则使用scanf()优于此:

    std::string
  7. 此处的演员表是不必要的,当您被分配到void centerText(char* s) 时,它会自动转换:

    int
  8. int pos=(int)((80-l)/2); 返回main(),请勿执行此操作:

    int
  9. 你不能void main() ,在输入流上没有定义刷新。

  10. 不要把这样的东西放在一行,因为它看起来很糟糕:

    fflush(stdin)
  11. 在正常情况下,case '1': op1(); break; return 0更好,因为exit(0)不会破坏您的对象。

答案 1 :(得分:0)

在许多应用程序中,构建解决方案有三个主要组件。有View,就是你与用户互动的方式。到目前为止,您的工作看起来好像正在构建一个相当明智的命令行界面。然后是存储联系人的后端。这可以是文件,数据库或某种JSON或XML结构。中间是控制器,它使视图和数据库保持同步,并执行来自用户的命令和查询。也许这对你的课程来说太过分了,如果你杀了这个程序就会忘记一切,你会感到很高兴。在这种情况下,您需要一个基于内存的结构来保存数据。我建议你创建一个类来保存联系人中的所有字段并存储在std :: vector&lt; Contact&gt;中。