#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\ { printf(\"密码文件不存在,请输入新的用户名及密码:\\n\"); //若不存在此密码文件,则提示用户创建密码 printf(\"请输入任意键继续!\"); getch(); system(\"cls\"); return 1; } else return 0; }
//新创建初始密码 void code_input()
//无密码文件返回1 //已有密码文件返回0 { FILE *fp; int i; if((fp=fopen(\"学生学籍管理系统__code.txt\//当建立密码文件成功时,进入for循环 for(i=0;i } //从文件读入数据 int read_file(struct student stu[]) { FILE *sp; int i=0; system(\"cls\"); if((sp=fopen(\"学生学籍管理系统__学生信息.txt\读文件,若文件不存在,则需要创建一个新的文件(文件创建在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\若不存在此TXT文档,则创建; { printf(\"读文件错误!\\n\"); //创建不成功,返回menu函数; return; } for(i=0;i //创建并录入信息 int found(struct student stu[]) { int i=0,x; system(\"cls\"); printf(\"请输入要录入的学生的个数:\\n\"); scanf(\"%d\ if(x==0) return 0; do //输入信息 { printf(\"\\n请录入第%d个学生的信息:\\n\ printf(\"请录入学号:\"); scanf(\"%s\ printf(\"\\n请录入姓名:\"); scanf(\"%s\ printf(\"\\n请录入院系:\"); scanf(\"%s\ printf(\"\\n请录入专业:\"); scanf(\"%s\ printf(\"\\n请录入班级:\"); scanf(\"%s\ printf(\"\\n请录入性别:\"); scanf(\"%s\ printf(\"\\n请录入年龄:\"); scanf(\"%s\ printf(\"\\n请录入出生日期(yyyymmdd):\"); scanf(\"%s\ printf(\"\\n请录入民族:\"); scanf(\"%s\ printf(\"\\n请录入籍贯:\"); scanf(\"%s\ i++; system(\"cls\"); }while(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\ //要修改的学生学号 for(i=0;i case 1: //修改姓名 printf(\"\请输入新的姓名:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 2: //修改年龄 printf(\"\请输入新的年龄:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 3: //修改性别 printf(\"\请输入新的性别:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 4: //修改出生日期 printf(\"\请输入新的出生年月(yyyy.mm):\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 5: //修改籍贯 printf(\"\请输入新的籍贯:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 6: //修改院系 printf(\"\请输入新的院系:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 7: //修改专业 printf(\"\请输入新的专业名称:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 8: //修改班级 printf(\"\请输入新的班级:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 9: //修改民族 printf(\"\请输入新的民族名称:\"); scanf(\"%s\ printf(\"\\n\\n\\n修改成功!\\n\"); save_file(stu,sum); break; case 0: return; //不修改,退出 default:printf(\"\请在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\\------------------\\n\"); printf(\"\\ 1.按学号查询\\n\"); printf(\"\\ 2.按姓名查询\\n\"); printf(\"\\ 3.退出本菜单\\n\"); printf(\"\\------------------\\n\"); printf(\"\\ 请选择子菜单编号:\"); scanf(\"%d\ //选择子菜单 flag=0; switch(item) { case 1: //按学号进行查找 printf(\"\\请输入要查询的学生的学号:\"); scanf(\"%s\ for(i=0;i if(flag==0) //当上一个if条件不成立,flag=0,学生学号不存在,输出提示; printf(\"\\n\\n\\n\\该学号不存在!\\n\"); getch(); break; case 2: //按姓名进行查找 printf(\"\\n\\n\\请输入要查询的学生的姓名:\"); scanf(\"%s\ for(i=0;i printf(\"该学生民族:%s\\n\ printf(\"该学生籍贯:%s\\n\ getch(); } if(flag==0) //当上一个if条件不成立,flag=0,学生姓名不存在,输出提示; printf(\"\\n\\n\\n\\该姓名不存在!\\n\"); getch(); break; case 3: system(\"cls\"); return; default:printf(\"\\n\\n\\n\\请在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\\请输入要删除学生的学号:\"); scanf(\"%s\ for(i=0;i flag=1; //该学号存在,用后一个数组覆盖此数组,循环,即可删除 for(j=i;j printf(\"\\n\\n\\n\\删除成功\\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\\ 所有学生的信息为:\\n\"); for(i=0;i int insert(struct student stu[],int sum) { int i,j,flag,m; FILE *sp; system(\"cls\"); printf(\"\请输入要添加的学生的个数:\"); scanf(\"%d\ read_file(stu); //在添加前读文件 do { flag=1; i=sum; //此时i表示数组下标,添加学生,保存到当前已有数组的下一个,sum为总数,stu[i]表示第sum+1个人 while(flag) { flag=0; printf(\"\\n\\n 请输入第 %d 个学生的学号:\ scanf(\"%s\ for(j=0;jif(strcmp(stu[i].num,stu[j].num)==0) { printf(\"\\n\\n\\n该学号已有,请重新输入!\\n\"); flag=1; break; /*如果该学号已有则立刻对出该层for循环*/ } } printf(\"\\n 请输入第 %d 个学生的姓名:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的院系:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的专业:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的班级:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的性别:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的年龄:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的出生日期:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的民族:\ scanf(\"%s\ printf(\"\\n 请输入第 %d 个学生的籍贯:\ scanf(\"%s\ if(flag==0) { i=i; i++; } }while(i //对学生信息排序 void rank(struct student stu[],int sum) { int i,j; FILE *sp; struct student s1; system(\"cls\"); for(i=0;i void count(struct student stu[],int sum) { int i,count=0; char s1[5],s2[5],s3[5]; system(\"cls\"); printf(\"\\请输入你要统计学生人数的学院:\"); scanf(\"%s\ printf(\"\\请输入你要统计学生人数的专业:\"); scanf(\"%s\ printf(\"\\请输入你要统计学生人数的班级:\"); scanf(\"%s\ for(i=0;i //菜单函数 void menu() { int choice,sum; struct student stu[N]; sum=read_file(stu); //sum为现已存入文件中学生的人数 do { system(\"cls\"); printf(\"\\n\\n\\n\"); printf(\"\\ **********欢迎进入**********\\n\"); printf(\"\\********学生学籍管理系统********\\n\\n\\n\"); printf(\"\\\ 1.创建学生信息\\n\"); printf(\"\\\ 2.修改学生信息\\n\"); printf(\"\\\ 3.查询学生信息\\n\"); printf(\"\\\ 4.删除学生信息\\n\"); printf(\"\\\ 5.添加学生信息\\n\"); printf(\"\\\ 6.保存学生信息\\n\"); printf(\"\\\ 7.显示已录入学生信息\\n\"); printf(\"\\\ 8.对学生信息排序\\n\"); printf(\"\\\ 9.统计学生信息\\n\"); printf(\"\\\ 0.退出程序\\n\"); printf(\"\\\ 请选择您要执行的操作(0~9):\"); scanf(\"%d\ 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\ //输入用户的用户名及密码 enter(s0.name,s0.code); //登陆管理系统前,进入enter()函数验证模块 system(\"cls\"); menu(); }
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务