上网计费系统模拟.docx
《上网计费系统模拟.docx》由会员分享,可在线阅读,更多相关《上网计费系统模拟.docx(23页珍藏版)》请在冰豆网上搜索。
上网计费系统模拟
程序设计题2:
学号:
姓名:
班级:
一.设计题目及目标
二.需求分析
三.概要设计
1.方案设计
2.系统功能
四.设计内容
1.功能结构图
2.程序流程图
3.系统实现(源代码)
4.运行截图
五.设计总结及心得体会
六.设备及环境
一.设计题目及目标
1.题目:
目标:
本程序模拟根据上网清单、客户资料等生成客户上网账单的过程,本程序模拟根据上网清单、客户资料等生成客户上网账单的过程,该系统主要功能包括:
促销信息、待购信息的新增、删除、修改、查找等。
所有数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法的应用。
要求编写一个程序,实现对上网费用的计算。
二.需求分析
代码要求能提供以下几个基本功能:
1.文件管理和存储
1)用户资料文件:
存放用户名,用户账号以及计费方式
2)上网记录文件:
存放所有用户的上网记录,内容包括用户帐号、上网起始时间和上网终止时间。
2.功能要求
1)用户资料文件由程序设计人员预先从键盘上录入,用户资料文件中的数据记录不得少于15条。
2)上网记录文件中的数据记录不得少于150条,首先录入一些上网记录信息,必须有跨年、跨月份的上网记录。
3)用户资料文件及上网记录文件中的数据可随时增加或减少,程序不应进行限制或限定。
4)对上网费用进行计算。
首先由操作人员输入年份和月,然后由程序计算该月份所有用户的上网费用并输出账单信息到指定文件夹。
*3.选做要求:
(1)随机生成一批上网记录信息,并判断是否正确,不正确的信息剔除。
(2)设计用户可能需要的报表,或者建议该系统中还需要采集哪些信息,以便更好的提供用户需要的信息。
三.概要设计
由于系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计:
采用自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计。
并在界面、功能和健壮性方面进行一些创新设计。
1)信息录入模块:
用户资料录入
(1)输入用户数量
(2)输入用户名字
(3)输入用户id
(4)输入资费类别
2)资费查询:
根据用户姓名查询用户资费
3)生成报表
(1)打印用户信息报表
(2)打印资费信息报表
#include
intnum=0;
typedefstructuser
{
charname[20];
charid[20];
intlb;
}User;
Useru[20];
typedefstructxinxi
charkaishi[20];
charjieshu[20];
}x;
xmes[100];
voidmenu()
printf("\t欢迎使用上网计费系统\n");
printf("\t1:
用户资料录入\n");
printf("\t2:
资费查询\n");
printf("\t3:
报表生成\n");
}
intinput(Useru[])
printf("请输入用户数量:
");
intnum;
scanf("%d",&num);
for(inti=0;i{printf("请输入用户名字:");scanf("%s",u[i].name);printf("请输入用户ID:");scanf("%s",u[i].id);printf("请输入用户资费类别:");scanf("%d",&u[i].lb);}returnnum;}voidluru(){FILE*fp=fopen("xinxi.txt","r");for(inti=0;i<3;i++){fscanf(fp,"%s%s%s",&mes[i].id,&mes[i].kaishi,&mes[i].jieshu);}fclose(fp);for(inti=0;i<3;i++){if(mes[i].id){printf("%s%s%s\n",mes[i].id,mes[i].kaishi,mes[i].jieshu);}}}doublegetnian(chara[]){doublenian=1000*(a[0]-'0')+100*(a[1]-'0')+10*(a[2]-'0')+(a[3]-'0');returnnian;}intgetyue(chara[]){intyue=10*(a[4]-'0')+(a[5]-'0');returnyue;}doublegetri(chara[]){doubleri=10*(a[6]-'0')+(a[7]-'0');returnri;}doublegetshi(chara[]){doubleshi=10*(a[8]-'0')+(a[9]-'0');returnshi;}doublegetfen(chara[]){doublefen=10*(a[10]-'0')+(a[11]-'0');returnfen;}doublegetmiao(chara[]){doublemiao=10*(a[12]-'0')+(a[13]-'0');returnmiao;}doublefeiyong(inttemp,charid[]){intprice=0;if(temp==0){for(inti=0;i<100;i++){if(strcmp(id,mes[i].id)==0){if(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)==getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)==getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)==getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!=getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*0.03*60*60;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)!=getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!=getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){if(int(getyue(mes[i].kaishi)%4==0)&&(int(getyue(mes[i].kaishi))%100!=0)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*0.03*60*60+(28-getyue(mes[i].kaishi)*0.03*60*60*60);}else{price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*0.03*60*60+(30-getyue(mes[i].kaishi)*0.03*60*60*60);}}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)!=getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!=getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*0.03*60*60+(30-getyue(mes[i].kaishi)*0.03*60*60*60);}}}returnprice;}elseif(temp==1){for(inti=0;i<100;i++){if(strcmp(id,mes[i].id)==0){if(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)==getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)==getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)==getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi));}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!=getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*60*60;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)!=getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!=getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){if(int(getyue(mes[i].kaishi)%4==0)&&(int(getyue(mes[i].kaishi))%100!=0)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*60*60+(28-getyue(mes[i].kaishi)*60*60*60);}else{price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*60*60+(30-getyue(mes[i].kaishi)*60*60*60);}}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)!=getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!=getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*60*60+(30-getyue(mes[i].kaishi)*60*60*60);}}}return50+(price-30)*0.03;}elseif(temp==2){for(inti=0;i<100;i++){if(strcmp(id,mes[i].id)==0){if(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)==getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)==getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!=getmiao(mes[i].jieshu)){price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60;}elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].ka
printf("请输入用户名字:
");scanf("%s",u[i].name);
printf("请输入用户ID:
");scanf("%s",u[i].id);
printf("请输入用户资费类别:
");scanf("%d",&u[i].lb);
returnnum;
voidluru()
FILE*fp=fopen("xinxi.txt","r");
for(inti=0;i<3;i++)
fscanf(fp,"%s%s%s",&mes[i].id,&mes[i].kaishi,&mes[i].jieshu);
fclose(fp);
if(mes[i].id)
printf("%s%s%s\n",mes[i].id,mes[i].kaishi,mes[i].jieshu);
doublegetnian(chara[])
doublenian=1000*(a[0]-'0')+100*(a[1]-'0')+10*(a[2]-'0')+(a[3]-'0');
returnnian;
intgetyue(chara[])
intyue=10*(a[4]-'0')+(a[5]-'0');
returnyue;
doublegetri(chara[])
doubleri=10*(a[6]-'0')+(a[7]-'0');
returnri;
doublegetshi(chara[])
doubleshi=10*(a[8]-'0')+(a[9]-'0');
returnshi;
doublegetfen(chara[])
doublefen=10*(a[10]-'0')+(a[11]-'0');
returnfen;
doublegetmiao(chara[])
doublemiao=10*(a[12]-'0')+(a[13]-'0');
returnmiao;
doublefeiyong(inttemp,charid[])
intprice=0;
if(temp==0)
for(inti=0;i<100;i++)
if(strcmp(id,mes[i].id)==0)
if(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)==getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)==getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!
=getmiao(mes[i].jieshu))
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60;
elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)==getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!
=getfen(mes[i].jieshu)&&getmiao(mes[i].kaishi)!
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03;
elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)==getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!
=getshi(mes[i].jieshu)&&getfen(mes[i].kaishi)!
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60;
elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!
=getri(mes[i].jieshu)&&getshi(mes[i].kaishi)!
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*0.03*60*60;
elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)!
=getyue(mes[i].jieshu)&&getri(mes[i].kaishi)!
if(int(getyue(mes[i].kaishi)%4==0)&&(int(getyue(mes[i].kaishi))%100!
=0))
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*0.03*60*60+(28-getyue(mes[i].kaishi)*0.03*60*60*60);
else
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))*0.03/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))*0.03+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*0.03*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*0.03*60*60+(30-getyue(mes[i].kaishi)*0.03*60*60*60);
returnprice;
elseif(temp==1)
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60;
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi));
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60;
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*60*60;
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*60*60+(28-getyue(mes[i].kaishi)*60*60*60);
price+=(getmiao(mes[i].jieshu)-getmiao(mes[i].kaishi))/60+(getfen(mes[i].jieshu)-getfen(mes[i].kaishi))+(getshi(mes[i].jieshu)-getshi(mes[i].kaishi))*60+(getri(mes[i].jieshu)-getri(mes[i].kaishi))*60*60+(30-getyue(mes[i].kaishi)*60*60*60);
return50+(price-30)*0.03;
elseif(temp==2)
elseif(getnian(mes[i].kaishi)==getnian(mes[i].jieshu)&&getyue(mes[i].kaishi)==getyue(mes[i].jieshu)&&getri(mes[i].ka
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1