学生学籍管理系统.docx
- 文档编号:16741634
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:26
- 大小:20.50KB
学生学籍管理系统.docx
《学生学籍管理系统.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统.docx(26页珍藏版)》请在冰点文库上搜索。
学生学籍管理系统
#include
#include
#include
#include
#defineN100/*存储100个学生的学籍信息*/
intflag;/*标记是否登录*/
structdate/*出生日期*/
{
intyear;
intmonth;
intday;
};
structstudent
{
charnum[20];/*学号*/
charname[25];/*姓名*/
charsex[10];/*性别*/
structdatebirthday;/*出生年月*/
intage;/*年龄*/
charaddr[50];/*籍贯*/
chardept[50];/*系别*/
charmajor[30];/*专业*/
charclasss[30];/*班级*/
charphone[20];/*电话*/
}stu[N];
voidlogin()/*登录*/
{
voidmenu();
system("cls");
if(flag)
{
printf("已经登录!
\n");
printf("Pressanykeytocontinue…\n");
getchar();
getchar();
system("cls");
menu();
}
intload();
intn,i,m,w;
FILE*fp;
if((fp=fopen("D:
\\file.txt","rb"))!
=NULL)/*不是空文件*/
n=load();/*打开文件*/
else
n=0;
structstudents;
charpassword[20];
intd,q;
printf("\n\t请选择登录身份:
1.管理员2.用户[]\b\b");
scanf("%d",&d);
if(d==1)
{
printf("\n\t\t\t请输入密码:
");
getchar();
intj=0;
while
(1)
{
password[j]=getch();
if(password[j]=='\r')
break;
printf("*");
j++;
}
password[j]='\0';
if(!
strcmp(password,"930322"))/*判断密码是否正确*/
{
flag=1;
printf("\n\t登录成功!
\n");
printf("\tPress[Enter]keytocontinue…");
getchar();
system("cls");
menu();
}
if(!
flag)
{
printf("\t\n密码错误!
\n");
printf("Whatdoyouwanttodonext?
1.继续登录2.返回菜单[]\b\b");
scanf("%d",&q);
if(q==1)/*继续登录*/
{
system("cls");
login();
}
elseif(q==2)/*返回主菜单*/
{
system("cls");
menu();
}
}
}
else
{
printf("\n\t\t\t用户名:
");
scanf("%s",s.name);
printf("\t\t\t密码:
");
intj=0;
while
(1)
{
password[j]=getch();
if(password[j]=='\r')
break;
printf("*");
j++;
}
password[j]='\0';
flag=0;/*未登录时flag=0*/
for(i=0;i if(! strcmp(s.name,stu[i].name)&&! strcmp(s.name,password)) { flag=1;/*登录成功flag=1*/ break; } if(flag) { printf("\n\t登录成功! \n"); printf("\tPressanykeytocontinue…\n"); getchar();getchar(); system("cls"); menu();/*登录成功后返回主菜单*/ } else { m=0;/*设置m是为了避免陷入登录失败时跳不出登录界面*/ w=1;/*设置w是为了避免输出多次“用户不存在”*/ intq;/*q为选项*/ do { if(w>0) printf("用户名不存在或密码错误! \n");/*第一次登录时输入不存在的用户时显示*/ printf("Whatdoyouwanttodonext? 1.继续登录2.返回菜单[]\b\b"); scanf("%d",&q); if(q==1)/*继续登录*/ { login(); m=1; } elseif(q==2)/*返回主菜单*/ { system("cls"); menu(); m=1; } else { printf("选择错误! 请重新选择: \n"); w=0; } }while(m==0); } } } voidprintf_one(intk)/*输出一个学生的信息*/ { system("color4e"); printf("学号: %s\n",stu[k].num); printf("姓名: %s\n",stu[k].name); printf("性别: %s\n",stu[k].sex); printf("出生年月: %d/%d/%d\n",stu[k].birthday.year,stu[k].birthday.month,stu[k].birthday.day); printf("年龄: %d\n",stu[k].age); printf("籍贯: %s\n",stu[k].addr); printf("系别: %s\n",stu[k].dept); printf("专业: %s\n",stu[k].major); printf("班级: %s\n",stu[k].classs); printf("电话: %s\n",stu[k].phone); } voidprintf_n(intn)/*浏览时输出所有学生的信息*/ { system("color2e"); intj,i=1; for(j=0;j { printf("第%d个学生: \n",i++); printf_one(j); printf("\n"); } getchar(); } intload()/*打开文件,读取里面的数据*/ { FILE*fp; inti; if((fp=fopen("D: \\file.txt","rb"))==NULL)/*读入空文件,rb表示打开一个二进制文件,只允许读数据*/ { printf("\n文件不存在! 请输入: \n"); return0; } for(i=0;! feof(fp);i++)/*处理到文件结尾*/ fread(&stu[i],sizeof(structstudent),1,fp);/*fread(buffer,size,cout,fp)将磁盘文件中的一批数据作为一个整体一次性读取出来, buffer指定数据块位置,sizeof数据块字节数,count读取次数,fp指向源磁盘文件*/ fclose(fp); return(i-1); } voidinput(intk)/*输入学生信息*/ { getchar(); printf("学号: ");gets(stu[k].num); printf("姓名: ");gets(stu[k].name); printf("性别: ");gets(stu[k].sex); printf("出生年月: ");scanf("%d/%d/%d",&stu[k].birthday.year,&stu[k].birthday.month,&stu[k].birthday.day); printf("年龄: ");scanf("%d",&stu[k].age);getchar(); printf("籍贯: ");gets(stu[k].addr); printf("系别: ");gets(stu[k].dept); printf("专业: ");gets(stu[k].major); printf("班级: ");gets(stu[k].classs); printf("电话: ");gets(stu[k].phone); } voidsave(intn)/*保存学生信息*/ { voidexit(); FILE*fp; inti; if((fp=fopen("D: \\file.txt","wb"))==NULL)/*只打开或建立一个二进制文件,只允许写数据*/ { printf("\nCannotopenfile! \n"); exit(); } for(i=0;i if(stu[i].name[0]! ='\0') if(fwrite(&stu[i],sizeof(structstudent),1,fp)! =1)/*将一批数据作为一个整体一次性写入磁盘文件*/ printf("文件写入错误! \n"); fclose(fp); } voidprintf_back()/*添加学生信息后显示的“是浏览还是返回”*/ { intw,k=0; voidbrowse(); voidmenu(); printf("\n\n\t^_^.插入成功.^_^\n\n"); do { printf("Whatdoyouwanttodonext? \n\n\t1).浏览所有\t2).返回: []\b\b"); scanf("%d",&w); if(w==1) { system("cls"); browse(); } elseif(w==2) { system("cls"); menu(); } else printf("选择错误! 请重新选择! \n"); }while(k==0); } voidinsert()/*添加学生信息*/ { inti,n,k,t; FILE*fp; if((fp=fopen("D: \\file.txt","rb"))==NULL)/*读入空文件,rb表示打开一个二进制文件,只允许读数据*/ { printf("Howmanypeopledoyouwanttoadd(1-%d)? : ",N-1); n=0; } else { n=load(); printf("Howmanystudentdoyouwanttoinsert(1-%d)? : ",N-n-1); } scanf("%d",&t); k=n+t; for(i=n;i { printf("\n输入第%d个学生学籍信息.\n",i-n+1); input(i); } save(k);/*保存所有学生的信息*/ printf_back(); } voiddeleter()/*删除*/ { voidmenu(); if(! flag) { printf("\n\n\t请先登录! \n"); printf("\n\t请按Enter键进入登录界面! "); getchar(); getchar(); login(); } else { structstudents; inti,n,k,w0,w1; n=load(); do { k=-1; //printf_n(n);/*删除之前先显示所有学生的信息*/ do { printf("\n\n请输入您想要删除的学生的姓名! \nName: "); scanf("%s",s.name); for(i=0;i if(strcmp(s.name,stu[i].name)==0) { k=i; s=stu[i]; } if(k==-1) { intm; printf("\n\n没有这个学生的信息! \n"); printf("Whatdoyouwanttodonext? 1.继续输入2.返回主菜单[]\b\b"); scanf("%d",&m); if(m==1) deleter(); else { k=0; menu(); } } }while(k==-1); printf_one(k); printf("\n\t确定删除? \n\t1).是2).返回[]\b\b");/*再次询问是否删除*/ scanf("%d",&w0); if(w0==1) { stu[k].name[0]='\0'; save(n); } else break; printf("\n\t^_^.成功删除^_^.\n"); printf("Whatdoyouwanttodo? \n\t1).继续2).返回[]\b\b"); scanf("%d",&w1); }while(w1==1); system("cls"); menu();/*不再删除时返回主菜单,w1! =1*/ } } voidsearch()/*查找*/ { voidmenu(); intw0,k,i,n,w1,w2; structstudents; FILE*fp; if((fp=fopen("D: \\file.txt","rb"))! =NULL)/*不是空文件*/ n=load(); do { printf("请选择查找类别: 1.姓名2.学号[]\b\b"); scanf("%d",&w1); if(w1<1||w1>2) { printf("输入错误! 请重新输入! \n"); w2=1; } else w2=0;/*这里要注意: 不加这句话会陷入死循环,跳不出来*/ }while(w2==1); if(w1==1)/*按姓名查找*/ { do { k=-1; do { printf("\n请输入您想要查找的学生的姓名! \nName: "); scanf("%s",s.name); for(i=0;i if(strcmp(s.name,stu[i].name)==0) { k=i; s=stu[i]; } if(k==-1)/*没有找到*/ { into; printf("\n\n没有这个学生的信息! \n! "); printf("Whatdoyouwanttodo? \n\t1.继续2.返回菜单[]\b\b"); scanf("%d",&o); if(o==1) { system("cls"); search();/*继续查找*/ } else { system("cls"); menu(); } } }while(k==-1); system("cls"); printf_one(k);/*找到以后输出这个学生的信息*/ printf("\nWhatdoyouwanttodonext? \n\t1).继续2).返回菜单[]\b\b"); scanf("%d",&w0); }while(w0==1); system("cls"); menu();/*不再查找时返回主菜单*/ } else/*按学号查找*/ { do { k=-1; do { printf("\n请输入您想要查找的学生的学号! \nNum: "); scanf("%s",s.num); for(i=0;i if(strcmp(s.num,stu[i].num)==0)/*找到了*/ { k=i; s=stu[i]; } if(k==-1)/*没有找到*/ { into; printf("\n\n没有这个学生的信息! \n! "); printf("Whatdoyouwanttodo? \n\t1.继续2.返回菜单[]\b\b"); scanf("%d",&o); if(o==1) { system("cls"); search();/*继续查找*/ } else { system("cls"); menu(); } } }while(k==-1); system("cls"); printf_one(k);/*找到以后输出这个学生的学籍信息*/ printf("\nWhatdoyouwanttodo? \n\t1).继续2).返回菜单[]\b\b"); scanf("%d",&w0); }while(w0==1); system("cls"); menu();/*不再查找时返回主菜单*/ } } intmodify_data(inti)/*修改信息函数*/ { intc,w1; voidmenu(); do { puts("\n请选择要修改的选项: \n\n1.学号2.姓名3.性别4.出生日期5.年龄6.籍贯7.系别8.专业9.班级10.电话11.所有信息12.取消并返回"); printf("请选择? : []\b\b\b"); scanf("%d",&c); if(c>12||c<1) { puts("\n选择错误! 请重新选择! "); getchar(); } }while(c>12||c<1); do { switch(c) { case1: printf("学号: ");scanf("%s",stu[i].num);break; case2: printf("姓名: ");scanf("%s",stu[i].name);break; case3: printf("性别: ");scanf("%s",stu[i].sex);break; case4: printf("出生年月: ");scanf("%d/%d/%d",&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day);break; case5: printf("年龄: ");scanf("%d",&stu[i].age);break; case6: printf("籍贯: ");scanf("%s",stu[i].addr);break; case7: printf("系别: ");scanf("%s",stu[i].dept);break; case8: printf("专业: ");scanf("%s",stu[i].major);break; case9: printf("班级: ");scanf("%s",stu[i].classs);break; case10: printf("电话: ");scanf("%s",stu[i].phone);break; case11: input(i);break;/*修改这个学生的所有信息*/ case12: menu();/*返回主菜单*/ } puts("\nNow: \n"); printf_one(i);/*输出修改后的这个学生的信息*/ printf("\n确定? \n\n\t1).是2).不,重新修改3).返回不保存[]\b\b"); scanf("%d",&w1); }while(w1==2); return(w1);/*修改成功并选择1后返回1*/ } voidmodify()/*修改*/ { voidmenu(); if(! flag) { printf("\n\n\t请先登录! \n"); printf("\n\t请按Enter键进入登录界面! "); getchar(); getchar(); login(); } else { structstudents; inti,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; //printf_n(n);/*删除之前先显示所有学生的信息*/ do { printf("\n请输入您想要修改的学生的姓名! \nName: "); scanf("%s",s.name); for(i=0;i if(strcmp(s.name,stu[i].name)==0)/*与其中一个学生匹配*/ { k=i; s=stu[i]; } if(k==-1)/*没有找到输入的学生*/ { into; printf("\n\n没有这个学生的信息! \n"); printf("Whatdoyouwanttodo? \n\t1.继续2.返回菜单[]\b\b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 学籍 管理 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)