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

📄 score.cpp

📁 學生信息管理系統,學生信息管理系統
💻 CPP
字号:
// score.cpp: implementation of the score class. 
// 
////////////////////////////////////////////////////////////////////// 
#include "color.h" 
#include "score.h" 
////////////////////////////////////////////////////////////////////// 
#include<iostream.h> 
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
#include<iomanip.h> 
#include<windows.h> 
////////////////////////////////////////////////////////////////////// 
extern int choice; 

////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
extern color c; 

void score::input() 
{ 
c.setcolor(10); 
int i,t; 
total=0; 
cout<<"请输入该学生的学号:"; 
cin.getline(num,80); 
cout<<"请输入该学生的姓名:"; 
cin.getline(name,80); 
cout<<"请输入高等数学成绩:"; 
cin.getline(point[0],80); 
cout<<"请输入英语成绩:"; 
cin.getline(point[1],80); 
cout<<"请输入C++成绩:"; 
cin.getline(point[2],80); 
for(i=0;i<3;i++) 
{ 
t=atoi(point[i]); 
total+=t; 
} 
} 

void score::output() 
{ 
c.setcolor(10); 
int i; 

cout<<setiosflags(ios::left)<<setw(7)<<num; 
cout<<setiosflags(ios::left)<<setw(7)<<name; 
for(i=0;i<3;i++) 
cout<<setiosflags(ios::left)<<setw(7)<<point[i]; 
cout<<setiosflags(ios::left)<<setw(7)<<total; 
} 

//菜单 
void menu1() 
{ 
c.setcolor(3); 
cout<<"===================================================="<<endl; 
cout<<"1: 成绩录入 2: 成绩显示"<<endl; 
cout<<"3: 返回上级菜单 0: 退出系统"<<endl; 
cout<<"===================================================="<<endl; 
cout<<"请选择(1-3): "; 
} 
/* 
score::score(score &amt;s) 
{ 
int i; 
strcpy(num,s.num); 
for(i=0;i<3;i++) 
strcpy(sernum[i],s.sernum[i]); 
for(i=0;i<3;i++) 
strcpy(point[i],s.point[i]); 
total=s.total; 
}*/ 





////////////////////////////////////////////////////////////////////// 
// fun3 Class 
////////////////////////////////////////////////////////////////////// 

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

//学生成绩管理 
void score_fun::manage() 
{ 
c.setcolor(12); 
void menu1(); 
c.setcolor(10); 
cout<<"----------------------------------------------------"<<endl; 
cout<<" 欢迎进入学生成绩的管理系统"<<endl; 
cout<<"****************************************************"<<endl; 
int type; 
while(1) 
{ 
menu1(); 
cin>>type; 
switch(type) 
{ 
case 1: 
file();//成绩录入 
break; 
case 2: 
print();//成绩显示 
break; 
case 3: //返回上级菜单 
break; 
case 0: //退出系统 
exit(0); 
}if(type==3)break; 
} 
} 

//成绩录入 
void score_fun::file() 
{ 
system("cls"); 
if(choice==1) 
{ 

score sco; 
// int x;//实际学生数 
// cout<<"请输入实际课程数: "; 
// cin>>x; 
char str[2];//用于吃回车 
FILE *fp; 
fp=fopen("student_score.dat","ab+"); 
char ch; 
// if(x>=20) 
// {cout<<"课程数输入有误"<<endl;} 
// else 
do 
{ 
c.setcolor(6); 
cin.getline(str,2);//吃回车 
sco.input(); 
fwrite(&amt;sco,sizeof(score),1,fp); 
c.setcolor(9); 
cout<<"继续输入请按y,否则请按其他键: "; 
cin>>ch; 
}while(ch=='y'||ch=='Y'); 
fclose(fp); 
} 
else 
{ 
c.setcolor(10); 
cout<<"************************ 你不是管理员,无权录入信息。***************************"<<endl; 
} 
} 

//成绩显示 
void score_fun::print() 
{ 
system("cls"); 
int i=0; 
score sco; 
FILE *fp; 
if((fp=fopen("student_score.dat","rb"))==NULL) 
{ 
cout<<"can't open file student_score.dat"<<endl; 
exit(0); 
} 
cout<<"学号 姓名 高数 英语 C++ 总分"<<endl; 
while(fread(&amt;sco,sizeof(score),1,fp)==1) 
{ 
sco.output(); 
} 
fclose(fp); 
} 

//学生成绩维护 
void score_fun::maintenance() 
{ 
cout<<"----------------------------------------------------"<<endl; 
cout<<" 欢迎进入学生成绩的维护系统"<<endl; 
cout<<"****************************************************"<<endl; 
score sco; 
void menu3(); 
int type;//switch选择开关 
char str[2];//用于吃回车 
while(1) 
{ 
menu3(); 
cin>>type; 
cin.getline(str,2); 
switch(type) 
{ 
case 1: 
modify();//成绩基本信息删除 
break; 
case 2: 
del();//成绩基本信息修改 
break; 
case 3: 
total_taxis();//按总成绩排序 
break; 
case 4: 
score_single();//单科成绩排序 
break; 
case 5: 
sum_demand();//总成绩查询 
break; 
case 6: 
single_demand();//单科成绩查询 
break; 
case 7: 
break; 
case 0: 
exit(0); 
}if(type==7)break; 
} 
} 

void menu3() 
{ 
c.setcolor(15); 
cout<<"***********************************************************"<<endl; 
cout<<"1:成绩基本信息修改 2:成绩基本信息删除"<<endl; 
cout<<"3:按总成绩排序 4:按单科排序"<<endl; 
cout<<"5:总成绩查询 6:单科成绩查询"<<endl; 
cout<<"7:返回上级菜单 0:退出系统"<<endl; 
cout<<"***********************************************************"<<endl; 
cout<<"请选择(0-6): "; 
} 
//成绩基本信息删除 
void score_fun::del() 
{ 
system("cls"); 
if(choice==1) 
{ 
c.setcolor(7); 
cout<<"----------------------------------------------------"<<endl; 
cout<<" 学生成绩基本信息删除"<<endl; 
cout<<"****************************************************"<<endl; 
int i; 
score sco[100]; 
long filesize,rscount; 
FILE *fp; 
if((fp=fopen("student_score.dat","rb"))==NULL)//打开文件 
{ 
cout<<"can't open file student_score.dat"; 
exit(0); 
} 
fseek(fp,0,2); 
filesize=ftell(fp); 
rewind(fp); 
rscount=filesize/sizeof(score); 
for(i=0;i<rscount;i++) 
fread(&amt;sco[i],sizeof(score),1,fp); 
fclose(fp); 
char num[20]; 
c.setcolor(9); 
cout<<"请输入你要删除成绩的学生学号:"; 
cin>>num; 
fp=fopen("student_score.dat","wb"); 
for(i=0;i<rscount;i++) 
if(strcmp(num,sco[i].getnum())!=0) 
fwrite(&amt;sco[i],sizeof(score),1,fp); 
fclose(fp); 
cout<<"删除成功!"<<endl; 
c.setcolor(14); 
cout<<"继续删除请按 Y否则请按其他键: "; 
char a;//判断是否继续删除 
cin>>a; 
if(a=='y'||a=='Y') 
del(); 
} 
else 
{ 
c.setcolor(3); 
cout<<"**************************你不是管理员,无权删除信息。***********************"<<endl; 
} 
} 

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

//按总成绩排序 
void score_fun::total_taxis() 
{ 
system("cls"); 
int i=0,count=0,j; 
score sco[100],s; 
FILE *fp; 
if((fp=fopen("student_score.dat","rb+"))==NULL)//打开文件 
{ 
cout<<"can't open file student_score.dat"; 
exit(0); 
} 
while(fread(&amt;sco[i],sizeof(score),1,fp)==1) 
i++; 
fclose(fp); 
count=i; 
for(i=0;i<count;i++) 
for(j=i+1;j<count+1;j++) 
if(sco[i].gettotal()<sco[j].gettotal()) 
{ 
s=sco[i]; 
sco[i]=sco[j]; 
sco[j]=s; 
} 
cout<<"学号 姓名 高数 英语 C++ 总分 排名"<<endl; 
for(i=0;i<count;i++) 
{ 
sco[i].output(); 
cout<<i+1<<endl; 
} 
cout<<endl; 
} 

//单科成绩排序 
void score_fun::score_single() 
{ 
void menu4(); 
int i=0,count=0,type,j; 
char ch; 
score sco[100],s; 
FILE *fp; 
if((fp=fopen("student_score.dat","rb+"))==NULL)//打开文件 
{ 
cout<<"can't open file student_score.dat"; 
exit(0); 
} 
while(fread(&amt;sco[i],sizeof(score),1,fp)==1) 
i++; 
fclose(fp); 
count=i; 
do 
{ 
menu4(); 
cin>>type; 
switch(type) 
{ 
case 1: 
{ 
system("cls"); 
for(i=0;i<count-1;i++) 
for(j=i+1;j<count;j++) 
if(strcmp(sco[i].getpoint0(),sco[j].getpoint0())<=0) 
{ 
s=sco[i]; 
sco[i]=sco[j]; 
sco[j]=s; 
} 
c.setcolor(5); 
cout<<"学号 姓名 高数 排名"<<endl; 
for(i=0;i<count;i++) 
{ 
cout<<setiosflags(ios::left)<<setw(7)<<sco[i].getname()<<setw(7)<<sco[i].getnum()<<setw(7)<<sco[i].getpoint0(); 
cout<<i+1<<endl; 
} 
break; 
} 
case 2: 
{ 
system("cls"); 
for(i=0;i<count-1;i++) 
for(j=i+1;j<count;j++) 
if(strcmp(sco[i].getpoint1(),sco[j].getpoint1())<=0) 
{ 
s=sco[i]; 
sco[i]=sco[j]; 
sco[j]=s; 
} 
c.setcolor(3); 
cout<<"学号 姓名 英语 排名"<<endl; 
for(i=0;i<count;i++) 
{ 
cout<<setiosflags(ios::left)<<setw(7)<<sco[i].getname()<<setw(7)<<sco[i].getnum()<<setw(7)<<sco[i].getpoint1(); 
cout<<i+1<<endl; 
} 
break; 
} 
case 3: 
{ 
system("cls"); 
for(i=0;i<count-1;i++) 
for(j=i+1;j<count;j++) 
if(strcmp(sco[i].getpoint2(),sco[j].getpoint2())<=0) 
{ 
s=sco[i]; 
sco[i]=sco[j]; 
sco[j]=s; 
} 
c.setcolor(7); 
cout<<"学号 姓名 C++ 排名"<<endl; 
for(i=0;i<count;i++) 
{ 
cout<<setiosflags(ios::left)<<setw(7)<<sco[i].getname()<<setw(7)<<sco[i].getnum()<<setw(7)<<sco[i].getpoint2(); 
cout<<i+1<<endl; 
} 
break; 
} 
case 0:break; 
default: 
c.setcolor(4); 
cout<<" 输入有误! 请重新输入!"<<endl; 
cout<<"*************************************************"<<endl; 
} 
cout<<"继续排序请按 y,否则请按其他键:"; 
cin>>ch; 
}while(ch=='y'||ch=='Y'); 
} 

void menu4() 
{ 
system("cls"); 
c.setcolor(5); 
cout<<"----------------------------------------------"<<endl; 
cout<<"1、高等数学 2、大学外语 3、C++程序设计"<<endl; 
cout<<"----------------------------------------------"<<endl; 
cout<<"请选择要排序的课程(1-3):"; 
} 


//总成绩查询 
void score_fun::sum_demand() 
{ 
system("cls"); 
FILE *fp; 
score sco; 
int judge=0; 
if((fp=fopen("student_score.dat","rb+"))==NULL)//打开文件 
{ 
cout<<"can't open file student_score.dat"<<endl; 
exit(0); 
} 
char num[8]; 
cout<<"请输入学号:"; 
cin.getline(num,80); 
while(fread(&amt;sco,sizeof(score),1,fp)==1) 
{ 
if(strcmp(num,sco.getnum())==0) 
{ 
c.setcolor(12); 
cout<<endl; 
cout<<"学号:"<<setiosflags(ios::left)<<setw(10)<<num<<"总成绩:"<<sco.gettotal()<<endl; 
judge=1; 
} 
} 
if(judge==0) 
{ 
c.setcolor(11); 
cout<<" 没有此学生的信息"<<endl; 
cout<<endl; 
} 
} 

//单科成绩查询 
void score_fun::single_demand() 
{ 
system("cls"); 
FILE *fp; 
score sco; 
int judge=0; 
if((fp=fopen("student_score.dat","rb+"))==NULL)//打开文件 
{ 
cout<<"can't open file student_score.dat"<<endl; 
exit(0); 
} 
int choice; 
char num[8]; 
c.setcolor(12); 
cout<<"请输入学号:"; 
cin.getline(num,80); 
while(fread(&amt;sco,sizeof(score),1,fp)==1) 
{ 
if(strcmp(num,sco.getnum())==0) 
{ 
while(1) 
{ 
cout<<endl; 
cout<<"1.高等数学 2.大学外语 3.C++语言 0.返回"<<endl; 
cout<<"请选择(0-3):"; 
c.setcolor(13); 
cin>>choice; 
if(choice==1) 
cout<<"学号:"<<setiosflags(ios::left)<<setw(10)<<num<<"高等数学:"<<sco.getpoint0()<<endl; 
if(choice==2) 
cout<<"学号:"<<setiosflags(ios::left)<<setw(10)<<num<<"大学外语:"<<sco.getpoint1()<<endl; 
if(choice==3) 
cout<<"学号:"<<setiosflags(ios::left)<<setw(10)<<num<<"C++语言:"<<sco.getpoint2()<<endl; 
judge=1; 
if(choice==0)break; 
} 
} 
} 
c.setcolor(10); 
if(judge==0) 
{ 
cout<<" 没有此学生的信息"<<endl; 
cout<<endl; 
} 
} 

⌨️ 快捷键说明

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