个人通讯录管理系统C语言源程序(总6页)

合集下载

C语言-通讯录管理系统

C语言-通讯录管理系统
int xz;
printf("--------------------\n");
printf(" 1.按学号查询\n");
printf(" 2.按姓名查询\n");
printf("--------------------\n");
printf("请选择: \n");
scanf("%d",&xz);
if (xห้องสมุดไป่ตู้==1){
i++;
printf("想继续创建吗?(1.是/0.不):");
scanf("%d",&j);
if (!j)
return i;
else
printf("恭喜你,创建成功!请继续创建!\n");
}
return i;
}
int add_record(int flag)
{ int i=flag,j;
for(i;;)
printf("%s,%s,%s,%s,%s,%s\n",data[i].num,data[i].name,data[i].birthday,data[i].post,data[i].phone);
printf(" ------------------------------\n");
return 0;
}
}
int menu_select()
{
int i;
printf(" ******************** \n");
printf(" Welcome! \n ");

中南大学个人通讯录管理系统实验报告+源码(C语言版)

中南大学个人通讯录管理系统实验报告+源码(C语言版)

中南大学Central South University课程设计报告题目:个人通讯录管理系统设计者:专业班级:学号:指导教师:所属院系:信息科学与工程院2009年7 月3日目录一.课程设计的目的和要求。

2 二课程设计内容。

3 三.设计整体规划及方案。

4 四.课程设计任务。

5 五.程序的流程图。

6六.个人体会。

7七、参考文献。

10八、源程序。

11一.课程设计的目的和要求本次“计算机程序设计实践”课程设计,是基于C语言“计算机程序设计基础”课程学习内容的重要实践环节,其主要目的在于,通过综合程序课程设计,加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。

学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而培养和提高学生的独立分析问题和解决实际问题的能力。

二、课程设计内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。

进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等具体要求如下:1、在Turbo C(Visual C)或Win-TC环境下,用结构化程序设计思想进行C语言程序设计。

2、认真阅读设计题目、任务内容及进度要求,完成好管理系统中各相关功能模块的设计、调试与实现。

三.课程设计整体规划及方案整个程序的设计是通过对每一个功能的设计,然后,再对每一个功能的程序进行模块化,再把每一模块化的程序装入设计好的菜单中,从而形成一个完整的材料管理系统。

1、自顶向下、逐步细化、逐步求精所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。

每个子任务如果仍很复杂,还可以再分解为若干个子任务。

如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。

C语言程序设计个人通讯录管理

C语言程序设计个人通讯录管理

摘要通讯录[address book] 记录通讯地址的书本,通讯录涵盖了多项内容:可以储存一个人的姓名、手机号码、家庭住址、QQ等,以方便联系。

通过学习我设计一个个人通讯录管理,这个系统可以方便人们的查找个人信息,他具有快速查找的功能,主要是通过按姓名查找、按手机号码查找、按地址查询等。

这个通讯录可以修改已存所有人的任何信息,也可以删除里面你不想储存人的信息,当你在运行删除的时候,系统会再次提醒你是否删除,一旦删除将会永远删除。

关键字:通讯录查找删除重庆科技学院课程设计任务书设计题目:个人通讯录管理系统杨治明 2012年1月1日目录摘要 (1)课程设计责任书 (2)软件需求分析说明书 (4)第一章系统分析与设计 (5)第二章软件的实现 (6)2.1 软件界面设计 (6)2.2 软件的数据(结构)设计 (6)2.3 软件的算法设计 (6)第三章软件测试 (7)第四章软件使用说明书 (8)致谢 (9)参考文献 (10)软件需求分析说明书个人通讯录管理是个可以储存、修改、查看、查找、删除的功能。

在这个程序中可以储存一个人的姓名、家庭住址、手机号码、QQ号等信息,可以同时查看所有已存的信息,如果已存的数量过多,你可以选择快速查找,快速查找方式有:按姓名查找、按家庭住址查找、按手机号码查找、按QQ号查找。

如果要删除信息,只要输入你要删除信息的编号就可以删除,在删除过程中,系统会再次提醒你是否确认删除,以免后悔。

如果确定删除将会永远删除。

这个程序也可以修改,输入想修改的编号,就可以修改了。

如果你输入的编号不存在,系统将会提示你是否查看所有已存的数据。

第五章系统分析与设计2.1 软件界面设计图2.1 通讯录管理的主界面根据主界面的提示选择你想要执行的任务项钱的字母图2.2 添加联系人在添加联系人中尼可以输入姓名、地址、电话号码、QQ号,输入好之后你可以继续完成其他选项。

图2.3 浏览信息按b 屏幕上将显示已储存的个人信息,按a 将继续为你服务。

C语言课程设计通讯录管理系统源程序文件

C语言课程设计通讯录管理系统源程序文件

#include"stdio.h"#include <stdlib.h>#include"string.h"#define header1 "|--------------簿------------------|\n"#define header2 "| name | phonenum | adress | \n" #define header3 "|----------|----------------|----------|\n" #define end "|-----------------结束------------------|"typedef struct _CStudent{char szName[20]; /* 学生 */double number; /**/char adress[100]; /*地址*/}CStudent;void menu();int duqu(int *len);int zengjia(int *k,int *len);int chaxun(int *len);int xiugai(int *len);int shanchu(int *len);int input(CStudent* p); /* 从键盘输入 */int output(int *len); /* 向屏幕输出 */int search(CStudent p,int *j,CStudent c[3],int *len);int sname(CStudent p,int *len); /*查询*/int snumber(CStudent p,int *len); /*查询*/void xname(CStudent q[100],int i); /*修改*/void xnumber(CStudent q[100],int i); /*修改*/void xadress(CStudent q[100],int i); /*地址修改*/int sput(int *len,CStudent q[100]);/*删除的处理模块*/main( ){static int len=1;int i,j=0,k=0;while(j==0){menu();do{printf("请选择你需要的服务:\n");scanf("%d",&i);}while(i<0||i>5);//system("cls");switch(i){case 1:{j=zengjia(&k,&len);break;}/*增加*/case 2:{j=duqu(&len);break;} /*读取*/case 3:{j=chaxun(&len);break;} /*查找*/case 4:{j=xiugai(&len);break;} /*修改*/case 5:{j=shanchu(&len);break;}/*删除*/default:{printf(" |**欢迎下次使用薄管理系统!**|\n");j=1;break;}}}}int duqu(int *len){CStudent p[100];int i;FILE *fp;system("cls");printf("\n\t\t|* **** 欢迎进入读取联系人界面! **** *|\n\n");if((fp=fopen("e://file3","r"))==NULL){printf("error!\n");return -1;}printf("%s%s%s",header1,header2,header3);for(i=0;i<*len;i++){fscanf(fp,"%s%lf%s ",p[i].szName,&p[i].number,p[i].adress);printf("| %s | %.0lf | %s |\n",p[i].szName,p[i].number,p[i].adress);}printf("%s\n",end);system("pause");return 0;}void menu(){system("cls");system("color 1F");printf("\n\n\n"); /*输出主菜单*/printf("\t\t|* **** 欢迎进入通讯录管理系统! **** *|\n");printf("\t\t|********************menu********************|\n");printf("\t\t| |\n");printf("\t\t| 1 增加 2 读取 |\n");printf("\t\t| |\n");printf("\t\t| 3 查找 4 修改 |\n");printf("\t\t| |\n");printf("\t\t| 5 删除 0 退出 |\n");printf("\t\t| |\n");printf("\t\t|********************************************|\n");}int zengjia(int *k,int *len){CStudent p[100];int i,j;FILE *fp;system("cls");printf("\n\t\t|* **** 欢迎进入增加联系人界面! **** *|\n\n");printf("请输入增加的个数:\n");scanf("%d",&j);k=&j;(*len)+=j;//system("cls");if((fp=fopen("e://file3","a+"))==NULL){printf("error!\n");return -1;}for(i=0;i<j;i++){printf(":");scanf("%s",&p[i].szName);printf(":");scanf("%lf",&p[i].number);printf("地址:");scanf("%s",p[i].adress);}for(i=0;i<j;i++)fprintf(fp,"\n%s %lf %s ",p[i].szName,p[i].number,p[i].adress);fclose(fp);output(len);return 0;}int chaxun(int *len){int i;CStudent aa,cc;system("cls");printf("\n\t\t|* **** 欢迎进入查询联系人界面! **** *|\n\n");do{printf(" |-------查找功能------|\n");printf(" | |\n");printf(" | 1 按查找 |\n");printf(" | |\n");printf(" | 2 按查找 |\n");printf(" | |\n");printf(" | 0 退出 |\n");printf(" | |\n");printf("请输入:\n");scanf("%d",&i);}while(i>2||i<0);if(i==2){printf("请输入:\n");scanf("%s",&aa.szName);sname(aa,len);}else if(i==1){printf("请输入:\n");scanf("%lf",&cc.number);snumber(cc,len);}elseprintf("欢迎下次使用薄管理系统!\n");return 0;}int xiugai(int *len){CStudent p[100],q[100],a;int i,j,b;FILE *fp;system("cls");printf("\n\t\t|* **** 欢迎进入修改联系人界面! **** *|\n\n");printf("请输入修改人的:\n");scanf("%s",a.szName);if((fp=fopen("e://file3","r+"))==NULL){printf("error!\n");return -1;}for(i=0;i<*len;i++)fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress);for(i=0;i<*len;i++){strcpy(q[i].szName,p[i].szName);strcpy(q[i].adress,p[i].adress);q[i].number=p[i].number;}for(i=0;i<*len;i++){if(strcmp(p[i].szName,a.szName)==0){j=1;break;}}if(j==1){printf(" |-------修改功能------|\n");printf(" | |\n");printf(" | 1 修改 |\n");printf(" | |\n");printf(" | 2 修改 |\n");printf(" | |\n");printf(" | 3 修改地址 |\n");printf(" | |\n");do{printf("请选择修改容:\n");scanf("%d",&b);if(b==1)xname(q,i);if(b==2)xnumber(q,i);if(b==3)xadress(q,i);}while(b>3||b<1);printf("修改的联系人重新保存!\n");sput(len,q);}else{printf(" |*****通讯录中没有该人的信息!******|\n");system("pause");}fclose(fp);output(len);return 0;}void xname(CStudent q[100],int i){printf("重置:");scanf("%s",q[i].szName);}void xnumber(CStudent q[100],int i) /*修改*/{printf("重置:");scanf("%lf",&q[i].number);}void xadress(CStudent q[100],int i) /*地址修改*/{printf("地址重置:");scanf("%s",q[i].adress);}int shanchu(int *len){CStudent p[100],q[100],a;int i,j;FILE *fp;system("cls");printf("\n\t\t|* **** 欢迎进入删除联系人界面! **** *|\n\n");printf("请输入删除人的:\n");scanf("%s",a.szName);if((fp=fopen("e://file3","r+"))==NULL){printf("error!\n");return -1;}for(i=0;i<*len;i++)fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress);for(i=0;i<*len;i++){strcpy(q[i].szName,p[i].szName);strcpy(q[i].adress,p[i].adress);q[i].number=p[i].number;}for(i=0;i<*len;i++){if(strcmp(p[i].szName,a.szName)==0){j=1;break;}}if(j==1){for(;i<*len-1;i++){strcpy(q[i].szName,q[i+1].szName);strcpy(q[i].adress,p[i].adress);q[i].number=q[i+1].number;}printf("删除成功!\n");(*len)--;sput(len,q);for(i=0;i<*len;i++)fscanf(fp,"%s%lf%s",q[i].szName,&q[i].number,q[i].adress);output(len);}elseprintf(" |*****通讯录中没有该人的信息!******|\n");fclose(fp);return 0;}int sput(int *len,CStudent q[100]){int i;FILE *fp;if((fp=fopen("e://file3","w"))==NULL){printf("error!\n");return -1;}for(i=0;i<*len;i++)fprintf(fp,"%s %lf %s ",q[i].szName,q[i].number,q[i].adress);fclose(fp);return 0;}search(CStudent p,int *j,CStudent c[100],int *len) /*查询*/{FILE *fp;int i,flag=0;if((fp=fopen("e:\\file3","r"))==NULL){printf("cannot write file\n");return -1;}for(i=0;i<*len;i++){fscanf(fp,"%s%lf%s",c[i].szName,&c[i].number,c[i].adress);if(strcmp(c[i].szName,p.szName)==0){flag=1;break;}if(c[i].number==p.number){flag=2;break;}}*j=i;fclose(fp);return flag;}int sname(CStudent p,int *len){CStudent c[100];int i,flag;flag=search(p,&i,c,len);if (flag==1){printf("%s%s%s",header1,header2,header3);printf("| %s | %.0lf | %s |\n",c[i].szName,c[i].number,c[i].adress);printf("%s",end);printf("\n");}elseprintf("Not Found\n");system("pause");return 0;}int snumber(CStudent p,int *len){CStudent c[100];int i,flag;flag=search(p,&i,c,len);if (flag==2){printf("%s%s%s",header1,header2,header3);printf("| %s | %.0lf | %s |\n",c[i].szName,c[i].number,c[i].adress);printf("%s",end);printf("\n");}elseprintf("Not Found\n");system("pause");return 0;}int output(int *len) /*向屏幕输出*/{CStudent p[100];int i;FILE *fp;if((fp=fopen("e://file3","r"))==NULL){printf("error!\n");return -1;}printf("%s%s%s",header1,header2,header3);for(i=0;i<*len;i++){fscanf(fp,"%s%lf%s",p[i].szName,&p[i].number,p[i].adress);printf("| %s | %.0lf | %s |\n",p[i].szName,p[i].number,p[i].adress);}printf("%s",end);printf("\n");system("pause");return 0;}。

通讯录管理系统(C语言)

通讯录管理系统(C语言)

通讯录管理系统(C语⾔)/** 对通讯录进⾏插⼊、删除、排序、查找、单个显⽰功能*/#include <stdio.h>#include <malloc.h>#include <string.h>#include <stdlib.h>int n;typedef struct _Address_List{char name[30]; //名字char work[30]; //职业char handset[20]; //⼿机号码char email[30]; //电⼦邮件char address[30]; //地址struct _Address_List *next;}address_List;#define LEN sizeof(address_List)address_List *Release(address_List *head);//创建⼀个通讯录address_List *Create(void){address_List *head,*p1,*p2;char name[30];n = 0;p1 = (address_List *)malloc(LEN);p2 = p1;printf("请输⼊通讯录的内容!\n姓名输⼊为0时表⽰创建完毕!\n");printf("请输⼊姓名:");gets(name);if(strcmp(name,"0")!=0){strcpy(p1->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->address);head = NULL;while(1){n = n+1;if(n == 1){head = p1;}else{p2->next = p1;}p2 = p1;printf("请输⼊姓名:");gets(name);if(strcmp(name,"0") == 0){break;}else{p1 = (address_List *)malloc(LEN);strcpy(p1->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->address);}}return head;}else{return0;}}//打印整个通讯录void print(address_List *head){address_List *p;if(head != NULL){p = head;printf("本通讯录现在共有%d⼈;\n",n);printf("---姓名---------职业----------⼿机--------Email-------------通讯地址\n");printf("====================================================================\n");do{printf("=%s\t\t",p->name);printf("=%s\t\t",p->work);printf("=%s\t\t",p->handset);printf("=%s\t\t",p->email);printf("=%s\n",p->address);p = p->next;}while(p != NULL);printf("==================================================================\n"); }else{printf("通讯录为空,⽆法输出!\n");}}//在通讯录插⼊address_List *insert(address_List *head){address_List *p0,*p1,*p2;char name[20];p1 = head;printf("请输⼊增加的内容:\n");printf("请输⼊姓名:");gets(name);if(strcpy(name,"0") == 0){printf("姓名不能为0,增加失败!\n");return head;}else{p0 = (address_List *)malloc(LEN);strcpy(p0->name,name);printf("请输⼊职业:");gets(p1->work);printf("请输⼊⼿机:");gets(p1->handset);printf("请输⼊电⼦邮件:");gets(p1->email);printf("请输⼊通讯地址:");gets(p1->address);n = n+1;if(head == NULL){head = p0;p0->next = NULL;return head;}else{while(strcmp(p0->name,p1->name) > 0 && (p1->next != NULL)){p2 = p1;p1 = p1->next;}if(strcmp(p0->name,p1->name) <0 || strcmp(p0->name,p1->name) == 0){if(head == p1){head = p0;}else{}p0->next = p1;}else{p1->next = p0;p0->next = NULL;}return head;}}}//删除通讯录中某个⼈address_List *delete_txl(address_List *head){address_List *p,*q;char name[30];if(head == NULL){printf("通讯录为空,⽆法删除!\n");return head;}p = head;printf("请输⼊需要删除的⼈姓名:");gets(name);if(strcmp(head->name,name) == 0){head = head->next;free(p);printf("删除操作成功!\n");return head;}else{q = head;p = head->next;while(p != NULL){if(strcmp(p->name,name) == 0){q->next = p->next;free(p);printf("删除操作成功!\n");return head;}p = p->next;q = q->next;}}}//显⽰通讯录中某个⼈address_List *display(address_List *head){address_List *p1,*p2;char name[30];int m;if(head == NULL){printf("通讯录为空,⽆法显⽰!\n");return head;}p1 = head;m = 0;printf("请输⼊要显⽰⼈的姓名:");gets(name);while(p1 != NULL){while(strcmp(p1->name,name) != 0 && p1->next != NULL){p2 = p1;p1 = p1->next;}if(strcmp(p1->name,name) == 0){m++;printf("%s的通讯内容如下:\n",name);printf("---姓名---------职业----------⼿机--------Email-------------通讯地址\n");printf("====================================================================\n"); printf("=%s=\t\t",p1->name);printf("=%s=\t\t",p1->work);printf("=%s=\t\t",p1->handset);printf("=%s=\n",p1->address);printf("====================================================================\n"); }p1 = p1->next;}if(m == 0){printf("此⼈不在通讯录中!\n");}return head;}//对通讯录进⾏排序操作address_List *Sort(address_List *head){address_List *p1,*p2;int i,j;typedef struct _Address_List1{char name[30]; //名字char work[30]; //职业char handset[20]; //⼿机号码char email[30]; //电⼦邮件char address[30]; //地址}address_List1;address_List1 Sort[200];address_List1 temp;if(head == NULL){printf("通讯录为空,⽆法排序!\n");return head;}p1 = head;for(i = 0;i < n,p1 != NULL; i++){strcpy(Sort[i].name,p1->name);strcpy(Sort[i].work,p1->work);strcpy(Sort[i].handset,p1->handset);strcpy(Sort[i].email,p1->email);strcpy(Sort[i].address,p1->address);p2 = p1;p1 = p1->next;}head = Release(head);for(j = 0; j < n-1; j++){for(i = j+1; i < n; i++){if(strcmp(Sort[i].name,Sort[j].name) < 0){Sort[i] = temp;temp = Sort[j];Sort[j] = temp;}}}p1 = (address_List *)malloc(LEN);p2 = p1;strcpy(p1->name,Sort[0].name);strcpy(p1->work,Sort[0].work);strcpy(p1->handset,Sort[0].handset);strcpy(p1->email,Sort[0].email);strcpy(p1->address,Sort[0].address);head = p1;for(i = 1; i < n; i++){p1 = (address_List *)malloc(LEN);strcpy(p1->name,Sort[i].name);strcpy(p1->work,Sort[i].work);strcpy(p1->handset,Sort[i].handset);strcpy(p1->email,Sort[i].email);strcpy(p1->address,Sort[i].address);p2->next = p1;p2 = p1;}p2->next = NULL;printf("按姓名排序后的结果是:\n");print(head);return head;}address_List *Search_name(address_List *head){address_List *p1,*p2;int m;char name[30];if(head == NULL){printf("通讯录为空,⽆法查找!\n");return head;}p1 = head;printf("**************************\n");printf("****请输⼊要查找的姓名:**\n");printf("**************************\n");m = 0;gets(name);while(p1 != NULL){while(strcmp(p1->name,name) != 0 && (p1->next != NULL)){p2 = p1;p1 = p1->next;}if(strcmp(p1->name,name) == 0){m++;printf("你查找的内容是:\n");printf("++++++++++++++++++++++++++++++++\n");printf("++ %s\t%s\t%s\t%s\t%s ++",p1->name,p1->work,p1->handset,p1->email,p1->address); printf("++++++++++++++++++++++++++++++++\n");}p1 = p1->next;if(m == 0){printf("你查找的姓名不在通讯录中!\n");}break;}return head;}//释放整个通讯录address_List *Release(address_List *head){address_List *p;while(head != NULL){p = head;head = head->next;free(p);}return head;}//保存(以⽂件的形式保存)void save(address_List *head){FILE *fp;address_List *p;char Filename[30]; //保存后的⽂件名if(head ==NULL){printf("待保存的通讯录为空,⽆法保存!\n");return ;}printf("请输⼊保存后的⽂件名:");gets(Filename);fp = fopen("Filename.txt","w");if(fp == NULL){printf("⽆法打开⽂件!\n");return ;}p = head;fprintf(fp,"姓名\t职业\t⼿机\tEmail\t地址\n");for(;p != NULL;){fprintf(fp,"姓名\t职业\t⼿机\tEmail\t地址",p->name,p->work,p->handset,p->email,p->address);p = p->next;}printf("保存完毕!\n");}//⽂件读出函数address_List *Load(address_List *head){FILE *fp;char Filename[30];address_List *p1,*p2;printf("请输⼊要输出的⽂件名:");gets(Filename);fp = fopen("Filename.txt","r");if(fp == NULL){printf("此通讯录不存在,⽆法输出!\n");return head;}else{head = Release(head);}p1 = (address_List *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",p1->name,p1->work,p1->handset,p1->email,p1->address);if(feof(fp) != 0){printf("⽂件为空,⽆法打开!\n");return head;}else{rewind(fp);p2 = p1;head = p1;n = 0;while(feof(fp) == 0){fscanf(fp,"%s%s%s%s%s",p1->name,p1->work,p1->handset,p1->email,p1->address);if(feof(fp) != 0){break;}p2->next = p1;p2 = p1;p1 = (address_List *)malloc(LEN);n = n+1;}p2->next = NULL;p1 = head;head = head->next;n = n-1;free(p1);print(head);printf("打开完毕!\n");return head;}fclose(fp);}//菜单选择函数address_List *menu(address_List *head){char num[10];while(1){printf("*******************************\n");printf("*****1. 姓名查找 **********\n");printf("*****2. 单个显⽰ **********\n");printf("*****3. 增加 **********\n");printf("*****4. 退出 **********\n");printf("*******************************\n");printf("请输⼊你选择的操作:");gets(num);switch(*num){case'1':{head = Search_name(head);print(head);}break;case'2':{head = display(head);break;case'3':{head = insert(head);print(head);}break;case'4':return head;default:printf("操作有误,此项不存在!\n");break;}if(strcmp(num,"6") == 0){break;}}return head;}//主函数int main(void){address_List *head = NULL;char num[10];printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); printf("*=*=*=*=*=*=*= 程序说明 *=*=*=*=*=*=*\n");printf("*=*=*=*=*=*=*= 请及时保存创建完毕的通讯录内容 *=*=*=*=*=*=*\n");printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); while(1){printf("*******************************\n");printf("****** 1. 创建通讯录 *******\n");printf("****** 2. 按名字排序 *******\n");printf("****** 3. 综合操作 *******\n");printf("****** 4. 保存 *******\n");printf("****** 5. 打开 *******\n");printf("****** 6. 删除 *******\n");printf("****** 7. 退出 *******\n");printf("*******************************\n");printf("请输⼊你选择的操作:");gets(num);switch(*num){case'1':{if(head == NULL){head = Create();print(head);}else{head = Release(head);head = Create();print(head);}}break;case'2':{head = Sort(head);}break;case'3':{head = menu(head);}break;case'4':{save(head);print(head);}break;case'5':{head = Load(head);}break;case'6':{print(head);}break;case'7':{head = Release(head);}break;default:{printf("操作有误,此项不存在!\n"); }break;}if(strcmp(num,"7") == 0){break;}}return0;}。

C语言毕业课程设计-通讯录管理系统

C语言毕业课程设计-通讯录管理系统

(此文档为word格式,下载后您可任意编辑修改!) C语言通讯录管理系统课程设计报告通讯录管理系统题目学号姓名09级电子信息工程年级专业指导教师完成日期年月日1设计题目的内容、任务及具体要求本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。

本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。

我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。

①记录通讯录内的人员的姓名、地址、邮编、电话号码。

②显示所有人员的信息。

③通过输入姓名查找人员信息。

④通过输入姓名查找到要删除的人员信息,然后可以进行删除。

⑤通过输入姓名查找到要修改的人员信息,然后可以进行修改。

⑥添加人员信息。

2总体设计思路本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。

在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。

删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。

查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。

修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。

下面就是总的程序流程图:3功能模块的具体设计3.1 界面分析3.1.1开始界面3.1.2显示功能的界面:选择1后系统出现现有的所有人员名单:3.1.3 显示删除功能的界面3.1.4 查找功能:通过5:find—by—name 用姓名来查找个人的通讯录信息通过6:find—by—tel 用电话号码来查找个人的通讯录信息3.1.5 修改功能的界面:输入姓名后的系统界面:输入修改信息后的系统界面:3.1.6添加功能的界面:选择1后的系统界面:3.2 程序设计主要内容#include<stdio.(){int m;printf(" ***************************************************\n\n\n");printf(" ********* Welcome to use yufeng's ***************\n\n\n"); printf(" ************** addressbook **********************\n\n\n");creat(); *主界面*while(1){ printf(" ******************************\n\n");printf(" 0 exit, press 0\n\n");printf(" 1 append,press 1\n\n");printf(" 2 modify,press 2\n\n");printf(" 3 output,press 3\n\n");printf(" 4 delete,press 4\n\n");printf(" 5 find by name,press 5\n\n");printf(" 6 find by tel,press 6\n\n"); *功能菜单*printf(" ******************************\n");scanf("%d",&m);if(m>=0&&m<=6){switch(m){case 1: append();break;case 2: modify();break;case 3: output();break;case 4: delete();break;case 5: find_by_name();break;case 6: find_by_tel();break;case 0: exit();}printf("\n\nHave finished,select again!\n");}elseprintf("\n\nError,select again!\n");}}void creat(){struct student one;printf("\nInput the name of addressbook:");gets(filename);if((fp=fopen(filename,"w"))==NULL){printf("\nCann't creat addressbook!");exit();}*fprintf(fp,"%-10s%-8d%-20s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);*printf("\nInput name,num,dis,tel,addr(end press #)\n");gets();while(strcmp(,"#")){gets(one.num);gets(one.dis);gets(one.tel);gets(one.addr);fprintf(fp,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.ad dr);gets();}fclose(fp);}void find_by_name(){int k=0;char namekey[8];struct student one;printf("\nInput name:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\nCann't open this addressbook!!!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\nHave finded,as follow:\n");printf(" name num dis tel addr ");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);k=1;}if(!k)printf("\n\nSorry,there is no this student!!");fclose(fp);}void find_by_tel(){int k=0;char telkey[8];struct student one;printf("\nInput tel:");scanf("%s",telkey);if((fp=fopen(filename,"rb"))==NULL){printf("\nCann't open this addressbook!!!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(telkey,one.tel)){printf("\n\nHave finded,as follow:\n");printf(" name num dis tel addr");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);k=1;}}if(!k)printf("\n\nSorry,there is no this student!!");fclose(fp);}void output(){struct student one;if((fp=fopen(filename,"r"))==NULL){printf("\nCann't open this addressbook!!!");exit(0);}* printf("\n\n%20s\n"," \nCann't open this addressbook\n");*while(!feof(fp))fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(strcmp(,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,o ne.addr);}fclose(fp);}void append(){struct student one;if((fp=fopen(filename,"a"))==NULL){printf("\nCann't open this addressbook!!");exit();}printf("\nInput new name,num,dis,tel,addr\n");scanf("%s%s%s%s%s",,one.num,one.dis,one.tel,one.addr);fprintf(fp,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);fclose(fp);}void modify(){int m,k=0;long offset;char namekey[8];struct student one;printf("\nInput name:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\nCann't open this addressbook!!!");exit();}while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\nHave finded,as follow:");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);printf("\nInput new name,num,dis,tel,addr:");scanf("%s%s%s%s%s",,one.num,one.dis,one.tel,one.addr);fseek(fp,offset,SEEK_SET);printf("%1d",ftell(fp));fprintf(fp,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);}elseprintf("\nSorry,there is no this student!!");fclose(fp);}void delete(){int m,k=0,flag;long offset1;char namekey[8];struct student one;printf("\nInput name:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\nCann't open this addressbook!!");exit();}while(!feof(fp)){ offset1=ftell(fp);fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\nHave finded,as follow:");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);printf("\n delete,press1:\n not delete,press0:");scanf("%d",&m);if(m){fseek(fp,offset1,SEEK_SET);strcpy(,"",,one.num,one.dis,one.tel,one.addr);}}elseprintf("\nSorry,there is no this student!!");fclose(fp);}通过对这些资源的合理利用使系统初步实现了通讯录管理系统的基本功能。

(完整word版)c语言程序设计通讯录管理系统

(完整word版)c语言程序设计通讯录管理系统

1.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出功能;还有就是要提供通讯录添加(个人信息包括姓名、学号、年龄、住址、电子邮件等)、删除、显示、修改等基本功能。

2。

概要设计系统总体设计是信息的输入、信息的编辑和退出.系统功能模块如下:1.添加通讯录;2.输出通讯录;3.查找通讯录;4.修改通讯录;5.删除通讯录;6.退出通讯录;3.详细设计1.通讯录里无信息,所以要添加信息.用键盘逐个输入通讯录里联系人的信息.2.输出通讯录用于让使用者观看通讯录里所有的信息.3。

查找通讯录是让使用者可以通过电话或姓名来查找通讯录里的联系人.4。

修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。

5.删除通讯录是用来按照联系人的姓名或电话来单独删除通讯录中一些不想要的联系人。

还可以集体删除通讯录中的联系人.6.退出通讯录系统。

4.主要源程序代码#include 〈stdio。

h>#include 〈stdlib.h〉#include 〈string.h>#include 〈conio。

h〉struct record{char name[20];char age[20];char phone[20];char adress[40];char number[30];char e_mail[20];}contact[500];int NO=0;FILE *fp;void mainmenu();void newrecord();void browsemenu();void searchmenu();void searchname();void searchphone();void modifymenu();void deletemenu();void deleteall();void deletesingle();void deletename();void deletephone();int loadfile();void savefile();void main(){printf(”\n\t\t :)欢迎使用通讯录管理系统beta”);printf(”\n\t\t文件导入中……请稍后……\n\n\n\n\n");system(”cls”);loadfile();while (1){mainmenu();}}void mainmenu(){char choice;system(”cls");printf("\n\t\t******************** 主菜单********************");printf("\n\t\t****************** 1-新建菜单******************”);printf(”\n\t\t******************2—浏览菜单******************”);printf(”\n\t\t****************** 3—查找菜单******************”);printf("\n\t\t******************4—修改菜单******************”);printf(”\n\t\t******************5-删除菜单******************”);printf(”\n\t\t****************** 6-退出******************");printf("\n\t\t************************************************”); printf(”\n\t\t请选择:");choice=getch();switch (choice){case '1':newrecord();break;case ’2’:browsemenu();break;case ’3’:searchmenu();;break;case '4’:modifymenu();break;case ’5’:deletemenu();break;case '6’:exit(0);default:mainmenu();}}void newrecord(){printf(”\n\t\t****************请输入联系人信息****************\n”);printf(”\n\t\t输入姓名:”);scanf(”%s”,&contact[NO]。

学生通讯录管理系统c语言编程

学生通讯录管理系统c语言编程

学生通讯录管理系统c语言编程以下是一个简单的C语言程序,用于管理学生通讯录。

该程序可以添加、显示、查找和删除学生信息。

c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_STUDENTS 100#define MAX_NAME_LENGTH 50// 学生结构体struct Student {char name[MAX_NAME_LENGTH];int age;char gender;char phone[15];char email[50];};// 学生数组struct Student students[MAX_STUDENTS];int num_students = 0;// 添加学生信息void add_student() {if (num_students >= MAX_STUDENTS) {printf("Error: Reached maximum number of students\n");return;}struct Student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter age: ");scanf("%d", &new_student.age);printf("Enter gender (M/F): ");scanf(" %c", &new_student.gender);printf("Enter phone number: ");scanf("%s", new_student.phone);printf("Enter email: ");scanf("%s", new_student.email);students[num_students] = new_student;num_students++;}// 显示所有学生信息void display_students() {printf("Name\tAge\tGender\tPhone\tEmail\n");for (int i = 0; i < num_students; i++) {printf("%s\t%d\t%c\t%s\t%s\n", students[i].name, students[i].age, students[i].gender, students[i].phone, students[i].email);}}// 查找学生信息void find_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) {printf("Name: %s\n", students[i].name);printf("Age: %d\n", students[i].age);printf("Gender: %c\n", students[i].gender); printf("Phone: %s\n", students[i].phone); printf("Email: %s\n", students[i].email); return;}}printf("Error: Student not found\n");}// 删除学生信息void delete_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);int found = 0;for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) { found = 1;for (int j = i; j < num_students - 1; j++) { students[j] = students[j+1];}num_students--;break;}}if (!found) {printf("Error: Student not found\n");} else {printf("Student deleted successfully\n"); }}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Display students\n");printf("3. Find student\n");printf("4. Delete student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case 1: add_student(); break;case 2: display_students(); break;case 3: find_student(); break;case 4: delete_student(); break;case 5: printf("Exiting...\n"); break; default: printf("Invalid choice\n"); break; }} while (choice != 5);return 0。

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

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

C语言程序设计通讯录管理系统/*设计一个学生通讯录,内容可自行设计如:姓名,家庭住址,邮编,电话号码等。

结构体类型,要求主函数是一功能选择菜单,其它用各自函数实现,要求:1能建立,修改,增删通讯录2能按多种方式查询3通讯录数据保存在文件中,运行程序时从文件读取到内存里,可以将修改后的数据重新保存至文件。

*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct student//定义学生结构体{char name[10];char sex[4];char addr[30];char exl[10];char tel[12];}stu[100],s;void Initiate()//创建新的通讯录{FILE *fw;int n;if((fw=fopen("txl.text","wb"))==NULL){printf("cannot open file\n");}printf("请输入新建的条目:");scanf("%d",&n);for(int i=1;i<=n;i++){printf("请输入第%d条信息!\n",i);printf("姓名:");scanf("%s",&stu[i].name);printf("\n");printf("性别:");scanf("%s",&stu[i].sex);printf("\n");printf("地址:");scanf("%s",&stu[i].addr);printf("\n");printf("邮编:");scanf("%s",&stu[i].exl);printf("\n");printf("电话:");scanf("%s",&stu[i].tel); printf("\n");fwrite(&stu[i],sizeof(struct student),1,fw);}fclose(fw);}void Show()//显示通讯录{FILE *fr;int i=1;if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}printf("姓名\t性别\t地址\t邮编\t电话\n");while(!feof(fr)){fread(&stu[i],sizeof(struct student),1,fr);if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行{printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);i++;}}fclose(fr);}void Add(){FILE *fw;if((fw=fopen("txl.text","ab"))==NULL){printf("cannot open file\n");}printf("姓名:\n");scanf("%s",&);printf("性别:\n");scanf("%s",&s.sex);printf("地址:\n");scanf("%s",&s.addr);printf("邮编:\n");scanf("%s",&s.exl);printf("电话:\n");scanf("%s",&s.tel);fwrite(&s,sizeof(struct student),1,fw);fclose(fw);}void Del()//删除条目{char name[10];int i=1; FILE *fr;FILE *fw;printf("请输入姓名:");scanf("%s",name);if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}if((fw=fopen("txl1.text","wb"))==NULL){printf("cannot open file\n");}while(!feof(fr))//循环条件{fread(&s,sizeof(struct student),1,fr);if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行fwrite(&s,sizeof(struct student),1,fw);}fclose(fr);fclose(fw);remove("txl.text");if((fr=fopen("txl1.text","rb"))==NULL){printf("cannot open file\n");}if((fw=fopen("txl.text","wb"))==NULL){printf("cannot open file\n");}int j=1;while(!feof(fr))//循环条件{fread(&s,sizeof(struct student),1,fr);if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行{if(strcmp(name, )!=0)//相等等于0{fwrite(&s,sizeof(struct student),1,fw);//符合条件的才复制}}}fclose(fr);fclose(fw);remove("txl1.text");}void Queryname()//按姓名查询,先读出条目,在每个进行判断{char name[10];FILE *fr;int i=0;printf("请输入要查询的姓名:");scanf("%s",name);if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}printf("姓名\t性别\t地址\t邮编\t电话\n");while(!feof(fr)){ i++;fread(&stu[i],sizeof(struct student),1,fr);if(strcmp(name, stu[i].name)==0){printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);}}fclose(fr);}void Querysex()//按性别查询,先读出条目,在每个进行判断{char sex[4];FILE *fr;int i=0;printf("请输入要查询的性别:");scanf("%s",sex);if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}printf("姓名\t性别\t地址\t邮编\t电话\n");while(!feof(fr)){ i++;fread(&stu[i],sizeof(struct student),1,fr);if(strcmp(sex, stu[i].sex)==0){printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);}}fclose(fr);}void Alter(){Del();Add();}void Menu(){printf("**************欢迎使用通讯录系统**************");printf("\n");printf("\n");printf(" 1.创建通讯录\n");printf(" 2.插入信息\n");printf(" 3.姓名查询\n");printf(" 4.性别查询\n");printf(" 5.修改记录\n");printf(" 6.删除记录\n");printf(" 7.显示所有记录\n");printf(" 8.退出通讯录\n");printf("\n");printf("请予以选择");}void main(){int choice=1;while(choice<8){Menu();scanf("%d",&choice);system("cls");if(choice<9&&choice>0){switch(choice){case 1:Initiate();break;case 2:Add();break;case 3:Queryname();break;case 4:Querysex();break;case 5:Alter();break;case 6:Del();break;case 7:Show();break;case 8:printf("感谢你的使用!\n");exit(0);}}elseprintf("请正确选择\n");choice=1;}}。

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

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

c语言程序设计通讯录管理系统通讯录管理系统文档1·引言本文档旨在提供C语言程序设计通讯录管理系统的详细说明和操作指南。

该系统可用于管理个人或组织的通讯录信息,包括联系人姓名、方式号码、地质等。

2·系统需求2·1 硬件需求●一台支持C语言编程的计算机●充足的内存和存储空间2·2 软件需求●C编译器(例如gcc)●操作系统(例如Windows、Linux)3·功能设计3·1 添加联系人●输入联系人姓名、方式号码、地质等信息●将联系人信息储存到通讯录中3·2 修改联系人信息●根据姓名或其他唯一标识查找联系人●修改联系人的姓名、方式号码、地质等信息3·3 删除联系人●根据姓名或其他唯一标识查找联系人●从通讯录中删除指定的联系人3·4 查找联系人●根据姓名或其他关键词查找联系人●显示与关键词匹配的联系人列表3·5 显示所有联系人●显示通讯录中的所有联系人信息4·系统设计4·1 数据结构●通讯录联系人结构体:包含姓名、方式号码、地质等字段4·2 主要函数●addContact:用于添加联系人信息到通讯录●editContact:用于修改指定联系人的信息●deleteContact:用于删除指定联系人●searchContact:用于根据关键词查找联系人●displayAllContacts:用于显示所有联系人信息5·界面设计●该系统无GUI界面,通过命令行界面与用户交互6·使用说明6·1 安装●安装C编译器和操作系统,确保系统满足软硬件需求6·2 编译和运行●使用C编译器将源代码编译为可执行文件●运行可执行文件以启动通讯录管理系统6·3 操作指南●运行系统后,根据命令行提示进行相应的操作●可通过输入数字或关键词来执行不同的功能7·附件本文档无附件。

通讯录管理系统程序C语言源代码

通讯录管理系统程序C语言源代码
} Address;
Address * h[5];
/*************************************************/
void menu();//一级菜单
void relatives();//亲人
void friends();//朋友
void classmates();//同学
/********************************************************/
void InitList(Address *&L);
int ListInsert(Address *&L,int i,AddressList e);
void DispList(Address *L);
void CreateListR(Address *&L, AddressList a[],int n);
int ListEmpty(Address *L);
void DispName(Address *L);
int ListLength(Address *L);
int ListDelete(Address *&L,int i,AddressList &e);
scanf("%d",&num1);
switch(num1)
{
case 1: menu();
case 2: SecondMenu();
default :exit(1);
}
}
void Delete()
{
int num1;
int m;
if (ListEmpty(h[x])==1)

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

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

c语言程序设计通讯录管理系统通讯录管理系统是一种常见的应用程序,用于管理个人或者组织的联系人信息。

本文将介绍一个基于C语言的通讯录管理系统的设计和实现。

一、需求分析通讯录管理系统需要满足以下功能需求:1. 添加联系人:可以添加新的联系人,包括姓名、电话号码、邮箱等信息。

2. 查找联系人:可以根据姓名或者电话号码查找已存在的联系人。

3. 删除联系人:可以根据姓名或者电话号码删除已存在的联系人。

4. 修改联系人:可以修改已存在联系人的信息,包括姓名、电话号码、邮箱等。

5. 显示所有联系人:可以显示当前通讯录中的所有联系人信息。

二、设计思路1. 数据结构:使用结构体来表示一个联系人的信息,包括姓名、电话号码、邮箱等字段。

使用数组来存储多个联系人的信息。

2. 添加联系人:通过用户输入的方式获取联系人信息,然后将联系人信息添加到联系人数组中。

3. 查找联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并显示其详细信息。

4. 删除联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并将其从数组中删除。

5. 修改联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并允许用户修改其信息。

6. 显示所有联系人:遍历联系人数组,逐个显示联系人的详细信息。

三、代码实现下面是一个简单的通讯录管理系统的C语言代码实现:```c#include <stdio.h>#include <string.h>#define MAX_CONTACTS 100typedef struct {char name[50];char phone[20];char email[50];} Contact;Contact contacts[MAX_CONTACTS];int numContacts = 0;void addContact() {printf("Enter name: ");scanf("%s", contacts[numContacts].name);printf("Enter phone number: ");scanf("%s", contacts[numContacts].phone);printf("Enter email: ");scanf("%s", contacts[numContacts].email);numContacts++;printf("Contact added successfully!\n");}void findContact() {char search[50];printf("Enter name or phone number to search: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Name: %s\n", contacts[i].name);printf("Phone: %s\n", contacts[i].phone);printf("Email: %s\n", contacts[i].email);found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void deleteContact() {char search[50];printf("Enter name or phone number to delete: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {for (int j = i; j < numContacts - 1; j++) {strcpy(contacts[j].name, contacts[j + 1].name);strcpy(contacts[j].phone, contacts[j + 1].phone);strcpy(contacts[j].email, contacts[j + 1].email);}numContacts--;printf("Contact deleted successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void modifyContact() {char search[50];printf("Enter name or phone number to modify: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Enter new name: ");scanf("%s", contacts[i].name);printf("Enter new phone number: ");scanf("%s", contacts[i].phone);printf("Enter new email: ");scanf("%s", contacts[i].email);printf("Contact modified successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void displayContacts() {printf("Contacts:\n");for (int i = 0; i < numContacts; i++) {printf("Name: %s\n", contacts[i].name); printf("Phone: %s\n", contacts[i].phone); printf("Email: %s\n", contacts[i].email); printf("\n");}}int main() {int choice;do {printf("1. Add contact\n");printf("2. Find contact\n");printf("3. Delete contact\n");printf("4. Modify contact\n");printf("5. Display all contacts\n"); printf("0. Exit\n");printf("Enter your choice: ");scanf("%d", &choice);switch (choice) {case 1:addContact();break;case 2:findContact();break;case 3:deleteContact();break;case 4:modifyContact();break;case 5:displayContacts();break;case 0:printf("Exiting...\n");break;default:printf("Invalid choice!\n");break;}} while (choice != 0);return 0;}```四、总结本文介绍了一个基于C语言的通讯录管理系统的设计和实现。

大一c语言通讯录管理系统源代码

大一c语言通讯录管理系统源代码

大一c语言通讯录管理系统源代码以下是一个简单的C语言通讯录管理系统的源代码示例:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100// 定义联系人结构体typedef struct {char name[50];char phone[20];char email[50];} Contact;// 全局通讯录数组Contact contacts[MAX_CONTACTS];int numContacts = 0;// 添加联系人void addContact() {if (numContacts >= MAX_CONTACTS) {printf("通讯录已满,无法添加新联系人。

\n");return;}Contact newContact;printf("请输入联系人姓名:");scanf("%s", );printf("请输入联系人电话:");scanf("%s", newContact.phone);printf("请输入联系人邮箱:");scanf("%s", newContact.email);contacts[numContacts] = newContact; numContacts++;printf("联系人添加成功。

\n");}// 显示所有联系人void displayContacts() {if (numContacts == 0) {printf("通讯录为空。

\n");return;}printf("所有联系人:\n");for (int i = 0; i < numContacts; i++) {printf("姓名:%s\t电话:%s\t邮箱:%s\n", contacts[i].name, contacts[i].phone, contacts[i].email); }}// 主菜单void showMenu() {printf("******************************\n"); printf("***** 通讯录管理系统*****\n"); printf("******************************\n"); printf("请选择操作:\n");printf("1. 添加联系人\n");printf("2. 显示所有联系人\n");printf("0. 退出\n");printf("******************************\n"); }int main() {int choice;while (1) {showMenu();printf("请选择操作(输入数字):");scanf("%d", &choice);switch (choice) {case 0:printf("已退出通讯录管理系统。

通讯录管理系统代码(C程序)

通讯录管理系统代码(C程序)

#include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/#include<string.h> /*字符串函数库*/#define FILENAME "phone.dat"struct date //定义一个结构体类型数组{char name[10]; /*姓名*/char phone[12];char email[20]; /*邮箱*/char QQ[20];}per[10];int menu() //主菜单选择函数{int c; //定义一个整型变量do{system("cls"); //清屏printf("\t*******通讯录*******\n");printf("\t--------------------\n");printf("\t 1、通讯信息录入\n");printf("\t 2、通讯信息显示\n");printf("\t 3、通讯信息保存\n");printf("\t 4、通讯信息删除\n");printf("\t 5、通讯信息修改\n");printf("\t 6、通讯信息增加\n");printf("\t 7、通讯信息查询\n");printf("\t 0. 退出\n");printf("\t--------------------\n");printf("\t请您选择(0-7):");scanf("%d",&c);}while(c>7&&c<0);return(c);}int Input(struct date per[10],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){printf("\t姓名:");scanf("%s",per[n+i].name);printf("\t电话号码:");scanf("%s",per[n+i].phone);printf("\t电子邮箱:");scanf("%s",per[n+i].email);printf("\tQQ:");scanf("%s",per[n+i].QQ);gets(x);printf("\n\t是否继续添加?(Y/N)");fflush(stdin);//清空缓存scanf("%c",&sign);i++;}return(n+i);}void writeToFile(struct date per[10],int n){FILE *fp=NULL;int i=0;fp=fopen("phone.dat","wb");if(fp==NULL){printf("打开文件出错!\n");exit(0);}for(i=0;i<10;i++)fwrite(&per[i],sizeof(per),1,fp); //把字节为1的信息写入文件fclose(fp);}void Display(struct date per[10],int n){int i;printf("----------------------------------------------------------------------\n");//格式/printf(" 姓名电话号码QQ 电子邮箱\n");printf("----------------------------------------------------------------------\n");for(i=1;i<n+1;i++){printf("%-15s%-14s%-14s%-14s\n",per[i-1].name,per[i-1].phone,per[i-1].QQ,per[i-1].email);if(i>1&&i%10==0){printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_a_record(struct date per[10],int n){char s[20];int i=0,j;printf("\t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return(n);}for(j=i;j<n-1;j++){strcpy(per[j].phone,per[j+1].phone);strcpy(per[j].name,per[j+1].name);strcpy(per[j].QQ,per[j+1].QQ);strcpy(per[j].email,per[j+1].email);}printf("\t\t\t已经成功删除!\n");return(n-1);}void Query_a_record(struct date per[10],int n){int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------电话│\n");printf("\t│3------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){char s[20];int i=0;printf("\t请输入想查询的姓名:");scanf("\t%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人QQ: %s\n",per[i].QQ);printf("\t电话号码: %s\n",per[i].phone);printf("\t电子邮箱: %s\n",per[i].email);} ;if(m==2){char s[20];int i=0;printf("\t请输入想查询的电话:");scanf("\t%s",s);while(strcmp(per[i].phone,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人姓名: %s\n",per[i].name);printf("\t此人QQ: %s\n",per[i].QQ);printf("\t电子邮箱: %s\n",per[i].email);} ;}void Change(struct date per[10],int n){char s[20];int i=0;printf("\t请输入想修改的记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("姓名:");scanf("%s",per[i].name);printf("电话号码:");scanf("%s",per[i].phone);printf("QQ:");scanf("%s",per[i].QQ);printf("电子邮箱:");scanf("%s",per[i].email);printf("\n修改成功!");}void WritetoText(struct date per[10],int n){int i=0;FILE *fp; //定义文件指针char filename[20]; //定义文件名printf("\t保存到文件\n"); //输入文件名if((fp=fopen("phone.dat","w"))==NULL){printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"***************************************通讯录********************************\n");fprintf(fp," 姓名电话号码QQ 电子邮箱\n");fprintf(fp,"-----------------------------------------------------------------------------\n");while(i<n){fprintf(fp,"%-10s\t%-3s\t%-20s\t%-20s\n",per[i].name,per[i].phone,per[i].QQ,per[i].email);i++;}fprintf(fp,"-------------------------------------------------------------------------\n");fprintf(fp,"********************************共有%d条记录***************************\n",n);fclose(fp); //关闭文件printf("保存成功!\n");}void main() //主函数{int n=0,i;while(1){switch (menu()){case 1:{printf("\n\t 通讯信息录入\n"); //信息录入n=Input(per, n);}break;case 2:printf("\n\t\t\t 通讯录记录表\n"); //显示记录Display(per,n);break;case 3:printf("\n\t保存功能\n");WritetoText(per,n); //保存数据printf("\t");system("pause"); //操作完成后进行暂停break;case 4:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(per,n); //删除记录printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(per,n); //修改数据printf("\t");system("pause");break;case 6:printf("\n\t添加记录到通讯录\n"); //添加记录n=Input(per,n);break;case 7:printf("\n\t在通讯录中查找记录\n");Query_a_record(per,n); //查找记录printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n"); //结束程序printf("\n\t\t");system("pause");exit(0);}}}。

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

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

#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 10struct comm /*定义数据结构*/{char num[13]; /*学号*/char name[10]; /*姓名*/char sex[6]; /*性别*/int age; /*年龄*/char tel[11]; /*电话号码*/int year; /*入学年份*/}AddBook[N];int length=0,length1=0;int add;int *fp1=&add;int input_AddBook();void save_AddBook();int load_AddBook();int dele_AddBook();void inquire_AddBook();void revise_AddBook();void list_AddBook();int add_AddBook();void sort_AddBook();int main(){int choice;length1=load_AddBook();do{system("cls");printf("\n ***********通讯录管理系统************\n\n"); printf(" 1.录入信息\n");printf(" 2.修改信息\n");printf(" 3.删除信息\n");printf(" 4.查找信息\n");printf(" 5.显示信息\n");printf(" 6.增加信息\n");printf(" 7.排序信息\n");printf(" 0.退出\n");printf("\n ***********通讯录管理系统************\n\n"); printf(" 请选择:\n");scanf("%d",&choice);switch(choice){case 0: break;case 1: length=input_AddBook();break;case 2: revise_AddBook();break;case 3: length=dele_AddBook();break;case 4: inquire_AddBook();break;case 5: list_AddBook();break;case 6: length=add_AddBook();break;case 7: sort_AddBook();break;}}while(choice!=0);save_AddBook();system("pause");return 0;}/**********以下是保存文件函数*************/void save_AddBook(){FILE *fp;int i=0;if((fp=fopen("通讯录.txt","r"))==NULL){printf("can not open file\n");getchar();exit(0);}// fscanf(fp,"学号姓名性别年龄电话入学年份\n ");// printf(" 学号姓名性别年龄电话入学年份\n");do{fscanf(fp,"%s",AddBook[i].num);//printf("%-15s",AddBook[i].num);fscanf(fp,"%s",AddBook[i].name);//printf("%-10s",AddBook[i].name);fscanf(fp,"%s",AddBook[i].sex);//printf("%-6s",AddBook[i].sex);fscanf(fp,"%d",&AddBook[i].age);//printf("%-4d",AddBook[i].age);fscanf(fp,"%s",AddBook[i].tel);//printf("%-15s",AddBook[i].tel);fscanf(fp,"%d",&AddBook[i].year);//printf("%-4d\n",AddBook[i].year);i++;}while(i<length+length1);fclose(fp);if((fp=fopen("通讯录二进制数据.txt","w+"))==NULL){printf("can not open file.\n");getchar();exit(0);}for(i=0;i<length+length1;i++)fprintf(fp,"\n%-15s%-10s%-6s%-4d%-15s%-4d",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//fwrite(&AddBook[i],sizeof(struct comm),1,fp);fclose(fp);//保存初识记录数fp=fopen("num.txt","w+");if(fp==NULL){ printf("can't open the file.\n");exit(0);}fprintf(fp,"%d",length+length1);fclose(fp);printf("*********************保存完成*********************\n");printf("以上信息已保存完毕!\n");}/**********以下是读文件函数*************/{FILE *fp,*fp2;int i=0,a;char ch;//读出原始记录数目fp=fopen("num.txt","r+");if(fp==NULL){printf("can't open the file!\n");exit(0);}fscanf(fp,"%d",&a);fclose(fp);//读出原始数据if((fp=fopen("通讯录二进制数据.txt","r"))==NULL){printf("can not open file\n");getchar();exit(0);}if((fp2=fopen("通讯录.txt","w"))==NULL){printf("can not open file\n");getchar();exit(0);}printf(" 学号姓名性别年龄电话入学年份\n");// dofor(i=0;i<a;i++){//fread(&AddBook[i],sizeof(struct comm),1,fp);//printf("%d\n",i);fscanf(fp,"%s%s%s%d%s%d",&AddBook[i].num, &AddBook[i].name, &AddBook[i].sex,&AddBook[i].age, &AddBook[i].tel, &AddBook[i].year);printf(" %s %s %s %d %s %d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//system("pause");fprintf(fp2,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//printf(" %-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddB ook[i].age,AddBook[i].tel,AddBook[i].year);}// i++;// }while(i<3);fclose(fp);fclose(fp2);printf("\n*************************读取完成*************************\n");printf("按任意键进入主菜单");getchar();return i;}/**********以下是删除信息函数*************/{FILE *fp;struct comm dele;int i=0,j=0,flag=0,a=0;char choice;do{system("cls");printf("************删除信息*************\n");printf("请输入您要删除的学生的学号:");scanf("%s",dele.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,dele.num) == 0)break;else{j++;if(j==length+length1)printf("您要删除的信息不存在!\n");}if((fp=fopen("通讯录.txt","wt"))==NULL){printf("Open file error");getchar();exit(0);}for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,dele.num)!=0)fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook [i].age,AddBook[i].tel,AddBook[i].year);a++;printf("\n 要继续吗?(Y/N)");choice=getchar();if (choice=='y'||choice=='Y'){printf("\n 继续!\n");flag=1;}elseflag=0;}while(flag==1);a=-a+1;fclose(fp);printf("\n***************删除完成**************");printf("%d",a);printf("\n 按任意键返回主菜单!");getchar();getchar();return a;}/**********以下是查找信息函数*************/void inquire_AddBook(){int choice;void inquire_name();void inquire_num();do{system("cls");printf("\n\n\n **********查询资料**********\n\n\n");printf(" 1.按姓名查询\n\n");printf(" 2.按学号查询\n\n");printf(" 0.退出查找系统\n\n");scanf("%d",&choice);switch(choice){ case 1: inquire_name();break; /* 为函数调用 */case 2: inquire_num();break; /* 同上 */case 0: break;}}while(choice!=0);getchar();}void inquire_name(){{ int i,choice,j=0;struct comm inquire;system("cls");printf("\n 请输入要查询的姓名:");scanf("%s",);for(i=0; i<length+length1; i++)if(strcmp(AddBook[i].name,)==0){printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);break;}else{j++;if(j==length+length1)printf("\n 查询信息不存在!");}getchar();getchar();}}void inquire_num(){{ int i,choice,j=0;struct comm inquire;system("cls");printf("\n 请输入要查询的学号:");scanf("%s",inquire.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,inquire.num)== 0){printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);break;}else{j++;if(j==length+length1)printf("\n 查询信息不存在!");}getchar();getchar();}}/**********以下是修改信息函数*************/void revise_AddBook(){struct comm revise;FILE *fp;int i=0,choice,flag;do{system("cls");printf("\n 输入要修改的学生学号:");scanf("%s",revise.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,revise.num)== 0){printf("\n ********************资料信息***********************\n");printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);printf("\n 您要修改哪一项?\n");printf("\n 0.修改完成\n");printf("\n 1.学号\n");printf("\n 2.姓名\n");printf("\n 3.性别\n");printf("\n 4.年龄\n");printf("\n 5.电话\n");printf("\n 6.入学年份\n");printf("\n 请选择:");scanf("%d",&choice);switch(choice){case 0: break;case 1: printf("\n 请输入修改后的学号:");scanf("%s",&AddBook[i].num);break;case 2: printf("\n 请输入修改后的姓名:");scanf("%s",&AddBook[i].name);break;case 3: printf("\n 请输入修改后的性别:");scanf("%s",&AddBook[i].sex);break;case 4: printf("\n 请输入修改后的年龄:");scanf("%d",&AddBook[i].age);break;case 5: printf("\n 请输入修改后的电话:");scanf("%s",&AddBook[i].tel);break;case 6: printf("\n 请输入修改后的入学年份:");scanf("%d",&AddBook[i].year);break;}break;}if(i==length+length1){printf("\n 无该资料!");getchar();}getchar();printf("\n\n 继续修改吗?(Y/N)");choice=getchar();if(choice=='Y'||choice=='y'){flag=1;printf("\n 继续!\n");}else{printf("修改后的信息为:\n");printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);flag=0;}}while(flag==1);if((fp=fopen("通讯录.txt","w"))==NULL){printf("Open file error");getchar();exit(0);}for(i=0;i<length+length1;i++)fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);printf("\n 按任意键返回主菜单!");getchar();getchar();}/**********以下是显示信息函数*************/void list_AddBook(){FILE *fp;char ch;if((fp=fopen("通讯录.txt","r"))==NULL){printf("Open file error");system("pause");exit(0);}// rewind(fp);//ch=fgetc(fp);//while(ch!=EOF)//{// futchar(ch);//ch=fgetc(fp);//}int i=0;printf(" 学号姓名性别年龄电话入学年份\n");do{fscanf(fp,"%s%s%s%d%s%d",&AddBook[i].num, &AddBook[i].name, &AddBook[i].sex,&AddBook[i].age, &AddBook[i].tel, &AddBook[i].year);printf(" %s %s %s %d %s %d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//system("pause");// fprintf(fp2,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name,AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//printf(" %-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddB ook[i].age,AddBook[i].tel,AddBook[i].year);/*printf("%-15s",AddBook[i].num);printf("%-10s",AddBook[i].name);printf("%-6s",AddBook[i].sex);printf("%-4d",AddBook[i].age);printf("%-15s",AddBook[i].tel);printf("%-4d\n",AddBook[i].year);i++;*/i++;}while(i<length+length1);fclose(fp);printf("\n*************************显示完毕****************************");getchar();getchar();}/**********以下是增加信息函数*************/int add_AddBook(){FILE *fp,*fp2;int i,add1=0;if((fp=fopen("通讯录.txt","a"))==NULL){printf("Open file error");getchar();exit(0);}printf("请输入要增加的通讯录信息:");for(i=0;i<N;i++){printf("\n请输入学生姓名:(#->end)");scanf("%s",AddBook[i].name);if(AddBook[i].name[0]=='#')break;printf("\n请输入学生学号:");scanf("%s",AddBook[i].num);printf("\n请输入学生性别:");scanf("%s",AddBook[i].sex);printf("\n请输入学生年龄:");scanf("%d",&AddBook[i].age);printf("\n请输入学生联系方式:");scanf("%s",AddBook[i].tel);printf("\n请输入学生入学年份:");scanf("%d",&AddBook[i].year);}add1=i;for(i=0;i<add1;i++){fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//fprintf(fp,"%c",10);/*fprintf(fp,"%-11s ",AddBook[i].num);fprintf(fp," %-10s",AddBook[i].name);fprintf(fp," %-8s",AddBook[i].sex);fprintf(fp," %-8d",AddBook[i].age);fprintf(fp," %-11s ",AddBook[i].tel);fprintf(fp," %-4d",AddBook[i].year);fprintf(fp,"%c",10); /*换行*/}fclose(fp);// printf("i+add=%d\n",i+add);system("pause");//return i+add;// add=i+*fp1;save_AddBook();getchar();return add1;}/**********以下是排序信息函数*************/void sort_AddBook(){FILE *fp;struct comm temp;int i,j;if((fp=fopen("通讯录.txt","rt"))==NULL){printf("Open file error");getchar();exit(0);}//fscanf(fp,"学号姓名性别年龄电话入学年份");//printf("学号姓名性别年龄电话入学年份 \n");for(i=0;i<length+length1;i++){fscanf(fp,"%s",AddBook[i].num);fscanf(fp,"%s",AddBook[i].name);fscanf(fp,"%s",AddBook[i].sex);fscanf(fp,"%d",&AddBook[i].age);fscanf(fp,"%s",AddBook[i].tel);fscanf(fp,"%d",&AddBook[i].year);}for(i=0;i<length+length1-1;i++)for(j=i+1;j<length+length1;j++)if(strcmp(AddBook[j].num,AddBook[i].num)<0){temp=AddBook[i];AddBook[i]=AddBook[j];AddBook[j]=temp;}printf("学号姓名性别年龄电话入学年份 \n"); for(i=0;i<length+length1;i++){printf("%-11s ",AddBook[i].num);printf("%-10s",AddBook[i].name);printf("%-8s",AddBook[i].sex);printf("%-8d",AddBook[i].age);printf("%-11s ",AddBook[i].tel);printf("%-4d",AddBook[i].year);printf("\n");}printf("\n*********************排序完成**********************\n");fclose(fp);system("pause");}/**********以下是输入信息函数*************/int input_AddBook(){int i;printf("\n 请输入通讯录信息: \n");for(i=0;i<N;i++){printf("\n请输入学生姓名:(#->end)");scanf("%s",AddBook[i].name);if(AddBook[i].name[0]=='#')break;printf("\n请输入学生学号:");scanf("%s",AddBook[i].num);printf("\n请输入学生性别:");scanf("%s",AddBook[i].sex);printf("\n请输入学生年龄:");scanf("%d",&AddBook[i].age);printf("\n请输入学生联系方式:");scanf("%s",AddBook[i].tel);printf("\n请输入学生入学年份:");scanf("%d",&AddBook[i].year);}return i;}。

基于C语言实现个人通讯录管理系统

基于C语言实现个人通讯录管理系统

基于C语⾔实现个⼈通讯录管理系统之前利⽤C语⾔完成了⼀个关于个⼈通讯录管理系统的课题,主要是关于联系⼈的添加、查找、删除、修改、输出以及⽂件的写⼊与读出,还有⼀个甜点功能—模拟通话,它的实现原理也很容易理解,⽂章末尾会介绍到。

主框架:1、函数声明关于这⾥的函数声明,主要是为了可以清楚的了解整个系统的功能,这⾥不做过多介绍。

还有结构体链表的创建,贯穿了各个功能代码部分,必不可少。

2、联系⼈的添加这部分主要涉及联系⼈的姓名、地址、电话、QQ号和邮箱(当然需要其他功能可⾃⾏添加),考虑到数组操作不便前提下,使⽤链表的尾插法,通过不断开创新的结点,然后不断将新的结点的地址指向尾结点,使尾结点不断后移,⽽新创的结点时按照添加的先后顺序进⾏连接(参考下图可快速理解,此图⽚来源于⽹络),当然其中某些项的条件限制也是必不可少的。

⽐如:电话、QQ号、邮箱int Addpeo() //添加联系⼈{int t,n,a;char flag='y'; //仅作为第⼀次执⾏条件ptcs p=head,q;while(flag!='n'&&flag!='N') //判断是否继续添加{q=(ptcs)malloc(sizeof(pcs)); //申请内存p->next=q; //赋予下⼀个节点p=q;q->next=NULL; //尾结点地址赋空值,尾插法printf("\n\t请输⼊:\n");printf("\t\t姓名:");scanf("\t\t%s",q->);printf("\t\t地址:");scanf("\t\t%s",q->chat.add);printf("\t\t⼿机号:");scanf("\t\t%s",q->chat.tel);do{n=0; //仅做记录if(strlen(q->chat.tel)!=11) //计算⼿机号的长度,判断是否输⼊规范 {n=1;printf("\t\t您输⼊的⼿机号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tel);}else{for(t=0;t<11;t++){if(q->chat.tel[t]<'0'||q->chat.tel[t]>'9'){n=1;printf("\t\t您输⼊的⼿机号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tel);break;}}}}while(n);//输⼊QQ号printf("\t\tQQ号:");scanf("\t\t%s",q->chat.tecent);do{n=0;if(strlen(q->chat.tecent)>10) //以10位QQ号为准,判断是否符合规范 {n=1;printf("\t\t您输⼊的QQ号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);}else{for(t=0;t<10;t++){if(q->chat.tecent[t]<'0'||q->chat.tecent[t]>'9'){n=1;printf("\t\t您输⼊的QQ号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);break;}}}}while(n);//输⼊邮箱printf("\t\tEmail:");scanf("\t\t%s",q->chat.email);do{//判断邮箱 @符号输⼊规范(这⾥不限定邮箱号码位数)a=0;for(t=0;q->chat.email[t]!='\0';t++){if(q->chat.email[t]=='@')a++; //@数为1}if(a!=1){printf("\t\t输⼊的邮箱格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.email);}}while(a!=1); //是否输⼊@ ,为1则终⽌循环printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&flag);}return 0;}3、联系⼈的查询这步使⽤的是遍历查询,共设置了三种⽅式,在定义链表指针的前提下,通过遍历链表进⾏信息的对⽐,从⽽判断联系⼈是否存在,如果存在就直接显⽰给⽤户,不存在就直接退回功能选项。

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

个人通讯录管理系统C语言源程序(总6页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除#include <> xt","r"))==NULL) /*以只读方式打开判定文件是否为空*/{printf("\n\t\t\t 通讯录文件不存在"); /*判断结论*/if ((fp=fopen("同通讯录.txt","w"))==NULL) /*只写方式判断*/{printf("\n\t\t建立失败"); /*为空结论*/exit(0); /*退出*/}else /*不为空则执行else*/{printf("\n\t-----------------欢迎使用通讯录管理系统------------------");printf("\n\t 通讯录文件已建立 ");printf("\n\t 按任意键进入主菜单 ");printf("\n\t---------------------------------------------------------");getch();return ;}exit(0);}fseek(fp,0,2); /*文件位置指针移动到文件末尾*/if (ftell(fp)>0) /*文件不为空*/{rewind(fp); /*文件位置指针移动到文件开始位置*/for (n=0;!feof(fp) && fread(&txl[n],sizeof(struct tongxunlu),1,fp);n++);printf("\n\t----------欢迎使用通讯录管理系统版----------------");printf("\n\t 文件导入成功 ");printf("\n\t 按任意键返回主菜单 ");printf("\n\t---------------------------------------------------------");getch();return;}printf("\n\t------------欢迎使用通讯录管理系统版--------------");printf("\n\t 文件导入成功 ");printf("\n\t 通讯录文件中无任何纪录 ");printf("\n\t 按任意键返回主菜单 ");printf("\n\t---------------------------------------------------------");getch();return;}ingming); /*键盘输入*/printf("\n\t\t输入联系人电话号码:");scanf("%s",txl[n].dianhua);printf("\n\t\t输入联系人地址:");scanf("%s",txl[n].dizhi);n++; /*统计个数*/printf("\n\t\t是否继续添加联系人(Y/N):"); /*是否继续输入联系人.*/if (getch()=='y')zengjia();return;}xt","w"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<n;i++){if (fwrite(&txl[i],sizeof(struct tongxunlu),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}}fclose(fp); /*关闭文件*/printf("\n\t------------------------------------------------------"); /*输出提示信息*/printf("\n\t\t通讯录文件已保存");printf("\n\t\t谢谢使用,欢迎再次使用!\n");printf("如果对本软件有疑问,请到我们官网提出您的问题,我们将为您解答.\n");printf("我们的软件有不足之处,欢迎到官网反映,我们将努力改正!");printf("\n\t\t按任意键退出程序\n\t\t"); /*输出完毕*/exit(0);printf("\n\t------------------------------------------------------");}ingming);printf("\n\t\t电话: %s",txl[i].dianhua);printf("\n\t\t地址: %s",txl[i].dizhi);printf("\n\t\t--------------------------------------------------");if (i+1<n){printf("\n\t\t-----------------------");system("pause");ianhua,phone)==0)ingming);printf("\n\t\t电话: %s",txl[i].dianhua);printf("\n\t\t地址: %s",txl[i].dizhi);printf("\n\t\t------------------------------------------------");printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;}}if (mark==0){printf("\n\t\t没有找到联系人的信息");printf("\n\t\t按任意键返回主菜单");getch();return;}}void chazhao_xingming()ingming,name)==0){printf("\n\t\t------------ 以下是您查找的联系人信息 ---------------");printf("\n\t\t姓名: %s",txl[i].xingming);printf("\n\t\t电话: %s",txl[i].dianhua);printf("\n\t\t地址: %s",txl[i].dizhi);printf("\n\t\t---------------------------------------------------");mark++;getch();return;}}if (mark==0){printf("\n\t\t没有找到联系人的信息");printf("\n\t\t按任意键返回主菜单");getch();return;}}xt","w"))==NULL) /*文件空输出*/{printf("\n\t\t不能打开文件,删除失败");readfile();}n=0;printf("\n\t\t纪录已删除,按任意键返回主菜单");getch();return;}elsereturn;}void shanchu_xingming()ingming,name) == 0) ingming);printf("\n\t\t电话: %s",txl[i].dianhua);printf("\n\t\t地址: %s",txl[i].dizhi);printf("\n\t\t--------------------------------");printf("\n\t\t是否删除(y/n)");if (getch()=='y') ianhua,phone)==0){printf("\n\t\t以下是您要删除的联系人纪录:");printf("\n\t\t姓名: %s",txl[i].xingming);printf("\n\t\t电话: %s",txl[i].dianhua);printf("\n\t\t地址: %s",txl[i].dizhi);printf("\n\t\t是否删除(y/n)");if (getch()=='y'){for (m=i;m<n-1;m++) ingming,name)==0) {printf("\n\t\t以下是您要修改的联系人信息");printf("\n\t\t姓名: %s",txl[i].xingming);printf("\n\t\t电话: %s",txl[i].dianhua);printf("\n\t\t地址: %s",txl[i].dizhi);printf("\n\t\t是否修改(y/n)");if(getch()=='y'){printf("\n\t------------请选择修改信息---------------");printf("\n\t 1-修改姓名 2-修改电话 ");printf("\n\t 3-修改地址 ");printf("\n\t-----------------------------------------");printf("\n\t请选择您所所要的服务:");scanf("%s",&c);switch(c){case '1': printf("\n\t请输入新姓名: ");scanf("%s",txl[i].xingming);break;case'2':printf("\n\t请输入新电话: %s");scanf("%s",txl[i].dianhua);break;case'3':printf("\n\t请输入新地址: ");scanf("%s",txl[i].dizhi);break;}}}}if(mark==0){printf("\n\t\t没有找到联系人信息");printf("\n\t是否继续修改?(Y/N):");if(getch()=='y')xiugai_xingming();return;}}void xiugai_dianhua(){char c,phone[15];int i,mark=0;printf("\n\t\t请输入要修改联系人的号码:");scanf("%s",phone);if(n==0){printf("\n\t\t文件中无任何联系人");printf("\n\t\t按任意键返回主菜单");getch();mark++;return;}for(i=0;i<n;i++){if(strcmp(txl[i].dianhua,phone)==0){printf("\n\t\t以下是您要修改的联系人信息");printf("\n\t\t姓名: %s",txl[i].xingming);printf("\n\t\t电话: %s",txl[i].dianhua);printf("\n\t\t地址: %s",txl[i].dizhi);printf("\n\t\t是否修改(y/n)");if(getch()=='y'){printf("\n\t------------请选择修改信息---------------");printf("\n\t 1-修改姓名 2-修改电话 ");printf("\n\t 3-修改地址 ");printf("\n\t-----------------------------------------");printf("\n\t请选择您所所要的服务:");scanf("%s",&c);switch(c){case'1': printf("\n\t请输入新姓名: ");scanf("%s",txl[i].xingming);break;case'2':printf("\n\t请输入新电话: ");scanf("%s",txl[i].dianhua);break;case'3':printf("\n\t请输入新地址: ");scanf("%s",txl[i].dizhi);break;}}}}if(mark==0){printf("\n\t没有该联系人信息");printf("\n\t是否继续修改?(Y/N):");if(getch()=='y')xiugai_dianhua();return;}}。

相关文档
最新文档