通讯录C语言程序设计报告书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实践的目的和要求
加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力.
二、内容
在熟练掌握C语言的基础知识:数据类型(整型.实型.字符型.指针.数组.结构等);
运算类型(算术运算.逻辑运算.自增自减运算.赋值运算等);程序结构(顺序结构.判断选择结构.循环结构);大程序的功能分解方法(即函数的使用)等.进一步掌握各种函数的应用以及文件的读写操作等.
三、实验任务:通讯录
设计要求:实现菜单设计,使用数据文件保存和修改,应用结构体和指针
功能要求:通讯录信息生成,存储,查询,修改,插入,删除,打印等.
四、设计思路
1.通讯录的主要信息包括:编号,姓名,性别,联系电话.住址,邮编.
2.用结构体数组来存储信息,有Data_Input函数来实现信息的录入,用Data_Show函
数来显示打印信息,用Data_Sreach函数来查找信息,用Data_Insert函数来插入信
息,用Data_Alter 函数来修改信息,用Data_Delete函数来删除信息,用Data_Save
函数来保存信息,用Exit函数来退出通讯录.
3.小组分工,每个人分配几个函数,按情况进行分配任务.
五、程序代码
#include
#include
#include
int i;
struct friend/*电子通讯录结构定义*/
{
char num[5]; /*编号*/
char name[11]; /*名字*/
char sex[2]; /*性别*/
char phone[12]; /*电话*/
char address[26]; /*地址*/
char post_num[11]; /*邮编*/
}friends[50];
FILE *fp;
void Data_load() /*数据载入函数*/
{int j;
fp=fopen("friend.txt","r+"); /*打开文件friend.txt*/
if(fp==NULL) /*判断是否存在friend.txt,如果不存在则创建*/
{ fp=fopen("friend.txt","w");
i=0;
}
else
{for(i=0;i<50;i++)
{ j=fgetc(fp);
if(j==EOF) /*判断是否到了文件尾*/
return;
fseek(fp,i*sizeof(struct friend),0);
fread(&friends[i],sizeof(struct friend),1,fp); /*从文件中读取一条记录*/ }
}
}
void Menu_Select() /*显示菜单界面*/
{
printf(" \n");
printf(" \n");
printf(" \n");
printf(" Address Book Management System \n");
printf(" \n");
printf(" ======================\n");
printf(" 1.Address book data Entry\n"); /*数据输入*/ printf(" 2.Address Book data Show\n"); /*数据显示*/ printf(" 3.Address Book data Search\n"); /*数据查找*/ printf(" 4.Address Book data Alter\n"); /*数据修改*/ printf(" 5.Address Book data Insert\n"); /*数据插入*/ printf(" 6.Address Book data Delete\n"); /*数据删除*/ printf(" 7.Address Book data Save\n"); /*数据保存*/ printf(" 0.Exit\n"); /*退出*/ printf(" ======================\n");
printf( " Please chioce 0-7 \n\n");
}
int Data_check(int k,char ID[5]) /*检查通讯录中是否存在相同ID或ID输入格式错误*/ {
int j;
if(ID[0]=='0')
k=1;
for(j=0;ID[j]!='\0';j++)
{
if(ID[j]>'9'||ID[j]<'0')
k++;
}
for(j=0;j
{
if(strcmp(ID,friends[j].num)==0)
k++;
}
return k;
}
void Data_Input() /*数据输入函数*/ {
char yes_no='1';
char ID[5];
int k=0;
if(i>=50)
printf("\n\n Storage full!\n\n");
if(i<50)
{
printf("
************************************************************************\n"); printf(" ******************* Add Address Book Information
***********************\n");
printf("
************************************************************************\n"); printf("
************************************************************************\n");
}
for(;i<50;i++)
{
do
{
switch(yes_no)
{
case'1': /*如果输入为'1',则进行数据输入*/ printf(" ****** No.(4) Name(10) Sex(M/F) Phone(11) Address(25)
Zip_Code(10)*******\n");
scanf("%s%s%s%s%s%s",ID,friends[i].name,friends[i].sex,friends[i].phone,friends [i].address,friends[i].post_num);
Data_check(k,ID);
while(Data_check(k,ID)>0) /*检查输入的ID是否已存在,如果存在重新输入*/ {
printf("The No. already exists Or The No. isn't correct, please re-enter\n");
scanf("%s",ID);
Data_check(k,ID);