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 }
相關文章
相關標籤/搜索