# include & lt字符串& gt
# include & ltfstream & gt
# include & ltctime & gt
使用命名空間std
班級學生
{
私人:
long int stu _ num//學號,宿舍號
char stu _ name[40];//名稱
char class _ name[40];//類
char house _ name[20];//宿舍
公共:
學生()
{
stu _ num = 0;
stu _ name[0]= 0;
class _ name[0]= 0;
house _ name[0]= 0;
}
學生::學生(長a,char * b,char *c,char *d)
{
Setdata(a,b,c,d);
}
Char * Getstuname(void) //名稱查找
{
返回stu _ name
}
Long Getstunum(void) //學號搜索
{
return stu _ num
}
Char * Gethousename(void) //宿舍號搜索
{
返回house _ name
}
Char * Getclassname(void) //按類搜索。
{
返回class _ name
}
void Setdata(long a,char *b,char *c,char *d)
{
stu _ num = a;
strcpy(stu_name,b);
strcpy(class_name,c);
strcpy(house_name,d);
}
無效顯示(無效)
{
cout & lt& lt"學生編號:"
cout & lt& lt"類別:"
}
};
無效總管(無效)
{
學生s 1;
int flags = 0;
long stu _ num//學生編號
char stu _ name[40];//名稱
char class _ name[40];//類
char house _ name[20];//宿舍
time _ t t
時間(& ampt);
ifstream文件1;
ofstream文件3;
char flag = ' y
cout & lt& lt“——學生成績管理系統。& ltendl
cout & lt& lt" \ t \ t \時間:"
while( flag=='y' || flag=='Y ')
{//由標誌控制的周期。
cout & lt& lt”-\ n”;
cout & lt& lt" \t\t 1:註冊學生!\ n ";
cout & lt& lt" \t\t 2:按學號查看學生信息!\ n ";
cout & lt& lt" \t\t 3:按宿舍號查看學生信息!\ n ";
cout & lt& lt" \t\t 4:按姓名查看學生信息!\ n ";
cout & lt& lt" \t\t 5:按班級查看學生信息!\ n ";
cout & lt& lt”\t\t 6:顯示所有學生信息\ n”;
//cout & lt;& lt”\t\t 7:根據學號修改學生信息\ n”;
//cout & lt;& lt" \t\t 8:根據學號刪除學生信息!\ n ";
cout & lt& lt”-\ n”;
cout & lt& lt"請輸入壹個選項:";
char選擇;
CIN & gt;& gt選擇;
開關(選擇)
{
案例“1”:
file3.open("c:\\stu.dat ",IOs::app | IOs::binary);
輸入:標誌= 0;
cout & lt& lt"輸入學號:";
CIN & gt;& gtstu _ num
while(stu _ num & lt;100000 | | stu _ num & gt;999999)
{
CIN . clear();
倒帶(stdin);
cout & lt& lt“您輸入的學號不正確,請輸入六位數字的學號”< & ltendl
cout & lt& lt”學號:“;
CIN & gt;& gtstu _ num
}
file1.open("c:\\stu.dat ",IOs::in | IOs::binary | IOs::beg);//以已讀方式打開文件。
而(!file1.eof())
{
int n;
file 1 . read((char *)& amp;s1,sizeof(學生));
n = file 1 . g count();
if(n==sizeof(student))
{
如果(s1。Getstunum()==stu_num)
flags = 1;
}
}
file 1 . clear();
file 1 . close();
if (flags==1)
{
CIN . clear();
cout & lt& lt"學號重復,請重新輸入!"& lt& ltendl
轉到輸入;
}
cout & lt& lt"輸入名稱:";CIN & gt;& gtstu _ name
cout & lt& lt”輸入類別:“;CIN & gt;& gtclass _ name
cout & lt& lt“進入宿舍”:CIN & gt;& gthouse _ name
s1。Setdata(stu_num,stu_name,class_name,house _ name);
file 3 . write((char *)& amp;s1,sizeof(s 1));
file 3 . clear();
file 3 . close();
打破;
案例“2”://按學生ID搜索
cout & lt& lt"請輸入學號:";
CIN & gt;& gtstu _ num
while(stu _ num & lt;100000 | | stu _ num & gt;999999)
{
CIN . clear();
倒帶(stdin);
cout & lt& lt“您輸入的學號不正確,請輸入六位數字的學號”< & ltendl
cout & lt& lt”學號:“;
CIN & gt;& gtstu _ num
}
file1.open("c:\\stu.dat ",IOs::in | IOs::binary | IOs::beg);//以已讀方式打開文件。
而(!file1.eof())
{
int n;
file 1 . read((char *)& amp;s1,sizeof(學生));
n = file 1 . g count();
if(n==sizeof(student))
{
如果(s1。getstunum()= = stu _ num)//顯示學生信息。
{
s1。show();
flags = 1;
}
}
}
file 1 . clear();
file 1 . close();
if (flags==0)
cout & lt& lt“我沒找到學號:”
標誌= 0;
打破;
案例“3”://按宿舍號搜索
cout & lt& lt“請輸入宿舍號:“;
CIN & gt;& gthouse _ name
file1.open("c:\\stu.dat ",IOs::in | IOs::binary | IOs::beg);//以已讀方式打開文件。
而(!file1.eof())
{
int n;
file 1 . read((char *)& amp;s1,sizeof(學生));
n = file 1 . g count();
if(n==sizeof(student))
{
if(strcmp(s1。Gethousename(),house_name)==0)
{
s1。show();
flags = 1;
}
}
}
file 1 . clear();
file 1 . close();
if (flags==0)
cout & lt& lt找不到宿舍:“< & lt房子名稱& lt& lt“學生記錄!”& lt& ltendl
標誌= 0;
打破;
案例“4”://按名稱搜索
cout & lt& lt"請輸入學生姓名:";
CIN & gt;& gtstu _ name
file1.open("c:\\stu.dat ",IOs::in | IOs::binary | IOs::beg);//以已讀方式打開文件。
而(!file1.eof())
{
int n;
file 1 . read((char *)& amp;s1,sizeof(學生));
n = file 1 . g count();
if(n==sizeof(student))
{
if(strcmp(s1。Getstuname(),stu_name)==0)
{
s1。show();
flags = 1;
}
}
}
file 1 . clear();
file 1 . close();
if (flags==0)
cout & lt& lt"名稱:"
標誌= 0;
打破;
案例“5”://按類搜索
cout & lt& lt請輸入類名:“”;
CIN & gt;& gtclass _ name
file1.open("c:\\stu.dat ",IOs::in | IOs::binary | IOs::beg);//以已讀方式打開文件。
而(!file1.eof())
{
int n;
file 1 . read((char *)& amp;s1,sizeof(學生));
n = file 1 . g count();
if(n==sizeof(student))
{
if(strcmp(s1。Getclassname(),class_name)==0)
{
s1。show();
flags = 1;
}
}
}
file 1 . clear();
file 1 . close();
if (flags==0)
cout & lt& lt"找不到類別:"
標誌= 0;
打破;
案例“6”://顯示所有學生信息。
file1.open("c:\\stu.dat ",IOs::in | IOs::binary);//以已讀方式打開文件。
而(!file1.eof())
{
int n;
file 1 . read((char *)& amp;s1,sizeof(學生));
n = file 1 . g count();
if(n==sizeof(student))
{
s1。show();
flags = 1;
}
}
file 1 . clear();
file 1 . close();
if (flags==0)
cout & lt& lt“數據庫中沒有記錄!”& lt& ltendl
標誌= 0;
打破;
//案例‘7’://根據學號修改學生信息。
//flags = 0;
//cout & lt;& lt"請輸入要修改的學號:";
//CIN & gt;& gtstu _ num
//while(stu _ num & lt;100000 | | stu _ num & gt;999999)
// {
//CIN . clear();
//rewind(stdin);
//cout & lt;& lt“您輸入的學號不正確,請輸入六位數字的學號”< & ltendl
//cout & lt;& lt”學號:“;
//CIN & gt;& gtstu _ num
// }
//file 1 . open(" c:\ \ stu . dat ",IOs::in | IOs::binary | IOs::beg);//以已讀方式打開文件。
// while(!file1.eof())
// {
//int n;
//file 1 . read((char *)& amp;s1,sizeof(學生));
//n = file 1 . g count();
// if(n==sizeof(student))
// {
// if(s1。Getstunum()==stu_num)
// {
// file3.open("c:\\stu.dat ",IOs::out | IOs::binary);
//cout & lt;& lt"輸入名稱:";CIN & gt;& gtstu _ name
//cout & lt;& lt”輸入類別:“;CIN & gt;& gtclass _ name
//cout & lt;& lt“進入宿舍”:CIN & gt;& gthouse _ name
// s1。Setdata(stu_num,stu_name,class_name,house _ name);
//file 3 . write((char *)& amp;s1,sizeof(s 1));
//file 3 . close();
//flags = 1;
// }
// }
// }
//file 1 . clear();
//file 1 . close();
// if (flags==0)
// {
//cout & lt;& lt"該學生記錄不存在,不能修改!"& lt& ltendl
//break;
// }
//break;
// case '8': //根據學號刪除學生信息。
默認值:flag = ' n
打破;
}
}
cout & lt& lt“謝謝妳的使用!”& lt& ltendl
}