通讯录管理
问题描述
编写一个简单的通讯录管理程序。通讯录记录有,地址(省、市(县)、街道),,邮政编码等四项。
基本要求
程序应提供的基本管理功能有:
1)添加:即增加一个人的记录到通信录中
2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3)存储:即将通讯录信息保存在一个文件中。
4)装入:即将文件中的信息读入程序。
5)查询:可根据查找某人的相关信息,若找到显示其、地址、和邮政编码。
6)修改:可修改一个人的除外其它信息。
测试数据
程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
实现提示
程序可用一个动态数组来管理人员信息,每个人员的,地址,和邮政编码用一个类Cperson来实现,作为动态数组的值指针指向这些Cperson类对象,通过动态数组的遍历可以操作这些数据。
目录
【摘要】
第1章概述
1.1系统实现的目标
1.2系统实现方案
1.3系统实现环境
1.4具体的开发方法
第2章系统设计
2.1总体设计
2.2类设计
2.3数据结构
2.4界面设计
第3章系统实现
【摘要】
日益繁多的人际交往使得我们很难记住与每个人之间的联系方式,通讯录能够便捷的给我们带来所需要的相关信息。而随着计算机的普及,人们的生活摆脱了传统式的记事本、簿,越来越多的靠计算机或者手机中的簿程序来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系
统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。
通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。
1.1 系统实现的目标
(1)录入:通讯录信息包括:,,地址,E-mail,邮编等信息。
(2)更新:能插入、删除通讯录信息。.
(3)浏览:能够查看所有的通讯录信息。
(4)查询:能实现指定信息查询或指定编号查询功能。
(5)系统以菜单方式工作,界面友好,易于操作。
1.2 系统实现方案
为实现系统功能,本程序主要分为五个模块。它们分别为:输入一个信息、删除一个信息、查询一个信息、插入一个信息、列出所有的信息、退出该程序。这五个函数再通过主函数调用分别得以实现。
主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用通讯录的哪种功能。然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。
1.3 系统实现环境
通过VC++6.0用C++语言对程序进行编写设计
在windows界面下用 DOS访问
1.4 具体的开发方法
用面向对象的程序设计方法,运用C++语言编写程序进行该学生考勤管理系统的详细设计,使之能提供录入、显示、查找、删除、修改的功能。
最后在VC++6.0环境下编写和调试程序,进而完成系统的实现。
第2章系统设计
2.1 总体设计
功能:
1.输入联系人的信息
2.显示联系人的信息
3.查找联系人的信息
4.删除联系人的信息
5.编辑人的信息
一程序分析阶段
该程序有六项功能,即添加、显示、存储、装入、查询、修改,要完成此六项功能必须有六项实现该功能的函数,和类的构造相联系知此六项功能即为类的行为,此为行为抽象。该程序又有四项属性,即、地址、、邮政编码,又因为地址有三项成员,即省、市、街道,由此可知可将数据成员分为两个类,即Cperson 类和Address类,此为类的数据成员。此为数据抽象。至此类的数据成员和行为成员形成。
二程序设计阶段
由于人员信息较多,可考虑使用对象数组来管理人员信息,作为动态数组的值指针指向这些Cperson类对象,通过动态数组的遍历可以操作这些数据。程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。当人员同名是应该考虑其他的属性。
三程序编程阶段
1:编程之前应该先画出该类的UML图。
第三章系统实现
//Address类的设计
#ifndef Address_h
#define Address_h
#include
class Address
{
private:
std::string province;
std::string city;
std::string street;
public:
Address(){}
Address(std::string province,std::string city,std::string street);
void getaddress(std::string province,std::string city,std::string street);
Address(Address &address1);
~Address();
};
#endif
//Cperson类的设计
#ifndef Cperson_h
#define Cperson_h
#include
class Cperson //通信用户类
{
public:
Cperson();
Cperson(int phonenumber,int date,char *name1,Address &address,std::string postnumber);
double getbalance() const {return balance;}
double gettime() const {return time;}
void inputmoney(int date,double account);
void record(int date,double account);
void settle(int date,double time);
static unsigned int gettotal() {return n;}
void input(int phonenumber,char *name1,Address &address,std::string postnumber,double balance,double time);
void show() const;
void select(char *name);
void alter(int phonenumber1,char *name1);
void insert(int phonenumber);
~Cperson();
private:
int phonenumber; //
int lastdate; //充值日期
char *name; //用户
Address address; //用户地址
std::string postnumber; //用户所在地的邮政编码 double balance; //余额
double time; //通话时间
static double price; //话费单价
static unsigned int n; //用户总人数
};
#endif
//Address类的实现
#include"Address.h"
#include
using namespace std;
Address::Address(string province,string city,string street) {
province=province;
city=city;
street=street;
}
Address::getaddress(string province,string city,string street) {
address=province+city+street;
}
Address::~Address()
{
}
Address::Address(Address &address1)
{
province=address1.province;
city=address1.city;
street=address1.street;
}
//Cperson类的实现
#include"Address.h"
#include"Cperson.h"
#include
#include
#include
using namespace std;
Cperson::Cperson()
{
}
Cperson::Cperson(int date,int phonenumber,char *name1,Address &address1,string postnumber)
{
lastdate=date;
phonenumber=phonenumber;
name=new char[strlen(name1)+1]; //申请动态存空间
strcpy(name,name1); //字符串的赋值
Address=address1;
postnumber=postnumber;
balance=0;
time=0;
price=price;
cout<<"\t#"<n++;
}
void Cperson::record(int date,double account)
{
lastdate=date;
balance=balance+account;
cout<}
void Cperson::inputmoney(int date,double account)
{
cout<<"你已经成功充值"<record(date,account);
}
void Cperson::settle(int date,double time)
{
double account;
account=floor(time*price+0.5);
if(account>getbalance())
cout<<"你的话费不足,请及时缴费! "<else
record(date,-account);
}
void Cperson::select(char *name1)
{
for(int i=0;iif(strcmp(name,name1)==0)
cout<<"你查找的用户为"<else
cout<<"你查找的用户不存在"<}
void Cperson::input(int phonenumber,char *name1,Address &address1,string postnumber,double balance,double time)
{
phonenumber=phonenumber;
name=new char[strlen(name1)+1]; //为name申请动态的存空间 strlen()是查出字符串长度的函数
strcpy(name,name1); //字符串的赋值
address=address1;
postnumber=postnumber;
balance=balance;
time=time;
}
void Cperson::show() const
{
cout<<"phonenumber="<cout<<"name="<cout<<"address="<
cout<<"postnumber="<cout<<"balance="<cout<<"time="<