




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#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; /性别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;/无密码文件返回1elsereturn 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,);printf(请录入第%d个密码(最多6位):,i+1);scanf(%s,coi.code);printf(n);fwrite(&coi,sizeof(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(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)/若文件内容为空,则跳出循环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;isum;i+)if(fwrite(&stui,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,stui.num);printf(n请录入姓名:);scanf(%s,);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.nation);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);read_file(stu,sum);/读函数doprintf(nnn请输入你要修改的学号:n);scanf(%s,s1);/要修改的学生学号for(i=0;isum;i+)/查找此学生if(strcmp(stui.num,s1)=0)/若找到该生,输出该生的信息printf(该学生学号:%sn,stui.num);printf(该学生姓名:%sn,);printf(该学生院系:%sn,stui.depar);printf(该学生专业:%sn,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);a=0;/找到该生,a=0;break;/出for循环if(a=1)/若没有找到该生,a=1,输出提示语句printf(nn该学号不存在!请重新输入学号: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(nt请选择你要进行的操作:);scanf(%d,&item);/item控制子菜单的选择 switch(item) case 1:/修改姓名printf(t请输入新的姓名:);scanf(%s,);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:/修改出生日期printf(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 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); 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); printf(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,);printf(该学生院系:%sn,stui.depar);printf(该学生专业:%sn,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:/按姓名进行查找 printf(nntt请输入要查询的学生的姓名:); scanf(%s,s1); for(i=0;isum;i+) if(strcmp(,s1)=0)/判断姓名是否存在 /输出 flag=1; printf(该学生学号:%sn,stui.num);printf(该学生姓名:%sn,);printf(该学生院系:%sn,stui.depar);printf(该学生专业:%sn,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 3: system(cls); return; default:printf(nnntt请在1-3之间选择n);/若输入的值不在13,则提示 getch(); /删除某学生信息int 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)/删除成功,输出提示 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,);printf(院系:%st,stui.depar);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+)/判断此学号是否存在if(strcmp(stui.num,stuj.num)=0) printf(nnn该学号已有,请重新输入!n);flag=1; break;/*如果该学号已有则立刻对出该层for循环*/ printf(n 请输入第 %d 个学生的姓名:,i+1); scanf(%s,); printf(n 请输入第 %d 个学生的院系:,i+1); scanf(%s,stui.depar); printf(n 请输入第 %d 个学生的专业:,i+1); scanf(%s,stui.zhuanye); printf(n 请输入第 %d 个学生的班级:,i+1); scanf(%s,stui.classes); printf(n 请输入第 %d 个学生的性别:,i+1); scanf(%s,stui.sex); printf(n 请输入第 %d 个学生的年龄:,i+1); scanf(%s,stui.age); printf(n 请输入第 %d 个学生的出生日期:,i+1); scanf(%s,stui.birth); printf(n 请输入第 %d 个学生的民族:,i+1); scanf(%s,stui.nation); printf(n 请输入第 %d 个学生的籍贯:,i+1); scanf(%s,stui.add); if(flag=0) i=i; i+; while(isum+m);/当下标i小于sum+m时,循环继续,stusum+m指向添加全部学生后所用数组的下一个单元 sum+=m;/添加完毕后,学生总人数变为sum+m; printf(nnnnnnnntttt 录入完毕!); 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;isum-1;i+)/对学生信息按照学号用 选择排序法 进行排序 for(j=i+1;j0)/小者换到stui s1=stui;stui=stuj;stuj=s1; printf(nntt 所有学生的信息为:n); for(i=0;isum;i+)/打印排好后的学生信息 printf(学号:%st,stui.num);printf(姓名:%st,);printf(院系:%st,stui.depar);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);/对班级的学生人数进行统计void count(struct student stu,int sum)int i,count=0;char s15,s25,s35;system(cls); printf(tt请输入你要统计学生人数的学院:);scanf(%s,s1);printf(tt请输入你要统计学生人数的专业:);scanf(%s,s2);printf(tt请输入你要统计学生人数的班级:);scanf(%s,s3);for(i=0;isum;i+)if(strcmp(s1,stui.depar)=0&strcmp(s2,stui.zhuanye)=0&strcmp(s3,stui.classes)=0)/判断条件count+;/count为符合条件的学生人数printf(%s学院%s专业%s班级的学生人数为:%d人,s1,s2,s3,count);getch();/菜单函数void menu() int choice,sum;struct student stuN;sum=read_file(stu);/sum为现已存入文件中学生的人数dosystem(cls);printf(nnn);printf(tt *欢迎进入*n);printf(tt*学生学籍管理系统*nnn);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省日照市莒县第三中学2024-2025学年七年级下学期第三次月考生物试题(含答案)
- 北师大版五年级上册数学第五单元 分数的意义 检测卷(无答案)
- 购买公司的合同范本
- 国家正规购车合同范本
- 平整铁板出售合同范本
- 抵押信托贷款合同范本
- 公司家政服务合同范本
- 外兑带合同范本
- 疫苗货运合同范本
- 物流运输居间合同范本
- T/CGAS 026.2-2023瓶装液化石油气管理规范第2部分:平台建设
- 2025-2030中国气雾剂行业发展现状及发展趋势与投资风险分析
- 2025年客运车辆驾驶员(技师)职业技能鉴定考试题库(含答案)
- 2025至2030年中国窗户胶行业投资前景及策略咨询研究报告
- 江苏遴选笔试真题及答案
- 有限空间安全管理制度与台账
- 高压电缆头制作培训教材
- 国旗法课件教学课件
- 食管内镜支架植入护理配合
- 老年人防诈骗课件
- 《煤矿重大事故隐患判定标准》
评论
0/150
提交评论