通讯录系统.docx
- 文档编号:14441886
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:20
- 大小:286.21KB
通讯录系统.docx
《通讯录系统.docx》由会员分享,可在线阅读,更多相关《通讯录系统.docx(20页珍藏版)》请在冰点文库上搜索。
通讯录系统
数据结构
课程设计报告
设计题目:
通讯录系统
学生学号:
学生班级:
学生姓名:
指导老师:
2010-12-27
一、实验目的和要求
1、掌握数据结构的基本思路和方法;
2、了解系统开发的需求分析、类层次设计、模块分解、编码测试等过程;
3、为将课本的理论知识和实际应用有机的结合起来,锻炼学生的分析解决实际问题的能力,提高实践编程能力。
4、掌握书写程序设计说明文档的能力。
二、实验任务
本综合实验要解决如下问题:
(1)建立系统的功能模块及程序流程图;
(2)设计合理的数据结构和系统框架;
(3)确定类的层次及类的成员函数并完成各个成员函数的定义,完成系统的应用(主函数设计);
(4)功能调试,能够正确运行程序;
(5)完成综合实验设计的文档。
三.软件使用说明
程序实现以下功能:
1,添加通讯录
2,删除通讯录
3,显示通讯录
4,电话簿存盘
5,读出电话簿
6,查找联系人
7,退出
该程序主要有两个类Address,AddressBook和一个主函数Main组成。
Address类声明了name,phone,add,postcode和E-mail.AddressBook定义了Enter(),Delete(),List(),Read(),Save(),Search()
该程序的主要功能如下图所示:
实验要求:
1.程序开始执行时显示主菜单
2.键盘输入1~6能执行相应功能,执行完回到上述主菜单继续等待用户输入。
输入7退出
3.选择“添加通讯录”后,显示已有的通讯录数量。
如果电话簿已记满,则显示"电话簿已满",按任意键返回主菜单;否则依从提示"输入姓名:
","输入电话号码:
",“输入E-mail地址:
”,“输入六位邮编号码:
”和“输入地址:
”在电话簿中插入一条通讯录。
4.选择“删除通讯录”后,显示已有的通讯录数量。
如果电话簿已空,则显示"电话簿已空!
请添加联系人”,按任意键返回主菜单;否则依从提示"输入姓名”根据指定的名字或电话号码删除一条通讯录。
如果该名字或电话号码在通讯录中不存在,则提示"该联系人不存在”,按任意键返回主菜单。
5.选择“显示通讯录“后,列出电话簿中全部通讯录的清单,包括姓名和电话号码,一条通讯录占据一行,按姓名的字典顺序进行排列。
按姓名输出:
按电话号码输出:
6.选择“电话簿存盘“后,提示”输入保存的文件名:
“,输入文件名后,电话簿存盘。
如果存盘失败,提示”打开文件失败“,按任意键返回主菜单。
保存后的文件可用记事本打开:
打开后可看到输进去的联系人信息。
7.选择“读取电话簿“,提示”输入读取的文件名:
“,输入文件名后,从文件中读取电话簿。
如果读取文件失败,提示”打开文件失败“,按任意键返回主菜单。
8.选择“查找联系人“,提示”输入姓名或电话号码查找“,输入后从文件中读取并输出显示出来。
如果查找失败,提示”你要查找的联系人不存在“,按任意键返回主菜单
查找成功:
找不到联系人:
六.心得体会
通过制作这个软件的学习,我有以下体会和心得。
我深深地体会到要成为一名资深的程序员是要经常写程序的,不一定要多,但一定要精。
我还理解到,写程序之前1.先摸清用户需要用软件来干什么,要知道该软件的适应对象。
不然写出来的程序不受用户欢迎是没有用的,寿命就会很短。
2.分析问题的复杂性,设计的软件要使用户用起来方便简单。
3.写程序前事要画好流程图,这样才能具有针对性。
4..通过一个个函数实现各个功能,然后将各个函数连接起来就是一个完美的程序。
制作程序的时候要逐一击破,不可急于求成,这样才会事半功倍。
写程序时要明确每个模块的功用,并用相应的借口传递各个模块。
遇到问题时通过上网查找相应的内容,消化后就是自己的知识了。
软件写好后,应该多测试是否有什么错误不足的地方。
发现错误时,通过查找下面错误信息找到错误的地方,然后改正。
通过输入不同的数据来调试,改进。
通过这个软件,我知道做程序一点也不能马虎。
就如有一点的遗漏和错误都不能让程序运行。
五.程序源码:
//Address_H
#ifndefADDRESS_H
#defineADDRESS_H
#include
#include
#include
#include
usingnamespacestd;
classAddress
{
boolStatus;
charName[11];
charPhone[15];
charEmail[21];
charPostcode[7];
charAdd[41];
public:
Address(){Status=true;}
stringGetName()const;
stringGetPhone()const;
stringGetEmail()const;
stringGetPostcode()const;
stringGetAdd()const;
boolisEmpty();
voidEnter(string&name,string&phone,string&email,string&postcode,string&add);
voidSet();
voidClear();
};
#endif
//Address.cpp
#include"Address.h"
#include
#include
#include
#include
usingnamespacestd;
stringAddress:
:
GetName()const
{
strings=Name;
returns;
}
stringAddress:
:
GetPhone()const
{
strings=Phone;
returns;
}
stringAddress:
:
GetEmail()const
{
strings=Email;
returns;
}
stringAddress:
:
GetPostcode()const
{
strings=Postcode;
returns;
}
stringAddress:
:
GetAdd()const
{
strings=Add;
returns;
}
boolAddress:
:
isEmpty(){returnStatus;}
voidAddress:
:
Enter(string&name,string&phone,string&email,string&postcode,string&add)
{
intlen=name.length();
if(len>10)len=10;
name.copy(Name,len,0);
Name[len]=0;
len=phone.length();
if(len>14)len=14;
phone.copy(Phone,len,0);
Phone[len]=0;
len=email.length();
if(len>22)len=22;
email.copy(Email,len,0);
Email[len]=0;
len=postcode.length();
if(len>6)len=6;
postcode.copy(Postcode,len,0);
Postcode[len]=0;
len=add.length();
if(len>40)len=40;
add.copy(Add,len,0);
Add[len]=0;
}
voidAddress:
:
Set(){Status=false;}
voidAddress:
:
Clear(){Status=true;}
//AddressBook_H
#ifndefADDRESSBOOK_H
#defineADDRESSBOOK_H
#include"Address.h"
#include
#include
#include
#include
usingnamespacestd;
constintItemNum=100;
classAddressBook
{
AddressItem[ItemNum];
intNum;
intFindFree();
public:
AddressBook(){Num=0;}
voidEnter();
voidDelete();
voidRead();
voidSave();
voidList();
voidSearch();
};
#endif
//AddressBook.cpp
#include"Address.h"
#include"AddressBook.h"
#include
#include
#include
#include
usingnamespacestd;
ostream&operator<<(ostream&output,constAddress&addr)
{
output< : left)< < returnoutput; } intAddressBook: : FindFree() { intt; for(t=0;t if(Item[t].isEmpty())returnt; return-1; } voidAddressBook: : Enter()//输入联系人的信息 { stringname,phone,email,postcode,add; intpointer,T=1; pointer=FindFree(); if(pointer==-1)cout<<"电话簿已记满"; else{cout<<"电话簿中有"< cout<<"输入姓名: "; cin>>name; cout<<"输入电话号码: "; while(T)//使输入的电话号码为数字 { cin>>phone; for(inti=0;i { if(phone[i]>='0'&&phone[i]<='9') {} else { cout<<"errornumber! inputagain: "< break; } } if(i==phone.size())T=0; } cout<<"输入E-mail地址: "; cin>>email; cout<<"输入6位邮编号码: "; cin>>postcode; cout<<"输入地址: "; cin>>add; Item[pointer].Enter(name,phone,email,postcode,add); Item[pointer].Set(); Num++; } } voidAddressBook: : Delete()//删除联系人 { intt; strings; cout<<"电话簿中有"< if(! Num)cout<<"电话簿已空! 请添加联系人\n"; else { cout<<"输入姓名或电话号码: "; cin>>s; for(t=0;t {if(! Item[t].isEmpty()&&(Item[t].GetName()==s||Item[t].GetPhone()==s)){ Item[t].Clear(); Num--; cout<<"已经删除"< \n"; break;} } if(t==ItemNum){cout<<"该联系人不存在\n"; cin.get();} } } voidAddressBook: : List()//输出联系人 {intt,i,j; inta; cout<<"请输入1(按姓名排序)或其它数字(按电话排序): "< cin>>a; Addresslist[ItemNum],temp; if(! Num) cout<<"电话簿已空! "< else{ cout<<"电话簿中有"< for(t=0;t for(i=0;i {for(j=ItemNum-1;j>i;j--) if(a==1) if(list[j-1].GetName()>list[j].GetName())//姓名排序 {temp=list[j-1]; list[j-1]=list[j]; list[j]=temp; }break; if(a! =1) if(list[j-1].GetPhone()>list[j].GetPhone())//电话号码排序 {temp=list[j-1]; list[j-1]=list[j]; list[j]=temp; } break; } cout< : left)< <<"姓名"< for(t=0;t if(! list[t].isEmpty()) cout< } } voidAddressBook: : Save()//保存到文件夹 {ofstreamfile; inti; charfname[41]; cout<<"输入保存的文件名: "; cin>>fname; file.open(fname,ios: : out); if(! file){ cout<<"打开文件夹失败! \n"; cin.get(); } else{ for(i=0;i {if(file&&! file.eof()) file.write(reinterpret_cast } file.close(); } } voidAddressBook: : Read()//读取文件夹 { ifstreamfile; inti; charfname[41]; cout<<"输入读取的文件名: "; cin>>fname; file.open(fname,ios: : in); if(! file) {cout<<"打开文件失败! \n"; cin.get(); } else{ Num=0; for(i=0;i { if(file&&! file.eof()) file.read(reinterpret_cast if(! Item[i].isEmpty())Num++; } file.close(); } } voidAddressBook: : Search()//查找联系人 { intt; strings; cout<<"电话簿中有"< if(! Num)cout<<"电话簿已空! \n"; else { cout<<"输入姓名或电话号码查找: "; cin>>s; for(t=0;t {if(! Item[t].isEmpty()&&((Item[t].GetName()==s)||(Item[t].GetPhone()==s))){ cout< break;} } if(t==ItemNum){cout<<"您要查找的联系人不存在\n"; cin.get(); } } } //主函数: #include"Address.h" #include"AddressBook.h" #include #include #include #include usingnamespacestd; intmenu_select(); intmain() {charchoice; AddressBookmaillist; for(;;){ choice=menu_select(); switch(choice){ case1: maillist.Enter();break; case2: maillist.Delete();break; case3: maillist.List();break; case4: maillist.Save();break; case5: maillist.Read();break; case6: maillist.Search();break; case7: exit(0); } } return0;} intmenu_select() { charc; cout<<"*****模拟电话簿******\n"; cout<<"*1.添加通讯录*\n"; cout<<"*2.删除通讯录*\n"; cout<<"*3.显示通讯录 *\n"; cout<<"*4.电话簿存盘 *\n"; cout<<"*5.读出电话簿*\n"; cout<<"*6.查找联系人*\n"; cout<<"*7.退出*\n"; cout<<"****************\n"; cout<<"\n请输入(1~7)中的一个整数: "; do{//键盘输入循环 cin.get(c); }while(c<'1'||c>'7'); returnc-48; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 系统