1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 一个包含学生信息的顺序表

一个包含学生信息的顺序表

时间:2022-12-20 09:08:27

相关推荐

一个包含学生信息的顺序表

#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXSIZE 100/*单个学生点的定义*/typedef struct{char no[10];char name[20];char xb;int age;} Student;/*学号,姓名,性别,年领*/ /*顺序表的定义*/typedef struct{Student *elem;int length;}SeqList;/*开始界面*/void start(){puts("1.根据指定学生个数,逐个输入学生信息");puts("2.逐个显示学生表中所有学生的相关信息");puts("3.根据姓名进行查找,返回此学生的学生信息");puts("4.根据指定的位置可返回相应的学生信息");puts("5.给定一个学生信息,插入到表中指定位置");puts("6.删除指定位置的学生记录");puts("7.统计表中学生个数"); puts("0.退出");} /*初始化*/void InitList(SeqList &L){L.elem = (Student *) malloc (MAXSIZE * sizeof(Student));L.length = 0;} /*根据指定学生个数,逐个输入学生信息*/void Input(SeqList &L){int n, i;printf("输入要导入学生的个数:");scanf("%d", &n); if(n + L.length > MAXSIZE){printf("导入学生的个数过多\n"); return; }for(i = 0; i < n; i++){printf("输入学生的学号:");scanf("%s", L.elem[i].no);printf("输入学生的姓名:");scanf("%s", L.elem[i].name);printf("输入学生的性别:");scanf("%s", &L.elem[i].xb);printf("输入学生的年龄:");scanf("%d", &L.elem[i].age);L.length++;}printf("导入成功\n"); }/*逐个显示学生表中所有学生的相关信息*/void Output(SeqList &L){if(!L.length){printf("学生表为空\n");return;}for(int i = 0; i < L.length; i++){printf("学号:%s\t姓名:%s\t性别:%c\t年龄:%d\n",L.elem[i].no,L.elem[i].name,L.elem[i].xb,L.elem[i].age);}} /*根据姓名进行查找, 返回此学生的学生信息*/void Search_name(SeqList &L){char goal_name[20];printf("输入该同学的姓名:");scanf("%s", goal_name);for(int i = 0; i < L.length; i++){if(!strcmp(L.elem[i].name,goal_name)){printf("学号:%s, 姓名:%s, 性别:%c, 年龄:%d",L.elem[i].no, L.elem[i].name, L.elem[i].xb, L.elem[i].age);return;}}printf("查找不到该同学\n");} /*根据指定的位置可返回相应的学生信息*/void Search_space(SeqList &L) {int in;printf("输入指定的位置:");scanf("%d", &in);if(in < 1||in > L.length) {printf("此位置不存在");return; }printf("学号:%s,姓名:%s,性别:%c, 年龄:%d",L.elem[in-1].no, L.elem[in-1].name, L.elem[in-1].xb, L.elem[in-1].age); }/*给定一个学生信息,插入到表中指定的位置*/void Insert(SeqList &L){if(L.length == MAXSIZE){printf("学生表已满\n");return;}int s; printf("请输入要插入的位置:");scanf("%d", &s);if(s < 1 || s > L.length + 1) {printf("此位置不存在\n");return;}if(s < L.length)/*插入位置不在末尾*/ {for(int i = L.length - 1; i >= s - 1; i-- ){L.elem[i+1] = L.elem[i];}}printf("输入要插入学生的学号:"); scanf("%s", L.elem[s-1].no); printf("输入要插入学生姓名:"); scanf("%s", L.elem[s-1].name);printf("输入要插入学生性别:"); scanf("%s", &L.elem[s-1].xb);printf("请输入要插入学生年龄:");scanf("%d", &L.elem[s-1].age); L.length++;printf("插入成功\n");} /*删除指定位置的学生记录*/void Delet(SeqList &L){if(!L.length){printf("学生表为空\n");return;}int s;printf("输入要删除的位置:");scanf("%d", &s);if(s < 1 || s > L.length){printf("此位置不存在\n");return;}if(s < L.length)/*不在表尾*/ {for(int i = s-1; i < L.length - 1; i++)L.elem[i] = L.elem[i+1];} L.length--;printf("删除成功\n");} /*统计表中学生个数*/ int Length(SeqList &L){return L.length;}int main(){start();SeqList L;InitList (L);int op;while (scanf("%d", &op), op){if(op == 1) Input(L);else if(op == 2) Output(L);else if(op == 3) Search_name(L);else if(op == 4) Search_space(L);else if(op == 5) Insert(L);else if(op == 6) Delet(L);else if(op == 7) printf("学生个数:%d\n", Length(L));else if(op == 0) break;else puts("请输入正确的数"); }return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。