面向对象程序设计 C++大作业

 

面向对象程序设计

C++大作业

 

 

 

 

 

题目:C++通信录 

专业:计算机科学与技术

班级:信息A1611

组号:第一小组

 

 

内容:

(1)输入信息;    (2)显示信息;

(3)删除记录;    (4)查询、修改记录;

(5)界面优化等;

 

  • 五大主功能函数:
  1. void show_all(); /*显示全部。通过循环调用show()函数输出全部联系人*/

 

  1. void search_name();/*查询某人。输入名字,循环比较找出对应记录。若无则输出没有此人,若有则调用show()函数*/

 

3.void add(); /*增加记录。增加一条联系人记录,通过依次调用set_name(),set_sex(),set_phone(),set_email()等函数实现*/

 

4.void modify();/*修改记录。输入名字,循环比较找出对应记录。若无则输出没有此人,若有则调用四个set_xxxx()函数输入*/

 

5.void del_one();/*删除某人记录。输入名字,循环比较找出对应记录。若无则输出没有此人,若有循环覆盖删除此记录*/

 

 

二、主功能函数外的功能函数:

void welcome()/*打印出欢迎页面*/

 

void first_menu();/*打印出主菜单页面*/

 

int menu();/*将用户选择转化为数字返回。调用first_menu()打印主菜单,通过用户的输入,返回数值作为调用功能的依据。若输入错误,再次循环*/

 

void work();/*根据用户选择的功能调用相应的功能函数。调用menu()函数,调用数字相对应的功能函数。不断循环,直至选择退出函数*/

void main();/*函数的逻辑顺序操作与选择等*/

 

 

 

 

 

 

 

 

 

  • 分工合作任务表:

小组长 戴志超

 

学号

姓名

主要任务

占比

等级

1

蒋伟杰

主功能函数3,增加函数void add();的编写

8%

B

2

万明

主功能函数5,删除某人void del_one();的编写

8%

B

3

陈欣

与丰金诚共同参与主功能函数4,修改信息void modify();的编写

9%

A

4

施婷婷

主函数1,显示所有人 void show_all();的编写

9%

B

 

5

 

戴志超

程序整理汇总,调试结果汇总,主函数与外部功能函数void welcome,thanks_for_use,menu();的编写等

 

16%

 

A

6

张理宇

主功能函数2,搜查信息void search_name();的编写

9%

B

7

赵玉梅

程序功能说明的文档编写

8%

B

8

丰金诚

与陈欣共同参与主功能函数4,修改信息void modify();的编写

9%

B

9

汪阳东

心得体会编写,调试结果汇总,主函数参与,帮助组员查找错误

7%

C

10

龚华

界面设计,主功能函数main();编写

10%

A

11

肖地洋

心得体会编写,主函数参与,帮助组员查找错误

7%

C

 

 

 

 

 

 

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

 

  • 功能展示:

 

欢迎界面:

面向对象程序设计 C++大作业_第1张图片

主界面:

增加联系人:(以2个为例)

面向对象程序设计 C++大作业_第2张图片面向对象程序设计 C++大作业_第3张图片

 

 

 

 

 

显示所有人:(也可以只显示某一个)

面向对象程序设计 C++大作业_第4张图片

修改某人信息:(按名字查找并修改,后显示)

面向对象程序设计 C++大作业_第5张图片面向对象程序设计 C++大作业_第6张图片

 

删除某人:(按名字删除并显示)

面向对象程序设计 C++大作业_第7张图片面向对象程序设计 C++大作业_第8张图片

 

五、源代码:

#include

#include

#include

#include

#include

using namespace std;

int Num;          //联系人总数

class Person{    //建立联系人的类

//private成员如下

         private:   

                   char name[20];

                   char sex[10];

                   char phone[20];

                   char email[30];

         public:

                   char* get_name();

                   char* get_sex();

                   char* get_phone();

                   char* get_email();

                   void set_name();

                   void set_sex();

                   void set_phone();

                   void set_email();

                   void show();

                   ~Person(){};

};

Person people[300];   //定义对象数组

//功能函数声明

void show_all();

void search_name();

void add();

void modify();

void del_one();

void welcome();

void first_menu();

int menu();

//类内函数,返回name

char* Person::get_name(){

         return name;

}

//类内函数,返回sex

char* Person::get_sex(){

         return sex;

}

//类内函数,返回phone

char* Person::get_phone(){

         return phone;

}

//类内函数,返回email

char* Person::get_email(){

         return email;

}

//类内函数,设置name

void Person::set_name(){

         memset(name,'\0',20);    //memset设置格式

         cin>>name;

}

//类内函数,设置sex

void Person::set_sex(){

         memset(sex,'\0',10);

         cin>>sex;

}

//类内函数,,设置phone

void Person::set_phone(){

         memset(phone,'\0',20);

         cin>>phone;

}

//类内函数,,设置email

void Person::set_email(){

         memset(email,'\0',30);

         cin>>email;

//类内函数,打印全部私有成员

void Person::show(){

                   cout<<"name:"<

                   cout<<"sex:"<

                   cout<<"phone:"<

                   cout<<"email:"<

}

//增加一位联系人

void add(){

         cout<<"name:"<

         people[Num].set_name();

         cout<<"sex:"<

         people[Num].set_sex();

         cout<<"phone:"<

         people[Num].set_phone();

         cout<<"email:"<

         people[Num].set_email();

         cout<<"输入成功!"<

         Num++;

         cout<<"按任意键继续..."<

         getch();

}

//修改联系人

void modify(){

         char a[20],s;

         int flag_find=0,i;

         cout<<"请输入要修改的名字:"<

         cin>>a;

         for(i=0;i

                   if(!strcmp(people[i].get_name(),a)){      //采用strcmp函数比较查找出来的名字与输入的名字是否相同

                            cout<<"此联系人详细信息如下"<

                            people[i].show();   //调用show函数显示该联系人的所有信息

                            cout<<"是否要修改姓名?(y/n)"<

                            cin>>s;

                            if(s=='y'||s=='Y'){

                                     cout<<"name:";

//调用set函数,确认修改时使用memset函数按字节对内存块进行初始化,相当于清零操作

                                     people[i].set_name();

                            }

                            cout<<"是否要修改性别?(y/n)"<

                            cin>>s;

                            if(s=='y'||s=='Y'){

                                     cout<<"sex:";

                                     people[i].set_sex();

                            }

                            cout<<"是否要修改电话?(y/n)"<

                            cin>>s;

                            if(s=='y'||s=='Y'){

                                     cout<<"phone:";

                                     people[i].set_phone();

                            }

                            cout<<"是否要修改邮箱?(y/n)"<

                            cin>>s;

                            if(s=='y'||s=='Y'){

                                     cout<<"email:";

                                     people[i].set_email();

                            }

                            cout<

                            flag_find=1;  //修改好后将flag立为1做标志

                   }

         }

         if(flag_find==0){

                   cout<<"对不起,没有此人!"<

         }

         cout<<"按任意键继续..."<

         getch();  //将读取的字符返回

}

//删除一个联系人

void del_one(){

         char a[20],c;

         int flag_find=0,i,j;

         cout<<"输入要删除的名字:"<

         cin>>a;

         for(i=0;i

                   if(!strcmp(people[i].get_name(),a)){

                            cout<<"此联系人详细信息如下"<

                            people[i].show();

                            cout<<"是否要删除?(y/n)"<

                            cin>>c;

                            if(c=='Y'||c=='y'){

                                     for(j=i;j

                                               strcpy(people[j].get_name(),people[j+1].get_name());

                                               strcpy(people[j].get_sex(),people[j+1].get_sex());

                                               strcpy(people[j].get_phone(),people[j+1].get_phone());

                                               strcpy(people[j].get_email(),people[j+1].get_email());

                                     }

                                     memset(people[Num-1].get_name(),'\0',20);

                                     memset(people[Num-1].get_sex(),'\0',10);

                                     memset(people[Num-1].get_phone(),'\0',20);

                                     memset(people[Num-1].get_email(),'\0',30);

                                     Num--;

                            }

                            flag_find=1;

                            cout<

                   }

         }

         if(flag_find==0){

                   cout<<"对不起,没有此人!"<

         }else{

                   cout<

         }

         cout<<"请按任意键继续..."<

         getch();

}

//打印所有联系人

void show_all(){

         int i,flag_stop=0;

         char c;

         for(i=0;i

                   cout<<"此联系人详细信息如下"<

                   people[i].show();

         }

         cout<<"此系统共有"<

         if(flag_stop==0)

                   cout<<"全部信息已输出!"<

         cout<

         cout<<"请按任意键继续..."<

         getch();   

}

//搜索联系人

void search_name(){

         char a[20];

         int i,flag_find=0;

         cout<<"请输入您要查询的人名:"<

         cin>>a;

         for(i=0;i

                   if(!strcmp(people[i].get_name(),a)){

                            cout<<"此联系人详细信息如下"<

                            people[i].show();

                            flag_find=1;

                   }

         }

         if(flag_find==0){

                   cout<<"对不起,没有此人!"<

         }else{

                   cout<

         }

         cout<<"请按任意键继续..."<

         getch();

}

void welcome(){

         printf("                                                  \n");

         printf("                        **************************\n");

         printf("                        **欢迎使用通讯录管理系统**\n");

         printf("                        **************************\n");

         printf("                                                  \n");

         printf("                        -------按任意键继续-------\n");

         printf("                                                  \n");

         printf("                                    ");

         getch();    //读取字符但不显示

         system("cls"); //system函数 清屏

}

void first_menu(){

         system("cls");

         cout<<"          主菜单                 "<

         cout<<"----------------------------"<

         cout<<"查询F  增加A  修改M  删除D  "<

         cout<<"----------------------------"<

}

int menu(){

         char s,t;

         int choice;

         while(true){

                   while(true){

                            first_menu();

                            cin>>s;

                            switch(s){

                                     case 'F':

                                               cout<<"a 显示全部信息"<

                                               cin>>t;

                                               if(t=='a'||t=='A'){

                                                        choice=1;

                                               }else if(t=='b'||t=='B'){

                                                        choice=2;

                                               }else{

                                                        choice=0;

                                               }

                                               break;

                                     case 'f':

                                               cout<<"a 显示全部信息"<

                                               cin>>t;

                                               if(t=='a'||t=='A'){

                                                        choice=1;

                                               }else if(t=='b'||t=='B'){

                                                        choice=2;

                                               }else{

                                                        choice=0;

                                               }

                                               break;

                                     case 'A':

                                               choice=3;

                                               break;

                                     case 'a':

                                               choice=3;

                                               break;

                                     case 'M':

                                               choice=4;

                                               break;

                                     case 'm':

                                               choice=4;

                                               break;

                                     case 'D':

                                               cout<<"a 删除某人信息"<

                                               cin>>t;

                                               if(t=='a'||t=='A'){

                                                        choice=5;

                                               }

                                               else{

                                                        choice=0;

                                               }

                                               break;

                                     case 'd':

                                               cout<<"a 删除某人信息"<

                                               cin>>t;

                                               if(t=='a'||t=='A'){

                                                        choice=5;

                                               }

                                               else{

                                                        choice=0;

                                               }

                                               break;

                                     default :{

                                               cout<<"输入错误,请重新选择功能!"<

                                               cout<<"按任意键继续..."<

                                               getch();

                                     }

                            }

                            if(s=='F'||s=='f'||s=='A'||s=='a'||s=='M'||s=='m'||s=='D'||s=='d'){

                                               break;

                            }

                   }

                   if(choice==0){

                            cout<<"输入错误,请重新选择功能!"<

                            cout<<"按任意键继续..."<

                            getch();

                   }else{

                            break;

                   }

         }

         return choice;

}

int main()

{

         welcome();//调用欢迎界面

         int choice;

         while(true){

                   choice=menu();

                   switch(choice){

                            case 1: show_all();

                                     break;

                            case 2: search_name();

                                     break;

                            case 3: add();

                                     break;

                            case 4: modify();

                                     break;

                            case 5: del_one();

                                     break;

                   }

         }

         return 0;

}

 

 

 

 

 

 

 

六、总结:

 

程序优点:

1.较为完善的做出了通讯录的功能,达到了基本要求。

2.流畅的交互界面,考虑到许多误操作并给予提示。

3.灵巧运用节点跳转,写有许多flag,case等选择,条理清晰。

4.所有信息均以char类型存储,十分的统一,且没有使用顺序表的那些算法操作去增删改查,而是另辟蹊径的运用字符型的特点,使用字符数组,总体思路便于理解。

5.小组自学新知识点,尝试运用memset函数设置字符的初始格式,方便快捷。

(memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘/0’;例:char a[100];memset(a, '/0', sizeof(a));)

 

程序缺点:

1.代码的可重用性不足,没有用到函数模板。

2.功能不够有特色,是为简单的增删改查,没有涉及到文件的存储读写等操作,且目前只考虑到姓名、性别、电话、邮箱。个人认为此四项最为重要,其余项用处不大且占用代码空间。可以后期写生日、备注等项。

你可能感兴趣的:(计算机语言基础)