手机话费信息管理系统课程设计报告Word格式文档下载.docx
《手机话费信息管理系统课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《手机话费信息管理系统课程设计报告Word格式文档下载.docx(28页珍藏版)》请在冰点文库上搜索。
业务需求:
包含客户及用户对系统、产品的高层次的要求。
用户需求:
描述用户及客户必须要完成的任务。
功能需求:
定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
非功能需求:
作为功能需求的补充,软件规格说明书还应包括非功能需求,他描
3
述了系统展现给用户的行为和执行的操作等
系统描述
用户资料录入及存储。
分别录入到用户的个人信息和话费信息两个文件。
其次,制作更新操作包括插入、修改、删除、即用户话费的充值及使用过程。
如该用户话费达欠费底线,则停机。
然后作查询、统计、排序等操作。
最后输出报表。
建立一个小型的手机话费管理系统。
可以对手机的话费信息进行管理。
内容上,包括客户的信息和手机卡的信息两部分。
所需信息包括:
手机号码、姓名、性别、出生年月、预交款余额、手机卡的信息包括卡的名称、每分话费(包括本地每分话费、长途话费、国际话费)、短信息费、欠费底线。
数据以文件形式存放,分为用户个人信息和用户话费信息
产品功能
如图1-1所示,个主要功能部件及其联系,均在图中表示:
手机话费管理系统
查按插删录输询信入排统除入出
信息信信信信
排息息息序计息息序
按按
号号
删查除询
图1-1
4
功能要求
包括客户的信息和手机卡的信息两部分。
数据以文件形式存放,分为用户个人信息和用户话费信息。
首先,进行用户资料录入及存储。
最后输出报表
查询过程浏览过程:
(1)按姓名查找:
查询出错客户信息记录
姓名查询信息姓名录入系统客户姓名查询系统的数据
客户库
查询结果
(2)按手机号查询:
手机号查询信息手机号录入系统手机号查询系统的数据
5
更改信息
(1)删除信息
删除出错客户信息记录
手机号删除信息手机号录入系统手机号删除系统的数据
(2)增加信息
(3)
增加出错客户信息记录
手机号增加信息手机号录入系统手机号增加系统的数据
(3)更新信息
更新出错客户信息记录
手机号更新信息手机号录入系统手机号更新系统的数据
6
1.3总体设计
系统功能
1.客户
浏览功能:
输入正确信息后就可以浏览文档中存储的有关其手机卡和
自身的信息。
修改功能:
只要出示正确的身份信息就能更改手机卡的信息和自身的
相关信息也可以删除自己的信息
管理员2.
添加功能:
增加一个新客户的记录
修改某一已存在的记录内容
删除功能:
删除一个记录
性能需求
1.数据管理能力要求:
本系统需要管理的文卷和记录的个数有10-20
左右,对可预见的增长对手数据进行动态存储。
2.故障处理要求:
由于某种未知软件及硬件所引起的本系统无法正
常使用,可能会对使用该软件的管理员和客户产生一定的影响,
但由于其具有较好的可维护性,使得维护人员发现情况时,立即
更正,可在短时间内恢复其使用。
3.其他专门要求:
本系统具有较强的使用权限,使得本系统具有易
于维护,管理;
其用户界面要求为包括简洁、易用、易懂,美观、
标准,具备一定的兼容性;
软件质量要求为:
易用、健壮、兼容
性好、运行稳定、有一定安全保障。
第二章详细设计
7
2.1主要功能和算法设计
查询功能
功能:
完成查询功能。
性能:
响应时间控制在1~2秒内。
输入项目:
输入要查询的姓名或手机号
输出项目:
程序逻辑:
1.产生查询窗口;
2.若用户取消,则返回;
3.用户确认后按用户选择查询方式及关键字提交数据库查询,
获得查询结果;
4.产生查询结果项数,并等待用户确认;
5.若查询结果项数等于零,返回;
要插入的内容。
无。
1.产生插入窗口界面;
2.等待用户输入各项信息;
3.若用户取消,则返回;
4.如果用户确定,插入所要插入的内容
修改功能
完成修改功能。
要修改的数据。
1.产生修改窗口界面;
2.等待用户输入;
3.若取消,则返回;
4.如果用户确定,录入要修改的项;
5.修改该项内容;
删除功能
8
完成删除功能。
要删除的项。
1.产生删除窗口界面;
2.若取消,则返回;
3.如果用户确定,调用删除快捷模块;
4.从数据库中删除该记录;
算法设计
例如:
求所查询的号码的呼叫次数
voidtimes()//求所查询的号码的呼叫次数{
FILE*fp;
charnumber[15];
inti,j=0;
i=0;
fp=fopen("
jilu.txt"
"
r"
);
while(!
feof(fp))
{
fread(&
H[i],sizeof(structtype1),1,fp);
i++;
}//判断文件中记录有多少条
m=i-1;
fclose(fp);
printf("
输入你要查询的号码\n"
scanf("
%s"
number);
for(i=0;
i<
m;
i++)
if(strcmp(H[i].no,number)==0)j++;
\t拔打次数:
%d\t次\n"
j);
getchar();
9
}
2.2功能模块图
查删添退新找除加出建功功功系客能能能统户按按按按按姓输姓数输名入名字入查号和“号找码号0码
查码“创
找的退建
添出客
加户
方信
式息
2.3函数功能说明
10
函数功能说明:
(1)voidenter()//输入记录并保存;
输入11位的手机号码,缴费金额,通话日期,通话时长(分),长途1或短途0
(2)voidleavings()/*求总余额*/
(3)voidcosts()//求通话所用金额和长短途所用金额总计,将计算结果追加到文件中
(4)voidsort()/*排序*/根据时间长短排序
(5)voidtimes()//求所查询的号码的呼叫次数,判断文件中记录有多少条
(6)voidappend()/*增加记录的实现*/
(7)voiddel()/*删除记录*/
(8)voidcorrect()//更正记录
2.4主要流程图
主要功能
开始
输入录入条数
菜单界面
功能选择
退出系统
11
第三章测试计划
3.1主要功能实现
12
3.2系统测试
功能测试
1登录界面
2菜单界面3菜单功能“1”4菜单功能“3”
13
5菜单功能“5”
测试结果
该软件在各方面的综合能力都可以,通过~
总结心得
通过这次课程设计,我学习了算法设计、指针、数组、链表的实际应用,帮助我很好理解前段时间学习的c语言知识。
虽然编程比较艰苦,但我还是很好完成了课程设计,这对我以后的人生道路有很大影响。
通过这次课程设计,我学会了排版、截图以及深刻理解指针、数组这部分知识,对我以后学习c++、java等语言会有帮助。
致词
在此我要感谢我的指导老师薛颂东,薛老师严谨的教学态度、认真负责的教学作风让我很是感动。
真是因为他的耐心知道我才能完成这次课程设计,相信在薛老师的指引下我以后会在c语言编程方面有所作为。
参考文献
[1]谭浩强,《C++语言程序设计》,清华大学出版社
[2]谭浩强,《C程序设计》,清华大学出版社
[3]李春葆,尹为民,李蓉蓉,蒋晶,喻丹丹,安杨,《数据结构教程》,清华大学出版社[4]李丹程,刘莹,那俊,《C语言程序设计案例实践》,清华大学出版社[5]曹衍龙,林瑞仲,徐慧,《C语言实例解析精粹》,人民邮电出版社
14
附录1:
程序代码
#include"
stdio.h"
/*<
stdio.h>
只在标准库目录查找stdio.h
"
先在用户目录(.c的目录)查找stdio.h,再到标准库目录查找。
*/
stdlib.h"
/*清屏函数要用到的头文件*/
string.h"
#defineSIZE100
structtype1
charno[15];
floatmoney;
chardate[10];
floattime;
floatleftlong,leftshort;
inta;
}H[SIZE];
/*定义一个结构体,其中包括储存电话号码的整型数组no[15]、所缴金额money、缴费日期date[10]、
每次通话时间time、长途所用金额leftlong、短途所用金额leftshort以及长短途的区分a*/
intm;
/*全局变量表示一次操作的记录条数*/
intmenu_select()//打印输出主菜单和功能选择,并将选择值返回到主函数
char*menu[]=
{"
**************************菜单***************************"
*1.读入数据并保存
*"
15
*2.话费总余额*"
*3.话费金额统计(各次金额、长话总金
额、短话总金额)*"
*4.排序功能(按时间长短,显示各次呼
出的电话号码)*"
*5.查询呼叫某电话的次数*"
*6.增加记录*"
*7.删除记录*"
*8.修改记录*"
*9.退出*"
**************************************
*******************"
};
inti,c;
11;
%s\n"
menu[i]);
do
Enteryouchoice(1~9):
\n"
%d"
&
c);
system("
cls"
}while(c<
1||c>
9);
/*当输入的功能
选项不符合要求,即不在1到9之间时,
重新输入选项,
16
直到符合要求为止*/
returnc;
voidenter()//输入记录并保存
inti;
*请输入11位的手机号码*\n"
输入通话的电话号码:
"
H[i].no);
if(strlen(H[i].no)!
=11)
sorry!
请重新输入\n"
i=i-1;
continue;
\n缴费金额:
%f"
H[i].money);
\n通话日期:
H[i].date);
\n通话时长(分):
H[i].time);
\n长途1或短途0:
H[i].a);
if(H[i].a)
17
H[i].leftlong=H[i].time;
H[i].leftshort=0;
else
H[i].leftlong=0;
H[i].leftshort=H[i].time*0.3;
if((fp=fopen("
w"
))==NULL)
cannotopenfile\n"
return;
if(fwrite(&
H[i],sizeof(structtype1),1,fp)!
=1)
filewriteerror\n"
voidleavings()/*求总余额*/{
FILE*fp1,*fp2;
inti;
floatt1=0,t2=0;
floatlea[SIZE];
floatleavings=0;
fp1=fopen("
18
H[i],sizeof(structtype1),1,fp1);
if(H[i].a==1)
lea[i]=float(H[i].money-H[i].time);
if(H[i].a==0)
lea[i]=float(H[i].money-H[i].time*0.3);
leavings+=lea[i];
fclose(fp1);
fp2=fopen("
jinge.txt"
fprintf(fp2,"
%g"
leavings);
fclose(fp2);
余额为%g\n\n\n"
voidcosts()//求通话所用金额和长短途所用金额总计{
floatcost1=0,cost0=0;
floatCOST;
H[i],sizeof(struct
19
type1),1,fp1);
cost1+=H[i].leftlong;
cost0+=H[i].leftshort;
COST=cost1+cost0;
a"
/*将计算结果追加到文件中*/
%g%g%g"
cost1,cost0,COST
\n\n\t长途通话费用合计\t短途通话费用合计\t总话费合计\n"
\t%g\t\t\t%g\t\t\t%g\n"
cost1,c
ost0,COST);
voidsort()/*排序*/
inti,j,k;
structtype1t;
20
m-1;
k=i;
for(j=i+1;
j<
j++)
if(H[j].time<
H[k].time)k=j;
t=H[k];
H[k]=H[i];
H[i]=t;
}//根据时间长短排序
\t通话时间\t电话号码\n"
\t%g\t\t%s\n"
H[i].time,H[i].no
voidtimes()//求所查询的号码的呼叫次数
21
voidappend()/*增加记录的实现*/
FILE*