简单个人话费管理系统课程设计

上传人:ss****gk 文档编号:235610538 上传时间:2022-01-06 格式:DOC 页数:19 大小:124KB
返回 下载 相关 举报
简单个人话费管理系统课程设计_第1页
第1页 / 共19页
简单个人话费管理系统课程设计_第2页
第2页 / 共19页
简单个人话费管理系统课程设计_第3页
第3页 / 共19页
简单个人话费管理系统课程设计_第4页
第4页 / 共19页
简单个人话费管理系统课程设计_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《简单个人话费管理系统课程设计》由会员分享,可在线阅读,更多相关《简单个人话费管理系统课程设计(19页珍藏版)》请在金锄头文库上搜索。

1、高级语言程序设计课程设计报告书简单个人话费管理系统学生姓名:*学 号.*年级专业及班级:*指导老师及职称:*教授专业:计算机科学与技术专业提交日期:杯年杯月简单个人话费管理系统学生:*指导老师:*扌商 要:本次设计的目的是设计一个简单的个人话费管理系统,达到求余额、记录通 话详细消息、查询呼叫号码等方面的功能。既能使用户随时了解自己的话费支出,又能使用 户及时根据系统统计的数据对以后的使用进行调整。该系统主要针对所有手机及座机用户, 主要采用的语言工具是C语言,编程的环境是VC6. 0.系统有若干个功能函数组成,用到了 结构体、函数调用、文件读写和常见的循环等手法,经过一次又一次的调式最终圆满

2、完成任 务。在这次的动手过程中,我发现要很好地完成一个程序除了对专业知识的了解和熟练应用 以外,还需要编程者有很好的耐性以及细心的良好习惯。关键词:结构体;文件;循环;C;1前言本次课程设计的目的是设计一个简单的个人话费管理系统,使用户随时了解 自己的话费支出,并及时根据系统统计的数据对以后的使用进行调整。难度为三 颗星,并且要求具有以下基本功能:1、输入记录功能(从键盘输入:各次交费金额,各次呼出电话号码、日期、时 间长短、长途与否。设长途每分钟1元,短途每分钟0.3元)2、统计余额、各次呼出电话金额。3、统计长话总金额、短话总金额。4、排序功能(按时间长短,显示各次呼出的电话号码)。5、查

3、询呼叫某电话的次数。6、增加记录、删除记录、修改记录功能。7、统计结果保存在文本文件中。8、从文本文件中读取数据、显示。针对题目的各项要求,我运用c语言工具在VC6.0的环境中,通过结构体数组、 文件的打开与关闭、循环、函数调用等C语言常用方法的使用逐步解决了这些问 题,编写出了一个满足要求的简单系统。2设计分析根据题目的要求,从输入记录这项功能可以知道,应该要定义一个结构体包 含所有要输入的信息,并且为了方便起见,将需要求的余额等数值也包含在结构 体内,由于记录的数据需要保存,所以系统中将用到文件的打闭、读写等功能。 该系统提供到了多项功能,于是考虑用一个switch语句,而控制该语句开关的

4、 值从调用函数中返回。其中需要注意的问题有:为了使源代码清晰明了,所有的函数不采取嵌套的 用法,而是对每个功能都编写一个实现的函数,然后通过调用来达到题目要求。 另外一个值得注意的是电话号码以及日期的定义只能是字符数组,因为他们的第 一个数都有为0的可能。3实现方法本程序通过C语言来实现,在vc6. 0下运行通过。3.1函数功能介绍3.1.1定义一个信息结构体数组,方便对多条记录进行处理struct typelchar no15;float money;char date 10;float time;float leftlong,leftshort;int a;HSIZE;/*定义一个结构体数

5、组*/上述结构体中定义的量一次为:所拨出的号码、各次所交话费金额、缴费日 期、每次通话时间、长途总金额、短途总金额以及长短途的区分(长途用1表示, 短途用0)o3. 1. 2函数功能描述1 int nenu_select()打印输出主菜单和功能选择,并将选择值返回到主函 数;2 void siter()输入记录并保存;3 void leavings ()计算当前总余额;4 void costs ()求通话所用金额和长短途所用金额总计;5 void times () 求所查询的号码的呼叫次数;6 void append ()增加记录的实现;7 void del () 删除记录功能的实现;8 vo

6、id correct () 更正记录;3.2函数功能实现3.2.1源码分析/*I/0 函数*/*其它说明*/*字符串函数*/*宏定义*/程序预处理: include stdio. h include stdlib. h include string, h define SIZE 1003. 2. 2主函数void main ()FILE *fp; /*定义一个文件指针,用于文件的开闭和读写*/int i, j;i=0;if (fp=fopen(jilu. txt, r)=NULL)/*打开文件并判断是否有记录*/printf(无任何记录,请输入要记录的条数:”); scanf(%d, &m);

7、elsewh订e (! feof (fp)/*当有记录的时候就读入记录*/fread(&Hi, sizeof (struet typel),1,fp);i+;fclose (fp);m=i-l;if (!m)/*当 m二0 的时候*/printf (zz无任何记录,请输入要记录的条数:“); scanf (d,&m);else printf (nn 已有 %d 条记录! n);get char ();system(zzclsz,) ;/*c语言的清屏函数*/for(; ;)/*无限循环进行功能选择*/switch (menu_select ()case 1: enter () ; break;

8、case 2:leavings();break;case 3:costs();break;case 4:sort();break;case 5:times();break;case 6:append();break;case 7:del () ;break;case 8:correct() ;break;case 9:exit (0);/*此语句相当于一个调用函数的开关*/ get char ();system(cls);3. 2. 3被调用函数int iwnu_select() /*菜单函数*/菜单char *menu=1.读入记录并保存2.总余额3.电话金额统计(各次金额、长话总金额、短话

9、总金额)4.排序功能(按时间长短,显示各次呼出的电话号码)5.查询呼叫某电话的次数6.增加记录7.删除记录&修改记录9.退出/*以上为菜单目录的制定*/ int i,c;for(i=0;ill;i+)printf(n%snn,menui);/*输出菜单*/doprintf(Enter you choice(l9):n”); scanf(%d,&c); system(cls);while(c9);return c;/*输入要实现的功能的选项并将其作为返回值带入主函数*/void siter()/*输入记录并保存功能*/FILE *f); /*定义文件指针*/int i;printf( *请输入1

10、1位的手机号码*n);for(i=0;im;i+)printf(输入通话的电话号码:);scanf(%s,Hi.no);if(strlen(Hi.no) !=11)printf(”sorry!请重新输入n”);i=i-1;continue;printf(n 缴费金额 scanf( %f,&Hi .money);printf(n 通话日期scanf(%s,Hi.date); printf(n 通话时长(分):”); scanf(%f,&Hi.time);printf(n 长途 1 或短途 0:”);scanf(%d,&Hi.a);/* 以上为输入记录*/if(Hi.a)Hi .leftlong=

11、Hi .time;Hi.leftshort=0;elseHi.leftlong=0; Hi.leftshort=Hi.time*0.3;/*判断长短途,并分别计算总时间*/if(fp=fopen(jilu.txt,w)=NULL)printf(cannot open filen);return;for(i=0;im;i+)if(fwrite (& Hi ,sizeof(stmct type l),l,fp)!=l) printf(nfile write errorn);fclose(fp);/*把数据写入文件*/void bavingsO/*计算当前总余额*/FILE *fpl,*fp2;in

12、t float f=0,t2=0;float盼SIZE;/*定义个余额数组*/float leavings=O;fp 1 =fopen(jilu .txt, r);for(i=0;im;i+)fread(&Hi ,sizeof(struct type 1),1,fpl); if(Hi .a= 1) leai =float(Hi.money-Hi .time);if(Hi.a=0) leai=float(Hi.money-Hi.time*0.3);leavings+=leai;fclose(fpl);/*从文件中读取记录并计算余额*/fp2=fopen(,jinge.txt,nw);fprint

13、f(fp2, %g,leavings);fclose(fp2);printf(”余额为%gnnnn,leavings); /*将得到的余额保存在另一个文件中 getchar();void costs()/*求通话所用金额和长短途所用金额总计*/FILE *fpl,*fp2;int float f=0,t2=0;float cost 1=0,cost0=0;float COST;fp 1 =fopen(jilu .txt, r);for(i=0;im;i+)fread (&Hi ,sizeof(struct type 1),1,fpl);costl +=Hi .leftlong;costO+=H

14、i .leftshort;fclose(fpl); /*读取数据并计算*/COST=cost 1 +costO;fp2=fopen(”jinge.txt”,”a”);fprintf(fp2,%g %g %g,costl,costO,COST);fclose(fp2);/*保存在另一个文件中*/printf(nnt长途通话费用合计t短途通话费用合计t总话费合计n); printf(t%gttt%gttt%gn,costl,costO,COST);getchar(); /*所求值求后输出*/void sort() /*实现排序功能的函数*/FILE *fp; int i,j,k;struct typel t;fp=fopen(jilu.txt,r);i=0;while(!feof(fp)fread(&Hi,size

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号