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

 

面向对象程序设计

C++大作业

 

题目:C++通信录 

专业:计算机科学与技术

班级:信息A16xx

组号:第一小组

 

内容:

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

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

(5)界面优化等;

 

五大主功能函数:

/*显示全部。通过循环调用show()函数输出全部联系人*/

void show_all();

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

void search_name();

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

void add();

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

void modify();

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

void del_one();

 

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

/*打印出欢迎页面*/

void welcome();

/*打印出主菜单页面*/

void first_menu();

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

int menu();

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

void work();

/*函数的逻辑顺序操作与选择等*/

void main();

 

  • 分工合作任务表:

小组长 戴x超

学号

姓名

主要任务

占比

等级

1

蒋x杰

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

8%

B

2

万x

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

8%

B

3

陈x

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

9%

A

4

施x婷

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

9%

B

 

5

 

戴x超

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

 

16%

 

A

6

张x宇

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

9%

B

7

赵x梅

程序功能说明的文档编写

8%

B

8

丰x诚

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

9%

B

9

汪x东

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

7%

C

10

龚x

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

10%

A

11

肖x洋

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

7%

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 功能展示:

欢迎界面:

主界面:

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

 

 

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

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

 

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

 

五、源代码:

 

#include<iostream>

#include<cstring>

#include<cstdlib>

#include<conio.h>

#include<cmath>

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:"<<name<<endl;

                   cout<<"sex:"<<sex<<endl;

                   cout<<"phone:"<<phone<<endl;

                   cout<<"email:"<<email<<endl;

}

//增加一位联系人

void add(){

         cout<<"name:"<<endl;

         people[Num].set_name();

         cout<<"sex:"<<endl;

         people[Num].set_sex();

         cout<<"phone:"<<endl;

         people[Num].set_phone();

         cout<<"email:"<<endl;

         people[Num].set_email();

         cout<<"输入成功!"<<endl<<endl;

         Num++;

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

         getch();

}

//修改联系人

void modify(){

         char a[20],s;

         int flag_find=0,i;

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

         cin>>a;

         for(i=0;i<Num;i++){    //从所有联系人中循环查找

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

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

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

                            cout<<"是否要修改姓名?(y/n)"<<endl;  //使用if语句确认是否要修改姓名 性别 电话 电子邮件

                            cin>>s;

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

                                     cout<<"name:";

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

                                     people[i].set_name();

                            }

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

                            cin>>s;

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

                                     cout<<"sex:";

                                     people[i].set_sex();

                            }

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

                            cin>>s;

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

                                     cout<<"phone:";

                                     people[i].set_phone();

                            }

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

                            cin>>s;

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

                                     cout<<"email:";

                                     people[i].set_email();

                            }

                            cout<<endl;

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

                   }

         }

         if(flag_find==0){

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

         }

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

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

}

//删除一个联系人

void del_one(){

         char a[20],c;

         int flag_find=0,i,j;

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

         cin>>a;

         for(i=0;i<Num;i++){

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

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

                            people[i].show();

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

                            cin>>c;

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

                                     for(j=i;j<Num-1;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<<endl;

                   }

         }

         if(flag_find==0){

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

         }else{

                   cout<<endl;

         }

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

         getch();

}

//打印所有联系人

void show_all(){

         int i,flag_stop=0;

         char c;

         for(i=0;i<Num;i++){

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

                   people[i].show();

         }

         cout<<"此系统共有"<<Num<<"人信息。"<<endl;

         if(flag_stop==0)

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

         cout<<endl;

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

         getch();   

}

//搜索联系人

void search_name(){

         char a[20];

         int i,flag_find=0;

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

         cin>>a;

         for(i=0;i<Num;i++){

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

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

                            people[i].show();

                            flag_find=1;

                   }

         }

         if(flag_find==0){

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

         }else{

                   cout<<endl;

         }

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

         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<<"          主菜单                 "<<endl;

         cout<<"----------------------------"<<endl;

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

         cout<<"----------------------------"<<endl;

}

int menu(){

         char s,t;

         int choice;

         while(true){

                   while(true){

                            first_menu();

                            cin>>s;

                            switch(s){

                                     case 'F':

                                               cout<<"a 显示全部信息"<<endl<<"b 查询某人信息"<<endl;

                                               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 显示全部信息"<<endl<<"b 查询某人信息"<<endl;

                                               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 删除某人信息"<<endl;

                                               cin>>t;

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

                                                        choice=5;

                                               }

                                               else{

                                                        choice=0;

                                               }

                                               break;

                                     case 'd':

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

                                               cin>>t;

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

                                                        choice=5;

                                               }

                                               else{

                                                        choice=0;

                                               }

                                               break;

                                     default :{

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

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

                                               getch();

                                     }

                            }

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

                                               break;

                            }

                   }

                   if(choice==0){

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

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

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

  • 22
    点赞
  • 235
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 浙江大学面向对象程序设计大作业要求使用MFC(Microsoft Foundation Class)进行3D查看和编辑。MFC是一种基于C++的图形用户界面(GUI)框架,可以用于开发Windows平台上的应用程序。 首先,该大作业要求实现一个3D模型的查看功能。通过MFC的图形界面,用户可以加载和显示3D模型文件,并具备平移、缩放和旋转等操作功能,以便在屏幕上多角度查看模型。MFC提供了丰富的控件和图形绘制功能,可以轻松实现模型的展示效果。 其次,该大作业还要求实现3D模型的编辑功能。通过MFC的图形界面,用户可以对模型进行修改,比如移动顶点、添加新的面片等。MFC提供了与鼠标和键盘的交互接口,可以方便地捕捉用户的鼠标点击和按键操作,并对模型进行相关修改。 在实现过程中,可以使用现有的开源库或者自行编写3D渲染的算法。常用的开源库包括OpenGL和DirectX,它们提供了强大的3D图形处理功能,可以与MFC配合使用。对于初学者来说,可以先学习OpenGL或DirectX的基础知识,然后再结合MFC进行实际开发。 总之,浙江大学面向对象程序设计大作业要求使用MFC实现3D模型的查看和编辑功能。通过合理利用MFC的图形界面和交互功能,结合3D渲染算法或开源库,可以较为高效地完成这个大作业。这个大作业不仅可以提升学生的编程能力,还可以加深对面向对象编程和图形学的理解。 ### 回答2: 浙江大学面向对象程序设计c大作业是一个基于MFC的3D查看编辑程序。MFC(Microsoft Foundation Classes)是由微软开发的一套基于C++的应用程序框架,用于开发Windows平台的图形用户界面应用程序。 在这个大作业中,我们需要实现一个具有3D查看和编辑功能的程序。首先,我们需要设计一个用户友好的界面,通过MFC提供的工具和类库来创建各种界面元素,如按钮、菜单、工具栏等。 接下来,我们需要实现对3D模型的查看功能。通过使用OpenGL或其他类库,我们可以加载和显示3D模型,同时提供简单的操作,如旋转、缩放和平移。用户可以通过鼠标和键盘来控制模型的视角和观看效果。 除了查看功能,我们还需要实现对3D模型的编辑功能。用户可以选择不同的编辑工具,如绘制工具、修改工具和删除工具,来对模型进行操作。例如,用户可以使用绘制工具在模型上绘制新的形状,使用修改工具改变模型的几何形状,使用删除工具删除不需要的部分。 在实现这个大作业时,我们需要充分运用面向对象编程的思想和技巧。我们可以将3D模型和编辑工具抽象为对象,通过继承和多态来实现代码的复用和扩展性。我们还需要注意良好的代码结构和注释,以提高代码的可读性和维护性。 总之,浙江大学面向对象程序设计c大作业是一个基于MFC的3D查看编辑程序,需要我们设计和实现一个具有用户友好界面的程序,提供3D模型的查看和编辑功能。在完成这个大作业时,我们需要熟练使用MFC和相关类库,同时灵活运用面向对象编程的思想和技巧。 ### 回答3: 浙江大学面向对象程序设计c大作业要求使用MFC进行3D查看和编辑。MFC是微软公司提供的一个用于Windows应用程序开发的框架,可以快速实现Windows平台上的功能丰富的应用程序。在这个大作业中,我们需要使用MFC框架实现一个具备3D查看和编辑功能的应用。 首先,该应用程序需要能够加载和显示3D模型。我们可以选择使用第三方库,例如OpenGL、Direct3D等来进行3D模型的渲染和显示。通过MFC提供的窗口和控件,我们可以在应用程序的界面上创建一个用于显示3D模型的画布,并通过代码来实现3D模型的加载和渲染。 其次,该应用程序需要支持对3D模型进行编辑操作。我们可以通过MFC提供的各种控件和工具栏来设计一些常用的编辑功能,例如平移、旋转、缩放等。通过这些编辑功能,用户可以对3D模型进行变换和操作,实现查看不同角度和展示效果的目的。 另外,该应用程序还可以添加一些高级的编辑功能,例如添加材质、贴图、光照效果等。这些功能可以通过调用相关的第三方库或使用MFC自带的绘图函数来实现。通过添加这些高级功能,可以让用户对3D模型进行更加细致和个性化的编辑。 最后,通过使用MFC框架,我们可以方便地实现应用程序的用户界面设计和交互逻辑,并且可以充分利用MFC提供的丰富的控件和功能,能够快速地满足大作业的要求。通过合理的设计和实现,我们可以开发出一个功能完备、稳定可靠的MFC应用程序,实现3D模型的查看和编辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值