模拟电信计费系统的设计与实现

3.8模拟电信计费系统的设计与实现
3.8.1设计题目及要求
模拟电信计费系统的设计与实现
要求:(1)计费功能。根据存放在源数据文件中的通话记录和长途费率文件对每一条通话记录计算其通话费用,并将结果保存在费用文件中。其
中:
通话费的计算方法如下:
通话费=长途电话费+本地电话费
长途电话费=费率(元/分钟)×通话时长(分钟)
(通话时长不满1分钟的按1分钟计算)
本地电话费为:3分钟以内0.5元,以后每3分钟递增0.2元。
(2)话费查询。输入一个电话号码,从费用文件中统计该电话号码
的所有本地话费、长途话费,并从用户文件中查其用户名,最后在
屏幕上显示:
用户名电话号码本地话费长途话费话费总计
(3)话单查询。输入一个电话号码,查询并在屏幕显示该用户的所有通话记录,格式为:
用户名主叫电话号码被叫电话号码通话时长
3.8.2设计思想及程序流程框图
程序设计大致思路:
1.本系统的输入输出文件
本系统的输入文件有三个:
(1)源数据文件(hd.dat)
存放:主叫区号主叫电话号码被叫区号被叫电话号码通话时长(秒)每次通话作为一条记录,占源数据文件的一行。
多功能冷饮机每条记录中各数据之间以空格间隔,例如:025  ********  010  ********
90
每个电话号码可以有多次通话记录。
如果主、被叫区号相同,则通话记录为本地通话记录;否则为长途通话记录。
(2)长话费率文件(fl.dat)
存放:区号费率
例如:010  1.20  表示从本地打往区号为010的地区每分钟收费1.20元。
(3)用户文件(yh.dat)
存放:电话号码用户姓名
例如: 83491234  张明
本系统的输出文件有一个:
费用文件(fy.dat)
存放:主叫电话号码通话类型话费金额
其中,通话类型表示本次通话是长途还是本地。
2.系统输入数据
hd.dat—有20条通话记录,分别是:fl.dat    有4条记录025  ********  025  ********  70        010  1.20      025  ********  010  ********  236 020  1.20
025  ********  025  ********  310        021  0.80
025  ********  0571  ********  100 0571  1.00
025  ********  021  ********  50
025  ********  025  ********  80
025  ********  025  ********  115            yh.dat有5条记录
025  ********  025  ********  47  83491234  张明
025  ********  010  ********  93            84927038 李小红
025  ********  010  ********  792  87216340  王励
025  ********  0571  ********  931        83492200  赵强
025  ********  025  ********  580  58120321  杨冬
025  ********  025  ********  358
025  ********  021  ********  197
025  ********  025  ********  256
025  ********  010  ********  193
025  ********  025  ********  320
025  ********  025  ********  270
025  ********  025  ********  231
025  ********  025  ********  72
3.数据结构(可用C++实现)
逃生系统
三个类:话单(callist)、费用(charge)和用户(user)
两个常量:存放本地费率和递增量
(1)话单类
数据成员:主叫区号、主叫电话号码、被叫区号、被叫电话号码、通话时长
数据类型
属性(私有、保护、公有)
方法:构造函数和析构函数
从源数据文件读入通话数据
显示一次通话数据
点头娃娃
取主叫区号
取主叫电话号码等等
(2)费用类——从话单类派生
数据成员:通话类型、通话费用
数据类型
属性(私有、保护、公有)
方法:构造函数和析构函数
从费用文件读入费用数据
向费用文件输出数据
屏幕显示费用
求通话费用
求通话类型
取(返回)通话类型
取通话费用等等
(3)用户类
数据成员:姓名、电话号码
数据类型
属性(私有、保护、公有)
方法:设置用户的电话号码
查询用户名
设置用户名
查询用户的电话号码
显示用户名和电话号码等等
(1)话单类(CallList)
class CallList
挤压铸造机
{
protected:
char *ZCode; //主叫区号
char *ZNum; //主叫号码
char *BCode; //被叫区号
char *BNum; //被叫号码
int Time; //通话时长(秒)
public:
CallList(char *zcode=NULL,char *znum=NULL,
char *bcode=NULL,char *bnum=NULL,int time=0);
~CallList();
void Set(char *zcode=NULL,char *znum=NULL,
char *bcode=NULL,char *bnum=NULL,int time=0);
void Print();
char *getZC();
char *getZN();
char *getBC();
char *getBN();
int getTime();
};
(2)费用类(Charge)——从话单类派生
class Charge:public CallList //公有继承
{
protected:
int CallStyle; //为0时表示本地通话,为1时表示长途通话float Expense; //话费
public:
Charge(char *zcode=NULL,char *znum=NULL,char *bcode=NULL, char *bnum=NULL,int time=0,int callstyle=0,float exp=0);
void Set(char *zcode=NULL,char *znum=NULL,
char *bcode=NULL,char *bnum=NULL,int time=0);
void ComputeSty();
int GetStyle();
float GetExp();
void PrintExp();
};
(3)用户类(Consumer)
class Consumer
{
protected:
char *Name; //用户姓名
char *Num; //用户电话号码
public:
Consumer(char *name=NULL,char *num=NULL);
~Consumer();
void SetName(char *name=NULL);
void SetNum(char *num=NULL);
char *GetName();
char *GetNum();
void Print();
};
(4)费率类(Rate)
class Rate
{
protected:
char *Code; //区号
float rate; //费率
public:
Rate(char *code=NULL,float rat=0);
测井车
高钛渣~Rate();
void Set(char *code=NULL,float ra=0);
char *GetCode();
float GetRate();
void printRate();
};
根据自顶向下,逐步细化的程序设计思想,考虑将程序分为五大模块:文件
导入模块,话费计算模块,文件导出模块,查询模块以及确认退出模块。由此所得的程序结构图大致如下所示:
由系统结构图得到相应各个主要模块的的函数如下:
1.char Menu(char *ptr);
//函数功能:菜单显示并获得键盘选择
//函数参数:字符型指针ptr,表示菜单选择时输入字符串地址
//函数返回值:输入的键盘的ASCII码对应字符
2.Rate *InputRate(int &total);
//函数功能:从文件中读取费率文件并做相关异常处理
//函数参数:整型total,表示费率的总数
//函数返回值:Rate型,表示对象数组的首地址
3.Consumer *InputConsumer(int &total);
//函数功能:从文件中读取用户文件并做相关异常处理
//函数参数:整型total,表示用户的总数
//函数返回值:Consumer型,表示对象数组的首地址
4.Charge *InputCharge(int &total);
//函数功能:从文件中读取通话记录文件并做相关异常处理
/
/函数参数:整型total,表示通话记录的总数
//函数返回值:Charge型,表示对象数组的首地址
5.int ComputeExp(Charge *ptc=NULL,Rate *ptr=NULL,
int totalCharge=0,int totalRate=0);
//函数功能:计算每个通话记录的话费
//函数参数:Charge型指针ptc,表示通话记录对象数组的首地址
// Rate型指针ptr,表示费率对象数组的首地址

本文发布于:2024-09-23 11:20:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/283147.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   电话号码   通话   模块
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议