#include<iostream>
#include<string>
#include<stdlib.h>
#include<fstream>
#include<iomanip>
const maxsize=100;
int n;//定义要输入数据的个数
using namespace std;
struct Student
{
string num;//学号
string name;//姓名
string born;//出生年月
char sex;//性别
string body;//身体状况
};//定义学生信息
Student stu[maxsize];//定义学生人数
class Sequence
{
public:
void input();//输入数据
void output();//输出数据
void delect();//删除数据
void research();//搜查数据
void insert();//插入数据
};//定义顺序表
void Sequence::input()
{
cout<<"将要输入学生的人数:"<<endl;
cin>>n;
for(int k=0;k<n;k++)
{
cout<<"第"<<k+1<<"名同学资料\n";
cout<<"学号:"<<endl;
cin>>stu[k].num;
cout<<"姓名:"<<endl;
cin>>stu[k].name;
cout<<"出生年月(XX年XX月):"<<endl;
cin>>stu[k].born;
cout<<"性别(f or m):"<<endl;
cin>>stu[k].sex;
cout<<"身体状况(良好或患病):"<<endl;
cin>>stu[k].body;
cout<<endl;
}
}//录入信息
void Sequence::research()
{
string num1;
cout<<"请输入学生学号:"<<endl;
cin>>num1;
bool flag=true;
for(int i=0;i<n;i++)
if(stu[i].num==num1)
{
cout<<"学号:"<<setw(10)<<stu[i].num<<" "<<"姓名:"<<setw(5)<<stu[i].name<<" "<<"出生年月:"<<setw(8)<<stu[i].born<<" ";
cout<<"性别:"<<setw(3)<<stu[i].sex<<" "<<"身体状况:"<<setw(5)<<stu[i].body<<endl;
flag=false;
}
if(flag==true)
cout<<"输入信息有误!"<<endl;
cout<<endl;
}//搜查信息
void Sequence::output()
{
cout<<"所有学生个人资料:\n";
if(n==0) cout<<"不存在学生信息!"<<endl;
for(int i=0;i<n;i++)
{
cout<<"学号:"<<setw(10)<<stu[i].num<<" "<<"姓名:"<<setw(5)<<stu[i].name<<" "<<"出生年月:"<<setw(8)<<stu[i].born<<" ";
cout<<"性别:"<<setw(3)<<stu[i].sex<<" "<<"身体状况:"<<setw(5)<<stu[i].body<<endl;
}
cout<<endl;
}//输出信息
void Sequence::delect()
{
bool flag=true;
string num2;
cout<<"请输入要删除学生的学号"<<endl;
cin>>num2;
for(int i=0;i<n;i++)
if(num2==stu[i].num)
{
for(i;i<n-1;i++)
{
stu[i].name=stu[i+1].name;
stu[i].body=stu[i+1].body;
stu[i].born=stu[i+1].born;
stu[i].num=stu[i+1].num;
stu[i].sex=stu[i+1].sex;
}
cout<<"删除成功!"<<endl;
flag=false;
}
if(i>=n&&flag==true)
cout<<"该学号不存在!"<<endl;
else
n--;
cout<<endl;
}//删除信息
void Sequence::insert()
{
cout<<"请输入要增加学生的资料:"<<endl;
cout<<"学号:"<<endl;
cin>>stu[n].num;
cout<<"姓名:"<<endl;
cin>>stu[n].name;
cout<<"出生年月(2012年12月):"<<endl;
cin>>stu[n].born;
cout<<"性别(f or m):"<<endl;
cin>>stu[n].sex;
cout<<"身体状况(良好或患病):"<<endl;
cin>>stu[n].body;
cout<<endl;
n=n+1;
cout<<endl;
}//插入信息
void main()
{
int choice=1;
Sequence s;
char yes[2];
cout<<"------欢迎进入学生健康管理系统------"<<endl;
cout<<"------------------------------------"<<endl;
while(choice!=8)
{
cout<<endl;
cout<<"1------新建学生健康表--------------"<<endl;
cout<<"2------向学生健康表插入学生信息----"<<endl;
cout<<"3------在健康表删除学生信息--------"<<endl;
cout<<"4------从文件中读取健康表信息------"<<endl;
cout<<"5------向文件写入学生健康表信息----"<<endl;
cout<<"6------在健康表中查询学生信息(按学生学号来进行查找)"<<endl;
cout<<"7------在屏幕中输出全部学生信息----"<<endl;
cout<<"8------退出------------------------"<<endl;
cout<<"-----------------------------------"<<endl;
cin>>choice;
switch(choice)
{
case 1:s.input();break;
case 2:s.insert();break;
case 3:s.delect();break;
case 4:
{
ifstream fip;
int i=0;
fip.open("testbin.dat",ios::in|ios::binary);
cout<<"****当前文件中的数据如下****\n";
while(fip.read((char *)&stu[i],sizeof(stu[i])))//读取文件中的数据
{
cout<<"第"<<++i<<"位同学"<<endl<<"学号:"<<stu[i].num<<" ";
cout<<"学号:"<<setw(10)<<stu[i].num<<" "<<"姓名:"<<setw(5)<<stu[i].name<<" "<<"出生年月:"<<setw(8)<<stu[i].born<<" ";
cout<<"性别:"<<setw(3)<<stu[i].sex<<" "<<"身体状况:"<<setw(5)<<stu[i].body<<endl;
}
if(i==0)
cout<<"...没有数据记录...\n";
fip.close();
break;}
case 5:
{
ofstream fop;
fop.open("testbin.dat",ios::out|ios::app|ios::binary);
cout<<"****请输入要增加的数据****\n";
do{
cout<<"请输入要增加学生的资料:"<<endl;
cout<<"学号:"<<endl;
cin>>stu[n].num;
cout<<"姓名:"<<endl;
cin>>stu[n].name;
cout<<"出生年月(XX年XX月):"<<endl;
cin>>stu[n].born;
cout<<"性别(f or m):"<<endl;
cin>>stu[n].sex;
cout<<"身体状况(良好或患病):"<<endl;
cin>>stu[n].body;
fop.write((char *)&stu[n],sizeof(stu[n]));//将数据写入文件结尾
cout<<"是否继续输入数据?(Y/N)";
flush(cout);
cin>>yes;
n++;
}while(!strcmp(strupr(yes),"Y"));
fop.close();
break;}
case 6:s.research();break;
case 7:s.output();break;
}
}
}