文档库 最新最全的文档下载
当前位置:文档库 › C语言课程设计通讯录源代码

C语言课程设计通讯录源代码

C语言课程设计通讯录源代码.txt43风帆,不挂在桅杆上,是一块无用的布;桅杆,不挂上风帆,是一根平常的柱;理想,不付诸行动是虚无缥缈的雾;行动,而没有理想,是徒走没有尽头的路。44成功的门往往虚掩着,只要你勇敢去推,它就会豁然洞开。#include /*字符函数和字符串函数*/
#include /*字符模式函数(调用getch()函数)*/
#include /*输入输出函数*/
int i;
struct person /*电子通讯录结构定义*/
{
char num[5];
char name[11];
char sex[2];
char phone[12];
char address[26];
char post_num[11];
}persons[50];
FILE *fp;
vonum dateload() /*数据载入函数*/
{ int j;
fp=fopen("person.bat","r+"); /*打开文件person.bat*/
if(fp==NULL) /*判断是否存在person.bat,如果不存在则创建*/
{ fp=fopen("person.bat","w");
i=0;
}
else
{ for(i=0;i<50;i++)
{ j=fgetc(fp);
if(j==EOF) /*判断是否到了文件尾*/
return;
fseek(fp,i*sizeof(struct person),0);
fread(&persons[i],sizeof(struct person),1,fp); /*从文件中读取一条记录*/
}
}
}
vonum 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 datecheck(int k,char num[5]) /*检查通讯录中是否存在相同num或num输入格式错误*/
{
int j;
if(num[0]=='0')
k=1;
for(j=0;num[j]!='\0';j++)
{
if(num[j]>'9'||num[j]<'0'

)
k++;
}
for(j=0;j{
if(strcmp(num,persons[j].num)==0)
k++;
}
return k;

}
vonum dateInput() /*数据输入函数*/
{

char yes_no='1';
char num[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",num,persons[i].name,persons[i].sex,persons[i].phone,persons[i].address,persons[i].post_num);
datecheck(k,num);
while(datecheck(k,num)>0) /*检查输入的num是否已存在,如果存在重新输入*/
{
printf("The No. already exists Or The No. isn't correct, please re-enter\n");
scanf("%s",num);
datecheck(k,num);
}
strcpy(persons[i].num,num);
if(i<49)
{
printf("\n\n Whether to be continue? Y(1)/N(0) \n\n");
yes_no=getch();
}
if(i>=49)
printf("\n\n Storage full!\n\n");
break;
case '0':
break;
default:
yes_no=getch();

}
}while(yes_no!='1'&&yes_no!='0'); /*如果输入的不是'1'或'0'则重新输入*/
if(yes_no=='0') /*如果输入'0'则退出输入函数*/
{
i++;
break;
}
}
}
int The_Size(char a[],char b[]) /*比较两个num的大小*/
{
int j,t;
if((j=strlen(a)-strlen(b))>0) t=1;
if((j=strlen(a)-strlen(b))<0) t=-1;
if((j=strlen(a)-strlen(b))==0)
{
if(strcmp(a,b)>0) t=1;
if(strcmp(a,b)<0) t=-1;
if(strcmp(a,b)==0) t=0;
}
return t;
}
vonum dateShow() /*数据输出函数*/
{ int j,k;
char m;
struct person t;
printf(" ********************************************************************\n");
printf(" No. Name Sex Phone Address Zip_Code \n"

);
printf(" ********************************************************************\n");
for(j=0;j{ for(k=0;k{
if(The_Size(persons[k].num,persons[k+1].num)==1)
{
t=persons[k];
persons[k]=persons[k+1];
persons[k+1]=t;
}
}
}
for(j=0;j{
printf("%4s %10s %4s %11s %20s %10s\n",persons[j].num,persons[j].name,persons[j].sex,persons[j].phone,persons[j].address,persons[j].post_num);
m=getch();
if(m==' ')
break;
}
printf("\n\n There are %d data in the book .\n\n",i);
}
vonum dateSearch() /*数据查找函数*/
{
char k;
int j,a,b;
char num[5];
char NAME[11];
printf("Search by No. : 1\n");
printf("Search by name : 2\n");
k=getch();
switch(k)
{
case '1': /*按num查找*/
a=0;
printf("\n\n Please enter the No.\n\n");
scanf("%s",num);
for(j=0;j{
if(strcmp(num,persons[j].num)==0)
{
a++;
printf(" No. Name Sex Phone Address Zip_Code \n");
printf("%4s %10s %4s %11s %20s %10s\n",persons[j].num,persons[j].name,persons[j].sex,persons[j].phone,persons[j].address,persons[j].post_num);
}

}
if(a==0)
printf(" Do not have to find the No.!\n\n");
break;
case '2': /*按姓名查找*/
b=0;
printf("\n\n Please enter the Name\n\n");
scanf("%s",NAME);
for(j=0;j{
if(strcmp(NAME,persons[j].name)==0)
{
b++;
printf(" No. Name Sex Phone Address Zip_Code \n");
printf("%4s %10s %4s %11s %20s %10s\n",persons[j].num,persons[j].name,persons[j].sex,persons[j].phone,persons[j].address,persons[j].post_num);
}

}
if(b==0)
printf(" Do not have to find the Name!\n\n");
break;

default:
printf("\n\n Error!\n");
break;
}
}
vonum dateInsert() /*数据插入函数*/
{ if(i>=50)
printf("\n\n Storage full!\n\n");
if(i<50)
{
char num[5];
int k=0;

printf("Please enter the No. that you want to insert.\n");
scanf("%s",num);
datecheck(k,num

); /*检查所需插入的num是否已存在,如果存在重新输入*/
while(datecheck(k,num)>0)
{
printf("The No. already exists Or The No. isn't correct, please re-enter\n");
scanf("%s",num);
datecheck(k,num);
}
strcpy(persons[i].num,num); /*插入数据*/
printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n");
scanf("%s%s%s%s%s",persons[i].name,persons[i].sex,persons[i].phone,persons[i].address,persons[i].post_num);
i++;
}
}
vonum dateDelete() /*数据删除函数*/
{
int k,t=0;
char num[5];
printf("\n\n Please enter the No. need to be deleted\n\n");
scanf("%s",num);
for(k=0;k{
if(strcmp(persons[k].num,num)==0)
{
t++;
break;
}
}
if(t==0)
printf("\n\n The No. does not Exist!\n\n");
if(t>0)
{
for(;k{
persons[k]=persons[k+1];
}
printf("\n\n Delete success!\n\n");
i=i-1;
}

}
vonum dateAlter() /*修改函数*/
{
int k,t=0;
char num[5];
printf("\n\n Please enter the No. to be Amended\n\n");
scanf("%s",num);
for(k=0;k{
if(strcmp(persons[k].num,num)==0)
{
t++;
break;
}
}
if(t==0)
printf("\n\n The No. does not Exist!\n\n");
if(t>0)
{
strcpy(persons[k].num,num);
printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n");
scanf("%s%s%s%s%s",persons[k].name,persons[k].sex,persons[k].phone,persons[k].address,persons[k].post_num);
printf("\n\n Alter Success!\n\n");
}
}
vonum dateSave() /*数据保存函数*/
{
int j;
fp=fopen("person.bat","w");
for(j=0;j<=i-1;j++)
{
fwrite(&persons[j],sizeof(struct person),1,fp);
}
printf("\n\n Save Success!\n\n");
}
vonum Exit() /*退出函数*/
{
char flag;
printf(" Save or Not? (Y/N)\n"); /*判断是否保存*/
do{
flag=getch();
switch(flag)
{
case 'Y': /*保存*/
dateSave();
break;
case 'y': /*保存*/
dateSave();
break;
case 'N':break;

case 'n':break;
}
}while(flag!='Y'&&flag!='y'&&flag!='N'&&flag!='n');
}
vonum main()
{ char choose,yes_no;
dateload();
do
{
Menu_Select();
choose=getch();
switch(choose)
{
case '1': dateInput(); break; /*输入*/
case '2': dateShow(); break; /*显示*/
case '3': dateSearch(); break; /*查找*/
case '4': dateAlter(); break; /*修改*/
case '5': dateInsert(); break; /*插入*/
case '6': dateDelete(); break; /*删除*/
case '7': dateSave(); break; /*保存*/
case '0': Exit(); break; /*退出*/
default : printf(" Error!\n");
}
if(choose=='0')
break;
printf(" Would you like to be continue? (Y/N)\n");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
if(yes_no=='N'||yes_no=='n')
{
Exit();
break;
}
}while(yes_no!='Y'||yes_no!='y');
}

相关文档
相关文档 最新文档