手机资费系统设计报告_第1页
手机资费系统设计报告_第2页
手机资费系统设计报告_第3页
手机资费系统设计报告_第4页
手机资费系统设计报告_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c+程序设计课程设计报告设计题目:手机资费系统班级:网络一班 学号: 20115207报告人姓名:舒敏 指导教师:费玉奎实验地点: 山东农业大学东校区计算机实验室完成起止日期: 2012.6.92012.6.17目录一、设计思路3二、具体实现41)管理类:41、价格标准设立类42、注册用户实现代码93、显示全部用户代码132)客户端类161、客户类162、主页面显示代码183、管理端主界面显示代码194、客户端界面显示代码232、套餐类251、套餐显示页面是显示代码262、套餐修改具体代码283、资费类321、充值功能实现代码332、打电话计费实现代码373、各类查询实现代码52三、运行调试与

2、分析讨论58四、错误修改与修改65五、设计体会与小结:66一、设计思路手机资费系统利用c+面向对象的过程,建立对象数组和对象将各类数据储存起来,利用输入输出流,将各类数据保存在外部文件中,真正实现存储功能,而不是关闭codeblocks后数据就消失了。系统主要分为俩大部分,客户端和管理端,还有主界面,但进入主界面之前还有密码登陆,输入错误五次后自动退出,管理端主要是价格等的设定,客户端主要是查询修改使用业务。共分为五个类,客户端类,管理端类,套餐类,记录类,资费类,由于知识能力有限,并没有用类的继承和组合,只是单纯的在不同的类中定义对象然后直接调用。一次来完成手机资费系统各功能的实现。客户端:

3、1、 计费功能 (打电话 发短信 使用wlan的计费功能)2、 套餐管理(实现套餐的修改)3、 缴费功能(实现用户充值)4、 使用记录查询(实现查询详单,用户余额、套餐的短信、通话、wlan的剩余情况)管理端:1、 注册用户(实现新用户的注册、更改、显示全部)2、 价格标准设立(实现对于标准的市话 长途 漫游 短信 wlan 等的价格设立 查看 修改)二、具体实现1)管理类: 1、价格标准设立类class Management/只实现基本标准价格的确立 public: void mainset();/基本标准修改菜单 void mainset1();/显示修该或查看界面 void jiages

4、how();/显示设定的价格 double changtu;/长途价格 double manyou;/漫游价格 double wlan;/wlan价格 double duanxinyidong;/移动卡之间短信价格 double duanxinliantong;/联通移动卡之间短信价格 double shihua;/市话价格; 具体实现代码:void Management:mainset1()/ system(cls); int m; Management s2; Clientside s3; coutendl; coutendl; cout endl; coutendl; coutendl;

5、 coutttt进 入 手 机 价 格 设 置 界 面 endl; coutendl; coutendl; couttt1、查看原有价格设定 2、重新设定价格 3、返回主页面m; switch(m) case 1:s2.jiageshow();break; case 2:s2.mainset();break; case 3:s3.mainshow();break; default: s2.mainset1(); void Management:mainset()/基本价格标准设立 int a; Management b; Clientside phone; system(cls); ofstr

6、eam outfile(价格标准.dat,ios:binary);/建立一个外部文件 准备存储内容 if (!outfile) cerr运行错误,程序将退出!;abort(); coutendl; coutendl; coutttt各种价格标准的设定endl; coutendl; couttt请根据提示输入想要确立的价格endl; coutendl; coutt漫游基本标准价格_元/每分endl; coutb.manyou; coutt长途基本标准价格_元/每分endl; coutb.changtu; coutt市话基本标准价格_元/每分endl; coutb.shihua; couttwla

7、n基本标准价格_元/每小时endl; coutb.wlan; coutt短信基本标准价格 移动卡之间_元/每条endl; coutb.duanxinyidong; coutt短信基本标准价格 联通卡移动卡之间_元/每条endl; coutb.duanxinliantong; coutendl; coutendl; coutendl; couttt基本标准价格确立完成!endl; outfile.write(char*)&b,sizeof(b);/注入外部文件 outfile.close ();/关闭外部文件 存储 coutendl; coutendl; cout下一步选择:endl; cout

8、endl; coutt1、显示价格标准 2、返回主菜单菜单 3、退出系统endl; couta; switch(a) case 1:b.jiageshow();break;/management对象b,显示价格 case 2:phone.main1show();break;/返回管理界面 case 3:exit(0); default:b.jiageshow(); 2、注册用户实现代码void Clientside:newzhuce() Clientside s4; system(cls); cout*endl; coutendl; coutendl; coutttt欢迎注册操作新用户endl

9、; coutendl; coutendl; char h; Clientside s11000; int p; cout添加几个用户?p; ofstream outfile(手机记录.dat,ios:app|ios:binary); if (!outfile) cerr运行错误,程序将退出!; abort(); for(int j=0;jp;j+) cout用户姓名:s1j.rname;cout手机号码号码:s1j.rphone;cout手机密码s1j.rcode;cout请先选择套餐endl;coutendl;cout 套餐种类:endl;coutendl;coutt套餐一 主叫3元免100

10、分钟+短信5元包90条+wlan 5元包50个小时endl;coutt套餐二 主叫5元免150分钟+短信8元包150条+wlan 10元包100个小时endl;coutt套餐三 主叫10元200分钟+短信10元包200条+wlan15元包150个小时 endl;cout 选择套餐:(如选择套餐一,直接输入1即可;)s1j.rtaocan;switch(s1j.rtaocan) case1: s1j.rmoney=0.0;s1j.rtonghua=100;s1j.rduanxin=90;s1j.rwlan=50;break; case2:s1j.rmoney=0.0;s1j.rtonghua=1

11、50;s1j.rduanxin=150;s1j.rwlan=100;break; case3:s1j.rmoney=0.0;s1j.rtonghua=200;s1j.rduanxin=200;s1j.rwlan=150;break; s1j.rthmoney=0;/通话使用总时间 s1j.rdxmoney=0;/短息总条数 s1j.rwlmoney=0;/WLAN使用总时间 s1j.rprice=0;/上次通话金额 outfile.write(char*)&s1j,sizeof(s1j);/写入外部文件 outfile.close ();/关闭外部文件coutendl;coutendl;cou

12、tt用户注册成功!endl;coutendl;coutendl; cout按 1 键回到管理端页面h;while(1) s4.main1show();/返回管理页面coutendl;coutendl;cout*endl;3、显示全部用户代码void Clientside:allshow() system(cls); Clientside s8; Clientside s51000; coutendl; coutendl; cout*endl; coutendl; coutendl; ifstream infile(手机记录.dat,ios:in|ios:binary);infile.seekg

13、(0,ios:beg);if(infile.peek()=EOF)cout用户信息为空!endl;return;int i=0;/int k=0;while(1) infile.read(char*)&s5i,sizeof(s5i);/读入 if(infile.eof()break;elsecout姓名:s5i.rnameendl; cout号码:s5i.rphoneendl; cout密码:s5i.rcodeendl; cout套餐类别: s5i.rtaocanendl; cout手机余额:s5i.rmoneyendl; cout剩余通话时间s5i.rtonghuaendl; cout剩余短

14、信条数s5i.rduanxinendl; cout剩余wlan时间s5i.rwlanendl; cout手机通话总时间s5i.rthmoneyendl; cout手机短信使用条数s5i.rdxmoneyendl; coutwlan使用总时间s5i.rwlmoneyendl; cout上次通话用费s5i.rpriceendl; i+;infile.close();/读入文件关闭cout1、返回注册页面 2、返回主页面 3、退出 endl;coutendlendl;cout*t;if(t=1) s8.zhuce(); else if(t=2) s8.mainshow();/主页面 else exi

15、t(0);2)客户端类1、客户类class Clientside public: void mainshow();/选择客户端还是管理端界面 void main2show();/客户端显示 void main1show();/管理端界面 void zifei();/资费系统 void zhuce();/用户注册 void newzhuce();/注册新用户 void allshow();/显示全部注册用户 void taocan();/套餐管理页面 char rname20; char rphone20; char rcode20; char rtaocan; double rmoney;/手

16、机余额 double rtonghua;/通话剩余时间 double rduanxin;/短信剩余条数 double rwlan;/剩余WLAN时间 double rdxmoney;/短息总条数 double rwlmoney;/WLAN使用总时间 double rthmoney;/通话使用总时间 double rprice;/上次通话金额;2、主页面显示代码void Clientside:mainshow() system(cls); Clientside a; coutendl; coutendl; cout*endl; coutt提醒:第一次进入要首先注册endl; coutendl;

17、coutendl; cout请选择进入端口:endl; coutendl; coutendl; coutendl; cout1、管理端 endl; coutendl; coutendl; cout2、客户端endl; coutendl; coutendl; cout3、退出n; if(n=1) a.main1show();/进入管理端 else if(n=2) a.main2show();/进入客户端 else exit(0);3、管理端主界面显示代码void Clientside:main1show()/管理界面 Clientside phone; Management baseset; s

18、ystem(cls); int n; coutendl; coutendl; coutendl; coutendl; cout endl; coutendl; cout 菜 单 选 择 endl; coutendl; cout 1、用 户 注 册 系 统 endl; coutendl; cout 2、价 格 设 定 管 理 endl; coutendl; cout 3、退 出 系 统 endl; coutendl; cout endl; coutendl; couttt 请 选 择:n; switch(n) case 1:phone.zhuce();break;/注册手机新用户 case 2:

19、baseset.mainset1();break;/各种价格标准设立 case 3:exit(0); default: cout按 1 键 返回主页面 p; while(1) phone.main1show(); void Clientside:zhuce()/手机注册新用户 system(cls); Clientside phone; int x1; coutt endl; coutendl; coutendl; coutendl; coutttt欢迎来到注册页面!endl; coutendl; coutendl; coutt1、注册新用户 2、显示注册用户 3、返回主页面 4、退出系统en

20、dl; coutx1; int p; switch(x1) case 1:phone.newzhuce();break;/注册新用户 case 2:phone.allshow();break;/显示全部注册用户 case 3:phone.mainshow();break;/返回客户端 case 4:exit(0); default: cout输入错误,按任意键继续键入注册页面p; while(1) phone.zhuce();/进入注册页面 4、客户端界面显示代码void Clientside:main2show()/客户端界面 Clientside phone; Taocan taocans

21、et; Zifei s4; system(cls); int n; coutendl; coutendl; coutendl; coutendl; cout endl; coutendl; cout 菜 单 选 择 endl; coutendl; cout 1、计 费 系 统 endl; coutendl; cout 2、套 餐 管 理 endl; coutendl; cout 3、缴 费 功 能 endl; coutendl; cout 4、使 用 记 录 查 询 endl; coutendl; cout 5、退 出 系 统 endl; coutendl; cout endl; couttt

22、 请 选 择:n; switch(n) case 1:s4.accumulate();break;/各类查询 case 2:taocanset.taocanshow();break;/套餐设立 case 3:s4.paymoney();break;/缴费功能 case 4:s4.kindschaxun();break;/zifei查询详单 case 5:exit(0); default: coutt输入错误,按1返回主页面!p; if(p=1) phone.mainshow(); 2、套餐类class Taocan/只实现套餐的选择与退订和消费价格显示 public: void taocans

23、how();/套餐显示页面 void taocanxiugai();/套餐修改函数;1、套餐显示页面实现代码void Taocan:taocanshow() Taocan taocanset; Clientside s3; system(cls); int a,m; coutendl; coutendl; cout endl; coutendl; coutendl; coutttt进 入 手 机 套 餐 界 面 endl; coutendl; coutendl; coutt套餐一 主叫3元免100分钟+短信5元包90条+wlan 5元包50个小时 endl; coutendl; coutt套餐

24、二 主叫5元免150分钟+短信8元包150条+wlan 10元包100个小时 endl; coutendl; coutt套餐三 主叫10元200分钟+短信10元包200条+wlan15元包150个小时 endl; coutendl; coutendl;couttt是否修改套餐 1、修改 2、返回客户端面 3、返回管理端页面 a; if(a=1) taocanset.taocanxiugai();/进入套餐具体修改页面 else if(a=2) s3.main2show();/返回用户端 else if(a=3) s3.main1show();/返回客户端 else cout输入错误 按1返回套

25、餐主界面m; if(m=1) taocanset.taocanshow();/返回页面 2、套餐修改具体实现代码void Taocan:taocanxiugai() system(cls); Clientside s51000; Clientside s1; Taocan s3; cout*endl; coutendl; coutendl; cout欢迎进入手机套餐修改界面 endl; coutendl; coutendl; cout请输入要修改的用户名name; cout所有套餐类型如下:endl; coutendl; coutt套餐一 主叫3元免100分钟+短信5元包90条+wlan 5元

26、包50个小时 endl; coutendl; coutt套餐二 主叫5元免150分钟+短信8元包150条+wlan 10元包100个小时 endl; coutendl; coutt套餐三 主叫10元200分钟+短信10元包200条+wlan15元包150个小时 endl; coutendl; ifstream infile(手机记录.dat,ios:in|ios:binary);infile.seekg(0,ios:beg);if(infile.peek()=EOF)cout用户信息为空!endl;return;int k=0;while(1) infile.read(char*)&s5k,s

27、izeof(s5k); if(infile.eof()break;elsek+;coutkendl;char n; for(int i=0;ik;i+) if(strcmp(s5i.rname,name)=0) cout您要修改的用户名为:endl; couts5i.rnameendl; cout您要修改的原有套餐为endl; couts5i.rtaocanendl; cout输入你要修改到的套餐类型n; s5i.rtaocan=n; cout套餐修改成功!endl; coutendl; coutendl; cout现在套餐类型为:endl; if(n=1) coutt套餐一 主叫3元免100

28、分钟+短信5元包90条+wlan 5元包50个小时 endl; else if(n=2) coutt套餐二 主叫5元免150分钟+短信8元包150条+wlan 10元包100个小时 endl; else coutt套餐三 主叫10元200分钟+短信10元包200条+wlan15元包150个小时 endl; break; cout1、继续修改套餐 2、返回主菜单 3、退出系统m; if(m=1) s3.taocanshow();/返回修改界面 if(m=2) s1.mainshow();/返回主菜单 else exit(0); infile.close();3、资费类class Zifei pu

29、blic: void kindschaxun(); void accumulate();/各种使用情况主界面 void zifeishow();/主页面 显示要查询的 如余额等 void paymoney();/充值 void tonghuajisuan();/通话费用计算 void duanxinjisuan();/短信费用计算 void wlanjisuan();/wlan计算;1、充值功能实现代码void Zifei:paymoney()/充值功能 system( cls); Zifei b; Clientside a; Clientside s91000;ifstream infile

30、(手机记录.dat,ios:out|ios:binary);/读入文件infile.seekg(0,ios:beg);if(infile.peek()=EOF)cout用户信息为空!endl;return;int i=0; int k=0;while(1) infile.read(char*)&s9k,sizeof(s9k);/赋值入对象数组中 if(infile.eof()break;elsek+; infile.close();/读入完成后关闭文件 cout*endl; coutendl; coutendl; char num20; double n; coutt要充值的手机号是num;f

31、or(i=0;ik;i+) if(strcmp(s9i.rphone,num)=0) break; else continue;if(ik) coutendl; coutendl; cout要充值的用户名是:s9i.rnameendl; coutendl; coutendl; coutt输入充值金额endl; coutn; s9i.rmoney=s9i.rmoney+n; /remove(手机记录.dat); ofstream outfile(手机记录.dat,ios:binary);/再建一个相同的外部文件 准备存入数据覆盖原有数据 int l=0; /while(1)/ while(1)/

32、 /if(lk-2)break; outfile.write(char*)&s9l,sizeof(s9l);/外部文件存储数据, outfile.close();/关闭外部存储文件 cout充值成功!endl; l+;/ coutt手机余额为s9i.rmoneyendl; coutendl; coutendl;coutt是否继续充值? Y|Nm;if(m=n|N)a.mainshow();/返回管理页面elseb.paymoney();2、打电话计费实现代码void Zifei:tonghuajisuan()/通话费用计算 system(cls); Management s6; Clients

33、ide s7; Clientside s51000; Zifei s1; coutendl; coutendl; /特别注意读入俩个文件时候 要把第一个括起来 要不就是重复定义 ifstream infile(价格标准.dat,ios:binary);/第一次读入价格标准文件infile.seekg(0,ios:beg);if(infile.peek()=EOF)cout该用户不存在!endl;return;while(1) infile.read(char*)&s6,sizeof(s6);if(infile.eof()break;infile.close(); cout*endl; coutendl; coutendl; coutttt进入通话计费服务endl; coutendl; coutendl; couttt输入用户手机号码a; coutendl; coutendl; couttt输入通话时间m; coutendl; coutendl; couttt选择通话类型endl; coutendl; coutendl; cout1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论