C语言程序设计通讯录实践报告.docx
- 文档编号:23103643
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:23
- 大小:94.09KB
C语言程序设计通讯录实践报告.docx
《C语言程序设计通讯录实践报告.docx》由会员分享,可在线阅读,更多相关《C语言程序设计通讯录实践报告.docx(23页珍藏版)》请在冰豆网上搜索。
C语言程序设计通讯录实践报告
一、任务与具体要求
设计一个某公司通讯录管理系统,以解决传统客户信息管理方式的诸多不便和弊端。
二、设计说明书包括的内容
1.问题概述
2.系统需求分析
三、应完成的图纸
功能模块图
四、评语及成绩
指导教师(签字)_____________
________年____月____日
目录
1.课题题目及任务要求
2.系统需求分析
3.系统概要设计
4.源程序
5.系统测试及调试
6.编程遇到的困难及解决办法
7.总结心得
8.参考文献
1课题题目及任务要求
设计一个某公司通讯录管理系统,以解决传统客户信息管理方式的诸多不便和弊端。
2系统需求分析
在客户的日常管理中,经常需要对客户的相关信息进行处理,采用传统的手工记录,查询方式,显然有很多不便,如多次的增、删、改可能使记录变得混乱,为今后的信息提取带来很多麻烦。
为了解决这一问题,可采用现代化的手段——计算机进行系统的管理。
这样可大大提高管理的质量和效率,并且使客户的日常管理也从手工操作中解脱出来,减少纸制材料的数量,对日常信息的查询、方便、快捷。
因此,基于这些方面的考虑,决定开发本系统。
3系统概要设计
3.1系统的主要功能
系统的主要功能是实现基本的客户的数据管理和维护。
主要包括:
1.添加成员的基本信息
2.查看成员的信息
3.删除信息
4.修改成员信息
5.保存信息和退出系统等功能
3.2系统的总体结构
添加:
可以添加客户信息记录,依次输入姓名、年龄、电话号码、地址、电子邮箱后,会提示是否继续添加。
显示:
可以以表格形式输出所有客户信息里的记录
删除:
输入欲删除的那个人的名字或者年龄后,会自动删除他(她)的记录内容
查询:
可以选择用姓名、电话二种方式查询
保存:
,输入文件名(带后缀名)后,即可将客户信息信息保存
3.3系统软硬件环境
本程序所适用的计算机系统软硬件环境要求为:
硬件环境:
Pentium III 500以上内存:
256M
软件环境:
WindowsXP
3.4数据结构设计
客户信息数据结构类型如下:
structtelephone
{
charclient_name[20];
charclient_telephone[15];
charclient_address[30];
};
4源程序
#include
#include
#defineN100
voidinput();
voidamend();
voiddelete_client();
voiddemand_client();
voidcollect_telephone();
voidsave_client(structtelephonemessage);
voiddemand_name();
voiddemand_telephone();
structtelephone
{
charclient_name[20];
charclient_telephone[15];
charclient_address[30];
};
voidmain()
{
charchoice[10]="";
intlen=0;
while(choice[0]!
='0')
{
printf("\t==========电话本号码查询系统=============\n");
printf("\t\t1、添加新联系人\n");
printf("\t\t2、修改联系人信息\n");
printf("\t\t3、删除联系人信息\n");
printf("\t\t4、联系人信息查询\n");
printf("\t\t5、联系人信息显示\n");
printf("\t\t0、退出\n");
printf("\t=========================================\n");
printf("请选择(0-5):
");
scanf("%s",choice);
len=strlen(choice);
if(len>1)
{
printf("请输入0-5之间的整数\n");
printf("按任意键返回主菜单……\n");
getchar();
getchar();
continue;
}
switch(choice[0])
{
case'1':
input();
break;
case'2':
amend();
break;
case'3':
delete_client();
break;
case'4':
demand_client();
break;
case'5':
collect_telephone();
break;
default:
break;
}
}
}
voidinput()
{
structtelephonemessage;
charreply='y';
charsave='y';
while(reply=='y')
{
printf("用户姓名:
");
scanf("%s",message.client_name);
printf("电话号码:
");
scanf("%s",message.client_telephone);
printf("通讯地址:
");
scanf("%s",message.client_address);
save_client(message);
printf("要继续吗?
(y/n):
");
scanf("%c",&reply);
}
printf("按任意键返回主菜单……\n");
getchar();
getchar();
}
voidsave_client(structtelephonemessage)
{
FILE*fp;
fp=fopen("message.txt","a+");
if(fp!
=NULL)
{
fwrite(&message,sizeof(structtelephone),1,fp);
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
}
voidamend()
{
structtelephonemessage;
FILE*fp;
charamend_name[20];
charreply='y';
charfound='y';
charsave='y';
intsize=sizeof(structtelephone);
while(reply=='y')
{
found='n';
fp=fopen("message.txt","r+w");
if(fp!
=NULL)
{
printf("\n请输入要修改的姓名:
");
scanf("%s",amend_name);
while((fread(&message,size,1,fp))==1)
{
if((strcmp(amend_name,message.client_name))==0)
{
found='y';
break;
}
}
if(found=='y')
{
printf("==========================================\n");
printf("\n用户姓名:
%s\n",message.client_name);
printf("\n电话号码:
%s\n",message.client_telephone);
printf("\n通讯地址:
%s\n",message.client_address);
printf("==========================================\n");
printf("修改用户信息:
\n");
printf("\n用户姓名:
");
scanf("%s",message.client_name);
printf("\n电话号码:
");
scanf("%s",message.client_telephone);
printf("\n通讯地址:
");
scanf("%s",message.client_address);
printf("\n要保存吗?
(y/n):
");
scanf("%c",&save);
if(save=='y')
{
fseek(fp,-size,1);
fwrite(&message,sizeof(structtelephone),1,fp);
}
}
else
{
printf("无此人信息!
\n");
}
}
else
{
printf("打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("要继续吗?
(y/n):
");
scanf("%c",&reply);
}
printf("按任意键返回主菜单……\n");
getchar();
getchar();
}
voiddelete_client()
{
structtelephonemessage[N];
structtelephonetemp_str;
structtelephonedelete_str;
inti=0,j=0;
charreply='y';
charfound='y';
charconfirm='y';
chardelete_name[20];
FILE*fp;
while(reply=='y')
{
fp=fopen("message.txt","r");
if(fp!
=NULL)
{
i=0;
found='n';
printf("\n请输入姓名:
");
scanf("%s",delete_name);
while((fread(&temp_str,sizeof(structtelephone),1,fp))==1)
{
if((strcmp(delete_name,temp_str.client_name))==0)
{
found='y';
delete_str=temp_str;
}
else
{
message[i]=temp_str;
i++;
}
}
}
else
{
printf("打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
if(found=='y')
{
printf("==========================================\n");
printf("用户姓名:
%s\n",delete_str.client_name);
printf("电话号码:
%s\n",delete_str.client_telephone);
printf("通讯地址:
%s\n",delete_str.client_address);
printf("==========================================\n");
}
else
{
printf("无此人信息,按任意键返回……\n");
getchar();
break;
}
printf("确定要删除吗?
(y/n):
");
scanf("%c",&confirm);
if(confirm=='y')
{
fp=fopen("message.txt","w");
if(fp!
=NULL)
{
for(j=0;j
{
fwrite(&message[j],sizeof(structtelephone),1,fp);
}
printf("记录已删除!
!
!
\n");
}
else
{
printf("打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
}
printf("要继续吗?
(y/n):
");
scanf("%c",&reply);
}
printf("按任意键返回主菜单……\n");
getchar();
}
voiddemand_client()
{
intchoice=1;
while(choice!
=3)
{
printf("电话查询菜单\n");
printf("1按联系人姓名查询\n");
printf("2按联系人电话号码查询\n");
printf("3返回主菜单\n");
printf("请选择(1-3):
");
scanf("%d%*c",&choice);
if(choice>3)
{
printf("请输入1-3之间的整数\n");
printf("按任意键返回菜单……\n");
getchar();
continue;
}
if(choice==1)
{
demand_name();
}
elseif(choice==2)
{
demand_telephone();
}
}
}
voiddemand_name()
{
structtelephonemessage;
FILE*fp;
charamend_name[20];
charreply='y';
charfound='y';
while(reply=='y')
{
found='n';
fp=fopen("message.txt","r+w");
if(fp!
=NULL)
{
printf("\n请输入姓名:
");
scanf("%s",amend_name);
while((fread(&message,sizeof(structtelephone),1,fp))==1)
{
if((strcmp(amend_name,message.client_name))==0)
{
found='y';
break;
}
}
if(found=='y')
{
printf("==========================================\n");
printf("用户姓名:
%s\n",message.client_name);
printf("电话号码:
%s\n",message.client_telephone);
printf("通讯地址:
%s\n",message.client_address);
printf("==========================================\n");
}
else
{
printf("无此人信息!
\n");
}
}
else
{
printf("打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("要继续吗?
(y/n):
");
scanf("%c",&reply);
}
printf("按任意键返回主菜单……\n");
getchar();
getchar();
}
voiddemand_telephone()
{
structtelephonemessage;
FILE*fp;
chartelephone[20];
charreply='y';
charfound='y';
while(reply=='y')
{
found='n';
fp=fopen("message.txt","r+w");
if(fp!
=NULL)
{
printf("\n请输入电话号码:
");
scanf("%s",telephone);
while((fread(&message,sizeof(structtelephone),1,fp))==1)
{
if((strcmp(telephone,message.client_telephone))==0)
{
found='y';
break;
}
}
if(found=='y')
{
printf("==========================================\n");
printf("用户姓名:
%s\n",message.client_name);
printf("电话号码:
%s\n",message.client_telephone);
printf("通讯地址:
%s\n",message.client_address);
printf("==========================================\n");
}
else
{
printf("无此电话号码的有关信息!
\n");
}
}
else
{
printf("打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("要继续吗?
(y/n):
");
scanf("%c",&reply);
}
printf("按任意键返回主菜单……\n");
getchar();
getchar();
}
voidcollect_telephone()
{
structtelephonemessage;
FILE*fp;
fp=fopen("message.txt","r");
if(fp!
=NULL)
{
while((fread(&message,sizeof(structtelephone),1,fp))==1)
{
printf("\n用户姓名:
%s\n",message.client_name);
printf("联系电话:
%s\n",message.client_telephone);
printf("通讯地址:
%s\n\n",message.client_address);
}
}
else
{
printf("打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("按任意键返回主菜单……\n");
getchar();
getchar();
}
5系统测试及调试
主菜单
1.添加新联系人
2.修改联系人信息
3.删除联系人
4.联系人信息查询
两种查询方式
5.显示所有联系人
6.输入0退出系统
6.编程遇到的困难及解决办法
在本次实习过程中碰到的编译、连接的错误主要有:
(1)缺少变量定义,定义位置不正确;
前后有些变量前后定义和使用不一致,在错误信息的提示下一般还是很容易找到。
需要注意的是有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。
为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。
(2)语法错误;
一些语法错误在信息框的提示下一般是能够排除的。
7总结心得
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实习学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实习课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了主界面、添加新联系人等比较重要的程序设计思路。
上机实验是学习程序设计语言必不可少的实习环节,特别是c语言灵活、简洁,更需要通过编程的实习来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。
但是在程序设计领域里这是一定要克服的传统的、错误的想法。
因为在这种思想支配下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。
自己编好程序上机调试运行时,可能有很多你想不到的情况发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 通讯录 实践 报告