码迷,mamicode.com
首页 > 其他好文 > 详细

通讯录管理系统

时间:2015-03-04 00:55:49      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<algorithm>
using namespace std;
//好友信息
typedef struct frie{
int num;
char name[20];
char sex[4];
int year,month,day;
char phone[3][12];
char address[20];
int groupid;
}fre;

fre *fri=new fre[10010];

//分组信息
typedef struct group{
int id;
char name[20];
}gr;

int now,size;
int se[10010];
gr *group=new gr[25];
//读friend.txt中的内容
void readfriend()
{

FILE *fp=fopen("friend.txt","r");
if(fp==NULL){
printf("\t\t\t***********fail to open friend.txt***********\n");
}
int i;
int n;
now=0;
for(i=0;!feof(fp);i++){
if(fscanf(fp,"%d",&n)==EOF){
break;
}
fri[n].num=n;
if(now<n)
now=n;
// fscanf(fp,"%s%s %d %d %d %s %s %s %d\n",fri[n].name,,&fri[n].year,,,,fri[n].phone[1],fri[n].phone[2],fri[n].address,&fri[n].groupid);
fscanf(fp,"%s",fri[n].name);
fscanf(fp,"%s",fri[n].sex);
fscanf(fp,"%d",&fri[n].year);
fscanf(fp,"%d",&fri[n].month);
fscanf(fp,"%d",&fri[n].day);
fscanf(fp,"%s",fri[n].phone[0]);
fscanf(fp,"%s",fri[n].phone[1]);
fscanf(fp,"%s",fri[n].phone[2]);
fscanf(fp,"%s",fri[n].address);
fscanf(fp,"%d",&fri[n].groupid);
}
size=i;
now=now+1;
fclose(fp);
printf("\t\t\t************read friend.txt success!**************\n");
}

void readgroup()
{
FILE *fp=fopen("group.txt","r");
if(fp==NULL){
printf("\t\t\t***********fail to open group.txt***********\n");
}
int i;
while(!feof(fp)){

if(fscanf(fp,"%d",&i)==EOF){
break;
}
group[i].id=i;
fscanf(fp,"%s",group[i].name);
}
fclose(fp);
printf("\t\t\t************read group.txt success!**************\n");
}


void print(fre f)//输出格式
{
/* printf("%4d%20s %4c%5d%6d%5d%12s%12s%12s%20s%4d\n",fri[i].num,fri[i].name,fri[i].sex,fri[i].year,
fri[i].month,fri[i].day,fri[i].phone[0],fri[i].phone[1],fri[i].phone[2],fri[i].address,
fri[i].groupid);
*/
printf("%4d",f.num);
printf("%24s",f.name);
if(f.sex[0]!=‘o‘){
printf("%4s",f.sex);
}
else{
printf("%4s"," ");
}
if(f.year==0&&f.month==0&&f.day==0){
printf("%5s%6s%5s"," "," "," ");
}
else{
printf("%5d%6d%5d",f.year,f.month,f.day);
}
for(int i=0;i<3;i++){
if(f.phone[i][0]!=‘0‘)
printf("%12s",f.phone[i]);
else{
printf("%12s"," ");
}
}
printf("%20s%4d%20s\n",f.address,f.groupid,group[f.groupid].name);

}

void print2(gr g){
printf("%4d%20s\n",g.id,g.name);
}
void begin()
{
//cout<<"input i for insert,s for select,d for delete,u for update,p for display:"<<endl;
printf("\t\t\t************i for insert function!************\n");
printf("\t\t\t************s for select function!************\n");
printf("\t\t\t************d for delete function!************\n");
printf("\t\t\t************u for update function!************\n");
printf("\t\t\t************p for display function!************\n");
printf("\t\t\t************e for exit the system!************\n");
}

void insert(fre &f)
{
printf("\t\t**********insert begin!***********\n");
f.num=now;
printf("please input name:\n");
cin>>f.name;
printf("please input sex 男,女 and o for no:\n"); //g gor girl,b for boy,o for no
cin>>f.sex;
printf("please input birthday as yyyy-mm-dd and 0 0 0 for no:\n");
scanf("%d-%d-%d",&f.year,&f.month,&f.day);
int n;
for(int i=0;i<3;i++){
f.phone[i][0]=‘0‘;
}
cout<<"how many phone you want to save:"<<endl;
cin>>n;
for(int i=0;i<n;i++){
printf("please input phone:\n");
scanf("%s",f.phone[i]);
}
printf("please input address :\n");
scanf("%s",f.address);
printf("please input group id if no this please create:\n");
cin>>f.groupid;
if(group[f.groupid].name[0]==‘\0‘){
cout<<"please create group name:"<<endl;
group[f.groupid].id=f.groupid;
scanf("%s",group[f.groupid].name);
cout<<group[f.groupid].name<<" created!"<<endl;
}
now++;
size++;
}

//展示所有内容
void display()
{
printf("\t\t\t************display all**************\n");
if(size>0){
printf("%4s%20s%4s%5s%6s%5s%12s%12s%12s%20s%4s%20s\n","num","\tname","sex","year","month","day","phone1",
"phone2","phone3","address","id","groupname");
for(int i=0;i<now;i++){
if(fri[i].num!=-1)
print(fri[i]);
}
}
printf("%10s%20s\n","groupid","groupname");
for(int i=0;i<25;i++){
if(group[i].name[0]!=‘\0‘){
print2(group[i]);
}
}
}

void select()
{
printf("\t\t\t***********update begin!*************\n");
int n;
cout<<"please input how you want to select:"<<endl;
cout<<"1 for num,2 for name,3 for sex,4 for birthday"<<endl;
cout<<"5 for phone,6 for address,7 for group id,8 for group name"<<endl;
cout<<"0 for end selece!"<<endl;
for(int i=0;i<now;i++){
se[i]=i;
}
int i,s,j;
s=now;
while(cin>>n){
switch(n){
case 0:
if(s!=0){
printf("%4s%20s%4s%5s%6s%5s%12s%12s%12s%20s%4s%20s\n","num","\tname","sex","year","month","day","phone1",
"phone2","phone3","address","id","groupname");
for(int i=0;i<s;i++){
print(fri[se[i]]);
}
}
return;
case 1:
int nu;
cout<<"please input num:"<<endl;
cin>>nu;
if(nu<now&&fri[nu].num!=-1){
printf("%4s%20s%4s%5s%6s%5s%12s%12s%12s%20s%4s%20s\n","num","\tname","sex","year","month","day","phone1",
"phone2","phone3","address","id","groupname");
print(fri[nu]);
}
else{
cout<<"there is no that match you!"<<endl;
}
return;
case 2:
j=0;
cout<<"please input name:"<<endl;
char na[20];
cin>>na;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].name,na)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 3:
j=0;
cout<<"please input sex:"<<endl;
char c[4];
cin>>c;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].sex,c)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 4:
j=0;
cout<<"please input birthday:"<<endl;
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
for(int i=0;i<s;i++){
if(fri[se[i]].year==y&&fri[se[i]].month==m&&fri[se[i]].day==d){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 5:
j=0;
cout<<"please input phone:"<<endl;
char p[12];
cin>>p;
for(int i=0;i<s;i++){
for(int k=0;k<3;k++){
if(strcmp(p,fri[se[i]].phone[k])==0)
{
se[j++]=se[i];
break;
}
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 6:
j=0;
cout<<"please input address:"<<endl;
char a[20];
cin>>a;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].address,a)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 7:
j=0;
cout<<"please input group id:"<<endl;
int b;
cin>>b;
for(int i=0;i<s;i++){
if(fri[se[i]].groupid==b){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 8:
j=0;
cout<<"please input group name:"<<endl;
char nm[20];
cin>>nm;
int mo;
mo=-1;
for(int i=0;i<25;i++){
if(strcmp(group[i].name,nm)==0)
{
mo=i;
break;
}
}
if(mo==-1){
cout<<"no this group name!"<<endl;
return;
}
else{
for(int i=0;i<s;i++){
if(mo==fri[se[i]].groupid)
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
default:
cout<<"input error please retry"<<endl;
}
}
}

//怎么改变friend
void modify(fre &f)
{
int n;
cout<<"please select which you want to update:"<<endl;
cout<<"2 for name,3 for sex,4 for birthday"<<endl;
cout<<"5 for phone,6 for address,7 for group id,8 for group name"<<endl;
cin>>n;
switch(n){
case 2:
cout<<"please input update name:"<<endl;
char na[20];
cin>>na;
strcpy(f.name,na);
break;
case 3:
cout<<"please input update sex:"<<endl;
char c[4];
cin>>c;
strcpy(f.sex,c);
break;
case 4:
cout<<"please input update birthday:"<<endl;
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
f.year=y;
f.day=d;
f.month=m;
break;
case 5:
cout<<"please input update phone:"<<endl;
char p[12];
cin>>p;
strcpy(f.phone[0],p);
break;
case 6:
cout<<"please input update address:"<<endl;
char a[20];
cin>>a;
strcpy(f.address,a);
break;
case 7:
cout<<"please input update group id:"<<endl;
int b;
cin>>b;
f.groupid=b;
break;
case 8:
cout<<"please input update group name:"<<endl;
char nm[20];
cin>>nm;
strcpy(group[f.groupid].name,nm);
break;
default:
cout<<"input error please retry"<<endl;
break;
}

}

void update()
{
printf("\t\t\t***************update begin!*************\n");
int n;
cout<<"please first select which you want to update :"<<endl;
cout<<"1 for num,2 for name,3 for sex,4 for birthday"<<endl;
cout<<"5 for phone,6 for address,7 for group id,8 for group name"<<endl;
cout<<"0 for end selece and delete begin!"<<endl;
for(int i=0;i<now;i++){
se[i]=i;
}
int i,s,j;
s=now;
while(cin>>n){
switch(n){
case 0:
if(s!=0){
for(int i=0;i<s;i++){
modify(fri[se[i]]);
}
}
return;
case 1:
int nu;
cout<<"please input num:"<<endl;
cin>>nu;
if(nu<now&&fri[nu].num!=-1){
modify(fri[nu]);
}
else{
cout<<"there is no that match you!"<<endl;
}
return;
case 2:
j=0;
cout<<"please input name:"<<endl;
char na[20];
cin>>na;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].name,na)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 3:
j=0;
cout<<"please input sex:"<<endl;
char c[4];
cin>>c;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].sex,c)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 4:
j=0;
cout<<"please input birthday:"<<endl;
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
for(int i=0;i<s;i++){
if(fri[se[i]].year==y&&fri[se[i]].month==m&&fri[se[i]].day==d){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 5:
j=0;
cout<<"please input phone:"<<endl;
char p[12];
cin>>p;
for(int i=0;i<s;i++){
for(int k=0;k<3;k++){
if(strcmp(fri[se[i]].phone[k],p)==0)
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 6:
j=0;
cout<<"please input address:"<<endl;
char a[20];
cin>>a;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].address,a)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 7:
j=0;
cout<<"please input group id:"<<endl;
int b;
cin>>b;
for(int i=0;i<s;i++){
if(fri[se[i]].groupid==b){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 8:
j=0;
cout<<"please input group name:"<<endl;
char nm[20];
cin>>nm;
int mo;
mo=-1;
for(int i=0;i<25;i++){
if(strcmp(group[i].name,nm)==0)
{
mo=i;
break;
}
}
if(mo==-1){
cout<<"no this group name!"<<endl;
return;
}
else{
for(int i=0;i<s;i++){
if(mo==fri[se[i]].groupid)
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
default:
cout<<"input error please retry"<<endl;
break;
}
}
}

void dele()
{
printf("\t\t\t***********delete begin!************\n");
int n;
cout<<"please input how you want to delete by:"<<endl;
cout<<"1 for num,2 for name,3 for sex,4 for birthday"<<endl;
cout<<"5 for phone,6 for address,7 for group id,8 for group name"<<endl;
cout<<"0 for end selece and delete begin!"<<endl;
for(int i=0;i<now;i++){
se[i]=i;
}
int i,s,j;
s=now;
while(cin>>n){
switch(n){
case 0:
if(s!=0){
size-=s;
printf("%4s%20s%4s%5s%6s%5s%12s%12s%12s%20s%4s%20s\n","num","\tname","sex","year","month","day","phone1",
"phone2","phone3","address","id","groupname");
for(int i=0;i<s;i++){
fri[se[i]].num=-1;
strcpy(fri[se[i]].name,"\0");
fri[se[i]].sex[0]=‘o‘;
fri[se[i]].year=0;
fri[se[i]].month=0;
fri[se[i]].day=0;
for(int j=0;j<3;j++){
fri[se[i]].phone[j][0]=‘0‘;
}
strcmp(fri[se[i]].address,"\0");
fri[se[i]].groupid=-1;
}
}
return;
case 1:
int nu;
cout<<"please input num:"<<endl;
cin>>nu;
if(nu<now&&fri[nu].num!=-1){
fri[nu].num=-1;
strcpy(fri[nu].name,"\0");
fri[nu].sex[0]=‘o‘;
fri[nu].year=0;
fri[nu].month=0;
fri[nu].day=0;
for(int i=0;i<3;i++){
fri[se[i]].phone[i][0]=‘0‘;
}
strcmp(fri[nu].address,"\0");
fri[nu].groupid=-1;
size--;
}
else{
cout<<"there is no that match you!"<<endl;
}
return;
case 2:
j=0;
cout<<"please input name:"<<endl;
char na[20];
cin>>na;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].name,na)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 3:
j=0;
cout<<"please input sex:"<<endl;
char c[4];
cin>>c;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].sex,c)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 4:
j=0;
cout<<"please input birthday:"<<endl;
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
for(int i=0;i<s;i++){
if(fri[se[i]].year==y&&fri[se[i]].month==m&&fri[se[i]].day==d){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 5:
j=0;
cout<<"please input phone:"<<endl;
char p[12];
cin>>p;
for(int i=0;i<s;i++){
for(int k=0;k<3;k++){
if(strcmp(fri[se[i]].phone[k],p)==0)
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 6:
j=0;
cout<<"please input address:"<<endl;
char a[20];
cin>>a;
for(int i=0;i<s;i++){
if(strcmp(fri[se[i]].address,a)==0){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 7:
j=0;
cout<<"please input group id:"<<endl;
int b;
cin>>b;
for(int i=0;i<s;i++){
if(fri[se[i]].groupid==b){
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
case 8:
j=0;
cout<<"please input group name:"<<endl;
char nm[20];
cin>>nm;
int mo;
mo=-1;
for(int i=0;i<25;i++){
if(strcmp(group[i].name,nm)==0)
{
mo=i;
break;
}
}
if(mo==-1){
cout<<"no this group name!"<<endl;
return;
}
else{
for(int i=0;i<s;i++){
if(mo==fri[se[i]].groupid)
se[j++]=se[i];
}
}
s=j;
if(j==0){
cout<<"there is no that match you!"<<endl;
}
break;
default:
cout<<"input error please retry"<<endl;
break;
}
}
}
void save()
{
FILE *fp=fopen("friend.txt","w");
if(fp==NULL){
printf("打开friend.txt不成功!\n");
}
for(int i=0;i<now;i++)
{
if(fri[i].num!=-1)
{
fprintf(fp,"%d %s %s %d %d %d %s %s %s %s %d\n",fri[i].num,fri[i].name,fri[i].sex,fri[i].year,fri[i].month,fri[i].day,fri[i].phone[0],
fri[i].phone[1],fri[i].phone[2],fri[i].address,fri[i].groupid);
}
}
fclose(fp);
FILE *f=fopen("group.txt","w");
if(fp==NULL){
printf("打开group.txt不成功!\n");
}
for(int i=0;i<25;i++){
if(group[i].name[0]!=‘\0‘){
fprintf(f,"%d %s\n",group[i].id,group[i].name);
}
}
fclose(f);
printf("\t\t\t*********谢谢使用*********\n");
}

int main()
{
printf("\t\t\t**************system begin!************\n");
char o;
int sta=1;
for(int i=0;i<25;i++)
{
group[i].name[0]=‘\0‘;
}
readfriend();
readgroup();
// freopen("in.txt","r",stdin);
begin();
while(cin>>o){
switch(o){
case ‘p‘:
display();
break;
case ‘i‘:

insert(fri[now]);//如果没有该groupid则创建此id的name
break;
case ‘s‘:
select();
break;
case ‘d‘:
dele();
break;
case ‘u‘:
update();
break;
case ‘e‘:
save();
return 0;
default:
cout<<"input error please try again:"<<endl;
break;
}
begin();
}
return 0;
}

通讯录管理系统

标签:

原文地址:http://www.cnblogs.com/tannian/p/4312127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!