学生学籍管理系统
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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("\n\n"); 26 printf(" *******************************************************\n"); 27 printf(" ** 学生学籍管理系统菜单 **\n"); 28 printf(" *******************************************************\n"); 29 printf(" ** **\n"); 30 printf(" ** 1:新建一个学籍管理系统 2:增加学生学籍 **\n"); 31 printf(" ** **\n"); 32 printf(" ** 3:修改学生学籍信息 4:删除学生学籍 **\n"); 33 printf(" ** **\n"); 34 printf(" ** 5:查找学生学籍 6:浏览所有学生学籍 **\n"); 35 printf(" ** **\n"); 36 printf(" ** 7:退出学籍管理系统 8.修改密码 **\n"); 37 printf(" ** **\n"); 38 printf(" *******************************************************\n"); 39 40 } 41 void newbuild()/*新建一个学籍管理系统*/ 42 { 43 system("cls"); 44 int i,true1,n; 45 printf("\n\n 是否新建学生学籍信息,是1,否0 : "); 46 scanf("%d",&true1); 47 if(!true1) return; 48 printf("\n 请你输入你新建学籍管理系统学生个数: "); 49 scanf("%d",&n); 50 for(i=0;i<n;i++) 51 { 52 printf("\n 请输出第 %d 个学生的学籍:\n",i+1); 53 printf("\n 学号:");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("\n打开文件失败!!!\n"); 65 getch(); 66 exit(1); 67 } 68 for(i=0;i<n;i++) 69 fprintf(fp,"\t%d\t%s\t%s\t%d\t%s\t%s\t%s\n",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\n"); 72 } 73 void add()/*增加学生学籍*/ 74 { 75 int true2; 76 FILE *fp; 77 if((fp=fopen("d:\\program\\student.txt","a"))==NULL) 78 { 79 printf("\n打开文件失败!!!\n"); 80 getch(); 81 exit(1); 82 } 83 while(1) 84 { 85 printf("\n 请选择 1->增加 或 0->结束增加 : "); 86 scanf("%d",&true2); 87 getchar(); 88 if(!true2) break; 89 printf("\n 请依次输入增加的每个学生的学籍信息\n"); 90 printf("\n 学号:");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,"\t%d\t%s\t%s\t%d\t%s\t%s\t%s\n",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\n"); 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("\n打开文件失败!!!\n"); 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("\n ※※※※※※※※※※※※※※※※※※※※※※※※\n"); 124 printf(" ※※※※※※※※※※※※※※※※※※※※※※※※\n"); 125 printf(" ※※ ※※\n"); 126 printf(" ※※ 1:按照学号修改学生学籍: ※※\n"); 127 printf(" ※※ ※※\n"); 128 printf(" ※※ 2:按照姓名修改学生学籍: ※※\n"); 129 printf(" ※※ ※※\n"); 130 printf(" ※※ 3:返回主菜单 ※※\n"); 131 printf(" ※※ ※※\n"); 132 printf(" ※※※※※※※※※※※※※※※※※※※※※※※※\n"); 133 printf(" ※※※※※※※※※※※※※※※※※※※※※※※※\n"); 134 printf("\n输入数据,请选择(1—3):"); 135 scanf("%d",&n); 136 while(n<1||n>3) 137 { 138 printf("输入错误,请重新输入!!\n"); 139 scanf("%d",&n); 140 } 141 if(n==3) break; 142 if(n==1) 143 { 144 int num,flag=0; 145 printf("\n请输入学号:"); 146 scanf("%d",&num); 147 for(j=0;j<i;j++) 148 { 149 if(stu[j].num==num) 150 { 151 flag=1; 152 printf(" 请输入该学生的新学籍信息:\n"); 153 printf("\n 学号:");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("\n 修改成功!!\n"); 164 else printf("\n 不存在该学生!!\n"); 165 } 166 else if(n==2) 167 { 168 int flag=0; 169 char ch[50]; 170 printf("\n请输入姓名:"); 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("\n 请输入该学生的新学籍信息:\n"); 178 printf("\n 学号:");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("\n 修改成功!!\n"); 190 else 191 printf("\n 不存在该学号生!!\n"); 192 } 193 } 194 if((fp=fopen("d:\\program\\student.txt","w"))==NULL) 195 { 196 printf("\n打开文件失败!!!\n"); 197 getch(); 198 exit(1); 199 } 200 for(j=0;j<i;j++) 201 fprintf(fp,"\t%d\t%s\t%s\t%d\t%s\t%s\t%s\n",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\n"); 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("\n打开文件失败!!!\n"); 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("\n ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); 226 printf(" ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); 227 printf(" ★★★★ ★★★★\n"); 228 printf(" ★★★★ 1:按照学号删除学 ★★★★\n"); 229 printf(" ★★★★ ★★★★\n"); 230 printf(" ★★★★ 2:按照姓名删除学生学籍: ★★★★\n"); 231 printf(" ★★★★ ★★★★\n"); 232 printf(" ★★★★ 3:返回主菜单 ★★★★\n"); 233 printf(" ★★★★ ★★★★\n"); 234 printf(" ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); 235 printf(" ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); 236 printf("\n 输入数据,请选择(1—3):"); 237 scanf("%d",&n); 238 while(n<1||n>3) 239 { 240 printf(" 输入错误,请重新输入!!\n"); 241 scanf("%d",&n); 242 } 243 if(n==3) break; 244 if(n==1) 245 { 246 int num,flag=0; 247 printf("\n请输入学号:"); 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("\n 删除成功!!\n"); 260 else 261 printf("\n 不存在该学生!!\n"); 262 } 263 else if(n==2) 264 { 265 int flag=0; 266 char ch[50]; 267 printf("\n 请输入姓名:"); 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("\n 删除成功!!\n"); 280 else 281 printf("\n 不存在该学生!!\n"); 282 } 283 } 284 if((fp=fopen("d:\\program\\student.txt","w"))==NULL) 285 { 286 printf("\n打开文件失败!!!\n"); 287 getch(); 288 exit(1); 289 } 290 for(j=0;j<i;j++) 291 if(stu[j].age) 292 fprintf(fp,"\t%d\t%s\t%s\t%d\t%s\t%s\t%s\n",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\n"); 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("\n打开文件失败!!!\n"); 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("\n ●●●●●●●●●●●●●●●●●●●●●●●●\n"); 317 printf(" ●●●●●●●●●●●●●●●●●●●●●●●●\n"); 318 printf(" ●●● ●●●\n"); 319 printf(" ●●● 1:按照学号查找学生学籍: ●●●\n"); 320 printf(" ●●● ●●●\n"); 321 printf(" ●●● 2:按照姓名查找学生学籍 ●●●\n"); 322 printf(" ●●● ●●●\n"); 323 printf(" ●●● 3:返回主菜单 ●●●\n"); 324 printf(" ●●● ●●●\n"); 325 printf(" ●●●●●●●●●●●●●●●●●●●●●●●●\n"); 326 printf(" ●●●●●●●●●●●●●●●●●●●●●●●●\n"); 327 printf("\n 输入数据,请选择(1—3): "); 328 scanf("%d",&n); 329 while(n<1||n>3) 330 { 331 printf(" 输入错误,请重新输入!!\n"); 332 scanf("%d",&n); 333 } 334 if(n==3) break; 335 if(n==1) 336 { 337 int num,flag=0; 338 printf("\n 请输入学号: "); 339 scanf("%d",&num); 340 for(j=0;j<i;j++) 341 { 342 if(stu[j].num==num) 343 { 344 flag=1; 345 printf("\n\t学号\t姓名\t性别\t年龄\t籍贯\t系院\t专业\n"); 346 printf("\n\t%d\t%s\t%s\t%d\t%s\t%s\t%s\n",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("\n 不存在该学生!!\n"); 352 } 353 else if(n==2) 354 { 355 int flag=0; 356 char ch[50]; 357 printf("\n 请输入姓名:"); 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("\n\t学号\t姓名\t性别\t年龄\t籍贯\t系院\t专业\n"); 365 printf("\n\t%d\t%s\t%s\t%d\t%s\t%s\t%s\n",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("\n 不存在该学生!!\n"); 371 } 372 } 373 system("pause\n"); 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("\n打开文件失败!!!\n"); 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("\n\n\t学号\t姓名\t性别\t年龄\t籍贯\t系院\t专业 \n"); 394 for(j=0;j<i;j++) 395 printf("\t%d\t%s\t%s\t%d\t%s\t%s\t%s\n",stu[j].num,stu[j].name,stu[j].sex,stu[j].age,stu[j].address,stu[j].xiyuan,stu[j].zhuanye); 396 printf("\n"); 397 system("pause\n"); 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("\n打开文件失败!!!\n"); 410 getch(); 411 exit(1); 412 } 413 printf("\n 请注册你的账号密码:\n"); 414 printf("\n 请输入用户名: ");scanf("%s",user1); 415 printf("\n 请输入密码: ");scanf("%s",password1); 416 fprintf(fp,"\t%s\n",user1); 417 fprintf(fp,"\t%s",password1); 418 fclose(fp); 419 printf("\n ok,注册成功!!\n"); 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("\n"); 427 int k=0; 428 while(1) 429 { 430 k++; 431 printf("\n"); 432 printf("\t\t***************************************************\n"); 433 printf("\t\t******* *******\n"); 434 printf("\t\t******* 欢迎进入学生学籍管理系统 *******\n"); 435 printf("\t\t******* *******\n"); 436 printf("\t\t***************************************************\n"); 437 if(k>1) printf("\n 请重新输入账号和密码:\n"); 438 printf("\n 请输入用户名: ");scanf("%s",user1); 439 printf("\n 请输入密码: ");scanf("%s",password1); 440 if(!strcmp(user1,user)&&!strcmp(password1,password)) 441 break; 442 else 443 { 444 printf("\n 账号或密码错误!!!\n"); 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("\n打开文件失败!!!\n"); 458 getch(); 459 exit(1); 460 } 461 printf("\n 请输入新的用户名: ");scanf("%s",user1); 462 printf("\n 请输入新的密码: ");scanf("%s",password1); 463 fprintf(fp,"%s%c",user1,'\n'); 464 fprintf(fp,"%s%c",password1,' '); 465 fclose(fp); 466 printf("\n密码已修改!!!\n\n"); 467 system("pause\n"); 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\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 }