说明:
本系统基于C语言实现班级通讯录管理系统,为小伙伴学习C语言刚入门所做的课程设计。功能包括增、删、查、改等,非常适合初学者练手。通讯录包括的个人信息有姓名、学号、性别、籍贯、政治面貌、手机号、QQ号、宿舍等。主要用到了指针、结构体、遍历链表、文件读取等知识点。
没有开发工具的小伙伴可以找我获取!
运行效果:
代码:
1#include
2#include
3#include
4 #include<windows.h>
5 typedef struct student //定义结构体
6 {
7 char name[20]; //姓名
8 char num[15]; //学号
9 char sex[10]; //性别
10 char from[20]; //籍贯
11 char political[10]; //政治面貌
12 char phone[15]; //手机号
13 char QQ[15]; //QQ号
14 char dorm[10]; //宿舍
15 struct student *next; //结构体指针
16 }stu;
17 stu *head;
18
19 void print() //主菜单
20 {
21 system("cls");
22 printf("nnn");
23 printf(" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n");
24 printf(" ***********************************************************n");
25 printf(" ttt班级通讯录管理系统n");
26 printf("n");
27 printf(" tt1. 输入数据");
28 printf("tt2. 显示数据n");
29 printf(" tt3. 插入数据");
30 printf("tt4. 删除数据n");
31 printf(" tt5. 查看数据");
32 printf("tt6. 修改数据n");
33 printf(" tt7. 保存数据");
34 printf("tt8. 返回主菜单n");
35 printf(" ***********************************************************n");
36 printf(" ~~~~~退~~~~~~~~~~出~~~~~~~~~~请~~~~~~~~~~按~~~~~~~~~~9~~~~~n");
37 printf(" -----------------------------------------------------------nn");
38 }
39
40
41 void input(stu *p1) //输入相关数据
42 {
43 printf("姓名:");
44 scanf("%s",&p1->name);
45 printf("学号:");
46 scanf("%s",&p1->num);
47 printf("性别:");
48 scanf("%s",&p1->sex);
49 printf("籍贯:");
50 scanf("%s",&p1->from);
51 printf("政治面貌:");
52 scanf("%s",&p1->political);
53 printf("手机号:");
54 scanf("%s",&p1->phone);
55 printf("QQ号:");
56 scanf("%s",&p1->QQ);
57 printf("宿舍:");
58 scanf("%s",&p1->dorm);
59 }
60
61
62 stu * inputdata() //数据输入的函数
63 {
64 stu *p1,*p2;
65 int i=1;
66 p1=(stu *)malloc(sizeof(stu));
67 if(p1!=NULL)
68 {
69 head=p1;
70 printf("nttt☆☆☆输入数据☆☆☆n");
71 printf("------------------------------------------------------------------n");
72 printf("在姓名处输入“ok”代表输入数据结束n");
73 while(i)
74 {
75 printf("姓名:");
76 scanf("%s",&p1->name);
77 if(strcmp(p1->name,"ok")==0)
78 {
79 printf("n输入完毕!n");
80 printf("========================================================================n");
81 i=0;
82 p2->next=NULL;
83 free(p1);
84 p1=p2;
85 }
86 else
87 {
88 printf("学号:");
89 scanf("%s",&p1->num);
90 printf("性别:");
91 scanf("%s",&p1->sex);
92 printf("籍贯:");
93 scanf("%s",&p1->from);
94 printf("政治面貌:");
95 scanf("%s",&p1->political);
96 printf("手机号:");
97 scanf("%s",&p1->phone);
98 printf("QQ号:");
99 scanf("%s",&p1->QQ);
100 printf("宿舍:");
101 scanf("%s",&p1->dorm);
102 printf("=====================================n");
103 p2=p1;
104 p1=(stu *)malloc(sizeof(stu));
105 if(p1!=NULL)
106 {
107 p2->next=p1;
108 }
109 }
110 }
111 return(p1->next);
112 }
113 }
114
115
116 stu * lookdata(stu *p1) //查看数据的函数
117 {
118 printf("nttt☆☆☆显示数据☆☆☆n");
119 printf("----------------------------------------------------------------------n");
120 while(p1!=NULL)
121 {
122 printf("姓名:%sn",p1->name);
123 printf("学号:%st",p1->num);
124 printf("性别:%st",p1->sex);
125 printf("籍贯:%st",p1->from);
126 printf("政治面貌:%st",p1->political);
127 printf("手机号:%st",p1->phone);
128 printf("QQ号:%st",p1->QQ);
129 printf("宿舍:%sn",p1->dorm);
130 printf("======================================================================n");
131 p1=p1->next;
132 }
133 return p1;
134 }
135
136
137 void insert() //插入数据
138 {
139 int i;
140 char named[20];
141 stu *p1,*p2,*p3;
142 p1=head;
143 p3=(stu *)malloc(sizeof(stu));
144 p3->next=NULL;
145 printf("nttt☆☆☆插入数据☆☆☆n");
146 printf("----------------------------------------------------------------------n");
147 printf("请输入插入者的资料:n");
148 input(p3);
149 printf("n插入选项n");
150 printf("1.首位置插入t2.尾位置插入t3.前插n");
151 printf("请输入你的选择:");
152 scanf("%d",&i);
153 switch(i)
154 {
155 case 1:p3->next=p1;
156 head=p3;
157 break;
158 case 2:while(p1->next!=NULL)
159 {
160 p2=p1;
161 p1=p1->next;
162 }
163 p1->next=p3;
164 break;
165 case 3:printf("请输入姓名(前插):");
166 scanf("%s",named);
167 while(strcmp(named,p1->name)!=0)
168 {
169 p2=p1;
170 p1=p1->next;
171 }
172 p2->next=p3;
173 p3->next=p1;
174 break;
175 }
176 printf("插入成功!n");
177 printf("======================================================================n");
178 return;
179 }
180
181 void deleted() //删除数据
182 {
183 stu *p1,*p2;
184 char Name[20]; //想要删除的人的姓名
185 printf("nttt☆☆☆删除数据☆☆☆n");
186 printf("----------------------------------------------------------------------n");
187 printf("请输入要删除的姓名:");
188 scanf("%s",Name);
189 p1=head;
190 if(head==NULL)
191 {
192 printf("内存空空神马都没有!n");
193 printf("======================================================================n");
194 return;
195 }
196 if(strcmp(Name,p1->name)==0)
197 {
198 head=p1->next;
199 printf("删除成功!n");
200 printf("======================================================================n");
201 return;
202 }
203 while(p1!=NULL&&(strcmp(Name,p1->name)!=0))
204 {
205 p2=p1;
206 p1=p1->next;
207 }
208 if(p1==NULL)
209 {
210 printf("此人不存在!n");
211 printf("======================================================================n");
212 return;
213 }
214 if(p1->next!=NULL)
215 {
216 p1=p1->next;
217 p2->next=p1;
218 printf("删除成功!n");
219 printf("======================================================================n");
220 return;
221 }
222 else
223 {
224 p2->next=NULL;
225 printf("删除成功!n");
226 printf("======================================================================n");
227 return;
228 }
229 }
230
231
232 find(stu *p2) //通过姓名查找查看数据的函数
233 {
234 char name[20];
235 int b=0;
236 printf("nttt☆☆☆查看数据☆☆☆n");
237 printf("----------------------------------------------------------------------n");
238 printf("请输入您想查找人的姓名:");
239 scanf("%s",name);
240 while(p2!=NULL)
241 {
242 if(strcmp(name,p2->name)==0)
243 {
244 printf("你要找到的数据n");
245 printf("姓名:%sn",p2->name);
246 printf("学号:%st",p2->num);
247 printf("性别:%st",p2->sex);
248 printf("籍贯:%st",p2->from);
249 printf("政治面貌:%st",p2->political);
250 printf("手机号:%st",p2->phone);
251 printf("QQ号:%st",p2->QQ);
252 printf("宿舍:%sn",p2->dorm);
253 printf("======================================================================n");
254 b=1;
255 }
256 p2=p2->next;
257 }
258 if(b==0)
259 {
260 printf("n您要查找的人不存在!n");
261 }
262 }
263
264
265 update(stu *p2) //通过姓名查找修改数据
266 {
267 char name[20];
268 int b=0,i;
269 printf("nttt☆☆☆修改数据☆☆☆n");
270 printf("----------------------------------------------------------------------n");
271 printf("请输入将要修改人的姓名:");
272 scanf("%s",name);
273 while(p2!=NULL)
274 {
275 if(strcmp(name,p2->name)==0)
276 {
277 printf("该同学的基本信息n");
278 printf("姓名:%sn",p2->name);
279 printf("学号:%st",p2->num);
280 printf("性别:%st",p2->sex);
281 printf("籍贯:%st",p2->from);
282 printf("政治面貌:%st",p2->political);
283 printf("手机号:%st",p2->phone);
284 printf("QQ号:%st",p2->QQ);
285 printf("宿舍:%sn",p2->dorm);
286 printf("n请选择要修改的信息n");
287 printf("t1.姓名t2.学号t3.性别t4.籍贯nt5.政治面貌t6.手机号t7.QQt8.宿舍n");
288 printf("n您的选择是(1~8):");
289 scanf("%d",&i);
290 printf("请输入修改之后的内容n");
291 switch(i)
292 {
293 case 1:printf("姓名:");
294 scanf("%s",&p2->name);
295 break;
296 case 2:printf("学号:");
297 scanf("%s",&p2->num);
298 break;
299 case 3:printf("性别:");
300 scanf("%s",&p2->sex);
301 break;
302 case 4:printf("籍贯:");
303 scanf("%s",&p2->from);
304 break;
305 case 5:printf("政治面貌:");
306 scanf("%s",&p2->political);
307 break;
308 case 6:printf("手机号:");
309 scanf("%s",&p2->phone);
310 break;
311 case 7:printf("QQ:");
312 scanf("%s",&p2->QQ);
313 break;
314 case 8:printf("宿舍:");
315 scanf("%d",&p2->dorm);
316 break;
317 }
318 printf("n修改成功!n");
319 printf("=========================================================================n");
320 b=1;
321 }
322 p2=p2->next;
323 }
324 if(b==0)
325 {
326 printf("没有找到该人的资料!n");
327 }
328 }
329
330
331 save(stu *p2) //保存数据
332 {
333 FILE *fp;
334 char file[15];
335 printf("nttt☆☆☆保存数据☆☆☆n");
336 printf("----------------------------------------------------------------------n");
337 printf("输入文件名:");
338 scanf("%s",file);
339 if((fp=fopen(file,"w"))==NULL)
340 {
341 printf("cannot open this filen");
342 exit(0);
343 }
344 fprintf(fp,"姓名t学号t性别t籍贯t政治面貌t手机号tQQ号t宿舍n");
345 while(p2!=NULL)
346 {
347 fprintf(fp,"%st",p2->name);
348 fprintf(fp,"%st",p2->num);
349 fprintf(fp,"%st",p2->sex);
350 fprintf(fp,"%st",p2->from);
351 fprintf(fp,"%st",p2->political);
352 fprintf(fp,"%st",p2->phone);
353 fprintf(fp,"%st",p2->QQ);
354 fprintf(fp,"%sn",p2->dorm);
355 p2=p2->next;
356 }
357 printf("n保存成功!n");
358 printf("======================================================================n");
359 fclose(fp);
360 }
361
362
363 void screen()
364 {
365 int i;
366 char s[251]={"欢迎使用由ZM制作班级通讯录管理系统,nnttt本系统用于通讯录管理----排序,打印nnnttWelcome to use produced by ZM class address booknntt management system,sorting,printing"};
367
368 printf("n================================================================================n");
369 printf("nnnttt");
370 for(i=0;s[i]!=NULL;i++)
371 {
372 Sleep(30);
373 printf("%c",s[i]);
374 }
375 printf("nnnnnnnntt ~ Hi~ o(* ̄▽ ̄*)ブ~ ~ ~祝您旅途愉快~ ~n");
376 printf("================================================================================n");
377
378 }
379
380
381 void main()
382 {
383 int i;
384 system("color 4e");
385 screen();
386 Sleep(3000);
387 print();
388 while(1)
389 {
390 printf("请输入你的选择(1~9):");
391 loop:scanf("%d",&i);
392 if(i<1||i>9)
393 {
394 printf("输入有误,请在1~9中进行选择:");
395 goto loop;
396 }
397 switch(i)
398 {
399 case 1:
400 inputdata();
401 break;
402 case 2:
403 lookdata(head);
404 break;
405 case 3:
406 insert();
407 break;
408 case 4:
409 deleted();
410 break;
411 case 5:
412 find(head);
413 break;
414 case 6:
415 update(head);
416 break;
417 case 7:
418 save(head);
419 break;
420 case 8:
421 print();
422 break;
423 case 9:
424 exit(1);
425 break;
426 }
427 }
428 }
对于热爱编程的小伙伴来说,如果你需要更多编程知识分享或者有需求的话,笔者这里推荐一个编程入门学习交流聚集地→C语言/C++编程入门教学基地!还有完整的学习路线和学习文件视频以及源码,小白和大神们正在等着你一起探讨编程世界!