通讯簿管理(C++顺序表的应用)
更新时间:2024-01-01 19:13:01 阅读量: 教育文库 文档下载
- 打印机通讯簿管理推荐度:
- 相关推荐
3 通讯簿管理(顺序表的应用)
【问题描述】通讯簿是一个线性表,可以存储一定数量的联系人记录,提供查找、插入、
删除和修改等操作。通讯簿的特点是以查找为主要操作,要求快速查找到指定对象的位置,故宜采用具有随机访问功能的顺序表。
【数据结构】使用顺序表SeqList建立通讯簿。作为表项的联系人记录,至少应包括以下
属性:
{ 序号,姓名,与本人关系,电话号码}
其中序号具有唯一性。序号和姓名可作为查找的主要关键字。与本人关系可枚举为“亲人”、“朋友”和“同事”,主要作用是为联系人分组,并作为次要关键字。
将上述联系人记录定义为一个结构(struct),在主程序中建立模板类顺序表SeqList的对象时用该结构实例化表结点的类型。
【主要功能】程序应为用户提供操作选择界面,必要的操作包括:查找某人电话号码,添
加新记录,修改记录,删除记录,打印亲人清单、朋友清单或同事清单以及退出等。另外,为初始化方便,原始数据可存储在磁盘文件中。
【主要代码】
#include
enum Relation{Friends,Familiers,Colleague}; template
{ char Num[10];//编号
char PhoNum[12];//电话号码 char Name[20];//姓名 int m;//关系
Person( int &ite) {m=ite;}
Person(int &p1,char Name[],char P[], char item[]) { for(int i=0;i<20;i++){ Name[i]=Name[i]; } for(int j=0;j<11;j++){PhoNum[j]=P[j];} for(int k=0;k<10;k++) {Num[k]=item[k];} m=p1; }};
template
Person
SeqList
void Show_Select(); void Show_Friends(); void Show_Familiers(); void Show_Colleague(); };
1
template
bool SeqList
cout<<\请输入您要添加的人的编号:\cout<<\请输入您要添加的人的姓名:\cout<<\请输入您要添加的人的电话:\
cout<<\请输入您要添加人与您的关系亲人(1)朋友(2)同事(3)\ l++; n++; return true; }
template
void SeqList
{ this->Input(); cout<<\信息已保存好!\template
void SeqList
cout<<\请输入您要查找的序号或姓名:\cin>>pr; bool flag=1;
for(int li=0;li { if(IfEqual(pr,data[li].Name)||IfEqual(pr,data[li].Num)) { cout<<\序号:\姓名:\电话:\ for(int k=0;data[li].PhoNum[k]!='\\0';k++) {cout< cout<<'\\t';Switch(data[li].m);flag=0; } } if(flag) cout<<\查找失败!请查证后再试!\} template void SeqList { cout<<\所有人的信息如下:\ for(int lm=0;lm cout<<\序号:\姓名:\电话:\ for(int k=0;data[lm].PhoNum[k]!='\\0';k++) {cout< cout<<'\\t'; Switch(data[lm].m); } } template void SeqList {cout<<\请选择要显示联系人与您的关系:亲人(1),朋友(2),同事(3),个人(4):\ int m;cin>>m; switch(m) { case 1:{Show_Familiers();break;} case 2:{Show_Friends();break;} case 3:{Show_Colleague();break;} case 4:{Search();break;} default: {cout<<\关系设置错误!\ }} template void SeqList { cout<<\所有朋友的信息如下:\ for(int lm=0;lm cout<<\序号:\姓名: 2 \电话:\ for(int k=0;data[lm].PhoNum[k]!='\\0';k++) {cout< template void SeqList { cout<<\所有亲人的信息如下:\ for(int lmm=0;lmm cout<<\序号:\姓名:\电话:\ for(int k=0;data[lmm].PhoNum[k]!='\\0';k++) {cout< cout<<'\\t'; Switch(data[lmm].m); } }} template void SeqList { cout<<\所有同事的信息如下:\ for(int lmp=0;lmp cout<<\序号:\姓名:\电话:\ for(int k=0;data[lmp].PhoNum[k]!='\\0';k++) {cout< cout<<'\\t'; Switch(data[lmp].m); } }} template void SeqList cout<<\请输入您要修改联系人的序号或姓名:\ bool flag=1; for(int lp=0;lp if(flag) cout<<\您要修改的联系人不存在!\} template void SeqList cout<<\请输入您要删除的联系人的序号或姓名:\ for(int lr=0;lr if(flag) cout<<\删除失败!\ 3 void Switch(int i) { switch(i) { case 1: {cout<<\亲人\ case 2: {cout<<\朋友\ case 3: {cout<<\同事\ default: {cout<<\关系设置错误!\ }} int IfEqual(char p1[],char p2[]) { int flag=strcmp(p1,p2); return flag; } void Menu() { cout<<\★★★★★★★★★★★★★★★★★★★★★★★★★★\ <<\※ ※\ <<\※ ※我※的※通※迅※录※ ※\ <<\※ ※\ <<\※ 1. 添加新联系人. 4. 修改信息. ※\ <<\※ ※\ <<\※ 2. 删除联系人. 5. 查询联系人. ※\ <<\※ ※\ <<\※ 3. 显示所有联系人. 6. 关闭通讯簿. ※\ <<\※ ※\ <<\★★★★★★★★★★★★★★★★★★★★★★★★★★\< void main() { cout<<\欢迎使用通讯簿!\ char ptr[20];cout<<\安全验证,请输入密码:\ { int flag=strcmp(ptr,\洪咏波\ if(flag==0)cout<<\通过验证!\ else { cout<<\对不起,您无访问权限!\ } bool flag1=0; Menu(); int x=0; SeqList cout<<\请选择菜单 :\ int n; cin>>n; switch (n) { case 1: hyb.Insert();break;//添加联系人 case 2: hyb.Delete();break;//删除联系人 case 3: hyb.Show_All();break;//显示所有联系人 case 4: hyb.Correct();break;//修改联系人信息 case 5: hyb.Show_Select();break;//选择查询联系人 case 6: cout <<\安全退出\ default: break; 4 } if(flag1) break; } } 【实验过程】 【实验体会】小小的顺序表应用于实际的电话簿还真有些难度,Switch开关语句也用得比较多,写完后想想应该给通讯簿加把锁,查资料才搞清楚包含在stdlib.h中的exit(1)可以判断后直接退出程序。以前一直以为exit(1)可有可无,现在在实际应用中才理解了它的意思。看来课本上的内容还是蛮有用的。程序还存在一些缺陷,设想加入Output语句用来输出每次操作后的结果,减少程序的代码,不必要调用函数每次都自己写输出,但是没有试验成功,还有待改进! 5
正在阅读:
通讯簿管理(C++顺序表的应用)01-01
屋面防水专项施工方案02-25
英国2013诽谤法对ISP的最新规定及对我国的启示-论文03-20
七年级健康教育课教案09-05
Java 笔试题(1)答案09-08
水平井相关技术现状06-10
大学英语212-08
2015年中考病句汇编及答案详解04-20
权威分析直流齿轮泵微型隔膜泵12-16
土壤侵蚀模型研究进展及发展方向08-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- C++
- 顺序
- 通讯
- 应用
- 管理
- 初三化学八、九单元知识总结
- 概率统计练习册习题解答(定)
- 南京理工大学学生联合会章程
- 诚信承诺函
- 2014国家公务员政治常识习题(86)
- 《监控组态软件》实验指导书
- 花捻挡车工操作法
- 新疆1#锅炉水压试验方案
- 关于公共关系的基本理论框架
- 2010初级会计职称
- 发动机活塞设计课设说明书
- 上海应用技术学院深入学习实践科学发展观活动简报
- 2015习题按章节外科重点
- 《大圆满前行》简介
- 2018年林权抵押担保合同-精选word文档(11页)
- 2018年6月大学生预备党员入党转正申请书
- SB3DS与Tribon软件数据之间格式的兼容转化
- 上道作业列车防护登记簿使用管理办法的通知
- 00655报纸编辑201301自考历年真题及答案
- 华为技术有限公司招聘计划2.dot - 图文