C++程序设计通讯录管理系统cpp.docx
- 文档编号:3550523
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:19
- 大小:18.39KB
C++程序设计通讯录管理系统cpp.docx
《C++程序设计通讯录管理系统cpp.docx》由会员分享,可在线阅读,更多相关《C++程序设计通讯录管理系统cpp.docx(19页珍藏版)》请在冰豆网上搜索。
C++程序设计通讯录管理系统cpp
C++信息管理
#include
#include
#include
#include
#include
//#include
usingnamespacestd;
stringID;//具有唯一性
classPerson
{
protected:
stringNo;//学号
stringAge;
charName[20];//姓名
charSex[10];//性别
stringTel;//联系方式
Person*next;
public:
Person(stringID,char*Name,char*Sex,stringAge,stringTel)
{
strcpy(this->Name,Name);
strcpy(this->Sex,Sex);
this->Tel=Tel;
this->No=ID;
this->Age=Age;
}
friendclassManage;
};
classManage
{
private:
Person*person;
public:
Manage()
{
person=0;
Load();
}
~Manage()
{
Person*p;
p=person;
while(p)
{
p=p->next;
deleteperson;
person=p;
}
person=0;
}
voidFind(charName[20]);//按姓名查找
voidFind(stringID);//按编号查找
voidAdd();//添加加信息
voidDelete();//删除信息
voidModify(stringID);//修改信息
voidQuery();//查询信息
voidTJ();//清除文件信息
voidSave();//保存数据
voidLoad();//读入数据
voidLook();//预览
voidDesTory();
voidOutput(Person*p)
{
cout<<"\t\t学号:
"< cout<<"\t\t姓名: "< cout<<"\t\t性别: "< cout<<"\t\t年龄: "< cout<<"\t\t联系电话: "< cout< } }; voidManage: : Add() { system("cls"); Person*p,*p2;//新结点指针 stringNo,Age,Tel; charName[20],Sex[10]; charc; cout<<"\n**新增学生通讯录**\n"; //输入学生信息 cout<<"输入学号: \t"; cin>>No; cout< { Person*p1; p1=person; while(p1) { if(p1->No==No) { break; } else { p1=p1->next; } } if(p1! =NULL) { cout<<"该学号已存在,是否修改该学生信息(Y/N)"< cin>>c; if(toupper(c)=='Y') { cout<<"该学生信息为: "< Find(No); cout< Modify(No); return; } else return; } } cout<<"输入姓名: \t"; cin>>Name; cout< cout<<"输入性别: \t"; cin>>Sex; cout< cout<<"输入年龄: \t"; cin>>Age; cout< cout<<"输入联系方式: \t"; cin>>Tel; cout< p=newPerson(No,Name,Sex,Age,Tel); p->next=0; //学生结点加入链表 if(person)//若已经存在结点 { p2=person; while(p2->next)//查找尾结点 { p2=p2->next; } p2->next=p;//连接 } else//若不存在结点(表空) { person=p;//连接 } system("cls"); cout<<"\t\t\t***添加成功***\n"< cout<<"是否继续添加(Y/N)"< cin>>c; if(toupper(c)=='Y') { Add(); return; } else return; } voidManage: : Delete()//删除人员 { system("cls"); charc; stringNo; cout<<"\n**删除信息**\n"; cout<<"输入要删除的学生ID: \t"; cin>>No; cout< //查找要删除的结点 Person*p1,*p2; p1=person; while(p1) { if(p1->No==No) break; else { p2=p1; p1=p1->next; } } //删除结点 if(p1! =NULL)//若找到结点,则删除 { cout<<"所要删除的学生的信息如下: \n"< Output(p1); cout<<"确定是否删除(Y/N): "; cin>>c; if(toupper(c)! ='Y') return; //system("pause"); if(p1==person)//若要删除的结点是第一个结点 { person=p1->next; deletep1; } else//若要删除的结点是后续结点 { p2->next=p1->next; deletep1; } cout<<"\t\t***删除成功***\n"; cout<<"是否继续删除(Y/N)"< cin>>c; if(toupper(c)=='Y') { Delete(); return; } else return; } else//未找到结点 cout<<"未找到该学生! \n"; getch(); } voidManage: : Modify(stringID) { Person*p1; charc; p1=person; while(p1) { if(p1->No==ID) break; else { p1=p1->next; } } if(p1! =NULL)//若找到结点 { system("cls"); cout<<"所要修改的学生的信息如下: \n"< Output(p1); do { cout<<"1.修改姓名2.修改性别3.修改年龄4.修改联系方式5.退出修改\n"< cout<<"请选择(1-5)要修改的信息\n"< cin>>c; if(c! ='5') cout<<"请输入新的信息: "; switch(c) { case'1': cin>>p1->Name;break; case'2': cin>>p1->Sex;break; case'3': cin>>p1->Age;break; case'4': cin>>p1->Tel;break; default: break; } }while(c! ='5'); system("cls"); cout<<"\t***修改成功***\n"< cout<<"是否继续修改(Y/N): "< cin>>c; if(toupper(c)=='Y') { cout<<"请输入要修改人员的ID: "; cin>>ID; cout< Modify(ID); return; } else return; } else//未找到结点 cout<<"未找到该学生! \n"; getch();//暂停 } voidManage: : Save()//数据写入到文件 { ofstreamfPerson("Person.txt",ios: : out); charc; cout<<"\n保存数据,是否继续? [Y/N]: "; cin>>c; if(toupper(c)! ='Y') return; Person*p=person; while(p) { fPerson< p=p->next; } fPerson.close(); cout<<"\n保存成功...\n"; system("pause"); } voidManage: : Load()//数据读入 { ifstreamfPerson; Person*p=person; stringNo,Age,Tel; charName[20],Sex[10]; fPerson.open("person.txt",ios: : in); fPerson>>No>>Name>>Sex>>Age>>Tel; while(fPerson.good()) { p=newPerson(No,Name,Sex,Age,Tel); p->next=0; //员工结点加入链表 if(person)//若已经存在结点 { Person*p2; p2=person; while(p2->next)//查找尾结点 { p2=p2->next; } p2->next=p;//连接 } else//若不存在结点(表空) { person=p;//连接 } fPerson>>No>>Name>>Sex>>Age>>Tel; } fPerson.close(); } voidManage: : Find(stringID) { Person*p1; p1=person; while(p1) { if(p1->No==ID) break; else { p1=p1->next; } } if(p1! =NULL) { Output(p1); } else cout<<"未找到该学生"< } voidManage: : Find(charName[20]) { Person*p1; intcount=0; p1=person; while(p1) { if(strcmp(p1->Name,Name)==0) { count++; Output(p1); } p1=p1->next; } if(count) { cout<<"\t查询成功! ! ! "< cout<<"\n共找到"< } else cout<<"\n\t\t未找到该学生! ! ! \n"< } voidManage: : Query() { charc; stringID,Tel; charName[20]; do{ cout<<"1.按学号查找2.按名字查找3.按电话号码查找4.退出查找"< cin>>c; //system("cls"); cout< switch(c) { case'1': { cout<<"输入学号ID: "; cin>>ID; Find(ID); };break; case'2': { cout<<"输入姓名Name: "; cin>>Name; Find(Name); };break; case'3': { cout<<"输入电话号码Tel"< cin>>Tel; Find(Tel); };break; case'4': break; default: cout<<"输入有误请重新输入! ! ! \n"< } }while(c! ='1'&&c! ='2'&&c! ='3'&&c! ='4'); cout<<"\t\t\t***查找成功***\n"< cout<<"是否继续查找(Y/N)"< cin>>c; if(toupper(c)=='Y') { Query(); return; } else return; system("pause"); } voidManage: : Look() { //设置字体颜色 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED|FOREGROUND_GREEN); system("cls"); Person*p1; intcount=0; charc; p1=person; while(p1) { cout<<"ID: "< "< count++; p1=p1->next; } if(count! =0) { cout<<"\n\t\t预览成功! ! ! \n"< cout<<"查询详细信息(Y/N): "; cin>>c; if(toupper(c)=='Y') { Query(); return; } else return; } else { cout<<"尚未创建通讯录,是否创建(Y/N)"< cin>>c; if(toupper(c)=='Y') { Add(); return; } else return; } } voidManage: : DesTory() {//设置字体为红色 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_RED); charc; system("cls"); cout<<"\n\t\t\t**清除信息**\n"; cout<<"警告: \n清除通讯录信息会导致您保存的信息完全消失! ! ! \n"< cout<<"★是否决定清除通讯录信息(Y/N): "< cin>>c; if(toupper(c)! ='Y') return; cout<<"请再次确认(Y/N)"< cin>>c; if(toupper(c)! ='Y') return; else { Person*p; p=person; while(p) { p=p->next; deleteperson; person=p; } person=0; //ofstreamfPerson("person.txt"); //fPerson.close(); } system("pause"); } voidManage: : TJ() { Person*p1; intcount=0,Boy=0,Girl=0; p1=person; while(p1) { count++; if(strcmp(p1->Sex,"男")==0) Boy++; if(strcmp(p1->Sex,"女")==0) Girl++; p1=p1->next; } cout<<"\n总共有"< cout<<"男生: "< "< system("pause"); } intmain(void) { Managem; intc; do { //设置字体为绿色 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY| FOREGROUND_GREEN); system("cls"); cout<<"=========================================="< cout<<"★☆\t1.新增通讯录\t☆★"< cout<<"★☆\t2.删除通讯录\t☆★"< cout<<"★☆\t3.修改通讯录\t☆★"< cout<<"★☆\t4.查询详细信息\t☆★"< cout<<"★☆\t5.保存数据\t☆★"< cout<<"★☆\t6.预览信息\t☆★"< cout<<"★☆\t7.清除通讯录\t☆★"< cout<<"★☆\t8.统计\t☆★"< cout<<"=========================================="< cout<<"0-退出\t请选择(1-8): "; cin>>c; switch(c) { case1: m.Add();break; case2: m.Delete();break; case3: { system("cls"); cout<<"请输入要修改人员的ID: "; cin>>ID; cout< m.Modify(ID); };break; case4: { system("cls"); m.Query(); };break; case5: m.Save();break; case6: m.Look();break; case7: m.DesTory();break; case8: m.TJ();break; default: break; } }while(c! =0); chars; cout<<"\n★是否要保存您的所有操作(Y/N): "< cin>>s; if(toupper(s)=='Y') m.Save(); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 通讯录 管理 系统 cpp