⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tel.c

📁 一个通讯录管理系统,分为录入、查询、修改、删除、退出几部分。 先将通讯录中的资料读入结构体变量中,以便查询等操作 录入名字、地址、电话、电子邮箱、QQ号码
💻 C
字号:


/******************通讯录********************************************
********************************************************************* 
***编一个通讯录管理系统,分为录入、查询、修改、删除、退出几部分。 
***先将通讯录中的资料读入结构体变量中,以便查询等操作 
***录入名字、地址、电话、电子邮箱、QQ号码。 
*********************************************************************/ 
#include <stdio.h> 
#include <dos.h> 
#include <string.h> 
#include <stdlib.h> 
#include <alloc.h> 
#define N 6 
#define Esc 27 
#define InitAmount 20 
struct Infomation{ 
char name[10]; 
char QQ[12]; 
char phone[15]; 
char Email[20]; 
char address[30]; 
}record[InitAmount]; 


int cnt=0; 
char buffer[N*14*2]; 


/*---1输入通讯资料---*/
void Add_Create()
{ 
int row=N; 
char key; 
struct Infomation temp; 
gotoxy(1,row+1); 
printf("\n输入姓名: "); 
gets(temp.name); 
printf("输入 QQ 号: "); 
gets(temp.QQ); 
printf("输入电话号码: "); 
gets(temp.phone); 
printf("输入 E-mail: "); 
gets(temp.Email); 
printf("输入地址: "); 
gets(temp.address); 
printf("\n记录下这个人的资料吗 ? (Y/N)"); 
while(1){ 
if((key=getch())=='Y'||key=='y'){ 
record[cnt++]=temp; 
printf("\n记录成功!!!"); 
getch(); 
break; 
} 
if(key=='N'||key=='n'){ 
printf("\n你已放弃这份资料!!!"); 
getch(); 
break; 
} 
} 
kbhit(); 
clrscr(); 
puttext(1,1,14,N,buffer); 
} 




/*---2显示所有人的资料---*/
void List()
{ 
int i; 
clrscr(); 
printf("所有人的资料:\n"); 
printf("\n姓名 QQ 电话 E-mail 地址\n"); 
for(i=0;i<cnt;i++){ 
printf("%-10s",record[i].name); 
printf("%-12s",record[i].QQ); 
printf("%-15s",record[i].phone); 
printf("%-20s",record[i].Email); 
printf("%s\n",record[i].address); 
} 
getch(); 
clrscr(); 
puttext(1,1,14,N,buffer); 
} 



/*---3搜索某个人的资料---*/
void Find()
{ 
clrscr(); 
printf("1.根据姓名搜索\n2.根据 QQ 号搜索\n(按 Esc 键可以退出这个功能区)"); 
while(1){ 
int i,status=0; 
char *temp=(char *)malloc(sizeof(char)); 
switch(getch()){ 
case '1': 
printf("\n输入要搜索的姓名: "); 
scanf("%s",temp); 
printf("\n"); 
printf("\n姓名 QQ 电话 E-mail 地址\n"); 
for(i=0;i<cnt;i++) 
if(!strcmp(temp,record[i].name)){ 
printf("%-10s",record[i].name); 
printf("%-12s",record[i].QQ); 
printf("%-15s",record[i].phone); 
printf("%-20s",record[i].Email); 
printf("%s\n",record[i].address); 
status=1; 
} 
getch(); 
break; 
case '2': 
printf("\n输入要搜索的 QQ 号: "); 
scanf("%s",temp); 
printf("\n"); 
printf("\n姓名 QQ 电话 E-mail 地址\n"); 
for(i=0;i<cnt;i++) 
if(!strcmp(temp,record[i].QQ)){ 
printf("%-10s",record[i].name); 
printf("%-12s",record[i].QQ); 
printf("%-15s",record[i].phone); 
printf("%-20s",record[i].Email); 
printf("%s\n",record[i].address); 
status=1; 
break; 
} 
getch(); 
break; 
case Esc: status=1; 
} 
if(status) break; 
else{ 
clrscr(); 
printf("1.根据姓名搜索\n2.根据 QQ 号搜索\n"); 
} 
} 
kbhit(); 
clrscr(); 
puttext(1,1,14,N,buffer); 
} 




/*---4修改某个人的资料---*/
void Alter()
{ 
int i,status=0,position=-1; 
char *temp=(char *)malloc(sizeof(char)),key; 
gotoxy(1,N+2); 
printf("输入姓名: "); 
scanf("%s",temp); 
for(i=0;i<cnt;i++) 
if(!strcmp(temp,record[i].name)){ 
status++; 
if(status==1) position=i; 
} 
if(status>1){ 
printf("\n不止一个人叫这个名字,请输入 QQ 号确认身份\n"); 
printf("\n否则将把找到的第一个人作为你要修改其资料的人"); 
printf("\n输入 QQ 号: "); 
scanf("%s",temp); 
for(i=0;i<cnt;i++) 
if(!strcmp(temp,record[i].QQ)){ 
status=1; 
position=i; 
} 
} 
if(!status) printf("\n没有找到这个人的资料!"); 
else{ 
char key; 
clrscr(); 
printf("你想要修改 %s 的哪部分资料:\n",record[position].name); 
printf(" 1. QQ 2. 电话 3. E-mail 4. 地址\n\n"); 
printf(" (按 Esc 键才能退出这个功能区)\n\n"); 
while((key=getch())!=Esc) 
switch(key){ 
case '1': 
printf("输入新的 QQ 号: "); 
scanf("%s",record[position].QQ); 
break; 
case '2': 
printf("输入新的电话号码: "); 
scanf("%s",record[position].phone); 
break; 
case '3': 
printf("输入新的 E-mail: "); 
scanf("%s",record[position].Email); 
break; 
case '4': 
printf("输入新的地址: "); 
scanf("%s",record[position].address); 
} 
printf("\n修改成功!"); 
} 
getch(); 
clrscr(); 
puttext(1,1,14,N,buffer); 
} 



/*---5删除某个人的资料---*/
void Delete() 
{ 
int i=N,status=0,position=-1; 
char *temp=(char *)malloc(sizeof(char)),key; 
gotoxy(1,i+1); 
printf("\n输入姓名: "); 
scanf("%s",temp); 
for(i=0;i<cnt;i++) 
if(!strcmp(temp,record[i].name)){ 
status++; 
if(status==1) position=i; 
} 
if(status>1){ 
printf("\n不止一个人叫这个名字,请输入 QQ 号确认身份\n"); 
printf("\n否则将把找到的第一个人作为你要删除其资料的人"); 
printf("\n输入 QQ 号: "); 
scanf("%s",temp); 
for(i=0;i<cnt;i++) 
if(!strcmp(temp,record[i].QQ)){ 
status=1; 
position=i; 
} 
} 
if(!status) printf("\n没有找到这个人的资料!"); 
else{ 
record[position]=record[(cnt--)-1]; 
printf("\n删除成功!"); 
} 
getch(); 
clrscr(); 
puttext(1,1,14,N,buffer); 
} 



/*---6将通讯录里的资料以文件形式保存起来---*/
void Save() 
{ 
int i; 
FILE *fp=fopen("D:\\record.bat","wb"); 
if(cnt!=0){ 
FILE *fp_seen=fopen("D:\\record.txt","w"); 
fprintf(fp_seen,"姓名 QQ 电话 E-mail 地址\n"); 
for(i=0;i<cnt;i++){ 
fprintf(fp_seen,"%-10s",record[i].name); 
fprintf(fp_seen,"%-12s",record[i].QQ); 
fprintf(fp_seen,"%-15s",record[i].phone); 
fprintf(fp_seen,"%-20s",record[i].Email); 
fprintf(fp_seen,"%s\n",record[i].address); 
} 
fclose(fp_seen); 
} 
for(i=0;i<cnt;i++) fwrite(&record[i],sizeof(record),1,fp); 
_chmod("D:\\record.bat",1,FA_HIDDEN); 
fclose(fp); 
} 




/*---Main function---*/ 
void main() 
{ 
int i; 
FILE *fp; 
char *index[N]={"1.输入通讯资料", 
"2.显示所有资料", 
"3.搜索某人资料", 
"4.修改某人资料", 
"5.删除某人资料", 
"6.退出系统"}; 
clrscr(); 
if((fp=fopen("D:\\record.bat","rb"))!=NULL){ /*write old infomation*/ 
while(fread(&record[cnt++],sizeof(record),1,fp)!=0); /*null statement*/ 
cnt--; 
fclose(fp); 
} 
for(i=0;i<N;i++) printf("%s\n",index[i]); 
gettext(1,1,14,N,buffer); 
while(1) 
switch(getch()){ 
case '1': Add_Create();break;
case '2': List();break;
case '3': Find();break;
case '4': Alter();break;
case '5': Delete();break; 
case '6': Save();exit(0);
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -