📄 student.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 + -