1 //运行文件前在D盘建一个program文件夹 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<windows.h> 6 #include<conio.h> 7 struct student 8 { 9 int num; 10 char name[50]; 11 char sex[20]; 12 int age; 13 char address[50]; 14 char xiyuan[20]; 15 char zhuanye[20]; 16 }stu[1000000]; 17 int cmp(student a,student b) 18 { 19 return a.num<b.num; 20 } 21 void menu() 22 { 23 system("color 4e"); 24 system("cls");//清屏!! 25 printf(" "); 26 printf(" ******************************************************* "); 27 printf(" ** 学生学籍管理系统菜单 ** "); 28 printf(" ******************************************************* "); 29 printf(" ** ** "); 30 printf(" ** 1:新建一个学籍管理系统 2:增加学生学籍 ** "); 31 printf(" ** ** "); 32 printf(" ** 3:修改学生学籍信息 4:删除学生学籍 ** "); 33 printf(" ** ** "); 34 printf(" ** 5:查找学生学籍 6:浏览所有学生学籍 ** "); 35 printf(" ** ** "); 36 printf(" ** 7:退出学籍管理系统 8.修改密码 ** "); 37 printf(" ** ** "); 38 printf(" ******************************************************* "); 39 40 } 41 void newbuild()/*新建一个学籍管理系统*/ 42 { 43 system("cls"); 44 int i,true1,n; 45 printf(" 是否新建学生学籍信息,是1,否0 : "); 46 scanf("%d",&true1); 47 if(!true1) return; 48 printf(" 请你输入你新建学籍管理系统学生个数: "); 49 scanf("%d",&n); 50 for(i=0;i<n;i++) 51 { 52 printf(" 请输出第 %d 个学生的学籍: ",i+1); 53 printf(" 学号:");scanf("%d",&stu[i].num);getchar(); 54 printf(" 姓名:");scanf("%s",stu[i].name);getchar(); 55 printf(" 性别:");scanf("%s",stu[i].sex);getchar(); 56 printf(" 年龄:");scanf("%d",&stu[i].age);getchar(); 57 printf(" 籍贯:");scanf("%s",stu[i].address);getchar(); 58 printf(" 系院:");scanf("%s",stu[i].xiyuan);getchar(); 59 printf(" 专业:");scanf("%s",stu[i].zhuanye);getchar(); 60 } 61 FILE *fp; 62 if((fp=fopen("d:\program\student.txt","w"))==NULL) 63 { 64 printf(" 打开文件失败!!! "); 65 getch(); 66 exit(1); 67 } 68 for(i=0;i<n;i++) 69 fprintf(fp," %d %s %s %d %s %s %s ",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].address,stu[i].xiyuan,stu[i].zhuanye); 70 fclose(fp); 71 system("pause "); 72 } 73 void add()/*增加学生学籍*/ 74 { 75 int true2; 76 FILE *fp; 77 if((fp=fopen("d:\program\student.txt","a"))==NULL) 78 { 79 printf(" 打开文件失败!!! "); 80 getch(); 81 exit(1); 82 } 83 while(1) 84 { 85 printf(" 请选择 1->增加 或 0->结束增加 : "); 86 scanf("%d",&true2); 87 getchar(); 88 if(!true2) break; 89 printf(" 请依次输入增加的每个学生的学籍信息 "); 90 printf(" 学号:");scanf("%d",&stu[0].num);getchar(); 91 printf(" 姓名:");scanf("%s",stu[0].name);getchar(); 92 printf(" 性别:");scanf("%s",stu[0].sex);getchar(); 93 printf(" 年龄:");scanf("%d",&stu[0].age);getchar(); 94 printf(" 籍贯:");scanf("%s",stu[0].address);getchar(); 95 printf(" 系院:");scanf("%s",stu[0].xiyuan);getchar(); 96 printf(" 专业:");scanf("%s",stu[0].zhuanye);getchar(); 97 fprintf(fp," %d %s %s %d %s %s %s ",stu[0].num,stu[0].name,stu[0].sex,stu[0].age,stu[0].address,stu[0].xiyuan,stu[0].zhuanye); 98 } 99 fclose(fp); 100 system("pause "); 101 } 102 void modify()/*修改学生学籍信息*/ 103 { 104 system("cls"); 105 int i=0,j,n; 106 FILE *fp; 107 if((fp=fopen("d:\program\student.txt","r"))==NULL) 108 { 109 printf(" 打开文件失败!!! "); 110 getch(); 111 exit(1); 112 } 113 memset(stu,0,sizeof(stu)); 114 while(fscanf(fp,"%d",&stu[i].num)!=EOF) 115 { 116 fscanf(fp,"%s%s%d%s%s%s",stu[i].name,stu[i].sex,&stu[i].age,stu[i].address,stu[i].xiyuan,stu[i].zhuanye); 117 i++; 118 } 119 fclose(fp); 120 while(1) 121 { 122 123 printf(" ※※※※※※※※※※※※※※※※※※※※※※※※ "); 124 printf(" ※※※※※※※※※※※※※※※※※※※※※※※※ "); 125 printf(" ※※ ※※ "); 126 printf(" ※※ 1:按照学号修改学生学籍: ※※ "); 127 printf(" ※※ ※※ "); 128 printf(" ※※ 2:按照姓名修改学生学籍: ※※ "); 129 printf(" ※※ ※※ "); 130 printf(" ※※ 3:返回主菜单 ※※ "); 131 printf(" ※※ ※※ "); 132 printf(" ※※※※※※※※※※※※※※※※※※※※※※※※ "); 133 printf(" ※※※※※※※※※※※※※※※※※※※※※※※※ "); 134 printf(" 输入数据,请选择(1—3):"); 135 scanf("%d",&n); 136 while(n<1||n>3) 137 { 138 printf("输入错误,请重新输入!! "); 139 scanf("%d",&n); 140 } 141 if(n==3) break; 142 if(n==1) 143 { 144 int num,flag=0; 145 printf(" 请输入学号:"); 146 scanf("%d",&num); 147 for(j=0;j<i;j++) 148 { 149 if(stu[j].num==num) 150 { 151 flag=1; 152 printf(" 请输入该学生的新学籍信息: "); 153 printf(" 学号:");scanf("%d",&stu[j].num);getchar(); 154 printf(" 姓名:");scanf("%s",stu[j].name);getchar(); 155 printf(" 性别:");scanf("%s",stu[j].sex);getchar(); 156 printf(" 年龄:");scanf("%d",&stu[j].age);getchar(); 157 printf(" 籍贯:");scanf("%s",stu[j].address);getchar(); 158 printf(" 系院:");scanf("%s",stu[j].xiyuan);getchar(); 159 printf(" 专业:");scanf("%s",stu[j].zhuanye);getchar(); 160 break; 161 } 162 } 163 if(flag) printf(" 修改成功!! "); 164 else printf(" 不存在该学生!! "); 165 } 166 else if(n==2) 167 { 168 int flag=0; 169 char ch[50]; 170 printf(" 请输入姓名:"); 171 scanf("%s",ch); 172 for(j=0;j<i;j++) 173 { 174 if(!strcmp(ch,stu[j].name)) 175 { 176 flag=1; 177 printf(" 请输入该学生的新学籍信息: "); 178 printf(" 学号:");scanf("%d",&stu[j].num);getchar(); 179 printf(" 姓名:");scanf("%s",stu[j].name);getchar(); 180 printf(" 性别:");scanf("%s",stu[j].sex);getchar(); 181 printf(" 年龄:");scanf("%d",&stu[j].age);getchar(); 182 printf(" 籍贯:");scanf("%s",stu[j].address);getchar(); 183 printf(" 系院:");scanf("%s",stu[j].xiyuan);getchar(); 184 printf(" 专业:");scanf("%s",stu[j].zhuanye);getchar(); 185 break; 186 } 187 } 188 if(flag) 189 printf(" 修改成功!! "); 190 else 191 printf(" 不存在该学号生!! "); 192 } 193 } 194 if((fp=fopen("d:\program\student.txt","w"))==NULL) 195 { 196 printf(" 打开文件失败!!! "); 197 getch(); 198 exit(1); 199 } 200 for(j=0;j<i;j++) 201 fprintf(fp," %d %s %s %d %s %s %s ",stu[j].num,stu[j].name,stu[j].sex,stu[j].age,stu[j].address,stu[j].xiyuan,stu[j].zhuanye); 202 fclose(fp); 203 system("pause "); 204 } 205 void del()/*删除学生学籍*/ 206 { 207 system("cls"); 208 int i=0,j,n; 209 FILE *fp; 210 if((fp=fopen("d:\program\student.txt","r"))==NULL) 211 { 212 printf(" 打开文件失败!!! "); 213 getch(); 214 exit(1); 215 } 216 memset(stu,0,sizeof(stu)); 217 while(fscanf(fp,"%d",&stu[i].num)!=EOF) 218 { 219 fscanf(fp,"%s%s%d%s%s%s",stu[i].name,stu[i].sex,&stu[i].age,stu[i].address,stu[i].xiyuan,stu[i].zhuanye); 220 i++; 221 } 222 fclose(fp); 223 while(1) 224 { 225 printf(" ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ "); 226 printf(" ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ "); 227 printf(" ★★★★ ★★★★ "); 228 printf(" ★★★★ 1:按照学号删除学 ★★★★ "); 229 printf(" ★★★★ ★★★★ "); 230 printf(" ★★★★ 2:按照姓名删除学生学籍: ★★★★ "); 231 printf(" ★★★★ ★★★★ "); 232 printf(" ★★★★ 3:返回主菜单 ★★★★ "); 233 printf(" ★★★★ ★★★★ "); 234 printf(" ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ "); 235 printf(" ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ "); 236 printf(" 输入数据,请选择(1—3):"); 237 scanf("%d",&n); 238 while(n<1||n>3) 239 { 240 printf(" 输入错误,请重新输入!! "); 241 scanf("%d",&n); 242 } 243 if(n==3) break; 244 if(n==1) 245 { 246 int num,flag=0; 247 printf(" 请输入学号:"); 248 scanf("%d",&num); 249 for(j=0;j<i;j++) 250 { 251 if(stu[j].num==num) 252 { 253 flag=1; 254 stu[j].age=0; 255 break; 256 } 257 } 258 if(flag) 259 printf(" 删除成功!! "); 260 else 261 printf(" 不存在该学生!! "); 262 } 263 else if(n==2) 264 { 265 int flag=0; 266 char ch[50]; 267 printf(" 请输入姓名:"); 268 scanf("%s",ch); 269 for(j=0;j<i;j++) 270 { 271 if(!strcmp(ch,stu[j].name)) 272 { 273 flag=1; 274 stu[j].age=0; 275 break; 276 } 277 } 278 if(flag) 279 printf(" 删除成功!! "); 280 else 281 printf(" 不存在该学生!! "); 282 } 283 } 284 if((fp=fopen("d:\program\student.txt","w"))==NULL) 285 { 286 printf(" 打开文件失败!!! "); 287 getch(); 288 exit(1); 289 } 290 for(j=0;j<i;j++) 291 if(stu[j].age) 292 fprintf(fp," %d %s %s %d %s %s %s ",stu[j].num,stu[j].name,stu[j].sex,stu[j].age,stu[j].address,stu[j].xiyuan,stu[j].zhuanye); 293 fclose(fp); 294 system("pause "); 295 } 296 void search()/*查找学生学籍*/ 297 { 298 system("cls"); 299 int i=0,j,n; 300 FILE *fp; 301 if((fp=fopen("d:\program\student.txt","r"))==NULL) 302 { 303 printf(" 打开文件失败!!! "); 304 getch(); 305 exit(1); 306 } 307 memset(stu,0,sizeof(stu)); 308 while(fscanf(fp,"%d",&stu[i].num)!=EOF) 309 { 310 fscanf(fp,"%s%s%d%s%s%s",stu[i].name,stu[i].sex,&stu[i].age,stu[i].address,stu[i].xiyuan,stu[i].zhuanye); 311 i++; 312 } 313 fclose(fp); 314 while(1) 315 { 316 printf(" ●●●●●●●●●●●●●●●●●●●●●●●● "); 317 printf(" ●●●●●●●●●●●●●●●●●●●●●●●● "); 318 printf(" ●●● ●●● "); 319 printf(" ●●● 1:按照学号查找学生学籍: ●●● "); 320 printf(" ●●● ●●● "); 321 printf(" ●●● 2:按照姓名查找学生学籍 ●●● "); 322 printf(" ●●● ●●● "); 323 printf(" ●●● 3:返回主菜单 ●●● "); 324 printf(" ●●● ●●● "); 325 printf(" ●●●●●●●●●●●●●●●●●●●●●●●● "); 326 printf(" ●●●●●●●●●●●●●●●●●●●●●●●● "); 327 printf(" 输入数据,请选择(1—3): "); 328 scanf("%d",&n); 329 while(n<1||n>3) 330 { 331 printf(" 输入错误,请重新输入!! "); 332 scanf("%d",&n); 333 } 334 if(n==3) break; 335 if(n==1) 336 { 337 int num,flag=0; 338 printf(" 请输入学号: "); 339 scanf("%d",&num); 340 for(j=0;j<i;j++) 341 { 342 if(stu[j].num==num) 343 { 344 flag=1; 345 printf(" 学号 姓名 性别 年龄 籍贯 系院 专业 "); 346 printf(" %d %s %s %d %s %s %s ",stu[j].num,stu[j].name,stu[j].sex,stu[j].age,stu[j].address,stu[j].xiyuan,stu[j].zhuanye); 347 break; 348 } 349 } 350 if(!flag) 351 printf(" 不存在该学生!! "); 352 } 353 else if(n==2) 354 { 355 int flag=0; 356 char ch[50]; 357 printf(" 请输入姓名:"); 358 scanf("%s",ch); 359 for(j=0;j<i;j++) 360 { 361 if(!strcmp(ch,stu[j].name)) 362 { 363 flag=1; 364 printf(" 学号 姓名 性别 年龄 籍贯 系院 专业 "); 365 printf(" %d %s %s %d %s %s %s ",stu[j].num,stu[j].name,stu[j].sex,stu[j].age,stu[j].address,stu[j].xiyuan,stu[j].zhuanye); 366 break; 367 } 368 } 369 if(!flag) 370 printf(" 不存在该学生!! "); 371 } 372 } 373 system("pause "); 374 } 375 void Browse()/*浏览所有学生学籍*/ 376 { 377 system("cls"); 378 int i=0,j,n; 379 FILE *fp; 380 if((fp=fopen("d:\program\student.txt","r"))==NULL) 381 { 382 printf(" 打开文件失败!!! "); 383 getch(); 384 exit(1); 385 } 386 memset(stu,0,sizeof(stu)); 387 while(fscanf(fp,"%d",&stu[i].num)!=EOF) 388 { 389 fscanf(fp,"%s%s%d%s%s%s",stu[i].name,stu[i].sex,&stu[i].age,stu[i].address,stu[i].xiyuan,stu[i].zhuanye); 390 i++; 391 } 392 fclose(fp); 393 printf(" 学号 姓名 性别 年龄 籍贯 系院 专业 "); 394 for(j=0;j<i;j++) 395 printf(" %d %s %s %d %s %s %s ",stu[j].num,stu[j].name,stu[j].sex,stu[j].age,stu[j].address,stu[j].xiyuan,stu[j].zhuanye); 396 printf(" "); 397 system("pause "); 398 } 399 void newboot()/*用户登陆*/ 400 { 401 system("cls"); 402 char user[50],user1[50],password[50],password1[50]; 403 FILE *fp; 404 if((fp=fopen("d:\program\password.txt","r"))==NULL) 405 { 406 407 if((fp=fopen("d:\program\password.txt","w"))==NULL) 408 { 409 printf(" 打开文件失败!!! "); 410 getch(); 411 exit(1); 412 } 413 printf(" 请注册你的账号密码: "); 414 printf(" 请输入用户名: ");scanf("%s",user1); 415 printf(" 请输入密码: ");scanf("%s",password1); 416 fprintf(fp," %s ",user1); 417 fprintf(fp," %s",password1); 418 fclose(fp); 419 printf(" ok,注册成功!! "); 420 421 } 422 fp=fopen("d:\program\password.txt","r"); 423 fscanf(fp,"%s",user); 424 fscanf(fp,"%s",password); 425 fclose(fp); 426 printf(" "); 427 int k=0; 428 while(1) 429 { 430 k++; 431 printf(" "); 432 printf(" *************************************************** "); 433 printf(" ******* ******* "); 434 printf(" ******* 欢迎进入学生学籍管理系统 ******* "); 435 printf(" ******* ******* "); 436 printf(" *************************************************** "); 437 if(k>1) printf(" 请重新输入账号和密码: "); 438 printf(" 请输入用户名: ");scanf("%s",user1); 439 printf(" 请输入密码: ");scanf("%s",password1); 440 if(!strcmp(user1,user)&&!strcmp(password1,password)) 441 break; 442 else 443 { 444 printf(" 账号或密码错误!!! "); 445 Sleep(1000); 446 447 } 448 system("cls"); 449 } 450 } 451 void password()/*修改密码*/ 452 { 453 char user1[50],password1[50]; 454 FILE *fp; 455 if((fp=fopen("d:\program\password.txt","w"))==NULL) 456 { 457 printf(" 打开文件失败!!! "); 458 getch(); 459 exit(1); 460 } 461 printf(" 请输入新的用户名: ");scanf("%s",user1); 462 printf(" 请输入新的密码: ");scanf("%s",password1); 463 fprintf(fp,"%s%c",user1,' '); 464 fprintf(fp,"%s%c",password1,' '); 465 fclose(fp); 466 printf(" 密码已修改!!! "); 467 system("pause "); 468 } 469 void exit() 470 { 471 exit(0); 472 } 473 int main() 474 { 475 int n; 476 system("color 4e"); 477 newboot (); 478 while(1) 479 { 480 menu(); 481 printf("请输入1~8操作命令,选择功能:"); 482 scanf("%d",&n); 483 while(n>8||n<0) 484 { 485 printf("输入错误!!请重新输入n "); 486 scanf("%d",&n); 487 } 488 switch(n) 489 { 490 case 1 :newbuild();break; 491 case 2 :add();break; 492 case 3 :modify();break; 493 case 4 :del();break; 494 case 5 :search();break; 495 case 6 :Browse();break; 496 case 7 :exit();break; 497 case 8 :password();break; 498 } 499 } 500 }