C++写一个学生信息管理系统,实现增删查改,遍历:学号,姓名,性别,年龄,成绩,往文件里面写,可以改修改

//写一个学生信息管理系统,实现增删查改,遍历:学号,姓名,性别,年龄,成绩
//往文件里面写,可以改

#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;

class studentsystem
{
    public:
        studentsystem(){}
        studentsystem(int number,char name[20],char gender[10],int age,int grade)
        {
            this->number = number;
            strcpy(this->name,name);
            strcpy(this->gender,gender);
            this->age = age;
            this->grade = grade;
        }
        void menu();
        void add();
        void find();
        void updat();
        void delet();
        void display();

    public:
        int number;//学号
        char name[20];//姓名
        char gender[10];//性别
        int age;//年龄
        int grade;//成绩


};

void studentsystem::menu()
{
    cout<<"***************************************"<<endl;
    cout<<"1.增加学生信息           2.查看学生信息"<<endl;
    cout<<"3.删除学生信息           4.修改学生信息"<<endl;
    cout<<"5.显示学生信息           6.退出学生系统"<<endl;
    cout<<"***************************************"<<endl;
}

void studentsystem::add()
{
    studentsystem s1;
    ofstream fout;
    fout.open("binary.dat", ios::binary |ios::app);//二进制写
    ofstream fout1;
    fout1.open("temp.dat", ios::binary |ios::app);//二进制写
    
    //fout.seekp(0,ios::end);
  
    cout<<fout.tellp()<<endl;
    while(1) 
    {   
        cout<<"请输入学生姓名:(输入’end‘退出添加学生信息)"<<endl;
        cin>>s1.name;

        if(strcmp(s1.name, "end") == 0)
        {
            break;
        }

        cout<<"请输入学生学号号:";
        cin>>s1.number;
      //  cout<<endl;

        cout<<"请输入学生学年龄:";
        cin>>s1.age;
        //cout<<endl;

        cout<<"请输入学生学性别:";
        cin>>s1.gender;
        //cout<<endl;

        cout<<"请输入学生成绩:";
        cin>>s1.grade;
        //cout<<endl;
       // cout<<s1.name<<s1.age<<endl;
        fout.write((char*)&s1,sizeof(studentsystem));
    }

    fout.close();
     fout1.close();

}

void studentsystem::find()
{
    studentsystem s1;
    ifstream fin;
    char s[20];
    int flag = 0;
    //fin.seekg(0,ios::beg);
    cout<<"请输入查找学生的姓名:";
    cin>>s;
    fin.open("binary.dat",ios::in | ios::binary);//二进制读
    
    while(fin.read((char*)&s1,sizeof(studentsystem)))
    {
        if(strcmp(s1.name,s) == 0)
        {
            cout<<s1.name<<" "<<s1.number<<" "<<s1.age<<" "<<s1.gender<<" "
            <<s1.grade<<endl;
            flag = 1;
            break;
        }
        
    }

    if(flag == 0)
    {
        cout<<"没有找到该学生信息"<<endl;
    }
    fin.close();
}

void studentsystem::updat()
{
    int flag = 0;
    char str[20];

    fstream fs("binary.dat",ios::in | ios:: out);
    fs.seekg(0,ios::end);//将读的光标移动到文件的末尾

    int num = fs.tellg() / sizeof(studentsystem);
   // cout<<num<<endl;

    fs.seekg(0,ios::beg);//读的光标移回开头
    int i = 0 ;

    studentsystem s;

    cout<<"请输入要修改信息的学生姓名:";
    cin>>str;

    while(i < num)
    {
        fs.read((char *)&s,sizeof(s));
        if(strcmp(s.name,str) == 0)//找到名字
        {
            cout<<"请输入修改后姓名:";
            cin>>s.name;

            cout<<"请输入修改后学号:";
            cin>>s.number;
        //  cout<<endl;

            cout<<"请输入修改后年龄:";
            cin>>s.age;
            //cout<<endl;

            cout<<"请输入修改后性别:";
            cin>>s.gender;
            //cout<<endl;

            cout<<"请输入修改后成绩:";
            cin>>s.grade;
            fs.seekp(sizeof(s)*i,ios::beg);
            fs.write((char *)&s,sizeof(s));
            flag = 1;
            break;
        }

        i++;
    }

    if(flag == 0)
    {
        cout<<"没有找到该学生信息"<<endl;
    }

    fs.close();
}

void studentsystem::display()
{
    studentsystem s1;
    ifstream fin;
    int flag = 0;
    //fin.seekg(0,ios::beg);
    
    fin.open("binary.dat",ios::in | ios::binary);//二进制读
    
    while(fin.read((char*)&s1,sizeof(studentsystem)))
    {
        cout<<s1.name<<" "<<s1.number<<" "<<s1.age<<" "<<s1.gender<<" "
            <<s1.grade<<endl;

        flag = 1;
    }

    if(flag == 0)
    {
        cout<<"无学生信息"<<endl;
    }

    fin.close();
}

void studentsystem::delet()
{
    int flag = 0;
    char str[20];

    fstream fs("binary.dat",ios::in | ios:: out);
    fstream fp("temp.dat",ios::in | ios:: out |ios::trunc);
    fs.seekg(0,ios::end);//将读的光标移动到文件的末尾

    int num = fs.tellg() / sizeof(studentsystem);

    fs.seekg(0,ios::beg);//读的光标移回开头
    fp.seekg(0,ios::beg);
    int i = 0 ;

    studentsystem s1;

    cout<<"请输入要删除的学生姓名:";
    cin>>str;
    //cout<<"num"<<num<<endl;

    while(i < num)
    {
        fs.read((char *)&s1,sizeof(s1));
        if(strcmp(s1.name,str) != 0)
        {
            
            //cout<<"s1"<<s1.name<<endl;
            fp.write((char *)&s1,sizeof(s1));
        }
        else
        {
            flag = 1;
        }

        i++;
       // cout<<"i"<<i<<endl;

    }
    
    fs.close();


    ofstream fout;
    fout.open("binary.dat", ios::binary |ios::out);//二进制写

    i = 0;

    if(flag == 0)
    {
        cout<<"没有找到该学生信息"<<endl;
    }
    else
    {
        //cout<<"L"<<endl;
        fp.seekg(0,ios::end);
        int num = fp.tellg() / sizeof(s1);

        //cout<<num<<endl<<i<<endl;
        fp.seekg(0,ios::beg);
        if(num == 0)
        {
            cout<<"无学生信息"<<endl;
        }
        else
        {
            while(i < num)
            {
                fp.read((char *)&s1,sizeof(s1));
              //  cout<<s1.name;
                fout.write((char *)&s1,sizeof(s1));
                i++;
                //cout<<"6";
            }

            cout<<"删除成功!"<<endl;  
        }
    }

    fout.close();
    fp.close();
}

int main()
{
    studentsystem s;

    int cmd;
    while(1)
    {
        s.menu();
        cmd = 0;
        cin>>cmd;
        switch(cmd)
        {
        case 1:s.add();
            break;

        case 2:s.find();
            break;

        case 3:s.delet();
            break;

        case 4:s.updat();
            break;

        case 5:s.display();
            break;

        case 6:exit(0);
            break;
        default:
            break;
        }
        
    }
    return 0;
};

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,这里是一个简单的学生信息管理系统C++ 实现,采用了面向对象的编程思想。 首先,我们可以定义一个 Student 类来表示一个学生的信息,包括学号姓名年龄性别、出生日期、地址、电话和邮箱等信息: ```cpp #include <string> using namespace std; class Student { public: Student() {} Student(string id, string name, int age, string gender, string birthday, string address, string phone, string email) { this->id = id; this->name = name; this->age = age; this->gender = gender; this->birthday = birthday; this->address = address; this->phone = phone; this->email = email; } string getId() { return id; } string getName() { return name; } int getAge() { return age; } string getGender() { return gender; } string getBirthday() { return birthday; } string getAddress() { return address; } string getPhone() { return phone; } string getEmail() { return email; } private: string id; // 学号 string name; // 姓名 int age; // 年龄 string gender; // 性别 string birthday; // 出生日期 string address; // 地址 string phone; // 电话 string email; // 邮箱 }; ``` 接下来,我们可以设计一个菜单,让用户可以选择添加、删除、修改或查询学生信息等操作。例如: ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<Student> students; int choice; while (true) { cout << "请选择操作:" << endl; cout << "1. 添加学生信息" << endl; cout << "2. 删除学生信息" << endl; cout << "3. 修改学生信息" << endl; cout << "4. 查询学生信息" << endl; cout << "5. 退出程序" << endl; cin >> choice; switch (choice) { case 1: addStudentInfo(students); break; case 2: deleteStudentInfo(students); break; case 3: modifyStudentInfo(students); break; case 4: queryStudentInfo(students); break; case 5: return 0; default: cout << "无效的操作,请重新选择。" << endl; break; } } return 0; } ``` 在每个操作函数中,我们可以通过向 vector 容器中添加、删除、修改或查询 Student 对象来实现学生信息增删改查。例如,添加学生信息的函数可以如下实现: ```cpp void addStudentInfo(vector<Student>& students) { string id, name, gender, birthday, address, phone, email; int age; cout << "请输入学生信息:" << endl; cout << "学号:"; cin >> id; cout << "姓名:"; cin >> name; cout << "年龄:"; cin >> age; cout << "性别:"; cin >> gender; cout << "出生日期:"; cin >> birthday; cout << "地址:"; cin >> address; cout << "电话:"; cin >> phone; cout << "邮箱:"; cin >> email; Student student(id, name, age, gender, birthday, address, phone, email); students.push_back(student); cout << "添加成功。" << endl; } ``` 其他操作函数的实现类似,只需要根据需要向 vector 容器中添加、删除、修改或查询 Student 对象即可。当然,这只是一个简单的示例,实际应用中还需要考虑更多的细节和异常情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值