手机通讯录设计.docx

上传人:b****5 文档编号:5162487 上传时间:2022-12-13 格式:DOCX 页数:22 大小:38.97KB
下载 相关 举报
手机通讯录设计.docx_第1页
第1页 / 共22页
手机通讯录设计.docx_第2页
第2页 / 共22页
手机通讯录设计.docx_第3页
第3页 / 共22页
手机通讯录设计.docx_第4页
第4页 / 共22页
手机通讯录设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

手机通讯录设计.docx

《手机通讯录设计.docx》由会员分享,可在线阅读,更多相关《手机通讯录设计.docx(22页珍藏版)》请在冰豆网上搜索。

手机通讯录设计.docx

手机通讯录设计

程序设计报告

(2008/2009学年第二学期)

 

题目:

手机信息管理系统

 

专业微电子

学生姓名

班级学号B********

指导教师吴敏

指导单位计算机学院软件基础教学中心

日期2008.6.04

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

内容详实程度

文字表达熟练程度

回答问题准确度

简短评语

 

教师签名:

年月日

评分等级

备注

评分等级有五种:

优秀、良好、中等、及格、不及格

手机信息管理系统

一、课题内容和要求

手机信息管理系统是手机通讯的重要功能模块,主要负责对通讯录的录入,修改,删除,查找等功能。

通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些算法思想的应用,实现一个简单的手机管理系统。

二、需求分析

通讯录包括:

(1)通讯录中的每一条信息包括:

姓名、电话号码、分类(可能选项有:

A为办公类B为个人类C为商务类)、电子邮件。

(2)通话情况的每一条信息包括:

来电号码、去电号码、通话分类(可能选项有:

A为已拨、B为已接、C为未接)、来去电时刻、通话时间(调用时间函数)

(3)将通讯录和通话情况分别用两个文件存储,文件类型可以是文本文件或是二进制文件。

功能需求:

1)提供可操作的主菜单:

输出个菜单,用于显示以从文件中加载的通讯录信息和若干个可选的功能选项。

根据输入的选项来运行不同的功能,运行不同的函数。

2)进行文本信息的载入与输出:

将信息录入指定的文件实现添加等功能,再从指定的文件中加载通讯录信息实现数据输出。

3)查找通讯信息:

可以通过查找姓名,通话记录等等进行查找对应的通讯录信息并将它们输出。

4)添加通讯录:

将希望添加的通讯信息添加到通讯录,注意利用文件进行添加。

5)删除通讯录:

将希望删除的某个通讯信息删除。

会有菜单选项提示,主要也是文件方面的读取并作出处理。

6)修改通讯录:

输入修改的对象,到文件中查找,由一系列读写函数实现修改过程。

7)对现有信息的保存:

利用文件把信息保存到文本文档,可对其进行调用,修改等过程。

三、概要设计

(1)主要结构体:

voidmenu();//主菜单的实现函数

voidmenu_1();

voidmenu_1_2();

voidmenu_2();

voiddatein();//对数据的处理函数

voiddateout();

voidrewrite();

voiddeletedate();

classCalldate;//通话类结构

classPeopledate//通讯录结构

{

charname[10];//姓名

charnum[20];//号码

chartype;//所属类别

charemail[20];//邮箱

}

(2)主要流程图

菜单函数:

其间用到指针分配内存,文件的读取,循环的算法。

四、源程序代码

#include"iostream.h"

#include"string.h"

#include"fstream.h"

#include"windows.h"

#include"conio.h"

voidmenu();//菜单的目录实现函数

voidmenu_1();

voidmenu_1_2();

voidmenu_2();

intcheck(char*,char*);//通过指针进行检查

voiddatein();//输入数据

voiddateout();//输出数据

voidrewrite();//修改数据

voiddeletedate();//删除数据

classCalldate;//定义通话类

classPeopledate//用类实现对通讯录某个体的信息录入

{

charname[10];

charnum[20];

chartype;

charemail[20];

public:

Peopledate(charna[10]="",charnu[20]="",chart='A',charem[20]="")

{

strcpy(name,na);

strcpy(num,nu);

type=t;

strcpy(email,em);

}

char*Getnum(){returnnum;};

char*Getname(){returnname;};

charGettype(){returntype;};

friendistream&operator>>(istream&,Peopledate&);

friendostream&operator<<(ostream&,constPeopledate&);

friendvoidrewrite();

};

ostream&operator<<(ostream&out,constPeopledate&obj)//重载函数输出信息

{

if(obj.type=='A')

out<<"姓名:

"<

"<

"<

<<"类别:

"<<"办公类"<

elseif(obj.type=='B')

out<<"姓名:

"<

"<

"<

<<"类别:

"<<"个人类"<

elseif(obj.type=='C')

out<<"姓名:

"<

"<

"<

<<"类别:

"<<"商务类"<

else

out<<"姓名:

"<

"<

"<

<<"类别:

"<<"不明"<

returnout;

}

istream&operator>>(istream&in,Peopledate&obj)//重载函数

{

cout<<"请依次输入:

姓名,号码,类别,邮箱。

"<

cout<<"姓名:

";

in>>obj.name;

cout<<"号码:

";

in>>obj.num;

cout<<"类别:

";

in>>obj.type;

cout<<"邮箱:

";

in>>obj.email;

returnin;

}

classCalldate//定义通话类,用于记录通话的详细内容。

{//函数体内由指针,文件,重载实现

intcalltype;

charnum[20];

inttimecost;

inttime_h;

inttime_m;

inttime_s;

chartype;

public:

Calldate(intct=0,charnu[20]="",ints=0,intth=0,inttm=0,intts=0,charty='A')

{

calltype=ct;

strcpy(num,nu);

timecost=s;

time_h=th;

time_m=tm;

time_s=ts;

type=ty;

}

friendostream&operator<<(ostream&,constCalldate&);

};

ostream&operator<<(ostream&out,constCalldate&obj)

{

intf=0;

if(obj.calltype==1)

out<<"去电"<

elseif(obj.calltype==2)

out<<"来电"<

inti=0;

Peopledate*date=newPeopledate[1000];//用指针存放信息

ifstreaminf("people.dat");//打开文件

while(!

inf.eof())

inf.read((char*)&date[i++],sizeof(Peopledate));

inf.close();

for(intj=0;j

{

if(strcmp(obj.num,date[j].Getnum())==0)

{

out<

f=1;

}

}

if(f==0)

out<

out<<"通话起始时间:

"<

out<<"通话消耗时间:

"<

if(obj.type=='A')

out<<"已拨"<

elseif(obj.type=='B')

out<<"已接"<

elseif(obj.type=='C')

out<<"未接"<

else

out<<"不明"<

returnout;

}

voidmain()

{

intchoice;

menu();

cin>>choice;

while(choice!

=5)

{

switch(choice)

{

case1:

dateout();

break;

case2:

datein();

break;

case3:

rewrite();

break;

case4:

deletedate();

break;

}

menu();

cin>>choice;

}

}

voidmenu()//显示通讯录菜单

{

cout<<"************************************************"<

cout<<"1.查看通讯录信息"<

cout<<"2.添加通讯录信息"<

cout<<"3.修改通讯录信息"<

cout<<"4.删除通讯录信息"<

cout<<"5.退出信息管理系统"<

cout<<"************************************************"<

}

voidmenu_1()

{

cout<<"************************************************"<

cout<<"1.查看某类全部信息"<

cout<<"2.查看某人全部信息"<

cout<<"3.查看通讯记录"<

cout<<"4.返回上级菜单"<

cout<<"************************************************"<

}

voidmenu_1_2()

{

cout<<"********************************************"<

cout<<"1.查看办公类信息"<

cout<<"2.查看个人类信息"<

cout<<"3.查看商务类信息"<

cout<<"4.返回上级菜单"<

cout<<"********************************************"<

}

voidmenu_2()

{

cout<<"***********************************************"<

cout<<"1.输入联系人信息"<

cout<<"2.输入通话记录信息"<

cout<<"3.返回上级菜单"<

cout<<"***********************************************"<

}

voiddateout()//数据输出

{

intchoice1;

menu_1();

cin>>choice1;

if(choice1==1)

{

intchoice12;

menu_1_2();

cin>>choice12;

if(choice12==1)

{

inti=0;

Peopledate*date=newPeopledate[1000];

ifstreaminf("people.dat");

if(!

inf)

{

cout<<"无联系人信息文件"<

return;

}

while(!

inf.eof())

inf.read((char*)&date[i++],sizeof(Peopledate));

for(intj=0;j

{

if(date[j].Gettype()=='A')

cout<

}

inf.close();

}

elseif(choice12==2)

{

inti=0;

Peopledate*date=newPeopledate[1000];

ifstreaminf("people.dat");

if(!

inf)

{

cout<<"无联系人信息文件"<

return;

}

while(!

inf.eof())

inf.read((char*)&date[i++],sizeof(Peopledate));

for(intj=0;j

{

if(date[j].Gettype()=='B')

cout<

}

inf.close();

}

elseif(choice12==1)

{

inti=0;

Peopledate*date=newPeopledate[1000];

ifstreaminf("people.dat");

if(!

inf)

{

cout<<"无联系人信息文件"<

return;

}

while(!

inf.eof())

inf.read((char*)&date[i++],sizeof(Peopledate));

for(intj=0;j

{

if(date[j].Gettype()=='C')

cout<

}

inf.close();

}

else

return;

}

elseif(choice1==2)

{

charna[10];

cout<<"请输入要查找的姓名:

";

cin>>na;

inti=0;

Peopledate*date=newPeopledate[1000];

ifstreaminf("people.dat");

if(!

inf)

{

cout<<"无联系人信息文件"<

return;

}

while(!

inf.eof())

inf.read((char*)&date[i++],sizeof(Peopledate));

for(intj=0;j

{

if(strcmp(date[j].Getname(),na)==0)

cout<

}

inf.close();

}

elseif(choice1==3)

{

inti=0;

Calldate*date=newCalldate[1000];

ifstreaminf("call.dat");

if(!

inf)

{

cout<<"无联系人信息文件"<

return;

}

while(!

inf.eof())

inf.read((char*)&date[i++],sizeof(Calldate));

for(intj=0;j

cout<

inf.close();

}

else

return;

}

voiddatein()//输入数据

{

menu_2();

intchoice2;

cin>>choice2;

inti,n;

cout<<"请输入信息条数:

";

cin>>n;

if(choice2==1)

{

intj=0;

Peopledate*date=newPeopledate[1000];

ifstreaminf("people.dat");

if(!

inf)

{

cout<<"无联系人信息文件"<

return;

}

while(!

inf.eof())

inf.read((char*)&date[j++],sizeof(Peopledate));

if(j+n>=15)//这里j用于记忆,对于再次添加数据会考虑原有数据的数量。

cout<<"内存不够!

总容量不得超过15条!

"<

else

{

ofstreamifile("people.dat",ios:

:

ate);

if(!

ifile)

{

cout<<"无通讯记录文件"<

return;

}

for(i=0;i

{

intflag=0;

Peopledate*p=newPeopledate[1];

cin>>p[0];

for(intt=0;t

{

if(strcmp(p[0].Getname(),date[t].Getname())!

=0)

{

flag=1;

break;

}

}

if(flag==1)

ifile.write((char*)p,sizeof(Peopledate));

else

cout<<"已存在!

"<

}

ifile.close();

}

}

elseif(choice2==2)

{

Calldate*p=newCalldate[n];

ofstreamifile("call.dat",ios:

:

ate);

if(!

ifile)

{

cout<<"无通讯记录文件"<

return;

}

for(i=0;i

{

intcty;

charnum[20];

SYSTEMTIMEt1,t2;

ints;

charty;

cout<<"选择通话类型(来电选1,去电选2)"<

cin>>cty;

cout<<"请输入电话号码:

"<

cin>>num;

cout<<"现在按任意键开始通话,再按任意键开始结束通话"<

cout<<"按任意键开始通话";

getch();

GetLocalTime(&t1);

cout<

getch();

GetLocalTime(&t2);

s=(t2.wMinute-t1.wMinute)*60;

s+=t2.wSecond-t1.wSecond;

cout<<"选择通话类型(可能选项有:

A为已拨、B为已接、C为未接)"<

cin>>ty;

Calldateq(cty,num,s,t1.wHour,t1.wMinute,t1.wSecond,ty);

p[i]=q;

}

ifile.write((char*)p,sizeof(Calldate)*n);

ifile.close();

}

else

return;

}

voidrewrite()//修改数据信息

{

charna[10];

cout<<"请输入被修改人的姓名:

";

cin>>na;

intj=0;

Peopledate*date=newPeopledate[1000];

ifstreaminf("people.dat");

if(!

inf)

{

cout<<"无联系人信息文件"<

return;

}

while(!

inf.eof())

inf.read((char*)&date[j++],sizeof(Peopledate));

for(inti=0;i

if(strcmp(date[i].Getname(),na)==0)

{

Peopledatenewdate;

cout<<"请输入被修改人的全部信息:

"<

cin>>newdate;

date[i]=newdate;

}

ofstreamifile("people.dat");

if(!

ifile)

{

cout<<"无通讯记录文件"<

return;

}

ifile.write((char*)date,sizeof(Peopledate)*j);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1