算法与编程实习报告 下载本文

一、题目:通信录

目的与要求

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 #include #include #define MAX 10

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);

for(i=0;i