分享
分销 收藏 举报 申诉 / 15
播放页_导航下方通栏广告

类型通讯录管理程序-c++大作业.doc

  • 上传人:丰****
  • 文档编号:4770202
  • 上传时间:2024-10-12
  • 格式:DOC
  • 页数:15
  • 大小:95.50KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    通讯录 管理程序 c++ 作业
    资源描述:
    同济大学 二○一一~二○一二 学年第 二 学期 交通运输工程学院 课程设计报告书 课程名称: C/C++语言课程设计 班 级: 4班 学 号: 1151220 姓 名: 王琎晨 指导教师: 孙丽君 二○一二 年 六 月 一. 需求分析 程序名称:通讯录管理程序。 程序功能概括: 1) 添加:即增加一个人的记录到通信录中 2) 显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。 3) 查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。 4) 修改:可修改一个人的除姓名外其它信息。 5) 分类并显示:可将人员进行分组,例如分为家人,朋友,同事等,选择分组后,只显示该分组内的信息 6) 装入:即将文件中的信息读入程序。 7) 存储:即将通讯录信息保存在一个文件中。 8) 删除:删除通讯录中的联系人。 程序意义:通讯录管理系统针对手机中对联系人的添加,删除等操作,方便用户使用通讯录,起到便利作用。 二. 概要设计 系统核心功能: Ø 添加联系人 Ø 显示所有联系人信息 Ø 查询联系人并显示 Ø 删除联系人 Ø 分组并显示 Ø 修改联系人信息 功能框图: 通讯录管理 载入数据 分组并显示 查询联系人 删除联系人 显示联系人 插入联系人 保存数据 分组显示 组内添加联系人 创建新组 功能描述: Ø 插入联系人:通过键盘输入联系人的姓名,电话号码,地址,邮政编码等信息,存入通讯录中。 Ø 显示联系人:在屏幕上分行显示所有联系人的信息。 Ø 删除联系人:通过输入需要删除的联系人的姓名删除该联系人。 Ø 查询联系人:通过输入需要查询的联系人的姓名查询该联系人。 Ø 载入数据:从文件读出数据。 Ø 保存数据:将数据保存入文件。 Ø 分组并显示:1.创建新组:创建新的分类。 2.组内添加联系人:将联系人添加入该组。 3:。分组显示:在屏幕上分组显示联系人。 三. 详细设计 本程序用了如下课本中没有的函数,使界面简洁明了。 getch()//键盘任意输入 system(“CLS”)//清屏 如下为完整程序: #include"iostream.h" #include"string.h" #include"iomanip" #include"stdlib.h" #include"stdio.h" #include"conio.h" #include"iomanip.h" struct ben//定义结构 { char name[20]; char address[80]; char num[20]; char you[10]; char fen[10]; struct ben *next; }; struct ben *head=NULL;//定义全局变量 char *lei[20]; int i(0); void csh() { for(int i=0;i<20;i++) lei[i]=NULL; } void menu(); void duru()//读入数据 { system("CLS"); FILE *fp; if((fp=fopen("txl.txt","r+"))==NULL) { cout<<"can't open file"; exit(1); } head=new ben; struct ben *newben; struct ben *tail; tail=head; while(!feof(fp)) { newben=new ben; fread(newben,sizeof(ben),1,fp); tail->next=newben; tail=newben; } tail->next=NULL; cout<<"读取文件成功"<<endl; fclose(fp); cout<<"返回主菜单请安任意键"<<endl; getch(); menu(); } void baocun()//保存数据 { system("CLS"); FILE *fp; if((fp=fopen("txl.txt","r+"))==NULL) { cout<<"can't open file"; exit(1); } if(head==NULL) cout<<"内容空,无需保存"<<endl; else { struct ben*p=head->next; while(p!=NULL) { fwrite(p,sizeof(ben),1,fp); p=p->next; } cout<<"保存成功"<<endl; } cout<<"返回主菜单请安任意键"<<endl; getch(); menu(); } void tianjia()//添加联系人 { char n; do { system("CLS"); struct ben *newben; newben=new ben; strcpy(newben->fen,"wu"); cout<<"请输入姓名"<<endl; cin>>newben->name; cout<<"请输入地址"<<endl; cin>>newben->address; cout<<"请输入电话号码"<<endl; cin>>newben->num; cout<<"请输入邮政编码"<<endl; cin>>newben->you; if(head==NULL) { head=new ben; head->next=newben; newben->next=NULL; } else { newben->next=head->next; head->next=newben; } cout<<"添加完成,若想继续添加请按1,返回主菜单请按任意键"<<endl; n='0'; cin>>n; }while(n=='1'); system("CLS"); menu(); } void print()//输出通讯录列表 { system("CLS"); struct ben *p=head; if(head==NULL) { cout<<"联系人为空,回到主页请按任意键"<<endl; getch(); menu(); } else { p=p->next; cout<<"姓名"<<setw(10)<<"地址"<<setw(10)<<"电话号码"<<setw(10)<<"邮政编码"<<endl; while(p!=NULL) { cout<<p->name<<setw(10)<<p->address<<setw(10)<<p->num<<setw(10)<<p->you<<endl; p=p->next; } cout<<"输出完毕,返回主菜单请按任意键"<<endl; getch(); menu(); } } void change()//修改联系人信息 { system("CLS"); if(head==NULL) { cout<<"联系人为空,回到主页请按任意键"<<endl; getch(); menu(); } else { struct ben *p=head->next; cout<<"请输入修改人的姓名"<<endl; char name1[20]; cin>>name1; while(p!=NULL&&strcmp(name1,p->name)) p=p->next; if(p!=NULL) { cout<<"进行修改"<<endl; cout<<"请输入地址"<<endl; cin>>p->address; cout<<"请输入电话号码"<<endl; cin>>p->num; cout<<"请输入政编码"<<endl; cin>>p->you; cout<<"修改成功"<<endl; cout<<"返回主菜单请按任意键"<<endl; getch(); menu(); } else { cout<<"不存在此人,返回主菜单请按任意键"<<endl; getch(); menu(); } } } void cz()//创建类 { system("CLS"); char j; if(head==NULL) { cout<<"联系人为空,回到主页请按任意键"<<endl; getch(); menu(); } else { cout<<"请输入您要创建的新组"<<endl; char s[10]; cin>>s; lei[i]=new char[10]; strcpy(lei[i],s); i++; do { system("CLS"); cout<<"请选择要您要添加入该类的人(输入人名)"<<endl; struct ben *p=head->next; cout<<"姓名"<<setw(10)<<"地址"<<setw(10)<<"电话号码"<<setw(10)<<"邮政编码"<<setw(10)<<"分类"<<endl; while(p!=NULL) { cout<<p->name<<setw(10)<<p->address<<setw(10)<<p->num<<setw(10)<<p->you<<setw(10)<<p->fen<<endl; p=p->next; } p=head->next; char name2[20]; cin>>name2; while(p!=NULL&&strcmp(name2,p->name)!=0) p=p->next; if(p!=NULL) { strcpy(p->fen,s); cout<<"已成功将"<<p->name<<"添加入"<<s<<"中"<<endl; } else cout<<"不存在这个人"<<endl; cout<<"继续添加请按1.后退请按2.返回主菜单请按其它键."<<endl; cin>>j; }while(j=='1'); if(j=='2')cz(); else { menu(); } } } void zt()//在类中添加联系人 { system("CLS"); int x(0); for(x=0;x<20;x++) { if(lei[x]==NULL)break; } if(x==0) { cout<<"木有类,返回添加类请按任意键"<<endl; getch(); cz(); } char d; do {system("CLS"); d=0; for(int j=0;j<x;j++) cout<<j+1<<" : "<<lei[j]<<" "; cout<<"请选择添加的组"<<endl; int k; cin>>k; cout<<"您要添加的组为"<<lei[k-1]<<endl; cout<<"情输入您要添加的人"<<endl; struct ben *p=head->next; cout<<"姓名"<<setw(10)<<"地址"<<setw(10)<<"电话号码"<<setw(10)<<"邮政编码"<<setw(10)<<"分类"<<endl; while(p!=NULL) { cout<<p->name<<setw(10)<<p->address<<setw(10)<<p->num<<setw(10)<<p->you<<setw(10)<<p->fen<<endl; p=p->next; } p=head->next; char name2[20]; cin>>name2; while(p!=NULL&&strcmp(name2,p->name)!=0) p=p->next; if(p!=NULL) { strcpy(p->fen,lei[k-1]); cout<<"已成功将"<<p->name<<"添加入"<<lei[k-1]<<"中"<<endl; } else cout<<"不存在这个人"<<endl; cout<<"继续添加请按1.返回主菜单请按其他它键."<<endl; cin>>d; }while(d=='1'); menu(); } void lx()//分类显示 { system("CLS"); if(head==NULL) {cout<<"通讯录为空,返回主菜单请按任意键"<<endl; getch(); menu(); } int x(0); for(x=0;x<20;x++) { if(lei[x]==NULL)break; } if(x==0) { cout<<"木有类,返回主菜单请按任意键"<<endl; getch(); menu(); } else { for(int m=0;m<x;m++) { struct ben *p=head->next; cout<<lei[m]<<endl; cout<<"姓名"<<setw(10)<<"地址"<<setw(10)<<"电话号码"<<setw(10)<<"邮政编码"<<endl; while(p!=NULL) { if(strcmp(p->fen,lei[m])==0) { cout<<p->name<<setw(10)<<p->address<<setw(10)<<p->num<<setw(10)<<p->you<<endl; } p=p->next; } cout<<endl; } cout<<"返回主菜单请任意键"<<endl; getch(); menu(); } } void fenlei()//分类显示总表 { system("CLS"); cout<<"1.创建新组"<<endl; cout<<"2.分组添加"<<endl; cout<<"3.分类显示"<<endl; cout<<"4.返回主菜单"<<endl; char c; cin>>c; switch (c) { case '1':csh();cz(); break; case '2':zt(); break; case '3':lx(); break; case '4':menu(); default:cout<<"wrong"; } } void shanchu()//删除联系人 { if(head==NULL)cout<<"通讯录为空"<<endl; else { char k='0'; do { system("CLS"); cout<<"请选择要您要删除的人(输入人名)"<<endl; struct ben *p=head->next,*q; q=head; cout<<"姓名"<<setw(10)<<"地址"<<setw(10)<<"电话号码"<<setw(10)<<"邮政编码"<<endl; while(p!=NULL) { cout<<p->name<<setw(10)<<p->address<<setw(10)<<p->num<<setw(10)<<p->you<<endl; p=p->next; } p=head->next; char name2[20]; cin>>name2; while(strcmp(p->name,name2)!=0&&p!=NULL) { p=p->next; q=p; } if(p!=NULL) { q->next=p->next; delete(p); } else cout<<"木有这个人"<<endl; cout<<"继续删除请按1.回到主菜单请按其它键"<<endl; cin>>k; }while(k=='1'); getch(); menu(); } } void search()//查询联系人 { char n; do { system("CLS"); cout<<"请输入查询人的姓名"<<endl; char name1[20]; struct ben *p=head; if(p==NULL) { cout<<"联系人为空,回到主页请按任意键"<<endl; getch(); menu(); } else p=p->next; cin>>name1; while(p!=NULL&&strcmp(p->name,name1)!=0) { p=p->next; } if(p!=NULL) { cout<<"姓名"<<setw(10)<<"地址"<<setw(10)<<"电话号码"<<setw(10)<<"邮政编码"<<endl; cout<<p->name<<setw(10)<<p->address<<setw(10)<<p->num<<setw(10)<<p->you<<endl; } else cout<<"木有此人"<<endl; cout<<"继续查询请按1,回到主页面请按任意键"; n='0'; cin>>n; }while(n=='1'); system("CLS"); menu(); } void menu()//主菜单 { system("CLS"); cout<<" 欢迎使用通讯录系统"<<endl; cout<<"1.添加联系人"<<endl; cout<<"2.显示联系人信息"<<endl; cout<<"3.查询联系人"<<endl; cout<<"4.修改联系人信息"<<endl; cout<<"5.分组并显示"<<endl; cout<<"6.载入数据"<<endl; cout<<"7.保存电话本"<<endl; cout<<"8.删除联系人"<<endl; cout<<"9.退出"<<endl; char choose; do{ cin>>choose; switch(choose) { case '1':tianjia(); break; case '2':print(); break; case '3':search(); break; case '4':change(); break; case '5':fenlei(); break; case '6':duru(); break; case '7':baocun(); break; case '8':shanchu(); break; case '9':exit(1); break; default:cout<<"请输入正确数字"<<endl; } }while(choose!='8'); } void main()//主函数 { menu(); } 四. 调试分析过程描述 1、 本程序采用结构链表类型结合功能函数的方式运行,代码简单易懂。 2、 本程序中大量调用menu()函数,简便了函数。 3、 system("cls")这个功能是我自己从网上学到的,其作用是“清屏”,即可以避免内容冗长的现象,使每次执行功能时界面干净明了。 4、 程序的小问题:当页面显示按任意键返回主菜单时,若定义的变量为int,则会陷入死循环,应定义为char。 五. 课程设计小结 通过本次C++大作业的设计与编写,让我基本掌握了结构类型、函数、条件语句等内容的用法,学会了编写一些较为简易的管理系统。C++其实还包括很多比较精深的内容,但即使只是掌握了一些较为基础的技能,就能编出工资管理系统这种比较成熟的管理系统,可见C++在人们日常的应用中扮演着十分重要的作用。因此以此次大作业为契机,我决定好好巩固自己所学过的一切C++的重要知识,并在条件允许的条件下继续深入学习,了解这个神奇且强大的C++世界!
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:通讯录管理程序-c++大作业.doc
    链接地址:https://www.zixin.com.cn/doc/4770202.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork