一、题目:通信录
目的与要求
1.目的:
通过编写程序熟悉文件的访问、文本文件的读写。掌握如何将字符串写入文本文件,从文本文件中读入字符串、随机访问文件中的数据以及修改文件中的内容。培养学生综合利用C语言对文件进行操作的能力。
2.基本要求:
1)要求用C语言编程,在Visual C++环境下调试完成;
2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数 来完成; 3)要求编写的程序规范、有良好的可读性和可移植性。
设计方法和基本原理
1.课题功能描述:本程序的功能是对文件进行灵活操作。
2.问题详细描述
从键盘读入姓名、电话号码和住宅地址,人数要10人以上。输入的符号由英文字母、数字及中文构成。将他们写入一个文件。如果这个文件不存在,就写入新文件。如果文件已存在,就将它们写入该文件。程序课添加新的姓名、电话号码和住宅地址。
3.问题的解决方案
按照程序要求,提供参考如下:
(1)如果没有文件名,要求用户输入。 (2)打开文件并显示文件的内容。 (3)将字符串写入文本文件。 (4)从文本文件读取字符串。 (5)更新文件的内容。
主要技术问题的描述
主要问题在于:
(1)修改文件内容时,当新纪录与旧记录的长度不同时,需统计字符串长度。 (2)查找文件中的内容时,可在文件中的设定位置,提高搜索速度。 (3)建议使用结构体。
创新要求
实现程序功能后,可进行创新设计: (1)提取指定的姓的所有电话号码。 (2)可删除已有的项。
(3)可在文件的每条记录中插入图片,进行图片信息提取并利用图片进行检索(进一步创新要求)。
二、功能描述
本程序用于实现对通信录信息的处理,包括查找、修改、删除通信信息等功能
三、解决方案(流程图)
结束 4.del函数: 删除通信信息 2.inquiry函数: 查询通信信息 1.enter函数: 录入通信信息 主函数 开始
3.modify函数: 修改通信信息
四、主要函数描述
1.main函数:负责定义变量,函数的调用及结果的显示
2.hello函数:用于显示登录界面 3.enter函数:用于录入通信信息 4.inquiry函数:用于查询通信信息 5.Modify函数:用于修改通信信息 6.del函数:用于删除通信信息
7.find_free函数:用于检测通信录里是否有空栏
五、主要技术问题
程序如下:
#include
int hello(void);//系统界面
void found(void);//录入通信信息 void inquiry(void);//查询通信信息 void modify(void);//修改通信信息 void del(void);//删除某个通信信息
int find_free(void);//检测通信录里是否有空栏 struct people{ //通信录结构体 char name[30];//姓名 char phone[30];//电话 char addr[30];//住宅地址 }one[MAX];
int main()//主函数 {
int p;
printf(\欢迎登陆通讯录系统*****\\n\ printf(\信息录入;\\n\ printf(\信息查询;\\n\ printf(\信息修改;\\n\ printf(\信息删除;\\n\ printf(\退出系统;\\n\
printf(\ printf(\请输入你需要的服务:\\n\ for(;;)//用于延时 {
p=hello();//调用hello()函数进入界面 switch(p){
case 1:found();break; case 2:inquiry();break; case 3:modify();break; case 4:del();break; case 5:exit(0); } }
return 0; }
int hello() //hello()函数:显示登录界面 {
char a[10]; int b;
do {
gets(a); b=atoi(a); }while(b<1||b>5); return b; }
/*found()函数:录入通信信息*/ void found() {
int p;
p=find_free();//调用find_free()函数,检测通信录里是否有空栏 if(p==MAX) {
printf(\信息储存已满,需要删除其他的,才能执行录入操作\\n\ return; }
gets(one[p].name); gets(one[p].phone); gets(one[p].addr); }
/*inquiry函数:查询通信信息*/ void inquiry() {
char s[30]; int p,i; gets(s);
for(i=0;i p=strcmp(s,one[i].name);//比较字符串s和one[i].name if(!p) { printf(\ } } } /*modify()函数:修改通信信息*/ void modify() { int p,i; char s[30]; gets(s);