通讯录

  1 #include<iostream>
  2 using namespace std;
  3 //mine查看别人并修改自己的相关参数姓名、电话、增加自己或删除自己;
  4 //先登录自己的,才能进行对通讯录的相关操作;
  5 //adm删除任何人、增加任何人、修改任何人
  6 class base
  7 {
  8 public:
  9     base(char n[] = "",char p[] = "")
 10     {
 11         strcpy(name,n);
 12         strcpy(phone,p);
 13     }
 14     ~base(){}
 15     void setn(char n[])
 16     {
 17         strcpy(name,n);
 18     }
 19     void setp(char p[])
 20     {
 21         strcpy(phone,p);
 22     }
 23     char * putn()
 24     {
 25         return name;
 26     }
 27     char * putp()
 28     {
 29         return phone;
 30     }
 31     void print()
 32     {
 33         cout << "name: " << name << " phone: " << phone <<endl;
 34     }
 35 private:
 36     char name[10];
 37     char phone[15];
 38 };
 39 class mine : public base
 40 {
 41 public:
 42     mine(char n[]="",char p[]="",int ff = -1,int a= 0):base(n,p)
 43     {
 44         f = ff;
 45         all = a;
 46     }
 47     ~mine(){}
 48     void set( base a[])
 49     {
 50         int i;
 51         for(i = 0;strlen(a[i].putn()) != 0;i ++ )
 52         {
 53             if(strcmp(a[i].putn(),this->putn())==0)
 54                 f = i;
 55             tong[i]=a[i];
 56         }
 57         all = i;//所有人
 58         //tong[all-1].print();
 59     }
 60     void setf(int i)
 61     {
 62         f=i;
 63     }
 64     int putf()
 65     {
 66         return f;
 67     }
 68     void addi()//增加自己
 69     {
 70         if(f != -1)
 71             cout << "已存在!" << endl;
 72         else 
 73         {
 74             tong[all].setn(this->putn());
 75             tong[all].setp(this->putp());
 76             f = all;
 77             all++;
 78             cout << "ok!" << endl;
 79         }
 80     }
 81     void deli()
 82     {
 83         int i;
 84         if(f==-1)
 85             cout << "非法操作" <<endl;
 86         else
 87         {
 88             for(i=f;i<all;i++)
 89                 tong[i]= tong[i+1];
 90             all=all-1;
 91             f= -1;
 92         }
 93     }
 94     //输出要查的人的记录;
 95     void putone(char n[])
 96     {
 97         int i;
 98         for(i=0;i<all;i++)
 99         {
100             if(strcmp(n,tong[i].putn())==0)
101             {
102                 tong[i].print();
103                 break;
104             }
105         }
106         if (i==all)
107             cout << "查无此人!" << endl;
108     }
109     //当已存在数组中时,修改参数
110     virtual void change(int a,char b[])
111     {
112         if(f ==-1)
113         {
114             cout << "非法操作!" << endl;
115         }
116         else
117         {
118             if(a==1)
119                 tong[f].setn(b);
120             else
121                 tong[f].setp(b);
122         }
123     }
124     //输出所有;
125     void printall()
126     {
127         int i;
128         for(i=0;i<all;i++)
129             tong[i].print();
130     }
131     //将操作结果反回;
132     void re(base a[])
133     {
134         int i;
135         for(i=0;i<all;i++)
136             a[i]=tong[i];
137     }
138 private:
139     base tong[100];
140     int f;//此人位置,无为-1;
141     int all;
142 };
143 class adm:public mine
144 {
145 public:
146     adm(char n[]="",char p[]="",int ff = -1,int a= 0):mine(n,p,ff,a)
147     {
148         all = a;
149     }
150     ~adm(){}
151     void set( base a[])
152     {
153         int i;
154         for(i = 0;strlen(a[i].putn()) != 0;i ++ )
155             tong[i]=a[i];
156         all = i;//所有人
157     }
158     void printall()
159     {
160         int i;
161         for(i=0;i<all;i++)
162             tong[i].print();
163     }
164     void change(int a,char b[],char bb[])
165     {
166         int i;
167         switch(a)
168         {
169         case 1 :
170             for(i=0;i<all;i++)
171             {
172                 if(strcmp(b,tong[i].putn())==0)
173                 {
174                     tong[i].setn(bb);
175                     break;
176                 }
177             }
178             break;
179         case 2 :
180             for(i=0;i<all;i++)
181             {
182                 if(strcmp(b,tong[i].putp())==0)
183                 {
184                     tong[i].setp(bb);
185                     break;
186                 }
187             }
188             break;
189         }
190     }
191     void add(base c)
192     {
193         tong[all] = c;
194         all+=1;
195     }
196     //删除一个人
197     void del(char n[])
198     {
199         int i;
200         for(i=0;i<all;i++)
201         {
202             if(strcmp(tong[i].putn(),n)==0)
203             {
204                 for(;i<all-1;i++)
205                     tong[i]= tong[i+1];
206                 all=all-1;
207                 break;
208             }
209         }
210     }
211 private:
212     base tong[100];
213     int all;
214 };
215 void main()
216 {
217     base a[7] = {
218         base("1","12"),
219         base("2","23"),
220         base("3","34"),
221         base("4","45"),
222         base("5","56")};
223     mine b("1","12");
224     mine c("7","78");
225     adm d("1","2");
226     b.set(a);
227     b.printall();
228     b.putone("2");
229     b.change(1,"6");
230     b.printall();
231     b.re(a);
232     c.set(a);
233     c.printall();
234     c.deli();
235     c.addi();
236     c.printall();
237     c.re(a);
238     d.set(a);
239     d.del("4");
240     d.printall();
241     d.re(a);
242 }

posted on 2013-12-26 17:03  了发发  阅读(208)  评论(0)    收藏  举报

导航