C 课程设计模拟电信计费.
电信计费模拟实现(C语言)..
电信计费模拟实现(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课课程设计
会员计费系统c课课程设计一、教学目标本课程旨在通过会员计费系统的设计与实现,让学生掌握基本的编程技能,理解软件工程的基本原理,培养学生的实际动手能力和问题解决能力。
同时,通过课程的学习,使学生树立正确的软件开发观念,增强团队合作意识,提升创新思维和批判性思维能力。
二、教学内容教学内容主要包括会员计费系统的设计与实现,涵盖需求分析、系统设计、编码实现、测试等环节。
具体内容包括:1.会员计费系统的基本概念和架构;2.数据库的设计与实现,包括数据表的创建、查询和更新;3.会员管理模块的设计与实现,包括会员注册、登录、信息管理等;4.计费模块的设计与实现,包括费用计算、充值、消费等;5.系统测试与优化。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。
在教学过程中,教师将结合实际案例进行讲解,引导学生通过实验和项目实践来巩固知识,提高技能。
同时,鼓励学生进行小组讨论和团队合作,培养学生的沟通能力和团队协作能力。
四、教学资源教学资源包括教材、实验设备、多媒体资料等。
教材选用《会员计费系统设计与实现》一书,实验设备包括计算机、网络设备等,多媒体资料包括教学PPT、视频教程等。
此外,还将提供在线编程平台和调试工具,以便学生进行在线编程实践和交流。
五、教学评估本课程的教学评估将采取多元化方式进行,包括课堂表现、作业完成情况、阶段测试、项目实践和期末考试等。
评估内容覆盖课程的所有知识点,确保全面、公正地评价学生的学习成果。
具体评估方式如下:1.课堂表现:包括参与讨论、提出问题和回答问题等情况,占总评的10%。
2.作业完成情况:包括作业的质量和按时完成情况,占总评的20%。
3.阶段测试:包括对所学知识点的理解和应用能力,占总评的20%。
4.项目实践:包括项目的设计、实现和测试,占总评的30%。
5.期末考试:包括理论知识测试和实际编程能力测试,占总评的20%。
六、教学安排本课程的教学安排将分为16周进行,每周安排2课时。
C 全球通计费程序实验报告
}
fread.close(); cout<<"按任意键返回......"<<endl; getch(); Interface(); }
void VIP(){ system("cls"); int total=0;
11
北京理工大学珠海学院计算机学院课程设计
1.2 测试
输入: 13750076404 2014/06/21 1000 13750076404 2014/06/28 1000 13750076404 2014/06/29 500 账单查询界面:
VIP 资费查询界面
12
北京理工大学珠海学院计算机学院课程设计
10
北京理工大学珠海学院计算机学院课程设计
cout<<"基本套餐\t 商旅套餐\t 银卡服务\t 金卡服务(元)"<<endl; ifstream fread("C:\\Users\\omaps\\Desktop\\CallList.txt"); while(fread>>TelNum){
fread>>Time>>Duration>>cost; total+=Duration; } fread.close(); cout<<Cost(total)<<"\t\t"<<Bussiness(total)<<"\t\t"<<SilverCard(total)<<"\t\t"<< GoldCard(total)<<endl; cout<<"按任意键返回......"<<endl; getch(); Interface(); }
电信计费管理系统设计与实现设计
电信计费管理系统设计与实现设计电信计费管理系统设计与实现作者姓名:XXXX 专业班级:2005070302 指导教师:潘斌摘要随着我国电信业的迅猛发展,各项业务量快速增长,新的业务种类和新的服务形式不断推出,电信计费管理系统的重要性日益突出。
本文通过对电信计费的基本原理、实现流程等进行研究分析,完成了计费管理系统的总体规划、分析、设计、实现以及运行调试和评价,其中使用管理信息系统结构化开发方法完成系统分析与设计工作,使用UML建模的方法完成了系统的实现工作。
该系统基于B/S模式,以Oracle为后台数据库,用MyEclipse 6.5、Tomcat 6.0、PowerDesigner 12等工具进行开发。
系统后台数据库中通过存储过程和JOB定时器实时地对话单数据进行统计,并在前台使用JSP和AJAX技术实时展现统计数据。
该系统具有很好的实用性,可帮助相应工作人员方便地完成各种话单统计工作,提高工作效率。
关键词:计费管理系统;系统分析与设计;结构化方法;UML建模Design and Implementation of Telecom Billing Management SystemAbstract: In recent years, with the rapid development of China's telecom, the rapid growth of new business volume, types and new services. In order to make these continuously develop business to better development, the importance of the management system of telecommunication billing increasingly prominent. This thesis researches and analyses the fundamental principle, implement of bill system of telecom business. Its system planning, analysis, design, implementation, operation and evaluation have accomplished by the structured development method of management of information system, and UML modeling method. This system is based on B/S model, selecting MyEclipse6.5 Tomcat6.0, JDK6.7 and PowerDesigner12 as development tools with Oracle 10g for database of it. In front of the system use AJAX and JSP to show data, in the system of data stored in the backend database using real-time process and JOB timer for statistics bill data, so that relevant personnel can get real-time data. The system has good practicability; the system can make a convenience of the statistics of kinds of fee list for the telecom operators meanwhile can make a high efficiency for telecom staff.Keywords: Billing Management System; System Analysis and Design;Structured Method; UML Modeling.目录第1章前言 (1)第2章项目概述 (2)2.1. 项目开发背景 (2)2.2. 项目开发目的 (2)2.3. 项目开发方法 (3)第3章系统总体规划 (4)3.1. 系统初步调查 (4)3.2. 可行性分析 (4)3.3. 组织机构调查 (5)3.4. 系统逻辑业务规划 (6)3.5. 系统数据类规划 (6)3.6. 系统开发计划 (7)4.1. 系统详细调查 (9)4.2. 需求分析 (11)4.2.1. 系统面向的用户 (11)4.2.2. 系统管理员需求 (12)4.2.3. 资料管理员需求 (12)4.2.4. 查询统计管理员需求 (14)4.2.5. 告警处理员需求 (16)4.3. 业务流程分析 (16)4.4. 数据流程分析 (20)4.5. 数据字典 (24)4.6. 系统逻辑模型 (26)第5章系统设计 (27)5.1. 模块结构设计 (27)5.1.1. 系统管理模块结构 (27)5.1.2. 资料管理模块结构 (28)5.1.3. 查询统计管理模块结构 (28)5.1.4. 监控告警管理模块结构 (28)5.2. 代码设计 (30)5.3. 数据库设计 (31)5.3.1. 概念模型设计 (31)5.3.2. 逻辑模型设计 (34)5.3.3. 物理模型设计 (35)5.4. 人机界面设计 (39)5.4.1. 登录界面 (39)5.4.2. 系统管理主界面 (39)5.4.3. 资料管理主界面 (40)5.4.4. 查询统计管理主界面 (41)5.4.5. 监控告警管理主界面 (42)6.1. 计算机逻辑配置 (43)6.1.1. 计算机局域网络配置 (43)6.1.2. 计算机广域网络配置 (43)6.2. 系统实施准备 (44)6.3. 项目开发环境及工具介绍 (45)6.3.1. MVC模式简介 (45)6.3.2. Struts 2和Hibernate3.0技术框架简介 (45)6.4. 程序设计 (46)6.4.1. 程序设计方法及风格 (46)6.4.2. 系统管理模块程序设计 (47)6.4.3. 资料管理模块程序设计 (49)6.4.4. 查询统计管理模块程序设计 (52)6.4.5. 监控告警管理程序设计 (54)6.5. 系统测试与调试 (56)6.5.1. 功能测试 (56)6.5.2. 性能测试 (56)6.5.3. 系统调试 (56)第7章系统运行管理与评价 (57)7.1. 系统的运行管理 (57)7.2. 系统的评价 (58)7.2.1. 经济指标评价 (58)7.2.2.性能指标评价 (58)7.2.3. 管理指标评价 (58)结论 (59)致谢 (60)参考文献 (61)附录 (62)第1章前言如今,各电信运营商已越来越强烈地注意到这样一个现实:即基于分组的下一代网络只是整个服务提交体系中的一个不可或缺组成部分,这类网络虽然能够用来提交各种基于分组的新型增值业务,但却无法为运营商业务的发展提供直接的融资和收益。
模拟电信计费系统课程设计方案报告
专业课程设计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费用表中。
电信计费系统的设计与实现
本科毕业设计说明书题目:电信计费系统的设计与实现院(部):计算机科学与技术学院专业:网络工程班级:姓名:学号:指导教师:完成日期:目录摘要 (IV)ABSTRACT (V)1 前言1.1背景 (1)1.2改进 (1)1.3意义 (2)1.4章节安排 (2)2 系统分析2.1技术可行性 (4)2.1.1企业目前系统环境 (4)2.1.2系统开发环境 (4)2.2经济可行性 (4)2.2.1服务器 (4)2.2.2 数据库 (4)2.2.3 应用软件开发 (4)2.3开发技术简介 (5)3 系统需求3.1项目总体介绍 (8)3.2系统部署结构模型 (8)3.3功能模块结构模型 (9)3.4操作功能菜单结构模型 (10)3.5系统功能具体描述 (10)3.5.1采集系统 (10)3.5.2整合系统 (11)3.5.3用户管理系统 (11)3.5.5管理员管理系统 (12)3.5.6帐单查询系统 (13)3.5.7帐务查询系统 (13)3.5.8用户自服务系统 (14)3.5.9权限管理系统 (14)4系统总体设计4.1软件结构图 (15)4.2数据实体设计 (16)4.2.1权限与管理员数据实体类图 (16)4.2.2用户帐务帐号,业务帐号与资费实体类类图 (17)4.2.3用户登录时长数据相关实体类图 (18)4.3数据库设计 (18)4.3.1 表的分类 (18)4.3.2 数据的存储 (19)4.3.3 建表规则 (19)4.3.4权限,角色与管理员相关表设计 (19)4.3.5用户帐务帐号,资费与业务帐号相关表设计 (21)4.3.6用户登录时长原始数据与整合数据相关表设计 (22)4.4架构设计 (24)5详细设计5.1资费模块的设计与实现 (26)5.1.1资费管理的设计与实现 (26)5.1.2资费修改的设计与实现 (30)5.1.3资费删除的设计与实现 (34)5.1.4资费增加的设计与实现 (36)6 系统测试6.2 测试目的 (40)6.3测试用例 (40)6.4 测试结果分析 (42)7 结论 (44)谢辞 (45)参考文献 (46)摘要在电信运营系统中,电信计费系统是主要的支撑系统,占有重要地位。
C 课程设计模拟电信计费解读
课程设计设计题目:C++程序设计课程设计模拟电信计费课程设计任务书课程设计题目:模拟电信计费一、课程设计的原始资料及依据查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的管理系统。
通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求设计内容:假设电信计费标准:固定电话长途话费0.02元/秒,固定电话本地话费0.06元/分,无线电话长途话费1.00元/分,无线电话本地话费0.60元/分,无线电话接听话费0.50元/分。
在源数据文件中存放:电话号码,电信服务类别,通话时间(秒)。
根据源数据文件生成如下列表:固定长途电话:长途电话号码和通话时间。
固定本地电话:本地电话号码和通话时间。
无线长途电话:长途电话号码和通话时间。
无线本地电话:本地电话号码和通话时间。
无线接听电话:接听电话号码和通话时间。
统计电信费用:电话号码、累计电信费用。
(根据自己的任务填写内容)设计要求:(1)要求在设计的过程中建立清晰的类层次,并画出类图;(2) 设计功能满足要求、易于操作的友好界面;(3) 在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;(4) 在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
c语言课程设计机房收费管理系统
c语言课程设计机房收费管理系统一、教学目标本课程的教学目标是使学生掌握机房收费管理系统的开发过程,培养学生运用C语言进行实际项目开发的能力。
具体目标如下:1.知识目标:使学生掌握C语言的基本语法、数据结构、算法和编程思想,理解面向对象编程的基本概念。
2.技能目标:培养学生具备使用C语言进行程序设计的能力,能够独立完成简单的项目开发。
3.情感态度价值观目标:培养学生具有良好的团队合作精神,提高学生的问题解决能力和创新意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和面向对象编程。
具体安排如下:1.C语言的基本语法:介绍C语言的基本数据类型、运算符、控制结构等。
2.数据结构:讲解常用的数据结构如数组、链表、栈和队列等。
3.算法:介绍常见的排序算法和查找算法,培养学生分析问题和解决问题的能力。
4.面向对象编程:讲解类和对象的概念,培养学生运用面向对象思想进行程序设计的能力。
5.机房收费管理系统:以实际项目为背景,引导学生运用所学知识进行项目开发,提高学生的实际编程能力。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、算法和面向对象编程等知识,使学生掌握课程的基本概念。
2.案例分析法:通过分析实际项目案例,使学生了解机房收费管理系统的开发过程,提高学生的实际编程能力。
3.实验法:安排上机实验,使学生在实践中掌握C语言的编程技巧,培养学生的实际动手能力。
4.小组讨论法:学生进行小组讨论,培养学生的团队合作精神和问题解决能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:提供相关的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT课件,提高课堂教学质量。
4.实验设备:保证学生有足够的上机实践机会,提高学生的实际编程能力。
407.基于C的Windows应用程序设计------电话计费管理系统的设计与实现 课程设计(完整源代码联系本人,设计
课程设计说明书课程名称:基于C#的Windows应用程序设计------电话计费管理系统的设计与实现专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:完成日期:年月日任务书摘要随着近年来我国电信业的迅猛发展,各项业务量快速增长,新的业务种类和新的服务形式不断推出,而旧的电信业务的计费处理从体制到技术都越来越不能适应形势的需要,甚至在某种程度上已经限制和阻碍了业务的发展。
新的时期,新的挑战。
近年来,我国移动电话的普及全国各个角落,种类繁多,形式多样。
同时业务的需求也是千变万化,作为一家好的电话服务公司要想在现代电信产业中稳步发展,求的生存,就的有良好管理体制和先进的管理系统和优秀的技术。
如今计算机软件产业的不断进步,在一些面向对象的编程语言中融合了强大的数据库开发能力,数据库访问技术[8]和Visual Studio2005开发平台的引入。
使数据库开发更加成熟化。
SQL2000数据库的强大数据处理能力,市局管理更现代化、自动化、智能化、人性化。
在这些软件的帮助下使得数据管理变得简单,条理清晰,科学。
易保存,以及一些以前方法无法达到的功能。
为了适应现代社会的高节奏,高效率的工作要求,为电话计费管理者对数据的管理带来极大的方便。
电话计费管理系统采用全新的设计理念,本系统采用Windows应用程序设计提供完善的功能模块,无论是从客户还是管理人员对自己的业务需求都能够满足。
客户可以方便的实现各种业务的查询,管理员可以很方便的管理各种各样的客户业务,办理业务,更新,删除业务,备份,优化数据等功能。
而这些功能的实现都对于客户和管理员都是透明的,都是在可视化的窗体上操作,操作方便简单。
关键词:Windows应用程序电话计费系统目录1概述 (1)1.1项目概述 (1)1.2系统前台开发工具 (1)1.3系统后台数据库 (2)2需求分析 (4)2.1系统需求分析 (4)2.2系统用例图 (4)3系统设计 (5)3.1系统逻辑组成结构 (5)3.2系统概念结构 (5)3.3功能模块图 (7)4系统实现 (8)4.1系统登录模块 (8)4.2主窗口 (9)4.3客户业务查询 (9)4.4业务办理 (11)4.5打印报表 (15)4.6客户留言簿 (16)4.7Web引用 (17)5调试分析 (18)6设计总结 (19)7致谢 (20)8参考文献 (21)第1章电话计费管理系统设计与实现概述1.1 项目概述随着近年来我国电信业的迅猛发展,各项业务量快速增长,新的业务种类和新的服务形式不断推出,而旧的电信业务的计费处理从体制到技术都越来越不能适应形势的需要,甚至在某种程度上已经限制和阻碍了业务的发展。
电信计费系统课程设计
电信计费系统课程设计一、课程目标知识目标:1. 理解电信计费系统的基本概念、原理及其在通信行业中的应用;2. 掌握电信计费系统的组成部分、功能及相互关系;3. 了解电信计费系统的业务流程、计费策略和收费方式;4. 掌握电信计费系统的安全性、可靠性和扩展性要求。
技能目标:1. 能够运用所学知识分析电信计费系统的实际案例,提出优化和改进方案;2. 学会使用相关软件工具设计简单的电信计费系统,实现基本计费功能;3. 能够编写简单的计费算法,对电信业务进行计费;4. 具备一定的团队协作和沟通能力,能够就电信计费系统设计与他人进行有效讨论。
情感态度价值观目标:1. 培养学生对电信计费系统的兴趣,激发他们探索通信行业发展的热情;2. 增强学生的信息安全意识,认识到电信计费系统在保护消费者权益方面的重要性;3. 培养学生严谨、务实的学习态度,提高他们分析问题和解决问题的能力;4. 培养学生的创新精神和团队协作精神,使他们具备一定的职业素养。
本课程目标旨在使学生在掌握电信计费系统相关知识的基础上,提高实际操作能力和综合素质,为未来从事通信行业工作打下坚实基础。
同时,注重培养学生的情感态度价值观,使他们在学习过程中形成正确的价值观和职业操守。
二、教学内容1. 电信计费系统概述- 电信计费系统的基本概念与原理- 电信计费系统的发展历程与现状- 电信计费系统在通信行业中的重要性2. 电信计费系统的组成与功能- 计费系统的基本组成部分- 各组成部分的功能与相互关系- 计费系统的主要业务流程3. 计费策略与收费方式- 常见计费策略及其特点- 计费参数的设置与调整- 收费方式的分类及实际应用4. 电信计费系统的安全性、可靠性与扩展性- 安全性要求及其保障措施- 可靠性要求及其实现方法- 扩展性要求及其设计原则5. 计费系统设计与实践- 计费算法的设计与实现- 计费系统软件工具的使用- 简单电信计费系统的设计与实现6. 电信计费系统案例分析与优化- 实际案例的介绍与分析- 现有计费系统的优缺点- 优化与改进方案的设计与讨论教学内容依据课程目标进行选择和组织,注重科学性和系统性。
基于C语言的电话计费系统软件设计
_
_ —
图 1 程序 流程 图 主 程序 开始 时 进 行 一些 初 始 化, 如清 除显 示 器 R A M 、 F I F 0 R A M ,设置键盘、显示方式、时钟分频、定时器 / 计数器 初始 化等 。然 后打开 中断后便 可进入循环体 。下面对各程 序 模块分别加 以介绍。 ( 一 )显 示设计 。可 以采用数组 d i S S作为显示缓冲 区, 存 放 将 要 显 示 的数 据 。t a b l e数 组 作 为 段码 存 放 区 。通 过 对 专用 接 口芯片 8 2 7 9的写 显示 命令 ,储 存显 示数据 ,再 从 t a b l e 段码 表中取出要显示数据 的相应段码送到数据 口显示。 也可 以设计一个 显示子 函数每 次显示 时,只需给 d i s s数组 重 新赋值 ,便于 改变 要显 示的内容 。 ( 二 )计 时设计。在来 电接 听 以及拨 号去 电接通 时,均 需要 计费器有计 时显示功 能。设计 中可 以采用复 合定时 的方 法 ,得到 1 s的定 时中断 。可使定时器 0工作在定时器方式 i , 定时5 0 m s ,定时时间到后 P 1 . 0反相 。定 时器 1 则工作在计数 器方式 2 , 对T 1 引脚端输入 的脉冲计数, 当计数满 1 O 次 的时候 , 定时 1 s时间。当有挂机信号时,I N T O 端为低 电平时 ,发生外 部 中断,此时两 定时计数器都 停止计数 。显示 数据时只 需将 计时变量 S I N的值赋给 d i S S 数组 ,调用显示 函数 ,并且每 一 秒d i s s 数组 中的内容变化一次,则显示器每秒就刷新一次 v o i d t i m e c o n t r o l 0 来 电计 时 爿 c /
NetCTOSS电信计费管理系统功能设计
务质量 , 取得 良好的企业效益 。各 大运 营商, 每年在 系统 开发,
软 件 研 发 和 完 善 方 面 投 入 巨 资 来满 足 新 的客 户 需 求 。 电信 业 务 发展 到现 在 , 竞 争 格 局 的 形 成 也 让 用 户 有 了更 多
N e t C T O S S管理系统 具有的功能模块有 :账务账号管理模 块; 业 务账号管理模 块 ; 角色管 理模块 ; 管理 员管理模块 : 资费 管理模块 ; 个人 信息模块 和修 改密 码模块共七 个子模块 , 管理 员成功登录 系统后 , 都可 以对“ 个人信 息模块 ” 和“ 修改密码 模 块” 的功 能进 行操作 , 这样 可 以实现个人信息和密码的维护 , 能 否对其他功能模块进行操作 , 取决于该管理 员所拥有 的对 其他 功能模块进行操作的角色管理权 限。
性及适 应性 , 而 且也可支持 My S Q L数据库 , 因此我们选 择 w i n — 异步验 证 , 服务器端 先检验验 证码是否 正确 , 之 后 再 查 询 数 据 My E c l i p s e 做软件开发 ,不仅使编程方便,而且 M y E c l i p s e 软件开发的使用不 需要对程序 进行编译 , 该软件在 执行保存操
2 . 1 系 统 开 发环 境 结构 : 后 台 服 务+ B / S结 构 操作系统 : w i n d o w s 浏览 器 : 主流浏览器 ( I E , i f r e f o x 等)
数据库 : M YS Q L
应用 服 务器 : T o m c a t 应 用 服 务 器 支 持
M Y S Q L数据库 是一个适用 于多种操作 系统 的关系型数据 库系统, 是一个具有客户机/ 服务器体系结构 的分布式数据库管
模拟电信计费系统的设计与实现
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语言课程设计网吧计费
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、牛客网等)五、教学评估本节课的教学评估将采取多元化评价方式,全面客观地评价学生的学习成果。
计费管理c语言课程设计
1)、问题根据需求,该系统所应包含的信息有以下一些:酒店房间登记与计费管理的基本信息:客户姓名、身份证号、开始入住时间、退房时间、入住房间号、房间价格、入住费用。
根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。
如:入住客户的基本信息录入。
基于各种数据的查询。
例如:输入张三姓名,查询张三的身份证号、开始入住时间、退房时间、入住房间号、房间价格、入住费用。
数据导出:将住宿的信息导出到指定文件保存。
数据导入:从指定文件导入住宿的客户信息。
2)、系统采用C语言实现,开发环境为VC,可以运行在操作系统windows98及以上皆可。
3、运行要求能不受限制的录入入住客户的信息界面友好,操作方便,例如在用户输入错误的情况下进行提示。
2、总体设计1)、系统流程设计根据系统要求,设计如下的系统流程2)、系统模块设计根据系统的功能设计,如下模块主界面模块:完成系统菜单的显示。
功能选择模块:根据用户的选择,完成其相应的功能。
客户信息录入:完成用户从界面输入客户入住信息,保存入系统的功能。
客户信息显示:完成系统中显示现有信心的功能。
入住房间查询:完成查询特定房间的功能。
房间费用查询:完成费用统计的功能。
3)、详细设计1、数据结构设计为了能实现不受限制的增加入住客户信息,采用链表的结构保存客户的信息,在增加入住客户的基本信息时,创建一个客户信息的节点,将其插入到链表中,示意图如下。
使用C语言创建的结构体如下:truct room /*房间*/{char number[50];int price;}member[10];struct room member[10]={ //初始化数组{"801",110},{"802",120},{"803",130},{"804",140},{"805",150}, {"806",160},{"807",170},{"808",180},{"809",190},{"810",200}};struct date /*日期*/{int year;int month;int day;};struct customerchar name[20]; /*客户姓名*/char ID_number[30]; /*身份证号*/char check_in[30]; /*入住时间*/char check_out[30]; /*退房时间*/struct room member; /*入住房间号与价格*/int staying; /*入住天数*/int lodging_expense; /*费用*/char beginning[10];//开始统计时间char ending[10];//结束统计时间struct customer *next;};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,就是月里的天数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计设计题目:C++程序设计课程设计模拟电信计费课程设计任务书课程设计题目:模拟电信计费一、课程设计的原始资料及依据查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的管理系统。
通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。
二、课程设计主要内容及要求设计内容:假设电信计费标准:固定电话长途话费0.02元/秒,固定电话本地话费0.06元/分,无线电话长途话费1.00元/分,无线电话本地话费0.60元/分,无线电话接听话费0.50元/分。
在源数据文件中存放:电话号码,电信服务类别,通话时间(秒)。
根据源数据文件生成如下列表:固定长途电话:长途电话号码和通话时间。
固定本地电话:本地电话号码和通话时间。
无线长途电话:长途电话号码和通话时间。
无线本地电话:本地电话号码和通话时间。
无线接听电话:接听电话号码和通话时间。
统计电信费用:电话号码、累计电信费用。
(根据自己的任务填写内容)设计要求:(1)要求在设计的过程中建立清晰的类层次,并画出类图;(2) 设计功能满足要求、易于操作的友好界面;(3) 在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;(4) 在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
四、设计完成后应提交成果的种类、数量、质量等方面的要求1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排六、主要参考资料(文献)[1]郑莉董渊张瑞丰编着. 《C++语言程序设计》(第4版). 北京:清华大学出版社.2010[2] 陈维兴, 林小茶.《C++高级程序设计教程》. 北京:清华大学出版社[3] 谭浩强.《C++程序设计教程》. 北京:中国科学技术出版社[4] 王燕.《面向对象的理论与C++实践》. 北京:清华大学出版社[5] 马石安, 魏文平. 主编《Visual C++程序设计与应用教程》. 北京:清华大学出版社[6] 王育坚. 主编《Visual C++面向对象编程教程》(第二版). 北京:清华大学出版摘要现代科学技术的飞速发展,改变了世界,也改变了人类的生活。
作为新世纪的大学生,应当站在展的前列,掌握现代科学知识,调整自己的知识结构和能力结构,以适应社会发展要求。
新需要具有丰富的现代科学知识,能够独立解决面临的任务,充满活力同,有创新意识的新型人才。
C++语言是在国内外广泛使用的一种计算机语言。
C++语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。
C++程序设计是一门实践很强的课程,既要掌握概念,又要动手编程,还要上机调试。
模拟电信计费系统就是通过我们组员每一个人的努力的成果,我们用到在课堂上所学到的知识以及课下参考其它资料而编写的程序。
本次课程设计可以实现模拟电信计费的功能。
操作简便而实用。
模拟电信计费系统可以现实对手机话费的操作,例如,对本机话费每一条通话记录话费查询、话费清单显示等相关功能,可以对本机话费做一个简单管理。
此次C++语言课程设计是对我们所掌握C++语言知识的一次检测。
我们组做的是模拟电信计费系统,操作简单,使我们对C++语言知识有了质的飞跃,提高了我们的编程技术,增加了我们对计算机的兴趣,程序成功的运行,给予了我们莫大的信心,通过对程序的完善更让我们受益匪浅,锻炼了我们的实践能力,给我对进入社会提供了莫大的动力。
关键词类对象继承文件沈阳工程学院课程设计报告目录目录摘要 (I)第1章绪论 (1)1.1题目背景 (1)1.2概要设计 (1)1.3解决问题 (1)第2章C++语言的运行环境 (2)2.1 C++语言的运行环境 (2)2.2 C++语言的特点 (2)2.3 C++语言的运行步骤 (2)第3章系统分析与详细设计 (5)3.1程序结构基础 (5)3.2 功能设计 (5)第4章系统实现 (25)4.1程序运行的登录界面 (25)4.2程序运行的主菜单及功能界面 (26)结论 (27)致谢 (28)参考文献 (29)沈阳工程学院课程设计报告第1章绪论第1章绪论1.1题目背景随着计算机技术的飞速发展,改变了世界,也改变了人类的生活。
作为现代科学技术的飞速发展,改变了世界,也改变了人类的生活。
新世纪的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。
C++语言成了在国内外使用的一种计算机语言。
C++语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好、既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。
1.2概要设计根据题目要求,设计模拟电信计费系统,实现课题中的要求。
可以进行每一条通话记录的查询,并且可以显示话费清单。
1.3解决问题本程序由4个类为基础结构,分别是fixed_phone类,telephone类,phone类,log_in类,phone类是由fixed_phone类和telephone类派生而来的,fixed_phone类主要用来实现固定电话的话费功能,telephone类主要用来实现无限电话的话费功能,phone类通过本身成员函数来实现总体功能,log_in类主要实现系统的登录,主菜单,帐号信息,退出等功能。
第2章C++语言的运行环境2.1 C++语言的运行环境C++语言的运行环境有很多,是Microsoft 公司推出的可视化开发环境,即Microsoft Visual C++6.0。
也就是我们小组运用的开发环境。
C语言在VC++6.0环境下运行如图2-1所示。
图2-1 C语言运行界面2.2 C++语言的特点C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C 语言更容易为人们学习和掌握。
C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。
面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。
2.3 C++语言的运行步骤1.运行VC6.0现在就让我们开始Visual C++ 6.0之旅吧!首先按如下两种方法之一启动并运行VC6,进入到它的集成开发环境窗口(假设在Windows系统下已经安装了VC6)其具体窗口式样如图2-1所示。
方法一:若桌面上有VC6图标(“横躺着”即“倒下”的“8”字型图标,且标有Microsoft Visual Studio 6.0字样,如图2-2所示),则用鼠标双击该图标。
图2-2 VC6.0在桌面上的快捷方式方法二(假设按照通常方式对VC6进行了安装的话)通过开始→程序→Microsoft Visual Studio 6.0→Microsoft Visual C++ 6.0,单击一下该菜单项。
图2-1式样的窗口从大体上可分为四部分。
上部:菜单和工具条;中左:工作区(workspace)视图显示窗口,这里将显示处理过程中与项目相关的各种文件种类等信息;中右:文档内容区,是显示和编辑程序文件的操作区;下部:输出(Output)窗口区,程序调试过程中,进行编译、链接、运行时输出的相关信息将在此处显示。
注意,由于系统的初始设置或者环境的某些不同,可能你所启动的VC6初始窗口式样与图2-1有所不同,也许没出现Workspace 窗口或Output窗口,这时可通过View→Workspace菜单选项的执行,总可使中左处的工作区窗口显现出来;而通过View→Output菜单选项的执行,又总可使下部的输出区窗口得以显现。
当然,如果不想看到这两个窗口,可以点击相应窗口的“x”按键来关闭窗口。
如图2-3所示。
图2-3 VC6.0的集成开发环境窗口2. 编制并运行C++语言程序的四步曲⑴编辑(把程序代码输入,交给计算机)。
⑵编译(成目标程序文件.obj)。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序沈阳工程学院课程设计报告第2章C++语言的运行环境个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。
主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
⑶链接(成可执行程序文件.exe)。
链接是将编译产生的.obj文件和系统库连接装配成一个可以执行的程序。
由于在实际操作中可以直接点击Build从源程序产生可执行程序,可能有人就会置疑:为何要将源程序翻译成可执行文件的过程分为编译和链接两个独立的步骤,不是多此一举吗?之所以这样做,主要是因为:在一个较大的复杂项目中,有很多人共同完成一个项目(每个人可能承担其中一部分模块),其中有的模块可能是用汇编语言写的,有的模块可能是用VC写的,有的模块可能是用VB写的,有的模块可能是购买(不是源程序模块而是目标代码)或已有的标准库模块,因此,各类源程序都需要先编译成目标程序文件(2进制机器指令代码),再通过链接程序将这些目标程序文件连接装配成可执行文件。
⑷运行(可执行程序文件)。
上述四个步骤中,其中第一步的编辑工作是最繁杂而又必须细致地由人工在计算机上来完成,其余几个步骤则相对简单,基本上由计算机来自动完成。
在VC6.0下编译后的窗口界面如图2-4所示。
图2-4 在VC6.0下编译后的窗口界面第3章系统分析与详细设计3.1程序结构基础本程序主要完成的是模拟电信计费的功能,整个程序由4个类结构为基础。
类UML图如图3-1所示。
图3-1 类UML图3.2 功能设计3.2.1 log_in类的设计1.load()成员函数void log_in::load(){int i,count=0;char str[50],str1[50];time_t t1,*t=&t1;printf("\n\n\n\n\n\n");printf("\t* *\n");printf("\t* *\n");printf("\t* *\n");printf("\t* *\n");printf("\t* * * * * * * * * * * * * *\n");printf("\t* * * * * * *\n");printf("\t* * * * * * *\n");printf("\t* * * * * * *\n");printf("\t* * * * * * * *\n");printf("\t* * * * * * * * * * * * * * * * * *\t");i=6;do{t1=time(NULL);strcpy(str,ctime(t));if(count==6) break;while(strcmp(str,str1)!=0){strcpy(str1,str);printf(" >");count++;break;}}while(1);system("cls");logshow();}设计流程如图3-2所示。