C++课程设计模拟电信计费
- 格式:doc
- 大小:1.64 MB
- 文档页数:31
c语言课程设计网吧计费一、教学目标本节课的教学目标是让学生掌握C语言编程的基本方法,通过编写“网吧计费”程序,理解函数的定义和调用,掌握if-else分支结构和循环结构的使用,从而培养学生的问题分析和解决能力。
1.理解函数的定义和调用;2.掌握if-else分支结构和循环结构的使用。
3.能够运用C语言编写简单的程序;4.能够独立完成“网吧计费”程序的编写。
情感态度价值观目标:1.培养学生对编程的兴趣和热情;2.培养学生解决问题的自信心和耐心。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言基础知识:介绍C语言的基本语法和数据类型。
2.函数的定义和调用:讲解函数的定义方法,如何调用函数,以及函数的参数传递。
3.if-else分支结构:讲解如何使用if-else语句进行条件判断,以及多分支结构的编写。
4.循环结构:讲解for循环和while循环的使用方法,以及循环控制语句break和continue。
5.“网吧计费”案例分析:分析计费规则,引导学生编写相应的程序。
三、教学方法为了达到本节课的教学目标,我们将采用以下几种教学方法:1.讲授法:讲解C语言的基本语法、数据类型、函数的定义和调用、if-else分支结构、循环结构等基础知识。
2.案例分析法:通过分析“网吧计费”案例,引导学生运用所学知识解决问题。
3.实验法:让学生动手编写“网吧计费”程序,巩固所学知识。
4.讨论法:在课堂上鼓励学生提问、讨论,解答学生在编程过程中遇到的问题。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》2.参考书:《C语言编程实例解析》3.多媒体资料:PPT课件、编程案例视频4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)5.网络资源:在线编程平台(如LeetCode、牛客网等)五、教学评估本节课的教学评估将采取多元化评价方式,全面客观地评价学生的学习成果。
3.8模拟电信计费系统的设计与实现3.8.1设计题目及要求模拟电信计费系统的设计与实现要求:(1)计费功能。
根据存放在源数据文件中的通话记录和长途费率文件对每一条通话记录计算其通话费用,并将结果保存在费用文件中。
其中:通话费的计算方法如下:通话费=长途电话费+本地电话费长途电话费=费率(元/分钟)×通话时长(分钟)(通话时长不满1分钟的按1分钟计算)本地电话费为:3分钟以内0.5元,以后每3分钟递增0.2元。
(2)话费查询。
输入一个电话号码,从费用文件中统计该电话号码的所有本地话费、长途话费,并从用户文件中查找其用户名,最后在屏幕上显示:用户名电话号码本地话费长途话费话费总计(3)话单查询。
输入一个电话号码,查询并在屏幕显示该用户的所有通话记录,格式为:用户名主叫电话号码被叫电话号码通话时长3.8.2设计思想及程序流程框图程序设计大致思路:1.本系统的输入输出文件本系统的输入文件有三个:(1)源数据文件(hd.dat)存放:主叫区号主叫电话号码被叫区号被叫电话号码通话时长(秒)每次通话作为一条记录,占源数据文件的一行。
每条记录中各数据之间以空格间隔,例如:025 ******** 010 ********90每个电话号码可以有多次通话记录。
如果主、被叫区号相同,则通话记录为本地通话记录;否则为长途通话记录。
(2)长话费率文件(fl.dat)存放:区号费率例如:010 1.20 表示从本地打往区号为010的地区每分钟收费1.20元。
(3)用户文件(yh.dat)存放:电话号码用户姓名例如: 83491234 张明本系统的输出文件有一个:费用文件(fy.dat)存放:主叫电话号码通话类型话费金额其中,通话类型表示本次通话是长途还是本地。
2.系统输入数据hd.dat—有20条通话记录,分别是:fl.dat 有4条记录025 ******** 025 ******** 70 010 1.20 025 ******** 010 ******** 236 020 1.20025 ******** 025 ******** 310 021 0.80025 ******** 0571 ******** 100 0571 1.00025 ******** 021 ******** 50025 ******** 025 ******** 80025 ******** 025 ******** 115 yh.dat有5条记录025 ******** 025 ******** 47 83491234 张明025 ******** 010 ******** 93 84927038 李小红025 ******** 010 ******** 792 87216340 王励025 ******** 0571 ******** 931 83492200 赵强025 ******** 025 ******** 580 58120321 杨冬025 ******** 025 ******** 358025 ******** 021 ******** 197025 ******** 025 ******** 256025 ******** 010 ******** 193025 ******** 025 ******** 320025 ******** 025 ******** 270025 ******** 025 ******** 231025 ******** 025 ******** 723.数据结构(可用C++实现)三个类:话单(callist)、费用(charge)和用户(user)两个常量:存放本地费率和递增量(1)话单类数据成员:主叫区号、主叫电话号码、被叫区号、被叫电话号码、通话时长数据类型属性(私有、保护、公有)方法:构造函数和析构函数从源数据文件读入通话数据显示一次通话数据取主叫区号取主叫电话号码等等(2)费用类——从话单类派生数据成员:通话类型、通话费用数据类型属性(私有、保护、公有)方法:构造函数和析构函数从费用文件读入费用数据向费用文件输出数据屏幕显示费用求通话费用求通话类型取(返回)通话类型取通话费用等等(3)用户类数据成员:姓名、电话号码数据类型属性(私有、保护、公有)方法:设置用户的电话号码查询用户名设置用户名查询用户的电话号码显示用户名和电话号码等等(1)话单类(CallList)class CallList{protected:char *ZCode; //主叫区号char *ZNum; //主叫号码char *BCode; //被叫区号char *BNum; //被叫号码int Time; //通话时长(秒)public:CallList(char *zcode=NULL,char *znum=NULL,char *bcode=NULL,char *bnum=NULL,int time=0);~CallList();void Set(char *zcode=NULL,char *znum=NULL,char *bcode=NULL,char *bnum=NULL,int time=0);void Print();char *getZC();char *getZN();char *getBC();char *getBN();int getTime();};(2)费用类(Charge)——从话单类派生class Charge:public CallList //公有继承{protected:int CallStyle; //为0时表示本地通话,为1时表示长途通话float Expense; //话费public:Charge(char *zcode=NULL,char *znum=NULL,char *bcode=NULL, char *bnum=NULL,int time=0,int callstyle=0,float exp=0);void Set(char *zcode=NULL,char *znum=NULL,char *bcode=NULL,char *bnum=NULL,int time=0);void ComputeSty();int GetStyle();float GetExp();void PrintExp();};(3)用户类(Consumer)class Consumer{protected:char *Name; //用户姓名char *Num; //用户电话号码public:Consumer(char *name=NULL,char *num=NULL);~Consumer();void SetName(char *name=NULL);void SetNum(char *num=NULL);char *GetName();char *GetNum();void Print();};(4)费率类(Rate)class Rate{protected:char *Code; //区号float rate; //费率public:Rate(char *code=NULL,float rat=0);~Rate();void Set(char *code=NULL,float ra=0);char *GetCode();float GetRate();void printRate();};根据自顶向下,逐步细化的程序设计思想,考虑将程序分为五大模块:文件导入模块,话费计算模块,文件导出模块,查询模块以及确认退出模块。
课程设计设计题目:C++程序设计课程设计模拟电信计费课程设计任务书课程设计题目:模拟电信计费一、课程设计的原始资料及依据查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的管理系统。
通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求设计内容:假设电信计费标准:固定电话长途话费0.02元/秒,固定电话本地话费0.06元/分,无线电话长途话费1.00元/分,无线电话本地话费0.60元/分,无线电话接听话费0.50元/分。
在源数据文件中存放:电话号码,电信服务类别,通话时间(秒)。
根据源数据文件生成如下列表:固定长途电话:长途电话号码和通话时间。
固定本地电话:本地电话号码和通话时间。
无线长途电话:长途电话号码和通话时间。
无线本地电话:本地电话号码和通话时间。
无线接听电话:接听电话号码和通话时间。
统计电信费用:电话号码、累计电信费用。
(根据自己的任务填写内容)设计要求:(1)要求在设计的过程中建立清晰的类层次,并画出类图;(2) 设计功能满足要求、易于操作的友好界面;(3) 在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;(4) 在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
电信计费模拟实现(C语⾔)..程序设计报告( 2012 / 2013 学年第⼆学期)题⽬:电信计费模拟实现专业通信⼯程学⽣姓名班级学号指导教师郭剑指导单位计算机软件教学中⼼⽇期 2013年6⽉27⽇电信计费模拟实现⼀、课题内容和要求电信计费系统主要负责对电信各类客户每⽉帐单统计、查询、备份等管理⼯作。
本课题以该系统要求编写⼀个程序,实现对电信计费的模拟。
通过此可以,熟练掌握⽂件读写、函数调⽤等知识,以及查找、典型算法的设计与应⽤。
⼆、需求分析功能框架图:(见图1)图1(1)提供可操作的主菜单:输出个菜单,⽤于显⽰以从⽂件中加载的总客户信息和若⼲个可选的功能选项。
根据客户输⼊的选项来运⾏不同的功能,运⾏不同的函数。
(2)进⾏⽂本信息的载⼊:从指定的⽂件中以链表形式加载所需的客户信息。
这⾥的⽂件是在编译时就已经指定好的、存在的⽂本,需设计者预先⾃⼰建⽴好。
(3)查找客户功能:以客户输⼊的电话号码进⾏查找对应的客户信息并将它们输出。
(4)对现有信息的保存:保存内存中的最新的记录输出到磁盘⽂件中。
这⾥默认的是保存到原读取⽂件中并覆盖原来的信息。
(5)将信息备份到另外的⼀个⽂本中:通过⽂件格式读写函数,将源⽂件信息写到客户提供的⽬标⽂件中。
(6)分类合计功能:客户话费⼩计、长话费⼩计、通话费合计、客户帐单数量。
三、概要设计1 主要结构体:ishi,hd[j].zhongzhi);if((t-(int)t)>0) t=(int)t+1;else t=(int)t;if(hd[j].number2[0]=='0')changtuhf+=d*t;elseshineihf+=c*t;}}sum=a+num1+shineihf+changtuhf;fprintf(fp3,"%-10s%-6s%-10s%-10d%-10d%-15lf%-15lf%-15lf\n",yhzl[i].phone,yhzl[i].name1,yhzl[i].name2,a,num1,shineihf,changtuhf,sum);rewind(fp1);changtuhf=,shineihf=,sum=;}fclose(fp1);fclose(fp2);fclose(fp3);}void menu(){printf("*****************************************************************************\n") ;printf("请选择需要的服务:\n");printf("************************************************************************* ****\n");printf("1-通话记录显⽰ \n");printf("2-详细话费 \n");printf("3-保存话费 \n");printf("4-检测通话时长异常 \n");printf("0-退出 \n");printf("************************************************************************* ****\n");}void jilu(char phone1[]) xt","r");if(!tt){printf("file cannot be opened");exit(0);}fscanf(tt,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);while(!feof(tt)){if(strcmp(hd[i].number1,phone1)==0)fprintf(stdout,"%-10s%-10s%-20s%-20s\n",hd[i].number1,hd[i].number2,hd[i].qishi,h d[i].zhongzhi); i++;fscanf(tt,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);}fclose(tt);}void xiangxi(char phone1[]) xt","r");if(!ss){printf("file cannot be opened");exit(0);}fscanf(ss,"%s%s%s%d%d%lf%lf%lf",&hfd[i].haoma,&hfd[i].xingming1,&hfd[i].xingming2,&hfd[i] .y,&hfd[i].g,&hfd[i].shinei,&hfd[i].changtu,&hfd[i].zonghe);while(!feof(ss)){if(strcmp(hfd[i].haoma,phone1)==0){printf(" ⽤户号码⽤户姓名⽉租费功能费市话费长途费合计\n ");printf("%-10s%-6s%-10s%-10d%-10d%%%\n",hfd[i].haoma,hfd[i].xingming1,hfd[i].xingming2,hfd [i].y,hfd[i].g,hfd[i].shinei,hfd[i].changtu,hfd[i].zonghe);break;}elsefscanf(ss,"%s%s%s%d%d%lf%lf%lf",&hfd[i].haoma,&hfd[i].xingming1,&hfd[i].xingming2,&hfd[i] .y,&hfd[i].g,&hfd[i].shinei,&hfd[i].changtu,&hfd[i].zonghe);}fclose(ss);}void savefile(char phone1[]) xt","r");p=fopen("D:\\话单保存.txt","w");if(!q){printf("file cannot be opened");exit(0);}if(!p){printf("file cannot be opened");while(!feof(q)){if(strcmp(hd[i].number1,phone1)==0)fprintf(p,"%-10s%-10s%-20s%-10s\n",hd[i].number1,hd[i].number2,hd[i].qishi,hd[i]. zhongzhi);i++;fscanf(q,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);}printf("您的话单已保存于D盘");fclose(q);fclose(p);}void check(char phone1[]) xt","r");p2=fopen("D:\\ 话单异常.txt","w");if(!p1){printf("file cannot be opened");exit(0);}if(!p2){printf("file cannot be opened");exit(0);}fscanf(p1,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);while(!feof(p1)){t=shijian(hd[i].qishi,hd[i].zhongzhi);if(t>4320){fprintf(p2,"%-10s%-10s%-20s%-10s\n",hd[i].number1,hd[i].number2,hd[i].qishi,hd[i].zho ngzhi);if(strcmp(phone1,hd[i].number1)==0)printf("您的异常通话时长话单为:\n%-10s%-10s%-20s%-10s\n",hd[i].number1,hd[i].number2,hd[i].qishi,hd[i].zhongzhi); }}i++;}fclose(p1);fclose(p2);}double shijian(char kt[],char jt[]){int tyear,tmonth,tday,thour,tminute,ts;int kyear,kmonth,year,month;double t,t1;tyear=(jt[0]-kt[0])*1000+(jt[1]-kt[1])*100+(jt[2]-kt[2])*10+(jt[3]-kt[3]);tmonth=(jt[4]-kt[4])*10+(jt[5]-kt[5]);tday=(jt[6]-kt[6])*10+(jt[7]-kt[7]);thour=(jt[8]-kt[8])*10+(jt[9]-kt[9]);tminute=(jt[10]-kt[10])*10+(jt[11]-kt[11]);ts=(jt[12]-kt[12])*10+(jt[13]-kt[13]);kyear=kt[0]*1000+kt[1]*100+kt[2]*10+kt[3];if(kyear%4==0&&kyear%100!=0||kyear%400==0)year=tyear*527040;elseyear=tyear*525600;kmonth=(kt[6]-48)*10+(kt[7]-48);switch(tmonth){case -11: if(kyear%4==0&&kyear%100!=0||kyear%400==0) month=-335; else month=-334; break;case 0: month=0; break;case 1: month=kmonth; break;default: break;}t1=year+month*1440+tday*1440+thour*60+tminute+ts/;t=t1;return t; //返回值:单次通话时间}五、测试数据及其结果分析(1)主菜单:图6(2)主要操作图7(3)主要功能图8(4)输出的所有话单记录⽂件图9(5)输出账单⽂件图10(6)退出系统输⼊0或当出现“是否继续”时输⼊N图11结果分析:1)在输⼊菜单选项时如果输⼊的内容不是0-4之间的数字,⽽是其他数字,系统将显⽰“不可⽤,是否继续”,等待下次正确的输⼊。
程序设计报告( / 学年第学期)题目:很简易电信计费模拟系统专业学生姓名班级学号指导教师指导单位日期四、源程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>int denglu();int caidan1(); //管理员菜单int caidan2(); //用户菜单int add(); //管理员菜单中的添加用户功能函数int delet(); //管理员菜单中的删除用户功能函数int change(); //管理员菜单中的修改用户功能函数int search(); //管理员菜单中的查询用户功能函数int chahuafei(); //用户菜单中的查话费功能函数int chahuadan(); //用户菜单中的查话单功能函数int i; // 用于确定是哪个用户int q; // 用于确定是管理员还是用户int n=0; //用于管理员和用户返回登录页面int ww=0; //用于管理员返回管理员菜单int gg=0; //用于用户返回用户菜单int k=2; //用户信息有两条int w=6; //通话记录有条double ben[10]; //用于统计各用户本地话费double chang[10]; //用于统计各用户长途话费double sum[10]; //用于统计各用户总话费char namex[10];char passwordx[7];char numberx[8];struct gerenxinxi //用户信息{char name[10];char password[7];char number[8];double bendi;double changtu;double sum;};struct tonghuajilu // 通话记录{char name[10];char zhujiao[8];char beijiao[8];double time;int type; // 1表示本地,表示长途};struct feiyong //每条通话记录的费用{char number[8];double bendi;double changtu;double sum;};struct gerenxinxi aaa[10]={ //初始化两个用户的个人信息{"mike","000000","1234560"},{"james","000001","1234561"}};char gname[10]= "jack";char gpassword[7]= "111111" ; //初始化管理员的信息struct tonghuajilu bbb[10]={{"mike","1234560","1000000",100.0,1},{"james" ,"1234561","1000001",12.0,1}, //初始化前条通话记录{"james" ,"1234561","1000001",12.0,1},{"mike" ,"1234560","1000001",100.0,1},{"mike","1234560","1000002",30.0,2},{"james","1234561","1000003",14.0,2}};struct feiyong ccc[10];int main(){int x,t,y;for(x=0;x<w;x++) //求ccc[]的值{strcpy(&ccc[x].number,&bbb[x].zhujiao);switch(bbb[x].type){case 1:{if(bbb[x].time<=3)ccc[x].bendi=0.2;elseccc[x].bendi= (bbb[x].time-3)*0.1+0.2;};break;case 2:{ccc[x].changtu=bbb[x].time*2.0; //设长途费率元/分};break;}ccc[x].sum=ccc[x].bendi+ccc[x].changtu;}for(t=0;t<k;t++) //求各用户的各费用{for(y=0;y<w;y++){if(strcmp(aaa[t].number,ccc[y].number)==0){ben[t]=ben[t]+ccc[y].bendi;chang[t]=chang[t]+ccc[y].changtu;sum[t]=ben[t]+chang[t];}}}do{n=0;denglu(); //登录函数,n用于返回登录页面}while(n);}int denglu(){int a=1;int b=1;int m=1;int l=1;system("cls");printf("=========欢迎登录=========\n"); printf("请选择身份登录:______管理员;______普通用户\n"); printf("请输入:");scanf("%d",&q);while(l){if(q!=1&&q!=2){printf("error!\n");printf("请输入:");scanf("%d",&q);}elsel=0;}if(q==1){printf("请输入管理员您的名字: ");scanf("%s",namex);while(a){if (strcmp(namex,gname)!=0){printf("error!\n");printf("请输入管理员您的名字: ");scanf("%s",namex);}elsea=0;}printf("请输入密码: ");scanf("%s",passwordx);while(b){if (strcmp(passwordx,gpassword)!=0){printf("error!\n");printf("请输入密码: ");scanf("%s",passwordx);}elseb=0;}printf("恭喜管理员登录成功!\n");do{ww=0;caidan1();}while(ww);}else if(q==2){do{gg=0;caidan2(); //进入用户菜单}while(gg);}}int caidan1() //管理员菜单{int z,qq;int y=1;system("cls");printf("============您好** 管理员============\n");printf("1----增加用户\n");printf("2----删除用户\n");printf("3----修改用户\n");printf("4----查询用户\n");printf("0----返回登陆页面\n");printf("请输入: ");scanf("%d",&z);while(y){if(z!=0&&z!=1&&z!=2&&z!=3&&z!=4){printf("error!\n");printf("请输入: ");scanf("%d",&z);}elsey=0;}switch(z){case 1:{add();printf("按返回管理员菜单:");scanf("%d",&qq);if(qq==1)ww=1;};break;case 2:{delet();printf("按返回管理员菜单:");scanf("%d",&qq);if(qq==2)ww=1;};break;case 3:{change();printf("按返回管理员菜单:");scanf("%d",&qq);if(qq==3)ww=1;};break;case 4:{search();printf("按返回管理员菜单:");scanf("%d",&qq);if(qq==4)ww=1;};break;case 0: n=1 ;break;}}int caidan2() //用户菜单{int p;int c=1;system("cls");printf("=================欢迎尊敬的用户!===============\n");printf("1----查询费用\n");printf("2----查询话单\n");printf("0----返回登陆页面\n");printf("请选择: ");scanf("%d",&p);while(c){if(p!=0&&p!=1&&p!=2){printf("error!\n");printf("请选择: ");scanf("%d",&p);}elsec=0;}if(p==1)chahuafei();else if(p==2)chahuadan();else if(p==0)n=1;}int add() //管理员菜单中的添加用户功能函数{printf("=========请输入用户信息============\n");printf("请输入用户姓名: ");scanf("%s",&aaa[k].name);printf("\n请输入用户密码: ");scanf("%s",&aaa[k].password);printf("\n请输入用户电话号码: ");scanf("%s",&aaa[k].number);printf("添加成功!");k++;}int delet() //管理员菜单中的删除用户功能函数{char deletnumber[8];int h,g;printf("========删除用户信息========\n");printf("请输入要删除用户的电话号码: \n");scanf("%s",deletnumber);for(h=0;h<k;h++){if(strcmp(deletnumber,aaa[h].number)==0)break;}for(g=h;g<k-1;g++){aaa[g]=aaa[g+1];}k--;printf("删除成功!");}int change() //管理员菜单中的修改用户功能函数{char changenumber[8];int h;printf("========修改用户信息========\n");printf("请输入要修改用户的电话号码: ");scanf("%s",changenumber);for(h=0;h<k;h++){if(strcmp(changenumber,aaa[h].number)==0)break;}printf("请输入修改后密码:");scanf("%s",aaa[h].password);printf("修改成功!");}int search() //管理员菜单中的查询用户功能函数{char searchnumber[8];int h;printf("========查询用户信息========\n");printf("请输入要查询用户的电话号码: ");scanf("%s",searchnumber);for(h=0;h<k;h++){if(strcmp(searchnumber,aaa[h].number)==0)break;}if(h!=k){printf("用户名电话号码 \n");printf("%s\t%s\n",aaa[h].name,aaa[h].number);}elseprintf("不存在该用户!\n");}int chahuafei() //用户菜单中的查话费功能函数{int o,v;int d=1;int e=1;int i=1000;printf("请输入电话号码: ");scanf("%s",numberx);while(d){for(o=0;o<k;o++){if (strcmp(numberx,aaa[o].number)==0)i=o;}if(i==1000){printf("error!\n");printf("请输入电话号码: ");scanf("%s",numberx);}elsed=0;}printf("请输入密码: ");scanf("%s",passwordx);while(e){if (strcmp(passwordx,aaa[i].password)!=0){printf("error!\n");printf("请输入密码: ");scanf("%s",passwordx);}elsee=0;}printf("用户名电话号码本地话费长途话费话费总计\n " );printf("%s\t\t%s\t\t%.1f\t\t%.1f\t\t%.1f",aaa[i].name,aaa[i].number,ben[i],chang[i],s um[i]);printf("\n按返回用户页面:");scanf("%d",&v);if(v==1)gg=1;}int chahuadan() //用户菜单中的查话单功能函数{int o,r,xx;int d=1;int e=1;int i=1000;printf("请输入电话号码: ");scanf("%s",numberx);while(d){for(o=0;o<k;o++){if (strcmp(numberx,aaa[o].number)==0)i=o;}if(i==1000){printf("error!\n");printf("请输入电话号码: ");scanf("%s",numberx);}elsed=0;}printf("请输入密码: ");scanf("%s",passwordx);while(e){if (strcmp(passwordx,aaa[i].password)!=0){printf("error!\n");printf("请输入密码: ");scanf("%s",passwordx);}elsee=0;}printf("用户名主叫电话号码被叫电话号码通话时长\n");for(xx=0;xx<w;xx++){if(strcmp(aaa[i].number,bbb[xx].zhujiao)==0)printf("%s\t\t%s\t\t\t%s\t\t\t%.1f\n",bbb[xx].name,bbb[xx].zhujiao,bbb[xx].beijiao,bb b[xx].time);}printf("\n按返回用户页面:");scanf("%d",&r);if(r==1)gg=1;}五、测试数据及其结果分析进入登录页面。
会员计费系统c课课程设计一、教学目标本课程旨在通过会员计费系统的设计与实现,让学生掌握基本的编程技能,理解软件工程的基本原理,培养学生的实际动手能力和问题解决能力。
同时,通过课程的学习,使学生树立正确的软件开发观念,增强团队合作意识,提升创新思维和批判性思维能力。
二、教学内容教学内容主要包括会员计费系统的设计与实现,涵盖需求分析、系统设计、编码实现、测试等环节。
具体内容包括:1.会员计费系统的基本概念和架构;2.数据库的设计与实现,包括数据表的创建、查询和更新;3.会员管理模块的设计与实现,包括会员注册、登录、信息管理等;4.计费模块的设计与实现,包括费用计算、充值、消费等;5.系统测试与优化。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。
在教学过程中,教师将结合实际案例进行讲解,引导学生通过实验和项目实践来巩固知识,提高技能。
同时,鼓励学生进行小组讨论和团队合作,培养学生的沟通能力和团队协作能力。
四、教学资源教学资源包括教材、实验设备、多媒体资料等。
教材选用《会员计费系统设计与实现》一书,实验设备包括计算机、网络设备等,多媒体资料包括教学PPT、视频教程等。
此外,还将提供在线编程平台和调试工具,以便学生进行在线编程实践和交流。
五、教学评估本课程的教学评估将采取多元化方式进行,包括课堂表现、作业完成情况、阶段测试、项目实践和期末考试等。
评估内容覆盖课程的所有知识点,确保全面、公正地评价学生的学习成果。
具体评估方式如下:1.课堂表现:包括参与讨论、提出问题和回答问题等情况,占总评的10%。
2.作业完成情况:包括作业的质量和按时完成情况,占总评的20%。
3.阶段测试:包括对所学知识点的理解和应用能力,占总评的20%。
4.项目实践:包括项目的设计、实现和测试,占总评的30%。
5.期末考试:包括理论知识测试和实际编程能力测试,占总评的20%。
六、教学安排本课程的教学安排将分为16周进行,每周安排2课时。
#include<stdio.h>#include<time.h>#include<math.h>struct call1{int tel;time_t t1;time_t t2;double charge;double timedi;};struct call1 c1[50];struct call2{int tel;time_t t1;time_t t2;double charge;double timedi;};struct call2 c2[50];struct call3{int tel;time_t t1;time_t t2;double charge;double timedi;};struct call3 c3[50]; //先定义这个结构体,这个是系统的函数,就是取时间的。
struct income{int k;double time;double tincome;};struct income in[24];struct charge{int tel;char name[30];double timeloc;double timedom;double tcharge;};struct charge client[50];double charge1(time_t t1,time_t t2) {double t,charge,n;t=difftime(t2,t1);n=ceil(t/60);if(n<=3)charge=0.22;else charge=0.22+0.11*(n-3);return(charge);}double charge3(time_t t1,time_t t2) {float n,m;double t,charge;t=difftime(t1,t2);n=ceil(t/60);m=ceil(t/6);if(n<=3)charge=0.22+0.03*m;else charge=0.03*m+0.22+0.11*(n-3); return(charge);}void main(void){int r,s,tel,i=0,j=0,k=0;int holiday[7][2];time_t temp;double td;int x,y,h,temp1,l,u=0;int v,mon,d,q,m,n,t,f;int a1,a2,a3,b1,b2,b3;struct tm *star;double temp2,temp3;holiday[0][0]=1;holiday[0][1]=1; holiday[1][0]=3;holiday[1][1]=8; holiday[2][0]=5;holiday[2][1]=1; holiday[3][0]=5;holiday[3][1]=9; holiday[4][0]=7;holiday[4][1]=1; holiday[5][0]=8;holiday[5][1]=1; holiday[6][0]=10;holiday[6][1]=1; printf("\n 欢迎来到电话计费系统!!!"); printf("\n 请阅读以下:");while(q!=6){printf("\n 1:建立客户信息");printf("\n 2:打电话");printf("\n 3:电信公司统计的收入");printf("\n 4:序列的收入");printf("\n 5:打印客户费用:");printf("\n 6:离开!");printf("\n 你的选择:\n");scanf("%d",&q);if(q==1){for(x=0;x<50;x++){printf("\n 请输入你的电话号码");printf("\n 如果你想离开,请输入0 : ");scanf("%d",&l);if(l==0)break;client[x].tel=l;printf("\n 请输入客户姓名:");scanf("%s",client[x].name);}v=x;for(x=0;x<v;x++){printf("\n tel name");printf("\n%d %s",client[x].tel,client[x].name);}}if(q==2){printf("\n选择以下选项:");printf("\n1:本地城市:");printf("\n2:国内长途:");printf("\n3:IP:\n");scanf("%d",&r);if(r==0)break;if(r==1){ u=0;printf("\n输入电话号码:");scanf("%d",&tel);c1[i].tel=tel;printf("\n开始请输入4:");scanf("%d",&s);if(s==4){c1[i].t1=time(NULL); //令前面定义的t1取系统时间printf("\n结束请输入5:");scanf("%d",&s);if(s==5){c1[i].t2=time(NULL);td=difftime(c1[i].t2,c1[i].t1);c1[i].timedi=td;star=localtime(&c1[i].t1); //把这个改成日期取day用mday,就是月里的天数。
专业课程设计II报告(2015 / 2016 学年第一学期)题目:模拟电信计费管理系统专业计算机科学与技术学生姓名章慧班级学号B12040310指导教师黄睿指导单位计算机科学与技术系日期2016.1.4 - 2016.1.14指导教师成绩评定表模拟电信计费管理系统一、课题内容和要求完成模拟电信计费管理信息系统,基本功能包括:1、入库功能。
从本地选取原始话单文件(text格式),并将话单文件中数据输入话单数据库(表)。
2、计费功能。
根据1功能存放在话单数据库中的通话记录和数据库中已建好的长途费率表对每一条通话记录计算其通话费用,并将结果保存在已完成话单划价的费用表中。
3、话费查询。
输入一个电话号码,从费用表中统计该电话号码的所有本地话费、长途话费,并从用户表中查找其用户名,最后在屏幕上显示。
4、话单查询。
输入一个电话号码,从费用表中查询所有的通话记录并在屏幕显示该用户的所有通话记录。
5、数据管理功能。
系统能对相关数据进行增、删、改功能。
6、操作权限管理。
用户必须通过登录和权限审核才能操作上述相应功能。
二、需求和思路分析1、建立数据库telecom(借助于HeidiSQL工具),分别建立课题对应用到的数据库表通话记录表callrecord,长途费率表cost,费用表fee,用户电话表phone,登录操作表operater。
2、入库功能,通过html中<input id="" type="file" />标签让用户自行选择本地存放话单文件目录,后端通过对文件内容的解析组装成callrecord 对象,通过sql中insert语法插入到数据库callrecord表中。
3、计费功能,为保证数据库中每条通话记录的通话费用不重复,故计费功能与入库功能是同步进行的,及将2功能中解析组装成的对象直接与从cost 费率表中取得的费率根据calltype属性进行配对相乘放入fee费用表中。