C++实验:电信模拟计费系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计报告
( 2012 / 2013 学年第一学期)题目:电信计费系统客户帐单管理
专业计算机科学与技术
学生姓名
班级学号
指导教师
指导单位计算机软件教学中心
日期 2012年9月28日
电信计费系统客户帐单管理
课题内容和要求
客户帐单管理是电信计费系统必备的重要功能模块,主要负责对电信各类客户每月帐单的增加、修改、删除、查询、备份等管理工作。本课题以中国电信企业客户帐单管理模块原型参照,要求基于单链表结构对文件存储的客户帐单数据进行排序、查找、计算、显示等造作。通过此可以,熟练掌握单链表结构、文件读写、函数调用等知识,以及查找、排序典型算法的设计与应用。
需求分析
要能提供以下几个基本功能:
(1)用户资料文件与话单文件由程序设计人员预先从键盘上录入,用户资料文件中的数据记录不得少于30条,话单文件中的数据记录不得少于200条,且必须有跨月份、跨年份的通话记录话单。
(2)首先从硬盘读入用户资料和话单记录
(3)对话单进行计费处理,输出费用详单到指定的文件。格式如下:
电话号码用户姓名月租费功能费市内电话费用长途电话费用合计
84370000 ChenChao 25 6 34.2 19.6 84.8 84370000 ChenChao 25 6 ………………
(4)异常话单提示。有的话单可能是错误的,找出这些话单,不参加计费,另存为一个文件。可能的出错话单有:一个号码的通话时长大于三天。
图1:功能图
(1)提供可操作的主菜单:输出个菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。根据客户输入的选项来运行不同的功能,运行不同的函数。
(2)显示所有用户功能:根据选项可将文本里的用户信息在屏幕上显示出来。
(3)显示所有帐单功能:可将文本里的通话帐单在屏幕上显示出来。
(4)添加用户功能:可在屏幕上进行直接操作,将新的用户信息添加到记录里。
(5)添加帐单功能:操作同上,可将新的通话记录添加到记录里。
(6)按用户名查找功能:输入记录里的用户名,可以查找与之相关的通话帐单信息。
(7)按电话号码查找功能:输入记录里已有的电话号码,可以查找相应的通话帐单记录。
(8)输出话费功能:在操控台和文本中,直接输出所有的话费详情。
概要设计
函数结构图
图2:主程序图
图3:操作菜单系统
图4:显示所有信息菜单
图5:插入数据菜单
图6:计算话费函数
1.顾客类(Customer.h)
#include
#include
#include
class Customer //顾客类
{
protected:
char name[20]; //顾客姓名
char phonenum[14]; //顾客电话号码
char laidian; //顾客是否订来电显示
public:
Customer(char *n="",char *ph="",char l=0); //构造函数
Customer(const Customer &cu); //拷贝构造函数
~Customer(); //析构函数
char* getname(); //提取姓名
char* getphone(); //提取电话号码
char getlaidian(); //提起是否订来电显示
friend ostream & operator << (ostream &,const Customer &); //友元函数重载输出运算符"<<"
friend istream & operator >> (istream &,Customer &); //友元函数重载输入运算符">>"
};
//Customer类的函数的实现
Customer::Customer(char *n,char *ph,char l)
{
strcpy(name,n);
strcpy(phonenum,ph);
laidian=l;
}
Customer::Customer(const Customer &cu)
{
strcpy(name,);
strcpy(phonenum,cu.phonenum );
laidian=idian;
}
Customer::~Customer()
{}
char* Customer::getname()
{
return name;
}
char* Customer::getphone()
{
return phonenum;
}
char Customer::getlaidian()
{
return laidian;
}
ostream & operator<<(ostream & out ,const Customer & cust) {
cout.setf(ios::left);
out< out< out< return out; } istream & operator >> (istream & in ,Customer & cust) { in>>;