学生信息管理系统(c++,顺序存储结构)

任务要求: 

采用顺序存储完成学生信息的管理。学生信息包括:学号、姓名、专业、班级、性别、年龄等。要求实现学生信息数据的录入、插入、删除、查找、修改、排序等。具体步骤包括:定义顺序表的存储结构、实现相应基本操作、实现学生信息数据的管理;对顺序表中的学生信息按学号从小到大排序。

#include <iostream>
#include <string>
#include <fstream>

using namespace std;
//定义学生信息结构体
typedef struct
{
    int number;
    char name[10];
    char major[10];
    char grade[10];
    char sex[10];
    int age;
}Stu;
typedef struct
{
    Stu* ST;
    int length;
}SqList;
//定义存储学生数
#define SIZE 500
class Student
{
    public:
        void InputList(Stu* S);                         //输入函数
        int menu();                                     //菜单
        void InitList(SqList* L);                       //初始化函数
        void InsertList(SqList* L, int i, Stu S);       //插入函数
        void OutputList(SqList* L);                     //输出函数
        void SearchList(SqList* L);                     //查找函数
        void DeleteList(SqList* L);                     //删除函数
        void SortList(SqList* L);                       //排序函数
        void UpdataList(SqList* L);                     //修改函数
};

int main(int argc, const char** agrv)
{
    Student student;
    SqList L;
    Stu S;
    student.InitList(&L);
    while (1)
    {
        int order = student.menu();
        switch (order)
        {
        case 0:
        {
            return 0;
        }
        case 1:
        {
            student.InputList(&S);
            student.InsertList(&L, 1, S);
            break;
        }
        case 2:
        {
            student.InputList(&S);
            int w = 1;
            cout << "请输入插入位置:";
            cin >> w;
            student.InsertList(&L, w, S);
            break;
        }
        case 3:
        {
            student.SearchList(&L);
            break;
        }
        case 4:
        {
            student.DeleteList(&L);
            break;
        }
        case 5:
        {
            student.OutputList(&L);
            break;
        }
        case 6:
        {
            student.SortList(&L);
            break;
        }
        case 7:
        {
            student.UpdataList(&L);
            break;
        }
        default:
            cout << "输入有误,请重新输入!" << endl;
            break;
        }
    }
    return 0;
}
//函数名:菜单显示函数
//函数功能:显示操作选项
//参数:无
//返回值:选项值
int Student::menu()
{
    int n;
    while (1)
    {
        cout << "*************欢迎使用学生信息管理系统*************" << endl;
        cout << "1.录入学生信息  2.插入学生数据" << endl;
        cout << "3.查找学生信息  4.删除学生信息" << endl;
        cout << "5.显示学生信息  6.按学号排序学生信息" << endl;
        cout << "7.修改学生信息  0.退出" << endl;
        cout << "**************************************************" << endl;
        cout << "请选择操作:";
        cin >> n;
        return n;
    }

}
//函数名:初始化
//函数功能:初始化线性表
//参数:表L
//返回值:无
void Student::InitList(SqList* L)
{
    L->ST = (Stu*)malloc(SIZE * sizeof(Stu));
    if (L->ST == NULL)
    {
        cout << "内存申请失败!" << endl;
        exit(1);
    }
    L->length = 0;
}
//函数名:插入函数
//函数功能:在指定位置插入记录
//参数:表L,插入位置i,记录S
//返回值:无
void Student::InsertList(SqList* L, int i, Stu S)
{
    if (i<1 || i>L->length + 1)
    {
        cout << "插入位置异常!" << endl;
    }
    else if (L->length == SIZE)
    {
        cout << "超过最大存储数量!" << endl;
    }
    else
    {
        for (int j = L->length; j > i - 1; j--)
            L->ST[j] = L->ST[j - 1];
        L->ST[i - 1] = S;
        L->length++;
        cout << "输入成功!" << endl;
    }
}
//函数名:输入函数
//函数功能:输入信息
//参数:记录S
//返回值:无
void Student::InputList(Stu* S)
{
    cout << "请输入学号:";
    cin >> S->number;
    cout << "请输入姓名:";
    cin >> S->name;
    cout << "请输入专业:";
    cin >> S->major;
    cout << "请输入班级:";
    cin >> S->grade;
    cout << "请输入性别:";
    cin >> S->sex;
    cout << "请输入年龄:";
    cin >> S->age;
}
//函数名:输出函数
//函数功能:输出信息
//参数:表L
//返回值:无
void Student:: OutputList(SqList* L)
{
    if (L->length != 0)
    {
        for (int i = 0; i < L->length; i++)
        {
            cout << L->ST[i].number << '\t';
            cout << L->ST[i].name << '\t';
            cout << L->ST[i].major << '\t';
            cout << L->ST[i].grade << '\t';
            cout << L->ST[i].sex << '\t';
            cout << L->ST[i].age << '\t';
            cout << endl;
        }

    }
    else
    {
        cout << "没有学生信息,请先录入!" << endl;
    }
}
//函数名:查找函数
//函数功能:按名字查找指定学生信息
//参数:表L
//返回值:无
void Student::SearchList(SqList* L)
{
    char Sname[10];
    int i;
    cout << "请输入要查询的学生姓名:";
    cin >> Sname;
    for (i = 0; i < L->length; i++)
    {
        if (!strcmp(L->ST[i].name, Sname))
        {
            cout << "已找到该学生!" << endl;
            cout << L->ST[i].number << '\t';
            cout << L->ST[i].name << '\t';
            cout << L->ST[i].major << '\t';
            cout << L->ST[i].grade << '\t';
            cout << L->ST[i].sex << '\t';
            cout << L->ST[i].age << endl;
            break;
        }
    }
    if (i == L->length)
    {
        cout << "没有找到该学生!" << endl;
    }
}
//函数名:删除函数
//函数功能:删除指定姓名的学生
//参数:表L
//返回值:无
void Student:: DeleteList(SqList* L)
{
    char Dname[10];
    int i;
    cout << "请输入要删除的学生姓名:";
    cin >> Dname;
    for (i = 0; i < L->length; i++)
    {
        if (!strcmp(L->ST[i].name, Dname))
        {
            for (int j = i + 1; j < L->length; j++)
            {
                L->ST[j - 1] = L->ST[j];
            }
            L->length--;
            break;
        }
    }
    if (i == L->length)
    {
        cout << "没有找到该学生!";
    }
    else
    {
        cout << "删除完成!" << endl;
    }
}
//函数名:排序函数
//函数功能:按学号从小到大排序
//参数:表L
//返回值:无
void Student::SortList(SqList* L)
{
    for (int i = 0; i < L->length; i++)
    {
        for (int j = 0; j < L->length - i - 1; j++)
        {
            if (L->ST[j].number > L->ST[j + 1].number)
            {
                SqList T;
                InitList(&T);
                T.ST[0] = L->ST[j];
                L->ST[j] = L->ST[j + 1];
                L->ST[j + 1] = T.ST[0];
            }
        }
    }
    cout << "排序完成!" << endl;
}
//函数名:修改函数
//函数功能:修改指定姓名的学生的信息
//参数:表L
//返回值:无
void Student::UpdataList(SqList* L)
{
    char Uname[10];
    int i;
    int m = 0;
    cout << "请输入要修改信息的学生姓名:";
    cin >> Uname;
    for (i = 0; i < L->length; i++)
    {
        if (!strcmp(L->ST[i].name, Uname))
        {
            cout << "已找到该学生!" << endl;;

            cout << L->ST[i].number << '\t';
            cout << L->ST[i].name << '\t';
            cout << L->ST[i].major << '\t';
            cout << L->ST[i].grade << '\t';
            cout << L->ST[i].sex << '\t';
            cout << L->ST[i].age << endl;
            break;
        }
    }
    if (i == L->length)
    {
        cout << "没有找到该学生!";
        return;
    }
    cout << "1.number   2.name    3.major" << endl;
    cout << "4.grade    5.sex     6.age" << endl;
    cout << "请输入想要修改的信息:";
    cin >> m;
    switch (m)
    {
    case 1:
        cout << "请输入新的学号:";
        cin >> L->ST[i].number;
        break;
    case 2:
        cout << "请输入新的姓名:";
        cin >> L->ST[i].name;
        break;
    case 3:
        cout << "请输入新的专业:";
        cin >> L->ST[i].major;
        break;
    case 4:
        cout << "请输入新的班级:";
        cin >> L->ST[i].grade;
        break;
    case 5:
        cout << "请输入新的性别:";
        cin >> L->ST[i].sex;
        break;
    case 6:
        cout << "请输入新的年龄:";
        cin >> L->ST[i].age;
        break;
    default:
        cout << "输入有误,请重新操作!";
        return;
    }
    cout << "修改完成!" << endl;
}

  • 4
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

We尼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值