c语言使用结构体实现学生管理系统

题目简介:

分析:

1.定义一个结构体

typedef struct student {
	int id;
	string name;
    int age;
	char gender;
}stu;

用struct定义一个结构体,包括学生的学号、姓名、年龄、性别,将这个结构体命名为stu。

2.定义结构体数组

stu stuin[100];
int num = 0;  //存放学生总人数

 定义一个名为stuin的结构体数组,里面有100个元素,可以保留100个学生的信息。记num(num为全局变量)为已经存在数组的学生数,初始化为0。

3.添加学生

void add(stu* student)//添加学生信息
{
    int i;
    int tmp;
    int addr = num; //学生总人数
    for (i = addr; i < sizeof(stuin) / sizeof(stuin[0]); i++)
{
        cout<<"请输入学号:"<<endl;
        cin>> student[i].id;
        cout<<"请输入姓名:"<<endl;
        cin >> student[i].name;
        cout<<"请输入年龄:"<<endl;
        cin>> student[i].age;
        cout<<"请输入性别:"<<endl;
        cin>>student[i].gender;
        num++;  //记录总人数
        cout<<"是否继续录入?  0表示继续  1表示退出"<<endl;
        cin>> tmp;
        cout << endl;
        if (tmp)break;
    }
}

4.查找学生

void select(stu*student) { //查找学生
    cout<<"请输入要查找学生的学号:" << endl;
    int id;
    cin >> id;
    bool flag = true;
    for (int i = 0; i < num; i++) {
        if (student[i].id == id) {
            flag = false;
            cout << "该学生的信息如下:" << endl;
            cout << "姓名:" << student[i].name << endl;
            cout << "年龄:" << student[i].age << endl;
            cout << "性别:" << student[i].gender << endl;
            break;
        }
    }
    if (flag)cout << "查无此人" << endl;
}

5.修改学生

void refactor( stu* student) {//修改学生信息
    cout << "请输入要修改学生的学号:" << endl;
    int id;
    cin >> id;
    for (int i = 0; i < num; i++) {
        if (student[i].id == id) {
            int answer;
            cout << "您要修改什么信息?(1、学号,2、姓名,3、年龄,4、性别,5、退出)" << endl;
            cin >> answer;
            switch (answer) {
            case 1:
                cout << "学号不能修改" << endl;
                break;
            case 2: {
                cout << "您要修改为:" << endl;
                string new_name;
                cin >> new_name;
                &student[i].name;
                student[i].name = new_name;
                break;
            }
            case 3: {
                cout << "您要修改为:" << endl;
                int new_age;
                cin >> new_age;
                &student[i].age;
                student[i].age = new_age;
                break;
            }
            case 4: {
                cout << "您要修改为:" << endl;
                char new_gender;
                cin >> new_gender;
                &student[i].gender;
                student[i].gender = new_gender;
                break;
            }
            default:
                break;
            }
        }
    }
}

6.删除学生

void del(stu* student) {//删除学生
    int id;
    int i, j;
    cout<<"请输入要删除学生的学号:"<<endl;
    cin >> id;
    for (i = 0; i < num; i++)
    {
        if (student[i].id==id)
        {
            printf("成功删除以下学生信息:");
            cout << "学号:" << student[i].id << endl;
            cout << "姓名:" << student[i].name << endl;
            cout << "年龄:" << student[i].age << endl;
            cout << "性别:" << student[i].gender << endl;
            for (j = i; j < num - 1; j++)
            {
                student[j] = student[j + 1];
            }
            num--; //减去总数量
            break;
        }
    }
    if (i == num + 1)
        cout<<"没有找到该学号.\n";
}

7.显示所有学生的信息

void print(stu*student)//显示所有学生信息
{
    int i;
    cout << "--------------------------------------------------" << endl;
    for (i = 0; i < num; i++)
    {
        cout<<"学号:" <<student[i].id<<endl;
        cout << "姓名:" << student[i].name<<endl;
        cout<<"年龄:"<< student[i].age<<endl;
        cout << "性别:" <<student[i].gender<<endl;
        cout << endl;
    }
    cout << "--------------------------------------------------" << endl;
}

8.主函数调试

int main() {
    add(stuin);
    select(stuin);
    refactor(stuin);
    del(stuin);
    print(stuin);
    system("pause");
}

代码与运行截图

 感谢您看到这里,如果您觉得这篇文章对您有用的话,希望能点个免费的赞支持一下。

  • 12
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值