C++通讯录管理系统求大神指导,
  1. 创建文本文件,记录联系人的信息(需要创建两个文本文件,分别存储手机和手机卡上的存储的联系人的信息)。
  2. 以菜单方式工作(字符界面即可)
  3. 存储在手机上的联系人的信息包括:姓名和电话号码;存储在手机卡上的联系人的 信息包括姓名,籍贯,电话号码,QQ号等信息
  4. 管理系统的功能包括: a) 新建联系人:添加新的联系人(添加时确定是添加到手机上还是手机卡中) b) 删除:删除一个联系人(输入电话号码,删除该联系人。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行删除操作) c) 修改:修改某个联系人的信息(输入电话号码,查询到联系人之后进行信息的修改。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行删除操作) d) 查询:根据名字查询联系人信息(查询结果不唯一) e) 浏览:显示所有联系人的信息 f) 将联系人的信息从手机转存到手机卡上(同时要避免重复数据的存在。并且在转存是要检查容量是否受限。下同。) g) 将联系人的信息从手机卡上准存到手机上(同时要避免重复数据的存在)
    1. 要支持继承、多态、重载(运算符重载、函数重载)等面向对象的基本特点

3个回答

链接:https://pan.baidu.com/s/1htRyCXe 密码:62dg

wind628051
一颗香菜 能再发一遍吗
11 个月之前 回复

正好这里有个课程设计,还有源码。有帮助,请采纳!!!
https://pan.baidu.com/share/link?shareid=388813818&uk=4179626763&fid=132785363916536

qq_36774682
Zero11122 跟要求差别挺大 这个修改函数该怎么写
接近 3 年之前 回复

agenda

需求;类似吧

RALPHFJY
RLHaides 望采纳
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++通讯录管理系统求大神指导,

1. 创建文本文件,记录联系人的信息(需要创建两个文本文件,分别存储手机和手机卡上的存储的联系人的信息)。 2. 以菜单方式工作(字符界面即可) 3. 存储在手机上的联系人的信息包括:姓名和电话号码;存储在手机卡上的联系人的 信息包括姓名,籍贯,电话号码,QQ号等信息 4. 管理系统的功能包括: a) 新建联系人:添加新的联系人(添加时确定是添加到手机上还是手机卡中) b) 删除:删除一个联系人(输入电话号码,删除该联系人。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行删除操作) c) 修改:修改某个联系人的信息(输入电话号码,查询到联系人之后进行信息的修改。说明,如果两个存储位置上都存在该联系人的话,需要在两个存储位置上都要进行删除操作) d) 查询:根据名字查询联系人信息(查询结果不唯一) e) 浏览:显示所有联系人的信息 f) 将联系人的信息从手机转存到手机卡上(同时要避免重复数据的存在。并且在转存是要检查容量是否受限。下同。) g) 将联系人的信息从手机卡上准存到手机上(同时要避免重复数据的存在) 5. 要支持继承、多态、重载(运算符重载、函数重载)等面向对象的基本特点

通讯录管理系统: 通过电话号码查询通讯录,查不出东西。

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> struct stu //第一部分:声明结构体类型struct stu { char name[100];//姓名为字符串型 char cel[50];//手机 char tel[50];//电话 char mail[50];//邮件 char add[100];//地址为字符串型 char post[15];//邮编 char qq[50]; char gend[2]; struct stu *next;//用指针处理链表,next是指针变量,指向结构体变量 }; struct stu *charu(struct stu *head,struct stu *q)//第二部分:插入函数(插入新结点) { struct stu *p; for(p=head; p->next!=NULL; p=p->next); //for(使p也指向head;当p为空文件时 ;p指向下一个结点) p->next=q; q->next=NULL; return head; } void search(struct stu *head) //第三部分:查找结点并输出 { struct stu *p; int a;//要查找的电话 if(head->next==NULL)//头文件为空时打印出的结果为"通讯录为空" printf("**********************************通讯录为空!!!*********************************\n\n\n"); else//头文件不为空时,开始查询学生的信息 { printf("\t输入要查询的电话号码:"); scanf("%d",&a); for(p=head->next; p->next!=NULL; p=p->next) //for(使p也指向head;当p为空文件时 ;p指向下一个结点) { if(p->cel==a) //如果输入的电话号码和某个相同,输出以下的东西。 { printf(" 要查找的学生信息为:\n"); printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t手机号"); puts(p->cel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱"); puts(p->mail); printf("\t查找成功!!!"); printf("\n\n\n"); break; } } if(p->cel==a) { printf(" 要查找的学生信息为:\n"); printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t手机号"); puts(p->cel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱"); puts(p->mail); printf("\t查找成功!!!"); printf("\n\n\n"); } else printf("no people have found!!!\n");//如果不符合,就输出没有找到 } } struct stu *del(struct stu *head) //第四部分:删除结点 { struct stu *p,*q; int a;//要删除的电话号码 if(head->next==NULL)// 头文件为空时,输出通讯录为空 printf("**********************************通讯录为空!!!*********************************\n\n\n"); else { printf("\t输入要删除电话号码:"); scanf("%d",&a); for(p=head,q=p->next; q->cel!=a&&q->next!=NULL;) { p=p->next; q=p->next; } if(q->cel==a) { p->next=q->next; free(q);//释放q,也就是删除q,在这里就是删除q(学号为a) printf("删除成功!!!\n"); } else printf("no people have found!!!");//如果不符合,就输出没有找到 } return head;//返回头文件 } struct stu *change(struct stu *head) //第五部分:修改结点内容 { int b,a,c; struct stu *p; if(head->next==NULL)// 头文件为空时,输出通讯录为空 printf("**********************************通讯录为空!!!*********************************\n\n\n"); else { printf(" 输入要修改电话号码:"); scanf("%d",&a); for(p=head->next; p!=NULL; p=p->next) { start: printf(" 输入想要修改什么?\n"); printf("\t\t\t 1:修改姓名\n"); printf("\t\t\t 2:性别\n"); printf("\t\t\t 3:地址\n"); printf("\t\t\t 4:邮编\n"); printf("\t\t\t 5:手机号\n"); printf("\t\t\t 6:QQ\n"); printf("\t\t\t 7:邮箱\n"); printf(" 请输入你的选择:"); scanf("%d",&b); switch(b)//先通过学号找到该学生,然后用switch语句选择修改项,再用switch和goto语句实现是否循环 { case 1: printf("\t输入新姓名:"); scanf("%s",p->name); break; case 2: printf("\t输入新的性别:"); scanf("%s",p->gend); break; case 3: printf("\t输入新的地址:"); scanf("%s",p->add); break; case 4: printf("\t输入新的邮编;"); scanf("%s",p->post); break; case 5: printf("\t输入新的手机号:"); scanf("%s",p->cel); break; case 6: printf("\t输入新的QQ:"); scanf("%s",p->qq); break; case 7: printf("\t输入新的邮箱;"); scanf("%s",p->mail); break; default: printf("输入操作错误,请重新输入:"); } printf("修改成功!!!\n"); printf(" 是否要修改其他项? 1:是 2:否\n"); printf(" 请输入你的选择:"); scanf("%d",&c); switch(c) //goto语句实现是否循环 { case 1: goto start; case 2: break; } } } return head; //返回头文件 } void printall(struct stu *head) //第六部分:输出全部通讯录 { struct stu *p=head->next; while(1) { if(p==NULL) { printf("**********************************通讯录为空!!!*********************************\n\n\n"); break; } else if(p->next==NULL) { printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t电话:"); puts(p->tel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱:"); puts(p->mail); printf("输出成功!!!\n"); printf("\n\n\n"); break; } else { printf(" ★姓名:"); puts(p->name); printf("\t性别:"); puts(p->gend); printf("\t地址:"); puts(p->add); printf("\t邮编:"); puts(p->post); printf("\t电话:"); puts(p->tel); printf("\tQQ:"); puts(p->qq); printf("\t邮箱:"); puts(p->mail); printf("\n"); p=p->next; continue; } printf("输出成功!!!\n"); } } void sf(struct stu *head) //第八部分:释放结点退出系统 { struct stu *p=head ; printf("释放链表:\n"); while(p!=NULL) { head=head->next; free(p); p=head; } printf("释放链表成功!!!\n"); } int main()// 第九部分:主函数框架 { int cz;//操作符 struct stu *head,*q; head=(struct stu*)malloc(sizeof(struct stu));//动态链表malloc head->next=NULL;//使next指向下一个结点,next结点不放其他结点地址 system("color fc");//修改dos窗口前背景色,用两个十六进制数表示 printf("班级: 姓名: 学号: 设计课题:个人通讯录管理系统\n"); printf("\n********************************C语言课程设计***********************************\n"); printf(" *******************★个人通讯录管理系统★*****************\n\n\n"); printf(" * 1:新建通讯录 *\n"); printf(" * 2:删除通讯录 *\n"); printf(" * 3:修改通讯录 *\n"); printf(" * 4:查询通讯录 *\n"); printf(" * 5:显示全部记录 *\n"); printf(" * 6:释放链表并结束程序 *\n"); printf(" *********************************************************\n"); start : printf("输入操作符1-6:");//"输入操作符1- scanf("%d",&cz); switch(cz)//switch语句 { case 1: q=(struct stu *)malloc(sizeof(struct stu)); printf("\t输入姓名:"); scanf("%s",q->name); printf("\t输入性别:"); scanf("%s",q->gend); printf("\t地址:"); scanf("%s",&q->add); printf("\t输入邮编:"); scanf("%s",&q->post); printf("\t手机号:"); scanf("%s",q->cel); printf("\tQQ号:"); scanf("%s",q->qq); printf("\t输入电子邮件:"); scanf("%s",q->mail); charu(head,q); printf("插入成功!!!\n"); break; case 2://删除 head=del(head); break; case 3: change(head); break;//修改学生信息 case 4: search(head); break;//查找结点head case 5: printall(head); break; //保存文件 case 6: //释放结点退出系统 sf(head); exit (0); default: printf("输入操作错误,重新"); //什么也不符合就"输入操作错误,重新" } goto start;//用goto语句实现循环操作 return 0; }

c语言写通讯录,大神求指教~

![图片](https://img-ask.csdn.net/upload/201506/29/1435553538_899222.jpg)

做了个简单c语言通讯录出现了问题

就是选择分类的时候本来0是返回上一项菜单的,结果变成新的一类 #include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/ #include<string.h> #include<conio.h> FILE *fp; struct Data { int fenlei; char name[10]; //姓名 char tel[15]; //电话 char age[8]; //年龄 char qq[10]; //QQ号 } ren[1000]; struct Data1 { struct Data data; struct Data1 *next; } *p,*p1,*p2; struct zhanghao { char username[20]; char password[10]; } zh,*zh1,*zh2; struct LNode { char clas[20]; int length; struct Data1 *next; } a[6]; int menu() //主菜单选择函数 { int c; //定义一个整型变量 do { system("cls"); //清屏 printf("\t*******通讯录*******\n"); printf("\t--------------------\n"); printf("\t 1、通讯信息显示 \n"); printf("\t 2、通讯信息保存 \n"); printf("\t 3、通讯信息删除 \n"); printf("\t 4、通讯信息修改 \n"); printf("\t 5、通讯信息增加 \n"); printf("\t 6、通讯信息查询 \n"); printf("\t 0. 退出 \n"); printf("\t--------------------\n"); printf("\t请您选择(0-6):"); scanf("%d",&c); } while(c>7&&c<0); return(c); } void openclass() { FILE *fp1; int i; if ((fp1=fopen("contact.dat","r"))==NULL) { printf("\n不存在分类类别"); if ((fp1=fopen("contact.dat","w"))==NULL) //不存在则进行创建 { printf("\n建立失败"); exit(0); } strcpy(a[1].clas,"1.家人亲戚"); //依次将下一条信息复制到上一条的位置 strcpy(a[2].clas,"2.朋友"); strcpy(a[3].clas,"3.同学"); strcpy(a[4].clas,"4.同事"); strcpy(a[5].clas,"5.陌生人"); strcpy(a[6].clas,"6.其他"); for (i=1; i<=6; i++) { if (fprintf(fp1,"%s\n",a[i].clas)==0) { printf("\n文件保存错误!\n"); } a[i].length=0; a[i].next=NULL; } } else { rewind(fp1); for (i=1; !feof(fp1) && fscanf(fp1,"%s\n",a[i].clas); i++)a[i].next=NULL; printf("\n类别文件导入成功\n"); } fclose(fp1); //printf("\n按任意键返回主菜单:"); // getch();//按任意键退出 return; } int select() { int c,i=1; do { printf("\n1.家人亲戚\n"); printf("2.朋友\n"); printf("3.同学\n"); printf("4.同事\n"); printf("5.陌生人\n"); printf("6.其他\n"); printf("0.返回主菜单\n"); printf("请您选择(0-6):"); scanf("%d",&c); if(c<0||c>6) printf("输入错误!请重新输入:\n"); } while(c<0||c>6); if (c==0)return; else return (c); } int checkUerValid(struct zhanghao *zh1)/*校验用户合法性*/ { FILE*fp; struct zhanghao zh[1],*zh2=zh; char *usr,*pwd; int check=0; usr=zh1->username; pwd=zh1->password; if((fp=fopen("user.dat","rb"))==NULL) { printf("File open error!\n"); exit(0); } rewind(fp); fread(zh2,sizeof(struct zhanghao),1,fp); if((strcmp(usr,zh2->username)==0)&&(strcmp(pwd,zh2->password)==0)) { check=1; } if(fclose(fp)) { printf("不能关闭文件!\n"); exit(0); } return check; } void Readfile() { int n,i; openclass(); if((fp=fopen("user.dat","rb"))!=NULL) { printf("通讯录文件已存在。\n"); rewind(fp); fread(&p2,sizeof(struct zhanghao),1,fp); printf("请输入用户名:"); scanf("%s",zh.username); printf("请输入密码:"); scanf("%s",zh.password); while(checkUerValid(&zh)!=1) { printf("密码错误,请重新输入:\n"); printf("请输入用户名:"); scanf("%s",zh.username); printf("请输入密码:"); scanf("%s",zh.password); } fclose(fp); } if((fp=fopen("catalog.dat","rb"))==NULL) { printf("\n通讯录文件不存在!"); if ((fp=fopen("catalog.dat","wb"))==NULL) //不存在则进行创建 { printf("\n建立失败"); exit(0); } else { if ((fp=fopen("user.dat","wb"))==NULL) //不存在则进行创建 { printf("\n建立失败"); exit(0); } else { printf("\n输入注册号(不大于8位数):"); struct zhanghao zh[1],*zh1=zh; scanf("%s",zh1->username); while(strlen(zh1->username)>=8) { printf("\n注册号输入错误!请重新输入:"); scanf("%s",zh1->username); } printf("\n输入注册号密码(不大于8位数):"); scanf("%s",zh1->password); while(strlen(zh1->password)>=8) { printf("\n注册号输入错误!请重新输入:"); scanf("%s",zh1->password); } fwrite(zh1,sizeof(struct zhanghao),1,fp); } fclose(fp); printf("\n通讯录文件已建立\n"); printf("\n按任意键进入主菜单"); getch(); return; } exit(0); //退出 } fseek(fp,0,2); //文件位置指针移动到文件末尾 if (ftell(fp)>0) //文件不为空,获取的是文件长度 { //rewind(fp); //文件位置指针移动到文件开始位置 fseek(fp,0,0); //文件位置指针移动到文件开始位置 for ( n=0; !feof(fp) && fread(&ren[n],sizeof(struct Data),1,fp); n++); //for(i=0;i<=n;i++)printf("%s",dat[i].name); for(i=0; i<=n; i++) { p1=a[ren[i].fenlei].next; p=(struct Data1*)malloc(sizeof(struct Data1)); p->data=ren[i]; p->next=NULL; if(a[ren[i].fenlei].next==NULL) { a[ren[i].fenlei].next=p; a[ren[i].fenlei].length++; } else { while(p1->next!=NULL)p1=p1->next; p1->next=p; a[ren[i].fenlei].length++; } } //从文件流中读取数据,以Data结构体接收读取的数据,并由n记录下文件中联系人个数 printf("\n文件导入成功\n"); printf("\n按任意键进入主菜单:"); getch(); return; } fclose(fp); printf("\n文件导入成功\n"); printf("\n文件中没有数据\n"); printf("\n按任意键进入主菜单:"); getch();//按任意键退出 return; } int input1(struct LNode a[],int n) { char s[10]; char ch,m; while(ch!='n'&&ch!='N') { p1=a[n].next; printf("添加新联系人\n"); printf("姓名:"); p=(struct Data1*)malloc(sizeof(struct Data1)); p->next=NULL; scanf("%s",s); if(p1!=NULL) { while((strcmp(p1->data.name,s)!=0)&&p1->next!=NULL) p1=p1->next; if(strcmp(p1->data.name,s) == 0) { printf("通讯录中已有此人!\n"); printf("是否继续添加?(Y/N)"); scanf("%s",&m); while(m!='n'&&m!='N'&&m!='y'&&m!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&m); } if(m!='n'&&m!='N') { input1(a,n); } return 0; } if(p1->next==NULL) { printf("电话:"); scanf("%s",p->data.tel); printf("电子邮件:"); scanf("%s",p->data.age); printf("QQ号:"); scanf("%s",p->data.qq); strcpy(p->data.name,s); printf("类别:%d",n); p->data.fenlei=n; p1->next=p; a[n].length++; } } else { printf("电话:"); scanf("%s",p->data.tel); printf("电子邮件:"); scanf("%s",p->data.age); printf("QQ号:"); scanf("%s",p->data.qq); strcpy(p->data.name,s); printf("类别:%d",n); p->data.fenlei=n; a[n].next=p; a[n].length++; } printf("\n是否继续添加?(Y/N)"); scanf("%s",&ch); while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&ch); } } printf("\n添加成功!\n"); printf("\n按任意键返回主菜单:"); getch(); return 0; } void print11(struct LNode a[],int n) { int l=1; if(a[n].length>0) { printf("共%d条记录\n",a[n].length); p1=p=a[n].next; while(p!=NULL) { printf("\n%d\n类别:",l++); printf("%d\n",p->data.fenlei); printf("姓名:"); printf("%s\n",p->data.name); printf("电话:"); printf("%s\n",p->data.tel); printf("电子邮件:"); printf("%s\n",p->data.age); printf("QQ:"); printf("%s\n",p->data.qq); p=p->next; } } else printf("\n名片数为0!\n"); printf("\n按任意键返回主菜单:"); getch(); return; } void allprint(struct LNode a[]) { int n,sum=0,l=0; for(n=1; n<7; n++) { sum=sum+a[n].length; } printf("\n一共%d记录",sum); for(n=1; n<7; n++) { if(a[n].length>0) { printf("\n类别%d共%d条记录\n",n,a[n].length); p1=p=a[n].next; while(p!=NULL) { printf("%d\n",p->data.fenlei); printf("姓名:"); printf("%s\n",p->data.name); printf("电话:"); printf("%s\n",p->data.tel); printf("电子邮件:"); printf("%s\n",p->data.age); printf("QQ:"); printf("%s\n",p->data.qq); p=p->next; } } else printf("\n名片数为0!\n"); printf("\n按任意键返回主菜单:"); getch(); return; } } void print111(struct LNode a[]) { int m,n; printf("\n请选择显示方式:\n"); printf("1--分类显示 \n"); printf("2--全部显示\n"); printf("0--返回菜单\n"); printf("请选择(0-2):"); scanf("%d",&m); while(m!=1&&m!=2&&m!=0) { printf("\n输入错误,请重新选择:"); scanf("%d",&m); } if(m==1) { printf("\n请输入要查询的分类"); n=select(); print11(a,n); } if(m==2) { allprint(a); } if(m==0) { return; } } void namefind(struct LNode a[],int n) { char s[20]; int i=0; char m; printf("\n请输入想查询的姓名:"); scanf("%s",s); p1=p=a[n].next; if(p1==NULL) { printf("\n通讯录中没有此人!\n"); return; } while(p->next!=NULL) { while(strstr(p->data.name,s)==NULL&&p->next!=NULL)p=p->next; if(strstr(p->data.name,s)!=NULL) { i++; printf("\n类别:"); printf("%d\n",p->data.fenlei); printf("姓名:"); printf("%s\n",p->data.name); printf("电话:"); printf("%s\n",p->data.tel); printf("电子邮件:"); printf("%s\n",p->data.age); printf("QQ:"); printf("%s\n",p->data.qq); } if((p->next==NULL)&&i==0) { printf("\n通讯录中没有此人!\n"); printf("\n是否继续查询?(Y/N)"); scanf("%s",&m); while(m!='n'&&m!='N'&&m!='y'&&m!='Y') { printf("\n输入错误!请重新输入:"); scanf("%c",&m); } if(m!='n'&&m!='N') { namefind(a,n); } return; } if(p->next==NULL) { printf("\n查询完成!\n"); printf("\n是否继续查询?(Y/N)"); scanf("%s",&m); while(m!='n'&&m!='N'&&m!='y'&&m!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&m); } if(m!='n'&&m!='N') { namefind(a,n); } return; } else p=p->next; } if(strstr(p->data.name,s)!=NULL) { i++; printf("\n类别:"); printf("%d\n",p->data.fenlei); printf("姓名:"); printf("%s\n",p->data.name); printf("电话:"); printf("%s\n",p->data.tel); printf("电子邮件:"); printf("%s\n",p->data.age); printf("QQ:"); printf("%s\n",p->data.qq); } printf("\n查询完成!\n"); printf("\n是否继续查询?(Y/N)"); scanf("%s",&m); while(m!='n'&&m!='N'&&m!='y'&&m!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&m); } if(m!='n'&&m!='N') { namefind(a,n); } return; } void onedelete1(struct LNode a[],int n) { char s[20],r; int i=0; printf("请输入想删除联系人的姓名:"); scanf("%s",s); p1=p=a[n].next; if(p1==NULL) { printf("\n通讯录中没有此人!\n"); return; } while(strcmp(p->data.name,s)!=0&&p->next!=NULL)p=p->next; if(strcmp(p->data.name,s) != 0) { printf("\n通讯录中没有此人!\n"); return; } if(strcmp(p->data.name,s) == 0) { printf("类别:"); printf("%d\n",p->data.fenlei); printf("姓名:"); printf("%s\n",p->data.name); printf("电话:"); printf("%s\n",p->data.tel); printf("电子邮件:"); printf("%s\n",p->data.age); printf("QQ:"); printf("%s\n",p->data.qq); } printf("确认删除?(Y/N):"); scanf("%s",&r); while(r!='n'&&r!='N'&&r!='y'&&r!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&r); } if(r=='y'||r=='Y') { if(p1==p)a[n].next=p->next; else { while(p1->next!=p)p1=p1->next; p1->next=p->next; } free(p); a[n].length--; printf("\n已经成功删除!\n"); return; } } //全部删除函数 void alldelete1(struct LNode a[],int n) { char r; p1=p=a[n].next; printf("\n确认删除?(Y/N):"); scanf("%s",&r); while(r!='n'&&r!='N'&&r!='y'&&r!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&r); } if(r=='y'||r=='Y') { if(p1==NULL) { printf("不存在名片!"); return; } while(p1->next!=NULL) { p=p1->next; p1->next=p->next; free(p); } a[n].next=NULL; a[n].length=0; printf("\n已经成功删除全类名片!\n"); return; } if(r=='n'||r=='N') { return; } } //选择删除联系人函数 void delete11(struct LNode a[],int n) { int m; printf("\n请选择删除方式:\n"); printf("1--单个删除 \n"); printf("2--全部删除\n"); printf("0--返回菜单\n"); printf("请选择(0-2):"); scanf("%d",&m); while(m!=1&&m!=2&&m!=0) { printf("\n输入错误,请重新选择:"); scanf("%d",&m); } if(m==1) { onedelete1(a,n); } if(m==2) { alldelete1(a,n); } if(m==0) { return; } } void Save() { FILE *fp; int i; if ((fp=fopen("catalog.dat","wb"))==NULL) { printf("\n文件打开失败"); } for (i=1; i<=6; i++) { p=a[i].next; while(p!=NULL) { if (fwrite(&(p->data),sizeof(struct Data),1,fp)==0) { printf("\n文件保存错误!\n"); } p=p->next; } } fclose(fp); printf("\n按任意键返回主菜单:"); getch();//按任意键退出 return; } void namechange(struct LNode a[],int n) { char s[20]; char m,ch; int i=0,k; p1=a[n].next; printf("\n请输入想修改的联系人的姓名:"); scanf("%s",s); if(p1==NULL) { printf("\n通讯录中没有此人!\n"); printf("\n是否继续修改?(Y/N)"); scanf("%s",&ch); while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&ch); } if(ch!='n'&&ch!='N') { namechange(a,n); } return; } else { while((strcmp(p1->data.name,s)!=0)&&p1->next!=NULL) p1=p1->next; if(p1->next ==NULL&&strcmp(p1->data.name,s) != 0) { printf("\n通讯录中没有此人!\n"); printf("\n是否继续修改?(Y/N)"); scanf("%s",&ch); while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&ch); } if(ch!='n'&&ch!='N') { namechange(a,n); } return; } } if(strcmp(p1->data.name,s) == 0) { printf("类别:"); printf("%d\n",p1->data.fenlei); printf("姓名:"); printf("%s\n",p1->data.name); printf("电话:"); printf("%s\n",p1->data.tel); printf("电子邮件:"); printf("%s\n",p1->data.age); printf("QQ:"); printf("%s\n",p1->data.qq); printf("\n1.修改姓名\n"); printf("2.修改电话\n"); printf("3.修改电子邮件\n"); printf("4.修改地址\n"); printf("5.修改QQ号\n"); printf("0.返回菜单\n"); printf("请您选择(0-5):"); scanf("%d",&k); while(k!=1&&k!=2&&k!=3&&k!=4&&k!=5&&k!=0) { printf("\n输入错误,请重新选择:"); scanf("%d",&k); } switch(k) { case 1: printf("\n请输入新的姓名:"); scanf("%s",p1->data.name); break; case 2: printf("\n请输入新的电话:"); scanf("%s",p1->data.tel); break; case 3: printf("\n请输入新的电子邮件:"); scanf("%s",p1->data.age); break; case 5: printf("\n请输入新的QQ号:"); scanf("%s",p1->data.qq); break; case 0: return; } printf("\n修改成功!\n"); printf("\n是否继续修改?(Y/N)"); scanf("%s",&m); while(m!='n'&&m!='N'&&m!='y'&&m!='Y') { printf("\n输入错误!请重新输入:"); scanf("%c",&m); } for(; m=='y'||m=='Y';) { printf("请您选择(0-5):"); scanf("%d",&k); while(k!=1&&k!=2&&k!=3&&k!=4&&k!=5&&k!=0) { printf("\n输入错误,请重新选择:"); scanf("%d",&k); } switch(k) { case 1: printf("\n请输入新的姓名:"); scanf("%s",p1->data.name); break; case 2: printf("\n请输入新的电话:"); scanf("%s",p1->data.tel); break; case 3: printf("\n请输入新的电子邮件:"); scanf("%s",p1->data.age); break; case 5: printf("\n请输入新的QQ号:"); scanf("%s",p1->data.qq); break; case 0: return; } printf("\n修改成功!\n"); printf("\n是否继续修改?(Y/N)"); scanf("%s",&m); while(m!='n'&&m!='N'&&m!='y'&&m!='Y') { printf("\n输入错误!请重新输入:"); scanf("%s",&m); } } if(m=='n'||m=='N'); return; } } int main() { int ads,asd; Readfile(); while(1) { switch(ads=menu()) { case 1: system("cls"); print111(a); break; case 2: system("cls"); Save(); break; case 3: system("cls"); asd=select(); delete11(a,asd); break; case 4: system("cls"); asd=select(); namechange(a,asd); break; case 5: system("cls"); asd=select(); input1(a,asd); break; case 6: system("cls"); asd=select(); namefind(a,asd); break; case 0: system("cls"); exit(0); default: ads=menu(); } } }

C语言通讯录统计时间范围内和分类人数,求解答

设计一个通讯录程序,该程序具有以下功能: (1)通讯录管理基本功能,包括:  增加联系人,输入并保存联系人信息(联系人信息包括的内容:姓名、手机号码、 通信地址、电子邮箱、生日、分类) ;  修改联系人,输入姓名,显示并修改该人的通讯信息;  删除联系人,输入姓名,显示并删除该人的通讯信息; (2)通讯录查询功能,包括:  列出全部联系人;  根据姓名查询,输入完整或部分姓名,显示查找到的联系人信息;  根据分类查询,输入一个分类,显示该分类的所有联系人信息;  根据手机查询,输入完整或部分手机号码,显示查找到的联系人信息; ## (3)**联系人统计功能,包括:  输入一个起始日期和一个结束日期,统计在该日期范围内共有多少人过生日,各个 分类中分别有多少人过生日。 **

C语言做通讯录的大概思路

大神给我说说C语言做个简单通讯录的大概思路是啥。。。。。。。。。。。

创建通讯录管理系统过程中产生的问题

新手求助!! 出现的问题:在测试时中,添加联系人后,选择显示联系人,年龄为乱码,其余各项信息均未显示。 出现以下三个警告,并未报错 警告 C26495 未初始化变量 people::p_age。始终初始化成员变量(type.6)。 警告 C26495 未初始化变量 people::p_sex。始终初始化成员变量(type.6)。 警告 C6262 函数使用了堆栈的“92008”个字节: 超过了 /analyze:stacksize '16384'。 请考虑将某些数据移到堆中。 请问是什么原因?新手求教。 ![图片说明](https://img-ask.csdn.net/upload/201910/02/1569950151_66802.png) ``` #include<iostream> using namespace std; #include<string> #define MAX 1000 struct people { string p_name; int p_sex; int p_age; string p_phonenumber; string p_address; }; struct Addressbooks { struct people list[MAX];//联系人(结构体)数组 int p_size=0;//联系人数量 }; void ShowMenu() { cout << "***************************" << endl; cout << "***** 1、添加联系人 *****" << endl; cout << "***** 2、显示联系人 *****" << endl; cout << "***** 3、删除联系人 *****" << endl; cout << "***** 4、查找联系人 *****" << endl; cout << "***** 5、修改联系人 *****" << endl; cout << "***** 6、清空联系人 *****" << endl; cout << "***** 0、退出通讯录 *****" << endl; cout << "***************************" << endl; } void AddPerson(Addressbooks* add) { if (add->p_size == MAX) { cout << "通讯录已满,无法添加!" << endl; return; } else { //添加具体联系人 //姓名 cout << "请输入姓名:" << endl; string name; cin >> name; add->list[add->p_size].p_name = name; //性别 cout << "请输入性别:" << endl; cout << "1、男 " << endl; cout << "2、女" << endl; int sex=0; while (true) { cin >> sex; if (sex == 1 || sex == 2) { add->list[add->p_size].p_sex = sex; break; } cout << "您输入有误,请重新输入!" << endl; } //年龄 cout << "请输入年龄:" << endl; int age=0; cin >> age; add->list[add->p_size].p_age = age; //联系号码 cout << "请输入联系号码:" << endl; string phone; cin >> phone; add->list[add->p_size].p_phonenumber = phone; //家庭住址 cout << "请输入家庭住址:" << endl; string address; cin >> address; add->list[add->p_size].p_address = address; //更新通讯录人数 add->p_size++; cout << "您已成功添加联系人 " << name << endl; system("pause");//请按任意键继续 system("cls");//清屏操作 } } void ShowPerson(Addressbooks* add) { if (add->p_size == 0)//如果传入参数中的联系人个数为0 { cout << "您的通讯录还未创建联系人" << endl; } else { for (int i = 0; i < add->p_size; i++) { cout << "姓名: " << add->list[add->p_size].p_name << "\t"; cout << "性别:" << (add->list[add->p_size].p_sex == 1 ? "男":"女" )<< "\t"; cout << "年龄:" << add->list[add->p_size].p_age << "\t"; cout << "联系电话:" << add->list[add->p_size].p_phonenumber << "\t"; cout << "家庭地址:" << add->list[add->p_size].p_address << endl; } } system("pause"); system("cls"); } int main() { Addressbooks add; add.p_size = 0; int choices = 0; while (true) { ShowMenu(); cin >> choices; switch (choices) { case 1://1、添加联系人 AddPerson(&add); break; case 2://2、显示联系人 ShowPerson(&add); break; case 3://3、删除联系人 break; case 4://4、查找联系人 break; case 5://5、修改联系人 break; case 6://6、清空联系人 break; case 0://0、退出通讯录 cout << "欢迎下次使用" << endl; system("pause"); return 0; break; default: break; } } system("pause"); return 0; } ```

自己写的C语言通讯录,存在问题,求指点

显示和查找功能都有问题 是文件读写问题吗。。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include<windows.h> #define SIZE 100 struct addr{ char name[10]; int phone[10]; char address[30]; int zip[10]; char email[30]; }contact[SIZE]; FILE *fp; int n = 0; void fileread() { if((fp=fopen("contact.txt","r")) == NULL) { printf("文件不存在!\n"); if((fp=fopen("contact.txt","w")) == NULL) { printf("文件写入失败!\n"); exit(0); } exit(0); } fseek(fp,0,2); if(ftell(fp) > 0) { rewind(fp); for (n = 0; !feof(fp) && fread(&contact[n],sizeof(struct addr),1,fp); n++); } } void menu() { system("cls"); printf("[1]显示联系人\n"); printf("[2]查找联系人\n"); printf("[3]新建联系人\n"); printf("[4]删除联系人\n"); printf("[5]修改联系人\n"); printf("[0]退出\n"); printf("请输入你的选项:"); } void new_contact() { if(n == SIZE) printf("联系人已满!\n"); printf("请输入姓名:"); scanf("%s", contact[n].name); printf("电话号码:"); scanf("%d", contact[n].phone); printf("地址:"); scanf("%s", contact[n].address); printf("邮政编码:"); scanf("%d", contact[n].zip); printf("email:"); scanf("%s", contact[n].email); n++; int i; if((fp=fopen("contact.txt", "w")) == NULL) printf("打开文件失败!\n"); for(i = 0; i < n; i++) if(fwrite(&contact[i],sizeof(struct addr),1,fp) != 1) printf("写入文件失败!\n"); fclose(fp); //exit(0); } void search_contact() { int i, flag = 0; char name[10]; system("cls"); //if(n == 0) //printf("没有联系人"); //else //{ printf("请输入要查找的联系人姓名:"); scanf("%s", name); for(i = 0; i < n; i++) if(strcmp(contact[i].name,name) == 0) { printf("姓名:%s", contact[i].name); printf("电话号码:%d", contact[i].phone); printf("地址:%s", contact[i].address); printf("邮政编码:%d", contact[i].zip); printf("email:%s", contact[i].email); flag = 1; } //} if(flag == 0) printf("不存在该联系人"); } void display_contact() { int i; system("cls"); if(n == 0) printf("没有联系人"); else { printf("姓名\t 电话号码\t 地址\t 邮政编码\t email\n"); for(i = 0; i < n; i++) { printf("%s\t", contact[i].name); printf("%d\t", contact[i].phone); printf("%s\t", contact[i].address); printf("%d\t", contact[i].zip); printf("%s\n", contact[i].email); } } } void update_contact() { int i, flag = 0; char name[10]; system("cls"); if(n == 0) printf("没有联系人"); printf("请输入要修改的联系人姓名:"); scanf("%s", &name); for(i = 0; i < n; i++) if(strcmp(contact[i].name,name) == 0) { printf("以下是要修改的联系人信息:"); printf("姓名\t 电话号码\t 地址\t 邮政编码\t email\n"); printf("%s\t", contact[i].name); printf("%d\t", contact[i].phone); printf("%s\t", contact[i].address); printf("%d\t", contact[i].zip); printf("%s\n", contact[i].email); printf("是否修改?(Y/N)"); if((getchar() == 'y') || (getchar() == 'Y')) { flag++; printf("请输入新姓名:"); scanf("%s", contact[i].name); printf("请输入新的电话号码:"); scanf("%d", contact[i].phone); printf("请输入新的地址:"); scanf("%s", contact[i].address); printf("请输入新的邮政编码:"); scanf("%d", contact[i].zip); printf("请输入新的email:"); scanf("%s", contact[i].email); } else return; } if(flag == 0) printf("不存在该联系人"); } void delete_contact() { int m, i, flag = 0; char name[10]; system("cls"); if(n == 0) printf("没有联系人"); printf("请输入你要删除的联系人姓名:"); scanf("%s", name); for(i = 0; i < n; i++) if(strcmp(contact[i].name,name) == 0) { printf("确定删除此联系人?(Y/N)"); if((getchar() == 'y') || (getchar() == 'Y')) { for(m = i; m < n-1; m++) contact[m] = contact[m+1]; n--; flag++; printf("删除成功!\n"); } else return; } if(flag == 0) printf("不存在该联系人"); } int main() { int choice; fileread(); while(1) { menu(); scanf("%d", &choice); switch(choice) { case 1: display_contact(); break; case 2: search_contact(); break; case 3: new_contact(); break; case 4: delete_contact(); break; case 5: update_contact(); break; case 0: exit(0); default: printf("输入不合法!\n"); break; } } return 0; }

求大神帮忙解决c++问题“简单通讯录程序”

编程实现简单通讯录程序。通讯者的基本信息包括编号、姓名、性别、年龄、 宅电、手机电话等信息。具体实现的管理功能如下: (1) 输入并显示多个通讯者的信息; (2) 可实现通讯者信息的添加; (3) 查询(至少提供按姓名和手机查询两种方式); (4) 修改(只提供按照姓名进行修改); (5) 删除(依据指定的信息删除如姓名、编号等)。 程序所显示的菜单内容如下: 请选择下面的一个项目: 1 创建 2 添加 3 查询 4 修改 5 删除 6 显示 7 退出 请选择:

c++ 通讯录管理系统有个搞不懂的问题

先是创建了两个结构体,联系人结构体和通讯录结构体,代码如下 ``` #define max 1000 //联系人结构体 struct person { //姓名 string name; //性别(1.男 2.女) int sex; //年龄 int age; //家庭住址 string address; //电话号码 string phoneNumber; }; //通讯录结构体 struct addressBook { //通讯录 person personsArray[max]; //储存的成员个数 int number; }; ``` 录入联系人函数代码如下 ``` void addPersons(addressBook* adk ) { if (adk->number == 1000) cout << "通讯录已满" << endl; else { //输入姓名 cout << "请输入联系人姓名" << endl; cin >> adk->personsArray[adk->number].name; //输入性别(1.男 2.女) cout << "请输入联系人性别" << endl; int sex; bool flag = true; while (flag == true) { cin >> sex; if (sex == 1 || sex == 2) { adk->personsArray[adk->number].sex = sex; flag = false; } else cout << "请输入正确的性别" << endl; } //输入年龄 cout << "请输入联系人年龄" << endl; cin >> adk->personsArray[adk->number].age; //输入住址 cout << "请输入联系人家庭住址" << endl; cin >> adk->personsArray[adk->number].address; //输入电话号码 cout << "请输入联系人联系方式" << endl; cin >> adk->personsArray[adk->number].phoneNumber; cout << "录入成功" << endl; adk->number++; } } ``` 如果结构体person中电话号码时int类型,那么在执行完录入函数时会出现系循环,一直重复输出“请输入正确的性别”。 实在是搞不懂,有没有大神帮忙解决下??

C语言写手机通讯录。。

求大神说说怎么写C语言通讯录...............学完了C语言怎么还写不出来啊,不知道怎么下手。

Android通讯录查询问题,求大神解答,感激~

为什么我查不到 log日志也打不出来 ``` ContentResolver contentResolver = getContentResolver(); Uri uri = Uri.parse("content://com.android.contacts/raw_contacts"); //访问raw_contacts表 //2.查询系统联系人数据库 Cursor cursor = contentResolver.query( uri, new String[]{"contact_id"}, null,null,null); //3.循环游标 while (cursor.moveToNext()){ String id = cursor.getString(0); Log.i(tag,"id="+id); } cursor.close(); ``` ![这是content provider爆出的数据库](http://my.csdn.net/uploads/201207/04/1341357223_7156.png)

javascript编写学生通讯录管理程序,怎么保存文件,要能够实现文件的读写的完整的思路

javascript编写学生通讯录管理程序,怎么保存文件,要能够实现文件的读写的完整的思路

通讯录管理系统谁帮忙看一下哪里出错了

#include <stdio.h> #include <stdlib.h> #include <string.h> struct peo //定义链表 { char name[100]; char danwei[100]; char num[15]; char email[30]; int qq; char add[100]; struct peo *next; }; int main() { int cz;//定义操作 struct peo *head,*q; struct peo *tianjia(struct peo *head,struct peo *q); struct peo *change(struct peo *head); struct peo *shanchu(struct peo *head); void chazhao(struct peo *head); void xianshi(struct peo *head); head=(struct peo*)malloc(sizeof(struct peo));//内存分配 head->next=NULL; printf("\t\t\t----------个人通讯录管理系统-----------\t\t\t\n\n"); printf("\t\t\t------------1、添加通讯录----------\t\t\t\n"); printf("\t\t\t------------2、修改通讯录----------\t\t\t\n"); printf("\t\t\t------------3、删除通讯录----------\t\t\t\n"); printf("\t\t\t------------4、查找通讯录----------\t\t\t\n"); printf("\t\t\t------------5、显示通讯录----------\t\t\t\n"); printf("\t\t\t------------6、结束程序------------\t\t\t\n\n\n"); FILE *fp; if((fp=fopen("通讯录.txt","w+"))==NULL) {printf("不能打开通讯录.txt文件!\n"); exit(0); } start:fread(head,sizeof(struct peo),1,fp); printf("请输入您想进行的操作(输入1-6):"); scanf("%d",&cz); switch(cz) { case 1: q=(struct peo*)malloc(sizeof(struct peo)); printf("输入姓名:");scanf("%s",q->name); printf("\n输入单位:");scanf("%s",q->danwei); printf("\n输入电话:");scanf("%s",q->num); printf("\n输入电子邮箱:");scanf("%s",q->email); printf("\n输入qq:");scanf("%d",&(q->qq)); printf("\n输入家庭地址:");scanf("%s",q->add); tianjia(head,q); break; case 2:change(head); break; case 3:shanchu(head); break; case 4:chazhao(head); break; case 5: fread(head,sizeof(struct peo),1,fp); xianshi(head); break; case 6: {struct peo *p=head->next; p->next=NULL; while(p) { fprintf(fp,"%s",p->name); fprintf(fp,"%s",p->danwei); fprintf(fp,"%s",p->num); fprintf(fp,"%s",p->email); fprintf(fp,"%d",&(p->qq)); fprintf(fp,"%s",p->add); p=p->next; } printf("\n"); fprintf(fp,"\n"); fclose(fp); exit(0);} default:printf("对不起,您输入的操作有误!请重新输入!"); } goto start; return 0; } struct peo *tianjia(struct peo *head,struct peo *q)//添加操作函数 { struct peo *p; for(p=head;p->next!=NULL;p=p->next); p->next=q; q->next=NULL; return head;//返回头文件 } struct peo *change(struct peo *head)//修改操作函数 { char a[100];int b; struct peo *p; if(head->next==NULL) printf("\t\t\t通讯录为空!!\t\t\t"); else { printf("输入要修改人员的姓名:"); scanf("%s",a[100]); for(p=head->next;p=!NULL;p=p->next); { printf("\t输入想要修改的选项:\n"); printf("\t1、修改姓名:\n"); printf("\t2、修改单位:\n"); printf("\t3、修改电话:\n"); printf("\t4、修改电子邮箱:\n"); printf("\t5、修改QQ号:\n"); printf("\t6、修改家庭地址:\n"); printf("请输入想修改选项(1-6):"); scanf("%d",b); switch(b) { case 1: printf("\t输入修改后的姓名:"); scanf("%s",p->name); break; case 2: printf("\t输入修改后的单位:"); scanf("%s",p->name); break; case 3: printf("\t输入修改后的电话:"); scanf("%s",p->num); break; case 4: printf("\t输入修改后的电子邮箱:"); scanf("%s",p->email); break; case 5: printf("\t输入修改后的QQ号:"); scanf("%d",&(p->qq)); break; case 6: printf("\t输入修改后的家庭住址:"); scanf("%s",p->add); break; default: printf("\t您输入的操作有误!"); } } } return head; } struct peo *shanchu(struct peo *head) { struct peo *p,*q; char a[100]; if(head->next==NULL) printf("/t/t/t通讯录为空!\t\t\t"); else { printf("\t输入想删除人员姓名:"); scanf("%s",a); p=head;q=p->next; while(q->name!=a&&q->next!=NULL) { p=p->next; q=p->next; } if(q->name==a) { p->next=q->next; free(q); printf("\t\t\t删除成功!\t\t\t"); } else printf("\t\t\t没有找到符合要求的人员!!"); } return head; } void chazhao(struct peo *head) { struct peo *p; char a[100]; if(head->next==NULL) printf("\t\t\t该通讯录不存在!!!!\t\t\t"); else{ printf("请输入要查找的人员的姓名或者电话:"); scanf("%s",a); for(p=head->next;p->next!=NULL;p=p->next) { if(p->name==a||p->num==a) { printf("\t\t查找人员的姓名为:%s",p->name); printf("\t\t\t\t单位为:%s",p->danwei); printf("\t\t\t\t电话为:%s",p->num); printf("\t\t\t\t电子邮箱为:%s",p->email); printf("\t\t\t\tQQ为:%d",&(p->qq)); printf("\t\t\t\t家庭地址为:%s",p->add); break; } } if(p->name==a||p->num==a) { printf("\t\t查找人员的姓名为:%s",p->name); printf("\t\t\t\t单位为:%s",p->danwei); printf("\t\t\t\t电话为:%s",p->num); printf("\t\t\t\t电子邮箱为:%s",p->email); printf("\t\t\t\tQQ为:%d",&(p->qq)); printf("\t\t\t\t家庭地址为:%s",p->add); } else printf("\t\t\t查找的人员不存在!!\n"); } } void xianshi(struct peo *head) { struct peo *p; p=head->next; if(p==NULL) printf("\t\t\t\t该通讯录不存在!!!\n"); else for(p=head->next;p!=NULL;p=p->next) {printf("人员姓名:");puts(p->name); printf("人员单位:");puts(p->danwei); printf("人员电话:");puts(p->num); printf("人员电子邮件:");puts(p->email); printf("人员QQ:");printf("%d",p->qq);printf("\n"); printf("人员家庭住址:");puts(p->add); printf("\n\n"); } }

这个问题关于通讯录系统建立,有哪位大神知道它的代码如何编辑的。

一、实验目的 1.考察对数据结构中相关知识的理解 2.采用模块化程序设计 二、实验环境 1.Windows系统 2.VC++ 三、实验要求 1.不同功能模块采用独立的函数完成 2.测试数据条数不少于10条数 3.系统要有主界面,运行结果截图 四、实验内容 采用顺序表和单链表,设计手机通讯录,主要包含:联系人姓名、电话号码。 完成基本功能如下: (1)初始化通讯录; (2)插入20名联系人信息; (3)删除某位联系人信息; (4)根据姓名和电话号码查找某位联系信息; (5)显示联系人信息; (6)计算当前某位联系人 (7)显示当前通讯录中共有多少联系人 (8)销毁通讯录 (9)程序要有主界面

真的很着急,大一学生党,求大神指导写一个c语言拨号程序

能显示出通讯录中所有人姓名,当选中某个姓名时,屏幕上模拟打字机效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声

通讯录中TXT文件读取问题

``` package in; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.WindowConstants; public class Demo extends JFrame { /* * 界面设计 * */ public Demo(){ Container c = getContentPane(); //定义一个顶级容器c setAlwaysOnTop(true); //窗体置顶 JPanel jp = new JPanel(); //新建JPanel面板--jp JButton button1 = new JButton("新建联系人"); JButton button2 = new JButton("删除联系人"); JButton button3 = new JButton("编辑联系人"); JButton button4 = new JButton("查找联系人"); JButton button5 = new JButton("显示所有联系人"); JButton button6 = new JButton("保存联系人到本地"); JButton button7 = new JButton("读取本地联系人"); jp.setLayout(new GridLayout(3,4,5,5));//新建网格布局管理器(行数,列数,组件间的水平垂直间距) jp.add(button1); jp.add(button2); jp.add(button3); jp.add(button4); jp.add(button5); jp.add(button6); jp.add(button7); c.add(jp);//将JPanel面板jp添加到顶级容器c中 setSize(600,150); setTitle("*通 讯 录 管 理 系 统*"); setVisible(true); setResizable(false);//窗体大小由程序员决定,用户不能自由改变大小 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); /* *按键响应 * * */ button1.addActionListener(new ActionListener(){//添加功能实现 public void actionPerformed(ActionEvent arg0){ Infro.addFunction(); } }); button2.addActionListener(new ActionListener(){//删除功能实现 public void actionPerformed(ActionEvent arg0){ Infro.deleteFunction(); } }); button3.addActionListener(new ActionListener(){//修改功能实现 public void actionPerformed(ActionEvent arg0){ Infro.reditFunction(); } }); button4.addActionListener(new ActionListener(){//查询功能实现 public void actionPerformed(ActionEvent arg0){ try { Infro.searchFunction(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); button5.addActionListener(new ActionListener(){//显示功能实现 public void actionPerformed(ActionEvent arg0){ Infro.showFunction(); } }); button6.addActionListener(new ActionListener(){//保存功能实现 public void actionPerformed(ActionEvent arg0){ try { Infro.writeFunction(); } catch (IOException e) { e.printStackTrace(); } } }); button7.addActionListener(new ActionListener(){//读取功能实现 public void actionPerformed(ActionEvent arg0){ try { Infro.readFunction(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } public static void main(String[] args) { // TODO Auto-generated method stub new Demo(); Infro a = new Infro("", "", "", "", "", ""); } } package in; import java.applet.Applet; import java.awt.Graphics; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; import javax.swing.JPanel; class Infro { public String Name; public String Sex; public String Unit; public String Homephone; public String Telephone; public String E_mail; static int index = 0; static ArrayList<Infro> list = new ArrayList(); static int len = list.size(); //构造函数 public Infro(String Name,String Sex,String Unit,String Homephone,String Telephone,String E_mail){ this.Name = Name; this.Sex = Sex; this.Unit = Unit; this.Homephone = Homephone; this.Telephone = Telephone; this.E_mail = E_mail; } public String toString(){ return "姓名:"+Name+"\t性别:"+Sex+"\t单位:"+Unit+"\t住宅电话:"+Homephone +"\t移动电话:"+Telephone+"\tE_mail:"+E_mail; } /* * 添加功能 * */ public static void addFunction(){//添加功能 Infro infro = new Infro("","","","","",""); System.out.println("请输入添加的数据:"); Scanner in = new Scanner(System.in); System.out.println("输入姓名:"); infro.Name = in.next(); System.out.println("输入性别:"); infro.Sex = in.next(); System.out.println("输入单位:"); infro.Unit = in.next(); System.out.println("输入住宅电话:"); infro.Homephone = in.next(); System. out.println("输入移动电话:"); infro.Telephone = in.next(); System.out.println("输入E_mail:"); infro.E_mail = in.next(); list.add(index,infro); index++; if(list.isEmpty()){ System.out.println("数据添加失败啦"); }else{ System.out.println("数据添加成功啦"); len++;//list集合长度加一 // System.out.println(list.get(0).toString()); } System.out.println("是否继续添加?1.是 2.否"); Scanner e=new Scanner(System.in); int e1=e.nextInt(); if(e1==1){ Infro.addFunction(); }else{ return; } } /* * 删除功能 * */ public static void deleteFunction(){ System.out.println("输入要删除的联系人的姓名"); Scanner in_2 = new Scanner(System.in); String d1 = in_2.nextLine(); java.util.Iterator<Infro> it = list.iterator(); while (it.hasNext()){ Infro infro = it.next(); if (infro.Name.equals(d1)){ it.remove(); --index;//一定要加这个,否则当做了删除操作再做添加操作的时候会出现异常(类似于指针,栈) System.out.println("删除完毕"+"此时通讯录记录条数为:" + --len); } } System.out.println("是否继续删除?1.是 2.否"); Scanner e=new Scanner(System.in); int e1=e.nextInt(); if(e1==1){ Infro.deleteFunction(); }else{ return; } } /* * 修改功能 * */ public static void reditFunction(){ System.out.println("输入要修改的通讯录的姓名"); Scanner in_r = new Scanner(System.in); String r1 = in_r.nextLine(); for(int a = 0; a < len;a++){ if(r1.equals(list.get(a).Name)){ System.out.println("输入修改后的性别:"); String Sex_1 = in_r.next(); list.get(a).Sex = Sex_1; System.out.println("输入修改后的单位:"); String Unit_1 = in_r.next(); list.get(a).Unit = Unit_1; System.out.println("输入修改后的住宅电话:"); String Homephone_1 = in_r.next(); list.get(a).Homephone = Homephone_1; System.out.println("输入修改后的移动电话:"); String Telephone_1 = in_r.next(); list.get(a).Telephone = Telephone_1; System.out.println("输入修改后的E_mail:"); String E_mail_1 = in_r.next(); list.get(a).E_mail = E_mail_1; System.out.println("数据修改完毕"); } } System.out.println("是否继续修改?1.是 2.否"); Scanner e=new Scanner(System.in); int e1=e.nextInt(); if(e1==1){ Infro.reditFunction(); }else{ return; } } /* * 查询功能 * */ public static void searchFunction() throws Exception{//查询功能 System.out.println("请选择查询方式: "); System.out.println("1.姓名 2.性别 3.单位 4.住宅电话 5.移动电话 6.E_mail "); Scanner in_0=new Scanner(System.in); int s0=in_0.nextInt(); if(s0==1){ System.out.println("请输入要查询的姓名:"); Scanner in_1 = new Scanner(System.in); String s1=in_1.nextLine(); for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常 if(s1.equals(list.get(a).Name)){ System.out.println(list.get(a).toString()); } } } else if(s0==2){ System.out.println("请输入要查询的性别:"); Scanner in_2 = new Scanner(System.in); String s2=in_2.nextLine(); for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常 if(s2.equals(list.get(a).Sex)){ System.out.println(list.get(a).toString()); } } } else if(s0==3){ System.out.println("请输入要查询的单位:"); Scanner in_3 = new Scanner(System.in); String s3=in_3.nextLine(); for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常 if(s3.equals(list.get(a).Unit)){ System.out.println(list.get(a).toString()); } } } if(s0==4){ System.out.println("请输入要查询的住宅电话:"); Scanner in_4 = new Scanner(System.in); String s4=in_4.nextLine(); for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常 if(s4.equals(list.get(a).Homephone)){ System.out.println(list.get(a).toString()); } } } else if(s0==5){ System.out.println("请输入要查询的移动电话:"); Scanner in_5 = new Scanner(System.in); String s5=in_5.nextLine(); for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常 if(s5.equals(list.get(a).Telephone)){ System.out.println(list.get(a).toString()); } } } else if(s0==6){ System.out.println("请输入要查询的E_mail:"); Scanner in_6 = new Scanner(System.in); String s6=in_6.nextLine(); for(int a= 0; a<len;a++){//切记,,这里不能用a<=list.size(),否则会数组越界异常 if(s6.equals(list.get(a).E_mail)){ System.out.println(list.get(a).toString()); } } } } /* * 显示功能 * */ public static void showFunction(){ for(int i = 0 ;i<len;i++){ System.out.println(list.get(i).toString()); } } /* * 保存功能 * */ public static void writeFunction() throws IOException{ FileWriter writer = new FileWriter("通讯录管理.txt"); for(int i = 0 ;i<len;i++){ String []strwriter = new String[len]; strwriter[i]=list.get(i).toString(); writer.write(strwriter[i]); writer.write("\r\n"); System.out.println("成功写入一行数据到 通讯录管理.txt 中"); } writer.close();//关闭写入流,释放资源 } /* * 读取功能 * */ public static void readFunction() throws IOException{ FileReader reader = new FileReader("通讯录管理.txt"); BufferedReader br = new BufferedReader(reader); String str; while((str = br.readLine()) != null){//每次读取一行文本,判断是否到达文件尾 System.out.println(str); } br.close(); } } ``` 课程设计中遇到了问题… 在运行时输入,可以查询,编辑等操作。可是保存到本地后退出运行,第二次再运行时读取本地联系人,就没办法执行查询操作了。我改了好久还是不行,请各位哥哥姐姐帮忙看一下,拜托~因为还没有学数据库,只能用文件了。 超过20个分屏显示就不要了,因为貌似java没有分屏显示……其他的功能,按姓名排序也希望你们能给些思路,谢谢谢谢 这是题目: 3. 以本班同学的具体数据为背景,设计一个本班同学通讯录(3人) 通讯录要求存储姓名、性别、单位、住宅电话、移动电话、E-mail地址等内容。系统功能要求如下: (1)通讯录记录按姓名排序存放,显示时每屏不超过20个记录,超过时分屏显示。 (2)增加某人的通讯录。 (3)修改某人的通讯录。 (4)删除某人的通讯录。 (5)按多种方式查询符合条件的信息。

android调用系统通讯录号码全显示

各位大牛,android调用系统通讯录时如何让号码全显示出来?默认是只显示姓名的,如图1,怎么弄成图2的效果,淘宝、京东等的手机充值选择号码都用图2的界面,而且和系统通讯录风格一致,应该不是自定义的通讯录。![图片](https://img-ask.csdn.net/upload/201604/13/1460523825_781303.jpg)![图片](https://img-ask.csdn.net/upload/201604/13/1460523886_329384.jpg)

C语言写通讯录用数组好还是链表好?

C语言写通讯录,需要每次打开有数据,需要保存数据,删除,添加,修改..... 用链表是不是还要每次打开后读取文件数据到链表中,感觉太麻烦,到底用数组好还是链表更合适?如果用链表,如何实现链表数据的保存和读取?

iOS 获取手机通讯录遍历时,只有一个联系人(获取到了所有联系人,可是遍历时出问题了)求大神帮忙

``` #import "AddressBook.h" #import "pinyin.h"//将汉字转换成英文 #import "Person.h"//将联系人信息存储成一个一个的person //存储通讯录的类 @interface AddressBook () @end @implementation AddressBook static AddressBook *helper = nil; + (AddressBook *)sharedContactHelper { @synchronized(self) { if (helper == nil) { helper = [[AddressBook alloc] init]; [helper requestAddressBook];//读取数据 } } return helper; } - (NSMutableDictionary *)dic { if (!_dic) { self.dic = [NSMutableDictionary dictionaryWithCapacity:1]; } return _dic; } - (NSMutableArray *)tempArr { if (!_tempArr) { self.tempArr = [NSMutableArray arrayWithCapacity:1]; } return _tempArr; } //请求访问通讯录 - (void)requestAddressBook { //新建一个通讯录类 self.addressBooks = nil; if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0) { self.addressBooks = ABAddressBookCreateWithOptions(NULL, NULL); //GCD 信号量控制并发 // dispatch_semaphore_t sema = dispatch_semaphore_create(0); ABAddressBookRequestAccessWithCompletion(_addressBooks, ^(bool granted, CFErrorRef error) { if (!granted) { NSLog(@"未获得通讯录访问权限"); } [self initAllPerson];//取得所有通讯录记录 // dispatch_semaphore_signal(sema); }); // dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); } else { _addressBooks = ABAddressBookCreate(); } } ``` ``` //取得所有通讯录记录 - (void)initAllPerson { //取得通讯录访问授权 ABAuthorizationStatus authorization = ABAddressBookGetAuthorizationStatus(); //如果未获得授权 if (authorization != kABAuthorizationStatusAuthorized) { NSLog(@"尚未获得通讯录访问授权"); return; } //取得通讯录中的所有人 CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(self.addressBooks); self.temPeoples = [NSMutableArray arrayWithCapacity:1]; self.temPeoples = (__bridge NSMutableArray *)allPeople; //通讯录中人数 CFIndex numPeople = ABAddressBookGetPersonCount(_addressBooks); self.allPerson = [NSMutableArray arrayWithCapacity:1];//存储过滤后的联系人 self.dataSourse = [NSMutableDictionary dictionaryWithCapacity:1];//存储有联系人的分区信息. self.tempDic = [NSMutableDictionary dictionaryWithCapacity:1];//存储各个A~Z分区对应联系人的信息. NSMutableArray *phoneArray = [NSMutableArray arrayWithCapacity:1];//联系人可能有多个手机号 self.keyArray = [[NSMutableArray alloc] initWithCapacity:1];//存储姓名首字母 for (int i = 0; i < numPeople; i++) { ABRecordRef people = CFArrayGetValueAtIndex(allPeople, i); // CFTypeRef abFirstName = ABRecordCopyValue((__bridge ABRecordRef)(_temPeoples[i]), kABPersonFirstNameProperty);//获取联系人的名字 // CFTypeRef abLastName = ABRecordCopyValue((__bridge ABRecordRef)(_temPeoples[i]), kABPersonLastNameProperty);//获取联系人的姓 // // CFTypeRef abFullName = ABRecordCopyCompositeName((__bridge ABRecordRef)(temPeoples[i]));//获取联系人完整的姓名。 NSString *abFirstName = (__bridge NSString *)(ABRecordCopyValue(people, kABPersonFirstNameProperty));//名字 NSString *abLastName = (__bridge NSString *)(ABRecordCopyValue(people, kABPersonLastNameProperty));//姓氏 NSString *nameString = [[NSString alloc] init]; //判断姓名 // if ((__bridge id) abFullName != nil) { // nameString = (__bridge NSString *)abFullName; // } else { if (abLastName.length > 0) { nameString = [NSString stringWithFormat:@"%@%@", abLastName,abFirstName]; } else { nameString = [NSString stringWithFormat:@"%@", abFirstName]; } // } helper.name = nameString;//姓名 NSLog(@"name: %@", helper.name); //获取汉字姓名的首字母,并变成大写 NSString *firstWord = [[NSString stringWithFormat:@"%c", pinyinFirstLetter([nameString characterAtIndex:0])] uppercaseString]; //判断手机号 ABMultiValueRef phones = ABRecordCopyValue(people, kABPersonPhoneProperty); for (NSInteger j = 0; j < ABMultiValueGetCount(phones); j++) { [phoneArray addObject:(__bridge NSString *)(ABMultiValueCopyValueAtIndex(phones, j))]; } // phoneArray = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(phones)); NSLog(@"phoneArray = %@", phoneArray); // long count = ABMultiValueGetCount(phone);//单个联系人的手机号码数量 if (phoneArray.count > 0) { for (int index = 0; index < phoneArray.count; index++) { NSString *phoneNumber = [phoneArray objectAtIndex:index]; NSString *phoneNumberLabel = (__bridge NSString *)(ABMultiValueCopyLabelAtIndex(phones, index)); if ([self isMobileNumber:phoneNumberLabel]) {//判断是否为移动号码 helper.telePhone = phoneNumber; NSLog(@"phoneNumber = %@", phoneNumberLabel); } //判断名字和号码是否为空 if ( !helper.telePhone.length || !helper.name.length) { return; } else { [self.dic setValue:[NSString stringWithFormat:@"%@", helper.name] forKey:@"name"]; [self.dic setValue:[NSString stringWithFormat:@"%@", helper.telePhone] forKey:@"phone"]; [_keyArray addObject:firstWord];//添加首字母 [self.allPerson addObject:_dic]; } } } NSLog(@"dic : %@", self.dic); CFRelease(people); CFRelease(phones); } NSLog(@"allPerson : %@", self.allPerson); CFRelease(allPeople); [self getData]; } ```

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Linux面试题(2020最新版)

文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的进程间通信方式?Linux 有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...

Linux命令学习神器!命令看不懂直接给你解释!

大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务。 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么就直接用 man 命令去查看守冗长的帮助手册。这两个都可以实现我们的目标,但有没有更简便的方式呢? 答案是必须有的!今天给大家推荐一款有趣而实用学习神器 — kmdr,让你解锁 Linux 学习新姿势...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

史上最全的 python 基础知识汇总篇,没有比这再全面的了,建议收藏

网友们有福了,小编终于把基础篇的内容全部涉略了一遍,这是一篇关于基础知识的汇总的文章,请朋友们收下,不用客气,不过文章篇幅肯能会有点长,耐心阅读吧爬虫(七十)多进程multiproces...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

85后蒋凡:28岁实现财务自由、34岁成为阿里万亿电商帝国双掌门,他的人生底层逻辑是什么?...

蒋凡是何许人也? 2017年12月27日,在入职4年时间里,蒋凡开挂般坐上了淘宝总裁位置。 为此,时任阿里CEO张勇在任命书中力赞: 蒋凡加入阿里,始终保持创业者的冲劲,有敏锐的...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

大学一路走来,学习互联网全靠这几个网站,最终拿下了一把offer

大佬原来都是这样炼成的

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

什么时候跳槽,为什么离职,你想好了么?

都是出来打工的,多为自己着想

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

立即提问
相关内容推荐