1、.专业整理. .学习帮手. 通讯录管理 问题描述 编写一个简单的通讯录管理程序。通讯录记录有,地址(省、市(县)、街道), 邮政编码等四项。 基本要求 程序应提供的基本管理功能有: 1 1) 添加:即增加一个人的记录到通信录中 2 2) 显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。 3 3) 存储:即将通讯录信息保存在一个文件中。 4 4) 装入:即将文件中的信息读入程序。 5 5) 查询:可根据查找某人的相关信息,若找到显示其、地址、和邮政编码。 6 6) 修改:可修改一个人的除外其它信息。 测试数据 程序应输入不少于 1010 个人员的通讯录信息,应考虑到人员可以同名的情况。
2、 实 现提示 程序可用一个动态数组来管理人员信息,每个人员的,地址,和邮政编码用 一个 类 CpersonCperson 来实现,作为动态数组的值指针指向这些 CpersonCperson 类对象,通过 动态数 组的遍历可以操作这些数据。 目录 【摘要】 第 1 章概述 1.1 系统实现的目标 .专业整理. .学习帮手. 1.2 系统实现方案 1.3 系统实现环境 1. 4 具体的开发方法 第 2 章系统设计 2.1 总体设计 2.2 类设计 2.3 数据结构 2.4 界面设计 第 3 章系统实现 【摘要】 日益繁多的人际交往使得我们很难记住与每个人之间的 联系方 式,通讯录能够便捷的给我们带
3、来所需要的相关信 息。而随着计算 机的普及,人们的生活摆脱了传统式的记事 本、簿,越来越多的靠 计算机或者手机中的簿程序来帮助人 们记住这些事情,极其简便。 这就需要有一个使用的通讯录 管理系统,用户可以方便的通过自己 电脑的通讯录管理系 统,来随时查阅自己所需要的信息,而不必再 大费周折去翻 开那繁琐的记事本。 通讯录管理系统是一个专门针对储存用户联系方式以及 一些简 单个人信息的实用管理系统,它方便了用户对众多客 户、朋友、同 事等个人信息的储存和快速查阅的功能,大大 减少了查找过程的时 .专业整理. .学习帮手. 间。 1.1 系统实现的目标 (1)录入:通讯录信息包括:,地址,E-ma
4、il,邮编 等信息。 (2)更新:能插入、删除通讯录信息。 (3)浏览:能够查看所有的通讯录信息。 (4) 查询:能实现指定信息查询或指定编号查询功能。 (5) 系统以菜单方式工作,界面友好,易于操作。 1.2 系统实现方案 为实现系统功能,本程序主要分为五个模块。它们分别为:输入一个信息、删除一个 信息、查 询一个信息、插入一个信息、列出所有的信息、退出该程序。这五个函数再通过主 函数调用分别得以 .专业整理. .学习帮手. 实现。 主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便 决定使用通讯录的哪种功能。然后,通过执行多分支选择语句一一switch 语句,分别实
5、现 其它各个函数的调用功能。 1.3 系统实现环境 通过 VC+6.0 用 C+语言对程序进行编写设计 在 windows 界面下用 DOS 访问 1.4具体的开发方法 用面向对象的程序设计方法,运用 C+C+语言编写程序进行该学生考勤管理系 统的 详细设计,使之能提供录入、显示、查找、删除、修改的功能。 最后在 VC+6.0VC+6.0 环境下编写和调试程序,进而完成系统的实现。 第 2 章系统设计 2.1 总体设计 .专业整理. .学习帮手. 功能: 1 1 输入联系人的信息 2 2 显示联系人的信息 3 3 查找联系人的信息 4 4 删除联系人的信息 5 5 编辑人的信息 程序分析阶段
6、该程序有六项功能,即添加、显示、存储、装入、查询、修改,要完成此六 项功 能必须有六项实现该功能的函数,和类的构造相联系知此六项功能即为类的 行为,此 为行为抽象。该程序又有四项属性,即、地址、邮政编码,又因为地 址有三项成员, 即省、市、街道,由此可知可将数据成员分为两个类,即 CpersonCperson 类和 AddressAddress 类, 此为类的数据成员。此为数据抽象。至此类的数据成员和行为 成员形成。 二程序设计阶段 由于人员信息较多,可考虑使用对象数组来管理人员信息,作为动态数组 的值 指针指向这些 CpersonCperson 类对象,通过动态数组的遍历可以操作这些数据。程
7、 序应输入 不少于 1010 个人员的通讯录信息,应考虑到人员可以同名的情况。当人 员同名是应该 考虑其他的属性。 三程序编程阶段 .专业整理. .学习帮手. 1:编程之前应该先画出该类的 UMLUML 图。 .专业整理. .学习帮手. Cpers on phonenu mber:i nt lastdate:i nt n ame:stri ng address:Address postnumber: string bala nce:double time:double c on stprice:double n:i nt +Cpers on( ):void +getbala nce():voi
8、d +gettime():void +record(date:i nt, acco unt :double):double +show():void +select (n ame: stri ng):void +alter(ph onenu mber:i nt):void +in sert(ph onenu mber:i nt):void Address provi nce:stri ng city:stri ng street:stri ng +Address() +getAddress() +Address(Address std:stri ng city; std:string stre
9、et; public: Address() Address(std:string province,std:string city,std:string street); voidgetaddress(std:stri ngprov in ce,std:stri ngcity,std:stri ng street); Address(Address Address(); ; #en dif /Cperson 类的设计 #ifndef Cpers on_h #defi ne Cpers on_h #in clude class Cperson/通信用户类 public: Cpers on();
10、Cpers on (i ntphonenu mber,i nt date,char *n ame1,Address double getbala nce() const retur n bala nee; double gettime() const return time; void in putm on ey(i nt date,double acco un t); void record(i nt date,double acco un t); void settle(i nt date,double time); static un sig ned int gettotal() ret
11、ur n n; voidin put(i ntphonenu mber,char *n ame1,Address void show() con st; void select(char *n ame); void alter(i nt phonenu mber1,char *n ame1); void in sert(i nt phonenu mber); Cpers on(); private: .专业整理. .学习帮手. int pho nenu mber;/ int lastdate;/充值日期 char *n ame;/ 用户 Address address;/用户地址 std:st
12、ring postnumber;/用户所在地的邮政编码 double bala nee;/余额 double time;/通话时间 static double price;/话费单价 static un sig ned int n; ; /用户总人数 ; #en dif /Address 类的实现 #i ncludeAddress.h #in clude using n amespace std; Address:Address(string province,string city,string street) provi nce=prov in ce; city=city; street=
13、street; Address:getaddress(string province,string city,string street) address=provi nce+city+street; Address:Address() Address:Address(Address city=address1.city; street=address1.street; /Cperson 类的实现 #i ncludeAddress.h #in cludeCpers on.h #in clude #in clude #in clude using n amespace std; Cpers on
14、:Cpers on() .专业整理. .学习帮手. Cpers on:Cpers on (i ntdate,i ntphonenu mber,char *n ame1,Address post nu mber) lastdate=date; phonenu mber=ph onenu mber; name=new charstrlen(name1)+1;/ 申请动态存空间 strcpy( name ,n ame1);/字符串的赋值 Address=address1; post nu mber=post nu mber; bala nce=0; time=0; price=price; cout
15、t# n ameis createde ndl; n+; void Cpers on:record(i nt date,double acco unt) lastdate=date; bala nce=bala nce+acco unt; coutdatet# n ametacco un ttbala ncee ndl; void Cpers on:i nputm on ey(i nt date,double acco unt) cout 你已经成功充值accountgetbala nce() cout你的话费不足,请及时缴费!endl; else record(date,-acco un t
16、); void Cpers on:select(char *n ame1) for(i nt i=0;i n ;i+) if(strcmp( name ,n ame1)=0) cout 你查找的用户为nameendl; voidCpers on:i nput(i ntphonenu mber,char*n ame1,Address post nu mber,double bala nce,double time) phonenu mber=ph onenu mber; name=new charstrlen(name1)+1; / 为 name 申请动态的存空间 符串长 度的函数 strcpy
17、( name, name1);/字符串的赋值 address=address1; post nu mber=post nu mber; bala nce=bala nee; time=time; void Cpers on:show() const coutph onenu mber=pho nenu mbere ndl; cout n ame= n amee ndl; coutaddress=Address(prov in ce,city,street)e ndl; coutpost nu mber=post nu mbere ndl; coutbala nce=bala ncee ndl;
18、 couttime=timee ndl; void Cpers on:alter(i nt phonenu mber1,char *n ame1) Cpers on *pers on; pers on=new Cpers onn; for(i nt i=0;iph onenu mber=ph onenu mber1) coutchae; n ame=(* name1); else cout你要修改的用户不存在!endl; /pers on=new Cpers onn; void Cpers on:i nsert(i nt phonenu mber) Cpers on:Cpers on() /释
19、放动态存空间 /Cperson 类的测试 #i ncludeAddress.h #in cludeCpers on.h #in clude #in clude #in clude #in clude using n amespace std; double Cpers on:price=0.8; un sig ned int Cpers on: n=1; int mai n() int date; double acco unt; int lastdate; int m; int n=1; int phonenu mber; char n ame20; stri ng provi nce,ci
20、ty,street; string postnumber; double bala nee; double time; Address Add; Cpers on *pers on=new Cpers onn; /* Cperson p(12,23,韩波,”息县,123); coutdate=lastdatee ndl; coutaddress=addresse ndl;*/ for(i nt i=0;i n;i+) cout请输入第i+1个人的信息endl; cout lastdate; cout ph onenu mber; cout n ame=; cinn ame; cout prov
21、 ince; cout city; cout street; Address.getaddress(provi nce,city,street); cout post nu mber; cout bala nee; cout time; pers on i.i nput(ph onenu mber, name,(provi nce,city,street),post nu mber,bala nce,time ); for(i nt i=0;i n; i+) cout请输入第i+1 pers on i. namepers on i.ph onenu mberpers on i.addressp
22、ers on i.po stnu mber; fstream Myfile1,Myfile2; 用户信息.txt,ios:out); Myfile1 *用户信息 * endlendl; Myfile1 地址邮政编码” e ndlv*vv en dl; for(i=0;i n;i+) Myfile1vvNO.vsetw(2)vv n+1setw(6)vvperso ni. namevv vvpers on i.pho nenu mbervv vvsetw(8)vvpers on i.addressvv vvpers on i.post nu mbervve ndl; Myfile1.close(
23、); coutvv你输入的数据为:vve ndl; coutvvdate=vvlastdatevve ndl; coutvvph onenu mber=vvph onenu mbervve ndl; coutv vn ame= vvn amevve ndl; coutvvaddress=vvAdd.getaddress(provi nce,city,street)vve ndl; coutvvpost nu mber=vvpost nu mbervve ndl; coutvvbala nce=vvbala ncevve ndl; coutvvtime=vvtimevve ndl; Cpers
24、on pers on1; coutvv 你要进行的操作是:vve ndl; coutvv1:显示vvtvv2:查询vvtvv3: vvtvve ndl; coutvv5:缴费vvtvv6:计费 vvtvvendl; cout请输入(16)之间 m 的值:endl; cinm; switch(m) case 1: coutvv * vve ndl; 修改vvtvv4:插入 .专业整理. .学习帮手. pers on 1.show(); case 2: cout请输入要查询的用户名:; cinn ame; pers on 1.select (n ame); case 3: cout ph onen
25、u mber; cinn ame; pers on 1.alter(ph onenu mber, name); case 4: cout ph onenu mber; pers on 1.i nsert(ph onenu mber); case 5: cout date; cin acco unt; pers on 1.i nputm on ey(date,acco un t); case 6: cout date; cin time; pers on 1.settle(date,time); default : cout你的操作错误!| E or 自 7 信 的 人 的 录 JflJfl i
26、lboilbo 入 anan 录 :h:h I I :1:1 您姓 2424 餉第 4242 继薩解择入入 :3:3:F1F1 号住 :3:3 否喙迤域 . 蓉别话庭诟是存 名 WW 请请編性电黍您饥崔 息 信 A A 号人果诒系 洽电入后別讀万 yj yj ianhn 324 nn 245 hf?nan342S .专业整理. .学习帮手. .专业整理. .学习帮手. 四实验总结 经过一个星期的面向对象课程设计,在老师的悉心 指导 下,我终于完成了一个小小的程序设计,虽然这个小 程序的功能不是很强大,但是从开始分析问题、提出问题、 结 构设计、类的设计、到他是实现和调试整个过程都是我 自己在
27、老师的指导下亲手完成的,我的收获不小。虽然一 个星期的时间很短但我也体会到了写程序的过程,今后我 要更加多做实验体会写程序的过程。从中我体会到了程序 设计的整个过程是怎样实现的, 学到了一些面向对象程序 设 计的一些思想,算法和程序调试的一些方法。在这里感 谢老师 们对我的悉心指导, 教我解决了设计过程中的很多 问题,让 我学到了很多有用的东西。 5 54 42 2 咅要 - R 2424 陌址 421421 報壽 !2!2!r1!r1 弓住 :3:3 爲 霍茶性 也心昶 E1E1 亚 S 1 122 2 4 4 5 5 询系曲删 讯理 n n 录通录 * 、 通 # 通型斩讯 出出改連建谁 逹输退修 * 刁 閔号 “ / 宰祐卄 糸结 电卄