C语言程序设计通讯录管理系统

  • 格式:pdf
  • 大小:136.97 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

struct birth { int year; int month; int day; };
struct record1 /*定义电子通讯录结构体*/ { int number; /*序号*/ char name[20]; /*姓名*/ char sex; /*性别*/ struct birth birth; /*出生年月*/ struct addr addr; /*通信地址*/ char telephone[13]; /*联系电话*/ }records[50]; FILE *fp; /*定义指向file类型结构体的指针变量*/
scanf("%s", search_name); /*获得名字到指针型字符串变量*/ for(j=1;j<=i;j++) { if(strcmp(search_name,records[j].name)==0) /*比较字符串,即 查看是否与记录中名字 相同*/ { Data_Show(j); printf("\n"); /*搜索成功,打印记录结束循环*/ break; } } if(j>i) /*搜索失败*/ printf("\n\tNo Record "); /*显示无此记录*/ break; case '5': printf("\n\tInsert No:"); /*录入插入位置*/ scanf("%d",&k); for(j=k+1;j<i;j++) /*将插入位置后的元素顺序后移,即将其复 制到后一位置,循环操作*/ { strcpy(records[j].name,records[j-1].name); records[j].sex=records[j-1].sex; records[j].birth.year=records[j-1].birth.year; records[j].birth.month=records[j-1].birth.month; records[j].birth.day=records[j-1].birth.day; strcpy(records[j].addr.post_num,records[j-1].addr.post_num); strcpy(records[j].addr.addr,records[j-1].addr.addr); strcpy(records[j].telephone,records[j-1].telephone); } Data_Input(k); /*声明增加数据函数*/ i++;/*将记录数目加一*/ break; case '6': Data_Save(); printf("\n"); /*声明保存函数*/ exit(0); break; /*保存后退出*/ case '7': printf("\n\tsave or not?:(y/n)"); ch=getch(); /*获得输入字符*/
通讯录管理系统
(在visual c++6.0上运行) #include<stdlib.h> #include<string.h> /*使用字符串函数*/ #include<conio.h> /*使用通过控制台进行数据输入和数据输出的函数*/ #include<stdio.h> #include<dos.h> /*使用DOS函数*/ int i; /*定义一个全局变பைடு நூலகம்i*/ struct addr /*定义通讯地址结构体*/ { char post_num[10]; /*邮编*/ char addr[60]; /*家庭地址*/ }; /*定义出生年月结构体*/ /*年份*/ /*月份*/ /*日期*/
void Data_Load() /*定义载入数据函数*/ { int j; long k; fp=fopen("record.txt","r+t"); /*打开文件record.txt,进行读写*/ if(fp!=NULL) /*如果文件不为空*/ { for(i=1;i<50;i++) { j=fgetc(fp); /*从"records.txt"文件读入整型数字*/ if(j==EOF) /*判断是否到了文件尾*/ return; /*如果到了结尾,返回*/ k=i-1; fseek(fp,k*sizeof(struct record1),SEEK_SET); /*将位置指针移到 record1结构体所含字节 的第k倍个字节处*/ fread(&records[i],sizeof(struct record1),1,fp); /*读取一条记录*/ } } else { fp=fopen("record.txt","w"); i=1; } } void Data_Show(int j) /*定义显示数据函数*/ { printf("\n\n\tNo:%3d\n",records[j].number); /*序号*/ printf("\n\tname:%2s\n",records[j].name); /*姓名*/ printf("\n\tbirthday (y/m/d):%4d%2d%2d", records[j].birth.year, records[j].birth.month, records[j].birth.day); /*打印第j个成员的出生年月日*/ printf("\n\tpost code:%-10s",records[j].addr.post_num); /*邮编*/ printf("\n\taddress:%-40s",records[j].addr.addr); /*家庭地址*/ printf("\n\tphone%-13s",records[j].telephone); /*联系电话*/ } /*打开文件record.txt,只写*/
void Data_Input(int j) /*定义添加数据函数*/ { fflush(stdin); /*清空输入缓冲区*/ records[j].number=j; printf("\n\n\n\tinputNo %d ",j); printf("\n\tname:"); /*输入姓名*/ scanf("%s",records[j].name); fflush(stdin); /*清空输入缓冲区*/ printf("\tsex(m/f):"); /*输入性别*/ scanf("%c",&records[j].sex); printf("\t---birthday---"); /*输入出生年月*/ printf("\n\tyear:"); scanf("%d",&records[j].birth.year); printf("\tmonth:"); scanf("%d",&records[j].birth.month); printf("\tday:"); scanf("%d",&records[j].birth.day); printf("\tpost code:"); /*输入邮编*/ scanf("%s",records[j].addr.post_num); printf("\taddress:"); /*输入家庭地址*/ scanf("%s",records[j].addr.addr); printf("\tphone:"); /*输入联系电话*/ scanf("%s",records[j].telephone); } void Data_Save() /*定义保存函数*/ { int j; fp=fopen("record.txt","w"); /*打开文件record.txt,只写*/ for(j=1;j<=i;j++) { fwrite(&records[j],sizeof(struct record1),1,fp); /*将结构体变量 records的确定个数字节输
入到record.txt文件中,个数为结构体friend1所含字节数*/ } } void main() /*主函数*/ { int j,k; char ch; char search_name[40]; /*定义字符串变量*/ Data_Load(); /*声明载入数据函数*/ i--; do { printf("********************************* MENU ***************************************\n"); printf("------------------------! WELLCOME TO THE SYSTEM !-----------------------------"); printf("\n*\tSelect Function: *"); printf("*\t1.Add New *"); printf("*\t2.View the data *"); printf("*\t3.Delete *"); printf("*\t4.Search *"); printf("*\t5.Insert *"); printf("*\t6.Save and quit *"); printf("*\t7.Quit *"); printf("\n******************************** MENU ****************************************\n"); printf("\tPlease choose the option you need:"); ch=getche(); /*输入字符*/ switch(ch) { case '1': { int p; printf("\n\tPlease input the number of people you want to add:"); scanf("%d",&p);/*增加记录*/ printf("\tPlease press ENTER again"); while(getch()!=0x1b&&i<p)
{ i++; Data_Input(i); printf("Please press Enter again to continue\n"); } if(i==p)printf("\n\tThe data is full\n"); } /*记录完后显示通讯录已满*/ break; case '2': j=1; /*打印所有记录*/ while(getch()!=0x1b&&j<=i) Data_Show(j++); /*声明打印数据函 数*/ if(j>i) printf("\n\tThe system is end\n"); /*显示记录末尾*/ break; case '3': /*删除通讯录中的记录*/ if(i<1) { printf("\n\tno record\n"); /*显示无记录*/ break; } printf("\n\tplease input the number you want to delect:"); scanf("%d",&k); printf("\tsucceed!\n"); for(j=k;j<i;j++) /*将删除位置后的元素顺序前移,即后一数据复 制到前一位置,循环操作*/ { strcpy(records[j].name,records[j+1].name); records[j].sex=records[j+1].sex; records[j].birth.year=records[j+1].birth.year; records[j].birth.month=records[j+1].birth.month; records[j].birth.day=records[j+1].birth.day; strcpy(records[j].addr.post_num,records[j+1].addr.post_num); strcpy(records[j].addr.addr,records[j+1].addr.addr); strcpy(records[j].telephone,records[j+1].telephone); } i--; /*元素总数减1*/ break; case '4': /*通讯录搜索功能*/ printf("\n\tPlease input the name:"); /*输入名字*/