通讯录管理系统C语言课程设计
这是本人之前做的一个课设,代码比较繁琐(由于当时不想花太多时间以致没有进行压缩)一些但思路比较清晰
注:给出的代码可能由于种种问题复制代码出问题,在此给出源文件:链接:http://pan.baidu.com/s/1pKInR3X 密码:yv6w
一、 课程设计的目的和要求
目的:在已学C语言的基础上,编写一个具有实际功能的程序,掌握实际应用程序开发的基本流程——构思,设计框架,所用知识,程序编写,编译测试,程序完成。
要求:编写一个通讯录,完成显示、添加、查找和修改等操作
二、设计
本次课程设计的通讯录管理系统,本小组共提供了九种基本的功能:
1. 添加联系人
2. 查询联系人
3. 删除联系人
4. 修改联系人信息
5. 输出联系人列表
6. 排序
7. 写入文件
8. 读取文件
9. 通话记录
现在对每个功能进行分析:
添加联系人:
以手机号码为例:其中的cala函数用于计算字符串的长度,这里指手机号的长度。
查询联系人:
首先,我们查询的方式可能不同:有些人想查姓名,而有些人查手机号,有些
遍历整个链表,依次进行比对,比对成功便输出此项的相关信息,若失败,则
提示“该联系人不存在”。
删除联系人:
删除联系人也很简单,也就是删除链表中的一项,其思路如以下图示:
修改联系人信息:
和查询一样,首先遍历找到所输入的信息项,再进行修改。
输出联系人列表:
通过head指针直接将链表输出。
排序:
如果想要交换链表中两项的位置,则:
写入文件:
通过fp=fopen(filename,"a+")打开文件,通过fprintf按所输入形式往文件写入信息。
读取文件:
通过fp=fopen(filename,"a+")打开文件,通过fgets获取文件中的信息,并用printf
输出。
通话记录:
这里我们设计了一个模拟通话,用一个随机数来表示,假如随机数的值位于链表中项数之内,则在相应的文件中写入联系人信息,如果位于链表项数之外,则在相应文件中写入未知联系人。
三、编码
提示:由于程序的提示信息比较多,同时,为了使得该程序功能更加全面,添加了许多判断,程序比较繁琐,代码量也比较多。
四、调试和运行
本次课设调试基本上没有出现什么大问题,都是一些比较细微的问题,其中某个问题是值得注意的,描述如下:
while(p!=NULL&&strcmp(p->chat.name,nm)!=0)p=p->next;//这是正确的形式
而之前,我是这样写的 while(strcmp(p->chat.name,nm)!=0&&p!=NULL)p=p->next;
这就有个问题,当我们的链表到达链尾时,由于其为空,故当我们先判断strcmp(p->chat.name,nm)!=0时会出现错误,因为此时的p不指向任何一个地址。
五、总结(心得体会)
此次的通讯录管理系统总体的难度并不是很难,难的是不断地填充必要或是人性化的功能,以及各个部分分工合理不发生冲突。当然,最重要的还是整个过程沉得下心的心性。
另外,当我们真正的进入社会工作时,绝没有像我们这次课设一样简单,我们如今的工作量或许只是将来我们某个项目中毫不起眼的一项,或许根本就不及,所以,社会工作经验是很重要的。