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 }