『代码』··By/蜜汁炒酸奶

数组版通讯录-C++

/*
功能:通讯录
日期:2013-09-23
*/
#include <iostream>
#include <string.h>
using namespace std;

typedef struct Address
{
   char name[30];
   int number;

}Address;

void viewMenu();
void Menu();
int insertStudentNode(Address *peop,int n,int m);
void printLinkList(Address *p,int n);
void findAndName(Address *p,char *q,int n);
void findAndTele(Address *p,int n,int m);
void editAndName(Address *p,char *q,int n);
void editAndTele(Address *p,int n,int m);
int main(void)
{
	char chiose,ch,nAme[30];
	int n=10,i=0,num;

	Address *peop = new Address[i] ;
	do
	{

		viewMenu();
		cin >> chiose;
		switch(chiose)
		{
		case  'A':
            cout <<"请输入联系人个数:"<<endl;
			cin>>n;
			i +=n;
			insertStudentNode(peop,n,i);
			break;
			fflush(stdin);
		case 'F':
			{
				Menu();
				cin>>ch;
				switch(ch)
				{
				case 'N':
					cout <<"请输入要查的姓名:"<<endl;
					cin>>nAme;
                      findAndName(peop,nAme,i);
					  break;
				case 'T':
					cout <<"请输入要查的电话:"<<endl;
					cin>>num;
					 findAndTele(peop,num,i);
					 break;
				case'Q':
					break;
					 fflush(stdin);
				}
			}
		case 'M':
			{
				Menu();
				cin>>ch;
				switch(ch)
				{
				case 'N':
					cout <<"请输入要查的姓名::"<<endl;
					cin>>nAme;
					editAndName(peop,nAme,i);
					break;
				case 'T':
					cout <<"请输入要查的电话:"<<endl;
					cin>>num;
					editAndTele(peop,num,i);
					break;
				case'Q':
					break;
					fflush(stdin);
				}
			}
		case 'P':
			printLinkList(peop,i);
			break;
		case 'Q':
			break;
		default:
			break;
		}
      fflush(stdin);
	}while('Q'!=chiose);

    delete[] peop;
	system("pause");
	return 0;
}

/************************************************************************
函数名:viewMenu()
功能:显示菜单--提示用户选择哪种操作
参数:无
返回值:无
************************************************************************/
void viewMenu()
{
	cout<<"             欢迎使用通讯录系统                     "<<endl;
	cout<<"-----------------------------------------------------"<<endl;
	cout<<"       添加请按:A       修改请按:Mn"<<endl;
	cout<<"       查询请按:F       浏览请按:P n"<<endl;
	cout<<"       退出请按:Q n"                   <<endl;
	cout<<"-----------------------------------------------------"<<endl;
	cout<<" 请选择您的操作:"<<endl;

}
/************************************************************************
函数名:Menu()
功能:显示内部菜单--提示用户选择哪种操作
参数:无
返回值:无
************************************************************************/
void Menu()
{
	cout<<"             欢迎使用通讯录系统                     "<<endl;
	cout<<"-----------------------------------------------------"<<endl;
	cout<<"       按姓名:N       按电话:Tn"<<endl;
	cout<<"       退出请按:Q n"                   <<endl;
	cout<<"-----------------------------------------------------"<<endl;
	cout<<" 请选择您的操作:"<<endl;
}
/************************************************************************
函数名:insertStudentNode(StudentNode *aHead)
功能:插入成绩
参数:Address *peop 首地址
      int n       输入的个数
	  int m       总个数
返回值:0。
************************************************************************/
int insertStudentNode(Address *peop,int n,int m)
{
	int i;

    cout <<"请输入联系人姓名及电话:"<<endl;
	if (n==m)
	{
		for (i=0;i<n;i++)
		{
			cin >>peop[i].name;
			cin >>peop[i].number;

		}
	}
	else
	{
		for (i=m-n;i<m;i++)
		{
			cin >>peop[i].name;
			cin >>peop[i].number;

		}
	}

	return 0;
}
/************************************************************************
函数名:printLinkList
功能:输出所有信息
参数:Address *p 首地址
      int m      总数
返回值:无
************************************************************************/
void printLinkList(Address *p,int m)
{
     int i;
	 for (i=0;i<m;i++)
	 {
		 cout<<p[i].name<<" "<<p[i].number<<endl;
	 }
}
/************************************************************************
函数名:findAndName
功能:按姓名查询
参数:Address *p 首地址
      char *q    要查的姓名
	  int n      总数
返回值:0
************************************************************************/
void findAndName(Address *p,char *q,int n)
{
	int i=0;
    for (i=0;i<n;i++)
    {
		if (strcmp(q,p[i].name)==0)
		{
			cout<<"找到了!姓名及电话为:"<<endl;
			cout<<p[i].name<<" "<<p[i].number<<endl;
		}
    }

}

/************************************************************************
函数名:findAndTele
功能:按电话查询
参数:Address *p 首地址
      int n      要查的电话
	  int m      总个数
返回值:0
************************************************************************/
void findAndTele(Address *p,int n,int m)
{
	int i=0;
	for (i=0;i<n;i++)
	{
		if (n==p[i].number)
		{
			cout<<"找到了!姓名及电话为:"<<endl;
			cout<<p[i].name<<" "<<p[i].number<<endl;
		}
	}

}
/************************************************************************
函数名:editAndName
功能:按姓名修改
参数:Address *p 首地址
      char *q    要修改的姓名
      int n      总数
返回值:0
************************************************************************/
void editAndName(Address *p,char *q,int n)
{
	int i=0;
	for (i=0;i<n;i++)
	{
		if (strcmp(q,p[i].name)==0)
		{
			cout<<"请输入新数据,姓名及电话为:"<<endl;
			cin>>p[i].name;
			cin>>p[i].number;
		}
	}
}
/************************************************************************
函数名:editAndTele
功能:按电话修改
参数:Address *p 首地址
      int n      要修改的电话
      int m      总个数
返回值:0
************************************************************************/
void editAndTele(Address *p,int n,int m)
{
	int i=0;
	for (i=0;i<n;i++)
	{
		if (n==p[i].number)
		{
			cout<<"请输入新数据,姓名及电话为:"<<endl;
			cin>>p[i].name;
			cin>>p[i].number;
		}
	}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268

预览
Loading comments...
4 条评论
  • W

    数组操作方便些,直接对文件进行操作难度大一点。

    • W

      回复 @vfhky: 恩,有得必有失嘛,想两全其美太难了

  • W

    晚上好,陌生人

example
预览