通讯录(C语言版)(请下载观看,无乱码)

合集下载

C语言通讯录

C语言通讯录

C语言通讯录#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <windows.h>#define N 50struct Telephone{char name[20];char addrass[20];char mail[20];char telephone[20];struct Telephone *next;}student[N];struct Node{char name[20];char addrass[20];char mail[20];char telephone[20];}Node[N];typedef struct Telephone TEL;TEL *head = NULL;void Showmenu(); /*菜单*/void menu2(); /*菜单2*/void menu3(); /*菜单3*/void Add(); /*添加条目*/void Print(); /*输出条目*/void Findname(); /*查找条目(按姓名)*/ void Findtelephone(); /*查找条目(按电话)*/ void Alter(); /*修改条目*/void Del(); /*删除信息(按姓名)*/ void Del1(); /*删除信息(按手机号)*/ void sort(); /*按姓名排序*/void Saveandfree(); /*保存到文件*/void Open(); /*打开文件*/main(){char ch;Open(); /*打开文件*/while(1){Showmenu(); /*显示菜单*/scanf(" %c",&ch);switch(ch){case '1': Add(); /*添加条目*/system("cls");break;case '2': Print(); /*输出条目*/break;case '3':system("cls"); /*查找条目1.按姓名*/menu2();break;case '4': /*输出删除后的结果*/system("cls");menu3();break;case '5': Alter(); /*修改信息*/system("cls");break;case '6': /*sort();*/system("cls");break;case '0': Saveandfree(); /*保存并释放内存*/exit(0); /*退出*/break;default:printf("选择错误!");break;}}}/*菜单*/void Showmenu(){system("color 2b");printf("\n\n\n\n\t***************************通讯录*************************\n");printf("\t- \t1.输入信息-\n");printf("\t- \t2.输出信息-\n");printf("\t- \t3.查找信息-\n");printf("\t- \t4.删除信息-\n");printf("\t- \t5.修改信息-\n");printf("\t- \t6.排序-\n");printf("\t- \t0.保存并退出! -\n");printf("\t**********************************************************\n");printf(" \t请选择:\n");}/*菜单2*/void menu2(){int c1;system("color 3d");printf("\n***************************通讯录*************************\n");printf("- \t1.按姓名查找-\n");printf("- \t2.按手机号查找-\n");printf("**********************************************************\n");printf(" \t请选择:\n");scanf("%d", &c1);switch(c1){case 1: Findname();getch();system("cls");break;case 2: Findtelephone();getch();system("cls");break;default:printf("选择错误!");}}/*菜单3*/void menu3(){int c2;system("color 1b");printf("\n***************************通讯录*************************\n");printf("- \t1.按姓姓名删除-\n");printf("- \t2.按手机号删除-\n");printf("**********************************************************\n");printf(" \t请选择:\n");scanf("%d", &c2);switch(c2){case 1: Del();getch();system("cls");break;case 2: Del1();getch();system("cls");break;default:printf("选择错误!\n");}}/*添加条目*/void Add(){TEL * p1 = NULL,* p2 = NULL;p1 = (TEL *) malloc(sizeof(TEL)); /*申请结点*/printf("请输入姓名:\n"); /*添加信息*/scanf("%s", p1->name);printf("请输入地址:\n");scanf("%s", p1->addrass);printf("请输入邮箱:\n");scanf("%s", p1->mail);printf("请输入手机:\n");scanf("%s", p1->telephone);p1 -> next = NULL; /*保存到链表*/ if (head == NULL){head = (TEL *) malloc(sizeof(TEL)); /*申请空间*/head -> next = p1;}else{for (p2 = head; p2 -> next != NULL; p2 = p2 -> next); /*找到结点尾*/p2->next=p1;}printf("信息已被成功添加!");}/*输出学生信息*/void Print(){TEL *p = NULL;if (head == NULL){printf("此通讯录内无记录,请添加后使用此功能!\n");return;}printf("*************************用户信息************************\n"); /*输出信息*/for (p = head -> next; p != NULL; p=p -> next){printf("姓名:\t%s\n",p->name);printf("地址:\t%s\n",p->addrass);printf("邮箱:\t%s\n",p->mail);printf("手机:\t%s\n",p->telephone);}printf("********************************************************\n");getch();system("cls");}/*查找信息1.按姓名*/void Findname(){TEL *p;int flag;char findname[20];printf("请输入您想查找的姓名:\n");scanf("%s", findname);printf("**************************通讯录***************************\n");flag = 0;for (p = head -> next;p != NULL;p = p -> next){if(strcmp(p -> name, findname) == 0){flag ++;printf("姓名:\t%s\n", p -> name);printf("地址:\t%s\n", p -> addrass);printf("邮箱:\t%s\n", p -> mail);printf("电话:\t%s\n", p -> telephone);}}if (flag == 0){printf("无此记录!");}}/*查找信息2、按电话*/void Findtelephone(){TEL *p;int flag;char findname[20];printf("请输入您想查找的电话:\n");scanf("%s", findname);printf("**************************查找结果***************************\n");flag = 0;for (p = head -> next;p != NULL;p = p -> next){if(strcmp(p -> telephone, findname) == 0){flag ++;printf("姓名:\t%s\n", p -> name);printf("地址:\t%s\n", p -> addrass);printf("邮箱:\t%s\n", p -> mail);printf("电话:\t%s\n", p -> telephone);}}if (flag == 0){printf("无此记录!!");}}/*修改信息*/void Alter(){TEL *p1(TEL *head);{struct Telephone *p1;char flag = 0;char name[20];printf("请输入您想修改的姓名:\n");scanf("%s", name);p1 = head;while (p1 != NULL){if(strcmp(p1 -> name,name) == 0){printf("请输入新的姓名:\n"); /*添加新信息*/scanf("%s", p1 -> name);printf("请输入新的地址:\n");scanf("%s", p1 -> addrass);printf("请输入新的邮箱地址:\n");scanf("%s", p1 -> mail);printf("请输入新的手机号:\n");scanf("%s", p1 -> telephone);flag = 1;}p1 = p1 -> next;}}printf("修改成功!");}/*删除信息*/void Del(){char findname[20]; /*先查找后删除*/ TEL *p = head, *pr = head;printf("请输入您要删除人的姓名:\n");scanf(" %s", findname);if (head == NULL){printf("No node!\n");return;}while ((strcmp(p -> name, findname) != 0) && p -> next != NULL){pr = p;p = p -> next;}if(strcmp(p -> name, findname) == 0){if(p == head)head = p -> next; /*删除头结点*/elsepr -> next = p -> next; /*删除中间或尾结点*/free(p);}elseprintf("没有您想要删除的信息\n");printf("删除成功!");Print();}/*按手机号删除*/void Del1(){char findname[20]; /*先查找后删除*/ TEL *p = head, *pr = head;printf("请输入您要删除人的电话:\n");scanf(" %s", findname);if (head == NULL){printf("No node!\n");return;}while ((strcmp(p -> telephone, findname) != 0) && p -> next != NULL){pr = p;p = p -> next;}if(strcmp(p -> telephone, findname) == 0){if(p == head)head = p -> next; /*删除头结点*/elsepr -> next = p -> next; /*删除中间或尾结点*/free(p);}elseprintf("没有您想要删除的信息\n");printf("删除成功!");Print();}/*保存链表信息到文件并释放内存空间*/void Saveandfree(){TEL *p = NULL;FILE *fp;char *Book = "people.txt";if(head == NULL){printf("\n无记录\n");return;}elsep = head -> next;if((fp = fopen(Book,"w+")) == NULL){printf("\n无法打开文件!\n");return;}while(p != NULL) /*保存信息*/{fprintf(fp, "%s %s %s %s ", p -> name,p -> addrass, p -> mail, p -> telephone);p = p -> next;}printf("保存成功!");fclose(fp);/*释放链表空间*/for(; head -> next != NULL; ){p = head -> next;head -> next = head -> next -> next;free(p);}free(head);}/*文件信息输出到链表*/void Open(){FILE *fp;TEL *p1 = NULL, *p2 = NULL, *temp = NULL;if((fp = fopen("people.txt", "r+")) == NULL){printf("\n*************************通讯录************************\n");return;}head = (TEL *) malloc(sizeof(TEL));head -> next = NULL;temp = p2 = head;while(! feof(fp)) /*循环读取*/{p1 = (TEL *) malloc(sizeof(TEL));temp = p2;p2 -> next = p1;p2 = p1;fscanf(fp, "%s%s%s%s", p1 -> name, p1 -> addrass, p1 -> mail, p1 -> telephone);}temp -> next = NULL;fclose(fp); /*关闭文件*/}/*按姓名排序*//*void sort(){TEL *p1, *p2, *temp;temp = (TEL *)malloc(sizeof(TEL));p1 = head;for (;p1 -> next != NULL; p1 = p1 -> next){p2 = p1 -> next;for (;p2 -> next != NULL; p2 = p2 -> next){if (strcmp(p1 -> name, p2 -> name) > 0){strcpy(p1 -> name, temp -> name);strcpy(p1 -> addrass, temp -> addrass);strcpy(p1 -> mail, temp -> mail);strcpy(p1 -> telephone, temp -> telephone);strcpy(p2 -> name, p1 -> name);strcpy(p2 -> addrass, p1 -> addrass);strcpy(p2 -> mail, p1 -> mail);strcpy(p2 -> telephone, p1 -> telephone);strcpy(temp -> name, p2 -> name);strcpy(temp -> addrass, p2 -> addrass);strcpy(temp -> mail, p2 -> mail);strcpy(temp -> telephone, p2 -> telephone);}if (p2 -> next == NULL && (strcmp(p1 -> name, p2 -> name) > 0)){strcpy(p1 -> name, temp -> name);strcpy(p1 -> addrass, temp -> addrass);strcpy(p1 -> mail, temp -> mail);strcpy(p1 -> telephone, temp -> telephone);strcpy(p2 -> name, p1 -> name);strcpy(p2 -> addrass, p1 -> addrass);strcpy(p2 -> mail, p1 -> mail);strcpy(p2 -> telephone, p1 -> telephone);strcpy(temp -> name, p2 -> name);strcpy(temp -> addrass, p2 -> addrass);strcpy(temp -> mail, p2 -> mail);strcpy(temp -> telephone, p2 -> telephone);}}}printf("\n*************************排序后************************\n");Print();getch();}*/排序未实现。

c语言程序设计之通讯录

c语言程序设计之通讯录

#include<stdio.h>#include<string.h>#include<stdlib.h>int mimayanzheng(char a[],char b[]);void luru(int n);void xinxichaxun(struct txl_type mulu[],int n); int chazhao(struct txl_type mulu[],int n,int j); void xiugai(struct txl_type mulu[],int n);void shanchu(struct txl_type mulu[],int n);void paixu(struct txl_type mulu[],int n);void baocun(struct txl_type mulu[],int n);struct txl_type{ char name[15] ;char sex[5] ;char age[4] ;char phnum[15] ;char email[20];char adr[30] ;};void main(){char a[8]="1234567",b[8];int i,j;FILE *fp;for(i=0;i<3;i++){printf("请输入密码并按回车键确认\n");if(mimayanzheng(a,b)==1){printf("密码正确,成功");printf("进入系统\n");break;}elseprintf("密码错误请重新输入\n");}if(i==3){printf("退出程序\n");goto loop;}if((fp=fopen("tx1.txt","a"))==NULL)goto loop;fclose(fp);for(;;){struct txl_type mulu[500],*p;char ch;int n;FILE *fp;fp=fopen("tx1.txt","r");n=0;p=mulu;while((ch=fgetc(fp))!=EOF){fscanf(fp,"%s%s%s%s%s%s",p->name,p->sex,p->age,p->phnum,p->email,p->adr);p++;n++;};do{printf("1.信息录入 2.信息修改 3.信息查询4信息删除5信息排序6信息保存7退出\n");scanf("%d",&j);fflush(stdin);}while(j!=1&&j!=2&&j!=3&&j!=4&&j!=5&&j!=6&&j!=7);switch(j){case 1:printf("进入信息录入系统\n");luru(n);break;case 2:printf("进入信息修改系统\n");xiugai(mulu,n);break;case 3:printf("进入信息查询系统\n");xinxichaxun(mulu,n);break;case 4:printf("进入信息删除系统\n");shanchu(mulu,n);break;case 5:printf("进入信息排序系统\n");paixu(mulu,n);break;case 6:printf("进入信息保存系统\n");baocun(mulu,n);break;case 7:goto loop;}}loop:;}mimayanzheng(char a[],char b[]){int i;scanf("%7s",b);for(i=0;i<7;i++){ if(a[i]!=b[i])return 0;}return 1;}void luru(int n){struct txl_type t;int i;FILE *fp;fp=fopen("tx1.txt","a");i=1;while(i==1){fflush(stdin);printf("请输入联系人姓名\n");scanf("%s",);fflush(stdin);printf("请输入联系人性别\n");scanf("%s",t.sex);fflush(stdin);printf("请输入联系人年龄\n");scanf("%s",t.age);fflush(stdin);printf("请输入联系人手机号\n");scanf("%s",t.phnum);fflush(stdin);printf("请输入联系人邮箱\n");scanf("%s",t.email);fflush(stdin);printf("请输入联系人地址\n");scanf("%s",t.adr);fflush(stdin);fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s", ,t.sex ,t.age ,t.phnum ,t.email,t.a dr);printf("------------------------------------------------\n");n++;printf("新增联系人成功还可以添加%d个是否继续添加?\n",(500-n));printf(" 1.是 2. 否\n");scanf("%d",&i);fflush(stdin);}printf("已有%d名联系人\n",n);printf("还可以新增%d个联系人人\n",(500-n));fclose(fp);}void xinxichaxun(struct txl_type mulu[],int n){struct txl_type *p;int k=1,j;while(k==1){p=mulu;printf("请选择:1.用姓名查找 2.用电话号码查找\n");scanf("%d",&j);fflush(stdin);chazhao(p,n,j);/*调用查找程序*/printf("\n");printf(" 查找结束,是否继续查找?\n");printf(" 1.是 2.否\n");scanf("%d",&k);fflush(stdin);}}int chazhao(struct txl_type *p,int n,int j){int i,m[10],a=0,b;char keyName[10],keyphnum[15];if(j==1){printf("请输入姓名:\n");scanf("%s", keyName);fflush(stdin);printf("查找结果:\n");for(i=0;i<n;i++){if(strcmp(keyName,p->name)==0){printf("联系人%d: name:%s age:%s phnum:%s email:%s adr:%s\n",(a+1),p->name,p->age,p->phnum,p->email,p->adr);a++;m[a]=i;}p++;}}else if(j==2){printf("请输入电话号码:\n");scanf("%s", keyphnum);fflush(stdin);printf("查找结果:\n");for(i=0;i<n;i++){if(strcmp(keyphnum,p->phnum)==0){printf("联系人%d: name:%s age:%s phnum:%s email:%s adr:%s\n",(a+1),p->name,p->age,p->phnum,p->email,p->adr);a++;m[a]=i;}p++;}}if(a==0){printf(" 该联系人不存在!\n");return i;}else{printf("共找到以上%d个联系人\n",a);printf("请选择你要找的联系人(输入该联系人序号)\n");scanf("%d",&b);}return m[b];}void xiugai(struct txl_type mulu[],int n){struct txl_type *p,k;int m,i,t,j=1;FILE *fp;p=mulu;t=chazhao(p,n,j);/*调用查找程序*/if(t>=n);else{printf("请对该联系人资料进行修改进行修改\n");printf("请输入修改后联系人姓名\n");scanf("%s",);fflush(stdin);printf("请输入修改后联系人性别\n");scanf("%s",k.sex);fflush(stdin);printf("请输入修改后联系人年龄\n");scanf("%s",k.age);fflush(stdin);printf("请输入修改后联系人手机号\n");scanf("%s",k.phnum);fflush(stdin);printf("请输入修改后联系人邮箱\n");scanf("%s",k.email);fflush(stdin);printf("请输入修改后联系人地址\n");scanf("%s",k.adr);fflush(stdin);printf("修改前联系人资料:name:%s age:%s phnum:%s email:%s adr:%s\n",mulu[t].name,mulu[t].age,mulu[t].phnum,mulu[t].email,mulu[t].adr);printf("修改后联系人资料:name:%s age:%s phnum:%s email:%s adr:%s\n",,k.age,k.phnum,k.email,k.adr);printf("是否保存对联系人的修改? 1.是 2.否\n");scanf("%d",&m);if(m==1){mulu[t]=k;if((fp=fopen("tx1.txt","w"))!=NULL){for(i=0;i<n;i++){fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s",mulu[i].name ,mulu[i].sex ,mulu[i].age , mulu[i].phnum ,mulu[i].email,mulu[i].adr);}printf("已保存修改\n");}fclose(fp);}}}void shanchu(struct txl_type mulu[],int n){struct txl_type *p;int m,i,t,j=1;FILE *fp;p=mulu;t=chazhao(p,n,j);/*调用查找程序*/if(t>=n);else{printf(" 是否删除该联系人?\n");printf(" 1.是 2.否\n");scanf("%d",&m);fflush(stdin);if(m==1){for(i=t;i<n-1;i++)mulu[i]=mulu[i+1];if((fp=fopen("tx1.txt","w"))!=NULL){for(i=0;i<n-1;i++){fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s",mulu[i].name ,mulu[i].sex ,mulu[i].age , mulu[i].phnum ,mulu[i].email,mulu[i].adr);}}printf("该联系人已删除\n");fclose(fp);}}}void paixu(struct txl_type mulu[],int n){int i,j,m;struct txl_type t;FILE *fp;printf("请选择排序方式: 1.按姓名排序 2.按年龄排序\n");scanf("%d",&m);for(i=1;i<=n-1;i++){for(j=0;j<n-i;j++){if(m==1){if(strcmp(mulu[j].name,mulu[j+1].name)==1){t=mulu[j];mulu[j]=mulu[j+1];mulu[j+1]=t;}}else if(m==2){if(strcmp(mulu[j].age,mulu[j+1].age)==1){t=mulu[j];mulu[j]=mulu[j+1];mulu[j+1]=t;}}}}printf("排序后\n");if((fp=fopen("tx1.txt","w"))!=NULL){for(i=0;i<n;i++){fprintf(fp,"\n");fprintf(fp,"%12s %3s %4s %10s %6s %6s",mulu[i].name ,mulu[i].sex ,mulu[i].age , mulu[i].phnum ,mulu[i].email,mulu[i].adr);printf("name:%-12s sex:%-2s age:%-3s phnum:%-8s email:%-5s adr:%-5s\n",mulu[i].name,mulu[i].sex,mulu[i].age,mulu[i].phnum,mulu[i].email,mulu[i].adr);}}fclose(fp);printf("排序已完成,按回车键返回主菜单\n");fflush(stdin);if(m){char a;scanf("%c",&a);}}void baocun(struct txl_type mulu[],int n){int i,m;FILE *fp;printf(" 是否将联系人名单保存至lianxiren.txt?\n");printf(" 1.是 2.否\n");scanf("%d",&m);if(m==1){if((fp=fopen("lianxiren.txt","w"))!=NULL){for(i=0;i<n-1;i++){fprintf(fp,"\n");fprintf(fp,"姓名:%-10s 性别:%-2s 年龄:%-2s 电话号码:%-10s 邮箱:%-5s 地址:%-5s",mulu[i].name ,mulu[i].sex ,mulu[i].age ,mulu[i].phnum ,mulu[i].email,mulu[i].adr);}}fclose(fp);printf(" 保存成功,按回车键返回主菜单\n");}fflush(stdin);if(m!=2){char a;scanf("%c",&a);}}。

C语言通讯录7

C语言通讯录7

前言课程设计环节是应用型本科院校非常重要的一个教学环节,是学完一门课后应用本课知识及以前的知识积累而进行的综合性、开放性的训练。

通过课程设计,不仅能够使学生得到系统的技能训练,巩固和加强所学得专业理论知识,而且能够培养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。

C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1972年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。

我们通过《C语言程序设计》这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C 语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。

但是,对于程序设计而言,学习C 的步伐不应该停留于此。

我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C 语言开发出解决复杂问题的大型综合程序。

可是对于多数学生来说,学习了C语言后,除了应付各种考试之外,别无它用,对Turbo C语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。

本实训就是为了让学生在学完C语言后进一步了解C语言的知识,掌握C语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。

本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。

由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。

编者1.本通讯录所具备的功能(1).输入新纪录(2).显示所有通讯录(3).能删除某条记录(4).能退出系统并保存(5).查找记录2.功能(1)每个通讯记录记录包含姓名﹑宿舍单位﹑电话等信息。

通讯录C语言程序设计

通讯录C语言程序设计

通讯录C语言程序设计通讯录C语言程序设计是一个常见的编程练习项目,它可以帮助初学者熟悉C语言的基本语法和数据结构。

下面是一个简单的通讯录程序设计示例,包括了程序的基本框架、功能实现和代码实现。

程序设计目标设计一个通讯录程序,能够实现以下功能:1. 添加联系人2. 删除联系人3. 修改联系人信息4. 显示所有联系人5. 按姓名查找联系人6. 保存联系人信息到文件7. 从文件加载联系人信息程序设计思路1. 数据结构设计:使用结构体`struct Contact`来存储联系人信息,包括姓名、电话号码、电子邮件等。

2. 功能模块划分:将程序分为多个功能模块,如添加、删除、修改、显示、查找、保存和加载。

3. 用户界面设计:设计一个简单的文本界面,使用循环让用户选择相应的操作。

4. 文件操作:使用C语言的文件操作函数来实现联系人信息的持久化存储。

数据结构定义```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100#define MAX_NAME 50#define MAX_PHONE 20#define MAX_EMAIL 50struct Contact {char name[MAX_NAME];char phone[MAX_PHONE];char email[MAX_EMAIL];};struct Contact contacts[MAX_CONTACTS];int contactCount = 0;```功能实现1. 添加联系人```cvoid addContact() {if (contactCount >= MAX_CONTACTS) {printf("Contact list is full.\n"); return;}printf("Enter name: ");scanf("%49s", contacts[contactCount].name);printf("Enter phone: ");scanf("%19s", contacts[contactCount].phone);printf("Enter email: ");scanf("%49s", contacts[contactCount].email);contactCount++;}```2. 删除联系人```cvoid deleteContact() {int i, index;printf("Enter name of the contact to delete: ");scanf("%49s", contacts[index].name);for (i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, contacts[index].name) == 0) {index = i;break;}}if (i == contactCount) {printf("Contact not found.\n");} else {for (; i < contactCount - 1; i++) {contacts[i] = contacts[i + 1];}contactCount--;printf("Contact deleted.\n");}}```3. 修改联系人信息```cvoid modifyContact() {// 类似于删除联系人,找到联系人后修改信息}```4. 显示所有联系人```cvoid displayContacts() {for (int i = 0; i < contactCount; i++) {printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}}```5. 按姓名查找联系人```cvoid findContact() {char name[MAX_NAME];printf("Enter name to find: ");scanf("%49s", name);for (int i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, name) == 0) { printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);return;}}printf("Contact not found.\n");}```6. 保存联系人信息到文件```cvoid saveContactsToFile() {FILE *file = fopen("contacts.txt", "w");if (file == NULL) {printf("Error opening file.\n");return;}for (int i = 0; i < contactCount; i++) {fprintf(file, "%s,%s,%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}fclose(file);printf("Contacts saved to file.\n");}```7. 从文件加载联系人信息```cvoid loadContactsFromFile() {FILE *file = fopen("contacts.txt", "r");if (file == NULL) {printf("。

c语言课程设计通讯录

c语言课程设计通讯录

c语言课程设计通讯录好的,我可以帮助您设计一个简单的通讯录程序。

下面是一个示例代码,实现了通讯录的基本功能,包括添加联系人、显示联系人列表、查找联系人、删除联系人和修改联系人信息。

c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100 // 通讯录最大容量// 定义联系人结构体typedef struct {char name[20]; // 姓名char phone[15]; // 电话号码char email[30]; // 邮箱地址} Contact;// 定义通讯录结构体typedef struct {Contact contacts[MAX_CONTACTS]; // 联系人数组int size; // 当前联系人数量} AddressBook;// 添加联系人void add_contact(AddressBook *book) {if (book->size >= MAX_CONTACTS) {printf("通讯录已满,无法添加联系人。

\n"); return;}printf("请输入联系人姓名:");scanf("%s", book->contacts[book->size].name); printf("请输入联系人电话号码:");scanf("%s", book->contacts[book->size].phone); printf("请输入联系人邮箱地址:");scanf("%s", book->contacts[book->size].email); book->size++;printf("联系人已添加。

C语言简单通讯录

C语言简单通讯录

C语言简单通讯录#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<windows.h>#define LEN sizeof(struct student)#define TITLE_T "╔═══════════════╗\n"#define NAME "║※姓名: 号码: ║\n"#define GESHI "║※%-15s %-11s ║\n"#define BOTTOM_B "╚═══════════════╝\n"#define NEIRONG stu[i].name,stu[i].numstruct student //定义通讯录结构体{char name[15]; //姓名char num[12]; //号码};struct student stu[50]; //定义结构体数组void in(); //添加联系人void show(); //显示联系人void order(); //按字符排序void del(); //删除联系人void modify(); //修改联系人void menu(); //主菜单void total(); //计算总人数void search(); //查找联系人void main() //主函数{system("title 某某某通讯录"); //设置cmd窗口标题system("mode con cols=85 lines=35");break;case 5:modify();break;case 6:total();break;default:printf("输入编码有误!正在返回...");Sleep(3000);break;}menu(); //执行完功能再次显示菜单界面scanf("%d",&n);}}void menu() //自定义函数实现菜单功能{system("cls");system("date /t");system("time /t");printf("\n\n\n\n\n");printf("\t\t╔══════════某某某通讯录══════════╗\n");printf("\t\t║※0. 退出║\n");printf("\t\t║※ 1. 添加║\n");printf("\t\t║※ 2. 查看║\n");printf("\t\t║※ 3. 查找║\n");printf("\t\t║※ 4. 删除║\n");printf("\t\t║※ 5. 修改║\n");printf("\t\t║※ 6. 联系人总数║\n");printf("\t\t╚══════════════════════════╝\n\n");printf("\t\t请选择(0-6):");}void in() //添加联系人{int i,m=0; //m是记录的条数char ch[2];FILE *fp; //定义文件指针if((fp=fopen("data","ab+"))==NULL) //打开指定文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;//统计当前记录条数}fclose(fp);if(m==0)printf("当前无记录!\n");else{system("cls");printf(TITLE_T);printf(NAME);for(i=0;i<m;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}if((fp=fopen("data","wb"))==NULL) //以只写二进制方式打开文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}for(i=0;i<m;i++)fwrite(&stu[i] ,LEN,1,fp); //如果原来有记录,就将记录写入到磁盘文件中printf("是否添加?(y/n):");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要添加联系人{back: printf("请输入联系人姓名:");scanf("%s",&stu[m].name); //输入姓名for(i=0;i<m;i++)if(strcmp(stu[i].name,stu[m].name)==0){printf("您输入的联系人已存在!\n");goto back;}printf("请输入联系人号码:");scanf("%s",stu[m].num);if(fwrite(&stu[m],LEN,1,fp)!=1) //将新录入的信息写入指定的磁盘文件{printf("保存'%s'失败!是否继续?(y/n):",stu[m].name);scanf("%s",ch);continue;}else{printf("添加'%s'成功!\n",stu[m].name);m++;}printf("是否继续?(y/n):"); //询问是否继续scanf("%s",ch);}printf("正在返回...");fclose(fp);order();return;}void show() //显示联系人{FILE *fp;int i,m=0;if((fp=fopen("data","ab+"))==NULL) //打开指定文件{printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m] ,LEN,1,fp)==1)m++;}fclose(fp);if(m>0){printf(TITLE_T);printf(NAME);for(i=0;i<m;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}elseprintf("当前无记录!");printf("按任意键返回...");getch();}void del() //删除联系人函数{FILE *fp;int i,j,m=0;char sname[15];char ch[2];if((fp=fopen("data","ab+"))==NULL){printf("不能打开文件,正在返回...\n");return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}printf("请输入联系人姓名:");scanf("%s",sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) break;if(i==m){printf("找不到'%s'!正在返回...",sname);return;}printf("已找到'%s',是否删除?(y/n)",sname);scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要进行删除{for(j=i;j<m;j++)stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置m--;//记录的总个数减1printf("删除'%s'成功!\n",sname);}if((fp=fopen("data","wb"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}for(j=0;j<m;j++)//将更改后的记录重新写入指定的磁盘文件中if(fwrite(&stu[j] ,LEN,1,fp)!=1){printf("保存失败!正在返回...\n");Sleep(3000);}fclose(fp);show();}void search() //自定义查找函数{FILE *fp;int i,m=0;char sname[15];char ch[2];if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}back1: printf("请输入联系人姓名:");scanf("%s",&sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) //查找输入的号码是否在记录中{printf("已找到'%s',是否显示?(y/n)",sname);scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf(TITLE_T);printf(NAME);printf(GESHI,NEIRONG); //将查找出的结果按指定格式输出printf(BOTTOM_B);}else{printf("正在返回...");Sleep(3000);return;}}if(i==m+1){printf("找不到'%s',是否继续?(y/n):",sname); //未找到要查找的信息scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要继续查找联系人goto back1;printf("正在返回...");Sleep(3000);return;}printf("按任意键返回...\n");getch();}void modify(){ FILE *fp;int i,j,m=0;char sname[15];if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("当前无记录!正在返回...\n");Sleep(3000);return;}printf("请输入联系人姓名:\n");scanf("%s",&sname);for(i=0;i<m;i++)if(strcmp(sname,stu[i].name)==0) //检索记录中是否有要修改的信息break;if(i<m){printf("已找到'%s',请修改!\n",sname);printf("请输入联系人姓名:\n");scanf("%s",stu[i].name);//输入名字printf("请输入联系人号码:\n"); //输入号码scanf("%s",stu[i].num);}else{printf("找不到'%s'!正在返回...",sname);Sleep(3000);return;}if((fp=fopen("data","wb"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}for(j=0;j<m;j++) //将新修改的信息写入指定的磁盘文件中if(fwrite(&stu[j] ,LEN,1,fp)!=1){printf("保存'%s'失败!正在返回...",sname);Sleep(3000);return;}fclose(fp);order();show();}void total() //自定义计算总人数函数{FILE *fp;int m=0;if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...\n");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;printf("此通讯录总共有%d名联系人!\n",m); //将统计的个数输出fclose(fp);printf("\n按任意键返回...\n");getch(); //输入任意键返回}void order() //自动排序函数{FILE *fp;struct student t; //用于交换信息int i=0,j=0,m=0; //i,j用于循环if((fp=fopen("data","ab+"))==NULL){printf("打开文件失败!正在返回...");Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m] ,LEN,1,fp)==1)m++;for(i=0;i<m-1;i++)for(j=i+1;j<m;j++) //双重循环实现联系人比较并交换if((strcmp(stu[i].name,stu[j].name))>0){t=stu[i];stu[i]=stu[j];stu[j]=t;}if((fp=fopen("data","wb"))==NULL){printf("文件打开失败!正在返回...\n");Sleep(3000);return;}for(i=0;i<m;i++)//将重新排好序的内容重新写入指定的磁盘文件中if(fwrite(&stu[i],LEN,1,fp)!=1){printf("排序失败!正在返回...");Sleep(3000);return;}fclose(fp);}。

通讯录的制作c语言

通讯录的制作c语言

通讯录的制作1. 介绍通讯录是一种管理联系人信息的工具,能够存储和查找联系人的姓名、电话号码、邮箱等信息。

在现代社会中,通讯录已经成为人们日常生活中必备的工具之一。

本文将介绍如何使用C语言编写一个简单的通讯录程序。

2. 功能需求通讯录程序应该具备以下功能: - 添加联系人:用户可以输入联系人的姓名、电话号码和邮箱,将其添加到通讯录中。

- 删除联系人:用户可以根据姓名或电话号码删除已存在的联系人。

- 修改联系人信息:用户可以根据姓名或电话号码修改已存在联系人的信息。

- 查找联系人:用户可以根据姓名或电话号码查找已存在的联系人,并显示其详细信息。

- 显示所有联系人:用户可以显示通讯录中所有联系人的列表。

3. 数据结构设计为了实现上述功能,我们需要设计合适的数据结构来存储联系人信息。

在C语言中,可以使用结构体来表示一个联系人。

typedef struct {char name[50];char phone[20];char email[50];} Contact;以上代码定义了一个名为Contact的结构体,包含了三个字段:姓名、电话号码和邮箱。

每个字段都使用字符数组来表示。

同时,我们需要定义一个数据结构来存储多个联系人,可以使用数组或链表。

在本文中,我们将使用数组来实现通讯录。

#define MAX_CONTACTS 100Contact contacts[MAX_CONTACTS];int numContacts = 0;以上代码定义了一个名为contacts的数组,用于存储所有联系人的信息。

numContacts变量用于记录当前通讯录中联系人的数量。

4. 功能实现4.1 添加联系人添加联系人功能允许用户输入联系人的姓名、电话号码和邮箱,并将其添加到通讯录中。

void addContact() {if (numContacts >= MAX_CONTACTS) {printf("通讯录已满,无法添加更多联系人。

用C语言实现简易通讯录

用C语言实现简易通讯录

⽤C语⾔实现简易通讯录C语⾔实现⼀个通讯录,通讯录可以⽤来存储1000个⼈的信息,每个⼈的信息包括:姓名、性别、年龄、电话、住址**提供⽅法:1. 添加联系⼈信息2. 删除指定联系⼈信息3. 查找指定联系⼈信息4. 修改指定联系⼈信息5. 显⽰所有联系⼈信息6. 清空所有联系⼈7. 以名字排序所有联系⼈**思路分析:⾸先我们可以分三个模块来解决这个问题,第⼀个模块我们需要⼀个头⽂件,这个头⽂件⾥可以包含⼀些相应信息,当实现⽂件和测试⽂件包含⾃⼰定义的头⽂件时便可以获得⼀些相关的信息。

所以头⽂件⾥应该包括⼀个结构体,这个结构体⾥应包含姓名,性别,年龄,电话,住址。

同时还可以定义⼀个结构体,这个结构体⾥包含通讯录,同时通讯录⾥⼈员的计数变量,将通讯录的地址传到别的地⽅便可以实现对它遍历或者其他操作。

第⼆个模块便是我们的测试函数,测试函数便可以实现我们的菜单打印,同时由我们接收不同的值便可以实现不同的操作,就是相应的⽅法的实现,这⾥很明显可以通过⼀个switch语句来进⾏控制。

第三个模块便是我们的⽅法实现的函数,将模块2⾥定义的类型为通讯录的地址传到各个⽅法⾥,这样便可以实现对通讯录的操作。

1.linkman.h(头⽂件)#ifndef __LINKMAN_H__#define __LINKMAN_H__#include<stdio.h>#include<windows.h>#include<string.h>#pragma warning (disable:4996)typedef struct LINKMAN//建⽴结构体,存放联系⼈信息{char name[20];char sex[10];int age;int tel[12];char addr[50];}LINKMAN;typedef struct Statis //把通讯录和⼈员统计放在结构体内{LINKMAN num[1000];int count;}Statis;void inint_linkman(Statis *p);//初始化数组void Add_linkman(Statis *p);// 添加联系⼈信息void Dele_linkman(Statis *p);//删除指定联系⼈信息void Find_linkman(Statis *p);//查找指定联系⼈信息void Revise_linkman(Statis *p);//修改指定联系⼈信息void Display_linkman(Statis *p);//显⽰所有联系⼈信息void Empty_linkman(Statis *p);//清空所有联系⼈void sort_linkman(Statis *p);//以名字排序所有联系⼈#endif2.test.c(测试)#include "linkman.h"Statis sta;void menu()//菜单{printf("***********************************\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");}void test(){int i = 0;do{menu();printf("请输⼊你要进⾏的选项:");scanf("%d", &i);switch (i){case 1:Add_linkman(&sta);break;case 2:Dele_linkman(&sta);break;case 3:Find_linkman(&sta);break;case 4:Revise_linkman(&sta);break;case 5:Display_linkman(&sta);break;case 6:Empty_linkman(&sta);break;case 7:sort_linkman(&sta);break;case 0:exit(1);break;default:printf("输⼊错误\n");break;}} while (i);}int main(){inint_linkman(&sta);test();system("pause");return 0;}3.game.c(实现)#include "linkman.h"void inint_linkman(Statis *p){int count = sizeof(p->num);p->count = 0;memset(p->num, 0,count);}int Find(Statis *p, char *pname)//对于⼀个联系⼈是否存在封装⼀个函数,在后⾯的修改、删除、查找可以⽤到{int i = 0;for (i = 0; i < (p->count); i++){if (strcmp(p->num[i].name, pname) == 0) return i;}return -1;}void menu1()//修改联系⼈时所⽤到的菜单{printf("*********************\n");printf("****1.姓名*2.性别****\n");printf("****3.年龄*4.电话****\n");printf("****5.地址*6.返回****\n");printf("*********************\n");}void Add_linkman(Statis *p)//添加联系⼈{printf("请输⼊你要添加的联系⼈姓名:\n"); scanf("%s", p->num[p->count].name);printf("请输⼊你要添加的联系⼈性别:\n"); scanf("%s", p->num[p->count].sex);printf("请输⼊你要添加的联系⼈年龄:\n"); scanf("%d", &(p->num[p->count].age)); printf("请输⼊你要添加的联系⼈电话:\n"); scanf("%s", p->num[p->count].tel);printf("请输⼊你要添加的联系⼈地址:\n"); scanf("%s", p->num[p->count].addr);if ((p->count) > 1000){printf("联系⼈上限\n");}else{printf("添加成功\n");p->count++;}}void Dele_linkman(Statis *p)//删除联系⼈{char name[20] = { 0 };int result = 0;int n = 0;int i = 0;printf("请输⼊要删除⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("你是否要删除该联系⼈?\n");printf("删除请按1,不删除请按0\n");scanf("%d", &n);if (n == 1){for (i = 0; i < (p->count)-1; i++){p->num[i] = p->num[i + 1];}p->count --;printf("删除成功\n");}else{printf("删除失败\n");}}else{printf("你要删除的联系⼈不存在\n");}}void Find_linkman(Statis *p)//查找联系⼈{char name[20] = { 0 };int result = 0;printf("请输⼊要查找联系⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("姓名:%s\n", p->num[result].name);printf("性别:%s\n", p->num[result].sex);printf("年龄:%d\n", p->num[result].age);printf("电话:%s\n", p->num[result].tel);printf("地址:%s\n", p->num[result].addr);}else{printf("你要查找的联系⼈不存在\n");}}void Revise_linkman(Statis *p)//修改联系⼈{char name[20] = {0};int result = 0;printf("请输⼊你要修改联系⼈的姓名:\n");scanf("%s", name);result = Find(p, name);if (result != -1){printf("姓名:%s\n", p->num[result].name);printf("性别:%s\n", p->num[result].sex);printf("年龄:%d\n", p->num[result].age);printf("电话:%s\n", p->num[result].tel);printf("地址:%s\n", p->num[result].addr);int i = 0;do{menu1();printf("输⼊你要修改的选项:\n");scanf("%d", &i);switch (i){case 1:printf("请把姓名修改成:");scanf("%s", p->num[result].name);break;case 2:printf("请把性别修改成:");scanf("%s", p->num[result].sex);break;case 3:printf("请把年龄修改成:");scanf("%d", &(p->num[result].age));break;case 4:printf("请把电话修改成:");scanf("%s", p->num[result].tel);break;case 5:printf("请把地址修改成:");scanf("%s", p->num[result].addr);break;case 0:break;default:printf("输⼊错误");break;}} while (i);}else{printf("你要修改的联系⼈不存在\n");}}void Display_linkman(Statis *p)//打印所有联系⼈信息{int i = 0;printf("输出所有⼈的信息:\n");printf("%10s%7s%6s%8s%10s\n","名字","性别","年龄","电话","住址"); for (i = 0; i <(p->count); i++){printf("%11s", p->num[i].name);printf("%5s", p->num[i].sex);printf("%5d", p->num[i].age);printf("%10s", p->num[i].tel);printf("%12s", p->num[i].addr);printf("\n");}}void Empty_linkman(Statis *p)//清空联系⼈{p->count = 0;}void sort_linkman(Statis *p)//以名字排序所有联系⼈(冒泡){int i = 0;int j = 0;for (i = 0; i < p->count - 1; i++)for (j = 0; j < p->count - 1 - i; j++){if (strcmp(p->num[j].name, p->num[j + 1].name)>0){LINKMAN tmp;tmp = p->num[j];p->num[j] = p->num[j + 1];p->num[j + 1] = tmp;}}}程序运⾏结果部分⽰范:到此为⽌,我们的简易通讯录就实现啦。

C语言通讯录

C语言通讯录

/*关于菜单界面及操作界面我就不作任何调了,有些界面显得有点“乱”,但我想你应该会看得懂并且会修改显示界面的!这个主要是用数组写的,里面的功能不多,你也可以自己增加!关于程序的优化:你可以自己调整main函数与其他模块的位置而使代码美观一点!*//*通讯录-数组*/#include "stdio.h"#include "string.h"#define N 100void myprint();void mycreate(char num[N][10],char name[N][10],char tel[N][10],int *n);void mydisplay(char num[N][10],char name[N][10],char tel[N][10],int n);void mysearch(char num[N][10],char name[N][10],char tel[N][10],int n);void sch_num(char num[N][10],char name[N][10],char tel[N][10],int n);void sch_name(char num[N][10],char name[N][10],char tel[N][10],int n);void mymodify(char num[N][10],char name[N][10],char tel[N][10],int n);void myadd(char num[N][10],char name[N][10],char tel[N][10],int *n);void mydelete(char num[N][10],char name[N][10],char tel[N][10],int *n);void del_num(char num[N][10],char name[N][10],char tel[N][10],int *n);void del_name(char num[N][10],char name[N][10],char tel[N][10],int *n);void main(){char choose,yes_no,num[N][10],name[N][10],tel[N][10];int n=0;do{//system(“CLS”); //清屏myprint();printf(" ");choose=getchar();switch(choose){case '1':mycreate(num,name,tel,&n);break;case '2':if(n==0){ printf("无记录\n");break;}mydisplay(num,name,tel,n);break;case '3':if(n==0){ printf("无记录\n");break;}mysearch(num,name,tel,n);break;case '4':if(n==0){ printf("无记录\n");break;}mymodify(num,name,tel,n);break;case '5':if(n==0){ printf("无记录\n");break;}myadd(num,name,tel,&n);break;case '6':if(n==0){ printf("无记录\n");break;}mydelete(num,name,tel,&n);break;case '0':break;default:printf(" %c为非法选项!\n",choose);}if(choose=='0') break;printf(" 要继续吗(Y/N)\n");do{yes_no=getchar();}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');getchar();}while(yes_no=='Y'||yes_no=='y');}void myprint(){printf("\n\n\n\n\n");printf(" 1 创建\n");printf(" 2 显示\n");printf(" 3 查询\n");printf(" 4 修改\n");printf(" 5 添加\n");printf(" 6 删除\n");printf(" 0 退出\n");}void mycreate(char num[N][10],char name[N][10],char tel[N][10],int *n) {int i=0;char tempnum[10],tempname[10],temptel[10];printf("\n 请输入第1个记录(全部输入#表示结束):");printf(" 学号:");do{gets(tempnum);}while(strcmp(tempnum,"")==0);printf(" 姓名:");gets(tempname);printf(" 电话:");gets(temptel);while(tempnum[0]!='#'&&tempname[0]!='#'&&temptel[0]!='#'){strcpy(num[i],tempnum);strcpy(name[i],tempname);strcpy(tel[i],temptel);i++;printf("\n 请输入第%d个记录:\n",i+1);do{gets(tempnum);}while(strcmp(tempnum,"")==0);printf(" 姓名:");gets(tempname);printf(" 电话:");gets(temptel);}(*n)=i;}void mydisplay(char num[N][10],char name[N][10],char tel[N][10],int n) {int i;//system(“CLS”); //清屏printf(" 学号姓名电话\n");for(i=0;i<n;i++) printf("%12s%15s%15s\n",num[i],name[i],tel[i]); }void mysearch(char num[N][10],char name[N][10],char tel[N][10],int n) {char c;//system(“CLS”);printf(" 按学号查(h)还是按姓名查(m)?\n");getchar();c=getchar();if(c=='h'||c=='H') sch_num(num,name,tel,n);else if(c=='m'||c=='M') sch_name(num,name,tel,n);else printf("\n 非法字符!\n");}void sch_num(char num[N][10],char name[N][10],char tel[N][10],int n) {int i,flag=0;char tempnum[10];getchar();printf("\n 请输入要查询的学号:");gets(tempnum);for(i=0;i<n;i++)if(strcmp(tempnum,num[i])==0){if(flag==0)printf(" 学号姓名电话\n");printf("%12s%15s%15s\n",num[i],name[i],tel[i]);flag=1;}if(flag==0) printf(" 无此人!\n");}void sch_name(char num[N][10],char name[N][10],char tel[N][10],int n){int i,flag=0;char tempname[10];getchar();printf("\n 请输入要查询的姓名:");gets(tempname);for(i=0;i<n;i++)if(strcmp(tempname,name[i])==0){if(flag==0)printf(" 学号姓名电话\n");printf("%12s%15s%15s\n",num[i],name[i],tel[i]);flag=1;}if(flag==0) printf(" 无此人!\n");}void mymodify(char num[N][10],char name[N][10],char tel[N][10],int n){int i,find;char c,tempnum[10],tempname[10],temptel[10];getchar();//system(“CLS”);printf("\n 请输入要修改记录的学号:");gets(tempnum);for(i=0;i<n;i++)if(strcmp(tempnum,num[i])==0) {find=i;break;} //find记住修改记录的位置if(i==n) printf(" 无此人!\n");else{do{printf(" 请输入正确的学号:");do{gets(tempnum);}while(strcmp(tempnum,"")==0);printf(" 请输入正确的姓名:");gets(tempname);printf(" 请输入正确的电话号码:");gets(temptel);for(i=0;i<n;i++)if((strcmp(tempnum,num[i])==0)&&(i!=find)){printf(" 学号重复,要重新输入吗(Y/N)?");do{c=getchar();}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');putchar('\n');break;}if(i==n){strcpy(num[find],tempnum);strcpy(name[find],tempname);strcpy(tel[find],temptel);break;}}while(c=='y'||c=='Y');}}void myadd(char num[N][10],char name[N][10],char tel[N][10],int *n) {int i;char c,tempnum[10],tempname[10],temptel[10];do{printf("\n 请输入新记录的学号:");do{gets(tempnum);}while(strcmp(tempnum,"")==0);printf(" 请输入新记录的姓名:");gets(tempname);printf(" 请输入新记录的电话:");gets(temptel);for(i=0;i<(*n);i++)if(strcmp(tempnum,num[i])==0){printf(" 学号重复,要重新输入吗?(Y/N)?");do{c=getchar();}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');putchar('\n');break;}if(i==(*n)){strcpy(num[i],tempnum);strcpy(name[i],tempname);strcpy(tel[i],temptel);(*n)++; //添加记录后记录总数加1break;}}while(c=='y'||c=='Y');}void mydelete(char num[N][10],char name[N][10],char tel[N][10],int *n) {char c;getchar();printf("\n 按学号删除(h),还是按姓名删除(m)?");c=getchar();if(c=='h'||c=='H') del_num(num,name,tel,n);else if(c=='m'||c=='M') del_name(num,name,tel,n);else printf("\n 非法字符!\n");}void del_num(char num[N][10],char name[N][10],char tel[N][10],int *n) {int i,k;char tempnum[10];getchar();printf("\n 请输入要删除记录的学号:");gets(tempnum);for(k=0;k<(*n);k++)if(strcmp(tempnum,num[k])==0) break;if(k<(*n)){for(i=k;i<(*n)-1;i++){strcpy(num[i],num[i+1]);strcpy(name[i],name[i+1]);strcpy(tel[i],tel[i+1]);}(*n)--; //删除后总数减1}else printf(" 无此人!\n");}void del_name(char num[N][10],char name[N][10],char tel[N][10],int *n) {int i,k;char tempname[10];getchar();printf("\n 请输入要删除记录的姓名:");gets(tempname);for(k=0;k<(*n);k++)if(strcmp(tempname,name[k])==0) break;if(k<(*n)){for(i=k;i<(*n)-1;i++){strcpy(num[i],num[i+1]);strcpy(name[i],name[i+1]);strcpy(tel[i],tel[i+1]);}(*n)--; //删除后总数减1}else printf(" 无此人!\n");}。

c语言课程设计通讯录

c语言课程设计通讯录

c语言课程设计通讯录一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程技巧,通过编写程序实现简单的通讯录管理系统。

知识目标包括:了解C语言的基本数据类型、运算符、控制结构、函数等基本概念;掌握结构体和指针的使用方法;理解面向对象编程的基本思想。

技能目标包括:能够使用C语言编写简单的程序;能够使用结构体和指针实现数据的有效管理;能够运用面向对象编程思想解决实际问题。

情感态度价值观目标包括:培养学生的编程兴趣和自信心;培养学生的问题解决能力和创新精神;培养学生团队合作和自主学习的意识。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、面向对象编程等内容。

具体安排如下:1.C语言基本语法:介绍C语言的基本数据类型、运算符、控制结构等,通过编写简单的程序让学生熟悉C语言的编程环境。

2.数据结构:讲解结构体的使用方法,引导学生掌握如何使用结构体来表示通讯录中的信息。

3.函数:介绍函数的定义和调用方法,让学生学会如何编写和使用函数来实现特定的功能。

4.面向对象编程:讲解面向对象编程的基本思想,引导学生掌握如何使用类和对象来实现通讯录管理系统。

三、教学方法本课程采用讲授法、讨论法、案例分析法、实验法等多种教学方法。

通过讲授法,为学生提供系统的知识框架;通过讨论法,激发学生的思考和讨论,培养学生的问题解决能力;通过案例分析法,让学生了解实际应用中的问题解决方法;通过实验法,培养学生的动手能力和创新精神。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料、实验设备等。

教材选用《C程序设计语言》作为主教材,参考书选用《C Primer Plus》等;多媒体资料包括教学PPT、视频等;实验设备包括计算机、网络等。

教学资源的选择和准备旨在支持教学内容和教学方法的实施,丰富学生的学习体验。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。

平时表现主要评估学生的课堂参与度、提问回答、团队协作等情况,通过观察和记录来评价学生的学习态度和积极性。

通讯录的制作c语言

通讯录的制作c语言

通讯录的制作c语言一、前言通讯录是一个常见的管理工具,它可以帮助我们更好地组织和管理联系人信息。

在日常生活中,我们经常需要制作通讯录来保存联系人信息。

本文将介绍如何使用C语言来制作一个简单的通讯录程序。

二、需求分析在开始编写程序之前,我们需要先确定程序的需求。

通讯录程序需要具备以下功能:1. 添加联系人:输入联系人信息并保存到文件中。

2. 显示所有联系人:从文件中读取所有联系人信息并显示。

3. 查找联系人:根据姓名查找并显示相应的联系人信息。

4. 修改联系人:根据姓名修改相应的联系人信息。

5. 删除联系人:根据姓名删除相应的联系人信息。

三、程序设计1. 文件结构设计为了实现通讯录数据的持久化存储,我们可以将所有联系人信息保存在一个文件中。

文件结构可以设计为以下格式:struct Contact {char name[20]; // 姓名char phone[20]; // 电话号码char email[30]; // 邮箱地址};2. 界面设计为了方便用户操作,我们可以设计一个简单的命令行界面,通过输入数字选择相应功能。

界面可以设计为以下格式:*********************** 通讯录管理系统 ** 1. 添加联系人 ** 2. 显示所有联系人 ** 3. 查找联系人 ** 4. 修改联系人 ** 5. 删除联系人 ** 0. 退出系统 ***********************请选择功能:3. 功能实现根据需求分析,我们需要实现以下功能:1. 添加联系人添加联系人需要输入姓名、电话号码和邮箱地址,并将数据保存到文件中。

可以使用以下代码实现:void addContact() {struct Contact contact;printf("请输入姓名:");scanf("%s", );printf("请输入电话号码:");scanf("%s", contact.phone);printf("请输入邮箱地址:");scanf("%s", contact.email);FILE *fp = fopen("contacts.dat", "ab");fwrite(&contact, sizeof(struct Contact), 1, fp);fclose(fp);printf("添加成功!\n");}2. 显示所有联系人显示所有联系人需要从文件中读取数据并输出到屏幕上。

通讯录C语言程序

通讯录C语言程序

#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define MAX_WORD_LENGTH 20#define MAX_WORD_COUNT 20intcpstring( char* desstr, char* str1, char* str2 ){if ( str1 >= str2 ){return -1;}while ( str1 != str2 ){*desstr = *str1;str1++;desstr++;}*desstr = '\0';return 0;}intstrcompare( char* str1, char* str2 ){while ( str1!='\0' && str2!='\0' &&isalpha(*str1) &&isalpha(*str2) && *str1==*str2 ) {str1++;str2++;}if ( (str1=='\0' && str2=='\0')||!isalpha(*str1)||!isalpha(*str2) ){return 0;}else{return -1;}}char* get1stword( char* string ){char* pend = string;while ( isalpha(*pend) ){pend++;}return pend;}char* getwordfrommainstr( char* mainstr, char* substr ){char* pm = mainstr;char* ps = substr;char* pend = 0;if ( *pm == '\0' ){return NULL;}while ( 1 ){if ( strcompare( pm, ps ) == 0 ){return pm;}else{pend = get1stword( pm );if ( *pend == '\0' ){return NULL;}pm = ++pend;}}}intischecked( char** checkedword, char* str ){intwordcount;char* p;for ( wordcount=0; wordcount<MAX_WORD_COUNT; wordcount++ ){if ( *(checkedword+wordcount*MAX_WORD_LENGTH)=='\0' ){return -1;}p = getwordfrommainstr(checkedword+wordcount*MAX_WORD_LENGTH, str );if ( p != NULL ){if ( strcompare( p, str ) == 0 ){return 0;}}}if ( p == NULL ){return -1;}}intsavetochecked( char** checkedword, char* str ){intwordcount;for(wordcount=0;wordcount<MAX_WORD_COUNT&&*(checkedword+wordcount*MAX_WORD_ LENGTH)!='\0'; wordcount++ ){}intwordlength;char* p1 = str;char* p2 = checkedword+wordcount*MAX_WORD_LENGTH;for ( wordlength=0; wordlength<MAX_WORD_LENGTH && (*p1)!='\0'; wordlength++,p1++,p2++ ) {*p2 = *p1;}*p2 = '\0';return 0;}intshowcheckedword( char** checkedword ){intwordcount = 0;printf( "-----\n" );while ( wordcount< MAX_WORD_COUNT*MAX_WORD_LENGTH ){wordcount++;}printf( "-----\n" );return 0;}int main(){char s1[]="this is a test, test";char s2[]="it is a great test";charcheckedword[MAX_WORD_COUNT][MAX_WORD_LENGTH];memset(checkedword, '\0', MAX_WORD_COUNT*MAX_WORD_LENGTH );char* p1 = s1;char word[MAX_WORD_LENGTH];while ( *p1 != '\0' ){memset( word, '\0', MAX_WORD_LENGTH );char* pend;pend = get1stword( p1 );cpstring( word, p1, pend );if ( 0 == ischecked( checkedword, word ) ){p1 = ++pend;continue;}char* p = getwordfrommainstr( s2, word );if ( p == NULL ){printf( "=======没有找到========\n%s\n", word );}else{printf( "=======已经找到========\n%s\n", word );}p1 = ++pend;}return 0;}。

C语言——通讯录

C语言——通讯录

宁波大红鹰学院信息工程学院课程设计报告项目名称:通讯录管理系统的设计项目组长:董怡玲项目成员:陈青董乐乐班级名称:信管4班专业名称:信息管理与信息系统完成时间:2011年3月25日信息工程学院制一.案例描述1.总体描述通讯录在当代生活中是必不可少的,能做到信息的有效管理,收集,而且十分安全,把风险降到最低,方便轻易的查找到所需要的信息。

所以我们设计这个电子通讯录,方便添加同学的信息。

给我们的生活带来方便。

本电子通讯录有四大功能为添加添加联系人,删除联系人,修改联系人,查询联系人。

真诚希望您能使用愉快。

2.模块描述1)菜单设计:登录系统后,在屏幕的中间显示“欢迎使用电子通讯录”并且显示该电子通讯录的各项功能,如,1.添加信息;2.删除信息;3.修改信息;4.查询信息;5.显示所有信息;0.退出等。

并且显示“请输入你的选择”供使用者选择。

2)添加模块:该模块主要运用于添加联系人,运行该模块时首行为“需添加多少联系人”,输入人数后再输入各个想要联系人的信息。

同时记录所添加的人数。

完毕后显示“是否需要继续添加”,如果需要则按1,继续操作,不需要则按2,并返回主菜单。

3)删除模块:该模块主要运用于删除联系人,运行该模块时首行为“请输入要查询的姓名”,在用户输入所需查询的姓名以后进行查询,如果查到就显示该联系人的信息,如果没有查到就显示“查无此人”,并返回主界面。

4)查询模块:该模块主要运用于删除联系人,运行该模块时首行为“请输入要查询的姓名”,用户可以根据学号或者姓名查询联系人。

如果选择学号,则按1系统根据折半法进行联系人查询,找到联系后输出联系人信息。

如果按照姓名查询,则按2,系统将根据内部姓名的数据来查询,找到联系人后输出联系人信息。

若没有查到联系人则输出“查无此人”。

5)显示模块:该模块主要运用于显示所有联系人的所有信息。

6)修改模块:该模块主要运用于修改联系人,运行该模块时首行为“请输入要查询的姓名”,在用户输入所需修改的姓名以后,进行查询,找到联系后显示联系人信息,并询问是否需要修改,若不需要按2并返回主界面。

c语言通讯录--功能强大

c语言通讯录--功能强大

学生通讯录管理系统--C语言版复制即可:功能强大#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>#define NULL 0#define LEN sizeof(struct student)struct student{char num[20];char name[10];char age[5];char tel[20];char adress[50];char email[20];struct student *next;};int n;struct student *creat(void){ char string[]={"结束"};struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN);printf("请输入编号\n");scanf("%s",&p1->num);printf("请输入姓名:\n");scanf("%s",&p1->name);printf("请输入年龄\n");scanf("%s",&p1->age);printf("请输入电话号码\n");scanf("%s",&p1->tel);printf("请输入通讯地址\n");scanf("%s",&p1->adress);printf("请输入电子邮箱\n");scanf("%s",&p1->email);head=NULL;while(strcmp(p1->num,string)!=0){n=n+1;if(n==1) head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf("请输入编号\n");scanf("%s",&p1->num);printf("请输入姓名:\n");scanf("%s",&p1->name);printf("请输入年龄\n");scanf("%s",&p1->age);printf("请输入电话号码\n");scanf("%s",&p1->tel);printf("请输入通讯地址\n");scanf("%s",&p1->adress);printf("请输入电子邮箱\n");}p2->next=NULL;return head;}struct student *del( struct student *head, char num[20]){ struct student *p1,*p2;if(head==NULL){printf("\n list null!\n");return head;}p1=head;while(strcmp(p1->num,num)!=0&&p1->next!=NULL){ p2=p1;p1=p1->next; }if(strcmp(p1->num,num)==0){ if(p1==head) head=p1->next;else p2->next=p1->next;n=n-1; }else printf("%s not been found!\n",num);return (head);}struct student *insert(struct student *head,struct student *stud) { struct student *p0,*p1,*p2;p0=p1=p2=(struct student *)malloc(LEN);p1=head; p0=stud;if(head==NULL){head=p0;p0->next=NULL;}else{while((p0->num>p1->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num<=p1->num){if(head==p1) head=p0;else p2->next=p0;p0->next=p1; }else {p1->next=p0;p0->next=NULL;}}n=n+1; return(head);}struct student *namesearch(struct student *head) //查找从头函数查起函数参数为头指针{struct student *p; //定义同类型的指针char name[10];p=head;printf("请输入姓名\n");scanf("%s",name);while(p!=NULL&&strcmp(p->name,name)!=0)p=p->next;printf("编号姓名年龄电话号码通讯地址电子邮箱\n");printf("%s %s %s %s %s %s\n",p->num,p->name,p->age,p->tel,p->adress,p->email); return(head);}struct student *numsearch( struct student *head){struct student *p;char num[20];p=head;printf("请输入编号\n");scanf("%s",num);while(p!=NULL&&strcmp(p->num,num)!=0) p=p->next;printf("编号姓名年龄电话号码通讯地址电子邮箱\n");printf("%s %s %s %s %s %s\n",p->num,p->name,p->age,p->tel,p->adress,p->email); return(head);}struct student *messagechange( struct student *head){ struct student *p;p=(struct student *)malloc(LEN);char name[10];p=head;printf("请输入姓名\n");scanf("%s",name);while(p!=NULL&&strcmp(p->name,name)!=0)p=p->next;printf("请输入编号\n");scanf("%s",&p->num);printf("请输入姓名:\n");scanf("%s",&p->name);printf("请输入年龄\n");scanf("%s",&p->age);printf("请输入电话号码\n");scanf("%s",&p->tel);printf("请输入通讯地址\n");scanf("%s",&p->adress);printf("请输入电子邮箱\n");return head;}void print(struct student *head){struct student *p; p=head;if(head!=NULL){printf("编号姓名年龄电话通讯地址电子邮箱\n");do{printf("%s %s %s %s %s %s\n",p->num,p->name,p->age,p->tel,p->adress,p->email);p=p->next;} while(p!=NULL);}}void save(struct student *head){FILE *fp; int i,n=0; struct student *p;if((fp=fopen("stu_list.txt","wb"))==NULL){printf("\n\t\t打开文件失败!!!\n"); return;}p=head->next;if(p!=NULL){while (p!=NULL){p=p->next;n++;}fprintf(fp,"%d",n);fprintf(fp,"\r\n");p=head->next;for(i=0;i<n;i++){fprintf(fp,"\n\t\t%s,%s,%s,%s,%s,%s",p->num,p->name,p->age,p->tel,p->adress,p->email); fprintf(fp,"\t\t\r\n"); p=p->next; }}elseprintf("Please make sure the data is not NULL!!");fclose(fp);printf("\n\t\t存盘成功!!!\n");}void quit(void){exit(0);}void main(){struct student *head,*stud;int flage=1;for(;flage==1;){int ch;printf("\n\t\t通讯录系统:\n");printf("\t\t================================\n");printf("\t\t 输入记录-----------------0\n");printf("\t\t 显示所有记录-------------1\n");printf("\t\t 按编号查询记录-----------2\n");printf("\t\t 按姓名查询记录-----------3\n");printf("\t\t 添加信息-----------------4\n");printf("\t\t 修改记录-----------------5\n");printf("\t\t 删除记录-----------------6\n");printf("\t\t 存盘---------------------7\n");printf("\t\t 退出---------------------8\n");printf("\t\t================================\n");printf("\t\t请输入数字(0~8):"); scanf("%d",&ch); fflush(stdin);switch(ch){case 0:head=creat();printf("是否继续;1/0\n");scanf("%d",&flage);break;case 1:print(head); break;case 2:head=numsearch(head);printf("是否继续;1/0\n");scanf("%d",&flage);break;case 3:head=namesearch(head);break;case 4: stud=(struct student *) malloc(LEN); head=insert(head,stud); printf("请输入编号\n"); scanf("%s",&stud->num);printf("请输入姓名\n"); scanf("%s",&stud->name); printf("请输入年龄\n"); scanf("%s",&stud->age);printf("请输入电话号码\n");scanf("%s",&stud->tel); printf("请输入通讯地址\n"); scanf("%s",&stud->adress);printf("请输入电子邮箱\n"); scanf("%s",&stud->email);printf("是否继续;1/0\n");scanf("%d",&flage); break;case 5: head=messagechange(head);printf("是否继续;1/0\n");scanf("%d",&flage);break;case 6:char num[20];printf("请输入编号\n");scanf("%s",num);head=del(head,num);printf("是否继续;1/0\n");scanf("%d",&flage);break;case 7:save(head);break;case 8: quit();break;default:printf("\n\t\t警告!输入错误,请输入数字0-8!");}}}。

C语言编程 通讯录

C语言编程 通讯录

#include<string.h> /*字符函数和字符串函数*/#include<conio.h> /*字符模式函数(调用getch()函数)*/#include<stdio.h> /*输入输出函数*/int i;struct friend /*电子通讯录结构定义*/{char num[5]; /*编号*/char name[11]; /*名字*/char sex[2]; /*性别*/char phone[12]; /*电话*/char address[26]; /*地址*/char post_num[11]; /*邮编*/}friends[50];FILE *fp;void Data_load() /*数据载入函数*/{ int j;fp=fopen("friend.txt","r+"); /*打开文件friend.txt*/if(fp==NULL) /*判断是否存在friend.txt,如果不存在则创建*/ { fp=fopen("friend.txt","w");i=0;}else{ for(i=0;i<50;i++){ j=fgetc(fp);if(j==EOF) /*判断是否到了文件尾*/return;fseek(fp,i*sizeof(struct friend),0);fread(&friends[i],sizeof(struct friend),1,fp); /*从文件中读取一条记录*/}}}void 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 Data_check(int k,char ID[5]) /*检查通讯录中是否存在相同ID或ID输入格式错误*/{int j;if(ID[0]=='0')k=1;for(j=0;ID[j]!='\0';j++){if(ID[j]>'9'||ID[j]<'0')k++;}for(j=0;j<i+1;j++){if(strcmp(ID,friends[j].num)==0)k++;}return k;}void Data_Input() /*数据输入函数*/ {char yes_no='1';char ID[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",ID,friends[i].name,friends[i].sex,friends[i].phone,friends[i].address,frie nds[i].post_num);Data_check(k,ID);while(Data_check(k,ID)>0) /*检查输入的ID是否已存在,如果存在重新输入*/{printf("The No. already exists Or The No. isn't correct, please re-enter\n");scanf("%s",ID);Data_check(k,ID);}strcpy(friends[i].num,ID);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[]) /*比较两个ID的大小*/{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;}void Data_Show() /*数据输出函数*/{ int j,k;char m;struct friend t;printf("********************************************************************\n");printf(" No. Name Sex Phone Address Zip_Code \n");printf("********************************************************************\n");for(j=0;j<i-1;j++) /*对数据进行排序*/{ for(k=0;k<i-1-j;k++){if(The_Size(friends[k].num,friends[k+1].num)==1){t=friends[k];friends[k]=friends[k+1];friends[k+1]=t;}}}for(j=0;j<i;j++) /*数据输出*/{printf("%4s %10s %4s %11s %20s %10s\n",friends[j].num,friends[j].name,friends[j].sex,friends[j ].phone,friends[j].address,friends[j].post_num);m=getch();if(m==' ')break;}printf("\n\n There are %d data in the book .\n\n",i);}void Data_Search() /*数据查找函数*/{char k;int j,a,b;char ID[5];char NAME[11];printf("Search by No. : 1\n");printf("Search by name : 2\n");k=getch();switch(k){case '1': /*按ID查找*/a=0;printf("\n\n Please enter the No.\n\n");scanf("%s",ID);for(j=0;j<i+1;j++){if(strcmp(ID,friends[j].num)==0){a++;printf(" No. Name Sex Phone Address Zip_Code \n");printf("%4s %10s %4s %11s %20s %10s\n",friends[j].num,friends[j].name,friends[j].sex,friends[j ].phone,friends[j].address,friends[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<i+1;j++){if(strcmp(NAME,friends[j].name)==0){b++;printf(" No. Name Sex Phone Address Zip_Code \n");printf("%4s %10s %4s %11s %20s %10s\n",friends[j].num,friends[j].name,friends[j].sex,friends[j ].phone,friends[j].address,friends[j].post_num);}}if(b==0)printf(" Do not have to find the Name!\n\n");break;default:printf("\n\n Error!\n");break;}}void Data_Insert() /*数据插入函数*/{ if(i>=50)printf("\n\n Storage full!\n\n");if(i<50){char ID[5];int k=0;printf("Please enter the No. that you want to insert.\n");scanf("%s",ID);Data_check(k,ID);printf("%d",Data_check(k,ID)); /*检查所需插入的ID是否已存在,如果存在重新输入*/while(Data_check(k,ID)>0){printf("The No. already exists Or The No. isn't correct, please re-enter\n");scanf("%s",ID);Data_check(k,ID);}strcpy(friends[i].num,ID); /*插入数据*/printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n"); scanf("%s%s%s%s%s",friends[i].name,friends[i].sex,friends[i].phone,friends[i].address,friends[i]. post_num);i++;}}void Data_Delete() /*数据删除函数*/{int k,t=0;char ID[5];printf("\n\n Please enter the No. need to be deleted\n\n");scanf("%s",ID);for(k=0;k<i;k++){if(strcmp(friends[k].num,ID)==0){t++;break;}}if(t==0)printf("\n\n The No. does not Exist!\n\n");if(t>0){for(;k<i;k++) /*删除位置前的元素顺序前移*/{friends[k]=friends[k+1];}printf("\n\n Delete success!\n\n");i=i-1;}}void Data_Alter() /*修改函数*/{int k,t=0;char ID[5];printf("\n\n Please enter the No. to be Amended\n\n");scanf("%s",ID);for(k=0;k<i;k++){if(strcmp(friends[k].num,ID)==0){t++;break;}}if(t==0)printf("\n\n The No. does not Exist!\n\n");if(t>0){strcpy(friends[k].num,ID);printf(" ****** Name(10) Sex(M/F) Phone(11) Address(30) Zip_Code(10)*******\n");scanf("%s%s%s%s%s",friends[k].name,friends[k].sex,friends[k].phone,friends[k].address,friends[ k].post_num);printf("\n\n Alter Success!\n\n");}}void Data_Save() /*数据保存函数*/{int j;fp=fopen("friend.txt","w");for(j=0;j<=i-1;j++){fwrite(&friends[j],sizeof(struct friend),1,fp);}printf("\n\n Save Success!\n\n");}void Exit() /*退出函数*/ {char flag;printf(" Save or Not? (Y/N)\n"); /*判断是否保存*/do{flag=getch();switch(flag){case 'Y': /*保存*/Data_Save();break;case 'y': /*保存*/Data_Save();break;case 'N':break;case 'n':break;}}while(flag!='Y'&&flag!='y'&&flag!='N'&&flag!='n');}void main(){ char choose,yes_no;Data_load();do{Menu_Select();choose=getch();switch(choose){case '1': Data_Input(); break; /*输入*/case '2': Data_Show(); break; /*显示*/case '3': Data_Search(); break; /*查找*/case '4': Data_Alter(); break; /*修改*/case '5': Data_Insert(); break; /*插入*/case '6': Data_Delete(); break; /*删除*/case '7': Data_Save(); 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');。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);
printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);
}
fclose(fp);
printf("\n**************************************\n");
personnode *person;
person=(personnode *)malloc(sizeof(personnode));
printf("\n请输入要删除的姓名:");
scanf("%s",namekey);
if((fp=fopen("通讯录.dat","r+"))==NULL){
FILE *fp; //定义文件型指针变量
/*以下创建通讯录,若通讯录不存在,刚提示创建,若存在则不创建*/
void creat(){
personnode *person;
person=(personnode *)malloc(sizeof(personnode));
if((fp=fopen("通讯录.dat","r"))==NULL){ //r 只读(打开)
person=(personnode *)malloc(sizeof(personnode));
printf("\n请输入要修改的姓名:");
scanf("%s",namekey);
if((fp=fopen("通讯录.dat","r+"))==NULL){ // r+ 读写
printf("\n不能打开通讯录!\n");
printf("\n请选择操作 (1 ~ 2) :");
scanf("%d",&h);
fp=fopen("通讯录.dat","r");
if(h==1){
printf("\n请输入你查找的号码!\n");
scanf("%s",telkey);
fclose(fp);
printf("\n添加成功!\n");
} //append()
/*以下为查找模块*/
void search(){
int k=0,h;
char namekey[8],telkey[16];
personnode *person;
person=(personnode *)malloc(sizeof(personnode));
} //while*/
if(!k)printf("对不起,没有此人记录!\n");
fclose(fp);
}
} //search()
/*以下为修改模块*/
void modify(){
int k=0;
long offset;
char namekey[8];
personnode *person;
printf("\t\t┃ ┃ ┃\n");
printf("\t\t┃ 5 -- 打印 ┃ 0 -- 退出 ┃\n");
printf("\t\t┗━━━━━━━━━━┻━━━━━━━━━━┛\n");
printf("\t\t┃ 欢迎使用Random的通讯录 ┃\n");
printf("\t\t┃ QQ:747187822 ┃\n");
printf("\t\t┣━━━━━━━━━━┳━━━━━━━━━━┫\n");
printf("\n\n*******************************************************************************\n\n");
printf("\t\t┏━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t\t┃ ∩__∩ Random 编写 ♂ ┃\n");
scanf("%s%s%s",person->name,person->tel,person->add);
fseek(fp,offset,SEEK_SET); //从该条记录的开始点进行写操作
fprintf(fp,"%-10s%-20s%-50s\n",person->name,person->tel,person->add);
printf("\n确定要删除吗? (Y/N) ");
scanf("%s",&m);
if(m=='y'||m=='Y'){
rewind(fp);
fseek(fp,sum*80L,1);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
k=1;break;
}
}
if(k){
printf("\n已查到,记录为:\n");
printf("%-10s%-20s%-50s\n",pห้องสมุดไป่ตู้rson->name,person->tel,person->add);
printf("\n请输入新姓名、电话号码及地址\n");
printf("\n不能打开通讯录!\n");
exit(0);
}
printf("\n请输入添加的姓名、电话号码及地址\n");
scanf("%s%s%s",person->name,person->tel,person->add);
fprintf(fp,"%-10s%-20s%-50s\n",person->name,person->tel,person->add);
exit(0);
}
while(!feof(fp)){
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);
if(!strcmp(namekey,person->name)){
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
typedef struct personnode {
char name[8];
char tel[16];
char add[30];
}personnode;
sum+=1;
if(!strcmp(namekey,person->name)){
k=1;break;
}
} //while()
if(k){
printf("\n已查到,记录为:\n");
printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);
if(!strcmp(namekey,person->name)){
printf("\n\n已查到,记录为:\n");
printf("%-10s%-20s%-50s\n",person->name,person->tel,person->add);
k=1;
} //if
printf("通讯录不存在!\n");
fp=fopen("通讯录.dat","w"); //w 只写(建立)
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","地址");
printf("\n建立通讯录成功!\n");
}
else
printf("\n不能打开通讯录!\n");
exit(0);
}
while(!feof(fp)){
offset1=ftell(fp); //文件位置指针当前值
fscanf(fp,"%s%s%s\n",person->name,person->tel,person->add);
} //output()
/*以下为添加模块*/
void append(){
personnode *person;
person=(personnode *)malloc(sizeof(personnode));
if((fp=fopen("通讯录.dat","a"))==NULL){ //a 追加
相关文档
最新文档