c语言电话自动计费,电信计费模拟实现

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

using namespace std;

struct users

{

char name[20];

char number[20];

char c;

};//用户资料

struct records

{

char hostnum[20];

char clientnum[20];

int time;

};//话单记录

void outrecords()

{

records record1[10]={{"81330001","81340001",30},

{"81330001","81340001",306},

{"81330001","05118788455",143},

{"81330002","81340001",50},

{"81330002","81340007",534},

{"81330002","81340008",340},

{"81330002","05118788773",130},

{"81330003","81340001",30},

{"81330003","05118788676",30},

{"81330003","05118788454",135},

};

records *p1=record1;

ofstream outfile("f2.dat",ios::out);

if(outfile==0)

{

cerr<

exit(1);

}

for(int i=0;i<10;i++)

{

outfile<hostnum<clientnum<time<

}

outfile.close();

}//输入话单记录

records *inrecords()

{

records record[10];

records *p2=record;

ifstream infile("f2.dat",ios::in);

if(infile==0)

{

cerr<

exit(1);

}

for(int j=0;j<10;j++)

{

infile>>(p2+j)->hostnum>>(p2+j)->clientnum>>(p2+j)->time;

}

infile.close();

return p2;

}

void outusers()

{

users user1[3]={{"name1","81330001",'y'},{"name2","81330002",'y'},{"name3","81330003",'n'}};

users *p1=user1;

ofstream outfile("f1.dat",ios::out);

if(outfile==0)

{

cerr<

exit(1);

}

for(int i=0;i<3;i++)

{

outfile<name<number<c<

}

outfile.close();

}

users user2[3];

users *inusers()

{

users *p2=user2;

ifstream infile("f1.dat",ios::in);

if(infile==0)

{

cerr<

exit(1);

}

for(int j=0;j<3;j++)

{

infile>>(p2+j)->name>>(p2+j)->number>>(p2+j)->c;

}

infile.close();

return p2;

}

class COST

{

private:

users *pu;

float localcost;

float discost;

float basiccost;

float displaycost;

public:

COST(users *p1)

{

pu=p1;

localcost=0;

discost=0;

basiccost=25;

displaycost=0;

}

int t(int sec);

void displayc();

void callc();

void show();

};

int COST::t(int sec)

{

int min;

if(sec%60==0)

min=sec/60;

else

min=sec/60+1;

return min;

}

void COST::displayc()

{

if(pu->c=='y'||pu->c=='Y')

displaycost=6;

else

displaycost=0;

}

void COST::callc()

{

records *pr=inrecords();

for(int i=0;i<10;i++)

{

if(strcmp(pu->number,(pr+i)->hostnum)==0)

{

if(strlen((pr+i)->clientnum)<10)

localcost+=t((pr+i)->time)*0.1;

else

discost+=t((pr+i)->time)*0.7;

}

}

}

void COST::show()

{

cout<

"功能费"<

cout<number<name<

displaycost<

}

void f(COST &c)

{

c.displayc();

c.callc();

c.show();

}

users *g()

{

users *p=0;

users *p2=inusers();

int t=1;

char username[20];

cout<

cin>>username;

for(int i=0;i<3&&t==1;i++)

if(strcmp((p2+i)->name,username)==0)

{

p=p2;

t=0;

}

if(t==1)

{

cout<

}

return p;

}

int main()

{

outusers();

outrecords();

inusers();

users *p;

p=g();

if(p!=0)

{

COST c(p);

f©;

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值