学生信息管理系统c++(单链表增删改查)

介绍:学生信息(姓名,性别,年龄,身份证号,班级)等信息的增删改查

在这里插入图片描述
源码下载:点我下载

头文件function.h

#ifndef FUNCTION_H
#define FUNCTION_H
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

typedef struct
{
    string id;
    string name;
    string sex;
    string grade;
    int age;
} Student;

typedef struct Node
{
    Student stu;
    struct Node *next;
} Node, *LinkList;

int initList(LinkList &l);
int addtail(LinkList &t);
void queryall(LinkList &l);
void querybyid(LinkList &l);
void deletebyid(LinkList &l);
void deleteall(LinkList &l,LinkList &t);

#endif

function.cpp内容如下:

#include "function.h"

/*初始化一个带头结点的单链表*/
int initList(LinkList &l)
{
    l = new Node;
    l->next = NULL;
    return 0;
}
/*头插法*/
// int addhead(LinkList &l, Student stu)
// {
//     Node *p;
//     p = new Node;
//     cout << "请输入姓名:" << endl;
//     cin >> p->stu.name;
//     cout << "请输入性别:" << endl;
//     cin >> p->stu.sex;
//     cout << "请输入年龄:" << endl;
//     cin >> p->stu.age;
//     p->next = l->next;
//     l->next = p;
//     cout << "添加成功!" << endl;
//     return 0;
// }

/*尾插法*/
int addtail(LinkList &t)
{
    Node *p;
    p = new Node;
    cout << "请输入身份证号:" << endl;
    cin >> p->stu.id;
    cout << "请输入姓名:" << endl;
    cin >> p->stu.name;
    cout << "请输入性别:" << endl;
    cin >> p->stu.sex;
    cout << "请输入班级:" << endl;
    cin >> p->stu.grade;
    cout << "请输入年龄:" << endl;
    cin >> p->stu.age;
    p->next = NULL;
    t->next = p;
    t = p;
    cout << "添加成功!" << endl;
    return 0;
}

/*查询全部*/
void queryall(LinkList &l)
{
    Node *p;
    p = new Node;
    p = l->next;
    cout << endl;
    if (p == NULL)
    {
        cout << "没有学生信息!" << endl;
        cout << endl;
        return;
    }
    cout << "*********************************************************" << endl;
    while (p)
    {
        cout << p->stu.id << " ";
        cout << p->stu.name << "  ";
        cout << p->stu.sex << "  ";
        cout << p->stu.grade << " ";
        cout << p->stu.age << endl;
        p = p->next;
    }
    cout << endl;
}
/*按身份证号查找*/
void querybyid(LinkList &l)
{
    cout << "请输入身份证号" << endl;
    string id;
    cin >> id;
    Node *p;
    p = new Node;
    p = l->next;
    while (p)
    {
        if (p->stu.id == id)
        {
            break;
        }
        p = p->next;
    }
    if (p)
    {
        cout << endl;
        cout << p->stu.id << " ";
        cout << p->stu.name << "  ";
        cout << p->stu.sex << "  ";
        cout << p->stu.grade << " ";
        cout << p->stu.age << endl;
        cout << endl;
    }
    else
    {
        cout << endl;
        cout << "未找到该学生!" << endl;
    }
}

/*通过id删除*/
void deletebyid(LinkList &l)
{
    cout << "请输入身份证号" << endl;
    string id;
    cin >> id;
    Node *p;
    p = new Node;
    p = l->next;
    Node *front;
    front = new Node;
    front = l;
    bool is = false;
    while (p)
    {
        if (p->stu.id == id)
        {
            front->next = p->next;
            delete (p);
            p = NULL;
            is = true;
            cout << "删除成功!" << endl;
            cout << endl;
            break;
        }
        front = p;
        p = p->next;
    }
    if (is == false)
    {
        cout << "不存在改学生!" << endl;
    }
}

void deleteall(LinkList &l,LinkList &t)
{
    Node *p,*q;
    p = l->next;
    if (p == NULL)
    {
        cout << "没有学生记录可删除!" << endl;
        return;
    }

    while (p)
    {
        q=p->next;
        delete (p);
        p = q;
    }
    l->next=NULL;
    t=l;
    cout << "全部删除完成!" << endl;
}

app.cpp内容如下

#include "function.h"

int main()
{
    LinkList l;
    initList(l);
    Node *t;
    t = new Node;
    t = l;
    Student stu;
    while (1)
    {
        int num;
        cout << "========================学生信息管理系统============================" << endl;
        cout << "1.添加学生信息" << endl;
        cout << "2.查询学生信息" << endl;
        cout << "3.按身份证号查找" << endl;
        cout << "4.按身份证号删除" << endl;
        cout << "5.删除全部" << endl;
        cout << "0.退出" << endl;
        cout << "请输入数字选择:" << endl;
        cin >> num;
        switch (num)
        {
        case 1:
            addtail(t);
            break;
        case 2:
            queryall(l);
            break;
        case 3:
            querybyid(l);
            break;
        case 4:
            deletebyid(l);
            break;
        case 5:
            deleteall(l,t);
            break;
        case 0:
            exit(0);
        default:
            cout << "输入错误,请重新输入!" << endl;
            break;
        }
    }
}

源码下载:点我下载

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,以下是用链表实现学生成绩管理系统增删代码: ```c++ #include<iostream> #include<cstring> using namespace std; struct student{ int id; //学号 string name; //姓名 float score; //成绩 student *next; //指向下一个节点的指针 }; class StudentList{ public: StudentList(){ head = NULL; } ~StudentList(){ student *p = head; while(p){ student *q = p->next; delete p; p = q; } head = NULL; } void Create(); //创建链表 void Insert(); //插入节点 void Delete(); //删除节点 void Modify(); //修节点 void Search(); //找节点 void Display(); //显示链表 private: student *head; //头节点 }; void StudentList::Create(){ int n; cout<<"请输入学生人数:"<<endl; cin>>n; head = new student; //创建头节点 head->next = NULL; student *p = head; //p指向尾节点 for(int i=0;i<n;i++){ student *s = new student; //创建新节点 cout<<"请输入第"<<i+1<<"个学生信息:"<<endl; cout<<"学号:"<<endl; cin>>s->id; cout<<"姓名:"<<endl; cin>>s->name; cout<<"成绩:"<<endl; cin>>s->score; s->next = NULL; p->next = s; //尾插法插入新节点 p = s; } cout<<"创建链表成功!"<<endl; } void StudentList::Insert(){ student *s = new student; //创建新节点 cout<<"请输入要插入的学生信息:"<<endl; cout<<"学号:"<<endl; cin>>s->id; cout<<"姓名:"<<endl; cin>>s->name; cout<<"成绩:"<<endl; cin>>s->score; s->next = NULL; student *p = head; while(p->next){ if(p->next->id > s->id){ //找到插入位置 s->next = p->next; p->next = s; cout<<"插入成功!"<<endl; return; } p = p->next; } p->next = s; //尾插法插入新节点 cout<<"插入成功!"<<endl; } void StudentList::Delete(){ int id; cout<<"请输入要删除的学生学号:"<<endl; cin>>id; student *p = head; while(p->next){ if(p->next->id == id){ //找到要删除的节点 student *q = p->next; p->next = q->next; delete q; cout<<"删除成功!"<<endl; return; } p = p->next; } cout<<"未找到该学生!"<<endl; } void StudentList::Modify(){ int id; cout<<"请输入要修学生学号:"<<endl; cin>>id; student *p = head; while(p->next){ if(p->next->id == id){ //找到要修的节点 cout<<"请输入新的学生信息:"<<endl; cout<<"学号:"<<endl; cin>>p->next->id; cout<<"姓名:"<<endl; cin>>p->next->name; cout<<"成绩:"<<endl; cin>>p->next->score; cout<<"修成功!"<<endl; return; } p = p->next; } cout<<"未找到该学生!"<<endl; } void StudentList::Search(){ int id; cout<<"请输入要找的学生学号:"<<endl; cin>>id; student *p = head; while(p->next){ if(p->next->id == id){ //找到要找的节点 cout<<"学号:"<<p->next->id<<endl; cout<<"姓名:"<<p->next->name<<endl; cout<<"成绩:"<<p->next->score<<endl; return; } p = p->next; } cout<<"未找到该学生!"<<endl; } void StudentList::Display(){ student *p = head->next; while(p){ cout<<"学号:"<<p->id<<"\t姓名:"<<p->name<<"\t成绩:"<<p->score<<endl; p = p->next; } } int main(){ StudentList l; int choice; while(true){ cout<<"-----------------"<<endl; cout<<"1.创建链表"<<endl; cout<<"2.插入节点"<<endl; cout<<"3.删除节点"<<endl; cout<<"4.修节点"<<endl; cout<<"5.找节点"<<endl; cout<<"6.显示链表"<<endl; cout<<"0.退出程序"<<endl; cout<<"-----------------"<<endl; cout<<"请输入您的选择:"<<endl; cin>>choice; switch(choice){ case 1: l.Create(); break; case 2: l.Insert(); break; case 3: l.Delete(); break; case 4: l.Modify(); break; case 5: l.Search(); break; case 6: l.Display(); break; case 0: return 0; default: cout<<"输入有误,请重新输入!"<<endl; break; } } return 0; } ``` 这个程序实现了一个简学生成绩管理系统,可以通过命令行菜进行增删等操作。其中,链表的每个节点包含了学生的学号、姓名和成绩等信息,并且可以进行动态的插入、删除和修操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小️

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

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

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

打赏作者

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

抵扣说明:

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

余额充值