今年是专升本第一年,跟老师学习做了个学生管理系统,有菜单选项,基本的增删改查都是没有问题的,废话不多说,代码呈上:

#include <stdio.h>
#include<malloc.h>
#include <string.h>
#include<stdlib.h>
typedef struct {int no;char name[8];float score;
}Student;
typedef struct {Student elem[100];int length;//int listsize;
}SqList;
//判断是否为空
bool ListEmpty(SqList *L){return (L->length==0); }
//顺序表的展示
void DispList(SqList *&L){int i;if(ListEmpty(L)) {printf("******计科一班学生信息******\n");printf("序号\t学号\t姓名\t\t\t成绩\n");}else {   printf("******计科一班学生信息******\n");printf("序号\t学号\t姓名\t\t\t成绩\n");float averscore=0;for(i=0;i<L->length;i++){averscore+=L->elem[i].score;//printf("平均分为%d\n",averscore);printf("%d\t%d\t%-8s\t\t%.2f\n",i+1,L->elem[i].no,L->elem[i].name,L->elem[i].score);}printf("平均分:%.2f\n",averscore/L->length);printf("*********************************\n");}//return 0;}
//创建顺序表
void CreatList(SqList *&L,Student a[],int n){int  i=0,k=0;L=(SqList *)malloc(sizeof(SqList));while(i<n){L->elem[k]=a[i];k++;i++;}L->length=k;}
//初始化顺序表void InitList(SqList *&L){L=(SqList *)malloc(sizeof(SqList));L->length=0;}
//向顺序表插入元素
int insertstu(SqList *&L){int len=(L->length);//printf("当前表长:%d\n",len);printf("请输入要插入学生的\n学号(1-4位):\n");scanf("%d",&L->elem[len].no); //    printf("当前学号长度是%d\n",sizeof(L->elem[len].no));while(L->elem[len].no<1 || L->elem[len].no>9999){printf("不符合学号规定长度,请重新输入!\n");//printf("当前学号长度是:%d\n",sizeof(L->elem[len].no));scanf("%d",&L->elem[len].no);    }printf("姓名(2-4位):\n");scanf("%s",&L->elem[len].name);//printf("%d",sizeof(L->elem[len].name));while(strlen(L->elem[len].name)<4|| strlen(L->elem[len].name)>8){printf("%d",strlen(L->elem[len].name)); printf("不符合规定姓名长度,请重新输入!\n");scanf("%s",&L->elem[len].name);  }//printf("%s",L->elem[len].name);printf("成绩(满分100,精确到小数点后2位)\n");scanf("%f",&L->elem[len].score);int count = 1;float m=L->elem[len].score;while(m>9){m=m/10;count ++;}  while(count>2||count<1){printf("不符合规定长度,请重新输入!\n");count=1;scanf("%f",&L->elem[len].score);m=L->elem[len].score;while(m>9){m=m/10;count ++;}}L->length =    L->length+1;
//  int i;//printf("%d",L->length);if(ListEmpty(L)) return false;printf("操作成功!");
DispList(L);}
//输出顺序表长度
void ListLength(SqList *L){printf("学生信息一共%d条",L->length);DispList(L);}
//定义菜单
int menu(){printf(" \n按回车键进入菜单........\n");int c;getchar(); printf("请输入想要操作的代码数字:\n");printf("****************MENU******************\n");printf("       1.插入学生信息\n");printf("       2.删除学生信息\n");printf("       3.修改学生信息\n");printf("       4.查看学生信息表\n"); printf("       5.查看学生表长度\n"); printf("       6.退出\n");      scanf("%d",&c);while(!(c>=1 && c<=6)){printf("请输入数字1-6!"); scanf("%d",&c);if(c>=1 && c<=6)break;}return c;}
//定义删除函数void delstu(SqList *L){int num;printf("请输入要删除的学生序号:\n");scanf("%d",&num);while(num<1||num>L->length) {printf("该同学不存在,请重新输入!\n");scanf("%d",&num); }//printf("%d",num); //getchar(); for(num;num<L->length+1;num++){L->elem[num-1]=L->elem[num];} printf("删除成功\n"); L->length--; DispList(L);}//定义修改函数int update(SqList *L){if(ListEmpty(L)) {printf("学生表为空!!\n");return false;}int no;printf("请输入要修改成绩的学生序号:\n");scanf("%d",&no);while(no<1||no>L->length){printf("该同学不存在,请重新输入!\n");scanf("%d",&no);}printf("请输入该同学要修改的内容,用空格隔开:\n");printf("学号 姓名 成绩\n");scanf("%d%s%f",&L->elem[no-1].no,&L->elem[no-1].name,&L->elem[no-1].score);} //主函数部分int  main(){SqList *L;Student elem[100];elem[0].no=1;elem[1].no=2; //char stu[10];strcpy(elem[0].name,"刘方君");strcpy(elem[1].name,"唐诗"); elem[0].score=99;elem[1].score=88;CreatList(L,elem,2);DispList(L);
//insertstu(L);for(;;){switch(menu()){case 1:{insertstu(L);break;};case 2:{delstu(L);break;}case 3:{update(L);break;}case 4:{DispList(L);break;}case 5:{ListLength(L);break;}case 6:{exit(0);}}}return 0;
}

作者是初学,如有纰漏,敬请指正!

数据结构 线性顺序表 学生管理系统相关推荐

  1. python数据结构之线性顺序表

    线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.本文结合了互联网上的一些代码,以及结合百度百科关于线性顺序表的定义,实现了全部代码. 在稍复杂的线性 ...

  2. C++实现线性顺序表的初始化,插入,删除,销毁,清空等功能

    C++实现线性顺序表的初始化,插入,删除,销毁,清空等功能 以下代码主要严蔚参考敏主编的<数据结构>(C语言)编写 //线性顺序表 #include <iostream> #d ...

  3. Tsai笔记:C++学习随性笔记(2)—— 数据结构:顺序表的基本操作

    Tsai笔记:C++学习随性笔记(2)-- 数据结构:顺序表的基本操作 Tsai三步.(第一步,功能说明.第二步,结果图显示.第三步,代码展示) 第一步,功能说明. 1.线性表的顺序存储 线性表的顺序 ...

  4. 能带你起飞的【数据结构】成王第一篇:数据结构的顺序表

    目录 前言 一.什么是顺序表 1.顺序表的概念及结构 创建顺序表 打印顺序表 获取顺序表长度 在pos位置新增元素 判定是否包含某个元素 查找某个元素对应的位置 获取 pos 位置的元素 给 pos ...

  5. 数据结构25 ————顺序表查找

    数据结构25 ----顺序表查找 一. 目录 文章目录 数据结构25 ----顺序表查找 一. 目录 二. 顺序表查找 三. 顺序表查找代码 1.基本算法 2.进行优化 四. 参考资料 二. 顺序表查 ...

  6. 【数据结构】顺序表的应用(4)(C语言)

    [数据结构]顺序表的应用(1)(C语言) [数据结构]顺序表的应用(2)(C语言) [数据结构]顺序表的应用(3)(C语言) 设计一个算法,将一个顺序表倒置,即如果顺序表各个节点值存储在一维数组a中, ...

  7. 【数据结构】顺序表的应用(3)(C语言)

    问题: 已知一个顺序表中的各节点值是从大到小有序的,设计一个算法,插入一个值为x的节点,使顺序表中的节点仍然是从小到大有序的. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #includ ...

  8. 【数据结构】顺序表的应用(2)(C语言)

    问题: 2.有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法,将它们合并成一个顺序表C,要求C的元素也按从小到大的升序排列. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #in ...

  9. 【数据结构】顺序表的应用(1)(C语言)

    问题: 1.将顺序表(a1,a2,-,an)重新排列以a1为界的两部分:a1前面的值均比a1小,a1后面的值均比a1大(这里假设数据元素的类型具有可比性,不妨设为整型). 头文件与该头文件一样:[数据 ...

最新文章

  1. 【 C 】在双链表中插入一个新值的简明程序
  2. 电脑打字手指正确姿势_正确的弹琴手型,应该是怎样的?
  3. Kubernetes Master High Availability 高级实践
  4. 现在人人都要准备的2020年六个事关职业生涯的技术趋势
  5. 老外编辑带你迈出自己容器化的第一步
  6. Matlab2012b license失效解决办法
  7. 计算机技巧网站,13个实用电脑技巧汇总
  8. ASP.NET 2.0使用Web Part创建应用程序之一(共二)
  9. Halcon软件和license下载
  10. 几种将网站设为首页的代码
  11. SlideLive:提供阶梯类型PPT模板下载
  12. Oracle number类型详解
  13. B/S模式下的MVC架构迭代(2)
  14. 爬虫之点触验证码的识别
  15. bilibili视频爬取报错
  16. Scala之set方法(超详细)
  17. RK WiFi驱动层初始化分析
  18. 洛谷P2790 ccj与zrz之积木问题 题解
  19. java入门之 美图相机(原图、灰度、二值化、马赛克、融合、轮廓获取)
  20. 按键精灵设置界面居中显示

热门文章

  1. mac系统搭建JAVA开发环境【按步骤一步一步来,能完美搭建好环境】
  2. 南京有望实现刷手机购买长途汽车票
  3. datatables实现分页
  4. Magento编译模式 - Magento Compiler Mode
  5. mysql 修改字符集为utf8mb4_MySQL数据库修改字符集为utf8mb4
  6. realme首发天玑720,与小米在性价比手机市场展开争夺
  7. 半年后继续捡起,,,
  8. OPPO k9x和红米Note11哪个好?红米Note11对比OPPO K9x区别
  9. 使用PS绘制闪电效果
  10. 面向对象——抽象类与抽象方法