手机通讯录系统
1、设计目的与要求
1.1题目与设计要求
我们设计的程序为手机通讯录系统,这是使用C语言写成。本程序具有和一般的通讯录一样的功能,有最基本的数据添加、修改、查看、删除等功能。通过对程序的设计的目的是为了提高我们对C语言的整体把握与应用。能把学会的知识真正的会应用。
1.2 本程序涉及的知识点
1 | If语句 switch语句 for循坏 do…while循坏 goto语句 |
2、功能设计
2.1 总体设计
整个系统可以设计为数据添加模块、数据修改模块、数据删除模块、数据查看模块文件写入与读取。如图1所示.
2.2 详细设计
(1)数据添加模块
首先,查看信息条数是否超过15,如果超过,则提示“通信录已满!”,返回上级菜单;否则,从通讯录末尾开始顺序添加信息。每添加完一条记录,都会询问是否继续添加。如果是,则继续添加。否则返回主菜单。同时把所有数据重新写入文件。
(2)数据修改模块
修改通信录信息,则需要读文件。然后选择要修改的信息,进行修改。修改完毕后,所有数据重新写入文件。且返回主菜单。
(3)数据删除模块
通过菜单选择删除操作。在删除模块中我们设置了两个选项。删除指定数据和全部删除。若选择删除指定数据,则会提示输入要删除的条数,然后删除。若选择删除全部记录,则会把所有记录清空。每次操作完后,都会重新把数据写入文件并返回主菜单。
(4)数据查看模块
通过菜单选择查看信息,可以选择按姓名查看,或者按类别查看。选择按姓名查找则会显示对应的姓名信息。如果选择按类别查看,则可以选择办公类、个人类或者商务类,然后会显示所选类信息列表。这是一个查找与显示的过程,在手机通信录文件中通过比对查找相应类型符合的记录,并输出。
(5)文件的写入与读取
首先每次运行程序,都会先检测“通讯录”文件是否存在。若存在,则先读取文件。若不存在,则会先新建一个空白文件。然后在每次操作后都会重新把数据写入文件。确保了数据的安全性。防止程序意外退出或电脑断电等造成数据丢失。
3、程序实现
3.1 程序实现时应考虑的问题
每次操作后回到主菜单
如何实现退出
- 每次操作后如何把数据写入文件
- 读取文件时如何统计数据条数
- 实现多级菜单
- 如何实现全部删除
- 如何实现分类查询
3.2任务分工及源代码说明
曹世宏 负责:文件的写入和读取,以及对整个程序的整合调试
在我设计此段代码时我遇到了很多问题,首先是在程序运行时就要读取文件信息,因为刚开始做的为只读方式,所以如果没有文件就会出错,后来经过改正,没有文件的话就新建一个空白文件,这个问题就解决了。在写文件上,刚开始能把数据都写写进去,但只要重新修改程序中的数据后,原来的数据就没了。经过我的反复调试检查发现,是因为每次写入文件是没有记录写进了几条数据,所以导致每次读取出错。经过改正,在每次写文件时先把数据总数写进去再写其他数据,在每次读取时,先读取有几条数据,作为判断条件,然后就能按顺序都能读取出来。最后都调试好后,考虑到文件的安全性,我在每次调用其他函数后都会写一次数据,防止数据的丢失。
1 | 文件读取: |
程文辉 负责:数据查看模块
1 | 查看输出: |
程兴旺 负责:数据添加模块、数据删除模块
1 | 信息添加: |
董泽琦 负责:数据修改模块
1 | void Xiugai()/*修改信息*/ |
4、程序测试结果
4.1显示所有记录
这个功能可以显示出所有的已经存储在文件中的记录,在菜单选项中选择1,就会显示出所有记录。程序运行结果如 图4.1
4.2添加功能
这个功能可以实现顺序添加信息。在主菜单下选择2添加,程序首先会判断文件中有几条数据,然后能从末尾开始添加,在每次添加完记录后,会提示是否继续添加。若选择1是,则会按顺序继续添加。若选择2否,则会返回主菜单。程序运行结果如图4.2。
4.3插入功能
这个功能可以实现在任何位置插入记录。在主菜单下选择3,就会进入此功能,首先会然用户选择想要插入的位置,然后进行数据输入,输入完成后,在此记录以后的所有数据向后移动一位,这就实现了数据插入。同时返回主菜单。程序运行结果如图4.3。
4.4修改功能
这个功能可以实现对数据的修改。在主菜单下选择4,就会进入修改功能,首先会让用户查找想要修改的记录,通过查找姓名找出此记录,然后重新输入新的信息实现对数据的修改,同时返回主菜单。程序运行结果如图4.4。
4.5删除功能
这个功能可以实现对数据的删除。在主菜单下选择5.删除,就会进入删除功能。首先会进入二级菜单,让用户选择删除的方式。若选择1.按指定条数删除,则会让用户输入要删除的记录,回车确认删除,提示“删除成功!”并返回主菜单,程序运行结果如图4.5.1。此算法通过让删除以后的所有数据向前移动一位来实现删除。 若在二级菜单下,用户选择2全部删除,为了方式误删,是设置了三级菜单是否确认删除,选择1是,则所有记录删除,提示“删除成功!”返回主菜单。选择2.否,则不删除直接返回主菜单。程序运行结果如 图4.5.2.
4.6查询功能
这个功能可以实现对数据的查找。在主菜单下选择6.查询,会进入查询菜单,若选择1.按姓名查询,则会让用户输入要查询的姓名,并显示出此人所有信息,同时返回主菜单。此功能是通过输入的姓名与所有数据进行对比,如果有则查找成功输出,如果没有则提示没有此人记录。程序运行结果如下图4.6.1。在查询菜单下,还设置了2.按类别查询。进入此功能后会让用户选择要查询的类别1.办公类,2. .个人类,3商务类。选择相应的序号会显示出此类别的所有记录,若没有相应类别记录会提示“没有此类记录!”。程序运行结果如下图4.6.2
4.7退出系统
在主菜单下选择7.保存并退出,会保存数据并退出系统。程序运行结果如 图4.7。
5、总结
从拿到这个作业时,我们规划好了小组。都很有信心去完成这个作业。以此来验证我们上一学期的学习成果。在开始时,我们查阅了一些资料并且进行了分工。我们先讨论了整个程序的框架,然后各自开始去完成自己的模块。在最后我们进行了整合。这也是最关键最难得一步。在这个过程中我们遇到了很多问题。比如,变量不统一;文件指针全局声明;还有在文件读写方面出现了许多问题,不能准确读取文件中有几个记录等。对于这些问题我们小组成员进行了讨论,经过一次次的调试,最终终于程序很好的做了出来。通过解决问题,我们更加深了对C语言的认识。对于以前学到的知识能熟练地运用。通过这次的小组模式,我们更感受到了小组成员团结合作的重要性。这将在以后的生活中也对我们有很大帮助。在今后我们将继续合作学习研究C语言。共同学习,共同进步。
6、全部代码
1 |
|
参考文献
[1]谭浩强著. C程序设计(第四版).北京:清华大学出版社,2010.6