电信计费系统客户帐单管理
.
程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
( 2012 / 2013 学年 第 二 学期)
题 目:电信计费系统客户帐单管理
专 业
学 生 姓 名
班 级 学 号
指 导 教 师
指 导 单 位 计算机软件教学中心
日 期 2013 年05月29日
.
.
评分项 优秀 良好 中等 差
遵守机房规章
制度
关于办公室下班关闭电源制度矿山事故隐患举报和奖励制度制度下载人事管理制度doc盘点制度下载
评
上机时的表现
学习态度
程序准备情况 分
程序设计能力
团队合作精神
课题功能实现情况 细
算法设计合理性
用户界面设计
报告书写认真程度 则
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
详实程度
文字表达熟练程度
回答问题准确度
简
短
教师签名: 郭剑 评
语 2012 年 12 月 25 日
.
.
评
分
等
级
备评分等级有五种:优秀、良好、中等、及格、不及格
注
电信计费系统客户帐单管理 一、 课题内容和要求
客户帐单管理是电信计费系统必备的重要功能模块,主要负责对电信各类客户每月帐单的增加、修改、删除、查询、备份等管理工作。本课题以中国电信企业客户帐单管理模块原型参照,要求基于单链表结构对文件存储的客户帐单数据进行排序、查找、计算、显示等造作。通过此可以,熟练掌握单链表结构、文件读写、函数调用等知识,以及查找、排序典型算法的设计与应用。
二、需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
要能提供以下几个基本功能:
(1)用户资料文件与话单文件由程序设计人员预先从键盘上录入,用户资料文件中的数据记录不得少于30条,话单文件中的数据记录不得少于200条,且必须有跨月份、跨年份的通话记录话单。
(2)首先从硬盘读入用户资料和话单记录
(3)对话单进行计费处理,输出费用详单到指定的文件。格式如下:
电话号码 用户姓名 月租费 功能费 市内电话费用 长途电话费用 合计
83470000 Zhang Qiang 25.00 6.00 xxxxx xxxxx xxx
83470001 。。。。。。 。。。。。。
(4)异常话单提示。有的话单可能是错误的,找出这些话单,不参加计费,另存为一个文件。可能的出错话单有:
?一个号码的通话时长大于三天。
?一个号码在一个时间存在两条以上的记录。
.
.
功能框架图如图1所示
(1)提供可操作的主菜单:输出个菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。根据客户输入的选项来运行不同的功能,运行不同的函数。
(2)显示所有用户的功能:根据选项可将文本里的用户信息在屏幕上显示出来。 (3)显示所有账单功能:可将文本里的通话账单在屏幕上显示出来。 (4)添加用户功能:可在屏幕上进行直接操作,将用户信息添加到记录里。 (5)添加账单功能:操作同上,可将新的通话记录添加到记录里。 (6)按用户民查找功能:输入记录里的用户民,可以查询与之相关的通话账单记录。
(7)按电话号码查找功能:输入记录里的已有电话号码,可以查找相应的通话账单记录。
(8)输出花费功能:在操控台和文本中,直接输出所有的花费详情。 .
. 三、概要设计
1、主要函数流程图如图2所示:
开始
打开文本
读入数据
选择操作选项
返回上一级
子菜单
结束
图2:主程序图
.
.
开始
调用菜单函数 输出操作选项
返回操作选项 调用应用函数 输入操作选项
子菜单
应用函数
选择结束
结束
图3:操作菜单系统
开始
打开文本
读入数据
显示用户信息
结束
图4:显示所有信息菜单
.
.
开始
打开文本
输入
在末尾插入数据
输出数据到文本尾
关闭文本
结束
图5:插入数据菜单
开始
打开文本
读入账户和账
单信息
选出一个所有用户账单 选出该用户每个月账单 判断账单是否合理
计算话费 返回所有正确账单
结束
图6:计算话费函数
.
.
开始 开始
记录开始时间以及结束
时间的年月日时分秒
月日时分秒是否No
超出时间范围,
Yes
输出错误提示, 返回1;
返回-1;
结束
图7::判断话费正误函数
1、顾客类(Customer):
#include
#include
#include //控制输出格式
class Customer //定义一个顾客类
{
protected:
char Name[20]; //用户名
char Number[15]; //用户电话号码
char CID; //是否来电显示
public:
Customer(char* =" ",char* =" " ,char cid=' '); //定义构造函数
~Customer(); //定义析构函数
Customer(const Customer & obj); //定义拷贝构造函数
char* GetName(); //获得用户名字符型指针函数
char* GetNumber(); //获得用户号字符型指针函数
char GetCID(); //看用户是否有来电显示
friend istream & operator >> (istream & in , Customer & cus); //友元重载
.
.
输入
friend ostream & operator << (ostream & out , const Customer & cus); //友元重载
输出
};
Customer::Customer(char *na, char *num,char cid)
{
strcpy( Name , na );
strcpy( Number , num );
CID=cid;
}
Customer::~Customer()
{
}
Customer::Customer( const Customer & obj ) //构造函数的定义 {
strcpy( Name , obj.Name );
strcpy( Number , obj.Number );
CID=obj.CID;
}
char* Customer::GetName() {
return Name;
}
char* Customer::GetNumber() {
return Number;
}
char Customer::GetCID() {
return CID;
}
istream & operator >> (istream & in,Customer & cus)
{
in>>cus.Name; //输入用户名
in>>cus.Number; //输入用户号码
in>>cus.CID; //来电业务信息
return in;
}
.
.
ostream & operator << (ostream & out,const Customer & cus)
{
out<
#include
#include
#include
class Bill
{
protected:
char Dialing[15];
char Dialed[15];
char StartTime[15];
char EndTime[15];
public:
Bill(char *dialing=" ",char *dialed=" ",char *stime=" ",char *etime=" ");//定义构造函
数
~Bill();
Bill( const Bill & obj); //帐单的拷贝构造函数
char* GetDialing(); //获得主叫号码
char* GetDialed(); //获得被叫号码
char* GetStart(); //获得起始时间
char* GetEnd(); //获得结束时间
int GetDate(); //获得日期
int GetTime(); //获得通话时长
friend int mon_day(int year,int month); //记录不同月份的天数
friend istream & operator >> (istream & in ,Bill & bill); //友元重载输入
friend ostream & operator << (ostream & out ,const Bill & bill); //友元重载输出
friend int Estimate(char *m,char *n ); //判断时间正误函数 };
Bill::Bill(char *dialing,char *dialed,char *stime,char *etime)
{
strcpy( Dialing , dialing );
strcpy( Dialed , dialed );
.
.
strcpy( StartTime , stime );
strcpy( EndTime , etime ); }
Bill::Bill(const Bill & obj) {
strcpy( Dialing , obj.Dialing );
strcpy( Dialed , obj.Dialed );
strcpy( StartTime , obj.StartTime );
strcpy( EndTime , obj.EndTime ); }
Bill::~Bill()
{
}
char* Bill::GetDialing() {
return Dialing;
}
char* Bill::GetDialed() {
return Dialed;
}
char* Bill::GetStart()
{
return StartTime;
}
char* Bill::GetEnd()
{
return EndTime;
}
istream & operator >> (istream & in,Bill & bill)
{
in>>bill.Dialing;
in>>bill.Dialed;
in>>bill.StartTime;
in>>bill.EndTime;
return in;
}
ostream & operator << (ostream & out,const Bill & bill)
{
out<12 ||mon1<1 ||mon2>12 ||mon2<1 ||
h1>23 ||h1<0 ||h2>23 ||h1<0 ||min1>59 ||min1<0
||min2>59 ||min2<0 ||s1>59 ||s1<0 ||s2>59 ||
s2<0 ||d1<1 ||d2<1 ||d1>mon_day(y1,mon1) ||d2>mon_day(y2,mon2))
{
return -1; //如果“月,日,时,分,秒”超出范围,则返回-1
}
else
{
if(y1==y2) //判断同年
{
if(mon1==mon2) //判断月份
{
if( (y-x<24*60*3) && (y-x>0) ) //判断通话在三天内
{
.
.
if(s1s1) //结束秒数大于开始秒数,就是正确
的,否则错误
return 1;
else
{
cout<<"通话时间记录错误~"<
#include
double PrepaidFee=25.0,Cid=6.0,Local=0.1,Toll=0.7;//定义全局变量:月租,来电显示
费用市内电话单价和长途电话单价
const int Max=2000; //最大数组长度
char ShowMainMeun(); //显示主菜单
char ShowSonMenu(); //显示子菜单
//显示所有客户信息 void ShowCustomer();
void ShowBill(); //显示所有帐单信息 void AddCusInfo(); //添加用户信息
void AddBilInfo(); //添加帐单信息
void SearchCusInfo(); //按照客户查找帐单信息 void SearchNumInfo(); //按照号码查找帐单信息 void Calculate(Customer *cus,Bill *bill ,int m,int n);//
void ShowAll(); //输出所有帐单信息 void ShowWrongMess(Bill *bill,int n);//输出错误帐单的信息 bool Compare(int m,int *p,int n); //如果m与数组p[n]的任何一个数都不相等,那
么就返回false
int Judge(Bill *bill,int m,Bill bil,int n); //判断bil帐单是否会发生冲
.
.
突
char ShowMainMeun()
{
cout<<"\t 主菜单 "<>choice; //用户输入操作选项
return choice; //返回操作选项
}
char ShowSonMenu()
{
cout<<"\t
============================================================"<>choice; //用户输入操作选项
return choice; //返回操作选项 }
void ShowCustomer() {
cout<<"\n\n";
Customer Cus[Max];
Bill bill[Max];
ifstream inf1("用户信息.txt");
int count1=0;
while (!inf1.eof())
{
inf1>>Cus[count1];
cout<>bill[count2];
count2++;
}
inf1.close();
inf2.close();
char point;
while((point=ShowSonMenu())!='0')
{
if(point=='1')
Calculate(SaveCus,SaveBill,2,count2);
else if(point=='2')
ShowWrongMess(bill,count2);
else
cout<<"输入有误: 请重新输入~"<>Cus[count1];
count1++;
}
ifstream inf2("话单信息.txt");
int count2 =0;
while (!inf2.eof())
{
inf2>>bill[count2];
cout<>Cus[count1];
count1++; //有m-1个顾客
}
int count2=0;
ifstream inf2("话单信息.txt");
while(!inf2.eof()) //录入账单记录到Bill类的数组bill中
{
inf2>>bill[count2];
count2++; //有n个账单记录
}
inf1.close(); //关闭文件
inf2.close(); //关闭文件
Calculate(Cus,bill,count1,count2);
}
.
.
void AddCusInfo()
{
Customer Cus[Max];
int num;
cout<<"请输入添加用户的数目:";
cin>>num;
cout<<"请输入用户的相应信息:"<>Cus[n]; //输入添加的用户名
ofstream outf;
outf.open("用户信息.txt",ios::app); //用app方式打开文本,能直
接在文本尾加入信息
for(n=0;n>num;
cout<<"请输入帐单的相应信息:"<>bill[n];
ofstream outf;
outf.open("话单信息.txt",ios::app); //用app方式打开文本,能直接在文本
尾加入信息
for(n=0;n>Name;
Customer Cus[Max];
Bill bill[Max];
ifstream inf1("用户信息.txt");
int count1=0;
while (!inf1.eof()) //录入顾客信息到Customer类数组Cus中
{
inf1>>Cus[count1];
.
.
count1++; //记录总共有(count1-1)个顾客
}
ifstream inf2("话单信息.txt");
int count2 =0;
while (!inf2.eof())
{
inf2>>bill[count2];
count2++; //总共有count2条话单
}
inf1.close();
inf2.close();
Customer SaveCus[1];
Bill SaveBill[Max]; //保存该用户的话单信息
int i=0,j=0,k=0;
cout<<"您所查找的用户信息是:"<>Cus[count1];
count1++; //有count1-1个用户
}
Bill bill[Max];
ifstream inf2("话单信息.txt");
int count2 =0;
while (!inf2.eof())
{
inf2>>bill[count2];
count2++; //有count2条话单记录
}
inf1.close();
inf2.close();
char Number[15];
cout<<"请出入查找的号码:";
cin>>Number;
Bill SaveBill[Max];
int i=0,j=0,k=0;
cout<<"您所查找的话单信息是:"<=0&& Judge(bill,n,bill[k],k)==1)
{
if( strlen( bill[k].GetDialed() )>8 ) //
.
.
按照市话来看,长度大于8的都算是长途电话
toll += bill[k].GetTime()*Toll;
else
local += bill[k].GetTime()*Local;
a[j]=bill[j].GetDate(); //把bill[j]存到a[n]中
}
else
{
outw< #include .
.
int main()
{
cout << "\t ," << endl;
cout << "\t, _???__ " << endl;
cout << "\t__???___ , : ?" << endl;
__????__" << endl; cout << "\t: ,
cout << endl;
cout << "\t?????????????????????????????" << endl;
cout << "\t-__~~--___-?~~__--__~~~_----__----~~~---?---___?--__-?" << endl;
cout << "\t___---_~__-~_?___-欢迎进入 电信计费系统-- ?~~---__--~~" << endl;
cout << "\t????????-, _--_--,------,?-,,~~???????" << endl;
cout<<"\t
***********************************************************"<
本文档为【电信计费系统客户帐单管理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。