手机通讯录开发源代码
通讯录源代码

#include<stdio.h>#include<string.h> //字符串处理//#include<conio.h>#define MY1 printf("\n姓名地址邮政编码电话\t")#define MY2 printf("\n%s %4s %s %s\n",s[i].name,s[i].address,s[i].code,s[i] .tel)#define MAX 20int i;int sum;/*时间结构体类型*/struct s_message{char name[20];char address[50];char code[15];char tel[15];}s[MAX];/*保存通讯录信息*/void save_message(int sum){int i;FILE *fp; //声明fp是指针,用来指向FILE类型的对象//if((fp=fopen("D:\\s.txt","wb"))==NULL){printf("文件有误!\n");return;}for (i=0;i<sum;i++){if(fwrite(&s[i],sizeof(struct s_message),1,fp)!=1) //fwite写一个数据块//printf("writing file is wrong!\n");}fclose(fp);}/*读取通讯录信息*/int read_message(){FILE *fp;int i=0;if((fp=fopen("D:\\s.txt","rb"))==NULL){printf("\n\n***********暂时无任何库存信息,按回车键进入主菜单选择基本信息的录入!***********\n");return 0;}while(feof(fp)==0) /*feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。
通讯录管理系统程序C语言源代码

printf("*电子邮件*:%s\n",e.email);
printf("*工作单位*:%s\n",e.workspace);
printf("*工作地址*:%s\n",e.workcity);
int Homeaddress(Address *&L,int i,char newhomeaddress[]);
int Qq(Address *&L,int i,char newQQ[]);
int Email(Address *&L,int i,char newemail[]);
int Workspace(Address *&L,int i,char newworkspace[]);
int ListEmpty(Address *L);
void DispName(Address *L);
int ListLength(Address *L);
int ListDelete(Address *&L,int i,AddressList &e);
int LocateElem
}
void Sort()
{
printf("排序功能\n");
int LocateElem2(Address *L,AddressList e);
int LocateElem3(Address *L,AddressList e);
int GetElem(Address *L,int i,AddressList &e);
手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)自查报告。
标题,手机通讯录实验报告及使用说明(附源代码)。
自查报告内容:在本次实验中,我使用了Java编程语言,开发了一个简单的手机通讯录应用程序。
该应用程序可以实现添加联系人、查找联系人、删除联系人等基本功能。
在开发过程中,我遵循了面向对象的编程思想,使用了类和对象的概念来组织和管理联系人信息。
在实验中,我首先设计了Contact类,用于表示一个联系人的信息,包括姓名、电话号码、邮箱等属性。
然后,我设计了AddressBook类,用于管理联系人信息,包括添加联系人、查找联系人、删除联系人等操作。
最后,我编写了一个简单的用户界面,用于与用户交互,实现对通讯录的操作。
在实验过程中,我遇到了一些问题,比如在删除联系人时没有进行足够的输入验证,导致程序出现了错误。
不过,通过调试和修改代码,我最终解决了这些问题,并且实现了一个稳定和可靠的手机通讯录应用程序。
使用说明:1. 添加联系人,在应用程序中选择“添加联系人”选项,然后输入联系人的姓名、电话号码、邮箱等信息,点击“确认”按钮即可完成添加。
2. 查找联系人,在应用程序中选择“查找联系人”选项,然后输入联系人的姓名或电话号码,点击“搜索”按钮即可查找到对应的联系人信息。
3. 删除联系人,在应用程序中选择“删除联系人”选项,然后输入要删除的联系人的姓名或电话号码,点击“确认”按钮即可删除该联系人。
4. 显示所有联系人,在应用程序中选择“显示所有联系人”选项,即可查看当前通讯录中的所有联系人信息。
源代码:```java。
public class Contact {。
private String name;private String phone;private String email;public Contact(String name, String phone, String email) {。
= name;this.phone = phone;this.email = email;}。
(完整word版)个人通讯录管理系统源代码

个人通讯录管理系统import javax。
swing。
*;import java。
awt.*;import java。
awt.event。
*;import java.io.*;public class TongXunLu {public static void main(String[] args) {new menu();}}class menu implements ActionListener{JMenuItem zengjia,suoyou,beifen,quit,select,del;JFrame f;Container con;JMenuBar bar;String str1,str2,str3;JFileChooser fc1 = new JFileChooser();File fc2=new File("D://test。
txt”);menu(){f=new JFrame(”通讯录管理系统");f。
setDefaultCloseOperation(JFrame。
DISPOSE_ON_CLOSE);f。
setSize(500, 400);f。
setLocation(130, 150);con=f。
getContentPane();Color c=Color。
YELLOW ;Font fo=new Font("黑体",Font.BOLD,40); JPanel pan=new JPanel();JLabel lab=new JLabel(”通讯录管理系统");lab.setForeground(c);lab.setFont(fo);pan.add(lab);con。
add(pan);bar=new JMenuBar();f。
setJMenuBar(bar);JMenu menu1=new JMenu("文件"); JMenu menu2 =new JMenu(”查询"); JMenu menu3 =new JMenu("删除");zengjia=new JMenuItem("增加记录");suoyou=new JMenuItem(”所有记录”);beifen=new JMenuItem(”文件备份”);quit=new JMenuItem(”退出");select=new JMenuItem(”查询");del=new JMenuItem("删除");menu1.add(zengjia);(完整word版)个人通讯录管理系统源代码menu1。
手机通讯录源代码

手机通讯录源代码手机通讯录源代码#include#include#include#include#define N 15 //最大容量为15typedef struct //定义一个结构{char name[10];char haoma[15];char leibie[10];char dizhi[20];}ren;//菜单void menu() //目录{system("cls"); //清屏printf(" #########欢迎使用手机通讯录#########\n");printf("\n");printf("================================= ========================================= ====\n");printf("1.~~号码查询~~ \n");printf("2.~~号码添加~~ \n");printf("3.~~号码拨号~~ \n");printf("4.~~号码修改~~ \n");printf("5.~~号码删除~~ \n");printf("0. ~~退出~~ \n");printf("================================= ========================================= ====\n");printf("\n");printf("个人通讯录\n");printf("\n");printf(" ~~请选择相应的功能~~:");}void input() //查询{int help=0; //帮助指令,如果查找所找的类别中没有数据,显示ren ry;FILE *fp;char leibie[10];system("cls");printf("\n 输入要查人员的类别:");scanf("%s",leibie);//要查询的类别查找失败if((fp=fopen("ren.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}fread(&ry,sizeof(ren),1,fp);if(!feof(fp)){ printf(" 人员的信息如下:\n");printf("说明:(A办公类B个人类C商务类)");printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");while(!feof(fp)){if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出{ help++;printf("%10s %15s %10s %20s\n",/doc/8f1229847.html,,ry.haoma,ry. leibie,ry.dizhi);}fread(&ry,sizeof(ren),1,fp);}if(help==0){printf(" 查找失败");}。
C++语言通讯录程序(源代码)

scanf("%s",p->name);
printf("请输入新增联系人的手机号码:");
scanf("%s",p->number);
printf("请输入新增联系人的通信地址:");
scanf("%s",p->address);
printf("\t*========================================================*\n");
printf(FORMAT,DATA);
while(1)
{
printf("请输入需要修改信息的编号(1.姓名 2.手机号码 3.通信地址 4.电子邮箱 5.生日 6.分类 0.退出 ):");
{
printf("\t*========================================================*\n");
printf(FORMAT,DATA);k=1;
}
p=p->next;
printf("请输入新联系人的分类(朋友/同学/舍友/家人/陌生人/同事/亲戚/爱人/上级/老师):");
scanf("%s",p->sort);
printf("添加成功!");
return OK;
}
Status ModiContacts(struct contacts *p)
case 4:printf("请输入修改后的电子邮箱:");scanf("%s",k);strcpy(p->email,k);break;
通讯录源代码

#include "stdio.h"#include "stdlib.h"#include "string.h"typedef struct Content//........................................结构体{char name[20];long number;char dress[100];struct Content *next;}ML;//ML* head=NULL;ML* Found(){ML *p;p=(ML *)malloc(sizeof(ML));//指针申请空间if(p==NULL){printf("创建失败!!!");exit(0);}p->name;p->number=0;p->dress;p->next=NULL;return p;}void Imput(ML *head)//......................................联系人增添{ML*p=Found();p->next=head->next;head->next=p;printf("\n请输入联系人姓名:");getchar();gets(p->name);printf("\n请输入电话号码::");scanf("%ld",&p->number);printf("\n请输入联系人地址:");getchar();gets(p->dress);}void Revise(ML *head)//.........................................修改{char s[10];int ch;long nu;ML *p=Found();printf("输入需要修改的联系人姓名:");getchar();gets(s);p=head->next;while(strcmp(p->name ,s)){p=p->next;}printf("\n-------------------------------------\n");printf("|**********请输入操作编号***********|\n");printf("| |\n");printf("| 1、联系人姓名|\n");printf("| 2、联系人电话|\n");printf("| 3、联系人地址|\n");printf("| 0、退出|\n");printf("| |\n");printf("|-----------------------------------|\n");printf("请选择需要修改的内容:");scanf("%d",&ch);switch(ch){case 1:{printf("\n请输入名字:");getchar();gets(p->name);printf("修改成功!\n");break;}case 2:{printf("\n请输入电话:");scanf("%ld",&nu);p->number=nu;printf("修改成功!\n");break;}case 3:{printf("\n请输入地址:");getchar();gets(p->dress);printf("修改成功!\n");break;}default:break;}}void Delete(ML *head)//........................................删除{char s[10];ML *p,*d;p=Found();d=Found();p=head->next;head->next=p;printf("输入要删除的联系人姓名:\n");getchar();gets(s);d=head;do{if(!strcmp(p->name ,s)){d->next=p->next;free(p);printf("删除成功!\n");return;}d=p;p=p->next;}while(p!=NULL);printf("该联系人不存在!!!\n");}void Res(ML *head)//.............................................查找{char s[10];ML *p=Found();p=head->next;printf("输入要查找的联系人姓名\n");getchar();gets(s);for(;p!=NULL;p=p->next){if(!strcmp(p->name ,s)){printf("\n名字:%s",p->name);printf("\n电话:%ld",p->number);printf("\n地址:%s\n",p->dress);return;}}printf("该联系人不存在!!!\n");}void Browse(ML *head)//........................................浏览{ML *p=Found();printf("\n**********************************");if(head->next!=NULL){printf("\n..................................\n");printf("名字\t电话\t地址\t\n");for(p=head->next;p!=NULL;p=p->next){printf("%s\t%ld\t%s\t\n",p->name,p->number,p->dress);}}elseprintf("\n通讯录为空!!!\n");printf("\n**********************************\n");}int Menu(ML *head)//....................................................菜单{int ch;printf("-------------------------------------\n");printf("|**********请输入操作编号***********|\n");printf("| |\n");printf("| 1、添加联系人|\n");printf("| 2、修改联系人|\n");printf("| 3、删除联系人|\n");printf("| 4、查找联系人|\n");printf("| 5、浏览联系人|\n");printf("| 0、退出|\n");printf("| |\n");printf("|-----------------------------------|\n");printf("请选择:");scanf("%d",&ch);switch(ch){case 1:Imput(head);break;case 2:Revise(head);break;case 3:Delete(head);break;case 4:Res(head);break;case 5:Browse(head);break;default:break;}return ch;}void main()//........................................主函数{ML *head=Found();printf("-------------------------------------\n");printf("|* * * * * * |\n");printf("| * * * * |\n");printf("| * * * * |\n");printf("| * * * * * * |\n");printf("| * * * 通讯录. * * * |\n");printf("| |\n");printf("| * * * * * * |\n");printf("| * * * |\n");printf("| * * * ---XXX * * |\n");printf("|-----------------------------------|\n");while(Menu(head));}。
手机通讯录源代码

手机通讯录源代码#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 15 //最大容量为15typedef struct //定义一个结构{char name[10];char haoma[15];char leibie[10];char dizhi[20];}ren;//菜单void menu() //目录{system("cls"); //清屏printf(" #########欢迎使用手机通讯录#########\n");printf("\n");printf("================================= ========================================= ====\n");printf("1.~~号码查询~~ \n");printf("2.~~号码添加~~ \n");printf("3.~~号码拨号~~ \n");printf("4.~~号码修改~~ \n");printf("5.~~号码删除~~ \n");printf("0. ~~退出~~ \n");printf("================================= ========================================= ====\n");printf("\n");printf("个人通讯录\n");printf("\n");printf(" ~~请选择相应的功能~~:");}void input() //查询{int help=0; //帮助指令,如果查找所找的类别中没有数据,显示ren ry;FILE *fp;char leibie[10];system("cls");printf("\n 输入要查人员的类别:");scanf("%s",leibie);//要查询的类别查找失败if((fp=fopen("ren.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}fread(&ry,sizeof(ren),1,fp);if(!feof(fp)){ printf(" 人员的信息如下:\n");printf("说明:(A办公类B个人类C商务类)");printf("\n%10s %15s %10s %20s \n","姓名","号码","类别","邮箱");while(!feof(fp)){if(strcmp(ry.leibie,leibie)==0) //若为该类别则输出{ help++;printf("%10s %15s %10s %20s\n",,ry.haoma,ry.leibie,ry.dizhi);}fread(&ry,sizeof(ren),1,fp);}if(help==0){printf(" 查找失败!!!");}}// else printf(" 查找失败!!!");fclose(fp);getch();}//修改:输入人员的姓名,查找该人员,若找到则修改该人员的信息,并显示修改前后的结果;//号码添加void search(){int n;FILE *fp; //定义文件指针ren ry,s; // 定义两个ren结构体的量if((fp=fopen("ren.dat","ab+"))==NULL){printf("can't open file!\n");exit(0);}printf("\n录入格式姓名号码类别邮箱。
通讯录管理系统源代码

源代码:#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "stdlib.h"#define null 0struct record{char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList{struct record US;struct LinkList *next;}a;struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();void main(){system("cls");for(;;){switch(menu_select()){case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:display();break;case 4:add();break;case 5:listbyname();break;case 6:dele();break;case 7:save();break;case 8:exit(0);}}}menu_select(){char s[80];int a;printf("*_* press any key enter menu! *_* \n");getch();system("cls");printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\n");printf("\t\t 1. 显示记录 \n");printf("\t\t 2. 按查找\n");printf("\t\t 3. 按查找\n");printf("\t\t 4. 插入记录 \n");printf("\t\t 5. 按排序\n");printf("\t\t 6. 删除记录\n");printf("\t\t 7. 记录保存文件\n");printf("\t\t 8. Quit\n");printf("\t\t***********************************************\n"); do{printf("\n Enter you choice(0~11):");scanf("%s",s);a=atoi(s);}while (a<0||a>11);return a;}adduser(){printf("\n\t\t**************** 请输入用户信息 ****************\n"); printf("\n\t\t输入:");scanf("%s",&student[num].name);printf("\n\t\t输入:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}list(){int i;system("cls");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;i<num;i++){printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t邮编: %s",student[i].postcode);printf("\n\t\t:%s",student[i].e_mail);printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************"); }elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return(0);}search(){int mark=0;int i;int a=0;printf("\n\t\t***************** 按查找 *******************");char name[20];printf("\n\t\t请输入:");scanf("%s",name);for(i=a;i<num;i++){if (strcmp(student[i].name,name)==0){printf("\n\t\t************* 以下是您查找的用户信息 ***********"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t************************************************"); mark++;if ((i+1)<num){printf("\n\t\t是否继续查找相同名字的用户信息:(y/n)");if (getch()=='y'){a=i;continue;}elsereturn(0);}else{printf("\n\t\t按任意键返回主菜单");getch();return(0);}}}if(mark!=0){printf("\n\t\t没有相同的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}else{printf("\n\t\t没有相同的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}display(){int mark=0;int i;int a=0;printf("\n\t\t****************** 按查找 ******************");char phone[10];printf("\n\t\t请输入:");scanf("%s",phone);for(i=0;i<num;i++){if (strcmp(student[i].phone,phone)==0){printf("\n\t\t************** 以下是您查找的用户信息 **********"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单:");mark++;getch();return(0);}}if (mark==0){printf("\n\t\t没有改用户的信息");printf("\n\t\t按任意键返回主菜单");getch();return(0);}return(0);}add(){int i;if ((fp=fopen("student.bin","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&student[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}printf("\n\t\t**************** 请输入用户信息 ****************\n"); printf("\n\t\t输入:");scanf("%s",&student[num].name);printf("\n\t\t输入:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t");exit(0);return(0);}void deletebyphone(){int i,j;int deletemark=0;char phone[20];printf("\n\t\t请输入要删除用户:");scanf("%s",phone);if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].phone,phone)==NULL){printf("\n\t\t以下是您要删除的用户纪录:"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress); printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;}elsereturn;}continue;}if (deletemark==0){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;}}void deletebyname(){int a=0;int findmark=0;int j;int deletemark=0;int i;char name[20];printf("\n\t\t请输入要删除用户:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(student[i].name,name)==NULL){printf("\n\t\t以下是您要删除的用户纪录:");findmark++;printf("\n\t\t________________________________"); printf("\n\t\t: %s",student[i].name);printf("\n\t\t: %s",student[i].phone);printf("\n\t\t地址: %s",student[i].adress);printf("\n\t\t:%s",student[i].e_mail);printf("\n\t\t________________________________"); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同的用户信息?(y/n)"); if (getch()=='y'){a=i;continue;}}printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyname();return;}if((i+1)<num){printf("\n\t\t是否继续删除相同的用户信息?(y/n)"); if (getch()=='y'){a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}else if (findmark!=0){printf("\n\t\t没有重名信息");printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}}dele(){char choic;printf("\n\t\t1-按删除 2-按删除");printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':deletebyphone();break;case '2':deletebyname();break;}return(0);}listbyname(){int i,j;struct record tmp;for (i=1;i<num;i++){if(strcmp(student[i].name,student[i-1].name)<0){tmp=student[i];j=i-1;do{student[j+1]=student[j];j--;}while ((strcmp(,student[j].name)<0&&j>=0)); student[j+1]=tmp;}}printf("\n\t\t排序成功,是否显示?(y/n)");if (getch()=='y')list();return(0);}save(){int j;FILE*fp;fp=fopen("student.txt","w");if (fp==NULL)printf("can't open the file.");if(num!=0){for(j=0;j<num;j++){fwrite(student,sizeof(student),1,fp);}}printf("保存成功!");fclose(fp);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语言编写通讯录程序源代码以下是一个简单的 C 语言编写的通讯录程序示例,包含了添加、查找、修改和删除联系人的功能:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100// 联系人结构体struct Contact {char name[50];char number[20];};// 通讯录数组struct Contact contacts[MAX_CONTACTS];// 通讯录大小int size = 0;// 添加联系人void addContact() {if (size >= MAX_CONTACTS) {printf("通讯录已满,无法添加更多联系人。
\n");return;}printf("请输入联系人姓名:");scanf("%s", contacts[size].name);printf("请输入联系人号码:");scanf("%s", contacts[size].number);size++;printf("联系人已添加。
\n");}// 查找联系人void findContact() {char name[50];printf("请输入要查找的联系人姓名:");scanf("%s", name);for (int i = 0; i < size; i++) {if (strcmp(contacts[i].name, name) == 0) {printf("姓名:%s\n", contacts[i].name); printf("号码:%s\n", contacts[i].number); return;}}printf("未找到该联系人。
c语言通讯录源代码

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>struct person{char name[15];char sex[2];int nianling;long int youbian;char addr[50];char celephone[22];char homephone[22];char company[20];char email[40];long int QQ;}per[500];int num=0;//*外部变量num为文件中的纪录数*//FILE *fp;void mainmenu();//*主菜单*//void newrecord();//新添纪录*//void xiugaimenu();//*修改菜单*//void xiugaibyname();//*按姓名修改*//void xiugaibycelephone();//*按手机号码修改*//void xiugaixiangmu(int a);//*修改项目*//void searchmenu();//*查询菜单*//void searchbyname();//*按姓名查询*//void searchbycelephone();//*按手机号码查询*//void searchbyhomephone();//*按家庭电话号码查询*// void searchbyqq();//*按QQ查询*//void deletemenu();//*删除菜单*//void deleteall();//*删除所有信息*//void deleteone();//*删除单个*//void showall();//*输出全部信息*//void readfromfile();//*读取文件*//void writetofile();//*写入文件*// /void deletebycelephone(); //*按手机号码删除*//void deletebyname();//*按姓名删除*/void listbycelephone();//*按手机号码排序*//void listbyname();//*按姓名排序*//void listmenu();//*排序菜单*//void main()//*主函数*//{system("cls");readfromfile();while (1){mainmenu();}} //*主函数结束*//void mainmenu()//*主菜单函数*//{int a;system("cls");system("color 2a");printf("\n\t 您好! 欢迎使用通讯录!\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(" 9: 删除所有\n");printf(" 0: 退出\n");printf(" 请输入您的数字选择: ");loop1: scanf("%d",&a);switch (a){case 1:newrecord();break;case 2:searchmenu();break;case 3:deletemenu();break;case 4:xiugaimenu();break;case 5:listmenu();break;case 6:showall();break;case 7:writetofile();break;case 8:readfromfile();break;case 9:deleteall();break;case 0:exit(0);default:printf("对不起!您的输入有误!请重新输入: ");goto loop1;}}void newrecord()//*添加纪录*//{int a;system("cls");system("color 2a");loop: printf("\n\n\n\n\t\t 请输入您要添加的联系人的信息:\n");printf("\n请输入姓名:\n");name: scanf("%s",&per[num].name);if(strlen(per[num].name)>15){printf("对不起!您的输入有误!请重新输入");goto name;}printf("\n请输入性别:\n");sex: scanf("%s",&per[num].sex);if(strlen(per[num].sex)==0){printf("对不起!您的输入有误!请重新输入");goto sex;}printf("\n请输入年龄:");nianling: scanf("%d",&per[num].nianling);if(per[num].nianling<10||per[num].nianling>110){printf("对不起!您的输入有误!请重新输入");goto nianling;}printf("\n请输入邮编\n");youbian: scanf("%d",&per[num].youbian);if(per[num].youbian<10000||per[num].youbian>999999){printf("对不起!您的输入有误!请重新输入");goto youbian;}printf("\n请输入地址\n");addr: scanf("%s",&per[num].addr);if(strlen(per[num].addr)>50||strlen(per[num].addr)<4){printf("对不起!您的输入有误!请重新输入\n");goto addr;}printf("\n请输入手机号码:\n");celephone: scanf("%s",&per[num].celephone);if(strlen(per[num].celephone)!=11){printf("对不起!您的输入有误!请重新输入\n");goto celephone;}printf("\n请输入家庭电话号码:\n");homephone: scanf("%s",&per[num].homephone);if(strlen(per[num].homephone)!=11){printf("对不起!您的输入有误!请重新输入\n");goto homephone;}printf("\n请输入公司名称:");company: scanf("%s",&per[num].company);if(strlen(per[num].company)>20||strlen(per[num].company)<10){printf("对不起!您的输入有误!请重新输入");goto company;}printf("\n输入电子邮箱:");email: scanf("%s",&per[num].email);if(strlen(per[num].email)>30||strlen(per[num].email)<4){printf("对不起!您的输入有误!请重新输入");goto email;}printf("\n输入QQ号码:");QQ: scanf("%ld",&per[num].QQ);if(per[num].QQ>00||per[num].QQ<){printf("对不起!您的输入有误!请重新输入");goto QQ;}num++;printf("\n是否继续添加?\n");printf("\n请按1和2(1代表继续;2代表不继续)\n");printf("请输入您的选择");scanf("%d",&a);if(a==1){goto loop;}else{return;}}void searchmenu()//*查询菜单*//{int a;system("cls");system("color 2a");printf("\n\t\t 欢迎使用查询菜单");printf("\n\t\t 1-按手机号码查询");printf("\n\t\t 2-按姓名查询");printf("\n\t\t 3-按家庭电话号码查询");printf("\n\t\t 4-按QQ查询");printf("\n\t\t 5-返回主菜单");printf("\n\t\t");printf("请输入您的选择");scanf("%d",&a);switch (a){case 1:searchbycelephone();break;case 2:searchbyname();break;case 3:searchbyhomephone();break;case 4:searchbyqq();break;case 5:mainmenu();break;}}void searchbycelephone()//*按手机号码查询*//{int mark=0;int i,j;int a=0;char celephone[11];printf("\n 按手机号码查找\n");printf("\n请输入手机号码:\n");scanf("%s",celephone);for(i=0;i<num;i++){if (strcmp(per[i].celephone,celephone)==0){printf("\n 以下是您查找的联系人的信息");printf("\n________________________________");printf("\n名字:%s",per[i].name);printf("\n性别:%s",per[i].sex);printf("\n年龄:%d",per[i].nianling);printf("\n邮编:%ld",per[i].youbian);printf("\n地址:%s",per[i].addr);printf("\n手机号码:%s",per[i].celephone);printf("\n家庭电话号码:%s",per[i].homephone);printf("\n公司名称:%s",per[i].company);printf("\n电子邮件:%s",per[i].email);printf("\nQQ号码:%ld",per[i].QQ);printf("\n________________________________");printf("\n请按任意数字键返回主菜单");mark++;scanf("%d",&j);return;}}if (mark==0){printf("\n对不起!没有该联系人的信息!");printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}}void searchbyname()//*按姓名查询*//{int mark=0;int i,j,findmark=0;int a=0;char name[15];printf("\n 按姓名查找");printf("\n请输入姓名:");scanf("%s",name);for(i=a;i<num;i++){if (strcmp(per[i].name,name)==0){findmark++;printf("\n\t\t 以下是您查找的联系人的信息");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");if ((i+1)<num){printf("\n是否继续查找相同名字的联系人的信息?(1代表继续;2代表不继续)");scanf("%d",&j);if (j==1){a=i;mark++;continue;}elsebreak;}else{printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}}}if(mark!=0){printf("\n对不起! 没有相同名字的该联系人的信息!!");printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}else if(findmark==0){printf("\n对不起!没有该联系人的信息!");printf("\n请按任意数字键返回主菜单");scanf("%d",&j);return;}}void searchbyhomephone()//*按家庭电话号码查询*//{int mark=0;int i,j;int a=0;char homephone[11];printf("\n\t\t 按家庭电话号码查找");printf("\n请输入家庭电话号码:");scanf("%s",homephone);for(i=0;i<num;i++){if (strcmp(per[i].homephone,homephone)==0){printf("\n\t\t 以下是您要查找的联系人的信息");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t请按任意数字键返回主菜单");mark++;scanf("%d",&j);return;}}if (mark==0){printf("\n\t\t对不起!没有该联系人的信息!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}}void searchbyqq()//*按QQ查询*//{int mark=0;int i,j;long int QQ;printf("\n\t\t 按QQ号码查找\n");printf("\n请输入QQ号码:");scanf("%ld",&QQ);for(i=0;i<num;i++){if(per[i].QQ==QQ){printf("\n\t\t 以下是您查找的联系人的信息");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t请按任意数字键返回主菜单");mark++;scanf("%d",&j);return;}}if (mark==0){printf("\n\t\t对不起!没有该联系人的信息!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}}void deletemenu()//*删除菜单*//{int i,j;system("cls");system("color 3b");if(num==0){printf("\n\t\t对不起!文件中无任何纪录!");printf("\n\t\t请先添加个人信息!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}else{printf("\n\t\t 删除菜单");printf("\n\t\t 1-删除单个");printf("\n\t\t 2-返回主菜单");printf("\n\t\t ");printf("\n\t\t请输入您的数字选择: ");loop4: scanf("%d",&i);switch (i){case 1:deleteone();break;case 2:mainmenu();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop4;}}}void deleteone()//*删除单个*//{int i;printf("\n\t\t1-按手机号码删除2-按姓名删除");printf("\n\t\t请输入您的选择:");loop5:scanf("%d",&i);;switch (i){case 1:deletebycelephone();break;case 2:deletebyname();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop5;}}void deletebyname()//姓名删除*//{int a=0;int findmark=0;int i,j,k;int deletemark=0;char name[15];printf("\n\t\t请输入您要删除的联系人的姓名:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(per[i].name,name)==0){printf("\n\t\t以下是您要删除的联系人的纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n");printf("\n\t\t请输入您的数字选择: ");scanf("%d",&k);if(k==1){for (j=i;j<num-1;j++) //*纪录移动,从per数组中删除之*//per[j]=per[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的联系人的信息?(1代表删除;2代表不删除)");printf("\n\t\t请输入您的数字选择: ");scanf("%d",&k);if(k=1){a=i;findmark++;continue;}}printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");printf("\n\t\t请输入您的数字选择: ");scanf("%d",&k);if(k==1)deleteone();elsebreak;}}elsecontinue;}if((deletemark==0)&&(findmark==0)){printf("\n\t\t对不起!没有该联系人的纪录!");printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if(k==1)deleteone();}else if(findmark!=0){printf("\n\t\t对不起!没有重名信息!");printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if(k==1)deleteone();}}void deletebycelephone()//*按手机号码删除*//{int i,j,h,m;int deletemark=0;char celephone[11];printf("\n\t\t请输入要删除的联系人的手机号码:");scanf("%s",celephone);for(i=0;i<num;i++){if(strcmp(per[i].celephone,celephone)==0){deletemark++;printf("\n\t\t以下是您要删除的联系人的纪录:");printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否删除?(1代表删除;2代表不删除)\n");printf(" 请输入您的数字选择: ");scanf("%d",&h);if(h==1){for (j=i;j<num-1;j++) /*纪录移动,从per数组中删除之*/per[j]=per[j+1];num--;printf("\n\t\t删除成功");printf("\n是否继续删除?(1代表继续;2代表不继续)\n");printf(" 请输入您的数字选择: ");scanf("%d",&h);if(h==1)deletebycelephone();}}}if(deletemark==0){printf("\n\t\t对不起!没有该联系人的纪录!");printf("\n\t\t是否继续删除?(1代表继续;2代表不继续)\n");printf(" 请输入您的数字选择: ");scanf("%d",&m);if(m==1)deletebycelephone();}}void xiugaimenu()//*修改菜单*//{int i,j;system("cls");system("color 3f");if(num==0){printf("\n\t\t对不起!文件中无任何纪录!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}else{printf("\n\t\t 1-按姓名修改2-按手机号码修改\n");printf(" 请输入您的数字选择: ");loop6:scanf("%d",&i);switch (i){case 1:xiugaibyname();break;case 2:xiugaibycelephone();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop6;}}}void xiugaibyname()//*按姓名修改*//{int a=0;int findmark=0;int xiugaimark=0;int i,j;char name[15];printf("\n\t\t请输入要修改联系人的姓名:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(per[i].name,name)==0){printf("\n\t\t以下是您要修改的联系人的纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否修改?(1代表修改;2代表不修改)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1){xiugaixiangmu(i);xiugaimark++;printf("\n\t\t修改成功");if((i+1)<num){printf("\n\t\t是否继续修改相同姓名的联系人的信息?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1){a=i;findmark++;continue;}}printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibyname();return;}}}if ((xiugaimark==0)&&(findmark==0)){printf("\n\t\t没有该联系人的纪录");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibyname();return;}else if (findmark!=0){printf("\n\t\t没有重名信息");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibyname();return;}}void xiugaibycelephone()//*按手机号码修改*//{int findmark=0;int i,j;char celephone[11];printf("\n\t\t请输入要修改联系人的手机号码:");scanf("%s",celephone);for (i=0;i<num;i++){if (strcmp(per[i].celephone,celephone)==0){printf("\n\t\t以下是您要修改的联系人的纪录:");findmark++;printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\n\t\t是否修改?(1代表修改;2代表不修改)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1){xiugaixiangmu(i);printf("\n\t\t修改成功");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);printf(" 请输入您的数字选择: ");if (j==1)xiugaixiangmu(i);break;}}}if (findmark==0){printf("\n\t\t对不起!没有该联系人的纪录!");printf("\n\t\t是否继续修改?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&j);if (j==1)xiugaibycelephone();return;}}void xiugaixiangmu(int a)//*修改项目*//{int i;system("cls");system("color c0");printf("\n\t\t 请输入您要修改的项目");printf("\n\t\t\n");printf("\n\t\t1-手机号码\n");printf("\n\t\t2-姓名\n");printf("\n\t\t3-家庭电话号码\n");printf("\n\t\t4-QQ号码\n");printf("\n\t\t5-地址\n");printf("\n\t\t6-邮编\n");printf("\n\t\t7-电子邮件\n");printf("\n\t\t8-回主菜单\n");printf("\n\t\t\n");printf(" 请输入您的数字选择: ");scanf("%d",&i);loop9: switch (i){case 1:printf("请输入手机号码:");scanf("%s",&per[a].celephone);break;case 2:printf("请输入姓名:");scanf("%s",&per[a].name);break;case 3:printf("请输入家庭电话号码:");scanf("%s",&per[a].homephone);break;case 4:printf("请输入QQ号码:");scanf("%s",&per[a].QQ);break;case 5:printf("请输入地址:");scanf("%s",&per[a].addr);break;case 6:printf("请输入邮编:");scanf("%s",&per[a].youbian);break;case 7:printf("请输入email:");scanf("%s",&per[a].email);break;case 8:mainmenu();break;default: printf("对不起!您的输入有误!请重新输入: ");goto loop9;}}void listmenu()//*排序菜单*//{int i,j;system("cls");system("color b0");if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}else{system("cls");system("color 12");printf("\n\t\t 排序菜单");printf("\n\t\t 1-按姓名排序");printf("\n\t\t 2-按手机号码排序");printf("\n\t\t 3-返回主菜单");printf(" 请输入您的数字选择: ");loop10: scanf("%d",&i);switch(i){case 1:listbyname();break;case 2:listbycelephone();break;case 3:mainmenu();break;default:printf("对不起!您的输入有误!请重新输入: ");goto loop10;}}}void listbyname()//*按姓名排序*//{int i,j,k;struct person tmp;for (i=1;i<num;i++){if(strcmp(per[i].name,per[i-1].name)<0){tmp=per[i];j=i-1;do{per[j+1]=per[j];j--;}while ((strcmp(,per[j].name)<0&&j>=0));per[j+1]=tmp;}}printf("\n\t\t排序成功,是否显示?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if (k==1)showall();return;}void listbycelephone()//*按手机号码排序*//{int i,j,k;struct person tmp;for (i=1;i<num;i++){if(strcmp(per[i].celephone,per[i-1].celephone)<0){tmp=per[i];j=i-1;do{per[j+1]=per[j];j--;}while ((strcmp(tmp.celephone,per[j].celephone)<0)&&j>=0);per[j+1]=tmp;}}printf("\n\t\t排序成功,是否显示?(1代表继续;2代表不继续)");printf(" 请输入您的数字选择: ");scanf("%d",&k);if (k==1)showall();return;}void showall()//*输出全部信息*//{int i,j;system("cls");system("color 3b");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************");for (i=0;i<num;i++){printf("\n\t\t________________________________");printf("\n\t\t名字:%s",per[i].name);printf("\n\t\t性别:%s",per[i].sex);printf("\n\t\t年龄:%d",per[i].nianling);printf("\n\t\t邮编:%ld",per[i].youbian);printf("\n\t\t地址:%s",per[i].addr);printf("\n\t\t手机号码:%s",per[i].celephone);printf("\n\t\t家庭电话号码:%s",per[i].homephone);printf("\n\t\t公司名称:%s",per[i].company);printf("\n\t\t电子邮件:%s",per[i].email);printf("\n\t\tQQ号码:%ld",per[i].QQ);printf("\n\t\t________________________________");printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************");}elseprintf("\n\t\t对不起!通讯录中无任何纪录!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}void writetofile()//*写入文件*//{int i,k;system("cls");system("color 84");if ((fp=fopen("per.bin","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&per[i],sizeof(struct person),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&k);return;}void readfromfile()//*读取文件*//{int i,j,k;system("cls");system("color 2b");if((fp=fopen("per.bin","rb"))==NULL){printf("\n\t\t****************************");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t* 通讯录文件不存在! *");if ((fp=fopen("per.bin","wb"))==NULL){printf("\n* 建立失败! *");printf("\n* *");printf("\n* *");printf("\n****************************");exit(0);}else{printf("\n\t\t* 通讯录文件已建立! *");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t****************************");printf("\n\t\t 按任意键进入主菜单");printf("\n\t\t 请输入您的数字选择: ");scanf("%d",&k);return;}exit(0);}fseek(fp,0,2); //*文件位置指针移动到文件末尾*//if (ftell(fp)>0) //*文件不为空*//{rewind(fp); //*文件位置指针移动到文件开始位置*//for (num=0;!feof(fp) && fread(&per[num],sizeof(struct person),1,fp);num++);printf("\n\t\t****************************");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t* 文件导入成功! *");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t****************************");printf("\n\t\t 按1显示所有信息,按2回主菜单!");printf("\t\t 请输入您的数字选择: ");scanf("%d",&j);if(j==1)showall();}else{printf("\n\t\t****************************");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t* 文件导入成功! *");printf("\n\t\t* 通讯录文件中无任何纪录! *");printf("\n\t\t* *");printf("\n\t\t* *");printf("\n\t\t****************************");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&i);return;}}void deleteall()//*删除所有信息*//{int i,j;system("cls");system("color 50");printf("\n\t\t确认删除?\n");printf("请按1和2(1代表确认;2代表不删除)\n ");scanf("%d",&i);if (i==1){fclose(fp);if ((fp=fopen("per.bin","wb"))==NULL){printf("\n\t\t不能打开文件,删除失败");readfromfile();}num=0;printf("\n\t\t纪录已删除!");printf("\n\t\t请按任意数字键返回主菜单");scanf("%d",&j);return;}}。
手机通讯录c++代码

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cstring>#include<set>#include<cmath>#include<algorithm>#include<map>#define inf 1000000000#define M 50#define MAXM 500000+10using namespace std;int front=0;bool end=false;struct ss{int index;char name[M];//姓名char tel[M];//电话char address[M];//地址char character[M];//关系char mail[M];//邮箱} yxc[20];void looking(){int head=0;if(front==0){printf("手机中暂时无任何联系人\n");return ;}cout<<"********************通讯录*************************"<<endl;while(head<front){printf("**Case%d:%s %s %s %s %s\n",yxc[head].index+1,yxc[head].name,yxc[head].tel,y xc[head].character,yxc[head].mail,yxc[head].address);head++;}}bool again(char ll[M])//查找是否含有重复姓名{int head=0;while(head<front){if(strcmp(yxc[head].name,ll)==0)return true;head++;}return false;}void del() {looking();if(front==0){cout<<"**********通讯录空!!!!"<<endl;return;}cout<<"**************您想删除哪条:"<<endl;int which;scanf("%d",&which);while(which<front){yxc[which].index=which+1;strcpy(yxc[which+1].address,yxc[which].address);strcpy(yxc[which+1].character,yxc[which].character);strcpy(yxc[which+1].mail,yxc[which].mail);strcpy(yxc[which+1].name,yxc[which].name);strcpy(yxc[which+1].tel,yxc[which].tel);which++;}front--;cout<<"是否继续删除:Y/N"<<endl;getchar();char ch;scanf("%c",&ch);if(ch=='Y') del();else return ;}void leibie(){char ch;getchar();cout<<"请选择分类:\n A:同事\n B:朋友\n C:家庭\n:";scanf("%c",&ch);char aa[]="同事\t";char bb[]="朋友\t";char cc[]="家庭\t";if( ch=='A') strcpy(aa,yxc[front].character);else if(ch=='B') strcpy(bb,yxc[front].character);else strcpy(cc,yxc[front].character);}void add(){if(front>=10) {char next;cout<<"当前通讯路已经超过10条,不能再录入数据"<<endl;cout<<"是否删除某些信息再录入Y/N"<<endl;cin>>next;if(next=='Y'){del();add();}elsereturn ;}cout<<"请输入姓名:";cin>>yxc[front].name;if(again(yxc[front].name)){cout<<"**********************已存在联系人,录入结束!!!!!!!!!!!!"<<endl;return ;}yxc[front].index=front;cout<<"请输入电话号码:";cin>>yxc[front].tel;leibie();cout<<"请输入邮箱:";cin>>yxc[front].mail;cout<<"请输入地址:";cin>>yxc[front].address;front++;cout<<"已添加联系人!!!!!!!!!!"<<endl;}void update() {looking();cout<<endl;cout<<"请选择更新哪条:";int head;scanf("%d",&head);printf("**Case%d:%s %s %s %s %s\n",yxc[head].index,yxc[head].name,yxc[head].tel,yxc [head].character,yxc[head].mail,yxc[head].address);cout<<"请输入姓名:";cin>>yxc[head].name;yxc[head].index=head;cout<<"请输入电话号码:";cin>>yxc[head].tel;leibie();cout<<"请输入邮箱:";cin>>yxc[head].mail;cout<<"请输入地址:";cin>>yxc[head].address;}void GOODBYE(){cout<<"************************************************************************ ***"<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<" 谢谢使用手机通讯录管理系统"<<endl;cout<<" 再见!!!!"<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<"************************************************************************ ***"<<endl;}void NEXT(int a){if(a==5) end=true;else if(a==1) looking();else if(a==2) add();else if(a==3) update();else del();return ;}void GO(){int next;cout<<"************************************************************************ ***"<<endl;cout<<"*"<<endl;cout<<"*"<<endl;cout<<"* 请选择以下功能:"<<endl;cout<<"* 1.浏览手机中的联系人"<<endl;cout<<"* 2.添加联系人"<<endl;cout<<"* 3.修改联系人"<<endl;cout<<"* 4.删除联系人"<<endl;cout<<"* 5.关闭通讯录"<<endl;cout<<"*"<<endl;cout<<"*"<<endl;cout<<"*"<<endl;cout<<"************************************************************************ ***"<<endl;scanf("%d",&next);NEXT(next);}int main(){system("cls");system("color 2e");cout<<"************************************************************************ ***"<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<" 欢迎使用手机通讯录管理系统"<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<endl<<endl;cout<<"************************************************************************ ***"<<endl;char first;while(true){cout<<" 继续进入选择功能Y/N?:"<<endl;scanf("%c",&first);if(first=='N') {GOODBYE();return 0;}GO();if(end) return 0;}system("cls");return 0;}。
通讯录源代码

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <malloc.h>#define LEN sizeof(struct record) //计算字节//#define NULL 0int num;//通讯录文件中的联系人计数器struct record{char name[100];char gender[100];char tel[100];char city[100];char eip[100];struct record *next;};struct record *head;void menu();//显示英文提示选单函数void creat();//创建新的通讯录void add();//将某联系人增加到通讯录中void find();//综合查询某联系人的通讯信息void alter();//修改通讯录中某联系人的信息void deleteb();//删除通讯录中某联系人的信息void list();//显示通讯录中的所有记录void save();//用于将对通讯录的更新保存到文件中void load();//创建新的通讯录void quit(int *f);//退出选单void shifang();// 释放内存函数声明void main(){int choic;head=NULL;int flag=1;printf("使用说明:在当通讯录中存在信息时每次使用通讯录前应先加载通讯录文件!\n");while(flag){menu();scanf("%d",&choic);switch(choic){case 1:{if(head==NULL)creat(); //创建else{shifang();creat(); //重新创建}}break;case 2:{ add();save();//将追加的记录保存到文件中}break;case 3:find();printf("\t");system("pause"); //使系统暂停break;case 4:{ alter();save();//将修改后的记录保存到文件中}printf("\t");system("pause");break;case 5:deleteb();printf("\t");system("pause");break;case 6:load();break;case 7:quit(&flag);break;case 8:list();printf("\t");system("pause");break;}}}void menu(){system("cls");printf( "\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf( "\t\t※※\n"); printf( "\t\t※欢迎使用通讯录※\n"); printf( "\t\t※※\n"); printf( "\t\t※ 1.创建新的通讯录 2.增加联系人※\n"); printf( "\t\t※※\n"); printf( "\t\t※ 3.查询联系人信息 4.修改联系人信息※\n"); printf( "\t\t※※\n"); printf( "\t\t※ 5.删除某联系人信息 6.加载通讯录文件※\n"); printf( "\t\t※※\n"); printf( "\t\t※7.退出选单8.显示通讯录中所有记录※\n"); printf( "\t\t※※\n"); printf( "\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n"); printf("\n\t\t请输入您选择的操作:");}void creat() /*函数void creat()创建联系人的个人信息*/{struct record *p1,*p2;char name[100];num=0;p1=head=(struct record *)malloc(LEN);p2=p1;system("cls");printf("请输入姓名,性别,电话,城市及邮编(结束操作请按0号键)\n"); getchar();printf("输入姓名:");gets(name);if(strcmp(name,"0")!=0&&name){strcpy(p1->name,name);printf("输入性别(男or 女):");gets(p1->gender);printf("输入8位电话号码或11位手机号(0-9):");gets(p1->tel);printf("输入所在城市:");gets(p1->city);printf("输入邮编(0-9):");gets(p1->eip);p1->next=NULL;while(1){num=num+1;//通讯录文件中的联系人计数器增1if(num==1)head=p1;elsep2->next=p1;p2=p1;printf("请输入姓名:");gets(name);if(strcmp(name,"0")==0)//当输入姓名为0时则表示此次对记录的录入结束{break;}else//继续录入{p1=(struct record *)malloc(LEN);strcpy(p1->name,name);printf("输入性别(男or 女):");gets(p1->gender);printf("输入8位电话号码或11位手机号(0-9):");gets( p1->tel);printf("输入所在城市:");gets(p1->city);printf("输入邮编(0-9):");gets(p1->eip);p1->next=NULL;}}p2->next=NULL;save();return;}elsereturn;}void list()//用于输出通讯录中的所有联系人信息的函数{struct record *p;if(head!=NULL)//通讯录非空时,列出所有联系人信息{ system("cls");p=head;printf("本通讯录现在共有%d人:\n",num);printf("---姓名-------性别------手机--------城市---------邮编\n");while(p!=NULL){printf("== %s",p->name); printf(" ");printf("%s",p ->gender); printf(" ");printf("%s",p->tel); printf(" ");printf("%s",p->city); printf(" ");printf("%s",p->eip); printf(" \n");p=p->next;}printf("==================================\n"); }else //当通讯录为空时,给出提示信息printf("通讯录为空,无法输出!");}void add()//增加记录函数{struct record *p0,*p1,*p2;system("cls");//进行系统清屏char name[100],ch;p1=head;printf("请输入所要增加的联系人的各项信息:\n");getchar();//吸收回车符或空格printf("请输入姓名:");gets(name);if((strcmp(name,"0")==0)&&name){printf("姓名不能为0,增加失败!\n");return;}else{p0=(struct record *)malloc(LEN);strcpy(p0->name,name);printf("输入性别(男or 女):");gets(p0->gender);printf("输入8位电话号码或11位手机号(0-9):");gets(p0->tel);printf("输入所在城市:");gets(p0->city);printf("输入邮编(0-9):");gets(p0->eip);num=num+1;if(head==NULL){head=p0;p0->next=NULL;return;}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;}printf("\n是否继续添加?(Y/N):");ch=getchar();if((ch=='y')||(ch=='Y'))add();return;}}}void deleteb() //删除记录{system("cls");struct record *p,*q;char sname[100],ch;p=head;if(head==NULL){printf("通讯录为空!无法删除!\n");return;}printf("请输入欲删除记录的姓名:");scanf("%s",sname);while(strcmp(p->name,sname)!=0 && p->next!=NULL) //查找节点并删除该节点{q=p;p=p->next;}if(strcmp(p->name,sname)==0){printf("%s的通讯内容如下:\n",sname);printf("---姓名-------性别------手机--------城市---------邮编\n");printf("==================================\n");printf("== %s",p->name);printf(" ");printf("%s",p->gender);printf(" ");printf("%s",p->tel);printf(" ");printf("%s",p->city);printf(" ");printf("%s",p->eip); printf(" \n");printf("==================================\n");getchar();//吸收回车键和空格printf("您确认要删除此人的通讯记录吗?(Y/N):");ch=getchar();if((ch=='Y')||(ch=='y')){if(p==head) //当通讯录中只有一条记录时head=p->next;elseq->next=p->next;num=num-1;//通讯录文件中的联系人计数器减1printf("删除成功!\n");save();//保存到文件中}else if((ch=='N')||(ch=='n'))return;}else{printf("通讯录中无此人信息!\n");}return;}void quit(int *f)//退出选单{*f=0 ;printf("谢谢您本次的使用!\n");}void save()//将通讯录写入文件的函数{FILE *fp;struct record *p1;char tong[100];if(head==NULL){fp=fopen("tongxun.txt","w");fp=NULL;//将通讯录文件清空return;}getchar();//吸收回车键和空格printf("请输入要保存通讯录的文件名:"); gets(tong);fp=fopen("tongxun.txt","w");if(fp==NULL){printf("打开通讯录文件失败!\n");return;}p1=head;fprintf(fp,"姓名性别手机城市邮编\n");for(;p1!=NULL;){fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->ge nder,p1->tel,p1->city,p1->eip);p1=p1->next;}printf("保存完毕!\n");fclose(fp);}void load()//文件加载函数{FILE *fp;char tong[100];struct record *p1,*p2;system("cls");getchar();printf("正在加载通讯录文件!\n");getchar();printf("请先输入要加载的通讯录信息所在的文件名称:");gets(tong);if((fp=fopen("tongxun.txt","r"))==NULL){ printf("此通讯录名不存在,无法输出\n");return;}else{shifang();//释放内存}p1=(struct record *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->gender,&p1->tel,&p1->city,&p1->eip); if(feof(fp)!=0){printf("文件为空,无法打开!\n");return;}else{rewind(fp);p2=p1;head=p1;num=0;while(feof(fp)==0){fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->gender,&p1->tel,&p1->city,&p1->eip);if(feof(fp)!=0)break;p2->next=p1;p2=p1;p1=(struct record *)malloc(LEN);num=num+1;}p2->next=NULL;p1=head;head=head->next;num=num-1;free(p1);list();//显示所有记录printf("加载完毕!\n");return;}fclose(fp);}void shifang()//释放内存函数{struct record *p1;while(head!=NULL){p1=head;head=head->next;free(p1);}return;}void findbyname()//按姓名查询某联系人的通讯录信息{struct record *p1,*p2;char name[100];int m;system("cls");if(head==NULL){printf("通讯录为空,无法显示!\n");return;}p1=head;getchar();printf("请输入需要查找人的姓名:");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("%s的通讯内容如下:\n",name);printf("---姓名-------性别------手机--------城市---------邮编\n");printf("==================================\n");printf("== %s",p1->name);printf(" ");printf("%s",p1->gender);printf(" ");printf("%s",p1->tel);printf(" ");printf("%s",p1->city);printf(" ");printf("%s",p1->eip); printf(" \n");printf("==================================\n");printf("\n是否继续查找某联系人的姓名信息(Y/N):");if((getchar()=='y')||(getchar()=='Y'))findbyname();break;}p1=p1->next;}if(m==0)printf("此人未在本通讯录中!\n");return;}void findbytel()//按电话查询某联系人的通讯录信息{struct record *p1,*p2;char tel[100];int m;system("cls");if(head==NULL){printf("通讯录为空,无法显示!\n");return;}p1=head;getchar();printf("请输入需要查找人的电话:");m=0;gets(tel);while(p1!=NULL){while((strcmp(p1->tel,tel))!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->tel,tel)==0){m++;printf("%s的通讯内容如下:\n",p1->name);printf("---姓名-------性别------手机--------城市---------邮编\n");printf("==================================\n");printf("== %s",p1->name);printf(" ");printf("%s",p1->gender);printf(" ");printf("%s",p1->tel);printf(" ");printf("%s",p1->city);printf(" ");printf("%s",p1->eip); printf(" \n");printf("==================================\n");printf("\n是否继续查找某联系人的电话信息(Y/N):");if((getchar()=='y')||(getchar()=='Y'))findbytel();break;}p1=p1->next;}if(m==0)printf("此人未在本通讯录中!\n");return;}void find(){int m;printf("\n请选择查询方式:\n");printf("\t 1------姓名\n");printf("\t 2------电话\n");printf("\t 3------返回\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1)findbyname();if(m==2)findbytel();}void altertel() //修改电话记录{struct record *p;int a = 0;char name[100];system("cls");getchar();printf("请键入需要修改的联系人的姓名:");gets(name);for(p=head;p!=NULL;p=p->next){if(strcmp(p->name,name)==0){printf("%s的通讯内容如下:\n",name);printf("---姓名-------性别------手机--------城市---------邮编\n");printf("==================================\n");printf("== %s",p->name);printf(" ");printf("%s",p->gender);printf(" ");printf("%s",p->tel);printf(" ");printf("%s",p->city);printf(" ");printf("%s",p->eip); printf(" \n");printf("==================================\n");printf("请键入新电话:");gets(p->tel);printf("修改成功!\n");a=1;break;}}if(a != 1)printf("无此通讯录!\n");return;}void altereip(struct record *p1)//修改邮编信息{printf("请键入新邮编:");gets(p1->eip);}void altercity() //修改城市信息{struct record *p;int a = 0;char name[100];system("cls");getchar();printf("请键入需要修改的联系人的姓名:");gets(name);for(p=head;p!=NULL;p=p->next){if(strcmp(p->name,name)==0){printf("%s的通讯内容如下:\n",name);printf("---姓名-------性别------手机--------城市---------邮编\n");printf("==================================\n");printf("== %s",p->name);printf(" ");printf("%s",p->gender);printf(" ");printf("%s",p->tel);printf(" ");printf("%s",p->city);printf(" ");printf("%s",p->eip); printf(" \n");printf("==================================\n");printf("请键入联系人目前所在城市:");gets(p->city);altereip(p);printf("修改成功!\n");a = 1;break;}}if(a != 1)printf("无此通讯录!\n");return;}void alter(){int m;system("cls");if(head==NULL){printf("通讯录为空!无法修改!\n"); return;}printf("\n请选择修改方式:\n");printf("\t 1------电话\n");printf("\t 2------城市\n");printf("\t 3------返回\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1)altertel();if(m==2)altercity();}。
数据结构通讯录系统源代码

头文件:/* 单链表中每个结点的联系人结构体定义*/typedef struct Node/* 每个联系人结构体*/{char name[10];//姓名char telnum[20];//电话号码char address[256];//地址struct Node *next;}SLNode;void Initiate(SLNode ** head)/* 初始化单链表*/{if((*head=(SLNode *)malloc(sizeof(SLNode)))== NULL){printf("内存空间不足!\n");exit(1) ;}(*head)->next=NULL;/* 置链尾标记NULL */}int Length(SLNode *head)//求当前通讯录中的联系人数{SLNode *p;/* p指向头结点*/int size;/* size初始值为0 */p = head->next;size = 0 ;while(p != NULL && head != NULL)/* 循环计数*/{k = k->next;size++;}return size;/* 返回其大小*/}void DataWrite(SLNode *head){SLNode *p;int i;FILE *fp;fp = fopen("Address list.dat","wb+");//打开文件,覆盖以前的文件p = head->next;for( i = 0;i < Length(head);i++){fwrite(p,sizeof(SLNode),1,fp);p =p->next;}fclose(fp);//关闭文件}void Load(SLNode *head)/* 初始化*/{SLNode *q,*p,*m;FILE *fp;int count = 0 ;fp = fopen("Address list.dat","rb");//以读的方式打开二进制文件//rewind(fp);if(fp == NULL){fp = fopen("Address list.dat","wb+");if(fp != NULL){printf("通讯录打开失败!创建新的通讯录!\n");}else{printf("通讯录打开失败!创建新的通讯录失败!\n");exit(0);}}else{q = (SLNode *)malloc(sizeof(SLNode ));while(fread(q,sizeof(SLNode),1,fp)){//fread(q,sizeof(SLNode),1,fp);if(ferror(fp)){printf("error!\n");break;}p = head;m = (SLNode *)malloc(sizeof(SLNode));strcpy(m->name,q->name);strcpy(m->telnum,q->telnum);strcpy(m->address,q->address);count++;m->next=p->next;/* 将新结点插入队头结点*/p->next=m;memset(q,'\0',sizeof(SLNode));}}fclose(fp);printf("\t\t\t\t 通讯录总联系人数:%d \n",Length(head));}int PrintAll(SLNode *head)/* 打印所有出所有联系人信息*/{int i;SLNode *q;q = head->next;if(q == NULL){printf("通讯录为空!\n");return -1;}else{for(i = 0 ; i< Length(head);i++)//逐个打印联系人信息{printf("编号:%d\t姓名:%s\t号码:%s\t地址:%s\n",i+1,q->name,q->telnum,q->address);q = q->next;}return 0;}}void ANParam(SLNode *head)/* 在带头结点的单链表head的第i(0《i《size)个结点前插入一个存放数据元素x的结点*//* 插入成功则返回1,失败则返回0 */SLNode *p,*q;q=(SLNode*)malloc(sizeof(SLNode));/* 生成新结点由指针p指示*/printf("请输入新联系人姓名:");fflush(stdin);gets(q->name);printf("请输入新联系人的电话号码:");fflush(stdin);gets(q->telnum);printf("请输入新联系人的地址:");fflush(stdin);gets(q->address);p = head;q->next=p->next;/* 将新结点插入队头结点*/p->next=q;DataWrite(head);//将信息以覆盖方式重新写入通讯录中printf("添加成功!\n");}void AWParam(SLNode *head,char telnum[11],char name[10],char address[256])//带形参的添加函数/* 在带头结点的单链表head的第i(0《i《size)个结点前插入一个存放数据元素x的结点*//* 插入成功则返回1,失败则返回0 */{SLNode *p,*q;q=(SLNode*)malloc(sizeof(SLNode));/* 生成新结点由指针p指示*/strcpy(q->name,name);strcpy(q->telnum,telnum);strcpy(q->address,address);p = head;q->next=p->next;/* 将新结点插入队头结点*/p->next=q;DataWrite(head);printf("添加成功!\n");}void Delete(SLNode *head)/* 删除带头结点的单链表head的第i(1~n,n为结点个数)个结点/* 删除结点的元素有x带回,删除成功返回1,否则返回0 */{SLNode *p,*s;int choice,i,m,ret;if(PrintAll(head))//如果通讯录为空,则无法删除,退出返回主菜单{return ;}m = Length(head);//求当前通讯录人数printf("请输入你要删除联系人的前面编号:");ret = scanf("%d",&choice);while(!ret || choice > m || choice < 1)//判断输入是否为数字,是否为,若否,则重新输入{printf("请正确输入你要删除联系人的前面编号!\n");fflush(stdin);ret = scanf("%d",&choice);}p=head;i = 0;//由于我们打印出来时是由1开始,所以此处定义为0while(p->next != NULL && p->next->next != NULL && i < (choice-1) )//查找所选择编号前一个结点{p = p->next;i++;}s = p->next;p->next = p->next->next;free(s);DataWrite(head);//将更新的数据重新写入文件中printf("删除成功!");}void SBName(SLNode *head)/* 查找函数,如果不存在,可添加*/{SLNode *p;int choice;char telnum[11], name[10], address[256];p=head->next;printf("请输入你要查找联系人的姓名:");fflush(stdin);gets(name);while(p != NULL){if(!strcmp(p->name,name)){printf("姓名:%s\t电话:%s\t地址:%s\n",p->name,p->telnum,p->address);break;}p=p->next;}if(p == NULL){printf("错误!所查找联系人不在通讯录,是否将该联系人添加至通讯录?\n");printf("请按0确认添加,否则不添加\n");scanf("%d",&choice);//判断输入是否为数字,且数字范围是1~m之间,否则重新输入if(!choice){printf("该联系人姓名:%s\n",name);printf("请输入该联系人的电话:\n");fflush(stdin);gets(telnum);printf("请输入该联系人的地址:\n");fflush(stdin);gets(address);AWParam(head,telnum,name,address);}}}void SBTell(SLNode *head)/* 查找函数,如果不存在,可添加*/{SLNode *p;int choice;char telnum[20], name[10], address[256];p=head->next;printf("请输入你要查找联系人的号码:");fflush(stdin);gets(telnum);while(p != NULL){if(!strcmp(p->telnum,telnum)){printf("姓名:%s\t电话:%s\t地址:%s\n",p->name,p->telnum,p->address);break;}p=p->next;}if(p == NULL){printf("错误!所查找联系人不在通讯录,是否将该联系人添加至通讯录?\n");printf("请按0确认添加,否则不添加\n");scanf("%d",&choice);if(!choice){printf("该联系人电话号码:%s\n",telnum);printf("请输入该联系人的姓名:\n");fflush(stdin);gets(name);printf("请输入该联系人的地址:\n");fflush(stdin);gets(address);AWParam(head,telnum,name,address);}}}void Destroy(SLNode **head)/* 因为单链表的结点空间是在程序运行中申请的,而系统只负责自动收回程序中静态分配的内存空间,所以在程序退出前释放动态申请的内存空间*/{SLNode *p,*p1;p= *head;while(p!=NULL)/* 通过循环释放所有的动态开辟的内存空间*/{p1=p;p=p->next;free(p1);}*head=NULL;}void Alter(SLNode *head){SLNode *p;int choice,num,i,m;if(PrintAll(head))//通讯录为空无法进行修改,退出返回主菜单{return ;}printf("请输入你要更改的信息人的前面编号:");fflush(stdin);m = Length(head);//获取当前通讯录人数i = scanf("%d",&num);//判断是否输入数字while( !i || num > m || num < 1 )//判断输入是否为数字,若否,则重新输入{printf("请正确输入你要更改的信息人的前面编号!\n");fflush(stdin);}p = head->next;//p指向第一个联系人for(i = 0 ; i< Length(head);i++){if((i+1) == num){printf("姓名:%s\t号码:%s\t地址:%s\n",p->name,p->telnum,p->address); lable1: printf("请输入你要更改的信息:\n");printf("1、姓名\t2、号码\t3、地址\t0、全部修改\n");m = scanf("%d",&choice);while(!m || choice > 3 || choice < 0)//判断输入是否为数字,若否,则重新输入{printf("请正确输入选项!\n");fflush(stdin);m = scanf("%d",&choice);}switch(choice){case 1:printf("请输入新姓名:");fflush(stdin);gets(p->name);break;case 2:printf("请输入新号码:");fflush(stdin);gets(p->telnum);break;case 3:printf("请输入新地址:");fflush(stdin);gets(p->address);break;default:printf("请输入新姓名:");fflush(stdin);gets(p->name);printf("请输入新号码:");fflush(stdin);gets(p->telnum);printf("请输入新地址:");fflush(stdin);gets(p->address);break;}printf("以下是刚更改的信息,请确认:");printf("姓名:%s\t号码:%s\t地址:%s\n",p->name,p->telnum,p->address);printf("是否继续更改该联系人?\n");printf("继续修改请按0,否则保存修改!\n");printf("输入:");scanf("%d",&choice);if(!choice){goto lable1;}else{DataWrite(head);//将修改后的文件全部写入通讯录中}}p = p->next;}}int menu(){int ret,i;printf("\t\t******************通讯录******************\n\n");printf("\t\t 1、查找联系人\t");printf("2、添加联系人\n\n");printf("\t\t 3、显示所有联系人信息\t");printf("4、删除联系人\n\n");printf("\t\t 5、更改联系人信息\t");printf("6、退出\n\n");printf("\t\t**************请选择相应功能**************\n");printf("\t\t输入对应功能编号:");i = scanf("%d",&ret);while(!i || ret > 6 || ret <1)//判断输入是否为数字,若否,则重新输入{printf("\t\t请正确输入功能编号!\n");fflush(stdin);printf("\t\t输入对应功能编号:");i = scanf("%d",&ret);}return ret;}void DeleteAll(SLNode *head){FILE *fp;fp = fopen("Address list.dat","wb+");//已创建新的文件覆盖以前的文件,一达到清除目的Destroy(&head);Initiate(&head);//初始化单链表,创建新的头结点printf("清除成功!\n");}测试主函数:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <windows.h>#include "LinkList.h"int main(){int choice = 0 ,ret;SLNode *head;char s[500] = "\t\t**谢谢使用**\n",a[] = "\t\t华中农业大学楚天学院通讯录系统\n";system("title 华中农业大学楚天学院通讯录系统");system("color 30");while(choice < strlen(a)){putchar(a[choice]);Sleep(80);choice++;}Initiate(&head);Load(head);while(1){switch(menu()){case 1:system("cls");if(head->next == NULL){printf("通讯录为空!\n");break ;}else{printf("请选择查找方式:");printf("1、姓名\t 2、电话号码\t 3、退出\n");ret = scanf("%d",&choice);while(!ret || choice >3 || choice <1){printf("输入有误!请正确选择查找方式!\n");fflush(stdin);ret = scanf("%d",&choice);}switch(choice){case 1:SBName(head);break;case 2:SBTell(head);break;case 3:break;default:break;}}break;case 2:system("cls");ANParam(head);break;case 3:system("cls");PrintAll(head);break;case 4:system("cls");printf("请选择删除方式:\n");printf("1、清空通讯录\t2、删除指定联系人\n");ret = scanf("%d",&choice);while(!ret || choice <1 || choice >2){printf("输入错误!请正确选择删除方式!\n");ret = scanf("%d",&choice);}if(choice == 1){DeleteAll(head);}else if(choice == 2){Delete(head);}break;case 5:system("cls");Alter(head);break;case 6:choice = 0;while(choice < strlen(s)){putchar(s[choice]);Sleep(80);choice++;}exit(0);break;default:printf("输入错误!请重新输入!\n");break;}}Destroy(&head);//清除动态申请空间system("pause");return 0;}。
基于c语言手机通讯录源程序

#include<stdlib.h>
#define n 5
typedef struct stu_node
{
char xh[20];
char xm[20];
char xb[4];
char gzdw[20] ;
char dhhm[13];
char email[20];
,{"00002","李四","男","西科大","12576898756","28192892@"}
,{"00003","王莉","女","西科大","13587870101","32992@"}};
flag=3;
system("color 4a");
for(k=j;k<flag-1;k++)
{
note[k]=note[p];
}
flag--;
}
}
printf("删除成功\n\n\n");
break;
case 3:
printf("请输入要修改学生的学号:\n");
printf("请输入新添加的性别:");
scanf("%s",note[flag].xb);
printf("请输入新添加的学号:");
scanf("%s",note[flag].xh);
通讯录源代码

#include <iostream>#include <stdlib.h>#include <string>using namespace std;typedef struct //定义个人信息结构体{char name[15]; //存放名字char position[20]; //存放职务char title[20]; //存放职称char number[12]; //存放电话号码char email[20]; //存放电子邮件} Person;Person per[100];/*******************菜单显示函数******************/int Menu(){char str;while(str < '0' || str > '6'){system("cls"); /************清屏**********/cout << "\t\t *****通讯录***** \n";cout << "\t\t┌───────┐\n";cout << "\t\t│1. 添加信息│\n";cout << "\t\t│2. 显示信息│\n";cout << "\t\t│3. 删除信息│\n";cout << "\t\t│4. 查询信息│\n";cout << "\t\t│5. 修改信息│\n";cout << "\t\t│6. 姓名排序│\n";cout << "\t\t│0. 退出程序│\n";cout << "\t\t└───────┘\n";cout << "\t\t请您选择(0-6):";str = getchar();}return (str-'0'); /**********返回数字**********/ }/********************信息添加函数******************/int Input(Person per[], int n){int i=0;char s;while(s != 'n' && s != 'N') //判断是否继续添加信息{cout << "\t姓名:";cin >> per[n+i].name;cout << "\t职务:";cin >> per[n+i].position;cout << "\t职称:";cin >> per[n+i].title;cout << "\t电话:";cin >> per[n+i].number;cout << "\t邮箱:";cin >> per[n+i].email;cout << "\n\t是否继续添加?(Y/N)";cin >> s;i++;}return n; //返回i值到主函数}/*********************显示函数**********************/void Display(Person per[], int n){int i;cout << "\t****************************************************\n";cout << "\t" << "姓名" ;cout << "\t" << "职务" ;cout << "\t" << "职称" ;cout << "\t" << "电话" ;cout << "\t" << "邮箱\n";cout << "\t****************************************************\n";for(i = 0; i <= n; i++) //循环函数,显示个人信息{cout << "\t" << per[i].name ;cout << "\t" << per[i].position ;cout << "\t" << per[i].title ;cout << "\t" << per[i].number ;cout << "\t" << per[i].email <<endl;if(i>1&&i%10==0){printf("\t---------------------------------\n");printf("\t");system("pause");printf("\t---------------------------------\n");}}cout << "\t****************************************************\n";}/****************************删除函数*****************************/int Delete(Person per[], int n){char str[15];int i = 0;int j;cout << "\t请输入想删除记录中的名字: ";cin >> str;while(strcmp(per[i].name, str) != 0 && i < n) /*******字符串比较*******/ i++;if(i == n){cout << "\t通讯录中没有此人!\n";}for(j = i; j < n-1; j++){strcpy(per[j].name, per[j+1].name);strcpy(per[j].position, per[j+1].position); /************将后一条记录拷贝到前一条**********/strcpy(per[j].title, per[j+1].title);strcpy(per[j].number , per[j+1].number);strcpy(per[j].email, per[j+1].email);}cout << "\t已经成功删除!\n";return n-1;}/********************************查询函数*******************************/void Find(Person per[], int n){int m;cout << "\t请选择查询方式:\n";cout << "\t┌──────┐\n";cout << "\t│1------姓名│\n";cout << "\t│2------职务│\n";cout << "\t│3------职称│\n"; //显示查询方式的目录cout << "\t│4------电话│\n";cout << "\t│5------邮箱│\n";cout << "\t│6------返回│\n";cout << "\t└──────┘\n";cout << "\t请选择序号: ";cin >> m;while(m != 1 && m != 2 && m != 3 && m != 4 && m != 5){cout << "\t输入错误,请重新选择: ";cin >> m;}if(m == 1) //按姓名查询{char str[15];int i = 0;cout << "\t请输入想查询的姓名: ";cin >> str;while(strcmp(per[i].name, str) != 0 && i < n)i++;if(i == n){cout << "\t通讯录中没有此人! ";return ;}cout << "\t此人职务:\n" << " \t " << per[i].position <<endl;cout << "\t此人职称:\n" << " \t " << per[i].title <<endl;cout << "\t电话号码:\n" << " \t " << per[i].number <<endl;cout << "\t此人邮箱:\n" << " \t " << per[i].email <<endl;if(m == 2) //按职务查询{char str[20];int i = 0;cout << "\t请输入想查询的职务: ";cin >> str;while(strcmp(per[i].position, str) != 0 && i < n)i++;if(i == n){cout<< "\t通讯录中没有此人! ";return ;}cout << "\t此人姓名:\n" << " \t " << per[i].name <<endl;cout << "\t此人职称:\n" << " \t " << per[i].title <<endl;cout << "\t电话号码:\n" << " \t " << per[i].number <<endl;cout << "\t此人邮箱:\n" << " \t " << per[i].email <<endl; };if(m == 3) //按职称查询{char str[20];int i = 0;cout << "\t请输入想查询的职称: ";cin >> str;while(strcmp(per[i].title, str) != 0 && i < n)i++;if(i == n){cout << "\t通讯录中没有此人! ";return ;}cout << "\t此人姓名:\n" << " \t " << per[i].name <<endl;cout << "\t此人职务:\n" << " \t " << per[i].position <<endl;cout << "\t电话号码:\n" << " \t " << per[i].number <<endl;cout << "\t此人邮箱:\n" << " \t " << per[i].email <<endl;if(m == 4) //按号码查询{char l[12];int i = 0;cout << "\t请输入想查询的电话: ";cin >> l;while((per[i].number, l) != 0 && i < n)i++;if(i == n){cout << "\t通讯录中没有此人! ";return ;}cout << "\t此人姓名:\n" << " \t " << per[i].name <<endl;cout << "\t此人职务:\n" << " \t " << per[i].position <<endl;cout << "\t此人职称:\n" << " \t " << per[i].title <<endl;cout << "\t此人邮箱:\n" << " \t " << per[i].email <<endl; }if(m == 5) //按邮箱查询{char str[20];int i = 0;cout << "\t请输入想查询的邮箱: ";cin >> str;while(strcmp(per[i].email, str) != 0 && i < n)i++;if(i == n){cout << "\t通讯录中没有此人! ";return ;}cout << "\t此人姓名:\n" << " \t " << per[i].name <<endl;cout << "\t此人职务:\n" << " \t " << per[i].position <<endl;cout << "\t此人职称:\n" << " \t " << per[i].title <<endl;cout << "\t电话号码:\n" << " \t " << per[i].number <<endl; };}/**********************修改函数************************/void Modify(Person per[], int n) /*修改函数*/{char str[15];int i=0;cout << "\t想修改的名字:\t ";cin >> str;while(strcmp(per[i].name, str) != 0 && i < n)i++;if(i == n){cout << "\t没有此人!\t";return ;}cout << "\t输入新姓名: ";gets(per[i].name);cout << "\t输入新职务: ";gets(per[i].position);cout << "\t输入新职称: ";gets(per[i].title);cout << "\t输入新号码: ";gets(per[i].number);cout << "\t输入新邮箱: ";gets(per[i].email);cout << "\t修改成功\n\t";}/*****************排序函数***************/void Sort (Person per[], int n){int i;int j;char temp[15];for (i = 0; i < n-1; i++)for (j = i; j < n; j++)if (strcmp(per[i].name , per[j].name) > 0){strcpy(temp, per[i].name );strcpy(per[i].name , per[j].name);strcpy(per[j].name, temp);strcpy(temp, per[i].position );strcpy(per[i].position , per[j].position);strcpy(per[j].position, temp);strcpy(temp, per[i].title );strcpy(per[i].title , per[j].title);strcpy(per[j].title, temp);strcpy(temp, per[i].number );strcpy(per[i].number , per[j].number);strcpy(per[j].number, temp);strcpy(temp, per[i].email );strcpy(per[i].email , per[j].email);strcpy(per[j].email, temp);}Display(per, n);return ;}/******************主函数开始******************/void main(){int n = 0;for(n = 0; n <= 6; n++){switch (Menu()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 1:cout << "\t添加记录到通讯录\n";n = Input(per, n);cout << "\t";system("pause");break;case 2:cout << "\t通讯录显示\n";Display(per, n);cout << "\t";system("pause");break;case 3:cout << "\t从通讯录中删除记录\n";n = Delete(per, n);cout << "\t";system("pause");break;case 4:cout << "\t通讯录中查找\n";Find(per, n);cout << "\t";system("pause");break;case 5:cout << "\t修改记录\n";Modify(per, n);cout << "\t";system("pause");break;case 6:cout << "\t按姓名排序\n";Sort(per, n);cout << "\t";system("pause");break;case 0: /*如返回值为0则程序结束*/ cout << "\tOVER !\n";default :cout<< "\n\t";exit(0);}}}。
通讯录源代码

#include "stdio.h"#include "stdlib.h" /*标准库函数*/#include "string.h"/*字符串函数*/#include "ctype.h" /*字符操作函数*/#define M 50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/{char name[20]; /*姓名*/char units[30]; /*单位*/char tele[10]; /*电话*/}ADDRESS;/******以下是函数原型*******/int enter(ADDRESS t[]); /*输入记录*/void list(ADDRESS t[],int n); /*显示记录*/void search(ADDRESS t[],int n); /*按姓名查找显示记录*/int delete(ADDRESS t[],int n); /*删除记录*/int add(ADDRESS t[],int n); /*插入记录*/void save(ADDRESS t[],int n); /*记录保存为文件*/int load(ADDRESS t[]); /*从文件中读记录*/void display(ADDRESS t[]); /*按序号查找显示记录*/void sort(ADDRESS t[],int n); /*按姓名排序*/void qseek(ADDRESS t[],int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp); /*显示单条记录*/int find(ADDRESS t[],int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*//******主函数开始*******/main(){int i;ADDRESS adr[M]; /*定义结构体数组*/int length; /*保存记录长度*/clrscr(); /*清屏*/for(;;)/*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=enter(adr);break;/*输入记录*/case 1:list(adr,length);break; /*显示全部记录*/case 2:search(adr,length);break; /*查找记录*/case 3:length=delete(adr,length);break; /*删除记录*/case 4:length=add(adr,length); break; /*插入记录*/case 5:save(adr,length);break; /*保存文件*/case 6:length=load(adr); break; /*读文件*/case 7:display(adr);break; /*按序号显示记录*/case 8:sort(adr,length);break; /*按姓名排序*/case 9:qseek(adr,length);break; /*快速查找记录*/case 10:copy();break; /*复制文件*/case 11:exit(0); /*如返回值为11则程序结束*/}}}/*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select(){char s[80];int c;gotoxy(1,25);/*将光标定为在第25行,第1列*/printf("press any key enter menu......\n");/*提示压任意键继续*/ getch(); /*读入任意字符*/clrscr(); /*清屏*/gotoxy(1,1);printf("********************MENU*********************\n\n");printf(" 0. Enter record\n");printf(" 1. List the file\n");printf(" 2. Search record on name\n");printf(" 3. Delete a record\n");printf(" 4. add record \n");printf(" 5. Save the file\n");printf(" 6. Load the file\n");printf(" 7. display record on order\n");printf(" 8. sort to make new file\n");printf(" 9. Quick seek record\n");printf(" 10. copy the file to new file\n");printf(" 11. Quit\n");printf("***********************************************\n");do{printf("\n Enter you choice(0~11):"); /*提示输入选项*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<0||c>11); /*选择项不在0~11之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/}/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/ int enter(ADDRESS t[]){int i,n;char *s;clrscr(); /*清屏*/printf("\nplease input num \n"); /*提示信息*/scanf("%d",&n); /*输入记录数*/printf("please input record \n"); /*提示输入记录*/printf("name unit telephone\n");printf("------------------------------------------------\n");for(i=0;i<n;i++){scanf("%s%s%s",t[i].name,t[i].units,t[i].tele); /*输入记录*/printf("----------------------------------------------\n");}return n; /*返回记录条数*/}/*显示记录,参数为记录数组和记录条数*/void list(ADDRESS t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s\n",t[i].name,t[i].units,t[i].tele);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch(); /*压任意键继续*/}printf("************************end*******************\n");}/*查找记录*/void search(ADDRESS t[],int n){char s[20]; /*保存待查找姓名字符串*/int i; /*保存查找到结点的序号*/clrscr(); /*清屏*/printf("please search name\n");scanf("%s",s); /*输入待查找姓名*/i=find(t,n,s); /*调用find函数,得到一个整数*/if(i>n-1) /*如果整数i值大于n-1,说明没找到*/printf("not found\n");elseprint(t[i]); /*找到,调用显示函数显示记录*/}/*显示指定的一条记录*/void print(ADDRESS temp){clrscr();printf("\n\n********************************************\n");printf("name unit telephone\n");printf("------------------------------------------------\n");printf("%-20s%-30s%-10s\n",,temp.units,temp.tele);printf("**********************end***********************\n");}/*查找函数,参数为记录数组和记录条数以及姓名s */int find(ADDRESS t[],int n,char *s){int i;for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/{if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/ return i; /*相等,则返回该记录的下标号,程序提前结结束*/ }return i; /*返回i值*/}/*删除函数,参数为记录数组和记录条数*/int delete(ADDRESS t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s);/*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/ else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/}n--; /*记录数减1*/}}return n; /*返回记录数*/}/*插入记录函数,参数为结构体数组和记录数*/int add(ADDRESS t[],int n)/*插入函数,参数为结构体数组和记录数*/{ADDRESS temp; /*新插入记录信息*/int i,j;char s[20]; /*确定插入在哪个记录之前*/printf("please input record\n");printf("************************************************\n");printf("name unit telephone\n");printf("--------------------------------------------------\n");scanf("%s%s%s",,temp.units,temp.tele); /*输入插入信息*/ printf("------------------------------------------------\n");printf("please input locate name \n");scanf("%s",s); /*输入插入位置的姓名*/i=find(t,n,s); /*调用find,确定插入位置*/for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/{strcpy(t[j+1].name,t[j].name); /*当前记录的姓名拷贝到后一条*/strcpy(t[j+1].units,t[j].units); /*当前记录的单位拷贝到后一条*/strcpy(t[j+1].tele,t[j].tele); /*当前记录的电话拷贝到后一条*/ }strcpy(t[i].name,); /*将新插入记录的姓名拷贝到第i个位置*/ strcpy(t[i].units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/strcpy(t[i].tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/n++; /*记录数加1*/return n; /*返回记录数*/}/*保存函数,参数为结构体数组和记录数*/void save(ADDRESS t[],int n){int i;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/{printf("can not open file\n");/*没打开*/exit(1); /*退出*/}printf("\nSaving file\n"); /*输出提示信息*/fprintf(fp,"%d",n); /*将记录数写入文件*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/for(i=0;i<n;i++){fprintf(fp,"%-20s%-30s%-10s",t[i].name,t[i].units,t[i].tele);/*格式写入记录*/fprintf(fp,"\r\n"); /*将换行符号写入文件*/}fclose(fp);/*关闭文件*/printf("****save success***\n"); /*显示保存成功*/}/*读入函数,参数为结构体数组*/int load(ADDRESS t[]){int i,n;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","rb"))==NULL)/*打开文件*/{printf("can not open file\n"); /*不能打开*/exit(1); /*退出*/}fscanf(fp,"%d",&n); /*读入记录数*/for(i=0;i<n;i++)fscanf(fp,"%20s%30s%10s",t[i].name,t[i].units,t[i].tele); /*按格式读入记录*/fclose(fp); /*关闭文件*/printf("You have success read data from file!!!\n"); /*显示保存成功*/return n; /*返回记录数*/}/*按序号显示记录函数*/void display(ADDRESS t[]){int id,n;FILE *fp; /*指向文件的指针*/if((fp=fopen("record.txt","rb"))==NULL) /*打开文件*/{printf("can not open file\n"); /*不能打开文件*/exit(1); /*退出*/}printf("Enter order number...\n"); /*显示信息*/scanf("%d",&id); /*输入序号*/fscanf(fp,"%d",&n); /*从文件读入记录数*/if(id>=0&&id<n) /*判断序号是否在记录范围内*/{fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/ print(t[id]); /*调用输出函数显示该记录*/printf("\r\n");}elseprintf("no %d number record!!!\n ",id); /*如果序号不合理显示信息*/ fclose(fp); /*关闭文件*/}/*排序函数,参数为结构体数组和记录数*/void sort(ADDRESS t[],int n){int i,j,flag;ADDRESS temp; /*临时变量做交换数据用*/for(i=0;i<n;i++){flag=0; /*设标志判断是否发生过交换*/for(j=0;j<n-1;j++)if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/{flag=1;strcpy(,t[j].name); /*交换记录*/strcpy(temp.units,t[j].units);strcpy(temp.tele,t[j].tele);strcpy(t[j].name,t[j+1].name);strcpy(t[j].units,t[j+1].units);strcpy(t[j].tele,t[j+1].tele);strcpy(t[j+1].name,);strcpy(t[j+1].units,temp.units);strcpy(t[j+1].tele,temp.tele);}if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/ }printf("sort sucess!!!\n"); /*显示排序成功*/}/*快速查找,参数为结构体数组和记录数*/void qseek(ADDRESS t[],int n){char s[20];int l,r,m;printf("\nPlease sort before qseek!\n"); /*提示确认在查找之前,记录是否已排序*/printf("please enter name for qseek\n"); /*提示输入*/scanf("%s",s); /*输入待查找的姓名*/l=0;r=n-1; /*设置左边界与右边界的初值*/while(l<=r) /*当左边界<=右边界时*/{m=(l+r)/2; /*计算中间位置*/if(strcmp(t[m].name,s)==0) /*与中间结点姓名字段做比较判是否相等*/{print(t[m]); /*如果相等,则调用print函数显示记录信息*/return ; /*返回*/}if(strcmp(t[m].name,s)<0) /*如果中间结点小*/l=m+1; /*修改左边界*/elser=m-1; /*否则,中间结点大,修改右边界*/}if(l>r) /*如果左边界大于右边界时*/printf("not found\n"); /*显示没找到*/}/*复制文件*/void copy(){char outfile[20]; /*目标文件名*/int i,n;ADDRESS temp[M]; /*定义临时变量*/FILE *sfp,*tfp; /*定义指向文件的指针*/clrscr();/*清屏*/if((sfp=fopen("record.txt","rb"))==NULL) /*打开记录文件*/{printf("can not open file\n"); /*显示不能打开文件信息*/exit(1); /*退出*/}printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示信息*/ scanf("%s",outfile); /*输入目标文件名*/if((tfp=fopen(outfile,"wb"))==NULL) /*打开目标文件*/{printf("can not open file\n"); /*显示不能打开文件信息*/exit(1); /*退出*/}fscanf(sfp,"%d",&n); /*读出文件记录数*/fprintf(tfp,"%d",n);/*写入目标文件数*/fprintf(tfp,"\r\n"); /*写入换行符*/for(i=0;i<n;i++){fscanf(sfp,"%20s%30s%10s\n",temp[i].name,temp[i].units, temp[i].tele); /*读入记录*/fprintf(tfp,"%-20s%-30s%-10s\n",temp[i].name,temp[i].units,temp[i].tele); /*写入记录*/fprintf(tfp,"\r\n"); /*写入换行符*/}fclose(sfp); /*关闭源文件*/fclose(tfp); /*关闭目标文件*/printf("you have success copy file!!!\n"); /*显示复制成功*/}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计开发源代码1.AddContactsActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import android.widget.Toast;import .demo.pr3.datax.ContactsTable;import er;/*增加记录操作界面*/public class AddContactsActivity extends Activity { private EditText nameEditText; //输入框private EditText mobileEditText; //手机输入框private EditText qqEditText; //qqprivate EditText danweiEditText; //单位private EditText addressEditText; //地址Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.edit);setTitle("添加联系人");//从已设置的页面布局查找对应的控件nameEditText=(EditText)findViewById();mobileEditText=(EditText)findViewById(R.id.mobile); danweiEditText=(EditText)findViewById(R.id.danwei); qqEditText=(EditText)findViewById(R.id.qq);addressEditText=(EditText)findViewById(R.id.address); }/*创建菜单 */public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE,1, Menu.NONE, "保存");menu.add(Menu.NONE,2, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/* 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){ // TODO Auto-generated method stubswitch (item.getItemId()) {case 1://保存if(!nameEditText.getText().toString().equals("")){User user=new User();user.setName(nameEditText.getText().toString());user.setMoblie(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct=new ContactsTable(AddContactsActivity.this);if(ct.addData(user)){Toast.makeText(AddContactsActivity.this, "添加成功!",Toast.LENGTH_SHORT).show();finish();}else{Toast.makeText(AddContactsActivity.this, "添加失败!",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(AddContactsActivity.this, "请先输入数据!",Toast.LENGTH_SHORT).show();}break;case 2://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}2. ContactsMessageActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;import .demo.pr3.datax.ContactsTable;import er;/*显示联系人界面 */public class ContactsMessageActivity extends Activity { private TextView nameTextView; //输入框private TextView mobileTextView; //手机输入框private TextView qqTextView; //qqprivate TextView danweiTextView; //单位private TextView addressTextView; //地址private User user; //修改的联系人Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.message);setTitle("联系人信息");//从已设置的页面布局查找对应的控件nameTextView=(TextView)findViewById();mobileTextView=(TextView)findViewById(R.id.mobile); danweiTextView=(TextView)findViewById(R.id.danwei); qqTextView=(TextView)findViewById(R.id.qq);addressTextView=(TextView)findViewById(R.id.address);//将要修改的联系人数据付值到用户界面显示Bundle localBundle = getIntent().getExtras();int id=localBundle.getInt("user_ID");ContactsTable ct=new ContactsTable(this);user =ct.getUserByID(id);nameTextView.setText(":"+user.getName());mobileTextView.setText(":"+user.getMoblie());qqTextView.setText("QQ:"+user.getQq());danweiTextView.setText("单位:"+user.getDanwei());addressTextView.setText("地址:"+user.getAddress());}/*创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/* 菜单事件 */public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}3. MyContactsActivity类package .demo.pr3;import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android.app.AlertDialog.Builder;import android.content.ContentUris;import android.content.ContentValues;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Color;import .Uri;import android.os.Bundle;import android.provider.ContactsContract.RawContacts;import monDataKinds.Phone;import monDataKinds.StructuredName; import android.provider.ContactsContract.Contacts.Data;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;import .demo.pr3.datax.ContactsTable;import er;/*主界面*/public class MyContactsActivity extends Activity {private ListView listView; //结果列表private BaseAdapter listViewAdapter; //ListView 列表适配器private User users[];//通讯录用户private int selecteItem=0; //当前选择Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);setTitle("通讯录");listView = (ListView) findViewById(R.id.listView);loadContacts();}/*加载联系人列表*/private void loadContacts(){//获取所以通讯录联系人ContactsTable ct=new ContactsTable(this);users=ct.getAllUser();//listView列表现实适配器listViewAdapter=new BaseAdapter() {Overridepublic View getView(int position,View convertView, ViewGroup parent) {if(convertView==null){TextView textView =new TextView(MyContactsActivity.this);textView.setTextSize(22);convertView=textView;}String moblie=users[position].getMoblie()==null?"":users[position].getMoblie();((TextView)convertView).setText(users[position].getName()+"---"+moblie);if(position==selecteItem){convertView.setBackgroundColor(Color.YELLOW);}else{convertView.setBackgroundColor(0);}return convertView;}Overridepublic long getItemId(int position) {return position;}Overridepublic Object getItem(int position) {return users[position];}Overridepublic int getCount() {return users.length;}};//设置listView控件的适配器listView.setAdapter(listViewAdapter);listView.setOnItemClickListener(new OnItemClickListener() {Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stub//记录点击列selecteItem=arg2;//刷新列表listViewAdapter.notifyDataSetChanged();}});}/*创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "添加");menu.add(Menu.NONE, 2, Menu.NONE, "编辑");menu.add(Menu.NONE, 3, Menu.NONE, "查看信息");menu.add(Menu.NONE, 4, Menu.NONE, "删除");menu.add(Menu.NONE, 5, Menu.NONE, "查询");menu.add(Menu.NONE, 6, Menu.NONE, "导入到手机薄");menu.add(Menu.NONE, 7, Menu.NONE, "退出");return super.onCreateOptionsMenu(menu);}/*菜单事件*/public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://添加Intent intent = new Intent(MyContactsActivity.this,AddContactsActivity.class);startActivity(intent);break;case 2://编辑if(users[selecteItem].getId_DB()>0)//根据数据库ID判断当前记录是否可以操作{intent = new Intent(MyContactsActivity.this,UpdateContactsActivity.class);intent.putExtra("user_ID", users[selecteItem].getId_DB());startActivity(intent);}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 3://查看信息if(users[selecteItem].getId_DB()>0){intent = new Intent(MyContactsActivity.this,ContactsMessageActivity.class);intent.putExtra("user_ID", users[selecteItem].getId_DB());startActivity(intent);}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 4://删除if(users[selecteItem].getId_DB()>0){delete();}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 5://查询new FindDialog(this).show();break;case 6://导入到手机薄if(users[selecteItem].getId_DB()>0){importPhone(users[selecteItem].getName(),users[selecteItem].getMoblie());Toast.makeText(this, "已经成功导入‘"+users[selecteItem].getName()+"’到手机薄!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, "无结果记录,无法操作!",Toast.LENGTH_SHORT).show();}break;case 7://退出finish();break;default:break;}return super.onOptionsItemSelected(item);}Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();//重新加载数据ContactsTable ct=new ContactsTable(this);users=ct.getAllUser();//刷新列表listViewAdapter.notifyDataSetChanged();}/*查询*/public class FindDialog extends Dialog{public FindDialog(Context context) {super(context);}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.find);setTitle("联系人查询");Button find=(Button)findViewById(R.id.find);Button cancel=(Button)findViewById(R.id.cancel);find.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubEditText value=(EditText)findViewById(R.id.value);ContactsTable ct=new ContactsTable(MyContactsActivity.this);users=ct.findUserByKey(value.getText().toString());for(int i=0;i<users.length;i++){System.out.println("是"+users[i].getName()+",是" +users[i].getMoblie());}listViewAdapter.notifyDataSetChanged();selecteItem=0;dismiss();}});cancel.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubdismiss();}});}}/*删除联系人*/public void delete(){Builder alert = new AlertDialog.Builder(this);alert.setTitle("系统信息");alert.setMessage("是否要删除联系人?");alert.setPositiveButton("是",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) { ContactsTable ct=new ContactsTable(MyContactsActivity.this);//删除联系人信息if(ct.deleteByUser(users[selecteItem])){//重新获取数据users=ct.getAllUser();//刷新列表listViewAdapter.notifyDataSetChanged();selecteItem=0;Toast.makeText(MyContactsActivity.this, "删除成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(MyContactsActivity.this, "删除失败!",Toast.LENGTH_SHORT).show();}}});alert.setNegativeButton("否",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {}});alert.show();}///导入到手机薄public void importPhone(String name,String phone){//系统通信录ContentProvider的URIUri phoneURL=android.provider.ContactsContract.Data.CONTENT_URI;ContentValues values = new ContentValues();//首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactIdUri rawContactUri = this.getContentResolver().insert(RawContacts.CONTENT_URI, values);long rawContactId = ContentUris.parseId(rawContactUri);//往data表插入数据values.clear();values.put(Data.RAW_CONTACT_ID, rawContactId);values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);values.put(StructuredName.GIVEN_NAME, name);this.getContentResolver().insert(phoneURL, values);//往data表插入数据values.clear();values.put(Data.RAW_CONTACT_ID, rawContactId);values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);values.put(Phone.NUMBER, phone);values.put(Phone.TYPE, Phone.TYPE_MOBILE);this.getContentResolver().insert(phoneURL, values);}}4. UpdateContactsActivity类package .demo.pr3;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import android.widget.Toast;import .demo.pr3.datax.ContactsTable;import er;/*修改记录操作界面*/public class UpdateContactsActivity extends Activity {/** Called when the activity is first created. */ private EditText nameEditText; //输入框private EditText mobileEditText; //手机输入框private EditText qqEditText; //qqprivate EditText danweiEditText; //单位private EditText addressEditText; //地址private User user; //修改的联系人Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.edit);setTitle("修改联系人");//从已设置的页面布局查找对应的控件nameEditText=(EditText)findViewById();mobileEditText=(EditText)findViewById(R.id.mobile);danweiEditText=(EditText)findViewById(R.id.danwei);qqEditText=(EditText)findViewById(R.id.qq);addressEditText=(EditText)findViewById(R.id.address);//将要修改的联系人数据赋值到用户界面显示Bundle localBundle = getIntent().getExtras();int id=localBundle.getInt("user_ID");ContactsTable ct=new ContactsTable(this);user =ct.getUserByID(id);nameEditText.setText(user.getName());mobileEditText.setText(user.getMoblie());qqEditText.setText(user.getQq());danweiEditText.setText(user.getDanwei());addressEditText.setText(user.getAddress());}/*** 创建菜单*/public boolean onCreateOptionsMenu(Menu menu) {menu.add(Menu.NONE, 1, Menu.NONE, "保存");menu.add(Menu.NONE, 2, Menu.NONE, "返回");return super.onCreateOptionsMenu(menu);}/*** 菜单事件*/public boolean onOptionsItemSelected(MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()) {case 1://保存if(!nameEditText.getText().toString().equals("")){user.setName(nameEditText.getText().toString());user.setMoblie(mobileEditText.getText().toString());user.setDanwei(danweiEditText.getText().toString());user.setQq(qqEditText.getText().toString());user.setAddress(addressEditText.getText().toString());ContactsTable ct=new ContactsTable(UpdateContactsActivity.this);//修改数据库联系人信息if(ct.updateUser(user)){Toast.makeText(UpdateContactsActivity.this, "修改成功!",Toast.LENGTH_SHORT).show();}else{Toast.makeText(UpdateContactsActivity.this, "修改失败!",Toast.LENGTH_SHORT).show();}}else{Toast.makeText(UpdateContactsActivity.this, "数据不能为空!",Toast.LENGTH_SHORT).show();}break;case 2://返回finish();break;default:break;}return super.onOptionsItemSelected(item);}}。