c语言课程作业 电话簿哦Word文档下载推荐.docx
- 文档编号:8285082
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:10
- 大小:69.09KB
c语言课程作业 电话簿哦Word文档下载推荐.docx
《c语言课程作业 电话簿哦Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言课程作业 电话簿哦Word文档下载推荐.docx(10页珍藏版)》请在冰点文库上搜索。
4.程序测试及分析.................................4
5.设计总结.......................................5
三、附录..............................................6
四、参考文献...........................................7
一、课程设计目的与任务
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,通过接近实际项目的训练,锻炼的分析解决实际问题的能力。
在设计中,利用学到的编程知识,逐步学习面向对象程序设计中,类的设计,程序的编写,以及调试排错、测试等内容。
从实践中掌握程序设计的方法,提高学生面向应用的实践编程的能力。
二、课程设计内容
1、本设计题目的主要内容
编写一个电话簿,利用文本文件存储电话薄数据,具有添加、删除、显示和查询联系人号码的功能。
(1)将电话薄数据和相应的函数封装在类中,改写程序使之结构化。
(2)增加记录修改功能,能选择修改用户的姓名、电话。
(3)增加录入时间的显示及存储。
(4)增加缺省的查询方式,即查询时只输入姓名的首字母,所有符合这一条件的电话资料均在屏幕上显示
(5)删除数据时要实现询问,同意就输入Y不同意就输入N.
在编写过程中会用到指针、数组、类、结点来实现程序的运行。
2、设计思想与程序架构
本程序共有八个模块,用来实现电话薄的功能。
电话薄要求设计实现的功能包括增加、查询、删除数据等功能,这些功能都是由函数来实现的。
在实现过程中要定义电话薄类。
对类进行定义进行封装,我是根据课程设计书上的提示,通过看书和与同学讨论,最后比较清楚地明白了类的封装方法。
我在封装时,在类中定义了一些内联函数,并且把函数都定义为公有成员,这样可以方便使类外的函数使用成员数据。
在增加修改功能时,我定义了friend_node:
:
modify_record函数,用来修改用户的姓名、电话。
在函数中,我运用了if-else,switch等语句并对函数进行了重载。
并且本程序可以选择修改,姓,名,电话。
首字母查询,这是一个比较难解决的问题,我使用了与全名查找基本相同的函数,我只要求姓相同,全名查找要求姓和名要全部相同。
我在这个的解决上还存在一些问题,这证明程序还是不够完善。
这说明我对指针的使用还不够好。
程序运行过程都是通过按Enter来实现的,在主界面,通过输入不同的选择来实现各项功能的应用。
在这个设计思想中,只画出了其中一个模块的设计构图,在删除电话薄记录中,还实现了对于是否删除的询问操作,只有当你同意后他才会进行操作。
在修改电话薄记录菜单中,你选择你要修改的部分,程序就会自动实现记录的修改。
本程序还增加了帮助菜单,学生可通过帮助菜单找到方法。
3、软件使用说明书
本软件用于电话薄的显示、增加、删除内容,查找,通过主菜单实现对各项功能的应用。
程序主界面的八个菜单可以让学生非常容易的学会操作,选择每个菜单后就可以根据自己的需要对电话薄进行操作。
#include<
fstream.h>
#include<
conio.h>
iostream.h>
iomanip.h>
string.h>
stdlib.h>
time.h>
用来定义全程结构及变量,classfriend_node用来定义类类型,包括姓,名和电话号码,定义时间指针,定义姓,名和电话号码的类型,插入结点,对各结点进行删除,链接操作。
编写程序的主界面,voidfriend_node:
welcome()定义开头,
{
cout<
<
------电话薄管理-------"
endl<
"
===================="
endl;
cout<
"
1>
>
增加新的电话簿记录\n\n"
;
2>
显示所有电话簿记录\n\n"
3>
查找确定电话簿记录(姓名精确查找)\n\n"
4>
删除确定电话簿记录(通过姓氏查找)\n\n"
5>
修改确定电话簿记录(姓名精确查找)\n\n"
6>
帮助\n\n"
7>
退出系统\n\n"
8>
智能查询\n\n"
cout<
---------------------------请选择:
cin>
choice;
handle_choice(choice);
}while(choice!
=7);
编写程序的电话薄菜单,共编写了八个菜单项,1、增加新的电话簿记录2显示所有电话簿记录3、查找确定电话簿记录(姓名精确查找)4、删除确定电话簿记录(通过姓氏查找)5、修改确定电话簿记录(姓名精确查找)6、帮助7、退出系统8、智能查询。
编写完菜单项后,通过按Enter进入后面的内容。
为每个菜单项编写合适的程序,在编写过程中还会用到指针,数组,结点等各种函数,在编写函数时,要区分大小写,以免造成程序不能运行。
程序编写完成后就可编译并运行了。
4、程序测试及分析
1、运行程序后显示主界面:
欢迎使用电话薄管理程序完美中文版
学号:
201203014096姓名:
卫文雪
----按回车键继续----
2、在主界面中,通过按Enter进入电话薄管理菜单界面:
--------------------电话薄管理----------------------
1>
增加新的电话薄记录
2>
显示所有电话薄记录
查找确定电话薄记录(姓名精确查找)
删除确定电话薄记录(通过姓氏查找)
修改确定电话薄记录(姓名精确查找)
帮助
退出系统
智能查询
------------------------------------------------------请选择:
3、例如,你要选择删除确定电话薄记录,就输入4按Enter进入界面,通过输入实现结果:
请输入你想要删除的联系人的姓:
王
找到记录
王明
1234567
确定要删除该记录吗(Y\N)Y
4、确定完成后返回主界面,若想修改电话薄记录,就在主界面输入5,在界面中输入想要修改的内容:
请输入你想要查询(或修改)者的姓:
请输入你想要查询(或修改)者的名:
明
找到信息
-------------------------------------------------------------------
姓名电话号码
王明123456
你想要修改当前记录的哪一项?
姓:
名:
电话:
5、确定了要修改的内容后,就可以进行修改了
------------------------------------------------------------------
1.姓:
2.名:
3.电话:
1
请输入新的姓:
李
修改成功!
李明
123456
6、任务完成后,返回主界面选择自己需要的菜单项。
在程序编译时通常发生了语法错误,经过检查发现是因为在编写的过程中,将大小写搞错了有的是程序符号写错了。
在编写程序中还发现了自己对于指针和数组方面还不能很好的应用。
所以要求我们要认真编写每一个代码,遇到的不能解决的问题与同学讨论,直到把问题弄懂。
5、设计总结
本程序设计案例设计中,查询是按照输入时的顺序号进行的,也可采用其他的方法实现,例如,通过电话号码进行查询;
程序中每一个人可以有一个电话号码,但最好在一个人名下可以刻录多个电话号码。
在实现实际项目时,一般都要使用文件存储数据,换言之,只要熟练掌握文件的操作,才能胜任开发实现项目的需要。
在程序编写过程中,我发现,不只是难了一点儿。
但是,有难度才有挑战,才有乐趣,不是么?
程序编写完成后,立马被其拥有的函数的数量震撼了。
把它们封装起来费了我不少精力。
但是,看着它们由零散的函数变为整齐的类,就如同看到C语言向C++语言进化。
课程还提出了要增加时间单元。
在VB里面,只需要把一个小钟表图标拖进来就可以了,而在C++里面,我尚且不知如何操作。
最后通过互联网,才算学会在C++中调用时间单元,也算是学了一招吧。
通过这次C++的课程设计,我的知识得到了巩固,同时也学到了很多新知识。
我意识到,我们不应是为了编程而编程,而是为了解决问题而编程。
编出来的程序能够为我们服务,程序才有意义。
在学习C++以前,我认为C++只是在C语言的基础上的一种延伸,认为只要学过C语言,就可以用C语言的那种设计思想来学习C++、设计C++程序。
正是由于抱了这种错误的思想,使我在一开始学习C++的时候遇到了很大的困难,我没有办法体会面向对象的设计思想,我在学习这门课的时候老是想着实现这个函数功能的具体过程,而没太注意对象分类的重要性。
随着课程学习的深入,我感觉到了利用类和对象、继承、封装等一系列知识可以把我们程序中很多繁杂、重复的部分省略掉,还可以解决一些利用面向过程的设计思想无法解决的问题,我自己也试着编写一些小的C++程序,当然在这个过程中遇到了很多困难,其中调试带来的困难让我无法忘记,在调试程序的同时,我也总结出来了一些调试的小技巧,让我在C语言课程设计中也受用匪浅。
在学习这门课的过程中,我感受到了自己亲自动手编程序、调程序的重要性,我们要熟悉C++的语法、体会调试的思想,最好的一个手段就是自己动手编程、调试,这会比我们一味的看书效果好得多。
另外,我还感觉到一个好的程序编出来需要很多人的团结合作。
我在检查自己编写的程序是否有BUG未被找出的时候,我会让我的同学作为一个程序使用者来找出未发现的BUG并提出改进意见,这让我们的工作更加高效。
很高兴能够了解到C++的神奇魅力和面向对象程序设计的独特思想,它为我今后的程序设计奠定了基础。
感谢老师对我们的悉心教授!
三、附录
voidfriend_node:
welcome()
{
cout<
\t\t欢迎使用电话簿管理程序完美中文版"
\t\t学号:
20120014096姓名:
卫文雪"
\t\t\t---按回车键继续---"
以上为程序主界面,
voidhandle_choice(intchoice);
//处理选择
voidadd_record();
//增加记录
voidinsert_node(friend_node*new_rec_ptr);
//插入节点
friend_node*position_insertion_point(charlastname[20]);
//寻找节点插入位置
voidmake_node_new_head(friend_node*new_rec_ptr);
//插入链首
voidadd_node_to_end(friend_node*new_rec_ptr);
//插入链尾
voidmove_current_to_end();
//使当前指针指向链尾
voiddisplay_list();
//显示链表
voiddelete_record();
//删除记录
voiddelete_head_of_list();
//删除链首
voiddelete_end_of_list(friend_node*previous_ptr);
//删除链尾
voiddelete_from_middle_of_list(friend_node*previous_ptr);
//删除链表中一节点
intverify_delete();
//确认是否删除
voiddelete_node(friend_node*previous_ptr);
//删除一节点
voiddelete_list();
//删除链表
jqsearch_by_name();
voidsearch_by_name();
//精确查找某一记录
voidmodify_record();
//修改记录
voidwrite_list_to_file();
//将链表写入文件
voidload_list_from_file();
//从文件中提取链表数据
voidhelp_me();
//帮助文件
voidwelcome();
friendistream&
operator>
(istream&
friend_node&
);
//重载"
函数
};
friend_node*head_ptr;
//全程变量,链头指针
friend_node*current_ptr;
//全程变量,用于指明当前节点在链表中的位置
friend_node*tail_ptr;
//全程变量
friend_node*temp_ptr;
四、参考文献
[1]游洪跃.C++面向对象程序设计实验和课程设计教程[M].2009年2月第1版.北京:
清华大学学研大厦A座,2009年:
105-116.
[2]谭浩强.C++面向对象程序设计[M].2006年1月第1版.北京:
清华大学学研大厦A座,2006年:
20-40.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言课程作业 电话簿哦 语言 课程 作业 电话簿