(实验)自定义数据元素的类型和存储结构(顺序表或链表均可),完成如下的功能:
①录入:从键盘输入学生信息表的各个数据元素(至少包含学号,姓名,年龄,语文成绩,数学成绩,英语成绩);
②查找:可按学号查找后输出学生的完整信息。
③插入:在表中第i个元素前插入新的学生信息;
④删除:按照学号删除指定学生信息。
⑤输出:输出所有学生信息;

#include <iostream>
using namespace std;
//学生信息结构体
struct Student {int id;                 //序列long studentid;        //学号string name;      //姓名int age;        //年龄int Score[3];   //成绩
};//单链表的存储结构
typedef struct LNode {Student data;           //节点的数据项struct LNode* next;     //节点的指针域
}LNode,*LinkList;           //LinkList为指向结构体LNode的指针类型//单链表的初始化
LinkList InitList(LinkList &L) {L = new LNode;          //生成头结点L->next = NULL;         //头结点的指针域置为空return L;
}//单链表的创建
int CreatList(LinkList& L, int n) {L->next = NULL;int a = 0;char s = 'y';while (s != 'n'){LNode* p = new LNode;p->data.id = ++n;a = n;cout << "序列:" << n<< endl;cout << "学号:" << endl;cin >> p->data.studentid;cout << "姓名:" << endl;cin >> p->data.name;cout << "年龄:" << endl;cin >> p->data.age;cout << "语文:" << endl;cin >> p->data.Score[0];cout << "数学:" << endl;cin >> p->data.Score[1];cout << "英语:" << endl;cin >> p->data.Score[2];p->next = L->next;L->next = p;cout << "是否要继续添加  y或n"<<endl;cin >> s;}return a;
}//取链表中的所有值
LNode* GetStudent(LinkList L, int i) {LinkList p = L;int j = 0;while (p&&j<=i){p = p->next;++j;}return p;
}//根据学号查找
LNode* queryById(LinkList L,long studentid) {LinkList p = L->next;while (p&&p->data.studentid!=studentid){p = p->next;}if (!p){cout << "查无此人!";p = NULL;}return p;
}//插入新的学生信息
bool addStudent(LinkList& L, int i, Student e) {LinkList p = L;int j = 0;while (p&&(j<i-1)){p = p->next;++j;}if (!p||i<=0){cout << "插入失败!";return false;}LNode* s = new LNode;s->data = e;s->next = p->next;p->next = s;return true;
}//删除第i个学生信息
bool DeleteStudent(LinkList& L, long deleteId) {LNode* p = GetStudent(L, queryById(L, deleteId)->data.id -1);LNode* q = new LNode;q = p->next;p->next = q->next;delete q;return true;
}int main() {//新建LinkList L;L = InitList(L);int num = 0;//cout << "请输入要录入的学生人数:"<< endl;//cin >> num;num = CreatList(L, num);cout<< num;//输出cout << "输出所有学生" << endl;for (int i = 0; i < num; i++){Student q = GetStudent(L, i)->data;cout << "学号:" << q.studentid << endl;cout << "年龄:" << q.age << endl;cout << "姓名:" << q.name << endl;cout << "语文:" << q.Score[0] << endl;cout << "数学:" << q.Score[1] << endl;cout << "英语:" << q.Score[2] << endl;}//查找cout << "按学号查找学生的完整信息" << endl;cout << "请输入学号" << endl;int studentid;cin >> studentid;Student s = queryById(L, studentid)->data;cout << "学号:"<< s.studentid << endl;cout << "年龄:"<< s.age << endl;cout << "姓名:"<< s.name << endl;cout << "语文:"<< s.Score[0] << endl;cout << "数学:"<< s.Score[1] << endl;cout << "英语:"<< s.Score[2] << endl;//插入cout << "在表中第i个元素前插入新的学生信息" << endl;cout << "请输入要插入的学生信息" << endl;Student s1;s1.id = ++num;cout << "序列:" << s1.id << endl;cout << "学号:" << endl;cin >> s1.studentid;cout << "姓名:" << endl;cin >> s1.name;cout << "年龄:" << endl;cin >> s1.age;cout << "语文:" << endl;cin >> s1.Score[0];cout << "数学:" << endl;cin >> s1.Score[1];cout << "英语:" << endl;cin >> s1.Score[2];bool add = false;int n;while (add == false){cout << "请输入要在第几个插入" << endl;cin >> n;add = addStudent(L, n, s1);if (add == false){cout << "插入失败!请重新在表中第i个元素前插入新的学生信息" << endl;}}cout << "插入成功!" << endl;//输出cout << "输出所有学生" << endl;for (int i = 0; i < num; i++){Student q = GetStudent(L, i)->data;cout << "学号:" << q.studentid << endl;cout << "年龄:" << q.age << endl;cout << "姓名:" << q.name << endl;cout << "语文:" << q.Score[0] << endl;cout << "数学:" << q.Score[1] << endl;cout << "英语:" << q.Score[2] << endl;}//删除long deleteId;bool del = false;while (del == false){cout << "请输入要删除的学生的学号" << endl;cin >> deleteId;del = DeleteStudent(L, deleteId);if (add == false){cout << "删除失败!请重新输入要删除的学生的学号" << endl;}}cout << "删除成功!" << endl;num--;//输出cout << "输出所有学生"<< endl;for (int i = 0; i < num; i++){Student q = GetStudent(L, i)->data;cout << "学号:" << q.studentid << endl;cout << "年龄:" << q.age << endl;cout << "姓名:" << q.name << endl;cout << "语文:" << q.Score[0] << endl;cout << "数学:" << q.Score[1] << endl;cout << "英语:" << q.Score[2] << endl;}return 1;
}

数据结构实验-学生信息表相关推荐

  1. 查询选修c语言课程的学生学号和姓名,数据库实验(学生信息表)

    目录 数据库实验(学生信息表) 实验一 实验二 实验三 实验四 数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno ch ...

  2. mysql实验学生表_数据库实验(学生信息表)

    数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno char(9) primary key, Sname char(20 ...

  3. 数据库单表查询教师班级学生信息表

    单表查询实例 以下为单表查询小实验,由于没有教师表和学生表数据库文件,因此没有运行截图,若有语法错误还望大佬们指正. 1.查询学生信息表(info_student)中的班级信息 Select &quo ...

  4. 数据结构实验报告线性表的应用

    线性表的应用 实验要求 创建一个班级学生信息表,包含"学号.姓名.性别.成绩"等信息.具有如下功能:(1) 根据指定学生个数,逐个输入学生信息:(2) 逐个显示学生表中所有学生的相 ...

  5. 怎么在mysql创建数据库怎么加入学号_数据库怎么创建学生信息表

    语音内容: 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 数据库创建学生信息表的方法是: 1.新建表:单击数据库"studentDb"前图标,然后右键&qu ...

  6. 学生信息表 -通过选择年级和班级得到详细的学生信息名单

    功能: 通过选择年级和班级得到详细的学生信息名单 知识点: 1. A inner join B on A.id=B.id的应用     Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二 ...

  7. 【Python练习】创建学生信息表-列表推导式的应用

    1. 使用列表推导式,生成 2018-2021 四个年级,每个年级四个专业(计算机.机械.自动化和电子信息),每个专业三个班级,每个班级 45 人的对应学号(如 2019010205),共计 2160 ...

  8. navicat的使用以及学生信息表的操作

    目录 一.navicat的使用 创建数据库 删除数据库 数据库的导入导出 数据库中表操作 创建表结构 数据表的管理操作 二.学生信息表基础操作练习 一.navicat的使用 点击connection, ...

  9. VLOOKUP函数制作多表查询(学生信息表/员工工资表)

    VLOOKUP函数制作多表查询(学生信息表/员工工资表) 一.vlookup函数定义 VLOOKUP函数是Excel中的一个纵向查找函数,在工作中都有广泛应用,例如可以用来核对数据,多个表格之间快速导 ...

最新文章

  1. asp.net mvc 权限过滤和单点登录(禁止重复登录)
  2. C++判断一个数是否为回文数palindrome的算法(附完整源码)
  3. LSTM时间序列预测及网络层搭建
  4. 【数据库】Oracle用户、授权、角色管理
  5. 由浅到深理解ROS(7)-URDF
  6. linux18配置静态ip,ubuntu18配置静态IP地址
  7. window下tomcat 按天生成日志_Tomcat原理(一)
  8. oracle参数优化
  9. linux 网卡no carrier,linux centos 7 网卡突然不能上网异常解决
  10. 如何使用.NET配置文件
  11. DIY远程控制开关(tiny6410+LED+yeelink+curl)
  12. 每日算法系列【LeetCode 658】找到 K 个最接近的元素
  13. 做一个iframe的弹出框
  14. Linux下nand flash读写测试
  15. Openresty 安装luarocks
  16. 黑科技项目:英雄无敌III Mod Fallen Angel介绍
  17. 基于野火霸道的 STM32F103 代码集合
  18. Java经典兔子问题(10个月幼兔,小兔,成兔数量各多少对?)
  19. PyScripter显示行号
  20. 135编辑器怎么复制html,微信公众号怎么复制别人的图文排版(图文模板复制方法)...

热门文章

  1. 使用汉明距离、LAB色彩空间相似性来衡量图片相似性
  2. Git系列(四)、在IDEA操作Git本地仓库与连接远程Git仓库(推送、合并、拉取、克隆操作)
  3. 挣扎中的谷歌“蜻蜓项目”,Google 搜索到底能不能回归大陆?
  4. Elasticsearch:IK 中文分词器
  5. arm+银河麒麟v10安装nginx1.18
  6. 初学编程,到底选Java还是C++?
  7. Oracle 数据库删除完全重复数据
  8. 有了这些平面设计网站,可以为你提供免费素材和灵感
  9. qcalendarwidget只显示月_本周新股14只连发!明日3只新股可申购,分别是中信博、圣湘生物、瑞晟智能...
  10. 深圳随手记(随手科技)面经(offer)