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

[cpp]  view plain  copy
  1. #include<iostream>  
  2. #include<string>  
  3. #include<stdlib.h>  
  4. #include<fstream>  
  5. #include<iomanip>  
  6. const maxsize=100;  
  7. int n;//定义要输入数据的个数  
  8. using namespace std;  
  9. struct Student  
  10. {  
  11.       string num;//学号  
  12.    string name;//姓名  
  13.    string born;//出生年月  
  14.    char sex;//性别  
  15.       string body;//身体状况  
  16. };//定义学生信息  
  17.  Student stu[maxsize];//定义学生人数  
  18. class Sequence  
  19. {  
  20. public:  
  21.     void input();//输入数据  
  22.  void output();//输出数据  
  23.  void delect();//删除数据  
  24.  void research();//搜查数据  
  25.  void insert();//插入数据  
  26.   
  27. };//定义顺序表  
  28.   
  29. void Sequence::input()  
  30. {  
  31.     cout<<"将要输入学生的人数:"<<endl;  
  32.  cin>>n;  
  33.  for(int k=0;k<n;k++)  
  34.  {  
  35.     cout<<"第"<<k+1<<"名同学资料\n";  
  36.     cout<<"学号:"<<endl;  
  37.     cin>>stu[k].num;  
  38.     cout<<"姓名:"<<endl;  
  39.     cin>>stu[k].name;  
  40.     cout<<"出生年月(XX年XX月):"<<endl;  
  41.     cin>>stu[k].born;  
  42.     cout<<"性别(f or m):"<<endl;  
  43.     cin>>stu[k].sex;  
  44.     cout<<"身体状况(良好或患病):"<<endl;  
  45.     cin>>stu[k].body;  
  46.     cout<<endl;  
  47.  }  
  48.   
  49. }//录入信息  
  50.   
  51. void Sequence::research()  
  52. {  
  53.   string num1;  
  54.      cout<<"请输入学生学号:"<<endl;  
  55.   cin>>num1;  
  56.   bool flag=true;  
  57.   for(int i=0;i<n;i++)  
  58.    if(stu[i].num==num1)  
  59.    {  
  60.     cout<<"学号:"<<setw(10)<<stu[i].num<<"  "<<"姓名:"<<setw(5)<<stu[i].name<<"  "<<"出生年月:"<<setw(8)<<stu[i].born<<"  ";  
  61.     cout<<"性别:"<<setw(3)<<stu[i].sex<<"  "<<"身体状况:"<<setw(5)<<stu[i].body<<endl;  
  62.     flag=false;  
  63.    }  
  64.    if(flag==true)  
  65.     cout<<"输入信息有误!"<<endl;   
  66.     cout<<endl;  
  67. }//搜查信息  
  68.   
  69. void Sequence::output()  
  70. {  
  71.     cout<<"所有学生个人资料:\n";  
  72.  if(n==0) cout<<"不存在学生信息!"<<endl;  
  73.  for(int i=0;i<n;i++)  
  74.  {  
  75.        cout<<"学号:"<<setw(10)<<stu[i].num<<"  "<<"姓名:"<<setw(5)<<stu[i].name<<"  "<<"出生年月:"<<setw(8)<<stu[i].born<<"  ";  
  76.     cout<<"性别:"<<setw(3)<<stu[i].sex<<"  "<<"身体状况:"<<setw(5)<<stu[i].body<<endl;  
  77.  }  
  78.   cout<<endl;  
  79. }//输出信息  
  80.   
  81. void Sequence::delect()  
  82. {  
  83.  bool flag=true;  
  84.  string num2;  
  85.     cout<<"请输入要删除学生的学号"<<endl;  
  86.     cin>>num2;  
  87.  for(int i=0;i<n;i++)  
  88.   if(num2==stu[i].num)  
  89.   {  
  90.             for(i;i<n-1;i++)  
  91.    {  
  92.     stu[i].name=stu[i+1].name;  
  93.     stu[i].body=stu[i+1].body;  
  94.     stu[i].born=stu[i+1].born;  
  95.     stu[i].num=stu[i+1].num;  
  96.     stu[i].sex=stu[i+1].sex;  
  97.      
  98.    }  
  99.    cout<<"删除成功!"<<endl;  
  100.    flag=false;  
  101.   }  
  102.  if(i>=n&&flag==true)  
  103.   cout<<"该学号不存在!"<<endl;  
  104.  else  
  105.   n--;  
  106.   cout<<endl;  
  107. }//删除信息  
  108.   
  109. void Sequence::insert()  
  110. {  
  111.    cout<<"请输入要增加学生的资料:"<<endl;  
  112.    cout<<"学号:"<<endl;  
  113.    cin>>stu[n].num;  
  114.    cout<<"姓名:"<<endl;  
  115.    cin>>stu[n].name;  
  116.    cout<<"出生年月(2012年12月):"<<endl;  
  117.    cin>>stu[n].born;  
  118.    cout<<"性别(f or m):"<<endl;  
  119.    cin>>stu[n].sex;  
  120.    cout<<"身体状况(良好或患病):"<<endl;  
  121.    cin>>stu[n].body;  
  122.    cout<<endl;  
  123.    n=n+1;  
  124.     cout<<endl;  
  125. }//插入信息  
  126.   
  127. void main()  
  128. {  
  129.      int choice=1;  
  130.   Sequence s;  
  131.   char yes[2];  
  132.   cout<<"------欢迎进入学生健康管理系统------"<<endl;  
  133.   cout<<"------------------------------------"<<endl;  
  134.      while(choice!=8)  
  135.   {  
  136.     cout<<endl;  
  137.          cout<<"1------新建学生健康表--------------"<<endl;  
  138.    cout<<"2------向学生健康表插入学生信息----"<<endl;  
  139.    cout<<"3------在健康表删除学生信息--------"<<endl;  
  140.    cout<<"4------从文件中读取健康表信息------"<<endl;  
  141.    cout<<"5------向文件写入学生健康表信息----"<<endl;  
  142.          cout<<"6------在健康表中查询学生信息(按学生学号来进行查找)"<<endl;  
  143.    cout<<"7------在屏幕中输出全部学生信息----"<<endl;  
  144.          cout<<"8------退出------------------------"<<endl;  
  145.          cout<<"-----------------------------------"<<endl;  
  146.       cin>>choice;  
  147.    switch(choice)  
  148.    {  
  149.    case 1:s.input();break;  
  150.    case 2:s.insert();break;  
  151.    case 3:s.delect();break;  
  152.       case 4:  
  153.     {  
  154.      ifstream fip;  
  155.      int i=0;  
  156.               fip.open("testbin.dat",ios::in|ios::binary);  
  157.               cout<<"****当前文件中的数据如下****\n";  
  158.      while(fip.read((char *)&stu[i],sizeof(stu[i])))//读取文件中的数据  
  159.      {  
  160.                   cout<<"第"<<++i<<"位同学"<<endl<<"学号:"<<stu[i].num<<"   ";  
  161.                   cout<<"学号:"<<setw(10)<<stu[i].num<<"  "<<"姓名:"<<setw(5)<<stu[i].name<<"  "<<"出生年月:"<<setw(8)<<stu[i].born<<"  ";  
  162.             cout<<"性别:"<<setw(3)<<stu[i].sex<<"  "<<"身体状况:"<<setw(5)<<stu[i].body<<endl;  
  163.      }  
  164.               if(i==0)  
  165.             cout<<"...没有数据记录...\n";  
  166.                fip.close();  
  167.          break;}  
  168.   
  169.    case 5:  
  170.     {  
  171.      ofstream fop;  
  172.               fop.open("testbin.dat",ios::out|ios::app|ios::binary);  
  173.               cout<<"****请输入要增加的数据****\n";  
  174.               do{  
  175.              cout<<"请输入要增加学生的资料:"<<endl;  
  176.                    cout<<"学号:"<<endl;  
  177.                    cin>>stu[n].num;  
  178.                    cout<<"姓名:"<<endl;  
  179.                    cin>>stu[n].name;  
  180.                    cout<<"出生年月(XX年XX月):"<<endl;  
  181.                    cin>>stu[n].born;  
  182.                    cout<<"性别(f or m):"<<endl;  
  183.                    cin>>stu[n].sex;  
  184.                    cout<<"身体状况(良好或患病):"<<endl;  
  185.                    cin>>stu[n].body;  
  186.              fop.write((char *)&stu[n],sizeof(stu[n]));//将数据写入文件结尾  
  187.              cout<<"是否继续输入数据?(Y/N)";  
  188.              flush(cout);  
  189.              cin>>yes;  
  190.        n++;  
  191.      }while(!strcmp(strupr(yes),"Y"));  
  192.            fop.close();  
  193.      break;}  
  194.   
  195.    case 6:s.research();break;  
  196.    case 7:s.output();break;  
  197.    }  
  198.     
  199.   }  
  200.   
  201. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值