收藏 分销(赏)

专业课程设计学生学籍标准管理系统源代码.doc

上传人:a199****6536 文档编号:2727226 上传时间:2024-06-05 格式:DOC 页数:23 大小:49.04KB 下载积分:10 金币
下载 相关 举报
专业课程设计学生学籍标准管理系统源代码.doc_第1页
第1页 / 共23页
专业课程设计学生学籍标准管理系统源代码.doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
#include"stdio.h" #include"conio.h" #include"stdlib.h" #include"string.h" #define N 1000 //N为可输入学生总人数,可依照需要更改 #define M 2 //M为宏定义(在创立密码函数中)可建立登陆顾客个数,可更改 struct student //定义学生信息构造体数组 { char num[9]; //学号 char name[20]; //姓名 char depar[15]; //院系 char zhuanye[15]; //专业 char classes[5]; //班级 char age[3]; //年龄 char sex[4]; //性别 char nation[5]; //民族 char birth[9]; //出生日期 char add[10]; //籍贯 }; struct code //定义密码构造体数组 { char name[20]; char code[7]; }co[M],s0; //确认与否新创立密码文献模块 int code() { FILE *fp; if((fp=fopen("学生学籍管理系统__code.txt","rt"))==NULL) { printf("密码文献不存在,请输入新顾客名及密码:\n"); //若不存在此密码文献,则提示顾客创立密码 printf("请输入任意键继续!"); getch(); system("cls"); return 1; //无密码文献返回1 } else return 0; //已有密码文献返回0 } //新创立初始密码 void code_input() { FILE *fp; int i; if((fp=fopen("学生学籍管理系统__code.txt","wt"))==NULL); //当建立密码文献成功时,进入for循环 for(i=0;i<M;i++) //M为宏定义可建立登陆顾客个数,可更改 { printf("请录入第%d个顾客名:",i+1); //创立不同顾客名及密码 scanf("%s",co[i].name); printf("请录入第%d个密码(最多6位):",i+1); scanf("%s",co[i].code); printf("\n"); fwrite(&co[i],sizeof(struct code),1,fp); //将密码保存进文献中 } fclose(fp); getch(); system("cls"); } //顾客登陆验证模块 int enter(char name1[20],char code1[6]) { FILE *fp; int flog=0; int i; fp=fopen("学生学籍管理系统__code.txt","rt");//打开存储密码文献 for(i=0;i<M;i++) { fread(&co[i],sizeof(struct code),1,fp); //读密码文献 if((strcmp(name1,co[i].name)==0)) //如果输入顾客名与已存在顾客名相似,再比较密码与否相似,否则进行下一种顾客名比较 { if((strcmp(code1,co[i].code)==0)) //比较此顾客名下密码与否一致 return 1; //验证成功后回到主函数 } } if(i>=M) //当比较完毕后,都没有符合条件顾客名与密码,则直接跳出程序 printf("******您无权进入此管理系统!!!*****"); fclose(fp); getch(); exit(1); } //从文献读入数据 int read_file(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(&stu[i],sizeof(struct student),1,sp))==1)//判断文献与否处在结束位置 { if(stu[i].num==0) //若文献内容为空,则跳出循环 break; 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;i<sum;i++) if(fwrite(&stu[i],sizeof(struct 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",stu[i].num); printf("\n请录入姓名:"); scanf("%s",stu[i].name); printf("\n请录入院系:"); scanf("%s",stu[i].depar); printf("\n请录入专业:"); scanf("%s",stu[i].zhuanye); printf("\n请录入班级:"); scanf("%s",stu[i].classes); printf("\n请录入性别:"); scanf("%s",stu[i].sex); printf("\n请录入年龄:"); scanf("%s",stu[i].age); printf("\n请录入出生日期(yyyymmdd):"); scanf("%s",stu[i].birth); printf("\n请录入民族:"); scanf("%s",stu[i].nation); printf("\n请录入籍贯:"); scanf("%s",stu[i].add); i++; system("cls"); }while(i<x); //当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 s1[8]; FILE *sp; system("cls"); read_file(stu,sum); //读函数 do { printf("\n\n\n请输入你要修改学号:\n"); scanf("%s",s1); //要修改学生学号 for(i=0;i<sum;i++) //查找此学生 { if(strcmp(stu[i].num,s1)==0) //若找到该生,输出该生信息 { printf("该学生学号:%s\n",stu[i].num); printf("该学生姓名:%s\n",stu[i].name); printf("该学生院系:%s\n",stu[i].depar); printf("该学生专业:%s\n",stu[i].zhuanye); printf("该学生班级:%s\n",stu[i].classes); printf("该学生性别:%s\n",stu[i].sex); printf("该学生年龄:%s\n",stu[i].age); printf("该学生出生日期:%s\n",stu[i].birth); printf("该学生民族:%s\n",stu[i].nation); printf("该学生籍贯:%s\n",stu[i].add); a=0; //找到该生,a=0; break; //出for循环 } } if(a==1) //若没有找到该生,a=1,输出提示语句 printf("\n\n该学号不存在!请重新输入学号:\n"); }while(a); //当a=0,即没有找到该生,则继续循环重新输入学生学号 printf("\t****************\n"); printf("\t你选取你要修改选项:\n"); printf("\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("\n\t请选取你要进行操作:"); scanf("%d",&item); ///item控制子菜单选取 switch(item) { case 1: //修改姓名 printf("\t请输入新姓名:"); scanf("%s",stu[i].name); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 2: //修改年龄 printf("\t请输入新年龄:"); scanf("%s",stu[i].age); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 3: //修改性别 printf("\t请输入新性别:"); scanf("%s",stu[i].sex); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 4: //修改出生日期 printf("\t请输入新出生年月(yyyy.mm):"); scanf("%s",stu[i].birth); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 5: //修改籍贯 printf("\t请输入新籍贯:"); scanf("%s",stu[i].add); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 6: //修改院系 printf("\t请输入新院系:"); scanf("%s",stu[i].depar); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 7: //修改专业 printf("\t请输入新专业名称:"); scanf("%s",stu[i].zhuanye); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 8: //修改班级 printf("\t请输入新班级:"); scanf("%s",stu[i].classes); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 9: //修改民族 printf("\t请输入新民族名称:"); scanf("%s",stu[i].nation); printf("\n\n\n修改成功!\n"); save_file(stu,sum); break; case 0:return; //不修改,退出 default:printf("\t请在0到9之间选取:"); //若输入值不在0~9,则提示 } } } //查询学生信息 void seek(struct student stu[],int sum) { int i,item,flag; //i控制数组下标,item控制子菜单选取,flag为判断条件 char s1[11]; system("cls"); while(1) { system("cls"); printf("\n\n\t\t------------------\n"); printf("\t\t 1.按学号查询\n"); printf("\t\t 2.按姓名查询\n"); printf("\t\t 3.退出本菜单\n"); printf("\t\t------------------\n"); printf("\t\t 请选取子菜单编号:"); scanf("%d",&item); //选取子菜单 flag=0; switch(item) { case 1: //按学号进行查找 printf("\t\t请输入要查询学生学号:"); scanf("%s",s1); for(i=0;i<sum;i++) if(strcmp(stu[i].num,s1)==0) //判断学号与否存在 { //输出 flag=1; printf("该学生学号:%s\n",stu[i].num); printf("该学生姓名:%s\n",stu[i].name); printf("该学生院系:%s\n",stu[i].depar); printf("该学生专业:%s\n",stu[i].zhuanye); printf("该学生班级:%s\n",stu[i].classes); printf("该学生性别:%s\n",stu[i].sex); printf("该学生年龄:%s\n",stu[i].age); printf("该学生出生日期:%s\n",stu[i].birth); printf("该学生民族:%s\n",stu[i].nation); printf("该学生籍贯:%s\n",stu[i].add); getch(); } if(flag==0) //当上一种if条件不成立,flag=0,学生学号不存在,输出提示; printf("\n\n\n\t\t该学号不存在!\n"); getch(); break; case 2: //按姓名进行查找 printf("\n\n\t\t请输入要查询学生姓名:"); scanf("%s",s1); for(i=0;i<sum;i++) if(strcmp(stu[i].name,s1)==0) //判断姓名与否存在 { //输出 flag=1; printf("该学生学号:%s\n",stu[i].num); printf("该学生姓名:%s\n",stu[i].name); printf("该学生院系:%s\n",stu[i].depar); printf("该学生专业:%s\n",stu[i].zhuanye); printf("该学生班级:%s\n",stu[i].classes); printf("该学生性别:%s\n",stu[i].sex); printf("该学生年龄:%s\n",stu[i].age); printf("该学生出生日期:%s\n",stu[i].birth); printf("该学生民族:%s\n",stu[i].nation); printf("该学生籍贯:%s\n",stu[i].add); getch(); } if(flag==0) //当上一种if条件不成立,flag=0,学生姓名不存在,输出提示; printf("\n\n\n\t\t该姓名不存在!\n"); getch(); break; case 3: system("cls"); return; default:printf("\n\n\n\t\t请在1-3之间选取\n"); //若输入值不在1~3,则提示 getch(); } } } //删除某学生信息 int del(struct student stu[],int sum) { int i,j,flag=0; char s1[9]; system("cls"); printf("\n\n\t\t请输入要删除学生学号:"); scanf("%s",s1); for(i=0;i<sum;i++) if(strcmp(stu[i].num,s1)==0) //判断学号与否存在 { flag=1; //该学号存在,用后一种数组覆盖此数组,循环,即可删除 for(j=i;j<sum-1;j++) stu[j]=stu[j+1]; } if(flag==0) //该学号不存在 printf("\n\n\t\t该学号不存在!\n"); getch(); if(flag==1) //删除成功,输出提示 { printf("\n\n\n\t\t删除成功\n"); getch(); sum--; //删除成功,sum自-1; } save_file(stu,sum); //保存 return sum; //返回删除后存在学生人数 } //显示打印已有学生信息 void show(struct student stu[],int sum) { int i; system("cls"); printf("\n\n\t\t 所有学生信息为:\n"); for(i=0;i<sum;i++) //for循环打印信息 { printf("学号:%s\t",stu[i].num); printf("姓名:%s\t",stu[i].name); printf("院系:%s\t",stu[i].depar); printf("专业:%s\t",stu[i].zhuanye); printf("班级:%s\t",stu[i].classes); printf("性别:%s\t",stu[i].sex); printf("年龄:%s\t",stu[i].age); printf("出生日期:%s\t",stu[i].birth); printf("民族:%s\t",stu[i].nation); printf("籍贯:%s\n\n",stu[i].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为总数,stu[i]表达第sum+1个人 while(flag) { flag=0; printf("\n\n 请输入第 %d 个学生学号:",i+1); scanf("%s",stu[i].num); for(j=0;j<i;j++) //判断此学号与否存在 if(strcmp(stu[i].num,stu[j].num)==0) { printf("\n\n\n该学号已有,请重新输入!\n"); flag=1; break; /*如果该学号已有则立即对出该层for循环*/ } } printf("\n 请输入第 %d 个学生姓名:",i+1); scanf("%s",stu[i].name); printf("\n 请输入第 %d 个学生院系:",i+1); scanf("%s",stu[i].depar); printf("\n 请输入第 %d 个学生专业:",i+1); scanf("%s",stu[i].zhuanye); printf("\n 请输入第 %d 个学生班级:",i+1); scanf("%s",stu[i].classes); printf("\n 请输入第 %d 个学生性别:",i+1); scanf("%s",stu[i].sex); printf("\n 请输入第 %d 个学生年龄:",i+1); scanf("%s",stu[i].age); printf("\n 请输入第 %d 个学生出生日期:",i+1); scanf("%s",stu[i].birth); printf("\n 请输入第 %d 个学生民族:",i+1); scanf("%s",stu[i].nation); printf("\n 请输入第 %d 个学生籍贯:",i+1); scanf("%s",stu[i].add); if(flag==0) { i=i; i++; } }while(i<sum+m); //当下标i不大于sum+m时,循环继续,stu[sum+m]指向添加所有学生后所用数组下一种单元 sum+=m; //添加完毕后,学生总人数变为sum+m; printf("\n\n\n\n\n\n\n\n\t\t\t\t 录入完毕!"); save_file(stu,sum); //保存 getch(); system("cls"); return sum; //返回添加完毕后既有学生人数 } //对学生信息排序 void rank(struct student stu[],int sum) { int i,j; FILE *sp; struct student s1; system("cls"); for(i=0;i<sum-1;i++) //对学生信息按照学号用 选取排序法 进行排序 for(j=i+1;j<sum;j++) if(strcmp(stu[i].num,stu[j].num)>0) //小者换到stu[i] { s1=stu[i]; stu[i]=stu[j]; stu[j]=s1; } printf("\n\n\t\t 所有学生信息为:\n"); for(i=0;i<sum;i++) //打印排好后学生信息 { printf("学号:%s\t",stu[i].num); printf("姓名:%s\t",stu[i].name); printf("院系:%s\t",stu[i].depar); printf("专业:%s\t",stu[i].zhuanye); printf("班级:%s\t",stu[i].classes); printf("性别:%s\t",stu[i].sex); printf("年龄:%s\t",stu[i].age); printf("出生日期:%s\t",stu[i].birth); printf("民族:%s\t",stu[i].nation); printf("籍贯:%s\n\n",stu[i].add); } printf("按任意键返回"); getch(); system("cls"); } //对班级学生人数进行记录 void count(struct student stu[],int sum) { int i,count=0; char s1[5],s2[5],s3[5]; system("cls"); printf("\t\t请输入你要记录学生人数学院:"); scanf("%s",s1); printf("\t\t请输入你要记录学生人数专业:"); scanf("%s",s2); printf("\t\t请输入你要记录学生人数班级:"); scanf("%s",s3); for(i=0;i<sum;i++) if(strcmp(s1,stu[i].depar)==0&&strcmp(s2,stu[i].zhuanye)==0&&strcmp(s3,stu[i].classes)==0) //判断条件 count++; //count为符合条件学生人数 printf("%s学院%s专业%s班级学生人数为:%d人",s1,s2,s3,count); getch(); } //菜单函数 void menu() { int choice,sum; struct student stu[N]; sum=read_file(stu); //sum为现已存入文献中学生人数 do { system("cls"); printf("\n\n\n"); printf("\t\t **********欢迎进入**********\n"); printf("\t\t********学生学籍管理系统********\n\n\n"); printf("\t\t\t 1.创立学生信息\n"); printf("\t\t\t 2.修改学生信息\n"); printf("\t\t\t 3.查询学生信息\n"); printf("\t\t\t 4.删除学生信息\n"); printf("\t\t\t 5.添加学生信息\n"); printf("\t\t\t 6.保存学生信息\n"); printf("\t\t\t 7.显示已录入学生信息\n"); printf("\t\t\t 8.对学生信息排序\n"); printf("\t\t\t 9.记录学生信息\n"); printf("\t\t\t 0.退出程序\n"); printf("\t\t\t 请选取您要执行操作(0~9):"); scanf("%d",&choice); switch(choice) { case 1:sum=found(stu); break; //sum=创立后所存储学生人数 case 2:modify(stu,sum); break; //修改 case 3:seek(stu,sum); break; //查询 case 4:sum=del(stu,sum); break; //sum=删除学生后所存储学生人数 case 5:sum=insert(stu,sum); break; //sum=添加学生后所存储学生人数 case 6:save_file(stu,sum); break; //保存文献 case 7:show(stu,sum); break; //显示 case 8:rank(stu,sum); break; //排序 case 9:count(stu,sum); break; //记录某班级学生人数 case 0: break; } }while(choice!=0); } void main() { int flag=0; flag=code(); //确认与否新创立密码文献。若没有存储密码文献,则flag=1,若有,flag=0; if(flag) //判断if条件与否成立 code_input(); //当flag=1,即没有存储密码文献时,进入code_input()函数,创立顾客名及密码;当flag=0,则不用新建密码; printf("*******请输入你顾客名及密码*******:\n"); //登陆该管理系统前需身份验证 scanf("%s %s",s0.name,s0.code); //输入顾客顾客名及密码 enter(s0.name,s0.code); //登陆管理系统前,进入enter()函数验证模块 system("cls"); menu(); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服