#include<iostream.h>
#include<string.h>
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
#include<stdio.h>
#include<stdlib.h>
class student
{
private:
int maxnum;//学生学号最大值
int sno;//学号
char name[5];
char sex[2];
int age;
public:
student();
~student();
void enter();//学生信息录入构造函数
void display();//学生信息输出构造函数
void setsno(int temp);
int getsno();
char *getname();
void read();
void write();
};
student::student()
{}
student::~student()
{}
int student::getsno()
{return sno;}
char *student::getname()
{return name;}
void student::setsno(int temp)
{sno=temp;}
void student::enter()
{
ifstream tfile("max.txt",ios::binary|ios::nocreate);
if(tfile)
{
tfile.read((char *)&maxnum,sizeof maxnum);
}
else
{
maxnum=1;//学生学号初始化
}
tfile.close();
sno=maxnum++;
ofstream ofile("max.txt");
ofile.write((char*)&maxnum,sizeof maxnum);
tfile.close();
cout<<"请输入学生信息"<<endl;
cout<<"学生姓名:"<<endl;
cin>>name;
cout<<"性别(男,女):"<<endl;
cin>>sex;
while(strcmp(sex,"男")!=0&&strcmp(sex,"女")!=0)
{
cout<<"错误请重新输入!"<<endl;
cin>>sex;
}
cout<<"年龄:"<<endl;
cin>>age;
while(age<=15||age>=50)
{
cout<<"错误请重新输入!"<<endl;
cin>>age;
}
}
void student::display()
{
cout<<setw(4)<<sno<<setw(4)<<name<<setw(4)<<sex<<setw(4)<<age<<endl;
}
student information;//student 类的全局变量
void menu()
{
cout<<" 姓名: 学号: 班级: "<<endl;
cout<<"*******************************************************"<<endl;
cout<<" * 高校学籍管理系统 *"<<endl;
cout<<"*******************************************************"<<endl;
cout<<" "<<endl;
cout<<" 0.退出系统 "<<endl;
cout<<" "<<endl;
cout<<" 1.学生信息录入 "<<endl;
cout<<" "<<endl;
cout<<" 2.学生信息查询 "<<endl;
cout<<" "<<endl;
cout<<" 3.学生信息输出 "<<endl;
cout<<" "<<endl;
cout<<" 请选择操作(0=======3) "<<endl;
cout<<" "<<endl;
cout<<" 学生学号初始值为:1(自动顺次加1) "<<endl;
}
void read()
{
ifstream afile("student.txt",ios::nocreate);
afile.read((char*)&information,sizeof information);
}
void write()
{
ofstream bfile("student.txt",ios::app);
bfile.write((char*)&information,sizeof information);
}
void input(void)
{
char ch;
information.enter();
write();
cout<<"你还要输入下一位学生的信息吗(Y/N)!"<<endl;
cin>>ch;
if(ch=='Y'||ch=='y')
{
input();
}
}
void search()
{
cout<<"请输入你的查找类型:(1.学号 2.姓名 )"<<endl;
int i,m=0;
char j,ch1[5];
cin>>j;
while((j!='1')&&(j!='2'))
{
cout<<"错误请重新选择!"<<endl;
cin>>j;
}
if(j=='1')
{
cout<<"请输入你要查找的学生的学号:"<<endl;
cin>>i;
}
if(j=='2')
{
cout<<"请输入你要查找的学生的姓名:"<<endl;
cin>>ch1;
}
ifstream dfile("student.txt",ios::nocreate);
while (dfile.good())
{
dfile.read((char *) &information,sizeof information);
if(i==information.getsno()||strcmp(information.getname(),ch1)==0)
{
cout<<"你要查找的学生信息如下:"<<endl;
cout<<setw(4)<<"学号"<<setw(4)<<"姓名"<<setw(4)<<"性别"<<setw(4)<<"年龄";
information.display();
m=1;
return;
}
}
if(m!=1)
cout<<"没有找到这名学生的信息!"<<endl;
}
void output()
{
int i=0;
ifstream cfile("student.txt",ios::nocreate);
while(cfile)
{
if( cfile.read((char *)&information,sizeof information))
{
information.display();
i++;
}
}
cout<<"一共有"<<i<<"个学生信息"<<endl;
}
void select()//选择菜单函数
{
int ch;
do{
cin>>ch;
switch(ch)
{
case 0:
exit(0);
menu();
break;
case 1:
input();
menu();
break;
case 2:
search();
menu();
break;
case 3:
output();
menu();
break;
default :
menu();
cout<<"输入无效请重新输入(0========3)"<<endl;
break;
}
}while(1);
}
void main()
{
menu();
select();
}