课程设计电话簿管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.程序功能简介
一个基本的电话簿管理程序,具有插入、删除、显示、修改和查询联系人电话码的功能。
主菜单如右图所示,每个菜单项功能如下:
1.增加记录菜单:请输入用户姓名,如果该用户已经存在则添加失败,否则,输入用户的电话号码,进行添加。
2.修改某条记录:请输入用户姓名,如果没有该用户显示“该用户不存在”信息,否则,输出原电话号码,然后输入新的电话号码,进行修改。
3.删除记录:
输入用户姓名,进行删除(删除时要进行确认)。
4.查询:输入用户姓名,进行查找。
5.排序:根据子菜单,选择不同的排序方式。
6.显示:逐屏显示(每屏显示10条记录)。
7.全删:进行全部删除(要确认)。
二.课程设计要求
请选择以下功能
1- 增加记录
2- 修改记录
3- 删除记录
4- 查找(按姓名)
5- 排序
6- 显示记录
1.用汉化菜单实现。
2.提供按姓名查询电话号码的功能。
3.显示功能(提供逐屏显示的功能,每屏显示10条记录)。
4.删除和修改时要进行确认。
5.将电话簿记录以文件的形式存在磁盘上;每次操作时将电话簿调出,操作完毕后存盘。
三.课程设计说明
1.程序采用数组数据结构实现。
2.用类来实现数据的封装。
四.参考数据结构
1.“电话簿”称为用户信息表,用数组实现。用户信息表由若干用户信息构成,每个用户信息是一个数组元素。
2.“user.txt”是一个文件,用于保存“用户信息表”中的信息。当系统启动时,从该文件中读入信息,当退出系统时,将“用户信息表”中的信息写到该文件中。该文件中信息存放形式如下:
ZhangHong 5221369
LiLi 84891112
ZhaoQiang 5221498
其中
name(姓名)占20列
phone_num(电话号码)占12列
五.具体功能及实现
定义Fphone类,通过其私有成员数组name[20]和phone[12]分别记录用户姓名与电话号码,定义UserDatabase类记录用户信息,通过公有成员函数实现对数据的操作。
六.源程序及注释
#include
#include
#include
#include
#include
#define M 20
#define N 12
#define MAX 100
class Fphone //用户信息类的定义
{
char name[M]; // 姓名
char phone_num[N]; //电话号码
public:
Fphone(char *na="",char *ph="")
{ strcpy(name,na);
strcpy(phone_num,ph);
}
char*getname(); //获取姓名
char*getphone_num(); //获取电话号码
void setname(char*a); //设置姓名
void setphone_num(char*a); //设置电话号码
void disp(); //显示用户信息
};
char *Fphone::getname()
{ return name;
}
char *Fphone::getphone_num()
{ return (phone_num);
}
void Fphone::setname(char *a)
{ strcpy(name,a);
}
void Fphone::setphone_num(char*a)
{ strcpy(phone_num,a);
}
void Fphone::disp()
{ cout<<"姓名:"< } class UserDatabase //用户信息表类的定义 { int nElem; //用户信息表中的元素个数,即当前记录总数int Maxu; //最多的用户 Fphone *user; //指向用户信息表的指针 public: UserDatabase() //构造函数,初始化用户信息表,将user.txt文件中数据读到User[]中 { nElem=0; Maxu=50; user=new Fphone[Maxu]; fstream in; in.open("user.txt",ios::in|ios::nocreate); //打开文件 for(int i=0;(!in.eof());i++) { in>>user[i].getname();in>>user[i].getphone_num(); nElem++; } in.close(); } ~UserDatabase() //析构函数,将user[]写入user.txt文件中{ fstream out; Fphone *p=NULL; p=user; out.open("user.txt",ios::out,filebuf::sh_none); for(int i=0;i { out< <<((p+i)->getphone_num())< }delete []user; out.close(); } void clear() //删除所有用户信息 { char ord; cout<<"确定删除吗?(选择:[y]是;[n]否)\a\a"< do { cin>>ord; if(ord=='N'||ord=='n') return; else if(ord=='Y'||ord=='y') { delete[Maxu]user;