顺序表学生个人健康信息表(数组)

这是一个使用C++编写的顺序表实现的学生个人健康信息管理系统,包括输入、输出、删除、查询和文件操作等功能,方便管理和存储学生健康信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;
   }
  
  }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值