




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通达学院专业课程设计II题 目:电信计费系统的数据维护与计费子系统 专 业 ) 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 日 期 教师评语 教师签名: 年 月 日成绩评定备 注电信计费系统的数据维护与计费子系统一、 课题内容和要求客户帐单管理是电信计费系统必备的重要功能模块,主要负责对电信各类客户每月帐单的基本管理。系统文件中存放了客户的基本信息以及用户在一定时间中通话的时间。通过程序计算出该用户的话费。二、 需求分析功能框架图如图所示:电信计费系统与数据维护计算话费保存输出用户信息查找查找用户1) 提供可操作的主菜单:输出主菜单,用于显示以从文件中加载的总客户信息和若干个可选的功能选项。根据客户输入的选项来运行不同的功能,运行不同的函数。2) 进行文本信息的载入:从指定的文件中以链表形式加载所需的客户信息并建立链表。这里的文件是在编译时就已经指定好的、存在的文本,需设计者预先自己建立好。3) 查找客户功能:以客户输入的客户的电话号码进行查找对应的客户信息并将它们输出。4) 对现有信息的保存:保存内存中的最新的记录输出到磁盘文件中。这里默认的是保存到原读取文件中并覆盖原来的信息。5) 将信息备份到另外的一个文本中:通过文件格式读写函数,将源文件信息写到客户提供的目标文件中。(C+在存储时可自动建立文件,可以不事先建立好。)6) 统计客户的总费用:根据客户的基本信息将基本月租费、来电显示费、市话费、长途话费进行合计,从而得到客户的总花费。应注意每个名称的单一性,不可输出同一个名称。三、概要设计 1) 主要结构体: struct data int yy,mm,dd,h,min,sec;struct call bool bendi;data start,end;struct people char name20;char tell20;bool show;call cap200;int top;double money_in,money_out,money_tot;int tot_time;2)主要函数流程图: (1)装载函数:用于从文本中载入信息用于从文本中载入信系。将文档中客户的基本信息以及客户的通话记录载入。(见图3-1) 输出信息未找到结束开始读入名称否号码符合判断指向下一个节点是否结束否否是结束开始申请空间能否打开打开文本读入数据是否结束是是删除多出的一个节点否 图3-1 图3-2是是否 图3-1图3-2(2)查找函数:利用用户输入的名称进行顺序查找并将找到的客户信息输出。(见图3-2)(3)保存文件函数:将最新的内容通过文件读写,从内存中保存到原文本文件中(见图3-3) (4)计算话费:通过账单中的通话记录而算出用户的通话费用从而能得到用户的总费用,并显示出来。(见图3-4)开始向文件中写入各个量信息,信息间加空格打开文件成功指针指头是是否结束否指针指下一个节点结束是读入用户通话记录数据开始是是打开文件成功计算用户的总费用输出信息是否结束开始结束否否否图3-3图3-4四、源程序代码 #pragma warning(disable:4786)#include#include#include#include#include#includeusing namespace std;int month13=0,31,28,31,30,31,30,31,31,30,31,30,31;struct data int yy,mm,dd,h,min,sec;struct call bool bendi;data start,end;struct people char name20;char tell20;bool show;call cap200;int top;double money_in,money_out,money_tot;int tot_time;int is_run(int x) if (x % 4 =0 & x % 100 | x % 400=0) return 1;return 0;map phonelist;map namelist;people a100;int n,m;FILE *fin,*fout;void init_yonghu()phonelist.clear();namelist.clear();fin=fopen(yonghu.txt,r);fscanf(fin,%dn,&n);if (!fin)printf(cant open file.n);exit(1);for (int i=0;in;i+)char ch;fscanf(fin,%s%s%s,,ai.tell,&ch);if (ch=Y) ai.show=true; else ai.show=false;string str=ai.tell;string ss=;phoneliststr=i;namelistss=i;ai.top=0;ai.money_in=ai.money_out=0;ai.money_tot= 25 + (ai.show ? 6 : 0) ;fclose(fin);void get_time_point(data &t,char* s)int i,len=strlen(s);int d20;for (i=0;ilen;i+) di=si-0;t.yy=d0*1000+d1*100+d2*10+d3;t.mm=d4*10+d5;t.dd=d6*10+d7;t.h=d8*10+d9;t.min=d10*10+d11;t.sec=d12*10+d13;int get_time_during(data i,data j)int day=0,t;int mostday;if (i.yyj.yy) for (t=i.yy+1;tj.yy;t+) day+=365 + is_run(t);for (t=i.mm+1;t13;t+) if (t=2) day+=montht + is_run(i.yy); else day+=montht;for (t=1;t=j.mm-1; t+) if (t=2) day+=montht + is_run(j.yy); else day+=montht;else for (t=i.mm+1;t=j.mm-1;t+)if (t=2) day+=montht + is_run(i.yy); else day+=montht;if ( i.mm=j.mm & i.yy=j.yy )day += j.dd - i.dd -1;elseif (i.mm=2) mostday=montht + is_run(i.yy); else mostday=montht;day += mostday - i.dd;day += j.dd - 1;int hour=23-i.h + j.h;int miniter=59-i.min + j.min;int second= 59-i.sec + j.sec;int totals=day*24*3600 + hour*3600 + miniter*24 + second;return totals/60;void init_huadan()fin=fopen(huadan.txt,r);if (!fin)printf(cant open file.n);exit(1);fscanf(fin,%d,&m);char time120,time220,zhujiao20,beijiao20;for (int i=0;im;i+)fscanf(fin,%s %s %s %s,zhujiao,beijiao,time1,time2);string str=zhujiao;int k=phoneliststr;int tt=ak.top;if (beijiao0=0) ak.captt.bendi=false; else ak.captt.bendi=true;get_time_point(ak.captt.start,time1);get_time_point(ak.captt.end,time2);/ak.tot_time=get_time_during(ak.captt.start,ak.captt.end);ak.top+;fclose(fin);void cal_huafei()int i,j;for (i=0;in;i+)for (j=0;jai.top;j+)if ( ai.capj.bendi ) ai.money_in += get_time_during(ai.capj.start,ai.capj.end) * .1;else ai.money_out += get_time_during(ai.capj.start,ai.capj.end) * .7;printf(电话号码 用户姓名 月租费 功能费 市内电话费用 长途电话费用 合计n);for (i=0;in;i+)ai.money_tot += ai.money_in + ai.money_out;int tmp=ai.show ? 6:0;printf(%-10s %-15s 25.00 %d.00 %-10.2lf %-9.2lf %-10.2lfn,ai.tell,,tmp,ai.money_in,ai.money_out,ai.money_tot);void myprint()int i;printf(用户信息:n);printf(姓名 电话 是否来电显示n);for (i=0;in;i+)printf(%-15s %-15s %cn,,ai.tell,(ai.show? Y:N);printf(话单信息n);printf(主叫 被叫 开始时间 截止时间n);fin=fopen(huadan.txt,r);if (!fin)printf(cant open file.n);exit(1);fscanf(fin,%d,&m);char time120,time220,zhujiao20,beijiao20;for (i=0;im;i+)fscanf(fin,%s %s %s %s,zhujiao,beijiao,time1,time2);printf(%s %s %s %sn,zhujiao,beijiao,time1,time2);fclose(fin);void save()fout=fopen(money.txt,w);if (!fout)printf(cant open file.n);exit(1);fprintf(fout,电话号码 用户姓名 月租费 功能费 市内电话费用 长途电话费用 合计n);for (int i=0;in;i+)ai.money_tot += ai.money_in + ai.money_out;int tmp=ai.show ? 6:0;fprintf(fout,%-10s %-15s 25.00 %d.00 %-10.2lf %-9.2lf %-10.2lfn,ai.tell,,tmp,ai.money_in,ai.money_out,ai.money_tot);fclose(fout);void check_phone()printf(请输入号码:); getchar();char str20;gets(str);string s=str;if (phonelist.find(s) = phonelist.end() )printf(无此号码.n);elseint i=phonelists;int tmp=ai.show ? 6:0;printf(电话号码 用户姓名 月租费 功能费 市内电话费用 长途电话费用 合计n);printf(%-10s %-15s 25.00 %d.00 %-10.2lf %-9.2lf %-10.2lfn,ai.tell,,tmp,ai.money_in,ai.money_out,ai.money_tot);void check_name()printf(请输入姓名:); getchar();char str20;gets(str);string s=str;if (namelist.find(s) = namelist.end() )printf(无此用户.n);elseint i=namelists;int tmp=ai.show ? 6:0;printf(电话号码 用户姓名 月租费 功能费 市内电话费用 长途电话费用 合计n);printf(%-10s %-15s 25.00 %d.00 %-10.2lf %-9.2lf %-10.2lfn,ai.tell,,tmp,ai.money_in,ai.money_out,ai.money_tot);int main()init_yonghu();init_huadan();printf(欢迎使用n);bool exi=false;bool first=true;int choi;while (1)printf(|/n); printf(.-.-/n); printf(.(.)n); printf(+-oOOo-(_)-oOOo-+n); printf(| 0 费用 | n);printf(| 1 话单|n);printf(| 2 保存 |n);printf(| 3 按号码查询|n);printf(| 4 按姓名查询|n);printf(| 5 退出 |n); printf(+-Oooo-+n);scanf(%d,&choi);switch (choi)case 0:if (first) cal_huafei(); first=false; else printf(已经计算过话费.n); break;case 1:myprint(); break;case 2:save(); printf(保存成功.n); break;case 3:exi=true; break;case 4:check_phone(); break;case 5:check_name(); break;default :printf(input wrong.n);system(pause);if (exi) break;printf(谢谢使用.n);return 0;五、测试数据及其结果分析显示的主菜单界面: 欢迎使用客户帐单管理系统!菜单: 0 费用 1 话单 2 保存 3 按号码查询4 按姓名查询5 退出(1)费用:输入:0 (2)话单:输入:1(3)保存:输入:2 (4)按号码查询:输入:4(5)按姓名查询:输入:5(6)保存输入:3结果分析:1)在输入菜单选项时如果输入的内容不是1-0之间的数字,而是其他数字,系统将继续执行等待下次正确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离谱医生考试题及答案
- 课件显示作图过程
- 2025年中国拔罐器数据监测报告
- 客服管家考试题及答案
- 绞盘机司机数字化技能考核试卷及答案
- 井矿盐制盐工专项考核试卷及答案
- 多维地理信息采集员知识考核试卷及答案
- 旅游团队领队晋升考核试卷及答案
- 静脉抽血考试题及答案
- 河北石家庄市42中7年级下册数学期末考试专项练习试题(含答案解析)
- 国内威胁诱捕(蜜罐)类产品研究与测试报告
- YY 0167-2020非吸收性外科缝线
- 20客户画像与标签管理课件
- 心刺痛(冠心病心绞痛)蒙医诊疗指南
- 昆明历史沿革课件
- 输血制度课件
- DB45-T 1696-2018危岩防治工程技术规范-(高清可复制)
- 喷砂检验报告
- 旅游英语ppt课件(完整版)
- QC成果施工现场移动式网络布设及监控一体化装置的研制
- 《发育生物学》课件第八章 胚轴的特化与体轴的建立
评论
0/150
提交评论