《面向对象程序设计》课程设计报告要求

上传人:gg****m 文档编号:229668740 上传时间:2021-12-26 格式:DOCX 页数:18 大小:137.31KB
返回 下载 相关 举报
《面向对象程序设计》课程设计报告要求_第1页
第1页 / 共18页
《面向对象程序设计》课程设计报告要求_第2页
第2页 / 共18页
《面向对象程序设计》课程设计报告要求_第3页
第3页 / 共18页
《面向对象程序设计》课程设计报告要求_第4页
第4页 / 共18页
《面向对象程序设计》课程设计报告要求_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《《面向对象程序设计》课程设计报告要求》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计报告要求(18页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计课程设计报告要求1. 问题要求及任务描述1.1题目:电话簿管理程序1.2主要任务:考虑到电话簿里联系人同名的情况:在删除和修改功能里当出现同名时,得让用户自己选择要删除或更改哪个联系人(同名不同人), 这时就得给这些同名的联系人标识,即编号。一开始想到的两个方法 是:一、用整型数组的方法,再用查找功能,查找到一条就把这条通 讯录itemk的k赋值给整型数组元素,退出查找后再利用item整 型数组元素来进行删除或修改。二、是用指向通讯录itemk的指 针数组,这个方法是直接把通讯录itemfk的地址直接赋给指针数 组,再利用指针来进行删除和修改。后来考虑到如果没有同名联系人 或者

2、很少,那这样定义数组会浪费很多内存空间,所以便想到利用动 态数组来处理同名联系人的问题。2. 解决问题的主要思路和方法2.1关键问题:A. 同名联系人怎么根据用户需要删除或修改其中的同名的联系人。B. 在选择修改时,用户选定要修改的项目,输入内容后怎么把修改的内容赋给要修改的联系人而其它内容保持不变?2.2拟采用解决问题的方法:A.利用动态数组,用数组标识同名联系人,给同名联系人编码,输出编码给用户选择。B对于关键问题里的C问题:办法就是再定义几个变量,把不变的值赋给变量,再用enter函数即可,想法倒挺简单,但刚开始没往 这方向想,老是想着有没有个参数定义办法是可以这样赋值的,耗了 些时间在

3、这上面。2.3主要算法和处理流程图:供用户选择时,主要用了 switch0函数来实现,如修改联系人时要修改姓名,电话,qq,还是地址?这时就是用switch0函数来 实现的。当然,用的最多的就是for循环,它的作用很大很多,如修改函数里的判斷重名联系人的人数,等等。关键数据流程图:1.添加联系人开始/输入姓名/输入号码/ /输入QQ /输入地址/调用Address类 中的Enter函数调用Address类 中的Set函数结束2.修改联系人For掘 同名用 人数Si环确定E系人的ium定义动态数组 来标识同名联 系人3. 程序实现3.1程序实现时应考虑的问,3.2主要源代码及说明:Ost rea

4、m &opera tor(os tream &output address & addr) /重载直接用cout输出通讯录,方便后面通讯录的输出。outputset iosf I ags (ios: I eft) setw (21) addr. getname () set w (21) addr. getphone () setw (16) addr. getq () setw (81) addr. getwher e();return output;/ /添加联系人void book: :enter ()string name,phone, q, where;for (int t二emnu

5、m;t+)i f (findfree (t)!二-1)coutH电话簿中有,num,条通信录end I ;coutH请输入联系人姓名:”;cinname;coutH请输入联系人电话:”;cinphone;coutH请输入联系人QQ:cinq;coutH请输入联系人地址:”;cinwhere;num+;break;e I secont i nue;if (t二二itemnum)cout通讯录已满! endI;e I seitemt enter(name, phone,q, where);set () ;/将这条通讯录状态置为非空,别漏了 !/删除联系人void book:de I ()str i

6、ng s;int b,t二0,snum二0;if (! num)cout 电话簿为空! end I;e I secout ”电话簿中有num 条通信录end I;cout”请输入姓名: end I ;cins;/区分同名联系人for (int k二0;kitemnum;k+)if (! i temk i sempty () &i temk. getname ()二二s) snum+;/同名的联系人的人数int *p=new int snum;/申明动态数组,节省存储空间for ( k二0;kitemnum;k+)if (! i temk i sempty () &i temk. getname

7、 ()二二s)pt=k; t+;/标识同名联系人i f (t=0)cout无此联系人! Hend I;else if(t=1)coutset iosf I ags (ios: I eft) setw(21)姓名setw (21) H 电话,rsetw(16) ,QQ,setw (81)地址 Hendl;cout i tem p 0 end I ;sure(p0, s);e I secoutset iosf I ags (ios: I eft) setw (8)编号Hsetw (21)“姓名 Hsetw (21) H 电话 Hsetw (16) ,QQ,setw (81) “地 址Hend I

8、;for (int I=0;Ii;j-一)/刚开始用了 “j二itemnum”,出现的问题是:添加联系人之后再按3显示通 信录时,联系人出现了,但是不能再重新输入,写着“press any key to continue”,细节问题,注意!i f (I ist j getname () fname;file.open (fname, ios:out);if (!file)cout打开文件失败! nend I;cin. get ();e I sefor (int i二0;um;i+)if (fi le&!fi le. eof ()file wr i te(re i nterprecas iXco

9、nst char * (&itemij), s izeof(address);coutH保存成功! Hend I ;file c I ose ();11/读取void book: load ()ifstream file;char fname41;coutH输入读取的文件名:”;cinf name;file.open (fname, ios:in);if (!file)cout打开文件失败! end I ; cin. get ();e I senum二0;for (int i二0;iitemnum;i+)if (fi le&!fi le. eof ()file. read (re interp

10、ret_caschar* (&itemi),s i zeof (address); if (! itemi. isempty ()num+;cout,r读取成功! ,rend I ;file, c I ose ();/查找联系人void book:f ind ()string n, p, q ;int m 二 0,t;if (!num)cout电话本为空! end I;coutH1.按姓名查找2.按电话查找3按qq查找 请输入查 找的方式:Hendl;c i nt;/查找方式选择switch (t)case 1:coutH请输入要查找的联系人的姓 名:Hendl ;c i nn;for (int k=0;k i temnum;k+)if (! i tem k. i semp ty () & i tem k .get name ()二二 n) cout i tem k end I ; m+;i f (m=0)cout无此联系人! end I ; m二 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号