通讯录管理系统源代码(c语言)
使用C语言打造通讯录管理系统和教学安排系统的代码示例
使用C语言打造通讯录管理系统和教学安排系统的代码示例这篇文章主要介绍了使用C语言打造通讯录管理系统和教学安排系统的代码示例,利用C语言强大的数组和指针能够更加清晰地体现设计思路,需要的朋友可以参考下:通讯录管理系统实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。
完整的代码如下:#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针//#include <string.h>#include <stdlib.h> //标准库函数//#define NULL 0#define LEN sizeof(struct address_list) //计算字节//int n;struct address_list{char name[30]; //名字char work[30]; //职业char handset[30]; //手机char email[30]; //电子邮件char address[30]; //通讯地址struct address_list *next;};struct address_list *shifang(struct address_list *head); // 释放内存函数声明//创建函数,不带头结点的链表struct address_list *creat(void){struct address_list *head,*p1,*p2;char name[20];n=0;p1=(struct 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;elsep2->next=p1;p2=p1;printf("请输入姓名:");gets(name);if(strcmp(name,"0")==0){break;}else{p1=(struct address_list *)malloc(LEN);strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);}}p2->next=NULL;return head;}elsereturn 0;}//输出函数void print(struct address_list *head){struct address_list *p;if(head!=NULL){p=head;printf("本通讯录现在共有%d人:\n",n);printf("---姓名-------职业--------手机-------Email-------通讯地址\n");printf("==================================\n");doprintf("== %s",p->name); printf(" ");printf("%s",p->work); printf(" ");printf("%s",p->handset); printf(" ");printf("%s",p->email); printf(" ");printf("%s",p->address); printf(" \n");p=p->next;}while(p!=NULL);printf("==================================\n");}elseprintf("通讯录为空,无法输出!\n");}//增加函数struct address_list *insert(struct address_list *head){struct address_list *p0,*p1,*p2;char name[20];p1=head;printf("请输入增加的内容:\n");printf("请输入姓名:"); gets(name);if(strcmp(name,"0")==0){printf("姓名不能为0,增加失败!\n");return(head);}else{p0=(struct address_list *)malloc(LEN);strcpy(p0->name,name);printf("请输入职业:"); gets(p0->work);printf("请输入手机:"); gets(p0->handset);printf("请输入电子邮件:"); gets(p0->email);printf("请输入通讯地址:"); gets(p0->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{p2->next=p0;}p0->next=p1;}else{p1->next=p0;p0->next=NULL;}return head;}}}struct address_list* delete_txl(struct address_list *head){struct 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;}{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;}}}//显示函数struct address_list *display(struct address_list *head){struct 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",p1->name);printf(" ");printf("%s",p1->work);printf(" ");printf("%s",p1->handset);printf(" ");printf("%s",p1->email);printf(" ");printf("%s",p1->address); printf(" \n");printf("==================================\n");}p1=p1->next;}if(m==0){printf("此人未在本通讯录中!\n");}return(head);}//排序函数struct address_list *paixu(struct address_list *head){struct address_list *p1,*p2;int i,j;struct address_list1{char name[30];char work[30];char handset[30];char email[30];char address[30];};struct address_list1 px[200];struct address_list1 temp;if(head==NULL){printf("通讯录为空,无法排序!\n");return(head);}p1=head;for(i=0;i<n,p1!=NULL;i++){strcpy(px[i].name,p1->name);strcpy(px[i].work,p1->work);strcpy(px[i].handset,p1->handset);strcpy(px[i].email,p1->email);strcpy(px[i].address,p1->address);p2=p1;p1=p1->next;}head=shifang(head);for(j=0;j<n-1;j++){for(i=j+1;i<n;i++){if(strcmp(px[i].name,px[j].name)<0){temp=px[i];px[i]=px[j];px[j]=temp;}}}p1=(struct address_list *)malloc(LEN);p2=p1;strcpy(p1->name,px[0].name);strcpy(p1->work,px[0].work);strcpy(p1->handset,px[0].handset);strcpy(p1->email,px[0].email);strcpy(p1->address,px[0].address);head=p1;for(i=1;i<n;i++){p1=(struct address_list *)malloc(LEN);strcpy(p1->name,px[i].name);strcpy(p1->work,px[i].work);strcpy(p1->handset,px[i].handset);strcpy(p1->email,px[i].email);strcpy(p1->address,px[i].address);p2->next=p1;p2=p1;}p2->next=NULL;printf("按姓名排序后为:\n");print(head);return(head);}//姓名查找函数struct address_list *search(struct address_list *head){struct 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 %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);printf("+++++++++++++++++++++++++++++++++++\n");}p1=p1->next;if(m==0){printf("此人未在本通讯录中!\n");}break;}return(head);}//释放内存函数struct address_list *shifang(struct address_list *head){struct address_list *p1;while(head!=NULL){p1=head;head=head->next;free(p1);}return(head);}//文件写入函数void save(struct address_list *head){FILE *fp;struct address_list *p1;char tong[30];if(head==NULL){printf("通讯录为空,无法存储!\n");return;}printf("请输入保存后的文件名:");gets(tong);fp=fopen("(tong).txt","w");if(fp==NULL){printf("cannot open file\n");return;}p1=head;fprintf(fp,"姓名职业手机Email 通讯地址\n");for(;p1!=NULL;){fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);p1=p1->next;}printf("保存完毕!\n");fclose(fp);}//文件读出函数struct address_list *load(struct address_list *head){FILE *fp;char tong[30];struct address_list *p1,*p2;printf("请输入要输出的文件名:");gets(tong);fp=fopen("(tong).txt","r");if(fp==NULL){printf("此通讯录名不存在,无法输出!\n");return(head);}else{head=shifang(head);}p1=(struct 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=(struct 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);}//综合操作函数struct address_list *menu(struct 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(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;}//主函数void main(){struct 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=creat(); //创建print(head);}else{head=shifang(head);head=creat(); //重新创建print(head);}}break;case '2':{head=paixu(head); //排序}break;case '3':{head=menu(head); //综合操作}break;case '4':{save(head); //文件保存print(head);}break;case '5':{head=load(head); //文件输出}break;case '6':{head=delete_txl(head); //删除print(head);}break;case '7':head=shifang(head);break;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"7")==0)break;}}。
C语言 编写1个简单的通讯录管理系统
strcpy(p->age,per.age); strcpy(p->phone,per.phone);
head=p; p->next=q; q=head;
per.brithday=p->brithday; strcpy(per.sex,p->sex);
strcpy(per.age,p->age); strcpy(per.phone,p->phone);
if(fwrite(&per,sizeof(struct person),1,fp)!=1)
scanf("%s",fname);
head=load(fname);
while(1)
{ printf("\t\t 通讯录管理系统\n");
printf("\t\t=========================\n");
printf("\t\t 1. 插入一条记录\n");
printf("\n\t请输入出生年月:"); scanf("%ld",&temp->brithday);
printf("\n\t请输入性别:"); scanf("%s",temp->sex);
printf("\n\t请输入年龄:"); scanf("%d",temp->age);
}
else {printf("文件无法读取数据。"); exit(1);}
C语言-通讯录管理系统
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语言中相关知识,设计出通讯录管理系统。
要求如下所述:◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;;◆能够提供添加、删除和修改通讯录信息的功能;◆能够提供按姓名或电话等查询;◆将通讯录保存在文件中;◆能够按表格方式输出通讯录信息。
二、系统设计方案(一)总体框架图:通讯录管理系统:1、录入通讯录信息2、修改通讯录信息3、查询通讯录信息4、浏览通讯录信息5、增加通讯录信息6、推出系通讯录统(二)模块设计模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明模块二:录入通讯录信息声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt"模块三:通讯录信息的查找声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支模块四:通讯录信息的修改声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目模块五:通讯录信息按学号排序声明void sort()将录入通讯录信息系按升序排列,用的是“冒泡排序法”实现排序模块六:加通讯录信息声明void insert()插入通讯录信息,先通过判断通讯录是否存在,若否则继续输入,若是跳出,重新循环模块七:通讯录信息声明void del()实现通讯录信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。
模块八:示学生信息通过display()函数输出通讯录信息模块九;存信息通过fp=fopen("student.txt","w");写入信息模块十:界面菜单通过switch(num)调用,以上各函数,实现功能三、设计详情1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用【程序】图1. 主函数流程图void menu()/* 界面 */{ int num;printf(" \n\n 自动化0901通讯录管理系统 \n\n");printf(" ***************** \n\n");printf(" * 制作人:翁行兴 * \n \n");printf(" ***************** \n\n");printf("*********************系统功能菜单************************ \n");printf(" ---------------------- ---------------------- \n");printf(" * 1.刷新学生信息 * * 2.查询学生信息 * \n");printf(" * 3.修改学生信息 * * 4.增加学生信息 * \n");printf(" * 5.按学号删除信息 * * 6.显示当前信息 * \n");printf(" * 7.保存当前学生信息 * * 8.退出系统 * \n");printf(" ---------------------- ---------------------- \n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择\n");}}四、源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#define BUFLEN 100#define LEN 15#define N 100struct record /*结构体*/{char code[LEN+1]; /* 学号 */char name[LEN+1]; /* 姓名 */int age; /* 年龄 */char sex[3]; /* 性别 */char time[LEN+1]; /* 出生年月 */char add[30]; /* 家庭地址 */char tel[LEN+1]; /* 电话号码 */char mail[30]; /* 电子邮件地址 */ }stu[N];int k=1,n,m; /* 定义全局变量 */ void readfile();/* 函数声明 */void seek();void modify();void insert();void del();void display();void save();void menu();int main(){while(k)menu();system("pause");return 0;}void readfile()/* 建立信息 */{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL){printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8){i++; i=i;}fclose(fp);n=i;printf("录入完毕!\n");}void seek() /*查找*/{int i,item,flag;char s1[21]; /* 以姓名和学号最长长度+1为准 */printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){ case 1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学号姓名年龄性别出生年月地址电话 E-mail\n");printf("--------------------------------------------------------------------\n"); printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该学号不存在!\n"); break;case 2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf(" 学号姓名年龄性别出生年月地址电话 E-mail\n"); printf("--------------------------------------------------------------------\n");printf("%6s %7s %6d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该姓名不存在!\n"); break;case 3:return;default:printf("请在1-3之间选择\n");}}}void modify() /*修改信息*/{int i,item,num;char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准 */printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0) /*比较字符串是否相等*/num=i;printf("------------------\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改电话号码\n");printf("7.修改E-mail地址\n");printf("8.退出本菜单\n");printf("------------------\n"); while(1){printf("请选择子菜单编号:"); scanf("%d",&item);switch(item){case 1:printf("请输入新的姓名:\n"); scanf("%s",s2);strcpy(stu[num].name,s2); break; case 2:printf("请输入新的年龄:\n"); scanf("%d",&stu[num].age);break; case 3:printf("请输入新的性别:\n"); scanf("%s",sex1);strcpy(stu[num].sex,sex1); break; case 4:printf("请输入新的出生年月:\n"); scanf("%s",s2);strcpy(stu[num].time,s2); break; case 5:printf("请输入新的地址:\n"); scanf("%s",s2);strcpy(stu[num].add,s2); break; case 6:printf("请输入新的电话号码:\n"); scanf("%s",s2);strcpy(stu[num].tel,s2); break;case 7:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2); break;case 8:return;default:printf("请在1-8之间选择\n"); }}}void sort()/*按学号排序*/{int i,j,*p,*q,s;char temp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) {strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time);strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add);strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail);strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}void insert() /*插入函数*/{int i=n,j,flag;printf("请输入待增加的学生数:\n");scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第 %d 个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0){printf("已有该学号,请检查后重新录入!\n");flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第 %d 个学生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第 %d 个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第 %d 个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第 %d 个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time);printf("请输入第 %d 个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第 %d 个学生的电话:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第 %d 个学生的E-mail:\n",i+1);scanf("%s",stu[i].mail);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}void del(){int i,j,flag=0;char s1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}void display(){int i;printf("所有学生的信息为:\n");printf("学号姓名年龄性别出生年月地址电话 E-mail\n");printf("--------------------------------------------------------------------\n"); for(i=0;i<n;i++){printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}}void save(){int i;FILE *fp;fp=fopen("student.txt","w"); /*写入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}fclose(fp);}void menu()/* 界面 */{int num;printf(" \n\n 自动化0901学生信息管理系统 \n\n");printf(" ***************** \n\n");printf(" * 制作人:翁行兴 * \n \n");printf(" ***************** \n\n");printf("*********************系统功能菜单************************ \n"); printf(" ---------------------- ---------------------- \n");printf(" * 1.刷新学生信息 * * 2.查询学生信息 * \n");printf(" * 3.修改学生信息 * * 4.增加学生信息 * \n");printf(" * 5.按学号删除信息 * * 6.显示当前信息 * \n");printf(" * 7.保存当前学生信息 * * 8.退出系统 * \n");printf(" ---------------------- ---------------------- \n"); printf("请选择菜单编号:");scanf("%d",&num);switch(num){case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择\n");}}五.调试过程一.主界面二.测试数据当选择4——增加学生信息时,出现对话框,先输入增加的数量。
通讯录管理系统c语言课程设计代码
通讯录管理系统C语言课程设计代码
一、引言
在现代社会中,通讯方式多样化且频繁,通讯录管理系统应运而生。
本文将介
绍一个基于C语言设计的通讯录管理系统的代码实现。
通讯录管理系统可以帮助
用户有效地管理联系人信息,实现增删改查等操作。
二、系统功能设计
通讯录管理系统主要包括以下功能: 1. 添加联系人:用户可以输入联系人姓名、电话号码等信息,将联系人信息添加到通讯录中。
2. 删除联系人:用户可以根据
姓名或电话号码删除指定联系人信息。
3. 修改联系人:用户可以修改已有联系人
的信息,包括姓名、电话号码等。
4. 查询联系人:用户可以根据姓名或电话号码
查询联系人信息。
5. 显示所有联系人:用户可以查看通讯录中所有联系人的信息。
三、代码实现
```c #include <stdio.h> #include <string.h>
#define MAX_CONTACTS 100 #define MAX_NAME_LENGTH 50 #define
MAX_PHONE_LENGTH 15
struct Contact { char name[MAX_NAME_LENGTH]; char
phone[MAX_PHONE_LENGTH]; };
struct Contact contacts[MAX_CONTACTS]; int numContacts = 0;
void addContact() { if (numContacts < MAX_CONTACTS) { printf(。
学生通讯录管理系统c语言编程
学生通讯录管理系统C语言编程简介学生通讯录管理系统是一个帮助学生管理通讯录信息的应用程序。
通过该系统,学生可以添加、删除、查询和修改通讯录中的联系人信息,从而更好地组织和管理自己的通讯录信息。
功能需求1. 添加联系人学生可以通过输入联系人的姓名、电话号码、邮箱等信息,将联系人添加到通讯录中。
2. 删除联系人学生可以根据联系人的姓名或电话号码,从通讯录中删除指定的联系人信息。
3. 查询联系人学生可以通过姓名或电话号码查询通讯录中的联系人信息,并将查询结果显示出来。
4. 修改联系人学生可以修改通讯录中指定联系人的信息,如电话号码、邮箱等。
技术实现通讯录管理系统将使用C语言进行编程实现。
以下是系统的基本设计思路:1. 数据结构设计通讯录信息可以用结构体来表示,包含联系人的姓名、电话号码、邮箱等字段。
struct Contact {char name[50];char phone[20];char email[50];};2. 功能模块划分•添加联系人模块:用于添加新的联系人信息。
•删除联系人模块:用于删除指定联系人信息。
•查询联系人模块:用于根据姓名或电话号码查询联系人信息。
•修改联系人模块:用于修改指定联系人的信息。
3. 用户界面设计系统将使用控制台界面,通过菜单来实现各个功能模块的调用。
开发步骤1. 定义数据结构首先定义联系人结构体,包含姓名、电话号码、邮箱等字段。
2. 实现功能模块分别实现添加联系人、删除联系人、查询联系人、修改联系人等功能模块的具体代码。
3. 编写主程序编写主程序,通过调用功能模块来实现整体通讯录管理系统的运行。
总结学生通讯录管理系统C语言编程是一个实用的项目,通过这个项目,学生可以熟练掌握C语言编程的基本知识,并且实践项目开发的流程。
通过不断调试和完善,学生可以提升自己的编程能力和项目实现能力。
希望学生能够在这个项目中学到更多的知识,提升自己的编程技能。
个人通讯录管理系统C语言源程序(优秀新版)
#include <stdio.h> /*头文件*/#include <stdlib.h> //包含最常用的系统函数#include <string.h> //关于字符数组的函数定义的头文件#include <conio.h> //控制台输入输出//定义结构体struct tongxunlu /*定义通讯录结构体变量*/{char xingming[20]。
/*定义输入名字的数组*/char dianhua[20]。
/*定义输入电话号码的数组*/char dizhi[40]。
/*定义输入地址的数组*/} txl[100]。
//默认100个数据int n=0。
//记录数据联系人数量FILE *fp。
/*定义文件*///程序用到的所有函数void zhucaidan()。
/*主菜单函数*/void zengjia()。
/*增加联系人函数*/void readfile()。
/*文件中读入函数*/void writefile()。
/*文件中写入函数*/void xiugai()。
/*修改联系人函数*/void xiugai_xingming()。
/*姓名修改*/void xiugai_dianhua()。
/*电话号码修改*/void chazhao()。
/*查找联系人函数*/void chazhao_xingming()。
/*按姓名查找*/void chazhao_dianhua()。
/*按号码查找*/void shanchu()。
/*删除联系人函数*/void shanchu_quanbu()。
/*全部删除*/void shanchu_dange()。
/*单个删除*/void xianshi()。
/*号码显示*///程序主函数模块六void main() /*主函数main*/{ readfile()。
/*读入文件*/while(1) /* 循环(永远进行)*/{zhucaidan()。
通讯录管理系统C语言代码
scanf("\t%s",per[i].name);
printf("\t电话号码:");
scanf("\t%s",per[i].num);
printf("\t通讯住址:");
scanf("\t%s",per[i].adds);
printf("\t邮政编码:");
{
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");
printf("\t\t * 0. 退出程序 *\n");
printf("\t\t ****************\n");
printf("\t\t请您选择(0-6):");
c=getchar();
}while(c<'0'||c>'6');
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t此人学号: %d\n",per[i].score);
printf("\t此人姓名: %s\n",per[i].name);
C语言实现通讯录的详细代码
C语⾔实现通讯录的详细代码⽬录(⼀)实现思路1.通讯录功能2.模块化实现各⽅⾯的功能3.代码实现(⼆)源代码A.test.cB.Contact.hC.Contact.c(⼀)实现思路1.通讯录功能添加好友,删除好友,查找好友,修改好友信息,对好友进⾏排序2.模块化实现各⽅⾯的功能a. test.c测试通讯录功能b. Contact.c实现通讯录功能c. Contact.h包含通讯录实现的头⽂件3.代码实现(⼆)源代码A.test.c#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <string.h>#include "contact.h"void menu(){printf("*******************************\n");printf("*** 1.Add 2.Del ***\n");printf("*** 3.Search 4.Modify ***\n");printf("*** 5.Show 6.Sort ***\n");printf("*** 7.Help 8.About0 ***\n");printf("*** 0.Exit ***\n");printf("*******************************\n");}int main(){int input = 0;//创建通讯录InitContact(&con);//使size的初始值,以及好友信息初始化为0; do{menu();printf("请选择:");scanf("%d", &input);switch (input){//添加好友信息case Add:AddContact(&con);break;//删除好友case Del:DelContact(&con);break;//查找好友信息case Search:SearchContact(&con);break;//修改好友信息case Modify:ModifyContact(&con);break;//显⽰好友信息case Show:ShowContact(&con);break;//好友排序case Sort:SortContact(&con);break;//退出case Exit:printf("退出通讯录!");break;//通讯录的使⽤以及帮助case Help:HelpContact();break;//关于通讯录case About:AboutContact();break;//选择错误default:printf("选择错误!");break;}} while (input);return 0;}B.Contact.h#define _CRT_SECURE_NO_WARNINGS 1#define Max 1000#define Max_name 20#define Max_sex 5#define Max_tele 12#define Max_addr 30enum OptionDel,Search,Modify,Show,Sort,Help,About};//创建⼀个结构体来存放通讯录中要存放的信息struct PeoInfo{char name[Max_name];int age;char sex[Max_sex];char tele[Max_tele];char addr[Max_addr];};//通讯录类型struct Contact{struct PeoInfo data[Max];//存放⼀个信息,包括好友姓名,年龄,性别,电话,地址 int size;//记录当前已经有的元素个数//存⼊⼀个好友,size加1,表⽰通讯录⼈数增加⼀个};//声明函数//1.对通讯录进⾏初始化void InitContact(struct Contact* ps);//增加好友信息void AddContact(struct Contact* ps);//删除好友void DelContact(struct Contact* ps);//查找指定姓名的好友void SearchContact(struct Contact* ps);//显⽰好友信息void ShowContact(const struct Contact* ps);//修改好友信息void ModifyContact( struct Contact* ps);//按名字⾸字母对通讯录的好友进⾏排序void SortContact( struct Contact* ps);//帮助使⽤通讯录void HelpContact();//关于通讯录void AboutContact();C.Contact.c#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"#include <stdio.h>#include <stdlib.h>#include <string.h>//初始化通讯录void InitContact(struct Contact* ps){memset(ps->data, 0, sizeof(ps->data));ps->size = 0;//设置通讯录最初只有0个元素}void HelpContact(){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");}//关于通讯录void AboutContact(){printf("通讯录⼀般指在⽇常⽣活中⽤笔记录,也在⼿机,电脑,电⼦字典等电⼦产品中拥有这个功能。
学生通讯录管理系统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。
通讯录源代码,直接可用
#include <stdio.h>#include <windows.h>#include <stdlib.h>#include <conio.h>#include <string.h>/********************结构体定义******************************/ struct Contact{char NAME[20];char Phone[12];char QQ[12];};struct Node{Contact person;Node *next;};Node *head=NULL;/**************************函数申明*************************/ void AddPerson(Contact); //添加联系人Contact *FindPerson(char *name); //查找联系人void DelPerson(char *name); //删除联系人void ShowAll(); //显示所有联系人void function_6(); //分类显示联系人void SaveData(); //保存联系人信息void LoadData(); //载入联系人信息void face(); //界面int CheckPhone(char *num); //检验手机号是否合法int JudgePhone(char *num); //判断电话号码的用户类型/**********************主函数部分****************************/ int main(){system("title 迷你通讯录BY 马恒");system("color f2");LoadData();int op;face();while(1){printf("请选择功能:");fflush(stdin);if(0==scanf("%d",&op)){printf("\n输入不合法,请重新输入!\n");continue;}switch(op){case 0:{printf("感谢您的使用,下次再见!\n");getchar();exit(0);}break;case 1:{Contact per;fflush(stdin);printf("姓名:");scanf("%s",);do{printf("联系电话:");scanf("%s",per.Phone);}while(!CheckPhone(per.Phone));printf("QQ:");scanf("%s",per.QQ);AddPerson(per);SaveData();printf("添加联系人成功!\n");}break;case 2:{char name[15];printf("输入查找姓名:");scanf("%s",name);Contact *per=FindPerson(name);if(NULL!=per){printf("%s %s %s",per->NAME,per->Phone,per->QQ);}else{printf("%s联系人不存在,查询失败!",name);}}break;case 3:{char name[15];printf("输入需要修改的联系人:\n");scanf("%s",name);Contact *per=FindPerson(name);if(NULL==per){printf("%s联系人不存在,修改失败!",name);}else{printf("新姓名:");scanf("%s",per->NAME);printf("\n新号码:");scanf("%s",per->Phone);printf("\n新QQ号:");scanf("%s",per->QQ);SaveData();printf("更新联系人成功!\n");}}break;case 4:{char name[20];printf("输入需要删除的联系人:");scanf("%s",name);Contact *per=FindPerson(name);if(per==NULL){printf("%s联系人不存在,删除失败!",name);}else{DelPerson(name);SaveData();printf("\n成功删除联系人!\n");}}break;case 5:{ShowAll();}break;case 6:{system("cls");for(int i=1;i<=80;i++){printf("@");}printf("\t\t\t\t1.显示全部移动用户\n");//2printf("\t\t\t\t2.显示全部联通用户\n");//1printf("\t\t\t\t3.显示全部电信用户\n");//3printf("\t\t\t\t0.返回主菜单\n");for(i=1;i<=80;i++){printf("@");}int m=1,op;while(m){Node *p=head;printf("请输入指令:");fflush(stdin);if(0==scanf("%d",&op)){printf("您输入的指令无效,重新输入:");continue;}switch(op){case 0:{system("cls");face();m=0;}break;case 1:{while(NULL!=p){if(2==JudgePhone(p->person.Phone)){printf("%s %s %s \n",p->,p->person.Phone,p->person.QQ);}p=p->next;}}break;case 2:{while(NULL!=p){if(1==JudgePhone(p->person.Phone)){printf("%s %s %s \n",p->,p->person.Phone,p->person.QQ);}p=p->next;}}break;case 3:{while(NULL!=p){if(3==JudgePhone(p->person.Phone)){printf("%s %s %s \n",p->,p->person.Phone,p->person.QQ);}p=p->next;}}break;default:{printf("输入不合法,重新输入:");}}}}break;default:{printf("您输入的内容不合法,请重新输入!\n");}}}return 0;}void AddPerson(Contact person) //添加联系人Node *pNewNode;pNewNode=(Node*)malloc(sizeof(Node));pNewNode->person=person;pNewNode->next=NULL;if(NULL==head){head=pNewNode;}else{Node *pNode=head;while(NULL!=pNode->next){pNode=pNode->next;}pNode->next=pNewNode;}}void ShowAll() //显示所有联系人{Node *pNode=head;int icnt=0;while(NULL!=pNode){printf("%s %s %s \n",pNode->,pNode->person.Phone,pNode->person.QQ);pNode=pNode->next;icnt++;}printf("一共有%d个联系人\n",icnt);}Contact *FindPerson(char *name) //查找联系人{Node *pNode=head;while(NULL!=pNode){if(strcmp(pNode->,name)==0){break;}elsepNode=pNode->next;}return pNode?(&(pNode->person)):NULL;}void DelPerson(char *name){if(strcmp(head->,name)==0){Node *pNewHead=head->next;free(head);head=pNewHead;return;}Node *p1=head;while(strcmp(p1->next->,name)!=0) {p1=p1->next;}Node *p2=p1->next->next;free(p1->next);p1->next=p2;}void LoadData(){FILE *fp=fopen("data","rb");if(NULL==fp){return;}Contact ct;while(fread(&ct,sizeof(Contact),1,fp)){AddPerson(ct);}fclose(fp);}void SaveData(){FILE *fp=fopen("data","wb"); //以二进制写入Node *pNode=head;while(NULL!=pNode){fwrite(&(pNode->person),sizeof(Contact),1,fp);pNode=pNode->next;}fclose(fp);}void face(){for(int i=1;i<=80;i++)printf("=");for(i=1;i<=30;i++)printf("=");printf("通讯录管理系统v1.0");for(i=0;i<=30;i++)printf("=");for(i=1;i<=80;i++)printf("=");printf("\t\t\t\t1.添加联系人\n");printf("\t\t\t\t2.查找联系人\n");printf("\t\t\t\t3.修改联系人\n");printf("\t\t\t\t4.删除联系人\n");printf("\t\t\t\t5.显示所有联系人\n");printf("\t\t\t\t6.分类显示联系人\n");printf("\t\t\t\t0.退出通讯录\n");for(i=1;i<=80;i++){printf("=");}for(i=1;i<=80;i++){printf("=");}}int CheckPhone(char *num){if(11!=strlen(num)){return 0;}int i;for(i=0;i<11;i++){if(num[i]<'0'||num[i]>'9'){return 0;}}return 1;}int JudgePhone(char *num) //判断电话号码的用户类型{if('1'!=num[0]){return 0;}if('1'==num[0]){if('3'==num[1]){switch(num[2]){case '0':case '1':case '2':return 1;break;case '3':return 3;break;case '4':case '5':case '6':case '7':case '8':case '9':return 2;break;default:return 0;}}else if('5'==num[1]){switch(num[2]){case '0':case '1':case '2':case '7':case '8':case '9':return 2;break;case '5':case '6':return 1;break;case '3':return 3;break;default:return 0;}}else if('8'==num[1]){switch(num[2]){case'5':case'6':return 1;break;case'0':case'1':case'2':case'7':case'8':case'9':return 2;break;case'3':return 3;break;default:return 0;break;}}else{return 0;}}return 0;}。
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语言源代码
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语言的通讯录管理系统的设计和实现。
一、需求分析通讯录管理系统需要满足以下功能需求: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源代码
课程设计报告学院、系:吉林大学珠海学院计算机科学与技术系专业名称:计算机科学与技术课程设计科目VC++程序课程设计学生姓名:***指导教师:**完成时间:2011年10月-18月题目通讯录管理系统一、设计任务与目标通讯录管理系统编写一个简单的通讯录管理程序。
通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。
基本要求程序应提供的基本基本管理功能有:1)添加:即增加一个人的记录到通信录中2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3)存储:即将通讯录信息保存在一个文件中。
4)装入:即将文件中的信息读入程序。
5)查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
6)修改:可修改一个人的除姓名外其它信息。
测试数据程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
二、方案设计与论证1、为存储通讯录信息,需定义一个结构体类型,成员包括编号、姓名、年龄、电话、通讯地址、电子邮箱等,并建立链表,定义该结构体类型的指针,用于指向各结点;2、分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。
这其中要用到对链表的删除、插入等知识。
删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的学号,若相等就删除,不相等则后移指针,直至表尾。
插入时也要先找到相应结点,再添加。
查询功能要设置姓名、编号、地址等多种方式。
3、为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。
4、为以表格的形式输出文件,宏定义格式化输出语句,用横线和竖线构成表格。
三、程序框图或流程图,程序清单与调用关系系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找和显示功能的子函数,各子函数中运用链表存储数据。
从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
大一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语言源程序优秀版
#include <stdio.h> /*头文件*/#mclude <stdlib.h> //包含最常用的系统函数#mclude <stiing.li> //关于字符数组的函数定义的头文件^include <como.h> 〃控制台输入输出〃定义结构体stmct tongxunlu /*定义通讯录结构体变量*/{chai xuigniHig[20]; /*定义输入名字的数组*/chai diaiiliua[20]; /*定义输入电话号码的数组*/ chai dizlii[40]; /*定义输入地址的数组*/ }txl[100];//默认100个数据mt n=0;//iti录数据联系人数量FILE *fp; /*定义文件*/〃程序用到的所有函数void zhucaidanQ; /*主菜单函数*/void zengjia(); /*增加联系人函数*/void ieadfile(); /*文件中读入函数*/ void writefileQ; /*文件中写入函数*/ void xiugaiQ; /*修改联系人函数*/void xiugai_xiiiginnig(); /* 姓名修改*/void xiugai_dianliuaO; /* 电话号码修改 */ void chazliao(); /*查找联系人函数*/void cliazhao_xuigniingQ; /*按姓名查找*/void chazhao_dianliua(); /*按号码查找*/ void shanchu(); /*删除联系人函数*/void shanchu_quanbu(); /*全部删除*/void shanchu_daiige(); /*单个删除*/ void xianslii(); /* 号码显示*/〃程序主函数模块六void main() { readfileQ;while(l)(/* + 函数mam*/ /*读入文件*//*循环(永远进行)*/zliucaidanQ;}/*调用主菜单函数*/}〃读取文件函数部分开始模块七void ieadfile(){if((俎=fopen("c:\\通讯录.txt”,T))==NULL) /*以只读方式打开判定文件是否为空*/ { prmtf("\ii\t\t\t 通讯录文件不存在”);/*判断结论*/if ((fp=fopen( ” 同通讯录.txf TWR—NULL) /* 只写方式判断 */prmtf(n \ii\t\t 建立失败 J; exit(O);}else/*不为空则执行else*/{prmtf(n \ii\t -----------------欢迎使用通讯录管理系统 ----------------n ); 通讯录文件已建立”); pimtf("\ii\t按任意键进入主菜单”);prmtf(n \ii\t --------------------------------------------------------- ”);getchQ; return;exit(O);}fseek (俎,0,2); /*文件位置指针移动到文件末尾*/ if(ftell(fp)>0)/* 文件不为空 */rewmd(fp); /*文件位置指针移动到文件开始位置*/ for (n=0:!feof(fp) && fiead(&txl[n],sizeof(struct tongxunlu), 1pnmf(”\n\t --------- 欢迎使用通讯录管理系统l.Obeat 版 -------------- ”); pimtf("\ii\t 文件导入成功 pimtf("\ii\t按任意键返回主菜单prmtf(n \ii\t --------------------------------------------------------- ”); getchQ;return;}〃读取文件函数结束 〃文件主菜单函数开始模块六void zhucaidan(){clw c; system(,,cls M );pnntf("\ii\t\t| ------- 欢迎您使用通讯录管理系统l.Obeat 版——|”); pnntfC\n\t\t|1-添加联系人2-查询和显示联系人|”);严为空结论勺严退出*/”); ”);}prmtf(n \ii\t ------……欢迎使用通讯录管理系统l.Obeat 版————”);文件导入成功通讯录文件中无任何纪录按任意键返回主菜单prmtf(n \ii\t ------ ---------------------------------------- ”);getchQ;”);”); ”);return;pnntf(-\n\t\t| 3 ■删除联系人 4 ■修改联系人门;pnntf(-\n\t\t| 5 ■保存退出0 ■不保存退出|”);pnntf(H\n\t\t| ----------------------------------------------- |M);请选择您所所要的服务:c=getch();switch (c) /*对于上边的选择项目*/{case ^^zengjiaQibreak;case 2:chazhao();bieak;case 31: shanchu();break;case '4】xiugai();b[eak;case r51:writefileQ;break;case r O\exit(O);default: zliucaidanQ; /*如果没有则返回主菜单等待输入*/}}〃文件主菜单函数结束〃添加新联系人函数开始模块一void zengjia(){pmitf(”\n\t\t ----------------- 请输入联系人信息---------------- \n");pnntf(H\ii\t\t输入联系人姓名:”);scanf("%s".txl[n].xingmuig); /* 键盘输入 */ pnntf(H\n\t\t输入联系人电话号码:”);scanf("%s".txl[ii].diaiiliua);pnntfC'\n\t\t输入联系人地址:”);scanf("%s'\txl[ii] .dizlu);n++; /*统计个数*/pnntf("\ii\t\t是否继续添加联系人?(Y/N):”); /*是否继续输入联系人.*/ if (getchO==y) zengjiaQ;retinn;}〃添加新联系人结束〃写入文件函数开始模块七void writefileQ /*联系人写入文件*/{int i;if ((如=fbpen("c:\\ 通讯录.txt","w"))=NULL){文件打开失败”);}for (i=O;i<n;i++)if (fwiite (&txl[i],sizeof(stiiict tongxunlu), 1 .fp) !=1)prmtf(n\n\t\t写入文件错误}}fclose(fp); /* 关闭文件*/pnntf("\n\t ------------------------------------------------------ ”); /* 输出提示信息 */pnntf(H\ii\t\t通讯录文件已保存“);pnntf(H\ii\t\t谢谢使用,欢迎再次使用pnntf("如果对本软件有疑问,请到我们官网(www.shj .com)提出您的问题,我们将为您解答An");pnntf(哦们的软件有不足之处,欢迎到官网()反映,我们将努力改正!”);pnntfCWt按任意键退出程序\n\t\f); /*输出完毕*/exit(O);pnntfC\n\t ------------------------------------------------------ ”);}〃写入文件函数结束/〃查询联系人函数开始模块四-------------------------------------------void chazliao(){char c;system(,,cls M);-------------- 显示和查询联系人--------------- pnntf(H\ii\t\t| 1-逐个显示所有2-按姓名查询pnntf("\ii\t\t| 3-按电话查询4-返回主菜单pnntf(H\n\t\t| ----------------------------------------------------- ”);putf(%\佗请选择您所所要的服务:c=getch();switch (c){ _case f r:xianshi();break; 产显示所有号码可case 2:chazhao_xmgming();break; /*调用按姓名查询函数*/case y:chazhao_dianhua();break; /*调用按号码查询函数*/case ^^zhucaidanOibreak; /*主菜单*/}}void xianslii()//显示所有联系人函数{int i;system(”cls”);〃清楚屏幕if(ii!=O){pimtf("\ll\t\t ---------- 欢迎您查询通讯录所有联系人信息----------- ”);for (i=0;i<n;i-H-) /* 依次序显示*7姓名:%s",txl[i].xingming);电话: %s M,txl[i].diaiiliua); priiitf(n\n\t\t 地址: %s H,txl[i].dizhi); prmtf(H\n\t\t M);if (i+l<n){prmtf(n\ii\t\t -----------------------”);system(” pause");//返回错误信息}}------------------------------------------- M);}else /*无联系人*/pnntf("\n\t\t通讯录中无任何纪录”);pnntf(”\n\t\t按任意键返回主菜单:");getchQ;return;}〃按号码查询函数void chazliao_dianliua(){int maik=0;int i;chaiphone[15];pnntf("\n\t\t ------------------ 按电话查找--------------------- ”);pnntf("\n\t\t请输入电话号码:”);scanf(”%s"、phone);fbr(i=O;i<n;i++){if (strcix)p(txl[i] .dianhua,phone)=0) 〃对比查找函数{ pimtfC'\n\t\t --------------- 以下是您查找的学生信息 ----------- ");姓名: %s”,txl[i].xingming);电话: %s M,txl[i].diaiiliua); priiitf(n\n\t\t 地址: %s H,txl[i].dizhi); prmtf(H\n\t\t --------------------------------------------------------------”);pimtf("\n\t\t按任意键返回主菜单:”);niark++;getchQ;return;}}if (mark==0)没有找到联系人的信息”);按任意键返回主菜单”);getchQ;return;}}void chazliao_xingniHig()//按姓名查询{int maik=0;int i;clw naine[20];pmitf(”\n\t\t -------------- 按姓名查找 ------------------ ”);pnntfC\n\t\t请输入您要查找的姓名:”);scanf(H%s n4iame);fbr(i=O;i<n;i++){if (strcmp(txl[i] .xmgnuiig,name)==O){ pimtfC'\ii\t\t --------------- 以下是您查找的联系人信息-------------- ”);姓名: %s”,txl[i].xingming); 电话: %s M,txl[i].diaiiliua);piiiitf(n\n\t\t 地址: %s r\txl[i].dizhi); -------------------------- H);niark++;getchQ; return;}}if (mark==0){prmtfC'\ii\t\t没有找到联系人的信息”);按任意键返回主菜单”);getchQ;return;}}////查询联系人函数结束 --------------------------------------////删除联系人函数部分开始 ---------------------------------void shanchu()char c;if(n==O) 严如果通讯录中没有一个记录输出以下部分引prmtf(n\ii\t\t对不起,文件中无任何纪录按任意键返回主菜单”);getchQ;return;}system(H cls M); 严清屏 */pnntf("\n\t\t ----------------- 删除菜单-------------------- ”);pnntf("\n\t\t| 1-删除所有2-删除单个pnntf(H\n\t\t| 3-返回主菜单|”);pnntf(H\n\t\t| ------------------------------------------------pnntfC\n\t\t请选择您所所要的服务:”);c=getch(); /*输入的赋予choice*/switch (c){case T:shaiichu_quanbu();bwak;case f2*:shanchu_dange();bieak;case 3*:zhucaidanQ;break;default:zliucaidan();break:}}void shanchu_quanbuQ//删除所有联系人{pnntf("\ii\t\t 确认删除?(y/n)”);if (getchO==y){fclose(fp);if ((fp=fopen(H通讯录.txf i,,,w H))=NULL) 严文件空输出 */{pnntfC\n\t\t不能打开文件,删除失败J;readfile();}n=0;纪录已删除,按任意键返回主菜单”);getchQ;return;}elsereturn;}void shaiichu_xmgming()〃按姓名删除联系人int i,m,mark=0,a=0:char naine[20];pgtf(”\n\t\t请输入要删除联系人姓名:”);scanf(H%s n4iame); /* 键盘输入姓名*7for (i=a;i<n;i++){if (strcmp(txl[i] ) == 0) //对比字符串查找到要删除的联系人{pnntf(“\n\t\t以下是您要删除的联系人纪录:”);”);姓名:%s",txl[i].xingming);电话:%s M,txl[i].diaiiliua);priiitf(n\n\t\t 地址: %s M,txl[i].dizhi);prmtf(n\ii\t\t -------------------------------- ”);是否删除?(y/n),r);if (getcli()=='y') // 实现删除功能{for (m=i;m<n-l ;m++)txl[m]=txl[m+1]; /*将通讯录的想前移*/mark++;pimtfC'Wt删除成功”);pimtf("\ii\t\t 是否继续删除?(y/n)”);if (getch()=y) shanchu_xuigniHig(); /*继续调用删除函数*/return;}elsereturn;}contmue;}if (mark==0){prmtf(n\ii\t\t没有该联系人的纪录J;pimtfC'Wt是否继续删除?(y/n)”);if (getchO—y1)shanchu_xmgniuigQ;return;}}void shanchu_diaiiliua()//按电话号码删除联系人{int ijn,mark=0: /*变量定义*/char phone[20];pmtf(%\t\t请输入要删除联系人电话号码:scanf(”%s",phone);if(n==0){prmtf(n\ii\t\t对不起,文件中无任何纪录J; pimtfC'Wt按任意键返回主菜单”);getchQ;return;}for (i=0;i<n;i++){if (strcmp(txl[i] .diaiiliua.phone)=0){以下是您要删除的联系人纪录:”); piiiitf(n\n\t\t 姓名:%s*\txl[i].xiiiginiiig);电话:%s,\txl[i].diaiiliua); 地址: %s,\txl[i].dizhi); prmtf(H\ii\t\t 是否删除?(v/n)H);if (getchO—y'){for (m=i;m<n-1 ;m++) //递推替换实现删除txl[m]=txl[m+l];n—;mark++; //记录删除次数prmtfC'Wt删除成功”);prmtfC'\ii\t\t 是否继续删除?(y/n)”); if (getch()='y')shanchu_dianliua();return;}elsereturn;}continue;}if (mark==0){pnntf(”\n\t\t没有该联系人的纪录”); pnntf(”\n\t\t 是否继续删除?(y/n)");if (getchO—y r)return;void shanchu_daiige()〃删除单个联系人{char c;pmirffS't ------------------------------------------------------------ H);pnntf("\n\t\t 1 -按姓名删除2-按电话删除”);pnntfC\n\t\t请选择您所所要的服务:”);pmirffS't ------------------------------------------------------------ H);c=getch(); switch (c){case 1 r:shanchu_xingniHig();break;case t2,:shanchu_diaiiliua();bieak;}}///删除函数部分结束 --------------------------------------------///修改联系人函数开始 ----------------------------------------void xiugaiQ /* 修改函数 */{char c;if(n=0){prmtf(n\ii\t\t对不起,文件中无任何纪录按任意键返回主菜单”);getchO;return;}system^cls”);pnntf("\n\t\t ---------------- 修改联系人菜单 ------------------- ”);pnntfC\n\t\t| 1-按姓名修改2-按电话修改pnntf(H\n\t\t| 任意键-按返回主菜单|");pnntfC'Wt -------------------------------------------------------- M);c=getch();switch(c){case T[xii】gai_xingmiiig() ;break;case '2】xiugai_duinhua();bTeak;default:zliucaidanQ;break:}}void xiugaLxmgnungOchar c; mt i,maik=0;clw name[20];请输入要修改的联系人姓名:”);scaiiH M%s n4iame);if(n==O){pimtfC'Wt文件中无任何联系人”);pimtfC'Wt按任意键返回主菜单”);getchQ; niaik++;return;}fbr(i=O;i<n;i++){if(strcmp(txl[i].xnigmmg4iame)==0){prmtfC'Wt以卞是您要修改的联系人信息”);printf(H\ii\t\t 姓名:%s,\txl[i].xmgnung);printf(H\n\t\t 电话:%s,\txl[i].dianliua);printf(H\n\t\t 地址:%s,\txl[i].dizhi);pnntf(H\n\t\t 是否修改(y/n)”);if(getch()==y){prmtf(^i\t ------------- 请选择修改信息------------ ”);1-修改姓名2-修改电话”);prmtf(H\ii\t 3 ■修改地址”);prmtf(H\ii\t ----------------------------------------- M);pimtfC'\ii\t请选择您所所要的服务:”);scjnf("%s 役&c);switch(c){case T: printf(H\n\t 请输入新姓名:”); scanf(n%s,\txl[i].xmgniuig);bieak;case21:printf(n\n\t 请输入新电话:%s"); scanf(n%s,\txl[i].diaiiliua);break;case3,:prmtf(n\ii\t请输入新地址小);scanf(n%s,\txl[i].dizlu);break;}}}}if(maik=O){pnntfC'Wt没有找到联系人信息”);pnntfC^Xt 是否继续修改?(Y/N):“);if(getchQ=='y')xiugai.xingnwigQ;retuin;void xiugai_dianliua(){clw c,phone[15];mt ijnaik=0;pimtf("\ll\t\t请输入要修改联系人的号码:”);scanf(”%s”, phone);if(n==0){文件中无任何联系人”);按任意键返回主菜单”);getchQ;mark++;return;}fbr(i=O;i<n;i-H-){if(strcmp(txl[i].dianiiua,phone)=0){prmtfC'Wt以卞是您要修改的联系人信息”);pnntf(H\n\t\t 姓名:%s,\txl[i].xmgnung);printf(H\n\t\t 电话:%s,\txl[i].dianliua); printf(H\ii\t\t 地址:%s,\txl[i].dizhi);prmtfC'Wt 是否修改(y/n)”);if(getch()==y){pnmf(%i\t ------------- 请选择修改信息 ------------ ”);pnntf(”\n\t 1-修改姓名2-修改电话”);prmtf(H\ii\t 3 ■修改地址”);prmtf(n\ii\t ----------------------------------------- M);pimtfC'\n\t请选择您所所要的服务:”);scanf(”%s 役&c);switch(c){case*r:请输入新姓名:”);scanfC%s»txl[i] ・xingming);bieak; case2:printf{”\n\t 请输入新电话:”);scanf(”%sjtxl[i] ・dianlnm);bTeak; cas&3【pnntfC\n\t请输入新地址小);scanf(”%s 役txl[i] ・dizlu);bTeak;}}}}if(maik=O){pnntfC'\ii\t没有该联系人信息”);pnntfC^Xt 是否继续修改?(Y/N):“); if(getchQ=='y') xiugai_diaiiliua();return;}}。
使用C语言打造通讯录管理系统和教学安排系统的代码示例
使用C语言打造通讯录管理系统和教学安排系统的代码示例这篇文章主要介绍了使用C语言打造通讯录管理系统和教学安排系统的代码示例,利用C语言强大的数组和指针能够更加清晰地体现设计思路,需要的朋友可以参考下:通讯录管理系统实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。
完整的代码如下:#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针//#include <string.h>#include <stdlib.h> //标准库函数//#define NULL 0#define LEN sizeof(struct address_list) //计算字节//int n;struct address_list{char name[30]; //名字char work[30]; //职业char handset[30]; //手机char email[30]; //电子邮件char address[30]; //通讯地址struct address_list *next;};struct address_list *shifang(struct address_list *head); // 释放内存函数声明//创建函数,不带头结点的链表struct address_list *creat(void){struct address_list *head,*p1,*p2;char name[20];n=0;p1=(struct 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;elsep2->next=p1;p2=p1;printf("请输入姓名:");gets(name);if(strcmp(name,"0")==0){break;}else{p1=(struct address_list *)malloc(LEN);strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);}}p2->next=NULL;return head;}elsereturn 0;}//输出函数void print(struct address_list *head){struct address_list *p;if(head!=NULL){p=head;printf("本通讯录现在共有%d人:\n",n);printf("---姓名-------职业--------手机-------Email-------通讯地址\n");printf("==================================\n");doprintf("== %s",p->name); printf(" ");printf("%s",p->work); printf(" ");printf("%s",p->handset); printf(" ");printf("%s",p->email); printf(" ");printf("%s",p->address); printf(" \n");p=p->next;}while(p!=NULL);printf("==================================\n");}elseprintf("通讯录为空,无法输出!\n");}//增加函数struct address_list *insert(struct address_list *head){struct address_list *p0,*p1,*p2;char name[20];p1=head;printf("请输入增加的内容:\n");printf("请输入姓名:"); gets(name);if(strcmp(name,"0")==0){printf("姓名不能为0,增加失败!\n");return(head);}else{p0=(struct address_list *)malloc(LEN);strcpy(p0->name,name);printf("请输入职业:"); gets(p0->work);printf("请输入手机:"); gets(p0->handset);printf("请输入电子邮件:"); gets(p0->email);printf("请输入通讯地址:"); gets(p0->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{p2->next=p0;}p0->next=p1;}else{p1->next=p0;p0->next=NULL;}return head;}}}struct address_list* delete_txl(struct address_list *head){struct 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;}{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;}}}//显示函数struct address_list *display(struct address_list *head){struct 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",p1->name);printf(" ");printf("%s",p1->work);printf(" ");printf("%s",p1->handset);printf(" ");printf("%s",p1->email);printf(" ");printf("%s",p1->address); printf(" \n");printf("==================================\n");}p1=p1->next;}if(m==0){printf("此人未在本通讯录中!\n");}return(head);}//排序函数struct address_list *paixu(struct address_list *head){struct address_list *p1,*p2;int i,j;struct address_list1{char name[30];char work[30];char handset[30];char email[30];char address[30];};struct address_list1 px[200];struct address_list1 temp;if(head==NULL){printf("通讯录为空,无法排序!\n");return(head);}p1=head;for(i=0;i<n,p1!=NULL;i++){strcpy(px[i].name,p1->name);strcpy(px[i].work,p1->work);strcpy(px[i].handset,p1->handset);strcpy(px[i].email,p1->email);strcpy(px[i].address,p1->address);p2=p1;p1=p1->next;}head=shifang(head);for(j=0;j<n-1;j++){for(i=j+1;i<n;i++){if(strcmp(px[i].name,px[j].name)<0){temp=px[i];px[i]=px[j];px[j]=temp;}}}p1=(struct address_list *)malloc(LEN);p2=p1;strcpy(p1->name,px[0].name);strcpy(p1->work,px[0].work);strcpy(p1->handset,px[0].handset);strcpy(p1->email,px[0].email);strcpy(p1->address,px[0].address);head=p1;for(i=1;i<n;i++){p1=(struct address_list *)malloc(LEN);strcpy(p1->name,px[i].name);strcpy(p1->work,px[i].work);strcpy(p1->handset,px[i].handset);strcpy(p1->email,px[i].email);strcpy(p1->address,px[i].address);p2->next=p1;p2=p1;}p2->next=NULL;printf("按姓名排序后为:\n");print(head);return(head);}//姓名查找函数struct address_list *search(struct address_list *head){struct 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 %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);printf("+++++++++++++++++++++++++++++++++++\n");}p1=p1->next;if(m==0){printf("此人未在本通讯录中!\n");}break;}return(head);}//释放内存函数struct address_list *shifang(struct address_list *head){struct address_list *p1;while(head!=NULL){p1=head;head=head->next;free(p1);}return(head);}//文件写入函数void save(struct address_list *head){FILE *fp;struct address_list *p1;char tong[30];if(head==NULL){printf("通讯录为空,无法存储!\n");return;}printf("请输入保存后的文件名:");gets(tong);fp=fopen("(tong).txt","w");if(fp==NULL){printf("cannot open file\n");return;}p1=head;fprintf(fp,"姓名职业手机Email 通讯地址\n");for(;p1!=NULL;){fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);p1=p1->next;}printf("保存完毕!\n");fclose(fp);}//文件读出函数struct address_list *load(struct address_list *head){FILE *fp;char tong[30];struct address_list *p1,*p2;printf("请输入要输出的文件名:");gets(tong);fp=fopen("(tong).txt","r");if(fp==NULL){printf("此通讯录名不存在,无法输出!\n");return(head);}else{head=shifang(head);}p1=(struct 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=(struct 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);}//综合操作函数struct address_list *menu(struct 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(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;}//主函数void main(){struct 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=creat(); //创建print(head);}else{head=shifang(head);head=creat(); //重新创建print(head);}}break;case '2':{head=paixu(head); //排序}break;case '3':{head=menu(head); //综合操作}break;case '4':{save(head); //文件保存print(head);}break;case '5':{head=load(head); //文件输出}break;case '6':{head=delete_txl(head); //删除print(head);}break;case '7':head=shifang(head);break;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"7")==0)break;}}。
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;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("请选择0-2:\n");
ch=getchar();
switch(ch)
{
case '1':system("cls");denglujm();
printf("\t\t 1.登录 \n");
printf("\t\t \n");
printf("\t\t 2.注册 \n");
printf("\n ‖ 版权所属: 陈志强 ‖");
printf("\n ╚———————————————————————————————╝");
printf("\n\n ");
printf("\t\t \n");
printf("\t\t 0.退出 \n");
printf("\t\t \n");
void Save(); //保存到文件
void Open(); //打开文件
void dljm(); //产品信息
void open(); //选择
void Savepwd(); //保存密码账号
void modifypasswd();
void denglujm()//登录界面
{
int i,k,j=0;struct passwd *p;
char username1[15],pwd[28],ch;system("color 0f");
printf("\n");
printf("\n");
printf("\n");
system("cls");
printf("\n\n\n ");
printf("\t\t _ / _,\\ /,_ \\ _,\n");
printf("\t\t| \\ \\( \\| |/ )/ / |\n");
{
int k,M=80000000,u,o;
char ch;
system("cls");
printf("\n\n 产品信息");
printf("\n ╔———————————————————————————————╗");
void print(); //输出信息
void Finditem1(); //查找信息( 按姓名 )
void Removeitem(); //删除信息
void modify(); //删除信息
printf("\n ‖ 产家地址: 华山23--104 ‖");
printf("\n ‖ ‖");
void xgmm(); //密码文件
void denglujm(); //登录界面
void login(); //注册密码账号
void menu() ; //菜单
printf("\n ‖ 执行坏境: VC++6.0 ‖");
printf("\n ‖ ‖");
printf("\t\t \n");
printf("\t\t=============================================\n");
printf("\t\t \n");
scanf("%s",username1);
printf("\n 请输入密码:");
k=0;ch='0';
while(ch!='\r')
{
ch=getch();
if(ch=='\r') break;
printf("*");
pwd[k]=ch;
k++;
}
pwd[k]='\0';
for(p=head1->next;p!=NULL;p=p->next)
{
if((strcmp(p->usename,username1)==0)&&(strcmp(p->password,pwd)==0))
printf("\n ‖ 生产公司: 10级计机1班 ‖");
printf("\n ‖ ‖");
denglujm();
}}
}
main()
{
menu();
}
void menu() //主函数
{
char ch;xgmm();system("color ec");
printf("\t\t 温馨提示:\n");
printf("\t\t 第一次使用请先注册 \n");
char telephone[20];
char QQ[20]; car email[30]; char tean[5];
struct Telephone *next;
};
typedef struct Telephone TEL;
struct passwd
{
char usename[18];
printf("\t\t\t\t ╭╭ ⌒╮ ●╭○╮ 守的雲開閒見日月. \n");
printf("\t\t\t\t ╰ ----╯/█\\∨█\\ 緣在天意. \n");
printf("\t\t\t\t ~~~~~~~~~~∏~~∏~~~~~~~~~~~.份在人爲 \n");
printf("\t\t| \\_ \\\\ // _/ |\n");
printf("\t\t(_ \\_) \\ / ( / _)\n");
printf("\t\t(\\_ ` \\ / ` _/)\n");
{
j=1;
dljm();
break;
}}
if(p==NULL&&j==0)
{
system("cls");
printf("\a");
printf("\n\t用户名密码错误!\n\t请重新输入账号密码!");
#include "time.h"
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
struct Telephone
{
char name[20];
char addrass[20];
char zip[20];
time1();
printf(" \n\n\n 请按任意键进入系统...");
ch=getch();
getchar();
if(ch)
{
system("cls");
printf("\n");
case '2':login();menu();
case '0':exit(0);
default:system("cls");printf("\n输入错误,请重新选择......\n\n");menu();
break;
}
}
void dljm()//个人资料界面
char password[18];
struct passwd *next;
};
struct passwd *head1=NULL;
TEL *head=NULL;
void showmenu(); //主菜单
void Appenditem(); //添加信息
printf("\t\t\t\t ====================================== \n");
printf("\n\n 管理员登陆");
printf("\n\n 请输入账号:");
printf("\n ‖ 软件名称: 通讯录管理系统 ‖");
printf("\n ‖ ‖");
void jssm(); //统计总数和各分组的人数
void time1(); //获取系统时间
void flcx(); //查找信息(按分组)
void czjm(); //查找菜单
for(i=0;i<3;i++)
{
printf("\n\t\t\t\t ====================================== \n\n");
printf("\t\t\t\t ╭⌒╮¤ 今後天氣多雲閒晴`` \n");