1、课程设计学生学籍管理系统源代码#includestdio.h#includeconio.h#includestdlib.h#includestring.h#define N 1000 /N为可输入的学生总人数,可根据需要更改#define M 2 /M为宏定义的(在创建密码函数中)可建立的登陆用户个数,可更改 struct student /定义学生信息结构体数组 char num9; /学号 char name20; /姓名 char depar15; /院系 char zhuanye15; /专业 char classes5; /班级 char age3; /年龄 char sex4; /
2、性别 char nation5; /民族 char birth9; /出生日期 char add10; /籍贯;struct code /定义密码结构体数组 char name20; char code7;coM,s0;/确认是否新创建密码文件模块int code() FILE *fp; if(fp=fopen(学生学籍管理系统_code.txt,rt)=NULL) printf(密码文件不存在,请输入新的用户名及密码:n); /若不存在此密码文件,则提示用户创建密码 printf(请输入任意键继续!); getch(); system(cls); return 1; /无密码文件返回1 el
3、se return 0; /已有密码文件返回0/新创建初始密码void code_input() FILE *fp; int i; if(fp=fopen(学生学籍管理系统_code.txt,wt)=NULL); /当建立密码文件成功时,进入for循环 for(i=0;iM;i+) /M为宏定义的可建立的登陆用户个数,可更改 printf(请录入第%d个用户名:,i+1); /创建不同的用户名及密码 scanf(%s,coi.name); printf(请录入第%d个密码(最多6位):,i+1); scanf(%s,coi.code); printf(n); fwrite(&coi,sizeo
4、f(struct code),1,fp); /将密码保存进文件中 fclose(fp); getch(); system(cls); /用户登陆验证模块int enter(char name120,char code16) FILE *fp; int flog=0; int i; fp=fopen(学生学籍管理系统_code.txt,rt);/打开存放密码的文件 for(i=0;i=M) /当比较完成后,都没有符合条件的用户名与密码,则直接跳出程序 printf(*您无权进入此管理系统!*); fclose(fp); getch(); exit(1);/从文件读入数据int read_file
5、(struct student stu) FILE *sp; int i=0; system(cls); if(sp=fopen(学生学籍管理系统_学生信息.txt,rt)=NULL)/读文件,若文件不存在,则需要创建一个新的文件(文件创建在save_file函数中完成) printf(n学生学籍管理系统_学生信息文件不存在,请创建!n); getch(); system(cls); return 0; while(fread(&stui,sizeof(struct student),1,sp)=1)/判断文件是否处在结束位置 if(stui.num=0) /若文件内容为空,则跳出循环 bre
6、ak; else /若文件内容不为空,i自加1。 i+; /i为文件内结构体数组的数量 fclose(sp); return i; /返回i值,代表文件中学生的人数/保存学生信息(保存在文件中)void save_file(struct student stu,int sum) FILE *sp; int i; if(sp=fopen(学生学籍管理系统_学生信息.txt,wb)=NULL)/若不存在此TXT文档,则创建; printf(读文件错误!n); /创建不成功,返回menu函数; return; for(i=0;isum;i+) if(fwrite(&stui,sizeof(struc
7、t student),1,sp)!=1) /保存文件,sum为现有总学生人数,若未保存成功,提示写文件错误!; printf(写文件错误!n); fclose(sp); return;/创建并录入信息int found(struct student stu) int i=0,x; system(cls); printf(请输入要录入的学生的个数:n); scanf(%d,&x); if(x=0) return 0; do /输入信息 printf(n请录入第%d个学生的信息:n,i+1); printf(请录入学号:); scanf(%s,stui.num); printf(n请录入姓名:);
8、 scanf(%s,stui.name); printf(n请录入院系:); scanf(%s,stui.depar); printf(n请录入专业:); scanf(%s,stui.zhuanye); printf(n请录入班级:); scanf(%s,stui.classes); printf(n请录入性别:); scanf(%s,stui.sex); printf(n请录入年龄:); scanf(%s,stui.age); printf(n请录入出生日期(yyyymmdd):); scanf(%s,stui.birth); printf(n请录入民族:); scanf(%s,stui.n
9、ation); printf(n请录入籍贯:); scanf(%s,stui.add); i+; system(cls); while(i=x(用户要求创建学生的人数)时,跳出输入信息的for循环; save_file(stu,x); /保存学生信息致文件 printf(录入完毕,请按任意键返回); getch(); return i; /返回创建学生的人数/修改学生信息void modify(struct student stu,int sum) int i,item,a=1; /i控制数组下标,item控制子菜单的选择 char s18; FILE *sp; system(cls); re
10、ad_file(stu,sum); /读函数 do printf(nnn请输入你要修改的学号:n); scanf(%s,s1); /要修改的学生学号 for(i=0;isum;i+) /查找此学生 if(strcmp(stui.num,s1)=0) /若找到该生,输出该生的信息 printf(该学生学号:%sn,stui.num); printf(该学生姓名:%sn,stui.name); printf(该学生院系:%sn,stui.depar); printf(该学生专业:%sn,stui.zhuanye); printf(该学生班级:%sn,stui.classes); printf(该学
11、生性别:%sn,stui.sex); printf(该学生年龄:%sn,stui.age); printf(该学生出生日期:%sn,stui.birth); printf(该学生民族:%sn,stui.nation); printf(该学生籍贯:%sn,stui.add); a=0; /找到该生,a=0; break; /出for循环 if(a=1) /若没有找到该生,a=1,输出提示语句 printf(nn该学号不存在!请重新输入学号:n); while(a); /当a=0,即没有找到该生,则继续循环重新输入学生学号 printf(t*n); printf(t你选择你要修改的选项:n); p
12、rintf(t1.*修改姓名n); printf(t2.*修改年龄n); printf(t3.*修改性别n); printf(t4.*修改出生日期n); printf(t5.*修改籍贯n); printf(t6.*修改院系名称n); printf(t7.*修改专业名称n); printf(t8.*修改班级n); printf(t9.*修改民族n); printf(t0.*退出菜单n); printf(t*n); while(1) printf(nt请选择你要进行的操作:); scanf(%d,&item); /item控制子菜单的选择 switch(item) case 1: /修改姓名 pr
13、intf(t请输入新的姓名:); scanf(%s,stui.name); printf(nnn修改成功!n); save_file(stu,sum); break; case 2: /修改年龄 printf(t请输入新的年龄:); scanf(%s,stui.age); printf(nnn修改成功!n); save_file(stu,sum); break; case 3: /修改性别 printf(t请输入新的性别:); scanf(%s,stui.sex); printf(nnn修改成功!n); save_file(stu,sum); break; case 4: /修改出生日期 pr
14、intf(t请输入新的出生年月(yyyy.mm):); scanf(%s,stui.birth); printf(nnn修改成功!n); save_file(stu,sum); break; case 5: /修改籍贯 printf(t请输入新的籍贯:); scanf(%s,stui.add); printf(nnn修改成功!n); save_file(stu,sum); break; case 6: /修改院系 printf(t请输入新的院系:); scanf(%s,stui.depar); printf(nnn修改成功!n); save_file(stu,sum); break; case
15、 7: /修改专业 printf(t请输入新的专业名称:); scanf(%s,stui.zhuanye); printf(nnn修改成功!n); save_file(stu,sum); break; case 8: /修改班级 printf(t请输入新的班级:); scanf(%s,stui.classes); printf(nnn修改成功!n); save_file(stu,sum); break; case 9: /修改民族 printf(t请输入新的民族名称:); scanf(%s,stui.nation); printf(nnn修改成功!n); save_file(stu,sum);
16、 break; case 0: return; /不修改,退出 default:printf(t请在0到9之间选择:); /若输入的值不在09,则提示 /查询学生信息void seek(struct student stu,int sum) int i,item,flag; /i控制数组下标,item控制子菜单的选择,flag为判断条件 char s111; system(cls); while(1) system(cls); printf(nntt-n); printf(tt 1.按学号查询n); printf(tt 2.按姓名查询n); printf(tt 3.退出本菜单n); print
17、f(tt-n); printf(tt 请选择子菜单编号:); scanf(%d,&item); /选择子菜单 flag=0; switch(item) case 1: /按学号进行查找 printf(tt请输入要查询的学生的学号:); scanf(%s,s1); for(i=0;isum;i+) if(strcmp(stui.num,s1)=0) /判断学号是否存在 /输出 flag=1; printf(该学生学号:%sn,stui.num); printf(该学生姓名:%sn,stui.name); printf(该学生院系:%sn,stui.depar); printf(该学生专业:%sn
18、,stui.zhuanye); printf(该学生班级:%sn,stui.classes); printf(该学生性别:%sn,stui.sex); printf(该学生年龄:%sn,stui.age); printf(该学生出生日期:%sn,stui.birth); printf(该学生民族:%sn,stui.nation); printf(该学生籍贯:%sn,stui.add); getch(); if(flag=0) /当上一个if条件不成立,flag=0,学生学号不存在,输出提示; printf(nnntt该学号不存在!n); getch(); break; case 2: /按姓名
19、进行查找 printf(nntt请输入要查询的学生的姓名:); scanf(%s,s1); for(i=0;isum;i+) if(strcmp(stui.name,s1)=0) /判断姓名是否存在 /输出 flag=1; printf(该学生学号:%sn,stui.num); printf(该学生姓名:%sn,stui.name); printf(该学生院系:%sn,stui.depar); printf(该学生专业:%sn,stui.zhuanye); printf(该学生班级:%sn,stui.classes); printf(该学生性别:%sn,stui.sex); printf(该学
20、生年龄:%sn,stui.age); printf(该学生出生日期:%sn,stui.birth); printf(该学生民族:%sn,stui.nation); printf(该学生籍贯:%sn,stui.add); getch(); if(flag=0) /当上一个if条件不成立,flag=0,学生姓名不存在,输出提示; printf(nnntt该姓名不存在!n); getch(); break; case 3: system(cls); return; default:printf(nnntt请在1-3之间选择n); /若输入的值不在13,则提示 getch(); /删除某学生信息int
21、 del(struct student stu,int sum) int i,j,flag=0; char s19; system(cls); printf(nntt请输入要删除学生的学号:); scanf(%s,s1);for(i=0;isum;i+)if(strcmp(stui.num,s1)=0) /判断学号是否存在 flag=1; /该学号存在,用后一个数组覆盖此数组,循环,即可删除 for(j=i;jsum-1;j+) stuj=stuj+1; if(flag=0) /该学号不存在 printf(nntt该学号不存在!n); getch(); if(flag=1) /删除成功,输出提
22、示 printf(nnntt删除成功n); getch(); sum-; /删除成功,sum自-1; save_file(stu,sum); /保存 return sum; /返回删除后存在的学生人数 /显示打印已有学生信息 void show(struct student stu,int sum) int i; system(cls); printf(nntt 所有学生的信息为:n); for(i=0;isum;i+) /for循环打印信息 printf(学号:%st,stui.num); printf(姓名:%st,stui.name); printf(院系:%st,stui.depar)
23、; printf(专业:%st,stui.zhuanye); printf(班级:%st,stui.classes); printf(性别:%st,stui.sex); printf(年龄:%st,stui.age); printf(出生日期:%st,stui.birth); printf(民族:%st,stui.nation); printf(籍贯:%snn,stui.add); printf(按任意键返回); getch(); system(cls);/添加学生信息int insert(struct student stu,int sum) int i,j,flag,m; FILE *sp; system(cls); printf(t请输入要添加的学生的个数:); scanf(%d,&m); read_file(stu); /在添加前读文件 do flag=1; i=sum; /此时i表示数组下标,添加学生,保存到当前已有数组的下一个,sum为总数,stui表示第sum+1个人 while(flag) flag=0; printf(nn 请输入第 %d 个学生的学号:,i+1); scanf(%s,stui.num); for(j=0;ji;j+) /判断此学号是否存在
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1