版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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;/ 性别char nation5;
2、/ 民族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
3、 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(&c
4、oi,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);. 学习帮手 .专
5、业整理 ./ 从文件读入数据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
6、=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;
7、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);pr
8、intf( 请录入学号 :);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)
9、:);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,
10、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.depa
11、r);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该学号不存在 !
12、请重新输入学号: 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);print
13、f(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
14、(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
15、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:/ 修改
16、民族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)
17、system(cls);printf(nntt-n);. 学习帮手 .专业整理 .printf(tt1.按学号查询 n);printf(tt2.按姓名查询 n);printf(tt3.退出本菜单 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( 该
18、学生学号 :%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( 该学生籍贯 :%s
19、n,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( 该学生院系 :
20、%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 ,学生姓名不存在 ,输
21、出提示 ;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
22、,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 stude
23、nt 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.bi
24、rth);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);/ 在添加前读文件doflag=1;i=sum;/ 此时 i 表示数组下标,添加学生,保存到当前已有数组的下一个
25、, 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 个学生的院系:
26、,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请输
27、入第%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;/ 返回添加完成后现有的学生人数. 学
28、习帮手 .专业整理 ./ 对学生信息排序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)/ 小者换到stuis1=stui;stui=stuj;stu j=s1;printf(nntt所有学生的信息为:n);for(i=0;isum;i+)/ 打印排好后的学生信息printf( 学号 :%st,stui.num);printf( 姓名 :%st,);. 学
29、习帮手 .专业整理 .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(st
30、ruct 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为现已存入文件中学生的人数do. 学习帮手 .专业整理 .system(cls);printf(nnn);printf(tt*欢迎进入 *n);printf(tt*学生学籍管理系统*nnn);printf(ttt 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年矿业权抵押融资合同示范3篇
- 二零二五年新型环保栏杆研发、生产安装合同3篇
- 二零二五版矿业权转让与安全生产监管服务合同集3篇
- 二零二五版建筑工程BIM模型优化与交付合同3篇
- 二零二五年混凝土施工安全生产责任书合同3篇
- 二零二五版挂靠出租车绿色出行奖励合同3篇
- 提前终止2025年度租赁合同2篇
- 商铺售后返租合同纠纷的司法解释与实践(2025年版)2篇
- 二零二五版畜禽养殖合作经营合同书3篇
- 二零二五年度废旧玻璃回收利用合同书3篇
- 电磁阀培训(精选)课件
- A弥漫大b细胞淋巴瘤护理查房
- 维保移交协议范本
- 初一上学期期末测试卷英语
- 上海沃陆变频器VL600型变频器说明书概要
- 2023年高考物理一轮复习:抛体运动与圆周运动(附答案解析)
- VRV空调技术要求和质量标准
- 第二讲VSP地震勘探
- 干砌石护坡工程施工组织设计方案
- 物业品质提升ppt课件
- -乌兔太阳择日法表
评论
0/150
提交评论