题目2.李刚是一爱折腾的人,当然爱折腾的人均有梦想,他想当中国的盖次呢。可不,现在个人好友信息多了,复杂了,他想制作一个个人通讯录的制作管理软件。 刚好这个学期学了数据结构课,所以他准备使用数据结构知识来实现了。并考虑使用双向链表作数据结构。并制定了初步要求:

(1)每个好友信息包含姓名、性别、住址、邮编、几岁、电话、QQ、微信帐号、生日等。

(2)作为一个完整的系统,应具有友好的界面和较强的容错能力。

一、代码显示

// contact.h: interface for the contact class.
//
//#if !defined(AFX_CONTACT_H__D20C4212_AA82_4DAA_A8CB_57C4D633FDA2__INCLUDED_)
#define AFX_CONTACT_H__D20C4212_AA82_4DAA_A8CB_57C4D633FDA2__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "contact.h"
#include <string>
using namespace std;
class contact
{
public:string getphone();string getname();string getsex();string getaddress();string getage();string getQQ();string getweixin();string getbirthday();void addphone(string a);void addname(string a);void addsex(string a);void addaddress(string a);void addage(string a);void addQQ(string a);void addweixin(string a);void addbirthday(string a);contact();virtual ~contact();contact *next_contact;contact *last_contact;
private:string name;string phonemun;string sex;string address;string age;string QQ;string num;string birthday;};#endif // !defined(AFX_CONTACT_H__D20C4212_AA82_4DAA_A8CB_57C4D633FDA2__INCLUDED_)


<pre name="code" class="cpp">#include "addressbook.h"
#include <conio.h>
void menu()
{system("cls");printf("                           |------------------|\n");printf("                           |       通讯录     |\n");printf("                           |------------------|\n");printf("                           |---1. 增加联系人--|\n");printf("                           |---2. 删除联系人--|\n");printf("                           |---3. 修改联系人--|\n");printf("                           |---4. 显示联系人--|\n");printf("                           |---5. 查询联系人--|\n");printf("                           |---6.    退出   --|\n");printf("                           |---------------|\n");
}
int handle(char c)
{switch(c){case '1':add();menu();break;case '2':delete_contact();menu();break;case '3':modify_contact();menu();break;case '4':display_contact();menu();break;case '5':query_contact();menu();break;case '6':return 0; default:system("cls");menu();cout<<" 非法选项,请选择1-6,谢谢合作。";break;}return 1;
}
void add()
{contact *new_contact;string name,phone,sex,address,postcode,age,QQ,weixin,birthday;system("cls");new_contact = new contact; contact_num++;printf("                 |-----------------------------------|\n");printf("                 |            增加联系人             |\n");printf("                 |-----------------------------------|\n");printf("\n");printf("\n");printf("请输入名字:\n");cin>>name;new_contact->addname(name);printf("请输入电话:\n");cin>>phone;char c[20];strcpy(c,phone.c_str());for (int i=0;i<phone.size();i++){if (c[i]>'9'||c[i]<0){cout<<"非法电话,输入任意键回主菜单\n";getch();return ;}}new_contact->addphone(phone);printf("请输入性别:\n");cin>>sex;new_contact->addsex(sex);printf("请输入住址:\n");cin>>address;new_contact->addaddress(address);printf("请输入年龄:\n");cin>>age;new_contact->addage(age);printf("请输入QQ号:\n");cin>>QQ;new_contact->addQQ(QQ);printf("请输入微信号:\n");cin>>weixin;new_contact->addweixin(weixin);printf("请输入出生日期:\n");cin>>birthday;new_contact->addbirthday(birthday);if (contact_num==1){root.next_contact = new_contact;root.last_contact = new_contact;}else{new_contact->next_contact = root.next_contact;root.next_contact->last_contact = new_contact;root.next_contact = new_contact;}cout<<endl<<endl<<"增加成功,按任意键回主菜单";getch();return ;
}
void delete_contact()
{string name;contact *this_contact;this_contact = root.next_contact;if (contact_num == 0){cout<<"无联系人可以删除,输入任意键继续操作";getch();return ;}system("cls");printf("                 |-----------------------------------|\n");printf("                 |            删除联系人             |\n");printf("                 |-----------------------------------|\n");printf("\n");printf("\n");printf("          |-----------输入需要删除的联系人姓名-------------|\n");cin>>name;while(this_contact != NULL){if (this_contact->getname()==name){if (this_contact->last_contact == NULL&&this_contact->next_contact == NULL){root.next_contact = NULL;root.last_contact = NULL;delete this_contact;cout<<"\n删除成功,输入任意键回主菜单";getch();return ;}else if (this_contact->last_contact == NULL){root.next_contact = this_contact->next_contact;this_contact->next_contact->last_contact = NULL;delete this_contact;cout<<"\n删除成功,输入任意键回主菜单";getch();return ;}else if (this_contact->next_contact == NULL){this_contact->last_contact->next_contact = NULL;root.last_contact = this_contact->last_contact;delete this_contact;cout<<"\n删除成功,输入任意键回主菜单";getch();return ;}else{this_contact->last_contact->next_contact = this_contact->next_contact;this_contact->next_contact->last_contact = this_contact->last_contact;delete this_contact;cout<<"\n删除成功,输入任意键回主菜单";getch();return ;}}this_contact = this_contact->next_contact;}cout<<endl<<endl<<"无此联系人,删除失败,输入任意键回主菜单";getch();return ;
}
void modify_contact()
{contact *this_contact;string name;string choose;system("cls");printf("                 |-----------------------------------|\n");printf("                 |            修改联系人             |\n");printf("                 |-----------------------------------|\n");printf("\n");printf("\n");printf("          |-----------输入需要修改的联系人姓名-------------|\n");cin>>name;this_contact = root.next_contact;while(this_contact != NULL){if (this_contact->getname()==name){for (int i=0;i<2;i++){system("cls");printf("                 |-----------------------------------|\n");printf("                 |            修改联系人             |\n");printf("                 |-----------------------------------|\n");printf("\n");printf("\n");switch(i){case 0:    printf("          |-----------输入需要修改的联系人姓名-------------|\n");cout<<"输入修改后的名字,无需修改请按0回车\n";cout<<this_contact->getname()<<endl;cin>>choose;if (choose != "0"){this_contact->addname(choose);}break;case 1:  printf("          |-----------输入需要修改的联系人电话-------------|\n");cout<<"输入修改后的电话,无需修改请按0回车\n";cout<<this_contact->getphone()<<endl;cin>>choose;if (choose != "0"){this_contact->addphone(choose);}break;}}cout<<"修改成功,输入任意键回主菜单";getch();return ;}this_contact = this_contact->next_contact;}cout<<endl<<endl<<"无此联系人,修改失败,输入任意键回主菜单";getch();return ;}
void query_contact()
{contact *this_contact;string name;system("cls");printf("                 |-----------------------------------|\n");printf("                 |            查找联系人             |\n");printf("                 |-----------------------------------|\n");printf("\n");printf("\n");printf("          |-----------输入需要查找的联系人姓名-------------|\n");cin>>name;this_contact = root.next_contact;while(this_contact != NULL){if (this_contact->getname()==name){cout<<endl<<endl<<"姓名 :"<<this_contact->getname()<<endl;cout<<"电话 :"<<this_contact->getphone()<<endl;cout<<endl<<endl<<"输入任意键回主菜单";getch();return ;}this_contact = this_contact->next_contact;}cout<<endl<<endl<<"无此联系人,查找失败,输入任意键回主菜单";getch();return ;
}
void display_contact()
{system("cls");contact *this_contact;char format[]="              ";this_contact = root.next_contact;printf("|-----------------------------------|\n");printf("|               联系人              |\n");printf("|-----------------------------------|\n");printf("姓名\t电话\t性别\t住址\t\t年龄\tQQ\t\t微信\t出生日期  \n");while(this_contact != NULL){strcpy(format,this_contact->getname().c_str());cout<<format;strcpy(format,this_contact->getphone().c_str());cout<<"\t"<<format;strcpy(format,this_contact->getsex().c_str());cout<<"\t"<<format;strcpy(format,this_contact->getaddress().c_str());cout<<"\t"<<format;strcpy(format,this_contact->getage().c_str());cout<<"\t"<<format;strcpy(format,this_contact->getQQ().c_str());cout<<"\t"<<format;strcpy(format,this_contact->getweixin().c_str());cout<<"\t"<<format;strcpy(format,this_contact->getbirthday().c_str());cout<<"\t"<<format<<endl;this_contact = this_contact->next_contact;}cout<<endl<<endl<<"         输入任意键到主菜单";getch();return ;
}
void main()
{menu();m = getch();while(1){if (handle(m)==0){exit(0);}m = getch();}
}


二、运行结果显示

1、操作平台


2、增加联系人:刘小明


3、显示联系人


4、删除联系人:汤瓜皮


5、修改联系人:刘小明


6、查找联系人:王心桐


7、退出系统

三、个人总结

     学习编程这门课程,真的需要花很多心思和时间,而且需要坚持不懈,每天都花上一些时间去敲一下代码,想要更深入了解的话,甚至可能要经过上百次乃至上千次地对代码进行调试。可惜自己太懒并没用做到这一点,所以在做编程时都觉得和吃力,感觉自己什么都好想没都不懂。这次连一些基本的问题调试了很久才能解决。

题目二:课程设计报告相关推荐

  1. 大二c语言数电课程设计,数电课程设计报告(数字钟的设计).doc

    数电课程设计报告(数字钟的设计).doc 数电课程设计报告 设计背景与要求 设计要求 系统概述 2.1设计思想与方案选择 2.2各功能块的组成 2.3工作原理 第三章 单元电路设计与分析 3.1各单元 ...

  2. matlab课程设计报告题目,课程设计报告

    <课程设计报告>由会员分享,可在线阅读,更多相关<课程设计报告(6页珍藏版)>请在人人文库网上搜索. 1.课程设计报告(文章一):课程设计报告 课程设计报告 题 目: 语音信号 ...

  3. 计算机二维辅助设计课程设计,计算机辅助设计课程设计报告-千斤顶的二维工程图和三维建模.doc...

    计算机辅助设计 课程设计报告 课程名称:计算机辅助设计 设计题目: 千斤顶的二维工程图和三维建模 专业班级:工程力学 02班 学生姓名: 学号: 起止日期 2013.1.07 至 2013.1.17 ...

  4. linux课程设计题目主存空间的分配与回收,可变分区分配与回收,哈尔滨理工大学操作系统课程设计报告.doc-资源下载在线文库www.lddoc.cn...

    可变分区分配与回收,哈尔滨理工大学 操作系统课程设计报告.doc 哈 尔 滨 理 工 大 学 课 程 设 计 ( 操 作 系 统 ) 题 目 可变分区分配与回收 (首次适应算法) 班 级 计算机科学与 ...

  5. 地大c语言课程设计题目,中国地质大学数据结构课设-全国铁路运输网最佳经由问题课程设计报告精选.doc...

    中国地质大学数据结构课设-全国铁路运输网最佳经由问题课程设计报告精选 数据结构 上机实习报告 实验题目:全国铁路运输网最佳经由问题 班级: 姓名: 学号: 完成日期:2017年4月25日 目录 课程设 ...

  6. java课设推荐,《Java程序设计》课程设计报告推荐.docx

    <Java程序设计>课程设计报告推荐 <Java程序设计>课程设计报告2015-2016学年 第一学期设计题目整数进制转换学生姓名邹晓刚学 号0专业班级信管1303指导教师 姜 ...

  7. 嵌入式linux设计报告,嵌入式linux课程设计报告

    嵌入式linux课程设计报告 重庆科技学院 课程设计成果 院(系):_电气与信息工程学院_ 班 级: 计科普0802 学生姓名: 庄桐泉 学 号: 2008441067 设计地点(单位)___ _I3 ...

  8. matlab车牌识别课程设计,matlab车牌识别课程设计报告模板(附源代码).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab matlab车牌识别课程设计报告模板(附源代码). ...

  9. 天津大学计算机课程设计挂,《天津大学_智能装置课程设计报告》.doc

    智能装置课程设计报告 一.设计题目 空调控制系统 二.设计目的 1. 深入了解PIC16F877单片机的工作原理,熟练掌握汇编语言程序设计方法,熟练使用MPLAB-ICD仿真器及MPLAB-IDE仿真 ...

  10. 成都理工大学计算机报告,[2017年整理]成都理工大学通信工程计算机网络综合课程设计报告.doc...

    [2017年整理]成都理工大学通信工程计算机网络综合课程设计报告 计算机网络综合实习 课程设计(论文) 设计(论文)题目 计算机网络综合设计 学院名称 信息科学与技术学院 专业名称 通信工程 学生姓名 ...

最新文章

  1. 守护进程的创建方法和步骤
  2. python在财务上的应用-致工作党:Python这项技能你一定要会
  3. 《HTML5触摸界面设计与开发》——导读
  4. Java黑皮书课后题第10章:*10.1(Time类)设计一个名为Time的类。编写一个测试程序,创建两个Time对象(使用new Time()和new Time(555550000))
  5. docker内程序如何读取dockerfile和compose.yml中设置的环境变量
  6. 软件测试—软件测试基础知识—(五)软件测试模型
  7. 《Http Client 官方文档》7. 高级主题
  8. 32.从1到n整数中1出现的次数
  9. 2.微服务设计 --- 演化式架构师
  10. Android TV 开发(2)
  11. zookeeper集群配置并让metaq注册进来
  12. JavaWeb篇-谷歌验证码的使用
  13. 详解Windows Shim的攻防利用
  14. html磁贴模板,文本磁贴模板(列表文件夹)(HTML)
  15. java利用poi导出excel功能-附带图片导出
  16. iframe、frame、frameset那些事
  17. 基于JSP开发的电影票预订系统 JAVA MySQL
  18. 为什么我的CNN石乐志?我只是平移了一下图像而已
  19. PMOS和NMOS的导通特性
  20. Java之二维码工具包-yellowcong

热门文章

  1. 超简单的页眉页脚设置(摘要、目录页眉不同、页脚页码连续)
  2. angularJS 基础回顾
  3. solar2 android,solarwalk2
  4. DirectX12(D3D12)基础教程(三)——使用独立堆以“定位方式”创建资源、创建动态采样器、初步理解采取器类型
  5. PC:各大主板开机启动项快捷键
  6. 26.Nginx详解
  7. 【游戏开发实战】TapTap物理画线游戏,教你使用Unity实现2D物理画线功能,看到我为你画的彩虹了吗
  8. 使用IBM InfoSphere Guardium监视和审计IBM DB2 for i数据库活动
  9. mysql多表查询视图_mysql多表查询并创建视图
  10. 整理使用移动光猫拨号