大一下第一周实训,C语言程序设计,在众多标题中选了一个我能写出来的,通讯录管理系统这一个很经典的题目,在我心中和学籍管里系统、分数统计系统并列。今天分享通讯录管理系统的代码。
<>小型通讯录管理系统
设计一个程序实现通讯录的管理,能够实现联系人的添加、查询、删除和显示功能,用数据文件存放通讯录信息。
具体要求如下:
(1)添加功能:根据输入的联系人的姓名、地址、联系方式,QQ号等信息,把该联系人添加到通讯录中;
(2)查询功能:根据联系人的姓名,查找该联系人的信息;
(3)删除功能:根据姓名,从通讯录中删除该联系人的信息;
(4)显示功能:输出所有通讯录信息;
(5)进行系统界面设计,用户通过从键盘输入1到4,可分别实现上述(1)到(4)的功能。
#include<stdio.h> #include<stdlib.h> #include <windows.h> struct Sign { char
name[10]; char addr[20]; char tel[12]; char com[20]; struct Sign *next; }pe;
struct Sign *p1,*p2,*head; FILE *fp; void directory() /*目录函数*/ { system("color
0D"); /*systemC语言函数库stdlib.h中的一个函数, color改变颜色,0-9是背景颜色,A-F是前景颜色。*/ printf("\n\n"
); printf(" -----欢迎进入通讯录管理系统------\n"); printf("
*********************************\n"); printf(" * 1.添加联系人 *\n"); printf(" *
2.查询联系人 *\n"); printf(" * 3.删除联系人 *\n"); printf(" * 4.显示联系人 *\n"); printf(" *
0.退出通讯录服务; *\n"); printf(" *********************************\n"); printf("\n\n")
; } void add()/*添加联系人*/ { char ch; if((fp==fopen("txl.dat","a+"))!=1) { printf(
"文件打开失败"); exit(1); } while(1) { system("cls");/*cls函数,意指清空屏幕*/ printf(
"请输入个人信息__\n"); p2=(struct Sign*)malloc(sizeof(struct Sign));/*动态储存空间*/ p2->next
=NULL; printf("姓名:");scanf("%s",pe.name); printf("地址:");scanf("%s",pe.addr);
printf("电话号码:");scanf("%s",pe.tel); printf("QQ号或微信号:");scanf("%s",pe.com);
strcpy(p1->name,pe.name); strcpy(p1->addr,pe.addr); strcpy(p1->tel,pe.tel );
strcpy(p1->com,pe.com); p1->next=p2; p1=p2; if(fwrite(&pe,sizeof(struct Sign),1,
fp)!=1) printf("写入错误"); printf("输入 E或e 返回主目录\n "); getchar(); ch=getchar(); if(
ch=='e'||ch=='E') break; } fclose(fp); } void Selelctname()/*查询信息*/ { system(
"cls"); p1=head; char FindName[8]; int i=0; printf("\n请输入要查询的姓名:"); scanf("%s",&
FindName); while(p1->next!=NULL) { if(strcmp(p1->name,FindName)==0) { printf(
"%10.8s %10.6s %12.10s %15.4s\n","姓名","地址","电话号码","QQ号或微信"); printf("%10.8s
%10.6s %12.10s %15.14s\n",p1->name,p1->addr,p1->tel,p1->com); i++; } p1=p1->next
; } printf("共 %d 条\n",i); system("pause"); /*pause函数,意指暂停批文件的处理并显示消息*/ } void
Delete()/*删除信息*/ { char DeleteName[8]; system("cls"); int i,y=0; p1=p2=head;
printf("请输入你要删除的信息的姓名:"); scanf("%s",&DeleteName); getchar(); while(p1!=NULL) {
if(strcmp(p1->name,DeleteName)==0) { printf("\n%10.8s %10.6s %12.10s %15.4s\n",
"姓名","地址","电话号码","QQ号或微信"); printf("\n%10.8s %10.6s %12.10s %15.14s\n",p1->name,
p1->addr,p1->tel,p1->com); y=1; printf("\n您要删除的是这条记录吗?1---是;2---否\n"); scanf(
"%d",&i); if(i==1) { if(p1==head) { head=p1->next; free(p1); } else { p2->next=
p1->next; free(p1); if((fp==fopen("txl.dat","w"))!=1) { printf("文件打开失败"); exit(1
); } p1=head; while(p1->next!=NULL) { if(fwrite(p1,sizeof(struct Sign),1,fp)!=1)
printf("写入错误"); p1=p1->next; } fclose(fp); } printf("\n OK! \n"); } else break;
} else if(strcmp(p1->name,DeleteName)&&(p1->next)==NULL) { i=0; } p2=p1; p1=p1->
next; } if(y==0) { printf("对不起,没有找到要删除的通讯名单,请检查你要删除的姓名是否正确\n"); } system("pause"
); } void Allshow()/*显示全部通讯录名单*/ { printf("\n%10.8s %10.6s %12.10s %15.4s\n",
"姓名","地址","电话号码","QQ号或微信"); p1=head; while(p1->next!=NULL) { printf("\n%10.8s
%10.6s %12.10s %15.14s\n",p1->name,p1->addr,p1->tel,p1->com); p1=p1->next; } }
void goodbye() { system("color 0E"); printf("\n\n"); printf("
-----欢迎进入通讯录管理系统------\n"); printf(" *********************************\n");
printf(" * *\n"); printf(" * *\n"); printf(" * 谢谢使用!bye bye *\n"); printf(" *
*\n"); printf(" * *\n"); printf(" *********************************\n"); printf(
"\n\n"); } void error() { system("color 0C"); system("cls"); printf("\n\n");
printf(" -----欢迎进入通讯录管理系统------\n"); printf("
*********************************\n"); printf(" * *\n"); printf(" * *\n");
printf(" * 输入错误!请仔细检查! *\n"); printf(" * *\n"); printf(" * *\n"); printf("
*********************************\n"); printf("\n\n"); system("pause"); } int
main() { int n; if((fp=fopen("txl.dat","a"))==NULL) { printf("File open
error!\n"); exit(1); } fclose(fp); if((fp=fopen("txl.dat","r"))==NULL) { printf(
"File open error!\n"); exit(1); } p1=(struct Sign*)malloc(sizeof(struct Sign));
p1->next=NULL; head=p1; while(!feof(fp)) { if(fread(p1,sizeof(struct Sign),1,fp)
!=1) break; p2=(struct Sign*)malloc(sizeof(struct Sign)); p2->next=NULL; p1->
next=p2; p1=p2; } fclose(fp); while(1) { directory(); printf(" 输入你想要应用的功能(0-4):"
); printf(" "); scanf("%d",&n); if(n==0) { system("cls"); goodbye(); exit(0); }
else if(n==1) { system("color 0E"); system("cls"); add(); } else if(n==2) {
system("color 0C"); system("cls"); Selelctname(); } else if(n==3) { system(
"color 0A"); Delete(); } else if(n==4) { system("color 0B"); system("cls");
Allshow(); system("pause"); } else error(); system("cls"); getchar(); } }