您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++电话本的程序设计报告
面向对象程序设计实训课程设计报告书姓名王喜之班级10(4)班学号10263389指导教师周彩根信息科学学院1问题描述:【课题】电话号码簿【基本要求】设计一个利用文件处理方式实现的电话号码薄的程序,具有增加数据、删除数据、更新数据、查询数据及显示全部数据的功能。每个电话号码包括姓名、电话信息项。其中姓名作为关键字,保证姓名不能重复,删除更新查询时根据输入姓名进行删除更新及查询,更新时仅更新电话号码。程序运行时从文件中读取所有人员电话号码薄信息,程序结束前将当前所有人员电话号码信息再写入到文件中.设计的软、硬件环境:软件环境:windowXP,VC++6.0硬件环境:CPU,键盘,鼠标,显示器,风扇,主板,内存算法设计与功能模块:【系统功能模块组织】添加数据更新数据查询数据删除数据显示所有信息退出电话簿界面密码验证进入电话簿系统2【运行流程对象时序图】Tem.datobjTelephoneBook:TelephoneBookAdddate()输入姓名name,电话号码teleNoTelph.datconsultDate()输入查找的姓名()联系人信息写入文件文件中查找输入的姓名的记录()文件中找到姓名文件中找不到姓名输出联系人输出”无此人信息”update()输入查找的姓名()文件中查找姓名()输出姓名对应的联系人信息()输入要修改的信息()把信息写入文件DeleteDate()输入要删除的姓名()文件查找数据()输出”无此人的信息”()输出“无此人信息”文件中找不到姓名文件中找到姓名查找不到姓名文件中找到姓名输出”删除成功”()Pack()备份文件()内容备份到Showallinfo()显示信息3程序输入与结果输出:【运行方法】打开D:\MyProjects\10263309\telephoneb\Debug\telephoneb.exe文件【运行结果】1.输入“000000”按下回车键2.随意按下一个键。。(我按了回车键)输入“1”;输入“n”;4输入“2”(按了enter)输入“2”输入8885922(按enter)5输入“5”;(按enter)实验结果分析及收获:通过本次实验我能够基本掌握面向对象程序设计的基础知识,在对电话簿管理程序的编写过程中了解面向对象程序设计的应用,在对上机实验和对程序调试的同时也提高了自己的解决的能力在这段时间的上机的实践中,我学会了很多,了解如何应用VC++6.0环境实现工程的创建,类的生成等等,可以说这次上机实验对课堂所学的知识有了很好的理解。深刻的体会到了面向对象程序设计在工程中的应用的重要性,及其对工程方面程序设计的深刻影。这次实验我受益匪浅,在掌握面向对象程序设计的基础上更让我对C++语言产生了浓厚的兴趣。使我对原来不太感兴趣的专业课有了更好的认识和理解,我深刻的体会了学好面向对象程序设计的重要性,虽然我们已经课程,但是我会努力学好这门课程,利用课余的时间上机实现程序的编写和设计,努力学好这门课程,相信此次机会上机会给我的专业课学习奠定娘好的基础,对影响今后的学习意义更大。6附录(源程序清单)#includetelephonebook.h#ifndef__TELEPHONEBOOK_H__//如果没有定义__TELEPHONEBOOK_H__#define__TELEPHONEBOOK_H__//那么定义__TELEPHONEBOOK_H__classCTelephoneBook{public:voidrun();//操作界面函数CTelephoneBook();//无参数构造函数virtual~CTelephoneBook();//析构函数private:voidshowallinfo();//显示所有数据函数voidpackDate();//重组函数voiddeleteDate();//删除数据函数voidupataDate();//更新数据函数voidaddnewmember();//添加新的数据函数voidconsultdate();//查询数据函数fstreamfile;//电话号码薄文件};structtelephonetype//电话薄结构{booldelTag;//删除标志charname[16];//联系人姓名charteleNo[18];//联系人电话};CTelephoneBook::CTelephoneBook()//构造函数{ifstreamifile(telph.dat);//建立输入文件if(ifile.fail()){//打开文件失败,表示不存在文件ofstreamofile(telph.dat);//建立输出文件if(ofile.fail())throw(打开文件失败!);//抛出异常ofile.close();//关闭文件}else{//存在文件ifile.close();//关闭文件}file.open(telph.dat,ios::in|ios::out|ios::binary);//以读写方式打开文件if(file.fail())throw(打开文件失败!);//抛出异常}CTelephoneBook::~CTelephoneBook()//析构函数{file.close();//程序结束,释放内存空间,并关闭文件}添加模块:7voidCTelephoneBook::addnewmember()//添加数据{telephonetypetelph;//定义一个,结构体数据,用来存放数据telph.delTag=false;//正常,未作删除标志do{cout请输入您想添加联系人的姓名:;cintelph.name;//输入姓名cout请输入联系人的电话号码;cintelph.teleNo;//输入电话号码file.write((char*)&telph,sizeof(telephonetype));//讲数据写入文件cout您是否想继续添加;}while(UserSaysYest());//肯定回答时继续循环}//更新模块:voidCTelephoneBook::upataDate()//更新数据{telephonetypetelph;//电话号码结构charname[16];//联系姓名cout请输入想要更新的姓名:;cinname;//输入姓名file.seekg(0);//进行定位,指向文件首部file.read((char*)&telph,sizeof(telephonetype));//从文件中读数据while(!file.fail()){//文件未结束if(strcmp(telph.name,name)==0&&!telph.delTag)//检索姓名相同,且并未被删除break;//跳出循环file.read((char*)&telph,sizeof(telephonetype));//继续从文件中读出数据}if(!file.eof())//判断是否到文件尾部{cout原始数据为:;coutsetw(18)telph.namesetw(18)telph.teleNoendl;//原始输出数据cout请输入更新后的数据!endl;cout请输入更新后电话号码:;cintelph.teleNo;//输入新号码file.seekg(-sizeof(telephonetype),ios::cur);//定位于file的前一个数据file.write((char*)&telph,sizeof(telephonetype));//写入数据cout更新成功!endl;}else{cout无此人的信息!endl;file.clear();//清除文件定位数据信息}}查询模块:8voidCTelephoneBook::consultdate()//查询数据信息{telephonetypetelph;charname[16];cout请输入您想查阅的姓名:;cinname;//输入姓名file.seekg(0);//定位于文件首部file.read((char*)&telph,sizeof(telephonetype));//读出文件中的联系人数据while(!file.fail())//判断是否到文件尾部{if(strcmp(telph.name,name)==0&&!telph.delTag)//检索姓名相同,且并未被删除break;//跳出循环file.read((char*)&telph,sizeof(telephonetype));//读出文件中的数据信息}if(!file.eof())//判断是否到文件底部{cout查询结果:endl;coutsetw(18)telph.namesetw(18)telph.teleNoendl;//输出数据}else{cout无此人的记录endl;file.clear();}}删除模块:voidCTelephoneBook::deleteDate()//删除数据信息{telephonetypetelph;charname[16];cout请输入您想要删除的联系人的姓名:;cinname;//输入姓名file.seekg(0);//定位file.read((char*)&telph,sizeof(telephonetype));//读出文件中的数据while(!file.fail())//判断是否到文件底部{if(strcmp(telph.name,name)==0&&!telph.delTag)//检索姓名相同,且并未被删除break;//跳出循环file.read((char*)&telph,sizeof(telephonetype));//读出数据信息}if(!file.eof()){charchoice;cout被删除的记录为:;coutsetw(18)telph.namesetw(18)telph.teleNoendl;//显示数据cout是否确定删除该联系人的数据信息(y/n)?endl;cinchoice;if(choice=='y')//再次确认,是否要删除!{telph.delTag=true;file.seekg(-sizeof(telephonetype),ios::cur);file.write((char*)&telph,sizeof(telephonetype));cout删除成功!endl;}else{file.clear();9}}else{cout删除失败!endl;file.clear();}this-packDate();//调用重组函数。从telph.dat文件中真正删除数据!}重组模块:voidCTelephoneBook::packDate()//重组函数{ofstreamoutfile(tem.dat,ios::app|ios::binary);//建立一个输出文件对象telephonetypetelph;file.seekg(0);//定位file.read((char*)&telph,sizeof(telephonetype));//读数据while(!file.eof())//判断是否到达文件底部{if(!telph.delTag){//!faluse进入if语句,即为,未被删除数据outfile.write((char*)&telph,sizeof(telephonetype));//将未被删除数据写入输出文件对象中}file.read((char*)&telph,sizeof(telephonetype));//继续读出数据}file.close();outfile.close();remove(telph.dat);//删除文件rename(tem.dat,telph.dat);//重新命名tem.dat文件为telph.dat;file.open(
本文标题:C++电话本的程序设计报告
链接地址:https://www.777doc.com/doc-6351112 .html