学生信息的顺序表存储

 printf("\t\t1.录入学生信息\n");printf("\t\t2.查看学生信息\n");printf("\t\t3.删除学生信息\n");printf("\t\t4.插入一个学生的信息\n");printf("\t\t5.修改一名学生的信息\n");printf("\t\t6.查找一名学生的信息\n");printf("\t\t7.查找姓名是否存在\n");
#define MAXSIZE 20//顺序表宏定义
/*1.普通变量用.指针变量用->2.插入、删除用if else +for  查找、修改用if else 3.插入的条件特殊,需特殊记忆
*/
/*修改小技巧: printf("请输入修改后的学号:");scanf("%d",&xh);p->arr[loc-1].id=xh;//修改姓名printf("请输入修改后的姓名:");scanf("%s",n);strcpy(p->arr[loc-1].name,n);
*/
//学生结构体
typedef struct
{int id;//学号 char name[20];//姓名 int age;//年龄
}student;
//定义顺序表结构体
typedef struct
{student arr[MAXSIZE];//定义数组存放学生信息 int len;//记录元素个数
}Slist;
void input(Slist *p);//声明
void output(Slist *p);
void del(Slist *p,int loc);
void modify(Slist *p,int loc);
void insert(Slist *p,int loc,student e);
void search(Slist *p,int loc);
int findname(Slist *p,char s_name[]);
int main() //程序入口,主函数,从这里开始执行
{Slist s;//顺序表变量 s.len=0;//顺序表长度初始值 int loc;//学术信息位置 student e;char s_name[20];int result;//接收返回值 for(;;)//无限循环 {int bh; printf("\n");printf("\t\t1.录入学生信息\n");printf("\t\t2.查看学生信息\n");printf("\t\t3.删除学生信息\n");printf("\t\t4.插入一个学生的信息\n");printf("\t\t5.修改一名学生的信息\n");printf("\t\t6.查找一名学生的信息\n");printf("\t\t7.查找姓名是否存在\n");printf("\t\t0.退出\n");printf("请输入您的选项:");scanf("%d",&bh);switch(bh){case 1:{input(&s);//输入函数调用 }break;case 2:{output(&s);//输出函数调用 }break;case 3:{printf("请输入要删除学生的位置:");scanf("%d",&loc);del(&s,loc);//调用删除函数 output(&s);//调用输出函数 }break;case 4:{printf("输入要插入的位置:");scanf("%d",&loc);printf("请输入要插入的学号:");scanf("%d",&e.id);printf("请输入要插入的姓名:");scanf("%s",&e.name);printf("请输入要插入的年龄:");scanf("%d",&e.age);insert(&s,loc,e);output(&s);}break;case 5:{printf("请输入要修改学生的位置:");scanf("%d",&loc);modify(&s,loc);output(&s);}break;case 6:{printf("请输入要查找的位置:");scanf("%d",&loc);search(&s,loc);}break;case 7:{printf("请输入要查找学生的姓名:");scanf("%s",s_name); result=findname(&s,s_name);if(result==-1){printf("没有该学生\n");}else{printf("查找成功,在第%d个位置\n",result+1);}}break;case 0:{exit(0);}break;default:{printf("输入编号有误\n");//输入编号错误 }}}
}
void input(Slist *p)//录入学生信息
{int num; int i;printf("请输入学生的人数:");scanf("%d",&num);for(i=0;i<num;i++){printf("请输入第%d个学生的信息:\n",i+1);//循环嵌套录入顺序表 printf("请输入学号:");scanf("%d",&p->arr[i].id); printf("请输入姓名:");scanf("%s",&p->arr[i].name); printf("请输入年龄:");scanf("%d",&p->arr[i].age); printf("\n");p->len++;//元素个数累加 }
}
void output(Slist *p)//输出学生信息
{int i;for(i=0;i<p->len;i++){printf("学号:%d\t",p->arr[i].id);printf("姓名:%s\t",p->arr[i].name);printf("年龄:%d\n",p->arr[i].age);}
}
void del(Slist *p,int loc)//删除学生信息
{int i;if(loc<1||loc>p->len){printf("无法删除\n");}else{for(i=loc;i<p->len;i++)//循环前移 {p->arr[i-1]=p->arr[i];//前移 }p->len--;//删除信息顺序表长度-1 }
}
void insert(Slist *p,int loc,student e)//插入学生信息
{int i;if(loc<1||loc>p->len+1||p->len==MAXSIZE){printf("无法插入\n");}else{for(i=p->len-1;i>=loc-1;i--)//循环后移 {p->arr[i+1]=p->arr[i];}p->arr[loc-1]=e;p->len++;}
}
void modify(Slist *p,int loc)//修改某一学生信息
{int xh;student e;if(loc<1||loc>p->len){printf("无法修改\n");    } else//统一修改操作 {printf("请输入要修改的学号:");scanf("%d",&e.id);printf("请输入要修改的姓名:");scanf("%s",e.name);printf("请输入要修改的年龄:");scanf("%d",&e.age);p->arr[loc-1]=e;}
}
void search(Slist *p,int loc)
{if(loc<1||loc>p->len){printf("查找有误\n");}else{printf("第%d个位置学生的学号是:%d\t姓名是:%s\t年龄是%d\n",loc,p->arr[loc-1].id,p->arr[loc-1].name,p->arr[loc-1].age);}
}
int findname(Slist *p,char s_name[])//查找某个学生是否存在
{int i;for(i=0;i<p->len;i++){if(strcmp(p->arr[i].name,s_name)==0)//名字比较 {return i;}}return -1;
}

学生信息的顺序表存储相关推荐

  1. 考试报名管理系统C语言顺序表,学生信息管理系统(顺序表)实验

    <学生信息管理系统(顺序表)实验>由会员分享,可在线阅读,更多相关<学生信息管理系统(顺序表)实验(29页珍藏版)>请在人人文库网上搜索. 1.精品文档数 据 结 构 课 程 ...

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

    #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAXSIZE 100 /*单个 ...

  3. 学生信息管理系统——顺序表

    定义一个包含学生信息(学号,姓名,成绩)的的 顺序表,使其具有如下功能: 1.1根据指定学生个数,逐个输入学生信息: 1.2逐个显示学生表中所有学生的相关信息: 1.3根据姓名进行查找,返回此学生的学 ...

  4. 《数据结构》实验报告(一)——顺序表存储结构及实现

    顺序表存储结构及实现--学生信息管理 一.实验目的 (1) 掌握顺序表的概念及实现方式. (2) 掌握顺序表的存储结构及主要运算:建立.查找.插入.删除等. 二.实验环境 Windows 10,Mic ...

  5. 稀疏矩阵的三元组顺序表存储表示及基本操作

    /* Name: 稀疏矩阵的三元组顺序表存储表示及基本操作 Copyright:  Author: 巧若拙  Date: 27-10-14 21:28 Description:  ---------- ...

  6. 稀疏矩阵的三元组存储方法c语言,数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现...

    陈独秀的秘密 数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现 P98 编译环境:Dev-C++ 4.9.9.2 日期:2011年2月8日 */ typedef int ElemType; // ...

  7. 学生信息统计(顺序表)

    实验目的 : 1 .掌握线性表的定义: 2 .掌握线性表的基本操作,如建立.查找.插入和删除等. 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的 顺序表和链表,使其具有如下功能: (1) 根 ...

  8. 数据结构--学生成绩管理系统(顺序表)

    一. 实验目的: 1.通过此次课程设计学生成绩管理系统的题目,掌握链表等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解: 2. 将所学数据结构方面的知识与具体 ...

  9. 学生信息管理(顺序表)(数据结构入门)

    要求: 自己设计学生基本信息表 具备功能:创建.清空.销毁.插入.删除.按值查找.更新某人信息.指定位置查找.遍历. 详解我是没有了,可以看这里 瞎写的,欢迎纠错 #include <iostr ...

  10. c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...

    #include #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType elem[MAXSIZE]; int lengt ...

最新文章

  1. LinearLayout (线性布局)的分析
  2. python代码需要背吗-Python代码需要缩进吗
  3. 打造炫酷通用的ViewPager指示器 Adapter模式适配所有 1
  4. svn 常用操作命令
  5. 你与那些经验老练的程序员就差一个 英文编程单词表!【文中资源分享】
  6. android自定义控件(6)-详解在onMeasure()方法中如何测量一个控件尺寸
  7. OJ1062: 最大公约数(C语言)
  8. 零基础Python学习路线图,Python学习不容错过
  9. java 求集合真子集_【同步练习】高一高中数学必修1集合的关系与元素性质
  10. 关于大量数据的随机打乱重保存.(少了详细解释,之后会更新)
  11. POJ 3278 Catch That Cow
  12. codeblocks 编译java_在CodeBlocks中发布编译程序
  13. 为什么你学了 N 遍 Spring Boot,至今还是学生项目?你的问题在这里 | 原力计划...
  14. 的列数 获取mysql_阿里面试:MySQL如何设计索引更高效?
  15. 良好的代码风格之if else?
  16. 1097 特殊的整数数列求和
  17. linux 中cp是什么意思,linux系统cp是什么
  18. 运放输入偏置电流方向_运放参数的详细解释和分析-part1,输入偏置电流和输入失调电流【TI FAE 分享】...
  19. Hrbust 1837 Dream【dp】
  20. 人工智能——Search搜索问题

热门文章

  1. Android进阶学习视频
  2. 一个商人应遵守的22条规矩
  3. junsansi 列表(4) - 三思笔记,ORACLE学习轨迹~~~~ - ITPUB个...
  4. 如何把鼠标宏用c语言写出来,鼠标宏怎么设置,手把手教你鼠标如何设置宏
  5. android声音播放mp3文件,如何在android中播放音频文件
  6. android 执行Shell命令
  7. WinCE设备仿真器+虚拟串口+GPS模拟器搭建开发测试环境
  8. 加密狗厂商及工作原理介绍
  9. burpsuite工具抓取Https数据包
  10. MNIST 数据集下载及图片可视化