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

addresslist

时间:2015-03-04 00:52:19      阅读:132      评论: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;
}
View Code

 

addresslist

标签:

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

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