C++课程设计模拟电信计费_第1页
C++课程设计模拟电信计费_第2页
C++课程设计模拟电信计费_第3页
C++课程设计模拟电信计费_第4页
C++课程设计模拟电信计费_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计设计题目: C++程序设计课程设计模拟电信计费课程设计任务书课程设计题目:―模拟电信让费一、课程设计的原始资料及依据查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的管理系统。通过本设计可以加深理解使用面向对象程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。二、课程设计主要内容及要求设计内容:假设电信计费标准:固定电话长途话费元/秒,固定电话本地话费元/分,无线电话长途话费元/分,无线电话本地话费元/分,无线电话接听话费元/分。在源数据文件中存放:电话号码,电信服务类别,通话时间(秒)。根据源数据文件生成如下列表:固定长途电话固定本地电话无线长途电话无线本地电话无线接听电话统计电信费用长途电话号码和通话时间。本地电话号码和通话时间。长途电话号码和通话时间。本地电话号码和通话时间。接听电话号码和通话时间。电话号码、累计电信费用。固定长途电话固定本地电话无线长途电话无线本地电话无线接听电话统计电信费用(根据自己的任务填写内容)设计要求:(1)要求在设计的过程中建立清晰的类层次,并画出类图;(2)设计功能满足要求、易于操作的友好界面;(3)在系统的设计中,至少要用到面向对象的一种机制:继承、多态等;(4)在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。三、对课程设计说明书撰写内容、格式、字数的要求.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步臊、遇到的问题及解决方法、设计总结、参考文献等。一般不应少于3000字。.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。.课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20nlm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。四、设计完成后应提交成果的种类、数量、质量等方面的要求.完成“任务书”中指定的功能,运行结果正确。.课程设计说明书。五、时间进度安排序号主要内容学时备注1进行设计准备,阅读资料,分析设计任务书,明确设计要求、内容和步骤1天2编写相应的程序代码2天3程序调试1天4整理程序,撰写课程设计报告1天合 计5天六、主要参考资料(文献)[1]郑莉董渊张瑞丰编着.《C++语言程序设计》(第4版).北京:清华大学出版社.2010[2]陈维兴,林小茶.《C++高级程序设计教程》.北京:清华大学出版社[3]谭浩强.《C++程序设计教程》.北京:中国科学技术出版社[4]王燕.《面向对象的理论与C++实践》.北京:清华大学出版社[5]马石安,魏文平.主编《VisualC++程序设计与应用教程》.北京:清华大学出版社[6]王育坚.主编《VisualC++面向对象编程教程》(第二版).北京:清华大学出版摘要现代科学技术的飞速发展,改变了世界,也改变了人类的生活。作为新世纪的大学生,应当站在展的前列,掌握现代科学知识,调整自己的知识结构和能力结构,以适应社会发展要求。新需要具有丰富的现代科学知识,能够独立解决面临的任务,充满活力同,有创新意识的新型人才。C++语言是在国内外广泛使用的一种计算机语言。C++语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。C++程序设计是一门实践很强的课程,既要掌握概念,又要动手编程,还要上机调试。模拟电信计费系统就是通过我们组员每一个人的努力的成果,我们用到在课堂上所学到的知识以及课下参考其它资料而编写的程序。本次课程设计可以实现模拟电信计费的功能。操作简便而实用。模拟电信计费系统可以现实对手机话费的操作,例如,对本机话费每一条通话记录话费查询、话费清单显示等相关功能,可以对本机话费做一个简单管理。此次C++语言课程设计是对我们所掌握C++语言知识的一次检测。我们组做的是模拟电信计费系统,操作简单,使我们对C++语言知识有了质的飞跃,提高了我们的编程技术,增加了我们对计算机的兴趣,程序成功的运行,给予了我们莫大的信心,通过对程序的完善更让我们受益匪浅,锻炼了我们的实践能力,给我对进入社会提供了莫大的动力。关键词类对象继承文件摘要 错误!未定义书签。第1章绪论 错误!未定义书签。题目背景 错误!未定义书签。概要设计 错误!未定义书签。解决问题 错误!未定义书签。第2章C++语言的运行环境 错误!未定义书签。C++语言的运行环境 错误!未定义书签。C++语言的特点 错误!未定义书签。C++语言的运行步臊 错误!未定义书签。第3章系统分析与详细设计 错误!未定义书签。程序结构基础 错误!未定义书签。功能设计 错误!未定义书签。第4章系统实现 错误!未定义书签。程序运行的登录界面 错误!未定义书签。程序运行的主菜单及功能界面 错误!未定义书签。结论 错误!未定义书签。致谢 错误!未定义书签。参考文献 错误!未定义书签。题目背景随着计算机技术的飞速发展,改变了世界,也改变了人类的生活。作为现代科学技术的飞速发展,改变了世界,也改变了人类的生活。新世纪的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。C++语言成了在国内外使用的一种计算机语言。C++语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好、既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件。概要设计根据题目要求,设计模拟电信计费系统,实现课题中的要求。可以进行每一条通话记录的查询,并且可以显示话费清单。解决问题本程序由4个类为基础结构,分别是fixed_phone类,telephone类,phone类,log_in类,phone类是由fixed_phone类和telephone类派生而来的,fixed_phone类主要用来实现固定电话的话费功能,telephone类主要用来实现无限电话的话费功能,phone类通过本身成员函数来实现总体功能,log_in类主要实现系统的登录,主菜单,帐号信息,退出等功能。第2章C++语言的运行环境1C++语言的运行环境C++语言的运行环境有很多,是Microsoft公司推出的可视化开发环境,即MicrosoftVisualC++。也就是我们小组运用的开发环境。C语言在VC++环境下运行如图2-1所示。,!□!x|」创凶I*.,!□!x|」创凶|3EfeEdt滤winsertProjectfieldicolsPurecnveraoePunf/Quartfy斯du胃Help储③区电@口—同国宜聃「3IZIfLHJ±rf\Bui1d/Debug\FittdinFiles1~入Findin14|3IZIfLHJ±rf\Bui1d/Debug\FittdinFiles1~入Findin14|小ReadyLnLCol1|REC|COL|OVR|READ/图27C语言运行界面C++语言的特点C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。C++语言的运行步骤.运行现在就让我们开始VisualC++之旅吧!首先按如下两种方法之一启动并运行VC6,进入到它的集成开发环境窗口(假设在Windows系统下已经安装了VC6)其具体窗口式样如图2-1所示。方法一:若桌面上有VC6图标(“横躺着”即“倒下”的“8”字型图标,且标有MicrosoftVisualStudio字样,如图2-2所示),则用鼠标双击该图标。

HicrosoftVisualC++6.0图2-2在桌面上的快捷方式方法二(假设按照通常方式对VC6进行了安装的话)通过开始一程序一MicrosoftVisualStudio—MicrosoftVisualC++,单击一下该菜单项。图2-1式样的窗口从大体上可分为四部分。上部:菜单和工具条;中左:工作区(workspace)视图显示窗口,这里将显示处理过程中与项目相关的各种文件种类等信息;中右:文档内容区,是显示和编辑程序文件的操作区;下部:输出(Output)窗口区,程序调试过程中,进行编译、链接、运行时输出的相关信息将在此处显示。注意,由于系统的初始设置或者环境的某些不同,可能你所启动的VC6初始窗口式样与图2-1有所不同,也许没出现Workspace窗口或Output窗口,这时可通过View—Workspace菜单选项的执行,总可使中左处的工作区窗口显现出来;而通过View-Output菜单选项的执行,又总可使下部的输出区窗口得以显现。当然,如果不想看到这两个窗口,可以点击相应窗口的“x”按键来关闭窗口。如图2-3所示。图2-3的集成开发环境窗口.编制并运行C++语言程序的四步曲⑴编辑(把程序代码输入,交给计算机)。⑵编译(成目标程序文件.obj)。编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序

把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。⑶链接(成可执行程序文件.exe)。链接是将编译产生的.obj文件和系统库连接装配成一个可以执行的程序。由于在实际操作中可以直接点击Build从源程序产生可执行程序,可能有人就会置疑:为何要将源程序翻译成可执行文件的过程分为编译和链接两个独立的步臊,不是多此一举吗之所以这样做,主要是因为:在一个较大的复杂项目中,有很多人共同完成一个项目(每个人可能承担其中一部分模块),其中有的模块可能是用汇编语言写的,有的模块可能是用VC写的,有的模块可能是用VB写的,有的模块可能是购买(不是源程序模块而是目标代码)或已有的标准库模块,因此,各类源程序都需要先编译成目标程序文件(2进制机器指令代码),再通过链接程序将这些目标程序文件连接装配成可执行文件。⑷运行(可执行程序文件)。上述四个步躲中,其中第一步的编辑工作是最繁杂而又必须细致地由人工在计算机上来完成,其余几个步臊则相对简单,基本上由计算机来自动完成。在下编译后的窗口界面如图2-4所示。■r5ClassV...i]FileViewUdJprintfC,姓名For(i=0;i<SIZE;i*4)学号 思想品德与法律基础大学外语i〃fread(&stud[l]vsizeof(structstudent),1,fpl);sun[i]=stud[i].score[0]+stud[i].score[1]+stud[i].score[2]*stur■r5ClassV...i]FileViewUdJprintfC,姓名For(i=0;i<SIZE;i*4)学号 思想品德与法律基础大学外语i〃fread(&stud[l]vsizeof(structstudent),1,fpl);sun[i]=stud[i].score[0]+stud[i].score[1]+stud[i].score[2]*sturJstud[i].au?=sum[i]/5;printf《'%printline;-0error(s),16ujarning(s)kBuild/"DebugFindinFilesI\Findin]彳|±rLn350,Coll|REC|COL|OVR|READ^图2-4在下编译后的窗口界面图EleEditHewInsertRejectBuildlookPureCQ^eraosPijif/Quantfy凶「dowtfeb,|g|x|道仁口。h电蔺随血官1聃141、||(Globals)▼||(Allglobalmembersv||main司豆〜参倒通j?3出printFf^sprintF('7n+'1);qetche(八44-McrofioftVisualC+4-[44.cpp]匹国44classes

第3章系统分析与详细设计程序结构基础本程序主要完成的是模拟电信计费的功能,整个程序由4个类结构为基础。类UML图如图3-1所示。fixed_phonetelephone-number:stringfixed_phonetelephone-number:string+time:int+type:int-fee:float■^number:string+time:int+type:int+fee:float-fixed_phone()-virtual^fixed_phone()-get_fee(int:int):floatrhow_detail(int:mt):void+telephoneQvirtual-telephone。■rget_fee(int:int):float+show_detail(int:iiit):void△△log_in-account:string-code:string+log_mOvirtual7ogjn0+log():void+account_codeO:void+loadQ:void+codeNum():void+logshowQ:void+menuQ:void+quitQ:voidphone+phoneQvirtual〜phone。■rfindQ:void+readshowallO:void图3-1类UML图功能设计2.1log_in类的设计()成员函数voidlog_in::load()(inti,count=0;charstr[50],strl[50];time_tt1,*t=&t1;printf("\n\n\n\n\n\n");printf("\t*printf("\t*printf("\t*printf("\t*

*********\n");****\n");****\n");****\n");*****\n");**********\tH);**printf(M\t*printfC'\t*printfC'\t*printfC'\t*printfC'\t*printf(M\t****i=6;**do(tl=time(NULL);strcpy(str,ctime(t));if(count==6)break;while(strcmp(str,strl)!=0)(strcpy(strl,str);printf(H>");count++;break;)}whiled);system(,rclsH);logshow();}设计流程如图3-2所示。2.account_code()成员函数voidlog_in::account_code()intb;cout<<**********1注册新账号***********\n";cout«"**********2修改密码***********\n";cout<〈"请再此输入选择代号:\n";cin>>b;if(b==l)(stringtempi;stringtemp2;ofstreamoutfile;log()成员函数voidlog_in::log()intb;cout«,**********1注册账号或修改密码***********\n*;cout<<"**********2登陆系统***********\n";cout<〈"请再此输入选择代号:\n";cin>>b;if(b==l)account_code();elseload();)设计流程如图3-4所示。图3-2load。成员函数流程图图3-3accountcodo()成员函数i<4codeNum()成员函数voidlog_in::codeNum()(chara[37]=Habcdefghijklmnopqrstuvwxyz09,r;ogshow()成员函数voidlog_in::logshow()ifstreaminfile(,rios::in);stringtempi;stringtemp2;infile>>templ>>temp2;loop:cout<<"请输入您的账号:"<<endl;cin>>account;cout<<"请输入您的密码:”《endl;cin>>code;codeNum();f((temp1==account)&&(temp2-code))menu();)elsegotoloop;}设计流程如图3-6所示。

图3-6logshow。成员函数intisystcm(nintisystcm(npausen)▼(结束) 3.2.2get_fee(intt)成员函数floatfixedphone::getfee(intt)if(t==0)fee=*time;if(t==l)fee=(time/60+l)*;returnfee;)设计流程如图3-8所示。floattelephone::getfee(intt)if(t==2)fee=(time/60+l)*l;if(t==3)fee=(time/60+l)*;if(t==4)fee=(time/60+l)*;returnfee;)设计流程如图3-10所示。2.showdetail(intt)成员函数voidtelephone::show_detail(intt)if(type-2)t==3in);t-3intt;intnum;infile>>num;fixed_phone*fph=newfixed_phone[num];telephone*tlh=newtelephone[num];stringtemp_num;cout<<”请输入要查询的电话号码:\nM;cin>>temp_num;for(i=0;i<num;i++)(infile»t;if((t=0)||(t=D)(fph[i].type二t;infile>>fph[i].number>>fph[i].time;fph[i].fee=fph[i].get_fee(t);if(fph[i].number-temp_num)(cout<<"您本次通话记录为:\nM;fph[i].show_detail(fph[i].type);))else(tlh[i].type=t;infile>>tlh[i].number>>tlh[i].time;tlh[i].fee=tlh[i].get_fee(t);if(tlh[i].number-temp_num)(cout<<"您本次通话记录为:\nM;tlh[i].show_detail(tlh[i].type);))}}设计流程如图3-12所示。(开始))cin»temp_num(开始))cin»temp_num图3T2find。成员函数2.read_show_al1()成员函数voidphone::read_show_all()(ifstreaminfile(MW,ios::in);inti;intt;intnum;infile>>num;fixed_phone*fph=newfixed_phone[num];telephone*tlh=newtelephone[num];for(i=0;i<num;i++)(infile>>t;if((t==0)||(t==l))(fph[i].type二t;infile>>fph[i].number>>fph[i].time;fph[i].fee=fph[i].get_fee(t);fph[i].show_detail(t);}else(tlh[i].type=t;infile>>tlh[i].number>>tlh[i].time;tlh[i].fee=tlh[i].get_fee(t);tlh[i].show_detail(t);}}}设计流程如图3-13所示。03-13readshowall()成员函数3.2.5主函数的设计

主函数

voidmain()log-inloging;0;phonephe;intchoose;loop:cout«"请输入功能选项:\nw;cin>>choose;if(choose-1)(system(Hclsw);0;}elseif(choose-2)(loop2:system(,rclsr,);0;cout<<H**********1返回主菜单***********\n二"**********2继续查询***********\n';intchoose_2;cin»choose_2;if(choose_2-1)( 0;gotoloop;}if(choose_2-2)gotoloop2;)elseif(choose==3){systein(nclsh);0;cout«"按任意键返回主菜单";system(npausen);0;gotoloop;}elseif(choose-4){systein(nclsh);0;gotoloop;}}设计流程如图3-14所示。

图3-14主函数第4章系统实现程序运行的登录界面1.帐号注册界面如图4-1所示。太”也\所有课设\C++课设'模拟电信忘”“*)<**~充*1.*¥册~账号-或修>改索幻6长女**女***■充■■***■***■***2•音系^兴丈兴试・英兴试・英兴试请再此输入凝代号:1WK・*.*一)C・1彳丰册亲斤账号,美兴试・英兴试・英兴试・美关***■*■**■*■**2.修改密阴共*关********请再此输入选择代号:请输入账号;请输入密资,土再次输入密资:心册成功!请按任意键继续...图4-1帐号注册界面2.登录界面如图4-2所示。*"DA所有课设\C十十课设'模拟电信计费\电信计费八计费\Deb...XZXZF诔册账号或修改密码却誉系统*M*JWWM*M*M请再此输入选择代号:图4-2登录界面程序运行的主菜单及功能界面1.主菜单界面如图4-3所示。-"D二'所有课设\0十课设、模拟电信计费'电信计费1\计费\、:///\ “<(?0>H 欢迎登录用信计费模拟系统;;功能选项:;; 工密码修改 2话费查询H 3话费清单 4退出系统we情输入功能选项:图4-3主菜单界面2.选项1会进入其实界面,并且要求重新登录。选项2话费查询界面如图4-4所示。商"D:\所有课设\C;+课设'模拟电信计费'电信计费"计费\Debug\计费.exe情输入要查洵的电话号本次通话记录为:电话号戏中404086呼 电信朋务类型:固定本地电话通话时间(秒):67产生的费用:0.12**********1返回主莘羊*****、X-*-X'*X图4-4话费查询界面.选项3话费清单界面如图4-5所示。。:"D:\所有课设\C-课设'模拟电信计费,电信计费1\计费\Debug\计费.exe电话号码:南诂号招:由话发■宿:电话号弱:电痣导斜:电定号码;电话百稿।电话至施:电信节制:电话号弱:南诂号招:由谙友■丽:电话g班:15940408607137040559551584(45561461362401906915002492356158400478671884248907918842384495139981851831862791420215309863497[3394S53SU613604021872型型型型型型型型型型型型型.

务务务务务务>务为务务务々恩电话号码:南诂号招:由话发■宿:电话号弱:电痣导斜:电定号码;电话百稿।电话至施:电信节制:电话号弱:南诂号招:由谙友■丽:电话g班:15940408607137040559551584(45561461362401906915002492356158400478671884248907918842384495139981851831862791420215309863497[3394S53SU613604021872型型型型型型型型型型型型型.

务务务务务务>务为务务务々恩固固无无无固固无无无囱固无话话话话听法话话话听话话话电电电电电电电电电途地途地话途地涂地话途地途长本长本电长本长本电长本长定定线线线定定线线线定定线话话话话话话话话话话话话话甬~1甬=allf甬甬一甬~1甬=坦•TASTA%TA%J、Tz%Tz%J、J、TAITASTA%TA%X3-3一日一3-O-3-rn-rn-3-a-3一日一379U36357219S86475036891578・•••••••••••I•••••••••・・•rrRTT^rrRrT^nT^rr~^rrnrrnmrT^TT^rrRrT^费费费费费费费>费费费费费ArfTATFArfFAMHAQUAMHAHMAH)AYuArfFArfFAKMAMH,1二二rllulu.ulululu二,二Ll二ruu二一」--」H-nnu」-」」w_-_」H-*_产产产产产产产产产产产产产102012021110434186“1R21818图4-5话费清单界面.选项4退出界面如图4-6和4-7所示。同「同「D:\所有课设\C++课阿定退出系统?Yes?/?orNo?/N:y底"D二'所有课设\0十课设k秒后退出?图4-7退出界面图图4-7退出界面时间是短暂的,收获是丰厚的。经过这样一周的课程设计,把我对C++知识从新巩固了一遍,对类和继承进一步理解,特别对程序的面向对象的封装性进一步的理解和体会,为今后的程序编写奠定了一定的基础。而这次的课程设计也给了我们一次机会,一次把学习到的知识付诸实践的机会。知识宝贵,团队精神同样可贵

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论