c语言课程作业 电话簿哦.docx

上传人:b****4 文档编号:5427630 上传时间:2022-12-16 格式:DOCX 页数:10 大小:69.09KB
下载 相关 举报
c语言课程作业 电话簿哦.docx_第1页
第1页 / 共10页
c语言课程作业 电话簿哦.docx_第2页
第2页 / 共10页
c语言课程作业 电话簿哦.docx_第3页
第3页 / 共10页
c语言课程作业 电话簿哦.docx_第4页
第4页 / 共10页
c语言课程作业 电话簿哦.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

c语言课程作业 电话簿哦.docx

《c语言课程作业 电话簿哦.docx》由会员分享,可在线阅读,更多相关《c语言课程作业 电话簿哦.docx(10页珍藏版)》请在冰豆网上搜索。

c语言课程作业 电话簿哦.docx

c语言课程作业电话簿哦

齐鲁工业大学

信息学院

 

课程设计报告

 

课程名称:

面向对象程序设计

题目名称:

电话薄

学生姓名:

卫文雪

学生学号:

201203014096

专业班级:

计科(高职)12-3

指导教师:

任晓强

完成日期:

2013.6.26

目录

 

1、课程设计目的与任务.................................1

2、课程设计内容.......................................1

1.本设计题目的主要内容...........................1

2.设计思想与程序架构.............................1

3.软件使用说明书.................................3

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

#include

#include

#include

#include

#include

#include

用来定义全程结构及变量,classfriend_node用来定义类类型,包括姓,名和电话号码,定义时间指针,定义姓,名和电话号码的类型,插入结点,对各结点进行删除,链接操作。

编写程序的主界面,voidfriend_node:

:

welcome()定义开头,

{

cout<<------电话薄管理-------"<

cout<<"1>>>>>增加新的电话簿记录\n\n";

cout<<"2>>>>>显示所有电话簿记录\n\n";

cout<<"3>>>>>查找确定电话簿记录(姓名精确查找)\n\n";

cout<<"4>>>>>删除确定电话簿记录(通过姓氏查找)\n\n";

cout<<"5>>>>>修改确定电话簿记录(姓名精确查找)\n\n";

cout<<"6>>>>>帮助\n\n";

cout<<"7>>>>>退出系统\n\n";

cout<<"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>>>删除确定电话薄记录(通过姓氏查找)

5>>>修改确定电话薄记录(姓名精确查找)

6>>>帮助

7>>>退出系统

8>>>智能查询

------------------------------------------------------请选择:

3、例如,你要选择删除确定电话薄记录,就输入4按Enter进入界面,通过输入实现结果:

请输入你想要删除的联系人的姓:

找到记录

王明

1234567

确定要删除该记录吗(Y\N)Y

4、确定完成后返回主界面,若想修改电话薄记录,就在主界面输入5,在界面中输入想要修改的内容:

请输入你想要查询(或修改)者的姓:

请输入你想要查询(或修改)者的名:

找到信息

-------------------------------------------------------------------

姓名电话号码

-------------------------------------------------------------------

王明123456

你想要修改当前记录的哪一项?

姓:

名:

电话:

5、确定了要修改的内容后,就可以进行修改了

请输入你想要查询(或修改)者的姓:

请输入你想要查询(或修改)者的名:

找到信息

------------------------------------------------------------------

姓名电话号码

------------------------------------------------------------------

王明123456

你想要修改当前记录的哪一项?

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<

cout<<"\t\t欢迎使用电话簿管理程序完美中文版"<

cout<<"\t\t学号:

20120014096姓名:

卫文雪"<

cout<<"\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();//删除链表

voidfriend_node:

:

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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1