![]() |
#2
yangfrancis2015-06-28 13:57
回复 楼主 编程Samuel
|

#include<iostream>
#include<cstdlib>
#include<fstream>
#include<string>
#include"Score.h"
#include"Subject.h"
#include"Student.h"
using namespace std;
int M=100;
static int M2=0;
class Class{ //班级类
private:
Student stu;
char name2[20];
int num2;
public:
Class(){
for(int i=0;i<20;i++)
name2[i]=0;
num2=0;
}
int getNU(){return stu.getNU1();}
string getNA(){return stu.getNA1();}
void set4(){
cout<<"请输入该生所在班级名称:";
cin>>name2;
cout<<"请输入该班班号:";
cin>>num2;
stu.set3();
}
void show4(){
cout<<"班级:"<<name2<<"\t班号:\t"<<num2;
stu.show3();
}
friend void Search1(Class c1[],int count1);
friend void Search2(Class c2[],int count2);
friend void Update1(Class c3[],int count_d);
friend void Delete(Class c4[],int *count_c);
friend void Insert(Class c5[],int &count_a);
}b[100];
void Save(Class c6[],int count) //记录存入文件函数
{
fstream file("class.txt",ios::out|ios::app);
if(!file)
{
cout<<"file coun't open."<<endl;
abort();
}
for(int i=0;i<count;i++)
file.write(reinterpret_cast<char*>(&c6[i]),sizeof(c6[i]));
file.close();
}
void Show(Class c7[]) //显示记录函数
{
int i=0;
for(i=0;c7[i].getNU()!=0;i++)
c7[i].show4();
}
void Insert(Class c5[],int &count_a) //信息录入函数
{
int i,in_number,n=0;
if(count_a==M)
{
cout<<"空间已满!";
return;
}
cout<<"请输入学生的学号:"<<endl;
do
{
do
{
cin>>in_number;
for(i=0;i<count_a;i++)
{
if(c5[i].getNU()==in_number)
cout<<"已有相同的学号,请重新输入!"<<endl;
break;
}
}while(c5[i].getNU()==in_number);
if(in_number<1)
cout<<"输入错误,请重新输入大于零的整数!"<<endl;
}while(in_number<=0);
i=count_a;
c5[i].set4();
count_a++;
cout<<endl<<endl;n=n+1;
if(n!=0)
cout<<"学生成绩录入成功!"<<endl;
}
void Search1(Class c1[],int count1) //按学号查询信息函数
{
int i,number,flag=1,n=0;
cout<<"请输入所要查询的学生的学号:"<<endl;
do
{
cin>>number;
if(number<=0)
cout<<"输入错误,请重新输入大于零的整数!"<<endl;
}while(number<=0);
for(i=0;i<count1&&flag;i++)
if(c1[i].getNU()==number)
{
c1[i].show4();
flag=0;n=n+1;
}
if(n==0)
cout<<"没有查询到该学生的资料!"<<endl;
}
void Search2(Class c2[],int count2) //按姓名查询信息函数
{
int i,n=0;
char nam[20];
cout<<"请输入所要查询的学生的姓名:"<<endl;
cin>>nam;
for(i=0;i<count2;i++)
if(c2[i].getNA()==nam)
{
c2[i].show4();
n=n+1;
}
if(n==0)
cout<<"没有查询到该学生的资料!"<<endl;
}
void Update1(Class c3[],int count_d) //信息修改函数
{
int i,n=0,flag=1,m;
char nam[20];
cout<<"请输入所要修改的学生的姓名:"<<endl;
cin>>nam;
for(i=0;i<count_d&&flag;i++)
{
if(c3[i].getNA()==nam)
{
cout<<"请输入所要修改的学生的学号:"<<endl;
cin>>m;
for(i=0;i<count_d&&flag;i++)
{
if(c3[i].getNU()==m)
{
c3[i].set4();
flag=0;n=n+1;
}
}
}
break;
}
if(n!=0)
cout<<"修改成功!"<<endl;
if(n==0)
cout<<"没有查询到该学生的资料!"<<endl;
}
void Delete(Class c4[]) //信息删除函数
{
fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
int i=0;
for(i=0;i<100;i++)
{
file.read(reinterpret_cast<char*>(&b[i]),sizeof(b[i]));
}
for(i=0;b[i].getNU()!=0;i++)
;
M2=i;
Class c9;
int n=0,number,flag=1;
cout<<"请输入要要进行操作的学生的学号:"<<endl;
cin>>number;
for(i=0;i<M2&&flag;i++)
{
if(c4[i].getNU()==number)
{
for(i;i<M2&&flag;i++)
c4[i]=c4[i+1];
flag=0;
(M2)--;n=1;
Save(b,M2);
break;
}
}
if(n==0)
cout<<"没有查询到可以删除的资料!"<<endl;
if(n!=0)
cout<<"资料删除成功!"<<endl;
}
int main()
{
char a1;
fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
cout<<"\t\t*************☆欢迎进入学生成绩管理系统**************"<<endl<<endl;
do
{
cout<<"\t\t\t请键入小写字母键选择功能:"<<endl;
cout<<"\t\t\ta.学生成绩查询"<<endl;
cout<<"\t\t\tb.学生成绩录入"<<endl;
cout<<"\t\t\tc.学生成绩删除"<<endl;
cout<<"\t\t\td.学生成绩修改"<<endl;
cout<<"\t\t\te.显示全部记录"<<endl;
cout<<"\t\t\tf.记录存入文件"<<endl;
cout<<endl;
cout<<"\t\t\t按g退出本系统"<<endl;
int i=0;
for(i=0;i<100;i++)
{
file.read(reinterpret_cast<char*>(&b[i]),sizeof(b[i]));
}
for(i=0;b[i].getNU()!=0;i++)
;
M2=i;
cin>>a1;
switch(a1)
{
case 'a':
{
cout<<"\t\t\t请继续选择:"<<endl;
cout<<"\t\t\t\t1.按学号查询信息"<<endl;
cout<<"\t\t\t\t2.按姓名查询信息"<<endl;
int x;
cin>>x;
switch(x)
{
case 1:Search1(b,M2);break;
case 2:Search2(b,M2);break;
default:cout<<"选择错误,请重新选择!"<<endl;
}
}
break;
case 'b':Insert(b,M2);break;
case 'c':
{
file.close();
Delete(b);
}break;
case 'd':Update1(b,M2);break;
case 'e':Show(b);break;
case 'f':
{
file.close();
Save(b,M2);
cout<<"保存文件成功!"<<endl;
fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
};break;
case 'g':{file.close();break;}
default:cout<<"选择错误,请重新选择!"<<endl;
}
}while(a1!='g');
return 0;
}
#include<cstdlib>
#include<fstream>
#include<string>
#include"Score.h"
#include"Subject.h"
#include"Student.h"
using namespace std;
int M=100;
static int M2=0;
class Class{ //班级类
private:
Student stu;
char name2[20];
int num2;
public:
Class(){
for(int i=0;i<20;i++)
name2[i]=0;
num2=0;
}
int getNU(){return stu.getNU1();}
string getNA(){return stu.getNA1();}
void set4(){
cout<<"请输入该生所在班级名称:";
cin>>name2;
cout<<"请输入该班班号:";
cin>>num2;
stu.set3();
}
void show4(){
cout<<"班级:"<<name2<<"\t班号:\t"<<num2;
stu.show3();
}
friend void Search1(Class c1[],int count1);
friend void Search2(Class c2[],int count2);
friend void Update1(Class c3[],int count_d);
friend void Delete(Class c4[],int *count_c);
friend void Insert(Class c5[],int &count_a);
}b[100];
void Save(Class c6[],int count) //记录存入文件函数
{
fstream file("class.txt",ios::out|ios::app);
if(!file)
{
cout<<"file coun't open."<<endl;
abort();
}
for(int i=0;i<count;i++)
file.write(reinterpret_cast<char*>(&c6[i]),sizeof(c6[i]));
file.close();
}
void Show(Class c7[]) //显示记录函数
{
int i=0;
for(i=0;c7[i].getNU()!=0;i++)
c7[i].show4();
}
void Insert(Class c5[],int &count_a) //信息录入函数
{
int i,in_number,n=0;
if(count_a==M)
{
cout<<"空间已满!";
return;
}
cout<<"请输入学生的学号:"<<endl;
do
{
do
{
cin>>in_number;
for(i=0;i<count_a;i++)
{
if(c5[i].getNU()==in_number)
cout<<"已有相同的学号,请重新输入!"<<endl;
break;
}
}while(c5[i].getNU()==in_number);
if(in_number<1)
cout<<"输入错误,请重新输入大于零的整数!"<<endl;
}while(in_number<=0);
i=count_a;
c5[i].set4();
count_a++;
cout<<endl<<endl;n=n+1;
if(n!=0)
cout<<"学生成绩录入成功!"<<endl;
}
void Search1(Class c1[],int count1) //按学号查询信息函数
{
int i,number,flag=1,n=0;
cout<<"请输入所要查询的学生的学号:"<<endl;
do
{
cin>>number;
if(number<=0)
cout<<"输入错误,请重新输入大于零的整数!"<<endl;
}while(number<=0);
for(i=0;i<count1&&flag;i++)
if(c1[i].getNU()==number)
{
c1[i].show4();
flag=0;n=n+1;
}
if(n==0)
cout<<"没有查询到该学生的资料!"<<endl;
}
void Search2(Class c2[],int count2) //按姓名查询信息函数
{
int i,n=0;
char nam[20];
cout<<"请输入所要查询的学生的姓名:"<<endl;
cin>>nam;
for(i=0;i<count2;i++)
if(c2[i].getNA()==nam)
{
c2[i].show4();
n=n+1;
}
if(n==0)
cout<<"没有查询到该学生的资料!"<<endl;
}
void Update1(Class c3[],int count_d) //信息修改函数
{
int i,n=0,flag=1,m;
char nam[20];
cout<<"请输入所要修改的学生的姓名:"<<endl;
cin>>nam;
for(i=0;i<count_d&&flag;i++)
{
if(c3[i].getNA()==nam)
{
cout<<"请输入所要修改的学生的学号:"<<endl;
cin>>m;
for(i=0;i<count_d&&flag;i++)
{
if(c3[i].getNU()==m)
{
c3[i].set4();
flag=0;n=n+1;
}
}
}
break;
}
if(n!=0)
cout<<"修改成功!"<<endl;
if(n==0)
cout<<"没有查询到该学生的资料!"<<endl;
}
void Delete(Class c4[]) //信息删除函数
{
fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
int i=0;
for(i=0;i<100;i++)
{
file.read(reinterpret_cast<char*>(&b[i]),sizeof(b[i]));
}
for(i=0;b[i].getNU()!=0;i++)
;
M2=i;
Class c9;
int n=0,number,flag=1;
cout<<"请输入要要进行操作的学生的学号:"<<endl;
cin>>number;
for(i=0;i<M2&&flag;i++)
{
if(c4[i].getNU()==number)
{
for(i;i<M2&&flag;i++)
c4[i]=c4[i+1];
flag=0;
(M2)--;n=1;
Save(b,M2);
break;
}
}
if(n==0)
cout<<"没有查询到可以删除的资料!"<<endl;
if(n!=0)
cout<<"资料删除成功!"<<endl;
}
int main()
{
char a1;
fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
cout<<"\t\t*************☆欢迎进入学生成绩管理系统**************"<<endl<<endl;
do
{
cout<<"\t\t\t请键入小写字母键选择功能:"<<endl;
cout<<"\t\t\ta.学生成绩查询"<<endl;
cout<<"\t\t\tb.学生成绩录入"<<endl;
cout<<"\t\t\tc.学生成绩删除"<<endl;
cout<<"\t\t\td.学生成绩修改"<<endl;
cout<<"\t\t\te.显示全部记录"<<endl;
cout<<"\t\t\tf.记录存入文件"<<endl;
cout<<endl;
cout<<"\t\t\t按g退出本系统"<<endl;
int i=0;
for(i=0;i<100;i++)
{
file.read(reinterpret_cast<char*>(&b[i]),sizeof(b[i]));
}
for(i=0;b[i].getNU()!=0;i++)
;
M2=i;
cin>>a1;
switch(a1)
{
case 'a':
{
cout<<"\t\t\t请继续选择:"<<endl;
cout<<"\t\t\t\t1.按学号查询信息"<<endl;
cout<<"\t\t\t\t2.按姓名查询信息"<<endl;
int x;
cin>>x;
switch(x)
{
case 1:Search1(b,M2);break;
case 2:Search2(b,M2);break;
default:cout<<"选择错误,请重新选择!"<<endl;
}
}
break;
case 'b':Insert(b,M2);break;
case 'c':
{
file.close();
Delete(b);
}break;
case 'd':Update1(b,M2);break;
case 'e':Show(b);break;
case 'f':
{
file.close();
Save(b,M2);
cout<<"保存文件成功!"<<endl;
fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
};break;
case 'g':{file.close();break;}
default:cout<<"选择错误,请重新选择!"<<endl;
}
}while(a1!='g');
return 0;
}
学生信息中的分数保存到文件时,以ASCll值显示,比如88在txt文件中显示成X,如何修改代码?