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 }
![]()