⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.cpp

📁 學生信息管理系統,學生信息管理系統
💻 CPP
字号:
// student.cpp: implementation of the student class. 
// 
////////////////////////////////////////////////////////////////////// 

#include "student.h" 
#include "color.h" 
////////////////////////////////////////////////////////////////////// 
#include<stdio.h> 
#include<string.h> 
////////////////////////////////////////////////////////////////////// 
extern int choice; 
extern color c; 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 

void student::input() 
{ 
c.setcolor(10); 
cout<<endl; 
cout<<"请输入学生的基本信息:"<<endl; 
cout<<endl; 
cout<<"学 号: "; 
cin.getline(num,80); 
cout<<"姓 名: "; 
cin.getline(name,80); 
cout<<"性 别: "; 
cin.getline(sex,80); 
cout<<"年 龄: "; 
cin.getline(age,80); 
cout<<"出生年份:"; 
cin.getline(year,80); 
cout<<"出生月份:"; 
cin.getline(month,80); 
cout<<"出生日份:"; 
cin.getline(day,80); 
cout<<"入学成绩:"; 
cin.getline(score,80); 
cout<<"专 业:"; 
cin.getline(zhuanye,80); 
cout<<"班 级:"; 
cin.getline(banji,80); 
} 
void student::output() 
{ 
c.setcolor(10); 
cout<<setiosflags(ios::left)<<setw(7)<<num<<setw(7)<<name<<\ 
setw(7)<<sex<<setw(7)<<zhuanye<<setw(7)<<banji<<setw(11)<<\ 
score<<setw(7)<<age<<year<<"/"<<month<<"/"<<day<<endl; 
} 


//学生基本信息维护系统菜单 
void student::menu1() 
{ 
c.setcolor(11); 
cout<<"----------------------------------------------------"<<endl; 
cout<<" 欢迎进入学生基本信息的维护系统"<<endl; 
cout<<"===================================================="<<endl; 
cout<<"1. 学生基本信息录入 2. 学生基本信息修改"<<endl; 
cout<<"3. 学生基本信息删除 4. 返回上级菜单"<<endl; 
cout<<"0. 退出系统"<<endl; 
cout<<"----------------------------------------------------"<<endl; 
cout<<"请做出选择(0-4): "; 

} 

//学生基本信息查询菜单 
void student::menu2() 
{ 
c.setcolor(4); 
cout<<"----------------------------------------------------"<<endl; 
cout<<"1.按学号查询 2.按姓名查询"<<endl; 
cout<<"3.返回上级菜单 0.退出系统"<<endl; 
cout<<"****************************************************"<<endl; 
cout<<"请选择(0-3): "; 
} 
//学生基本信息浏览系统菜单 
void student::menu3() 
{ 
c.setcolor(5); 
cout<<"----------------------------------------------------"<<endl; 
cout<<"欢迎进入学生基本信息浏览系统"<<endl; 
cout<<"****************************************************"<<endl; 
cout<<"1.按专业浏览 2.按班级浏览"<<endl; 
cout<<"3.浏览所有学生信息 4.返回上级菜单"<<endl; 
cout<<"0.退出系统"<<endl; 
cout<<"===================================================="<<endl; 
cout<<"请选择: "; 
} 

////////////////////////////////////////////////////////////////////// 
// function Class 
////////////////////////////////////////////////////////////////////// 

////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 

//按学号查询学生基本信息 
void student_fun::search1() 
{ 
system("cls"); 
c.setcolor(6); 
student stud;//定义对象 
FILE *fp; 
char num[8]; //要输入的学生学号 
int flag=0; //判断是否有此学生信息 
cout<<"请输入要查询的学生学号: "; 
cin>>num; 
if((fp=fopen("student.dat","rb"))==NULL) 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
cout<<"学号 姓名 性别 专业 班级 入学成绩 年龄 出生日期 "<<endl; 
cout<<endl; 
while(fread(&amt;stud,sizeof(stud),1,fp)==1) 
if(strcmp(num,stud.getnum())==0) 
{ 
stud.output(); 
flag=1; 
} 
if(flag==0) 
{ 
system("cls"); 
color c; 
c.setcolor(7); 
cout<<"**********************不存在此学生的信息!*************************"<<endl; 
} 
fclose(fp); 
} 

//按姓名查找学生基本信息 
void student_fun::search2() 
{ 
system("cls"); 
student stud; 
FILE *fp; 
if((fp=fopen("student.dat","rb"))==NULL) 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
char name[20]; 
int flag=0; //判断是否有此学生信息 
c.setcolor(8); 
cout<<"请输入要查询的学生姓名: "; 
cin>>name; 
cout<<"学号 姓名 性别 专业 班级 入学成绩 年龄 出生日期 "<<endl; 
cout<<endl; 
while(fread(&amt;stud,sizeof(stud),1,fp)==1) 
if(strcmp(name,stud.getname())==0) 
{ 
stud.output(); 
flag=1; 
} 
if(flag==0) 
{ 
system("cls"); 
c.setcolor(8); 
cout<<"**************************没有此学生的信息!************************"<<endl; 
} 
fclose(fp); 
} 

//学生基本信息浏览 
void student_fun::browse() 
{ 
student stud; 
int type; 
while(1) 
{ 
stud.menu3();//学生基本信息浏览系统菜单 
cin>>type; 
switch(type) 
{ 
case 1://按专业浏览 
{ 
system("cls"); 
student stud; 
FILE *fp; 
int flag=0;//判断是否有此专业 
if((fp=fopen("student.dat","rb"))==NULL) 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
char zhuanye[20]; 
c.setcolor(9); 
cout<<"请输入要浏览的专业: "; 
c.setcolor(10); 
cin>>zhuanye;cout<<"学号 姓名 性别 专业 班级 入学成绩 年龄 出生日期 "<<endl; 
cout<<endl; 
while(fread(&amt;stud,sizeof(stud),1,fp)==1) 
if(strcmp(zhuanye,stud.getzhuanye())==0) 
{ 
stud.output(); 
flag=1;//判断是否有此专业 
} 
fclose(fp); 
if(flag==0) 
{ 
system("cls"); 
c.setcolor(12); 
cout<<"***********************无此专业!**************************"<<endl; 
} 
break; 
} 
case 2://按班级浏览 
{ 
system("cls"); 
int flag=0; //判断是否有此班级信息 
student stud; 
FILE *fp; 
if((fp=fopen("student.dat","rb"))==NULL) 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
char banji[3]; 
cout<<"请输入要浏览的班级: "; 
cin>>banji; 
cout<<"学号 姓名 性别 专业 班级 入学成绩 年龄 出生日期 "<<endl; 
cout<<endl; 
while(fread(&amt;stud,sizeof(stud),1,fp)==1) 
if(strcmp(banji,stud.getbanji())==0) 
{ 
stud.output(); 
flag=1; 
} 
fclose(fp); 
if(flag==0) 
{ 
system("cls"); 
c.setcolor(12); 
cout<<"*********************** 无此班级!************************"<<endl; 
} 
break; 
} 
case 3://浏览所有学生的信息 
{ 
system("cls"); 
FILE *fp; 
student stud; 
if((fp=fopen("student.dat","rb"))==NULL) 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
c.setcolor(12); 
cout<<"学号 姓名 性别 专业 班级 入学成绩 年龄 出生日期 "<<endl; 
cout<<endl; 
while(fread(&amt;stud,sizeof(student),1,fp)==1) 
{ 
stud.output(); 
} 
fclose(fp); 
break; 
} 
case 4: 
break; 
case 0: 
exit(0); 
default: 
system("cls"); 
c.setcolor(11); 
cout<<"************************** 输入有误! **********************"<<endl; 
} 
if(type==4)break; 
} 
} 

//学生基本信息查询 
void student_fun::search() 
{ 
cout<<"----------------------------------------------------"<<endl; 
cout<<"欢迎进入学生基本信息的查询系统"<<endl; 
cout<<"****************************************************"<<endl; 
student stud; 
int x;//switch开关 
while(1) 
{ 
stud.menu2();//学生基本信息查询菜单 
cin>>x; 
switch(x) 
{ 
case 1: 
{ 
search1();//按学号查寻学生基本信息 
break; 
} 
case 2: 
{ 
search2();//按姓名查询学生基本信息 
break; 
} 
case 3: 
break; 
case 0: 
exit(0); 
default: 
system("cls"); 
c.setcolor(11); 
cout<<"********************** 输入有误! ***********************"<<endl; 
} 
if(x==3) break; 
} 
} 

//学生基本信息修改 
void student_fun::modify() 
{ 
if(choice==1) 
{ 
system("cls"); 
cout<<endl; 
cout<<"----------------------------------------------------"<<endl; 
cout<<" 学生基本的信息修改"<<endl; 
cout<<"****************************************************"<<endl; 
student stud; 
FILE *fp; 
if((fp=fopen("student.dat","rb+"))==NULL)//打开文件 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
char num[8]; //要输入修改学生的学号 
int flag=0;//控制循环 
c.setcolor(11); 
cout<<"请输入要修改的学生学号:"; 
cin>>num; 
char str[2];//吃回车 
cin.getline(str,2);//吃回车 
cout<<"学号 姓名 性别 专业 班级 入学成绩 年龄 出生日期 "<<endl; 
while(fread(&amt;stud,sizeof(stud),1,fp)==1)//显示要修改学生的信息 
if(strcmp(num,stud.getnum())==0) 
{ 
stud.output(); 
} 
fclose(fp);//关闭文件 
int wide=sizeof(stud); 
if((fp=fopen("student.dat","rb+"))==NULL)//打开文件 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
while(fread(&amt;stud,sizeof(stud),1,fp)==1) 
{ 
if(strcmp(num,stud.getnum())==0) 
{ 
fseek(fp,-wide,1); 
stud.input(); 
fwrite(&amt;stud,sizeof(stud),1,fp); 
flag=1; 
} 
if(flag==1)break; 
} 
if(flag==0) 
{ 
system("cls"); 
c.setcolor(12); 
cout<<"***************** 不存在此学生的信息! ****************"<<endl; 
} 
fclose(fp);//关闭文件 
} 
else 
{ 
system("cls"); 
c.setcolor(11); 
cout<<"***************** 你不是管理员,无权进行修改。****************"<<endl; 
} 
} 

//学生基本信息删除 
void student_fun::del() 
{ 
if(choice==1) 
{ 
system("cls"); 
cout<<"----------------------------------------------------"<<endl; 
cout<<" 学生基本信息删除"<<endl; 
cout<<"****************************************************"<<endl; 
int i; 
student std[100]; 
long int filesize,rscount; 
FILE *fp; 
if((fp=fopen("student.dat","rb"))==NULL)//打开文件 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
fseek(fp,0,2); 
filesize=ftell(fp); 
rewind(fp); 
rscount=filesize/sizeof(student); 
for(i=0;i<rscount;i++) 
fread(&amt;std[i],sizeof(student),1,fp); 
fclose(fp); 
char num[20]; 
c.setcolor(10); 
cout<<"请输入你要删除的学生的学号:"; 
cin>>num; 
fp=fopen("student.dat","wb"); 
for(i=0;i<rscount;i++) 
if(strcmp(num,std[i].getnum())!=0) 
fwrite(&amt;std[i],sizeof(student),1,fp); 
fclose(fp); 
cout<<"删除成功!"<<endl; 
cout<<"继续删除请按 Y否则请按其他键: "; 
char a;//判断是否继续删除 
cin>>a; 
if(a=='y'||a=='Y') 
del(); 
} 
else 
{ 
system("cls"); 
c.setcolor(11); 
cout<<"************* 你不是管理员,无权删除信息。***************"<<endl; 
} 
} 

// 学生基本信息维护 
void student_fun::maintenance() 
{ 
student stud; 
int x; 
while(1) 
{ 
stud.menu1();//学生基本信息维护系统菜单 
cin>>x; 
switch(x) 
{ 
getchar(); 
case 1: 
{ 
char str[2];//吃回车 
cin.getline(str,2);//吃回车 
file();//学生基本信息录入 
break; 
} 
case 2: 
{ 
modify();//学生基本信息的修改 
break; 
} 
case 3: 
{ 
del();//学生基本信息的删除 
break; 
} 
case 4: 
break; 
case 0: 
exit(0); 
default: 
cout<<"--------------------------------------------------"<<endl; 
cout<<"*********************** 输入有误! ***********************"<<endl; 
}if(x==4)break; 
} 
} 

//学生基本信息录入 
void student_fun::file() 
{ 
system("cls"); 
if(choice==1) 
{ 
student stud; 
FILE *fp; 
if((fp=fopen("student.dat","ab+"))==NULL) 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
char ch;//控制循环 
do 
{ 
c.setcolor(15); 
stud.input(); 
fwrite(&amt;stud,sizeof(student),1,fp); 
c.setcolor(10); 
cout<<"继续输入请按 y,否则请按其他键: "; 
cin>>ch; 
char str[2];//吃回车 
cin.getline(str,2);//吃回车 
}while(ch=='y'); 
fclose(fp); 
if((fp=fopen("student.dat","rb"))==NULL) 
{ 
cout<<"can't open file student.dat"; 
exit(0); 
} 
system("cls"); 
cout<<"你输入的信息是:"<<endl; 
cout<<endl; 
cout<<"学号 姓名 性别 专业 班级 入学成绩 年龄 出生日期 "<<endl; 
while(fread(&amt;stud,sizeof(student),1,fp)==1) 
{ 
stud.output(); 
} 
fclose(fp); 
} 
else 
{ 
c.setcolor(3); 
cout<<"************** 你不是管理员,无权录入信息。*****************"<<endl; 
} 
} 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -