c語言實現通信錄管理系統(c課程設計)

工具Visual C++6.0windows

說明:函數

       本系統基於C語言實現班級通信錄管理系統,爲大一時學習C語言剛入門所作的課程設計。功能包括增、刪、查、改等,很是適合初學者練手。通信錄包括的我的信息有姓名、學號、性別、籍貫、政治面貌、手機號、QQ號、宿舍等。主要用到了指針、結構體、遍歷鏈表、文件讀取等知識點。工具

運行效果oop

代碼學習

  1 #include<stdio.h>
  2 #include<string.h>
  3 #include<stdlib.h>
  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("\n\n\n");
 23     printf("      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
 24     printf("      ***********************************************************\n");
 25     printf("      \t\t\t班級通信錄管理系統\n");
 26     printf("\n");
 27     printf("      \t\t1. 輸入數據");
 28     printf("\t\t2. 顯示數據\n");
 29     printf("      \t\t3. 插入數據");
 30     printf("\t\t4. 刪除數據\n");
 31     printf("      \t\t5. 查看數據");
 32     printf("\t\t6. 修改數據\n");
 33     printf("      \t\t7. 保存數據");
 34     printf("\t\t8. 返回主菜單\n");
 35     printf("      ***********************************************************\n");
 36     printf("      ~~~~~退~~~~~~~~~~出~~~~~~~~~~請~~~~~~~~~~按~~~~~~~~~~9~~~~~\n");
 37     printf("      -----------------------------------------------------------\n\n");
 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("\n\t\t\t☆☆☆輸入數據☆☆☆\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("\n\t\t\t☆☆☆顯示數據☆☆☆\n");
119     printf("----------------------------------------------------------------------\n");
120     while(p1!=NULL)
121     {
122         printf("姓名:%s\n",p1->name);
123         printf("學號:%s\t",p1->num);
124         printf("性別:%s\t",p1->sex);
125         printf("籍貫:%s\t",p1->from);
126         printf("政治面貌:%s\t",p1->political);
127         printf("手機號:%s\t",p1->phone);
128         printf("QQ號:%s\t",p1->QQ);
129         printf("宿舍:%s\n",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("\n\t\t\t☆☆☆插入數據☆☆☆\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("\n\t\t\t☆☆☆刪除數據☆☆☆\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("\n\t\t\t☆☆☆查看數據☆☆☆\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("姓名:%s\n",p2->name);
246             printf("學號:%s\t",p2->num);
247             printf("性別:%s\t",p2->sex);
248             printf("籍貫:%s\t",p2->from);
249             printf("政治面貌:%s\t",p2->political);
250             printf("手機號:%s\t",p2->phone);
251             printf("QQ號:%s\t",p2->QQ);
252             printf("宿舍:%s\n",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("\n\t\t\t☆☆☆修改數據☆☆☆\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("姓名:%s\n",p2->name);
279             printf("學號:%s\t",p2->num);
280              printf("性別:%s\t",p2->sex);
281             printf("籍貫:%s\t",p2->from);
282             printf("政治面貌:%s\t",p2->political);
283             printf("手機號:%s\t",p2->phone);
284             printf("QQ號:%s\t",p2->QQ);
285             printf("宿舍:%s\n",p2->dorm);
286             printf("\n請選擇要修改的信息\n");
287             printf("\t1.姓名\t2.學號\t3.性別\t4.籍貫\n\t5.政治面貌\t6.手機號\t7.QQ\t8.宿舍\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("\n\t\t\t☆☆☆保存數據☆☆☆\n");
336     printf("----------------------------------------------------------------------\n");
337     printf("輸入文件名:");
338     scanf("%s",file);
339     if((fp=fopen(file,"w"))==NULL)
340     {
341         printf("cannot open this file\n");
342         exit(0);
343     }
344     fprintf(fp,"姓名\t學號\t性別\t籍貫\t政治面貌\t手機號\tQQ號\t宿舍\n");
345     while(p2!=NULL)
346     {
347         fprintf(fp,"%s\t",p2->name);
348         fprintf(fp,"%s\t",p2->num);
349         fprintf(fp,"%s\t",p2->sex);
350         fprintf(fp,"%s\t",p2->from);
351         fprintf(fp,"%s\t",p2->political);
352         fprintf(fp,"%s\t",p2->phone);
353         fprintf(fp,"%s\t",p2->QQ);
354         fprintf(fp,"%s\n",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製做班級通信錄管理系統,\n\n\t\t\t本系統用於通信錄管理----排序,打印\n\n\n\t\tWelcome to use produced by ZM class address book\n\n\t\t management system,sorting,printing"};
367     
368     printf("\n================================================================================\n");
369     printf("\n\n\n\t\t\t");
370     for(i=0;s[i]!=NULL;i++)
371     {
372         Sleep(30);
373         printf("%c",s[i]);
374     }
375     printf("\n\n\n\n\n\n\n\n\t\t ~ 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 }
相關文章
相關標籤/搜索