1. 程式人生 > 其它 >通訊錄管理系統的設計與實現

通訊錄管理系統的設計與實現

通訊錄管理系統的設計與實現

一個高效地通訊錄管理系統需要具備以下幾項功能:

(1):新增聯絡人                     

(2):按姓名首字母氣泡排序顯示             

(3):按手機號碼選擇排序顯示             

(4):按QQ號碼插入排序顯示

(5):按姓名查詢                     

(6):按手機號碼查詢                 

(7):修改聯絡人資訊                         

(8):刪除聯絡人資訊                  

(9):返回聯絡人個數                                    

(10):儲存聯絡人資訊到檔案中                                      

(11):讀取檔案中的聯絡人資訊 

  1 #include<iostream>
  2 #include<stdio.h>
  3 #include<stdlib.h>
  4 #include<string.h>
  5 #include<cstring>
  6 using namespace std;
  7 typedef int elemtype;
  8 typedef struct Links{
  9     char
name[100];//姓名 10 char sex[100];//性別 11 char num[100];//手機號 12 char QQ[100];//QQ號 13 char email[100];//郵箱 14 char address[100];//地址 15 }Links; 16 typedef struct Sqlist //順序表儲存結構 17 { 18 Links elem[100]; 19 int length=0; 20 } Sqlist; 21 22 bool empty(Sqlist &L) //判斷列表是否為空
23 { 24 if(L.length==0) 25 return true; 26 else return false; 27 } 28 29 void Length(Sqlist &L) //返回聯絡人個數 30 { 31 printf("聯絡人的個數為:%d\n",L.length); 32 return ; 33 } 34 35 int Main_Menu() 36 { 37 int choice; 38 printf("****************************選單*******************************\n"); 39 printf(" 1:新增聯絡人 \n"); 40 printf(" 2:按姓名首字母氣泡排序顯示 \n"); 41 printf(" 3:按手機號碼選擇排序顯示 \n"); 42 printf(" 4:按QQ號碼插入排序顯示 \n"); 43 printf(" 5:按姓名查詢 \n"); 44 printf(" 6:按手機號碼查詢 \n"); 45 printf(" 7:修改聯絡人資訊 \n"); 46 printf(" 8:刪除聯絡人資訊 \n"); 47 printf(" 9:返回聯絡人個數 \n"); 48 printf(" 10:儲存聯絡人資訊到檔案中 \n"); 49 printf(" 11:讀取檔案中的聯絡人資訊 \n"); 50 printf(" 12:退出系統 \n"); 51 printf("請輸入選擇:"); 52 scanf("%d",&choice); 53 while(choice>12||choice<0)//判斷是否輸入正確 54 { 55 printf("請重新選擇:"); 56 scanf("%d",&choice); 57 } 58 return choice; 59 } 60 void Printlist(Sqlist &L); 61 62 void Add(Sqlist &L)//輸入聯絡人資訊 63 { 64 int i=0; 65 while(1) 66 { 67 printf("請輸入姓名:"); 68 scanf("%s",L.elem[i].name); 69 if(L.elem[i].name[0]=='@')//姓名輸入為空結束迴圈 70 break; 71 printf("請輸入性別:"); 72 scanf("%s",L.elem[i].sex); 73 printf("請輸入手機號碼:"); 74 scanf("%s",L.elem[i].num); 75 printf("請輸入QQ號碼:"); 76 scanf("%s",L.elem[i].QQ); 77 printf("請輸入郵箱:"); 78 scanf("%s",L.elem[i].email); 79 printf("請輸入地址:"); 80 scanf("%s",L.elem[i].address); 81 L.length++; 82 i++; 83 printf("******\n"); 84 Printlist(L); 85 printf("******\n"); 86 } 87 } 88 89 void Printlist(Sqlist &L) //列表遍歷輸出 90 { 91 for(int i=0;i<L.length;i++) 92 { 93 printf("姓名:%s 性別:%s 手機號:%s QQ:%s 郵箱:%s 地址:%s \n",L.elem[i].name,L.elem[i].sex,L.elem[i].num,L.elem[i].QQ,L.elem[i].email,L.elem[i].address); 94 } 95 } 96 97 98 void PPsort_name(Sqlist &L)//按名字進行氣泡排序 99 { 100 int i,j; 101 Links temp; 102 for(i=0;i<L.length;i++) 103 { 104 for(j=i+1;j<L.length;j++)//氣泡排序 105 { 106 if(strcmp(L.elem[i].name,L.elem[j].name)<0)//當s1<s2時,返回為負數;當s1=s2時,返回值= 0當s1>s2時,返回正數 107 { 108 temp=L.elem[i]; 109 L.elem[i]=L.elem[j]; 110 L.elem[j]=temp; 111 } 112 } 113 } 114 } 115 116 void Selectsort_num(Sqlist &L)//按手機號碼進行選擇排序 117 { 118 int i,j; 119 for(i=0;i<L.length;i++) 120 { 121 int k=i; 122 for( j=i+1;j<L.length;j++) 123 if(strcmp(L.elem[j].num,L.elem[k].num)>0) k=j; 124 if(k!=i) 125 { 126 Links temp; 127 temp=L.elem[i]; 128 L.elem[i]=L.elem[k]; 129 L.elem[k]=temp; 130 } 131 } 132 } 133 134 void Insertsort(Sqlist &L) //QQ直接插入排序 135 { 136 int i,j; 137 Links temp; 138 for(i=1;i<L.length;i++) 139 { 140 if(strcmp(L.elem[i].QQ,L.elem[i-1].QQ)>0) 141 { 142 temp=L.elem[i]; 143 for(j=i-1;j>=0&&strcmp(L.elem[j].QQ,temp.QQ)<0;j--) 144 L.elem[j+1]=L.elem[j]; 145 L.elem[j+1]=temp; 146 } 147 } 148 } 149 void Search_name(Sqlist &L) //根據姓名查詢 150 { 151 int i,flag=0; 152 char a[20]; 153 char temp[100]; 154 printf("請輸入要查詢的聯絡人姓名:"); 155 scanf("%s",temp); 156 for(i=0;i<L.length;i++) 157 { 158 if(!strcmp(temp,L.elem[i].name))//如果名字相同 159 { 160 printf("姓名:%s 性別:%s 手機號:%s QQ:%s 郵箱:%s 地址:%s \n",L.elem[i].name,L.elem[i].sex,L.elem[i].num,L.elem[i].QQ,L.elem[i].email,L.elem[i].address); 161 flag=1; 162 } 163 } 164 if(flag==0) 165 { 166 printf("無該聯絡人!\n"); 167 return ; 168 } 169 } 170 void Search_num(Sqlist &L)//根據電話號碼查詢 171 { 172 int i,flag=0; 173 char b[20]; 174 printf("請輸入要查詢的聯絡人號碼:"); 175 scanf("%s",b); 176 for(i=0;i<L.length;i++) 177 { 178 if(strcmp(b,L.elem[i].num)==0) 179 { 180 printf("姓名:%s 性別:%s 手機號:%s QQ:%s 郵箱:%s 地址:%s \n",L.elem[i].name,L.elem[i].sex,L.elem[i].num,L.elem[i].QQ,L.elem[i].email,L.elem[i].address);//如果號碼相同顯示 181 flag=1; 182 } 183 } 184 if(flag==0) 185 { 186 printf("無該聯絡人!\n"); 187 return ; 188 } 189 } 190 void Save(Sqlist &L)//儲存檔案 191 { 192 FILE *fp; 193 if((fp=fopen("Links.txt","w"))==NULL) 194 { 195 printf("檔案開啟失敗\n"); 196 getchar(); 197 exit(1); 198 } 199 200 for(int i =0; i<L.length; i++) 201 { 202 fprintf(fp,"%s %s %s %s %s %s \n",L.elem[i].name,L.elem[i].sex,L.elem[i].num,L.elem[i].QQ,L.elem[i].email,L.elem[i].address); 203 } 204 fclose(fp); 205 } 206 void Read(Sqlist &L)//讀取檔案 207 { 208 int i=0; 209 FILE *fp; 210 if((fp=fopen("Links.txt","r"))==NULL) 211 { 212 printf("檔案開啟失敗\n"); 213 getchar(); 214 exit(1); 215 } 216 while(fscanf(fp,"%s %s %s %s %s %s \n",L.elem[i].name,L.elem[i].sex,L.elem[i].num,L.elem[i].QQ,L.elem[i].email,L.elem[i].address)!=EOF) 217 { 218 printf("%s %s %s %s %s %s \n",L.elem[i].name,L.elem[i].sex,L.elem[i].num,L.elem[i].QQ,L.elem[i].email,L.elem[i].address);//輸出到顯示器螢幕 219 i++; 220 } 221 fclose(fp); 222 } 223 224 225 226 void Modify(Sqlist &L) 227 { 228 int i; 229 char a[20]; 230 char name[100]; 231 char sex[100]; 232 char num[100]; 233 char QQ[100]; 234 char email[100]; 235 char address[100]; 236 printf("請輸入要修改的聯絡人姓名:"); 237 scanf("%s",a); 238 for(i=0;i<L.length;i++) 239 { 240 if(strcmp(a,L.elem[i].name)==0) 241 { 242 243 printf("請你輸入修改的聯絡人姓名"); 244 scanf("%s",&name); 245 if(name) 246 strcpy(L.elem[i].name,name);//strcpy()會將引數2字串拷貝至引數1所指的地址 247 printf("請你輸入修改的聯絡人性別:"); 248 scanf("%s",&sex); 249 if(sex) 250 strcpy(L.elem[i].sex,sex); 251 printf("請你輸入修改的聯絡人手機號:"); 252 scanf("%s",&num); 253 if(num) 254 strcpy(L.elem[i].num,num); 255 printf("請你輸入修改的聯絡人QQ:"); 256 scanf("%s",&QQ); 257 if(QQ) 258 strcpy(L.elem[i].QQ,QQ); 259 printf("請你輸入修改的聯絡人郵箱:"); 260 scanf("%s",&email); 261 if(email) 262 strcpy(L.elem[i].email,email); 263 printf("請你輸入修改的聯絡人地址:"); 264 scanf("%s",&address); 265 if(address) 266 strcpy(L.elem[i].address,address); 267 break; 268 } 269 } 270 271 } 272 273 void Delete(Sqlist &L) 274 { 275 printf("輸入要刪除的聯絡人姓名:"); 276 char name[100]; 277 scanf("%s",name); 278 int i=0; 279 while(i<L.length&&strcmp(name,L.elem[i].name)) 280 i++; 281 while(i<L.length-1) 282 { 283 L.elem[i]=L.elem[i+1]; 284 i++; 285 } 286 L.length-=1; 287 printf("已刪除\n"); 288 } 289 290 int main() 291 { 292 system("color F0"); 293 Sqlist L; 294 while(1) 295 { 296 switch(Main_Menu()) 297 { 298 case 1: 299 Add(L); 300 break; 301 case 2: 302 PPsort_name(L); 303 Printlist(L); 304 break; 305 case 3: 306 Selectsort_num(L); 307 Printlist(L); 308 break; 309 case 4: 310 Insertsort(L); 311 Printlist(L); 312 break; 313 case 5: 314 Search_name(L); 315 break; 316 case 6: 317 Search_num(L); 318 break; 319 case 7: 320 Modify(L); 321 break; 322 case 8: 323 Delete(L); 324 break; 325 case 9: 326 Length(L); 327 break; 328 case 10: 329 Save(L); 330 break; 331 case 11: 332 Read(L); 333 break; 334 case 12: 335 exit(0); 336 } 337 } 338 return 0; 339 }

  大一上寫的,現在感覺好純真,留個紀念。C語言,拜拜。