main.c文件
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
|
#include "myFunction.h"
//系統開關,默認爲1.當賦值爲0則系統推出
int
flag
=
1
;
int
main
(
)
{
//初始化系統自帶的10條學生信息數據
initData
(
)
;
while
(
flag
)
{
//接收用戶輸入選項
int
userSelect
=
enterChoice
(
)
;
//根據用戶輸入選項調用不一樣功能的函數
switch
(
userSelect
)
{
case
1
:
query
(
)
;
break
;
case
2
:
add
(
)
;
break
;
case
3
:
modify
(
)
;
break
;
case
4
:
delete
(
)
;
break
;
case
5
:
flag
=
0
;
break
;
default
:
printf
(
"輸入有誤\n"
)
;
break
;
}
//刷新控制檯
system
(
"clear"
)
;
}
return
0
;
}
|
myFunction.h文件
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
|
#ifndef myFunction_c
#define myFunction_c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//初始化學生結構體數組
void
initData
(
)
;
//接收用戶輸入
int
enterChoice
(
)
;
//-------查詢類的函數-----------
//查詢全部信息
void
queryAll
(
)
;
//根據編號查詢
void
queryById
(
)
;
//根據名字查詢
void
queryByName
(
)
;
//根據性別查詢
void
queryByGender
(
)
;
//根據分數段查詢
void
queryByScore
(
)
;
//根據年齡段查詢
void
queryByAge
(
)
;
//顯示查詢目錄
int
showQueryMenu
(
)
;
//1、查詢功能函數
void
query
(
)
;
//2、新增功能函數
void
add
(
)
;
//3、修改功能函數
void
modify
(
)
;
//4、刪除功能函數
void
delete
(
)
;
#endif /* myFunction_c */
|
myFunction.c文件
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
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
|
#include "myFunction.h"
//學生性別枚舉類型
typedef
enum
{
man
,
women
}
Sex
;
//學生信息結構體
struct
Student
{
int
no
;
char
name
[
20
]
;
Sex
gender
;
int
age
;
int
score
;
}
;
//默認存儲學生信息的數組長度
int
length
=
10
;
//如今已經使用的長度
int
count
=
10
;
//聲明一個struct Student類型全局指針變量,用於指向學生數組
struct
Student
*students
;
/**
初始化學生結構體數組
1.在堆內存申請10個struct Student類型大小的空間,組成一個數組
2.數組長度是10表明10個學生,數組中每一個元素都是一個struct Student類型的變量
3.併爲10個學生賦值各類信息
*/
void
initData
(
)
{
//在堆區劃分10個struct Student類型大小的空間建立數組存儲學生信息
students
=
calloc
(
10
,
sizeof
(
struct
Student
)
)
;
//初始化10個學生的信息
students
[
0
]
.
no
=
0
;
strcpy
(
students
[
0
]
.
name
,
"jack"
)
;
students
[
0
]
.
gender
=
1
;
students
[
0
]
.
score
=
100
;
students
[
0
]
.
age
=
18
;
students
[
1
]
.
no
=
1
;
strcpy
(
students
[
1
]
.
name
,
"rose"
)
;
students
[
1
]
.
gender
=
0
;
students
[
1
]
.
score
=
99
;
students
[
1
]
.
age
=
20
;
students
[
2
]
.
no
=
2
;
strcpy
(
students
[
2
]
.
name
,
"luse"
)
;
students
[
2
]
.
gender
=
0
;
students
[
2
]
.
score
=
79
;
students
[
2
]
.
age
=
16
;
students
[
3
]
.
no
=
3
;
strcpy
(
students
[
3
]
.
name
,
"mark"
)
;
students
[
3
]
.
gender
=
1
;
students
[
3
]
.
score
=
96
;
students
[
3
]
.
age
=
19
;
students
[
4
]
.
no
=
4
;
strcpy
(
students
[
4
]
.
name
,
"luomi"
)
;
students
[
4
]
.
gender
=
0
;
students
[
4
]
.
score
=
93
;
students
[
4
]
.
age
=
20
;
students
[
5
]
.
no
=
5
;
strcpy
(
students
[
5
]
.
name
,
"mack"
)
;
students
[
5
]
.
gender
=
0
;
students
[
5
]
.
score
=
54
;
students
[
5
]
.
age
=
18
;
students
[
6
]
.
no
=
6
;
strcpy
(
students
[
6
]
.
name
,
"weike"
)
;
students
[
6
]
.
gender
=
1
;
students
[
6
]
.
score
=
88
;
students
[
6
]
.
age
=
15
;
students
[
7
]
.
no
=
7
;
strcpy
(
students
[
7
]
.
name
,
"wang"
)
;
students
[
7
]
.
gender
=
0
;
students
[
7
]
.
score
=
90
;
students
[
7
]
.
age
=
17
;
students
[
8
]
.
no
=
8
;
strcpy
(
students
[
8
]
.
name
,
"zhou"
)
;
students
[
8
]
.
gender
=
1
;
students
[
8
]
.
score
=
88
;
students
[
8
]
.
age
=
18
;
students
[
9
]
.
no
=
9
;
strcpy
(
students
[
9
]
.
name
,
"meili"
)
;
students
[
9
]
.
gender
=
0
;
students
[
9
]
.
score
=
98
;
students
[
9
]
.
age
=
19
;
}
/**
* 接收用戶輸入選項
*
* @return 返回輸入選項給調用者
*/
int
enterChoice
(
)
{
printf
(
"****************\n"
)
;
printf
(
"*歡迎使用學生管理 *\n"
)
;
printf
(
"* 1.查詢學生 *\n"
)
;
printf
(
"* 2.新增學生 *\n"
)
;
printf
(
"* 3.修改學生 *\n"
)
;
printf
(
"* 4.刪除學生 *\n"
)
;
printf
(
"* 5.退出系統 *\n"
)
;
printf
(
"****************\n"
)
;
int
userSelect
=
0
;
printf
(
"請選擇功能:"
)
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
userSelect
)
;
return
userSelect
;
}
/**
* 停頓查詢信息顯示,讓用戶輸入任意字符後繼續執行後面代碼
*/
void
showTiShi
(
)
{
printf
(
"按任意鍵繼續!\n"
)
;
rewind
(
stdin
)
;
getchar
(
)
;
}
//-------查詢類的函數-----------
/**
* 查詢全部信息
*/
void
queryAll
(
)
{
printf
(
"編號 \t姓名\t 性別\t 年齡\t 分數\n"
)
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
printf
(
"%d\t %s\t %s\t %d\t %d\n"
,
students
[
i
]
.
no
,
students
[
i
]
.
name
,
students
[
i
]
.
gender
==
0
?
"男"
:
"女"
,
students
[
i
]
.
age
,
students
[
i
]
.
score
)
;
}
showTiShi
(
)
;
}
/**
* 根據編號查詢
*/
void
queryById
(
)
{
printf
(
"請輸入編號:"
)
;
int
no
=
0
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
no
)
;
printf
(
"編號 \t姓名\t 性別\t 年齡\t 分數\n"
)
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
no
==
students
[
i
]
.
no
)
{
printf
(
"%d\t%s\t%s\t%d\t%d\n"
,
students
[
i
]
.
no
,
students
[
i
]
.
name
,
students
[
i
]
.
gender
==
0
?
"男"
:
"女"
,
students
[
i
]
.
age
,
students
[
i
]
.
score
)
;
}
}
showTiShi
(
)
;
}
/**
* 根據名字查詢
*/
void
queryByName
(
)
{
printf
(
"輸入姓名:"
)
;
char
name
[
20
]
;
rewind
(
stdin
)
;
fgets
(
name
,
20
,
stdin
)
;
unsigned
long
len
=
strlen
(
name
)
;
if
(
name
[
len
-
1
]
==
'\n'
)
{
name
[
len
-
1
]
=
'\0'
;
}
printf
(
"編號 \t姓名\t 性別\t 年齡\t 分數\n"
)
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
strcmp
(
name
,
students
[
i
]
.
name
)
==
0
)
{
printf
(
"%d\t%s\t%s\t%d\t%d\n"
,
students
[
i
]
.
no
,
students
[
i
]
.
name
,
students
[
i
]
.
gender
==
0
?
"男"
:
"女"
,
students
[
i
]
.
age
,
students
[
i
]
.
score
)
;
}
}
showTiShi
(
)
;
}
/**
* 根據性別查詢
*/
void
queryByGender
(
)
{
printf
(
"請輸入性別: 1.男 0.女"
)
;
int
gender
=
0
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
gender
)
;
printf
(
"編號 \t姓名\t 性別\t 年齡\t 分數\n"
)
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
gender
==
students
[
i
]
.
gender
)
{
printf
(
"%d\t%s\t%s\t%d\t%d\n"
,
students
[
i
]
.
no
,
students
[
i
]
.
name
,
students
[
i
]
.
gender
==
0
?
"男"
:
"女"
,
students
[
i
]
.
age
,
students
[
i
]
.
score
)
;
}
}
showTiShi
(
)
;
}
/**
* 根據分數段查詢
*/
void
queryByScore
(
)
{
printf
(
"請輸入要查詢的最低分數:"
)
;
int
score1
=
0
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
score1
)
;
printf
(
"請輸入要查詢的最高分數:"
)
;
int
score2
=
0
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
score2
)
;
printf
(
"編號 \t姓名\t 性別\t 年齡\t 分數\n"
)
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
students
[
i
]
.
score
>=
score1
&&
students
[
i
]
.
score
<=
score2
)
{
printf
(
"%d\t%s\t%s\t%d\t%d\n"
,
students
[
i
]
.
no
,
students
[
i
]
.
name
,
students
[
i
]
.
gender
==
0
?
"男"
:
"女"
,
students
[
i
]
.
age
,
students
[
i
]
.
score
)
;
}
}
showTiShi
(
)
;
}
/**
* 根據年齡段查詢
*/
void
queryByAge
(
)
{
printf
(
"請輸入要查詢的最小年齡:"
)
;
int
age1
=
0
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
age1
)
;
printf
(
"請輸入要查詢的最大年齡:"
)
;
int
age2
=
0
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
age2
)
;
printf
(
"編號 \t姓名\t 性別\t 年齡\t 分數\n"
)
;
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
students
[
i
]
.
age
>=
age1
&&
students
[
i
]
.
age
<=
age2
)
{
printf
(
"%d\t%s\t%s\t%d\t%d\n"
,
students
[
i
]
.
no
,
students
[
i
]
.
name
,
students
[
i
]
.
gender
==
0
?
"男"
:
"女"
,
students
[
i
]
.
age
,
students
[
i
]
.
score
)
;
}
}
showTiShi
(
)
;
}
/**
* 示查詢目錄,接收用戶輸入選項
*
* @return 返回用戶輸入選項
*/
int
showQueryMenu
(
)
{
printf
(
"****************\n"
)
;
printf
(
"*歡迎使用學生管理 *\n"
)
;
printf
(
"* 1.全部查詢 *\n"
)
;
printf
(
"* 2.編號查詢 *\n"
)
;
printf
(
"* 3.名字查詢 *\n"
)
;
printf
(
"* 4.性別查詢 *\n"
)
;
printf
(
"* 5.分數查詢 *\n"
)
;
printf
(
"* 6.年齡查詢 *\n"
)
;
printf
(
"****************\n"
)
;
printf
(
"請選擇查詢項目:"
)
;
int
userSeclect
=
0
;
rewind
(
stdin
)
;
scanf
(
"%d"
,
&
userSeclect
)
;
return
userSeclect
;
}
/**
* 1、查詢功能
*/
void
query
(
)
{
system
(
"clear"
)
;
//接收查詢命令
int
userSelect
=
showQueryMenu
(
)
;
//判斷查詢選項
switch
(
userSelect
)
{
case
1
:
queryAll
(
)
;
break
;
case
2
:
queryById
(
)
;
break
;
case
3
:
queryByName
(
)
;
break
;
case
4
:
queryByGender
(
)
;
break
;
case
5
:
queryByScore
(
)
;
break
;
case
6
:
queryByAge
(
)
;
break
;
default
:
printf
(
"你輸入有誤!\n"
)
;
break
;
}
}
/**
* 2、新增功能
*/
void
add
(
)
{
//1.建立一個學生結構體變量,將變量存儲到數組之中。
//判斷數組有沒有存滿,存滿則擴容
if
(
length
==
count
)
{
//說明滿了
students
=
realloc
(
students
,
length
+
1
)
;
//修改數組的長度
length
=
length
+
1
;
}
//往數組中存儲數據
struct
Student
stu
;
printf
(
"請輸入新增學生的姓名:"
)
;
scanf
(
"%s"
,
stu
.
name
)
;
printf
(
"請輸入新增學生的年齡:"
)
;
scanf
(
"%d"
,
&
stu
.
age
)
;
printf
(
"請輸入新增學生的性別 0.男 1.女 :"
)
;
scanf
(
"%d"
,
&
stu
.
gender
)
;
printf
(
"請輸入新增學生的成績:"
)
;
scanf
(
"%d"
,
&
stu
.
score
)
;
//新增數據的編碼就是count
stu
.
no
=
count
;
//將學生變量存儲到數組中,count比下標大1
students
[
count
]
=
stu
;
count
++
;
printf
(
"信息已更新...\n"
)
;
showTiShi
(
)
;
}
/**
* 3、修改功能
*/
void
modify
(
)
{
//接收用戶輸入要修改的編號
printf
(
"輸編號:"
)
;
int
no
=
0
;
rewind
(
stdin
)
;
|