- #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;
- }
- }
- }
顺序表学生个人健康信息表(数组)
最新推荐文章于 2020-11-17 22:28:53 发布